public function ajax()
 {
     global $wp_widget_factory;
     $widget = isset($_REQUEST['widget']) ? $_REQUEST['widget'] : null;
     if ($widget) {
         $this->register_widgets();
         piklist_widget::$current_widget = $this->widget_name;
         if (isset($_REQUEST['number'])) {
             $instances = get_option('widget_' . piklist::dashes($this->widget_name));
             piklist_widget::widget()->_set($_REQUEST['number']);
             if (isset($instances[$_REQUEST['number']])) {
                 piklist_widget::widget()->instance = $instances[$_REQUEST['number']];
             }
         }
         if (isset($this->widgets[$widget])) {
             ob_start();
             do_action('piklist_widget_notices');
             piklist::render($this->widgets[$widget]['form'], null);
             piklist_form::save_fields();
             $output = ob_get_contents();
             ob_end_clean();
             echo json_encode(array('form' => $output, 'widget' => $this->widgets[$widget], 'tiny_mce' => piklist_form::$field_editor_settings['tiny_mce'], 'quicktags' => piklist_form::$field_editor_settings['quicktags']));
         }
     }
     die;
 }
Ejemplo n.º 2
0
">
                    <img src="<?php 
                echo $icon;
                ?>
" class="icon" />
                    <div class="filename">
                      <div><?php 
                echo basename($attachment_path);
                ?>
</div>
                    </div>
                     <a class="check" href="#" title="Deselect" data-attachment-id="<?php 
                echo $attachment_id;
                ?>
" data-attachments="<?php 
                echo piklist_form::get_field_name($field, $scope, $index, $prefix);
                ?>
"><div class="media-modal-icon"></div><span><?php 
                _e('Remove');
                ?>
</span></a>
                   </div>
                 </li>
    
      <?php 
            }
        }
    }
}
?>
Ejemplo n.º 3
0
Archivo: form.php Proyecto: a42/piklist
  enctype="multipart/form-data"
  id="<?php 
echo $id;
?>
"
  autocomplete="off"
  data-piklist-form="true"
  class="piklist-form <?php 
echo is_admin() ? 'hidden' : null;
?>
"
>
  <?php 
do_action('piklist_notices', $id);
foreach ($render as $form) {
    piklist::render($form, $data);
}
piklist('field', array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => 'form_id', 'value' => $id));
if ($data['filter']) {
    piklist('field', array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => 'filter', 'value' => 'true'));
}
if ($data['redirect']) {
    piklist('field', array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => 'redirect', 'value' => $data['redirect']));
}
if (piklist_admin::hide_ui()) {
    piklist('field', array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => 'admin_hide_ui', 'value' => 'true'));
}
piklist_form::save_fields();
?>
  
</form>
Ejemplo n.º 4
0
<?php

$name = piklist_form::get_field_name($field, $scope, false, $prefix);
$_attributes = '';
foreach ($attributes as $_key => $_value) {
    if (substr($_key, 0, strlen('data-piklist-field-')) == 'data-piklist-field-') {
        $_attributes .= '" ' . $_key . '="' . $_value;
    }
}
wp_editor(isset($value) && !empty($value) ? $value : '', isset($id) ? $id : piklist::unique_id() . 'piklisteditor' . preg_replace('/[^a-z0-9]+/i', '', $name), array_merge(array('textarea_name' => $name . $_attributes, 'editor_height' => 180, 'quicktags' => true, 'textarea_rows' => 5), isset($options) && is_array($options) ? $options : array()));
Ejemplo n.º 5
0
 /**
  * edit_form
  * Appends piklist variables to the edit form if necessary.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function edit_form()
 {
     $fields = array('post_id', 'admin_hide_ui');
     foreach ($fields as $field) {
         if (isset($_REQUEST[piklist::$prefix][$field]) && !empty($_REQUEST[piklist::$prefix][$field])) {
             piklist_form::render_field(array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => $field, 'value' => $_REQUEST[piklist::$prefix][$field]));
         }
     }
 }
Ejemplo n.º 6
0
  <input 
    type="text"
    id="<?php 
echo piklist_form::get_field_id($field, $scope, $index, $prefix);
?>
" 
    name="<?php 
echo piklist_form::get_field_name($field, $scope, $index, $prefix);
?>
"
    value="<?php 
echo is_array($value) ? esc_attr(end($value)) : esc_attr($value);
?>
" 
    <?php 
echo piklist_form::attributes_to_string($attributes);
?>
  />
Ejemplo n.º 7
0
Archivo: html.php Proyecto: a42/piklist
<?php

array_push($attributes['class'], 'piklist-field-part');
?>

<div
  <?php 
echo piklist_form::attributes_to_string($attributes);
?>
  id="<?php 
echo piklist_form::get_field_id($arguments);
?>
" 
  name="<?php 
echo piklist_form::get_field_name($arguments);
?>
"><?php 
echo is_array($value) ? implode($value, ' ') : $value;
?>
</div>
function piklist($option, $arguments = array())
{
    if (!is_array($arguments) && strstr($arguments, '=')) {
        parse_str($arguments, $arguments);
    }
    if (is_array($option) || is_object($option)) {
        $list = array();
        $arguments = is_array($arguments) ? $arguments : array($arguments);
        foreach ($option as $key => $value) {
            if (count($arguments) > 1) {
                if (in_array('_key', $arguments)) {
                    $_value = $arguments[1];
                    $list[$key] = is_object($value) ? $value->{$_value} : $value[$_value];
                } else {
                    $__key = $arguments[0];
                    $_key = is_object($value) ? $value->{$__key} : (isset($value[$__key]) ? $value[$__key] : null);
                    $_value = $arguments[1];
                    $list[$_key] = is_object($value) ? $value->{$_value} : (isset($value[$_value]) ? $value[$_value] : null);
                }
            } else {
                $_value = $arguments[0];
                array_push($list, is_object($value) && isset($value->{$_value}) ? $value->{$_value} : (isset($value[$_value]) ? $value[$_value] : null));
            }
        }
        return $list;
    } else {
        switch ($option) {
            case 'field':
                if (piklist_setting::get('active_section')) {
                    piklist_setting::register_setting($arguments);
                } else {
                    piklist_form::render_field($arguments, isset($arguments['return']) ? $arguments['return'] : false);
                }
                break;
            case 'list_table':
                piklist_list_table::render($arguments);
                break;
            case 'post_type_labels':
                return piklist::post_type_labels($arguments);
                break;
            case 'taxonomy_labels':
                return piklist::taxonomy_labels($arguments);
                break;
            case 'option':
            case 'post_custom':
            case 'post_meta':
            case 'get_post_custom':
            case 'user_custom':
            case 'user_meta':
            case 'get_user_custom':
            case 'term_custom':
            case 'term_meta':
            case 'get_term_custom':
                switch ($option) {
                    case 'user_custom':
                    case 'user_meta':
                    case 'get_user_custom':
                        $type = 'user';
                        break;
                    case 'term_custom':
                    case 'term_meta':
                    case 'get_term_custom':
                        $type = 'term';
                        break;
                    case 'post_custom':
                    case 'post_meta':
                    case 'get_post_custom':
                        $type = 'post';
                        break;
                    default:
                        $type = 'option';
                        break;
                }
                return piklist::object($type, $arguments);
                break;
            case 'dashes':
                return piklist::dashes($arguments);
                break;
            case 'slug':
                return piklist::slug($arguments);
                break;
            case 'performance':
                piklist::performance();
                break;
            case 'include_meta_boxes':
                // TODO: Improve
                if (isset($arguments['post_type'])) {
                    $post_type = $arguments['post_type'];
                    unset($arguments['post_type']);
                } else {
                    $post_type = null;
                }
                piklist::include_meta_boxes($arguments, $post_type);
                break;
            case 'include_actions':
                // TODO: Improve
                if (isset($arguments['action'])) {
                    $post_type = $arguments['action'];
                    unset($arguments['action']);
                }
                piklist::include_actions($action, $arguments);
                break;
            case 'include_user_profile_fields':
                piklist_user::include_user_profile_fields($arguments);
                break;
            case 'comments_template':
                $file = isset($arguments[0]) ? $arguments[0] : '/comments.php';
                $seperate_comments = isset($arguments[1]) ? $arguments[1] : false;
                piklist_comments::comments_template($file, $seperate_comments);
                break;
            default:
                $return = isset($arguments['return']) ? $arguments['return'] : false;
                $loop = isset($arguments['loop']) ? $arguments['loop'] : null;
                unset($arguments['return']);
                unset($arguments['loop']);
                return piklist::render($option, $arguments, $return, $loop);
                break;
        }
    }
}
Ejemplo n.º 9
0
 /**
  * render_setting
  * Render a setting.
  *
  * @param array $setting The setting object.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function render_setting($setting)
 {
     $field = wp_parse_args(array('scope' => $setting['section']['data']['setting'], 'prefix' => false, 'disable_label' => true, 'position' => false, 'value' => piklist_form::get_field_value($setting['section']['data']['setting'], $setting['field'], 'option')), $setting['field']);
     if ($field['type'] == 'group' && !$field['field']) {
         foreach ($field['fields'] as &$column) {
             if (!isset($column['value'])) {
                 $column['value'] = null;
             }
             $column['value'] = piklist_form::get_field_value($setting['section']['data']['setting'], $column, 'option');
         }
     }
     piklist_form::render_field($field);
 }
 public static function meta_box($post, $meta_box)
 {
     global $typenow;
     if (!self::$meta_box_nonce) {
         piklist_form::render_field(array('type' => 'hidden', 'field' => 'nonce', 'value' => wp_create_nonce(plugin_basename(piklist::$paths['piklist'] . '/piklist.php')), 'scope' => piklist::$prefix));
         self::$meta_box_nonce = true;
     }
     do_action('piklist_pre_render_meta_box', $post, $meta_box);
     piklist::render(piklist::$paths[$meta_box['args']['add_on']] . '/parts/meta-boxes/' . $meta_box['args']['part'], array('type' => $typenow, 'prefix' => 'piklist', 'plugin' => 'piklist'), false);
     do_action('piklist_post_render_meta_box', $post, $meta_box);
 }
Ejemplo n.º 11
0
<?php

$options = array_merge(array('textarea_name' => piklist_form::get_field_name($arguments), 'editor_height' => 180, 'quicktags' => false, 'teeny' => true, 'media_buttons' => false, 'textarea_rows' => 5, 'editor_class' => implode(' ', $attributes['class'])), isset($options) && is_array($options) ? $options : array());
if (!empty($attributes['class'])) {
    $options['editor_class'] .= ' ' . implode(' ', $attributes['class']);
}
wp_editor(isset($value) && !empty($value) ? stripslashes(is_array($value) ? end($value) : $value) : '', piklist_form::get_field_id($arguments), $options);
Ejemplo n.º 12
0
      <?php 
        }
        ?>

    <?php 
    } else {
        ?>

      <?php 
        echo $type == 'editor' ? wpautop($value) : $value;
        ?>

    <?php 
    }
    ?>

    <?php 
    piklist('field', array('type' => 'hidden', 'scope' => piklist::$prefix, 'field' => 'ignore' . ($scope ? '_' . $scope : ''), 'index' => rand(), 'value' => piklist_form::get_field_name($field, false, $index, $prefix)));
    ?>

  </div>

<?php 
} elseif (empty($value) && !$field) {
    ?>
  
  <em>&mdash;</em>
  
<?php 
}
 public static function process_form($term_id, $taxonomy_id)
 {
     piklist_form::process_form(array('term' => $term_id));
 }
Ejemplo n.º 14
0
 /**
  * assets
  * Add assets needed in frontend for Piklist.
  *
  * @param array $assets Collection of registered assets.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function assets($assets)
 {
     /**
      * piklist_assets_localize
      * Add additional information to the piklist local variable
      *
      * @param  array $localize so far.
      *
      * @since 1.0
      */
     $localize = array_merge(apply_filters('piklist_assets_localize', array()), array('prefix' => piklist::$prefix));
     array_push($assets['scripts'], array('handle' => 'piklist', 'src' => piklist::$add_ons['piklist']['url'] . '/parts/js/piklist.js', 'ver' => piklist::$version, 'deps' => array('jquery', 'jquery-ui-sortable', 'quicktags'), 'enqueue' => true, 'in_footer' => true, 'admin' => true, 'front' => piklist_form::render_assets(), 'localize' => array('key' => 'piklist', 'value' => $localize)));
     array_push($assets['scripts'], array('handle' => 'jquery.placeholder', 'src' => piklist::$add_ons['piklist']['url'] . '/parts/js/jquery.placeholder.js', 'ver' => '1.0', 'deps' => 'jquery', 'enqueue' => true, 'in_footer' => true, 'admin' => true, 'front' => piklist_form::render_assets()));
     array_push($assets['styles'], array('handle' => 'piklist-css', 'src' => piklist::$add_ons['piklist']['url'] . '/parts/css/piklist.css', 'ver' => piklist::$version, 'enqueue' => true, 'admin' => true, 'in_footer' => false, 'front' => piklist_form::render_assets(), 'media' => 'screen, projection'));
     return $assets;
 }
Ejemplo n.º 15
0
/**
 * piklist
 * The core helper function for the Piklist framework.
 *
 * @since 1.0
 */
function piklist($option, $arguments = array())
{
    if (!is_array($arguments) && strstr($arguments, '=')) {
        parse_str($arguments, $arguments);
    }
    if (is_array($option) || is_object($option)) {
        return empty($arguments) ? piklist::object_format($option) : piklist::pluck($option, $arguments);
    } else {
        switch ($option) {
            case 'field':
                if (piklist_setting::get('active_section')) {
                    piklist_setting::register_setting($arguments);
                } else {
                    return piklist_form::render_field($arguments, isset($arguments['return']) ? $arguments['return'] : false);
                }
                break;
            case 'form':
                return piklist_form::render_form($arguments['form'], isset($arguments['add_on']) ? $arguments['add_on'] : null);
                break;
            case 'list_table':
                piklist_list_table::render($arguments);
                break;
            case 'post_type_labels':
                return piklist::post_type_labels($arguments);
                break;
            case 'taxonomy_labels':
                return piklist::taxonomy_labels($arguments);
                break;
            case 'option':
            case 'post_custom':
            case 'post_meta':
            case 'get_post_custom':
            case 'user_custom':
            case 'user_meta':
            case 'get_user_custom':
            case 'term_custom':
            case 'term_meta':
            case 'get_term_custom':
                switch ($option) {
                    case 'user_custom':
                    case 'user_meta':
                    case 'get_user_custom':
                        $type = 'user';
                        break;
                    case 'term_custom':
                    case 'term_meta':
                    case 'get_term_custom':
                        $type = 'term';
                        break;
                    case 'post_custom':
                    case 'post_meta':
                    case 'get_post_custom':
                        $type = 'post';
                        break;
                    default:
                        $type = 'option';
                        break;
                }
                return piklist::object($type, $arguments);
                break;
            case 'dashes':
                return piklist::dashes($arguments);
                break;
            case 'slug':
                return piklist::slug($arguments);
                break;
            case 'humanize':
                return piklist::humanize($arguments);
                break;
            case 'performance':
                piklist::performance();
                break;
            case 'comments_template':
                $file = isset($arguments[0]) ? $arguments[0] : '/comments.php';
                $seperate_comments = isset($arguments[1]) ? $arguments[1] : false;
                piklist_comments::comments_template($file, $seperate_comments);
                break;
            case 'include_meta_boxes':
                piklist::render('shared/notice', array('content' => sprintf(__('This page is using the old Piklist WorkFlow system. Please update your code to the %snew WorkFlow system%s.', 'piklist'), '<a href="https://piklist.com/user-guide/docs/building-workflows-piklist-v0-9-9/" target="_blank">', '</a>'), 'notice_type' => 'error'));
                break;
            case 'prefix':
                return piklist::$prefix;
                break;
            case 'url':
                return isset(piklist::$add_ons[$arguments]) ? piklist::$add_ons[$arguments]['url'] : null;
                break;
            case 'path':
                return isset(piklist::$add_ons[$arguments]) ? piklist::$add_ons[$arguments]['path'] : null;
                break;
            default:
                $return = isset($arguments['return']) ? $arguments['return'] : false;
                $loop = isset($arguments['loop']) ? $arguments['loop'] : null;
                unset($arguments['return']);
                unset($arguments['loop']);
                return piklist::render($option, $arguments, $return, $loop);
                break;
        }
    }
}
Ejemplo n.º 16
0
Archivo: show.php Proyecto: a42/piklist
    echo piklist_form::attributes_to_string($attributes);
    ?>
    id="<?php 
    echo piklist_form::get_field_id($arguments);
    ?>
" 
    name="<?php 
    echo piklist_form::get_field_name($arguments);
    ?>
">

    <?php 
    if (!$field && $type == 'group') {
        $value = array();
        foreach ($fields as $f) {
            $value[$f['field']] = piklist_form::get_field_value($scope, $f, $scope, piklist_form::get_field_object_id(array('field' => $field, 'scope' => $scope)));
        }
    }
    ?>

    <?php 
    if (is_array($value)) {
        ?>

      <?php 
        if (count($value) > 1) {
            ?>

        <?php 
            if (piklist::is_flat($value)) {
                echo implode('<br />', $value);
 public static function render_field($field, $return = false)
 {
     $current_user = wp_get_current_user();
     $field = wp_parse_args($field, array('field' => false, 'type' => 'text', 'label' => false, 'description' => false, 'prefix' => true, 'scope' => null, 'value' => null, 'capability' => false, 'role' => false, 'logged_in' => false, 'add_more' => false, 'sortable' => false, 'choices' => false, 'list' => true, 'position' => false, 'template' => self::get_template(), 'wrapper' => false, 'columns' => null, 'embed' => false, 'editable' => true, 'child_field' => false, 'label_position' => 'before', 'conditions' => false, 'options' => false, 'on_post_status' => false, 'on_comment_status' => false, 'display' => false, 'group_field' => false, 'required' => false, 'index' => null, 'multiple' => false, 'errors' => false, 'attributes' => array('class' => array(), 'title' => false, 'alt' => false, 'tabindex' => false, 'columns' => null, 'value' => false), 'tax_query' => array('include_children' => true, 'field' => 'term_id', 'operator' => 'IN'), 'meta_query' => array('compare' => '=', 'type' => 'CHAR')));
     // Should this field be rendered?
     if ($field['embed'] && !$return || $field['capability'] && !current_user_can($field['capability']) || !isset($field['field']) || $field['logged_in'] && !is_user_logged_in() || $field['role'] && !piklist_user::current_user_role($field['role'])) {
         return false;
     }
     // Set default scopes based on enviroment
     if (is_null($field['scope'])) {
         if (self::is_post()) {
             $field['scope'] = 'post_meta';
         } elseif (self::is_media()) {
             $field['scope'] = 'post_meta';
         } elseif (self::is_term()) {
             $field['scope'] = 'term_meta';
         } elseif (self::is_user()) {
             $field['scope'] = 'user_meta';
         }
     }
     // Set Defaults
     array_push(self::$fields_defaults, $field);
     // Determine if its a multiple type field
     if (in_array($field['type'], self::$field_list_types['multiple_fields']) || is_array($field['attributes']) && in_array('multiple', $field['attributes'])) {
         $field['multiple'] = true;
     }
     if ($field['type'] == 'html' && !isset($field['field'])) {
         $field['field'] = piklist::unique_id();
     }
     // Manage Classes
     if (isset($field['attributes']['class'])) {
         $field['attributes']['class'] = !is_array($field['attributes']['class']) ? explode(' ', $field['attributes']['class']) : $field['attributes']['class'];
     } else {
         $field['attributes']['class'] = array();
     }
     array_push($field['attributes']['class'], piklist_form::get_field_id($field['field'], $field['scope'], false, $field['prefix']));
     // Set Wrapper
     $wrapper = array('id' => $field['type'] == 'map' ? null : self::get_field_wrapper_id($field), 'class' => array());
     // Set Columns
     if (is_numeric($field['columns']) && !$field['child_field']) {
         array_push($wrapper['class'], 'piklist-field-type-group piklist-field-column-' . $field['columns']);
     }
     if (isset($field['attributes']['columns']) && is_numeric($field['attributes']['columns'])) {
         array_push($field['attributes']['class'], 'piklist-field-column-' . $field['attributes']['columns']);
         unset($field['attributes']['columns']);
     }
     if (isset($field['attributes']['wrapper_class'])) {
         array_push($wrapper['class'], $field['attributes']['wrapper_class']);
     }
     // Check Statuses
     $status_types = apply_filters('piklist_status_types', array('post'));
     foreach ($status_types as $type) {
         $status = $field['on_' . $type . '_status'];
         if (!empty($status)) {
             $object = !empty(self::$save_ids) ? get_post(self::$save_ids[$type], ARRAY_A) : (array) $GLOBALS[$type];
             if ((is_admin() && isset($GLOBALS[$type]) || !empty(self::$save_ids)) && isset($object['post_type'])) {
                 $status_list = piklist_cpt::get_post_statuses($object['post_type']);
                 foreach (array('field', 'value', 'hide') as $status_display) {
                     if (isset($status[$status_display])) {
                         $status[$status_display] = is_array($status[$status_display]) ? $status[$status_display] : array($status[$status_display]);
                         foreach ($status[$status_display] as $_status) {
                             if (strstr($_status, '--')) {
                                 $status_range = explode('--', $_status);
                                 $status_range_start = array_search($status_range[0], $status_list);
                                 $status_range_end = array_search($status_range[1], $status_list);
                                 if (is_numeric($status_range_start) && is_numeric($status_range_end)) {
                                     $status_slice = array();
                                     for ($i = $status_range_start; $i <= $status_range_end; $i++) {
                                         array_push($status_slice, $status_list[$i]);
                                     }
                                     array_splice($status[$status_display], array_search($_status, $status[$status_display]), 1, $status_slice);
                                 }
                             }
                         }
                     }
                 }
             }
             if (isset($status['hide']) && isset($object[$type . '_status']) && piklist::check_in($status['hide'], $object[$type . '_status'] ? $object[$type . '_status'] : array('draft'))) {
                 return false;
             } elseif (isset($status['value']) && isset($object[$type . '_status']) && piklist::check_in($status['value'], $object[$type . '_status'] ? $object[$type . '_status'] : array('draft'))) {
                 $field['display'] = true;
             }
         }
     }
     // Get errors
     $field['errors'] = piklist_validate::get_errors($field['field'], $field['scope']);
     // Get field value
     if (!$field['group_field']) {
         if (piklist_validate::errors()) {
             $stored_value = piklist_validate::get_request_value($field['field'], $field['scope']);
         }
         if (!isset($stored_value)) {
             if (self::is_widget()) {
                 $stored_value = isset(piklist_widget::widget()->instance[$field['field']]) ? maybe_unserialize(piklist_widget::widget()->instance[$field['field']]) : $field['value'];
             } else {
                 $stored_value = self::get_field_value($field['scope'], $field, $field['scope'], piklist_form::get_field_object_id($field), false);
             }
         }
         if (!isset($stored_value) && !isset($field['attributes']['placeholder']) && !$field['multiple']) {
             $field['attributes']['placeholder'] = htmlspecialchars($field['value']);
         } elseif (isset($stored_value) || is_array($stored_value) && empty($stored_value)) {
             $field['value'] = $stored_value;
         }
     }
     // Check for nested fields
     if ($field['description']) {
         $field['description'] = self::render_nested_field($field, $field['description']);
     }
     if (is_array($field['choices']) && !in_array($field['type'], array('select', 'multiselect'))) {
         foreach ($field['choices'] as &$choice) {
             $choice = self::render_nested_field($field, $choice);
         }
     }
     if ($field['conditions']) {
         if ($field['display'] && empty($field['value']) && $field['type'] != 'group') {
             return false;
         }
         foreach ($field['conditions'] as &$condition) {
             if (is_array($condition)) {
                 $condition['scope'] = isset($condition['scope']) ? $condition['scope'] : $field['scope'];
                 $condition['id'] = piklist_form::get_field_id($condition['field'], $condition['scope'], false, $field['prefix']);
                 $condition['name'] = piklist_form::get_field_name($condition['field'], $condition['scope'], false, $field['prefix']);
                 $condition['reset'] = isset($condition['reset']) ? $condition['reset'] : true;
                 if (!isset($condition['type']) || empty($condition['type'])) {
                     $condition['type'] = 'toggle';
                 }
                 if (!in_array('piklist-field-condition', $field['attributes']['class'])) {
                     if (!in_array('piklist-field-condition', $wrapper['class'])) {
                         array_push($wrapper['class'], 'piklist-field-condition');
                     }
                     if (!in_array('piklist-field-condition-' . $condition['type'], $wrapper['class'])) {
                         array_push($wrapper['class'], 'piklist-field-condition-' . $condition['type']);
                     }
                 }
             }
         }
     }
     // Set the field template
     if ($field['group_field'] && self::get_template() == $field['template'] && (strstr(self::$templates[$field['template']]['template'], '</tr>') || $field['template'] == 'default')) {
         $field['child_field'] = true;
         $field['template'] = 'field';
     } elseif ($field['type'] == 'hidden' || $field['embed']) {
         $field['template'] = 'field';
     }
     $field['wrapper'] = preg_replace(array('/ {2,}/', '/<!--.*?-->|\\t|(?:\\r?\\n[ \\t]*)+/s'), array(' ', ''), sprintf(self::$templates[$field['template']]['template'], $wrapper['id'], implode(' ', $wrapper['class'])));
     $field = apply_filters('piklist_pre_render_field', $field);
     self::$field_rendering = $field;
     self::$fields_rendered[$field['scope']][$field['field']] = $field;
     $field_to_render = self::template_tag_fetch('field_wrapper', $field['wrapper']);
     $rendered_field = do_shortcode($field_to_render);
     switch ($field['position']) {
         case 'start':
             $rendered_field = piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field;
             break;
         case 'end':
             $rendered_field .= piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'end');
             break;
         case 'wrap':
             $rendered_field = piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'start') . $rendered_field . piklist_form::template_tag_fetch('field_wrapper', $field['wrapper'], 'end');
             break;
     }
     $rendered_field = apply_filters('piklist_post_render_field', $rendered_field, $field);
     self::$field_rendering = null;
     // Return the field as requested
     if ($return) {
         return $rendered_field;
     } else {
         echo $rendered_field;
     }
 }
 public static function render_setting($setting)
 {
     piklist_form::render_field(wp_parse_args(array('scope' => $setting['section']['setting'], 'prefix' => false, 'disable_label' => true, 'position' => false, 'value' => piklist_form::get_field_value($setting['section']['setting'], $setting['field'], 'option')), $setting['field']));
 }
Ejemplo n.º 19
0
 /**
  * check
  * Run all validation and sanitization checks against the rendered fields.
  *
  * @param array $stored_data The data to parse if the REQUEST object is not used by default.
  * @param string $fields_id The fields id.
  *
  * @return array Results of the check.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function check($stored_data = null, $fields_id = null)
 {
     self::$valid = true;
     self::$checked = false;
     if (!$fields_id) {
         $fields_id = isset($_REQUEST[piklist::$prefix]['fields']) ? esc_attr($_REQUEST[piklist::$prefix]['fields']) : null;
     }
     if (!$fields_id || !($fields_data = get_transient(piklist::$prefix . $fields_id))) {
         return false;
     }
     $clones = array();
     foreach ($fields_data as $type => &$fields) {
         foreach ($fields as &$field) {
             if (!is_null($stored_data)) {
                 if ($field['prefix'] && isset($stored_data[piklist::$prefix . $field['scope']])) {
                     $request_data = $stored_data[piklist::$prefix . $field['scope']];
                 } elseif (!$field['prefix'] && isset($stored_data[$field['scope']])) {
                     $request_data = $stored_data[$field['scope']];
                 } else {
                     $request_data = $stored_data;
                 }
             } else {
                 if ($field['scope'] && isset($_REQUEST[piklist::$prefix . $field['scope']])) {
                     $request_data = $_REQUEST[piklist::$prefix . $field['scope']];
                 } elseif ($field['scope'] && $field['scope'] == piklist::$prefix && isset($_REQUEST[piklist::$prefix])) {
                     $request_data = $_REQUEST[piklist::$prefix];
                 } else {
                     $request_data = $_REQUEST;
                 }
             }
             if ($request_data && $field['field'] && $field['type'] != 'html') {
                 $field['errors'] = false;
                 if (!in_array($field['field'], $clones)) {
                     if (isset($request_data[$field['field']])) {
                         $field['request_value'] = $request_data[$field['field']];
                     } elseif (strstr($field['field'], ':')) {
                         $pluck = explode(':', $field['field']);
                         $pluck_field = array_pop($pluck);
                         if (is_numeric($pluck[count($pluck) - 1])) {
                             array_pop($pluck);
                         }
                         $pluck = implode(':', $pluck);
                         if (isset($request_data[$pluck][$pluck_field])) {
                             $field['request_value'] = $request_data[$pluck][$pluck_field];
                         } else {
                             $request_data = piklist::array_path_get($request_data, explode(':', $pluck));
                             if (isset($request_data[$pluck_field])) {
                                 $field['request_value'] = $request_data[$pluck_field];
                             } else {
                                 $field['request_value'] = $request_data ? piklist::pluck($request_data, $pluck_field) : null;
                             }
                         }
                     }
                 }
                 if ($field['type'] == 'group' && $field['field'] && !strstr($field['field'], ':')) {
                     $paths = piklist::array_paths($field['request_value']);
                     foreach ($paths as $path) {
                         $path = explode(':', $path);
                         if (is_numeric($path[count($path) - 1])) {
                             unset($path[count($path) - 1]);
                         }
                         $path = implode(':', $path);
                         $field_name = $field['field'] . ':' . $path;
                         if (!isset($fields[$path]) && !in_array($field_name, $clones)) {
                             $original = preg_replace('/\\:\\d+\\:/', ':0:', $field_name);
                             $original = explode(':', $original);
                             if (is_numeric($original[count($original) - 1])) {
                                 unset($original[count($original) - 1]);
                             }
                             $original = implode(':', $original);
                             if (isset($fields[$original])) {
                                 $clone = $fields[$original];
                                 $path = array_reverse(explode(':', $path));
                                 for ($i = 0; $i < count($path); $i++) {
                                     if (is_numeric($path[$i])) {
                                         $clone['index'] = (int) $path[$i];
                                         break;
                                     }
                                 }
                                 $path = array_reverse($path);
                                 $clone['field'] = $field_name;
                                 $clone['id'] = piklist_form::get_field_id($clone);
                                 $clone['name'] = piklist_form::get_field_name($clone);
                                 $clone['request_value'] = piklist::array_path_get($field['request_value'], $path);
                                 $original_path = explode(':', $original);
                                 $group = array_shift($original_path);
                                 $fields[$original]['request_value'] = piklist::array_path_get($field['request_value'], $original_path);
                                 $position = array_search($original, array_keys($fields)) + 1;
                                 $fields = array_slice($fields, 0, $position, true) + array($field_name => $clone) + array_slice($fields, $position, count($fields) - 1, true);
                                 array_push($clones, $field_name);
                             }
                         }
                     }
                 }
                 // Strip Slashes
                 $field['request_value'] = stripslashes_deep($field['request_value']);
                 // Required
                 if ($field['required']) {
                     $field = self::required_value($field);
                 }
                 // Sanitization
                 foreach ($field['sanitize'] as $sanitize) {
                     if (isset(self::$sanitization_rules[$sanitize['type']])) {
                         $sanitization = array_merge(self::$sanitization_rules[$sanitize['type']], $sanitize);
                         if (isset($sanitization['callback'])) {
                             $field = self::sanitize_value_callback($field, $sanitization);
                             if (strstr($field['field'], ':')) {
                                 $path = explode(':', $field['field']);
                                 $group = array_shift($path);
                                 piklist::array_path_set($fields[$group]['request_value'], $path, $field['request_value']);
                             }
                         }
                     } else {
                         $trigger_error = sprintf(__('Sanitization type "%s" is not valid.', 'piklist'), $sanitize['type']);
                         trigger_error($trigger_error, E_USER_NOTICE);
                     }
                 }
                 // Validation
                 foreach ($field['validate'] as $validate) {
                     if (isset(self::$validation_rules[$validate['type']])) {
                         $validation = array_merge(self::$validation_rules[$validate['type']], $validate);
                         if (isset($validation['rule'])) {
                             $field = self::validate_value_rule($field, $validation);
                         }
                         if (isset($validation['callback'])) {
                             $field = self::validate_value_callback($field, $validation, $fields_data);
                         }
                     } else {
                         $trigger_error = sprintf(__('Validation type "%s" is not valid.', 'piklist'), $validate['type']);
                         trigger_error($trigger_error, E_USER_NOTICE);
                     }
                 }
             }
         }
     }
     self::$checked = true;
     self::set_data($fields_id, $fields_data);
     return array('valid' => self::$valid, 'type' => $_SERVER['REQUEST_METHOD'], 'fields_data' => $fields_data);
 }
 public static function process_form($user_id)
 {
     piklist_form::process_form(array('user' => $user_id));
 }
Ejemplo n.º 21
0
 /**
  * ajax
  * Render the widget form.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public function ajax()
 {
     global $wp_widget_factory;
     $widget = isset($_REQUEST['widget']) ? esc_attr($_REQUEST['widget']) : null;
     if ($widget && current_user_can('edit_theme_options')) {
         $this->setup($this->widget_name);
         if (isset($_REQUEST['number'])) {
             $instances = get_option('widget_' . piklist::dashes($this->widget_name));
             piklist_widget::widget()->_set($_REQUEST['number']);
             if (isset($instances[$_REQUEST['number']])) {
                 piklist_widget::widget()->instance = $instances[$_REQUEST['number']];
             }
         }
         if (isset($this->widgets[$widget])) {
             ob_start();
             do_action('piklist_notices');
             foreach ($this->widgets[$widget]['render'] as $render) {
                 if (strstr($render, '-form.php')) {
                     piklist::render($render);
                 }
             }
             piklist_form::save_fields();
             $output = ob_get_contents();
             ob_end_clean();
             wp_send_json(array('form' => $output, 'widget' => $this->widgets[$widget]));
         }
     }
     wp_send_json_error();
 }
Ejemplo n.º 22
0
<div class="piklist-meta-box">
  
  <h3 id="<?php 
echo $meta_box['id'];
?>
" class="piklist-meta-box-title"><?php 
echo isset($meta_box['data']['title']) ? $meta_box['data']['title'] : '';
?>
</h3>

  <?php 
if (!empty($meta_box['data']['description'])) {
    ?>

    <?php 
    echo wpautop($meta_box['data']['description']);
    ?>

  <?php 
}
?>

  <?php 
echo piklist_form::template_tag_fetch('field_wrapper', $wrapper, 'start');
Ejemplo n.º 23
0
        if (!in_array($column['type'], array('group', 'editor')) && !$group_add_more && isset($attributes['data-piklist-field-addmore'])) {
            $column['attributes']['data-piklist-field-addmore'] = $attributes['data-piklist-field-addmore'];
            $group_add_more = true;
            if (isset($attributes['data-piklist-field-addmore-actions'])) {
                $column['attributes']['data-piklist-field-addmore-actions'] = $attributes['data-piklist-field-addmore-actions'];
            }
        }
        if (isset($column['add_more']) && $column['add_more']) {
            $column['attributes']['data-piklist-field-addmore-single'] = $attributes['data-piklist-field-addmore'];
        }
        if ($column['type'] == 'group') {
            foreach ($column['fields'] as &$_field) {
                $_field['field'] = $column['field'] . ':' . $column['index'] . ':' . $_field['field'];
            }
        }
        if (!empty($conditions)) {
            if (isset($column['conditions']) && is_array($column['conditions'])) {
                $column['conditions'] = array_merge($column['conditions'], $conditions);
                if (!isset($column['attributes']['class'])) {
                    $column['attributes']['class'] = array();
                } elseif (isset($column['attributes']['class']) && !is_array($column['attributes']['class'])) {
                    $column['attributes']['class'] = array($column['attributes']['class']);
                }
                array_push($column['attributes']['class'], 'piklist-field-condition');
            } else {
                $column['conditions'] = $conditions;
            }
        }
        piklist_form::render_field($column);
    }
}