public static function register_settings_callback($arguments) { extract($arguments); $data = get_file_data($path . '/parts/' . $folder . '/' . $part, apply_filters('piklist_get_file_data', array('title' => 'Title', 'setting' => 'Setting', 'tab' => 'Tab', 'tab_order' => 'Tab Order', 'order' => 'Order'), 'settings')); $data = apply_filters('piklist_add_part', $data, 'settings'); if (!isset(self::$settings[$data['setting']])) { self::$settings[$data['setting']] = array(); } array_push(self::$settings[$data['setting']], array_merge($arguments, array_merge($data, array('slug' => piklist::dashes("{$add_on} {$part}"), 'page' => piklist::dashes($add_on))))); }
public static function register_help_tabs_callback($arguments) { $screen = get_current_screen(); extract($arguments); $file = $path . '/parts/' . $folder . '/' . $part; $data = get_file_data($file, apply_filters('piklist_get_file_data', array('title' => 'Title', 'capability' => 'Capability', 'role' => 'Role', 'page' => 'Page', 'sidebar' => 'Sidebar'), 'help')); $data = apply_filters('piklist_add_part', $data, 'help'); $pages = isset($data['page']) ? explode(',', $data['page']) : false; if (($screen->id == $data['page'] || empty($data['page']) || in_array($screen->id, $pages)) && (isset($data['capability']) && current_user_can($data['capability']) || isset($data['role']) && piklist_user::current_user_role($data['role']))) { if ($data['sidebar'] == 'true') { get_current_screen()->set_help_sidebar(piklist::render($file, null, true)); } else { get_current_screen()->add_help_tab(array('id' => piklist::dashes($add_on . '-' . $part), 'title' => $data['title'], 'content' => piklist::render($file, null, true))); } } }
public static function register_dashboard_widgets_callback($arguments) { global $current_screen; extract($arguments); $file = $path . '/parts/' . $folder . '/' . $part; $data = get_file_data($file, apply_filters('piklist_get_file_data', array('title' => 'Title', 'capability' => 'Capability', 'role' => 'Role', 'id' => 'ID', 'network' => 'Network'), 'dashboard')); $data = apply_filters('piklist_add_part', $data, 'dashboard'); if ($data['network'] == 'only' && $current_screen->id != 'dashboard-network') { return; } if ((empty($data['network']) || $data['network'] == 'false') && (isset($current_screen) && $current_screen->id == 'dashboard-network')) { return; } if (isset($data['capability']) && current_user_can($data['capability']) || isset($data['role']) && piklist_user::current_user_role($data['role'])) { $id = empty($data['id']) ? piklist::dashes($add_on . '-' . $part) : $data['id']; self::$widgets[$id] = array('id' => $id, 'file' => $file, 'data' => $data); wp_add_dashboard_widget($id, self::$widgets[$id]['data']['title'], array('piklist_dashboard', 'render_widget')); } }
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; } } }
public static function admin_pages_callback($arguments) { extract($arguments); $data = get_file_data($path . '/parts/' . $folder . '/' . $part, apply_filters('piklist_get_file_data', array('title' => 'Title', 'page' => 'Page', 'flow' => 'Flow', 'flow_page' => 'Flow Page', 'tab' => 'Tab', 'order' => 'Order', 'position' => 'Position'), 'admin-pages')); $data = apply_filters('piklist_add_part', $data, 'admin-pages'); if (!empty($data['page']) && (!isset($_REQUEST['flow_page']) || isset($_REQUEST['flow_page']) && $_REQUEST['flow_page'] === $data['flow_page'])) { if (!isset(self::$admin_page_sections[$data['page']])) { self::$admin_page_sections[$data['page']] = array(); } array_push(self::$admin_page_sections[$data['page']], array_merge($arguments, array_merge($data, array('slug' => piklist::dashes("{$add_on} {$part}"), 'page' => piklist::dashes($add_on), 'part' => $path . '/parts/admin-pages/' . $part)))); $tab = !empty($data['tab']) ? piklist::dashes($data['tab']) : 'default'; if (!isset(self::$admin_page_tabs[$data['page']][$tab]) && $tab) { self::$admin_page_tabs[$data['page']][$tab] = array('title' => $data['tab'], 'page' => $tab); } uasort(self::$admin_page_sections[$data['page']], array('piklist', 'sort_by_order')); } }
?> " value="<?php echo esc_attr($values[$index]); ?> " <?php echo $active ? 'checked="checked"' : ''; ?> <?php echo piklist_form::attributes_to_string($attributes); ?> /> <a href="#<?php echo piklist::dashes(piklist_add_on::$available_add_ons[$values[$index]]['Name']); ?> " class="button<?php echo $active ? '' : '-primary'; ?> piklist-field-add-on-button"> <?php $active ? _e('Disable', 'piklist') : _e('Activate', 'piklist'); ?> </a> <?php if (isset($settings[$values[$index]])) { ?> <a href="<?php
public function register_widgets_callback($arguments) { extract($arguments); if (!strstr($part, '-form.php')) { $path .= '/parts/' . $folder . '/'; $name = piklist::dashes(strtolower(str_replace('.php', '', $part))); $form = file_exists($path . $name . '-form.php') ? $path . $name . '-form' : false; if ($form) { $data = get_file_data($form . '.php', apply_filters('piklist_get_file_data', array('height' => 'Height', 'width' => 'Width'), 'widgets')); $data = apply_filters('piklist_add_part', $data, 'widgets'); } else { $data = null; } $this->widgets[$name] = array('name' => $name, 'add_on' => $add_on, 'path' => $path . $name, 'form' => $form, 'form_data' => $data, 'data' => get_file_data($path . $part, array('title' => 'Title', 'description' => 'Description', 'tags' => 'Tags', 'class' => 'Class'))); } }
/** * 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; } } }
/** * register_workflows_callback * Handle registered workflow tabs. * * @param array $arguments The configuration data for the workflow tab. * * @access public * @static * @since 1.0 */ public static function register_workflows_callback($arguments) { $pagenow = basename($_SERVER['SCRIPT_NAME']); extract($arguments); foreach ($data['flow'] as $flow) { $tab = $data['tab'] ? current($data['tab']) : null; $data['flow_page'] = piklist::slug(($tab ? $tab . ' ' : null) . $data['title'], 'UTF-8'); $data['flow_slug'] = $flow == piklist::dashes($flow) ? $flow : piklist::slug($flow, 'UTF-8'); if ((piklist_admin::is_user() || piklist_admin::is_term()) && $data['position'] == 'title') { $data['position'] = 'body'; } $workflow = array('part' => $part ? $path . '/parts/' . $folder . '/' . $part : null, 'data' => $data); $url_arguments = array(piklist::$prefix => array('flow' => $data['flow_slug'], 'flow_page' => $data['flow_page'])); $url_arguments['post'] = isset($post->ID) ? $post->ID : (isset($_REQUEST['post']) ? (int) $_REQUEST['post'] : null); parse_str($_SERVER['QUERY_STRING'], $url_defaults); foreach (array('message', 'paged', 'updated') as $variable) { unset($url_defaults[$variable]); } $url = array_merge($url_defaults, $url_arguments); if ($data['redirect'] != false) { /** * piklist_workflow_redirect_url * * @since 1.0 */ $data['redirect'] = apply_filters('piklist_workflow_redirect_url', $data['redirect'], $workflow, $data); $workflow['url'] = admin_url($data['redirect'] . (strstr($data['redirect'], '?') ? '&' : '?') . http_build_query(array_filter($url))); } elseif ($data['disable'] == false) { if ($url_arguments['post']) { unset($url['page']); $url['action'] = 'edit'; $pagenow = 'post.php'; } $workflow['url'] = admin_url($pagenow . '?' . http_build_query(array_filter($url))); } if (!isset(self::$workflows[$data['flow_slug']])) { self::$workflows[$data['flow_slug']] = array(); } if (!$tab) { if ($data['header'] === true) { array_unshift(self::$workflows[$data['flow_slug']], $workflow); } elseif (!empty($data['order'])) { self::$workflows[$data['flow_slug']][$data['order']] = $workflow; } else { array_push(self::$workflows[$data['flow_slug']], $workflow); } } else { if (!isset(self::$sub_workflows[$data['flow_slug']])) { self::$sub_workflows[$data['flow_slug']] = array(); } if (!isset(self::$sub_workflows[$data['flow_slug']][$tab])) { self::$sub_workflows[$data['flow_slug']][$tab] = array(); } if (!empty($data['order'])) { self::$sub_workflows[$data['flow_slug']][$tab][$data['order']] = $workflow; } else { array_push(self::$sub_workflows[$data['flow_slug']][$tab], $workflow); } } } }
/** * widget * Render the front end view of the widget. * * @param array $arguments The part object. * @param array $instance The widget instance. * * @access public * @static * @since 1.0 */ public function widget($arguments, $instance) { extract($arguments); if (isset($instance['widget'])) { $widget = $instance['widget']; unset($instance['widget']); } if (isset($widget) && !empty($instance)) { $this->setup($this->widget_name); foreach ($instance as $field => &$value) { $value = maybe_unserialize($value); } $this->widgets[$widget]['instance'] = $instance; do_action('piklist_pre_render_widget', $this->widgets[$widget]); foreach ($this->widgets[$widget]['render'] as $render) { if (!strstr($render, '-form.php')) { piklist::render($render, array('instance' => $instance, 'settings' => $instance, 'before_widget' => str_replace('class="', 'class="' . piklist::dashes($this->widgets[$widget]['add_on'] . ' ' . $this->widgets[$widget]['id']) . ' ' . $this->widgets[$widget]['data']['class'] . ' ', $before_widget), 'after_widget' => $after_widget, 'before_title' => $before_title, 'after_title' => $after_title, 'data' => $this->widgets[$widget]['data'])); } } do_action('piklist_post_render_widget', $this->widgets[$widget]); } }