Ejemplo n.º 1
0
 public static function load()
 {
     self::$data['options'] = self::_options();
     $temp = get_transient('kcsb');
     if ($temp) {
         self::$item_to_edit = $temp;
         delete_transient('kcsb');
     }
     require_once dirname(__FILE__) . '/builder-table.php';
     $table = new kcSettings_builder_table(array('plural' => 'kcsb-table', 'kcsb' => array('settings' => self::$data['kcsb']['settings'], 'options' => self::$data['options'])));
     self::$table = $table;
     $action = $table->current_action();
     if (!$action || !in_array($action, array('delete', 'edit', 'purge', 'empty', 'clone', 'activate', 'deactivate', 'export'))) {
         return;
     }
     $update = false;
     # Singular
     if (isset($_REQUEST['id']) && in_array($_REQUEST['id'], self::$data['kcsb']['settings'][$_REQUEST['id']])) {
         check_admin_referer("__kcsb__{$_REQUEST['id']}");
         $items = array($_REQUEST['id']);
     } elseif (isset($_REQUEST['ids']) && is_array($_REQUEST['ids']) && !empty($_REQUEST['ids'])) {
         check_admin_referer('bulk-kcsb-table');
         $items = $_REQUEST['ids'];
     }
     $single = count($items) < 2 ? true : false;
     switch ($action) {
         case 'activate':
             foreach ($items as $item) {
                 self::$data['kcsb']['settings'][$item]['status'] = '1';
             }
             $update = true;
             self::$update_message = $single ? __('Setting succesfully activated.', 'kc-settings') : __('Settings succesfully activated.', 'kc-settings');
             break;
         case 'deactivate':
             foreach ($items as $item) {
                 self::$data['kcsb']['settings'][$item]['status'] = '0';
             }
             $update = true;
             self::$update_message = $single ? __('Setting succesfully deactivated.', 'kc-settings') : __('Settings succesfully deactivated.', 'kc-settings');
             break;
         case 'delete':
             foreach ($items as $item) {
                 unset(self::$data['kcsb']['settings'][$item]);
             }
             $update = true;
             self::$update_message = $single ? __('Setting succesfully deleted.', 'kc-settings') : __('Settings succesfully deleted.', 'kc-settings');
             break;
         case 'empty':
             $result = 0;
             foreach ($items as $item) {
                 if (self::$data['kcsb']['settings'][$item]['type'] === 'plugin' && delete_option(self::$data['kcsb']['settings'][$item]['prefix'] . '_settings')) {
                     $result++;
                 }
             }
             if ($result) {
                 $message = $result === 1 ? __('Setting values succesfully removed from database.', 'kc-settings') : __('Settings values succesfully removed from database.', 'kc-settings');
                 kcSettings::add_notice('updated', "<strong>{$message}</strong>");
             }
             break;
         case 'clone':
             if (isset($_REQUEST['new']) && !empty($_REQUEST['new'])) {
                 $new_id = sanitize_html_class($_REQUEST['new']);
                 if ($new_id && !isset(self::$data['kcsb']['settings'][$new_id])) {
                     $new = self::$data['kcsb']['settings'][$_REQUEST['id']];
                     $new['id'] = $new_id;
                     self::$data['kcsb']['settings'][$new_id] = $new;
                     $update = true;
                     self::$update_message = __('Setting succesfully cloned.', 'kc-settings');
                 }
             }
             break;
         case 'edit':
             self::$item_to_edit = wp_parse_args(self::$data['kcsb']['settings'][$_REQUEST['id']], self::$data['defaults']);
             break;
         case 'export':
             if (isset($_REQUEST['type']) && isset(self::$data['kcsb']['items'][$_REQUEST['type']][$_REQUEST['id']])) {
                 self::$item_to_export = self::_exporter($_REQUEST['type'], self::$data['kcsb']['items'][$_REQUEST['type']][$_REQUEST['id']]);
             }
             break;
     }
     if ($update) {
         update_option('kcsb', self::$data['kcsb']['settings']);
     }
 }