Exemplo n.º 1
0
 /**
  * get_field_scope
  * Get the field scope based off of environment.
  *
  * @return string The field scope.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function get_field_scope()
 {
     global $pagenow;
     $scope = null;
     if (piklist_admin::is_post()) {
         $scope = 'post_meta';
     } elseif (piklist_admin::is_media()) {
         $scope = 'post_meta';
     } elseif (piklist_admin::is_term()) {
         $scope = 'term_meta';
     } elseif (piklist_admin::is_user()) {
         $scope = 'user_meta';
     } elseif ($pagenow == 'admin.php' && isset($_REQUEST['page']) && $_REQUEST['page'] == 'shortcode_editor') {
         $scope = 'shortcode';
     }
     return $scope;
 }
Exemplo n.º 2
0
 /**
  * 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);
             }
         }
     }
 }
Exemplo n.º 3
0
 /**
  * relate_field
  * Determine the default object id to relate to a field.
  *
  * @param array $field The field object.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function relate_field($field)
 {
     global $wpdb;
     if (!isset($field['relate']) || !isset($field['relate']['scope'])) {
         return $field;
     }
     // Get the id of what we are relating the field to
     if (!isset($field['relate']['field'])) {
         switch ($field['relate']['scope']) {
             case 'post':
             case 'post_meta':
                 $field['relate_to'] = piklist_admin::is_post();
                 break;
             case 'user':
             case 'user_meta':
                 $field['relate_to'] = piklist_admin::is_user();
                 break;
             case 'comment':
             case 'comment_meta':
                 $field['relate_to'] = piklist_admin::is_comment();
                 break;
         }
     }
     if (in_array($field['scope'], array('post_meta', 'user_meta', 'comment_meta'))) {
         $field['value'] = self::get_object_ids($field['object_id'], $field['scope'], $field['relate']['scope']);
     } else {
         $field['object_id'] = self::get_object_ids($field['object_id'], $field['scope'], $field['relate']['scope']);
     }
     return $field;
 }