/** * 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; }
/** * 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); } } } }
/** * 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; }