示例#1
0
 function ot_insert_css_with_markers($field_id = '', $insertion = '', $meta = false)
 {
     /* missing $field_id or $insertion exit early */
     if ('' == $field_id || '' == $insertion) {
         return;
     }
     /* path to the dynamic.css file */
     $filepath = get_stylesheet_directory() . '/dynamic.css';
     if (is_multisite()) {
         $multisite_filepath = get_stylesheet_directory() . '/dynamic-' . get_current_blog_id() . '.css';
         if (file_exists($multisite_filepath)) {
             $filepath = $multisite_filepath;
         }
     }
     /* allow filter on path */
     $filepath = apply_filters('css_option_file_path', $filepath, $field_id);
     /* grab a copy of the paths array */
     $ot_css_file_paths = get_option('ot_css_file_paths', array());
     if (is_multisite()) {
         $ot_css_file_paths = get_blog_option(get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths);
     }
     /* set the path for this field */
     $ot_css_file_paths[$field_id] = $filepath;
     /* update the paths */
     if (is_multisite()) {
         update_blog_option(get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths);
     } else {
         update_option('ot_css_file_paths', $ot_css_file_paths);
     }
     /* insert CSS into file */
     if (file_exists($filepath)) {
         $insertion = ot_normalize_css($insertion);
         $regex = "/{{([a-zA-Z0-9\\_\\-\\#\\|\\=]+)}}/";
         $marker = $field_id;
         /* Match custom CSS */
         preg_match_all($regex, $insertion, $matches);
         /* Loop through CSS */
         foreach ($matches[0] as $option) {
             $value = '';
             $option_id = str_replace(array('{{', '}}'), '', $option);
             $option_array = explode('|', $option_id);
             $option_type = ot_get_option_type_by_id($option_id);
             /* get the array value */
             if ($meta) {
                 global $post;
                 $value = get_post_meta($post->ID, $option_array[0], true);
             } else {
                 $options = get_option(ot_options_id());
                 if (isset($options[$option_array[0]])) {
                     $value = $options[$option_array[0]];
                 }
             }
             if (is_array($value)) {
                 if (!isset($option_array[1])) {
                     /* Measurement */
                     if (isset($value[0]) && isset($value[1])) {
                         /* set $value with measurement properties */
                         $value = $value[0] . $value[1];
                         /* Colorpicker Opacity */
                     } else {
                         if (isset($value['color']) && isset($value['opacity'])) {
                             /* get the RGB color value */
                             $color = ot_hex2RGB($value['color']);
                             if (is_array($color)) {
                                 $value = 'rgba(' . $color['r'] . ', ' . $color['g'] . ', ' . $color['b'] . ', ' . $value['opacity'] . ')';
                             } else {
                                 if ($color == $value['color']) {
                                     $value = $value['color'];
                                 }
                             }
                             /* Border */
                         } else {
                             if (ot_array_keys_exists($value, array('width', 'unit', 'style', 'color')) && !ot_array_keys_exists($value, array('top', 'right', 'bottom', 'left', 'height', 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius'))) {
                                 $border = array();
                                 $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                                 if (!empty($value['width'])) {
                                     $border[] = $value['width'] . $unit;
                                 }
                                 if (!empty($value['style'])) {
                                     $border[] = $value['style'];
                                 }
                                 if (!empty($value['color'])) {
                                     $border[] = $value['color'];
                                 }
                                 /* set $value with border properties or empty string */
                                 $value = !empty($border) ? implode(' ', $border) : '';
                                 /* Box Shadow */
                             } else {
                                 if (ot_array_keys_exists($value, array('inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius', 'color')) && !ot_array_keys_exists($value, array('width', 'height', 'unit', 'style', 'top', 'right', 'bottom', 'left'))) {
                                     /* set $value with box-shadow properties or empty string */
                                     $value = !empty($value) ? implode(' ', $value) : '';
                                     /* Dimension */
                                 } else {
                                     if (ot_array_keys_exists($value, array('width', 'height', 'unit')) && !ot_array_keys_exists($value, array('style', 'color', 'top', 'right', 'bottom', 'left'))) {
                                         $dimension = array();
                                         $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                                         if (!empty($value['width'])) {
                                             $dimension[] = $value['width'] . $unit;
                                         }
                                         if (!empty($value['height'])) {
                                             $dimension[] = $value['height'] . $unit;
                                         }
                                         /* set $value with dimension properties or empty string */
                                         $value = !empty($dimension) ? implode(' ', $dimension) : '';
                                         /* Spacing */
                                     } else {
                                         if (ot_array_keys_exists($value, array('top', 'right', 'bottom', 'left', 'unit')) && !ot_array_keys_exists($value, array('width', 'height', 'style', 'color'))) {
                                             $spacing = array();
                                             $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                                             if (!empty($value['top'])) {
                                                 $spacing[] = $value['top'] . $unit;
                                             }
                                             if (!empty($value['right'])) {
                                                 $spacing[] = $value['right'] . $unit;
                                             }
                                             if (!empty($value['bottom'])) {
                                                 $spacing[] = $value['bottom'] . $unit;
                                             }
                                             if (!empty($value['left'])) {
                                                 $spacing[] = $value['left'] . $unit;
                                             }
                                             /* set $value with spacing properties or empty string */
                                             $value = !empty($spacing) ? implode(' ', $spacing) : '';
                                             /* typography */
                                         } else {
                                             if (ot_array_keys_exists($value, array('font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform'))) {
                                                 $font = array();
                                                 if (!empty($value['font-color'])) {
                                                     $font[] = "color: " . $value['font-color'] . ";";
                                                 }
                                                 if (!empty($value['font-family'])) {
                                                     foreach (ot_recognized_font_families($marker) as $key => $v) {
                                                         if ($key == $value['font-family']) {
                                                             $font[] = "font-family: " . $v . ";";
                                                         }
                                                     }
                                                 }
                                                 if (!empty($value['font-size'])) {
                                                     $font[] = "font-size: " . $value['font-size'] . ";";
                                                 }
                                                 if (!empty($value['font-style'])) {
                                                     $font[] = "font-style: " . $value['font-style'] . ";";
                                                 }
                                                 if (!empty($value['font-variant'])) {
                                                     $font[] = "font-variant: " . $value['font-variant'] . ";";
                                                 }
                                                 if (!empty($value['font-weight'])) {
                                                     $font[] = "font-weight: " . $value['font-weight'] . ";";
                                                 }
                                                 if (!empty($value['letter-spacing'])) {
                                                     $font[] = "letter-spacing: " . $value['letter-spacing'] . ";";
                                                 }
                                                 if (!empty($value['line-height'])) {
                                                     $font[] = "line-height: " . $value['line-height'] . ";";
                                                 }
                                                 if (!empty($value['text-decoration'])) {
                                                     $font[] = "text-decoration: " . $value['text-decoration'] . ";";
                                                 }
                                                 if (!empty($value['text-transform'])) {
                                                     $font[] = "text-transform: " . $value['text-transform'] . ";";
                                                 }
                                                 /* set $value with font properties or empty string */
                                                 $value = !empty($font) ? implode("\n", $font) : '';
                                                 /* background */
                                             } else {
                                                 if (ot_array_keys_exists($value, array('background-color', 'background-image', 'background-repeat', 'background-attachment', 'background-position', 'background-size'))) {
                                                     $bg = array();
                                                     if (!empty($value['background-color'])) {
                                                         $bg[] = $value['background-color'];
                                                     }
                                                     if (!empty($value['background-image'])) {
                                                         /* If an attachment ID is stored here fetch its URL and replace the value */
                                                         if (wp_attachment_is_image($value['background-image'])) {
                                                             $attachment_data = wp_get_attachment_image_src($value['background-image'], 'original');
                                                             /* check for attachment data */
                                                             if ($attachment_data) {
                                                                 $value['background-image'] = $attachment_data[0];
                                                             }
                                                         }
                                                         $bg[] = 'url("' . $value['background-image'] . '")';
                                                     }
                                                     if (!empty($value['background-repeat'])) {
                                                         $bg[] = $value['background-repeat'];
                                                     }
                                                     if (!empty($value['background-attachment'])) {
                                                         $bg[] = $value['background-attachment'];
                                                     }
                                                     if (!empty($value['background-position'])) {
                                                         $bg[] = $value['background-position'];
                                                     }
                                                     if (!empty($value['background-size'])) {
                                                         $size = $value['background-size'];
                                                     }
                                                     /* set $value with background properties or empty string */
                                                     $value = !empty($bg) ? 'background: ' . implode(" ", $bg) . ';' : '';
                                                     if (isset($size)) {
                                                         if (!empty($bg)) {
                                                             $value .= apply_filters('ot_insert_css_with_markers_bg_size_white_space', "\n  ", $option_id);
                                                         }
                                                         $value .= "background-size: {$size};";
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $value = $value[$option_array[1]];
                 }
             }
             /* If an attachment ID is stored here fetch its URL and replace the value */
             if ($option_type == 'upload' && wp_attachment_is_image($value)) {
                 $attachment_data = wp_get_attachment_image_src($value, 'original');
                 /* check for attachment data */
                 if ($attachment_data) {
                     $value = $attachment_data[0];
                 }
             }
             // Filter the CSS
             $value = apply_filters('ot_insert_css_with_markers_value', $value, $option_id);
             /* insert CSS, even if the value is empty */
             $insertion = stripslashes(str_replace($option, $value, $insertion));
         }
         /* create array from the lines of code */
         $markerdata = explode("\n", implode('', file($filepath)));
         /* can't write to the file return false */
         if (!($f = ot_file_open($filepath, 'w'))) {
             return false;
         }
         $searching = true;
         $foundit = false;
         /* has array of lines */
         if (!empty($markerdata)) {
             /* foreach line of code */
             foreach ($markerdata as $n => $markerline) {
                 /* found begining of marker, set $searching to false  */
                 if ($markerline == "/* BEGIN {$marker} */") {
                     $searching = false;
                 }
                 /* keep rewrite each line of CSS  */
                 if ($searching == true) {
                     if ($n + 1 < count($markerdata)) {
                         ot_file_write($f, "{$markerline}\n");
                     } else {
                         ot_file_write($f, "{$markerline}");
                     }
                 }
                 /* found end marker write code */
                 if ($markerline == "/* END {$marker} */") {
                     ot_file_write($f, "/* BEGIN {$marker} */\n");
                     ot_file_write($f, "{$insertion}\n");
                     ot_file_write($f, "/* END {$marker} */\n");
                     $searching = true;
                     $foundit = true;
                 }
             }
         }
         /* nothing inserted, write code. DO IT, DO IT! */
         if (!$foundit) {
             ot_file_write($f, "/* BEGIN {$marker} */\n");
             ot_file_write($f, "{$insertion}\n");
             ot_file_write($f, "/* END {$marker} */\n");
         }
         /* close file */
         ot_file_close($f);
         return true;
     }
     return false;
 }
 function ot_insert_css_with_markers($field_id = '', $insertion = '', $meta = false)
 {
     /* missing $field_id or $insertion exit early */
     if ('' == $field_id || '' == $insertion) {
         return;
     }
     /* path to the dynamic.css file */
     $filepath = get_stylesheet_directory() . '/dynamic.css';
     /* allow filter on path */
     $filepath = apply_filters('css_option_file_path', $filepath, $field_id);
     /* grab a copy of the paths array */
     $ot_css_file_paths = get_option('ot_css_file_paths', array());
     /* set the path for this field */
     $ot_css_file_paths[$field_id] = $filepath;
     /* update the paths */
     update_option('ot_css_file_paths', $ot_css_file_paths);
     /* insert CSS into file */
     if (file_exists($filepath)) {
         $insertion = ot_normalize_css($insertion);
         $regex = "/{{([a-zA-Z0-9\\_\\-\\#\\|\\=]+)}}/";
         $marker = $field_id;
         /* Match custom CSS */
         preg_match_all($regex, $insertion, $matches);
         /* Loop through CSS */
         foreach ($matches[0] as $option) {
             $value = '';
             $option_id = str_replace(array('{{', '}}'), '', $option);
             $option_array = explode('|', $option_id);
             /* get the array value */
             if ($meta) {
                 global $post;
                 $value = get_post_meta($post->ID, $option_array[0], true);
             } else {
                 $options = get_option(ot_options_id());
                 if (isset($options[$option_array[0]])) {
                     $value = $options[$option_array[0]];
                 }
             }
             if (is_array($value)) {
                 if (!isset($option_array[1])) {
                     /* Measurement */
                     if (isset($value[0]) && isset($value[1])) {
                         /* set $value with measurement properties */
                         $value = $value[0] . $value[1];
                         /* typography */
                     } else {
                         if (ot_array_keys_exists($value, array('font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform'))) {
                             $font = array();
                             if (!empty($value['font-color'])) {
                                 $font[] = "color: " . $value['font-color'] . ";";
                             }
                             if (!empty($value['font-family'])) {
                                 foreach (ot_recognized_font_families($marker) as $key => $v) {
                                     if ($key == $value['font-family']) {
                                         $font[] = "font-family: " . $v . ";";
                                     }
                                 }
                             }
                             if (!empty($value['font-size'])) {
                                 $font[] = "font-size: " . $value['font-size'] . ";";
                             }
                             if (!empty($value['font-style'])) {
                                 $font[] = "font-style: " . $value['font-style'] . ";";
                             }
                             if (!empty($value['font-variant'])) {
                                 $font[] = "font-variant: " . $value['font-variant'] . ";";
                             }
                             if (!empty($value['font-weight'])) {
                                 $font[] = "font-weight: " . $value['font-weight'] . ";";
                             }
                             if (!empty($value['letter-spacing'])) {
                                 $font[] = "letter-spacing: " . $value['letter-spacing'] . ";";
                             }
                             if (!empty($value['line-height'])) {
                                 $font[] = "line-height: " . $value['line-height'] . ";";
                             }
                             if (!empty($value['text-decoration'])) {
                                 $font[] = "text-decoration: " . $value['text-decoration'] . ";";
                             }
                             if (!empty($value['text-transform'])) {
                                 $font[] = "text-transform: " . $value['text-transform'] . ";";
                             }
                             /* set $value with font properties or empty string */
                             $value = !empty($font) ? implode("\n", $font) : '';
                             /* background */
                         } else {
                             if (ot_array_keys_exists($value, array('background-color', 'background-image', 'background-repeat', 'background-attachment', 'background-position', 'background-size'))) {
                                 $bg = array();
                                 if (!empty($value['background-color'])) {
                                     $bg[] = $value['background-color'];
                                 }
                                 if (!empty($value['background-image'])) {
                                     $bg[] = 'url("' . $value['background-image'] . '")';
                                 }
                                 if (!empty($value['background-repeat'])) {
                                     $bg[] = $value['background-repeat'];
                                 }
                                 if (!empty($value['background-attachment'])) {
                                     $bg[] = $value['background-attachment'];
                                 }
                                 if (!empty($value['background-position'])) {
                                     $bg[] = $value['background-position'];
                                 }
                                 if (!empty($value['background-size'])) {
                                     $size = $value['background-size'];
                                 }
                                 /* set $value with background properties or empty string */
                                 $value = !empty($bg) ? 'background: ' . implode(" ", $bg) . ';' : '';
                                 if (isset($size)) {
                                     if (!empty($bg)) {
                                         $value .= apply_filters('ot_insert_css_with_markers_bg_size_white_space', "\n  ", $option_id);
                                     }
                                     $value .= "background-size: {$size};";
                                 }
                             }
                         }
                     }
                 } else {
                     $value = $value[$option_array[1]];
                 }
             }
             // Filter the CSS
             $value = apply_filters('ot_insert_css_with_markers_value', $value, $option_id);
             /* insert CSS, even if the value is empty */
             $insertion = stripslashes(str_replace($option, $value, $insertion));
         }
         /* create array from the lines of code */
         $markerdata = explode("\n", implode('', file($filepath)));
         /* can't write to the file return false */
         if (!($f = ot_file_open($filepath, 'w'))) {
             return false;
         }
         $searching = true;
         $foundit = false;
         /* has array of lines */
         if (!empty($markerdata)) {
             /* foreach line of code */
             foreach ($markerdata as $n => $markerline) {
                 /* found begining of marker, set $searching to false  */
                 if ($markerline == "/* BEGIN {$marker} */") {
                     $searching = false;
                 }
                 /* keep rewrite each line of CSS  */
                 if ($searching == true) {
                     if ($n + 1 < count($markerdata)) {
                         ot_file_write($f, "{$markerline}\n");
                     } else {
                         ot_file_write($f, "{$markerline}");
                     }
                 }
                 /* found end marker write code */
                 if ($markerline == "/* END {$marker} */") {
                     ot_file_write($f, "/* BEGIN {$marker} */\n");
                     ot_file_write($f, "{$insertion}\n");
                     ot_file_write($f, "/* END {$marker} */\n");
                     $searching = true;
                     $foundit = true;
                 }
             }
         }
         /* nothing inserted, write code. DO IT, DO IT! */
         if (!$foundit) {
             ot_file_write($f, "/* BEGIN {$marker} */\n");
             ot_file_write($f, "{$insertion}\n");
             ot_file_write($f, "/* END {$marker} */\n");
         }
         /* close file */
         ot_file_close($f);
         return true;
     }
     return false;
 }
 static function _get_output_item_css($fields, $settings)
 {
     $option_id = $fields['id'];
     $output = $fields['output'];
     $marker = $fields['id'];
     $value = $settings;
     if (is_array($value)) {
         /* Measurement */
         if (isset($value[0]) && isset($value[1])) {
             /* set $value with measurement properties */
             $value = $value[0] . $value[1];
             /* Border */
         } else {
             if (ot_array_keys_exists($value, array('width', 'unit', 'style', 'color')) && !ot_array_keys_exists($value, array('top', 'right', 'bottom', 'left', 'height', 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius'))) {
                 $border = array();
                 $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                 if (!empty($value['width'])) {
                     $border[] = $value['width'] . $unit;
                 }
                 if (!empty($value['style'])) {
                     $border[] = $value['style'];
                 }
                 if (!empty($value['color'])) {
                     $border[] = $value['color'];
                 }
                 /* set $value with border properties or empty string */
                 $value = !empty($border) ? implode(' ', $border) : '';
                 /* Box Shadow */
             } else {
                 if (ot_array_keys_exists($value, array('inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius', 'color')) && !ot_array_keys_exists($value, array('width', 'height', 'unit', 'style', 'top', 'right', 'bottom', 'left'))) {
                     /* set $value with box-shadow properties or empty string */
                     $value = !empty($value) ? implode(' ', $value) : '';
                     /* Dimension */
                 } else {
                     if (ot_array_keys_exists($value, array('width', 'height', 'unit')) && !ot_array_keys_exists($value, array('style', 'color', 'top', 'right', 'bottom', 'left'))) {
                         $dimension = array();
                         $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                         if (!empty($value['width'])) {
                             $dimension[] = $value['width'] . $unit;
                         }
                         if (!empty($value['height'])) {
                             $dimension[] = $value['height'] . $unit;
                         }
                         /* set $value with dimension properties or empty string */
                         $value = !empty($dimension) ? implode(' ', $dimension) : '';
                         /* Spacing */
                     } else {
                         if (ot_array_keys_exists($value, array('top', 'right', 'bottom', 'left', 'unit')) && !ot_array_keys_exists($value, array('width', 'height', 'style', 'color'))) {
                             $spacing = array();
                             $unit = !empty($value['unit']) ? $value['unit'] : 'px';
                             if (!empty($value['top'])) {
                                 $spacing[] = $value['top'] . $unit;
                             }
                             if (!empty($value['right'])) {
                                 $spacing[] = $value['right'] . $unit;
                             }
                             if (!empty($value['bottom'])) {
                                 $spacing[] = $value['bottom'] . $unit;
                             }
                             if (!empty($value['left'])) {
                                 $spacing[] = $value['left'] . $unit;
                             }
                             /* set $value with spacing properties or empty string */
                             $value = !empty($spacing) ? implode(' ', $spacing) : '';
                             /* typography */
                         } else {
                             if (ot_array_keys_exists($value, array('font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform'))) {
                                 $font = array();
                                 if (!empty($value['font-color'])) {
                                     $font[] = "color: " . $value['font-color'] . ";";
                                 }
                                 if (!empty($value['font-family'])) {
                                     foreach (ot_recognized_font_families($marker) as $key => $v) {
                                         if ($key == $value['font-family']) {
                                             $font[] = "font-family: " . $v . ";";
                                         }
                                     }
                                 }
                                 if (!empty($value['font-size'])) {
                                     $font[] = "font-size: " . $value['font-size'] . ";";
                                 }
                                 if (!empty($value['font-style'])) {
                                     $font[] = "font-style: " . $value['font-style'] . ";";
                                 }
                                 if (!empty($value['font-variant'])) {
                                     $font[] = "font-variant: " . $value['font-variant'] . ";";
                                 }
                                 if (!empty($value['font-weight'])) {
                                     $font[] = "font-weight: " . $value['font-weight'] . ";";
                                 }
                                 if (!empty($value['letter-spacing'])) {
                                     $font[] = "letter-spacing: " . $value['letter-spacing'] . ";";
                                 }
                                 if (!empty($value['line-height'])) {
                                     $font[] = "line-height: " . $value['line-height'] . ";";
                                 }
                                 if (!empty($value['text-decoration'])) {
                                     $font[] = "text-decoration: " . $value['text-decoration'] . ";";
                                 }
                                 if (!empty($value['text-transform'])) {
                                     $font[] = "text-transform: " . $value['text-transform'] . ";";
                                 }
                                 /* set $value with font properties or empty string */
                                 $value = !empty($font) ? implode("\n", $font) : '';
                                 /* background */
                             } else {
                                 if (ot_array_keys_exists($value, array('background-color', 'background-image', 'background-repeat', 'background-attachment', 'background-position', 'background-size'))) {
                                     $bg = array();
                                     if (!empty($value['background-color'])) {
                                         $bg[] = $value['background-color'];
                                     }
                                     if (!empty($value['background-image'])) {
                                         /* If an attachment ID is stored here fetch its URL and replace the value */
                                         if (wp_attachment_is_image($value['background-image'])) {
                                             $attachment_data = wp_get_attachment_image_src($value['background-image'], 'original');
                                             /* check for attachment data */
                                             if ($attachment_data) {
                                                 $value['background-image'] = $attachment_data[0];
                                             }
                                         }
                                         $bg[] = 'url("' . $value['background-image'] . '")';
                                     }
                                     if (!empty($value['background-repeat'])) {
                                         $bg[] = $value['background-repeat'];
                                     }
                                     if (!empty($value['background-attachment'])) {
                                         $bg[] = $value['background-attachment'];
                                     }
                                     if (!empty($value['background-position'])) {
                                         $bg[] = $value['background-position'];
                                     }
                                     if (!empty($value['background-size'])) {
                                         $size = $value['background-size'];
                                     }
                                     /* set $value with background properties or empty string */
                                     $value = !empty($bg) ? 'background: ' . implode(" ", $bg) . ';' : '';
                                     if (isset($size)) {
                                         if (!empty($bg)) {
                                             $value .= apply_filters('ot_insert_css_with_markers_bg_size_white_space', "\n  ", $option_id);
                                         }
                                         $value .= "background-size: {$size};";
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return "\r\n{$output}{\r\n                {$value}\r\n            }\r\n";
 }