checkApiConfigure(); add_action('aeidn_print_api_setting_page', [$this, 'printApiAccountSettingPage'], 10, 1); add_action('aeidn_print_api_setting_page', [$this, 'printApiSettingPage'], 11, 1); } public final function init() { add_filter('aeidn_get_dashboard_columns', [$this, 'modifyColumns'], 10, 2); add_filter('aeidn_get_dashboard_sortable_columns', [$this, 'modifySortableColumns'], 10, 1); add_filter('aeidn_dashboard_column_default', [$this, 'modifyColumnData'], 10, 3); add_action('aeidn_befor_dashboard_render', [$this, 'printPageHeader'], 10, 1); add_action('aeidn_dashboard_render', [$this, 'printPage'], 10, 1); add_action('aeidn_after_dashboard_render', [$this, 'printPageFooter'], 10, 1); add_action('aeidn_print_api_setting_page', [$this, 'printApiSettingPage'], 10, 1); $this->initModule(); $this->initFilters(); $this->configureFilters(); do_action('aeidn_init_custom_filter', $this); } // should return config array!!! abstract public function getConfig(); /** * @return string */ public final function getType() { return $this->getConfigValues('type'); } /** * @param $key * @return string */ public final function getConfigValues($key) { $config = $this->getConfig(); return isset($config[$key]) ? $config[$key] : ''; } public function isInstaled() { $config = $this->getConfig(); return (is_array($config) && count($config) && isset($config['instaled']) && $config['instaled']); } public function printPage($dashboard) { $dashboard_view = aeidn_get_api_path($this) . 'layout/dashboard.php'; if (file_exists($dashboard_view)) { include_once $dashboard_view; } else { include_once AEIDN_ROOT_PATH . '/layout/dashboard.php'; } } /** * @param AEIDN_AbstractConfigurator $api */ public function printApiAccountSettingPage($api) { if ($api->getType() === $this->getType()) { $api_account = aeidn_get_account($api->getType()); if ($api_account) { $api_account->printForm(); } } } /** * @param AEIDN_AbstractConfigurator $api */ public function printApiSettingPage($api) { if ($api->getType() === $this->getType()) { $setting_view = aeidn_get_api_path($this) . 'layout/settings.php'; if (file_exists($setting_view)) { include_once $setting_view; } } } public function printPageHeader() { } public function printPageFooter() { // echo '
Module version: ' . $this->getConfigValues('version') . '
'; } public function install() { } public function uninstall() { } // configure common filters private final function initFilters() { $this->addFilter('aeidn_productId', 'aeidn_productId', 10, [ 'type' => 'edit', 'label' => 'ProductId', 'dop_row' => 'OR configure search filter', 'placeholder' => 'Please enter your productId' ]); $this->addFilter('aeidn_query', 'aeidn_query', 20, [ 'type' => 'edit', 'label' => 'Keywords', 'placeholder' => 'Please enter your Keywords' ]); $this->addFilter('price', ['aeidn_min_price', 'aeidn_max_price'], 30, [ 'type' => 'edit', 'label' => 'Price', 'aeidn_min_price' => ['label' => "from $", 'default' => '0.00'], 'aeidn_max_price' => ['label' => " to $", 'default' => '0.00'] ]); } // configure custom api filters protected function configureFilters() { } public final function addFilter($id, $name, $order = 1000, $config = array()) { $this->filter_config[$id] = array('id' => $id, 'name' => $name, 'config' => $config, 'order' => $order); } public final function removeFilter($id) { unset($this->filter_config[$id]); } public final function getFilters() { $result = array(); foreach ($this->filter_config as $id => $filter) { $result[$id] = $filter; if (isset($filter['config']['data_source']) && $filter['config']['data_source']) { if (is_array($filter['config']['data_source'])) { $result[$id]['config']['data_source'] = $filter['config']['data_source'][0]->{$filter['config']['data_source'][1]}(); } else { $result[$id]['config']['data_source'] = ${$filter['config']['data_source']}(); } } } if (!function_exists('AEIDN_AbstractConfigurator_cmp')) { function AEIDN_AbstractConfigurator_cmp($a, $b) { if ($a['order'] === $b['order']) { return 0; } return ($a['order'] < $b['order']) ? -1 : 1; } } uasort($result, 'AEIDN_AbstractConfigurator_cmp'); return $result; } // configure custom api initialization protected function initModule() { } public function modifyColumns($columns) { return $columns; } public function modifySortableColumns($columns) { $sortable_columns = $columns; if (is_array($this->getConfigValues('sort_columns'))) { foreach ($this->getConfigValues('sort_columns') as $sc) { $sortable_columns[$sc] = array($sc, false); } } return $sortable_columns; } abstract public function modifyColumnData($data, $item, $column_name); abstract public function saveSetting($data); private final function checkApiConfigure() { $config = $this->getConfig(); if (!is_array($config)) { throw new Exception('AEIDN Error: ' . get_class($this) . ' uncorect API configure! get_config() must return array'); } else if (!isset($config['type']) || !$config['type']) { throw new Exception('AEIDN Error: ' . get_class($this) . ' uncorect API configure! Config array must have not empty "type"'); } else if ($this->isInstaled()) { if (!isset($config['account_class'])) { throw new Exception('AEIDN Error: ' . get_class($this) . ' uncorect API configure! Config array must have correct "account_class"'); } else if (!isset($config['loader_class'])) { throw new Exception('AEIDN Error: ' . get_class($this) . ' uncorect API configure! Config array must have correct "loader_class"'); } } } } }