/** * @hook plugins_loaded */ private function add_screen_options() { HW_HOANGWEB::load_class('HW_Screen_Option'); if (class_exists('HW_HELP', false)) { $page_slug = HW_HELP::load_settings_page_hook_slug(self::PAGE_SLUG, ''); $screen = HW_Screen_Option::get_instance('hw_module_setting_page', $page_slug); #HW_Screen_Option::get('modules-manager')->get_option('xx'); $screen->add_options(array('per_page' => array('label' => 'Số lượng/trang', 'default' => '10'))); $screen->addition_text('Dành cho trang cấu hình Module Hoangweb.'); } }
/** * Prepare the table with different parameters, pagination, columns and table elements */ function prepare_items() { $screen = get_current_screen(); /* -- Preparing your query -- */ //AWC_WidgetFeature_saveconfig::get_widgets_settings(); $query = "SELECT * FROM " . HW_SKIN::SKINS_SETTINGS_DB; #$per_page = $this->get_items_per_page('per_page', 5); $per_page = HW_Screen_Option::get('hw_module_setting_page')->get_option('per_page', 5); if (!isset($_GET['orderby'])) { $_GET['orderby'] = 'id'; } //if no specific order with column, get id column $query = $this->get_items_sql_orderby($query, 'DESC'); $query = $this->get_items_sql_pagination($query, $per_page); $this->_prepare_items($query); }
/** * Gathers and renames all of our plugin information to be used by * WP_List_Table to create our table. * * @since 2.2.0 * @param $status * @param $search * * @return array $table_data Information for use in table. */ protected function _gather_plugin_data($status = 'all', $search = '') { // Load thickbox for plugin links. #HW_TGM_Module_Activation::$instance->admin_init(); #HW_TGM_Module_Activation::$instance->thickbox(); $plugins_list = HW_TGM_Module_Activation::$instance->plugins; //plugins list // Prep variables for use and grab list of all installed plugins. $table_data = array(); $i = 0; #$installed_plugins = get_plugins(); $installed_plugins = hw_get_modules(); //by hoang //pagination $per_page = HW_Screen_Option::get('modules_manager')->get_option('per_page', 5); #_print($per_page); if (!is_numeric($per_page)) { $per_page = 20; } $current_page = $this->get_pagenum(); $total_items = count($plugins_list); // only ncessary because we have sample data $plugins_list = array_slice($plugins_list, ($current_page - 1) * $per_page, $per_page); $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page)); foreach ($plugins_list as $plugin) { //search module if ($search && !HW_TGM_Module_Activation::match_module_search($plugin, $search)) { continue; } //check status $is_active = hw_is_active_module($plugin['file_path']); if ($status == 'inactive' && $is_active || $status == 'active' && !$is_active) { continue; // No need to display plugins if they are installed and activated. } $table_data[$i] = $plugin; //copy all information of the module $table_data[$i]['sanitized_plugin'] = $plugin['name']; $table_data[$i]['slug'] = $this->_get_plugin_data_from_name($plugin['name']); $external_url = $this->_get_plugin_data_from_name($plugin['name'], 'external_url'); $source = $this->_get_plugin_data_from_name($plugin['name'], 'source'); if ($external_url && preg_match('|^http(s)?://|', $external_url)) { $table_data[$i]['plugin'] = '<strong><a href="' . esc_url($external_url) . '" title="' . esc_attr($plugin['name']) . '" target="_blank">' . $plugin['name'] . '</a></strong>'; } elseif (!$source || preg_match('|^http://hoangweb.vn/modules/|', $source)) { $url = add_query_arg(array('tab' => 'plugin-information', 'plugin' => urlencode($this->_get_plugin_data_from_name($plugin['name'])), 'TB_iframe' => 'true', 'width' => '640', 'height' => '500'), network_admin_url('plugin-install.php')); #$table_data[$i]['plugin'] = '<strong><a href="' . esc_url( $url ) . '" class="thickbox" title="' . esc_attr( $plugin['name'] ) . '">' . $plugin['name'] . '</a></strong>'; $table_data[$i]['plugin'] = "<strong>{$plugin['name']}</strong>"; } else { $table_data[$i]['plugin'] = '<strong>' . $plugin['name'] . '</strong>'; // No hyperlink. } if (isset($table_data[$i]['plugin']) && (array) $table_data[$i]['plugin']) { $plugin['name'] = $table_data[$i]['plugin']; } if (!empty($plugin['source'])) { // The plugin must be from a private repository. if (preg_match('|^http(s)?://|', $plugin['source'])) { $table_data[$i]['source'] = __('Private Repository', 'tgmpa'); // The plugin is pre-packaged with the theme. } else { $table_data[$i]['source'] = __('Pre-Packaged', 'tgmpa'); } } $table_data[$i]['source'] = 'Hoangweb'; if (isset($plugin['desc'])) { $table_data[$i]['desc'] = $plugin['desc']; } // The plugin is from the WordPress repository. /*else { $table_data[$i]['source'] = __( 'WordPress Repository', 'tgmpa' ); }*/ $table_data[$i]['type'] = isset($plugin['required']) && $plugin['required'] ? __('Required', 'tgmpa') : __('Recommended', 'tgmpa'); $status_class = array(); if (isset($installed_plugins[$plugin['file_path']]) && isset($table_data[$i]['force_activation']) && $table_data[$i]['force_activation'] == true) { $status_class[] = 'hw-module-force-activation'; } if (!isset($installed_plugins[$plugin['file_path']])) { $status_class[] = 'hw-module-inactive'; $table_data[$i]['status'] = sprintf('%1$s', __('<span class="' . join(' ', $status_class) . '">Not Installed</span>', 'tgmpa')); } else { $status_class[] = 'hw-module-active'; $table_data[$i]['status'] = sprintf('%1$s', __('<span style="color:blue" class="' . join(' ', $status_class) . '"><strong>Installed</strong></span>', 'tgmpa')); } $table_data[$i]['file_path'] = $plugin['file_path']; $table_data[$i]['url'] = isset($plugin['source']) ? $plugin['source'] : 'repo'; $i++; } // Sort plugins by Required/Recommended type and by alphabetical listing within each type. $resort = array(); $req = array(); $rec = array(); // Grab all the plugin types. foreach ($table_data as $plugin) { $resort[] = $plugin['type']; } // Sort each plugin by type. foreach ($resort as $type) { if ('Required' == $type) { $req[] = $type; } else { $rec[] = $type; } } // Sort alphabetically each plugin type array, merge them and then sort in reverse (lists Required plugins first). sort($req); sort($rec); array_merge($resort, $req, $rec); array_multisort($resort, SORT_DESC, $table_data); return $table_data; }
/** * Singleton instance * @param $page_slug * @param $options */ public static function get_instance($options = null, $page_slug = '') { if (!isset(self::$instance)) { self::$instance = new self($options, $page_slug); } return self::$instance; }