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);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }