public function __construct($args)
 {
     extract($args);
     if ($slug) {
         $plural = inflector()->titleize($plural ? $plural : inflector()->pluralize($slug));
         $name = inflector()->titleize($name ? $name : inflector()->humanize($slug));
         $menu_name = $menu_name ? inflector()->titleize($menu_name) : $plural;
         $all_items = $all_items ? inflector()->titleize($all_items) : 'All ' . $plural;
         $labels = array('name' => _x($plural, 'post type general name', CREATIVE_LITTLE_DOMAIN), 'singular_name' => _x($name, 'post type singular name', CREATIVE_LITTLE_DOMAIN), 'menu_name' => _x($menu_name, 'admin menu', CREATIVE_LITTLE_DOMAIN), 'name_admin_bar' => _x($name, 'add new on admin bar', CREATIVE_LITTLE_DOMAIN), 'add_new' => _x('Add New', $slug, CREATIVE_LITTLE_DOMAIN), 'add_new_item' => __('Add New ' . $name, CREATIVE_LITTLE_DOMAIN), 'new_item' => __('New ' . $name, CREATIVE_LITTLE_DOMAIN), 'edit_item' => __('Edit ' . $name, CREATIVE_LITTLE_DOMAIN), 'view_item' => __('View ' . $name, CREATIVE_LITTLE_DOMAIN), 'all_items' => __($all_items, CREATIVE_LITTLE_DOMAIN), 'search_items' => __('Search ' . $plural, CREATIVE_LITTLE_DOMAIN), 'parent_item_colon' => __('Parent ' . $plural . ':', CREATIVE_LITTLE_DOMAIN), 'not_found' => __('No ' . strtolower($plural) . ' found.', CREATIVE_LITTLE_DOMAIN), 'not_found_in_trash' => __('No ' . strtolower($plural) . ' found in Trash.', CREATIVE_LITTLE_DOMAIN));
         $args = array('labels' => $labels, 'public' => $public, 'publicly_queryable' => $publicly_queryable, 'show_ui' => true, 'show_in_menu' => $show_in_menu, 'query_var' => true, 'rewrite' => $rewrite && $rewrite !== true ? $rewrite : array('slug' => inflector()->dasherize(strtolower($slug))), 'capability_type' => 'post', 'has_archive' => $has_archive ? strtolower($plural) : false, 'menu_icon' => $icon, 'hierarchical' => $hierarchical, 'menu_position' => null, 'supports' => $supports);
         register_post_type($slug, $args);
         if (method_exists($this, 'save_' . $slug)) {
             add_action('save_post', array($this, 'save_' . $slug));
         }
         if ($row_actions) {
             $actionType = $hierarchical ? 'page' : 'post';
             add_filter($actionType . '_row_actions', function ($actions, $post) {
                 if ($post->post_type == $slug) {
                     foreach ($row_actions as $action_key => $action) {
                         $actions[$action_key] = '<a href="' . admin_url('post.php?post=' . $post->ID . '&action=' . $action_key) . '">' . $action['name'] . '</a>';
                     }
                 }
                 return $actions;
             }, 10, 2);
             add_action('admin_init', function () {
                 if (isset($_REQUEST['post']) && isset($_REQUEST['action']) && isset($row_actions[$_REQUEST['action']])) {
                     if (isset($row_actions[$_REQUEST['action']]['callback']) && $row_actions[$_REQUEST['action']]['callback'] && method_exists($this, $row_actions[$_REQUEST['action']]['callback'])) {
                         call_user_func(array(__CLASS__, $row_actions[$_REQUEST['action']]['callback']));
                     }
                 }
             });
         }
     }
 }
 public function action($controller, $action = '', $id = '')
 {
     if (empty($controller)) {
         wp_send_json_error("Controller is not set");
     }
     if (empty($action)) {
         $action = $this->http->method() == 'POST' ? 'save' : 'get';
     }
     $singleController = inflector()->camelize(inflector()->singularize($controller) . '_controller');
     $pluralController = inflector()->camelize(inflector()->pluralize($controller) . '_controller');
     if (!class_exists($class = $this->app->getControllerName($singleController))) {
         if (!class_exists($class = $this->app->getControllerName($pluralController))) {
             wp_send_json_error("Controllers {$singleController} and {$pluralController} do not exist");
         } else {
             $controller = $pluralController;
         }
     } else {
         $controller = $singleController;
     }
     if (!method_exists($class, $action)) {
         wp_send_json_error("Controller {$controller} does not have method {$action}", 400);
     }
     $this->app->call(array($this->app->make($class), 'beforeFilter'));
     $this->app->call(array($this->app->make($class), $action), compact('id'));
 }
 public function __construct()
 {
     if ($this->slug) {
         $plural = inflector()->titleize($this->plural ? $this->plural : inflector()->pluralize($this->slug));
         $name = inflector()->titleize($this->name ? $this->name : inflector()->humanize($this->slug));
         register_taxonomy($this->slug, $this->post_types, array('label' => __($name), 'hierarchical' => $this->hierarchical, 'labels' => array('name' => _x($plural, 'wpkit'), 'singular_name' => _x($name, 'wpkit'), 'search_items' => __('Search ' . $plural), 'all_items' => __('All ' . $plural), 'parent_item' => __('Parent ' . $name), 'parent_item_colon' => __('Parent ' . $name . ':'), 'edit_item' => __('Edit ' . $name), 'update_item' => __('Update ' . $name), 'add_new_item' => __('Add New ' . $name), 'new_item_name' => __('New ' . $name . ' Name'), 'menu_name' => __($plural)), 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => $this->rewrite && $this->rewrite !== true ? $this->rewrite : array('slug' => inflector()->dasherize(strtolower($this->slug)))));
         if ($this->belongs_to) {
             add_action('admin_menu', function () use($plural) {
                 add_submenu_page('edit.php?post_type=' . $this->belongs_to, $plural, $plural, 'edit_others_posts', 'edit-tags.php?taxonomy=' . $this->slug . '&post_type=' . $this->belongs_to);
             });
         }
     }
 }
 public function __construct($args)
 {
     extract($args);
     if ($slug) {
         $plural = inflector()->titleize($plural ? $plural : inflector()->pluralize($slug));
         $name = inflector()->titleize($name ? $name : inflector()->humanize($slug));
         $labels = array('name' => _x($plural, CREATIVE_LITTLE_DOMAIN), 'singular_name' => _x($name, CREATIVE_LITTLE_DOMAIN), 'search_items' => __('Search ' . $plural), 'all_items' => __('All ' . $plural), 'parent_item' => __('Parent ' . $name), 'parent_item_colon' => __('Parent ' . $name . ':'), 'edit_item' => __('Edit ' . $name), 'update_item' => __('Update ' . $name), 'add_new_item' => __('Add New ' . $name), 'new_item_name' => __('New ' . $name . ' Name'), 'menu_name' => __($plural));
         $args = array('label' => __($name), 'hierarchical' => $hierarchical, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => $rewrite ? $rewrite : array('slug' => $slug));
         register_taxonomy($slug, $post_types, $args);
         if ($belongs_to) {
             add_action('admin_menu', function () {
                 add_submenu_page('edit.php?post_type=' . $belongs_to, $plural, $plural, 'edit_others_posts', 'edit-tags.php?taxonomy=' . $slug . '&post_type=' . $belongs_to);
             });
         }
         flush_rewrite_rules();
     }
 }
 public function addIntegration($integration, $settings)
 {
     if ($this->inWp()) {
         if (!$this->hasIntegration($integration)) {
             $core_integration_class = 'WPKit\\Integrations\\' . inflector()->camelize($integration);
             $integration_class = $this->getNamespace() . '\\Integrations\\' . inflector()->camelize($integration);
             if (class_exists($core_integration_class)) {
                 $this->integrations[$integration] = $this->make($core_integration_class, compact('settings'));
             } else {
                 if (class_exists($integration_class)) {
                     $this->integrations[$integration] = $this->make($integration_class, compact('settings'));
                 }
             }
         }
     } else {
         // admin error
     }
 }
 public static function add_integration($integration, $settings)
 {
     if (!self::has_integration($integration)) {
         $core_integration_class = 'WPKit\\Integrations\\' . inflector()->camelize($integration);
         $integration_class = 'App\\Integrations\\' . inflector()->camelize($integration);
         if (class_exists($core_integration_class)) {
             self::$integrations[$integration] = self::make($core_integration_class, $settings);
         } else {
             if (class_exists($integration_class)) {
                 self::$integrations[$integration] = self::make($integration_class, $settings);
             }
         }
     }
 }