public static function register_workflows_callback($arguments) { global $pagenow; extract($arguments); $data = get_file_data($path . '/parts/' . $folder . '/' . $part, apply_filters('piklist_get_file_data', array('name' => 'Title', 'description' => 'Description', 'capability' => 'Capability', 'order' => 'Order', 'flow' => 'Flow', 'page' => 'Page', 'post_type' => 'Post Type', 'taxonomy' => 'Taxonomy', 'role' => 'Role', 'redirect' => 'Redirect', 'header' => 'Header', 'disable' => 'Disable', 'position' => 'Position', 'default' => 'Default'), 'workflows')); $data = apply_filters('piklist_add_part', $data, 'workflows'); if (!isset($data['flow'])) { return null; } if ((!isset($data['capability']) || empty($data['capability']) || $data['capability'] && current_user_can(strtolower($data['capability']))) && (!isset($data['role']) || empty($data['role']) || piklist_user::current_user_role($data['role']))) { if (!empty($data['page'])) { $data['page'] = strstr($data['page'], ',') ? piklist::explode(',', $data['page']) : array($data['page']); } $data['page_slug'] = piklist::slug($data['name']); $data['flow_slug'] = piklist::slug($data['flow']); if (!$data['header']) { $data = self::is_active($data); } if (in_array($pagenow, array('admin.php', 'users.php', 'plugins.php', 'options-general.php')) && $data['position'] == 'title') { $data['position'] = 'header'; } $workflow = array('config' => $data, 'part' => $path . '/parts/' . $folder . '/' . $part); if (!isset(self::$workflows[$data['flow']])) { self::$workflows[$data['flow']] = array(); } if ($data['header'] == 'true') { array_unshift(self::$workflows[$data['flow']], $workflow); } elseif (!empty($data['order'])) { self::$workflows[$data['flow']][$data['order']] = $workflow; } else { array_push(self::$workflows[$data['flow']], $workflow); } } }
/** * get_file_data * Get file data and try and cast the values. * * @param string $file File path to read. * @param array $data Attributes to fetch. * * @access public * @static * @since 1.0 */ public static function get_file_data($file, $data) { $data = get_file_data($file, $data); array_walk_recursive($data, array('piklist', 'array_values_cast')); foreach ($data as $parameter => &$value) { switch ($parameter) { case 'capability': case 'id': case 'page': case 'post_type': case 'role': case 'status': case 'taxonomy': case 'post_format': $value = piklist::explode(',', $value, 'strtolower'); $value = array_filter($value); $value = empty($value) ? null : $value; break; case 'template': $value = piklist::explode(',', $value, 'strtolower'); $value = str_ireplace('.php', '', $value); $value = array_filter($value); $value = empty($value) ? null : $value; break; case 'flow': case 'flow_page': case 'tab': case 'sub_tab': $value = piklist::explode(',', $value, array('piklist', 'slug')); $value = array_filter($value); $value = empty($value) ? null : $value; break; default: /** * piklist_part_data_parameter * Add custom part parameters to check. * * @param $value Value to compare. * @param $parameter Parameter to check. * * @since 1.0 */ $value = apply_filters('piklist_part_data_parameter', $value, $parameter); break; } } return $data; }