/**
  * get active module by installer
  * @param $module
  * @param $default_module if specific module not exists, get default other module
  */
 private function get_active_module_from_installer($module = '', $default_module = 'hw-importer')
 {
     if (!$module) {
         $module = hw__req('module');
     }
     if (!count(HW_TGM_Module_Activation::get_register_modules(array('active' => 1, 'slug' => $module)))) {
         $module = $default_module;
     }
     if ($module) {
         return HW_Module_Settings_page::get_modules($module);
     }
 }
 /**
  * desploy modules with positions
  */
 private function desploy_modules_position()
 {
     if (is_admin()) {
         return;
     }
     $modules_positions = $this->get_field_value('modules_position');
     if (is_array($modules_positions)) {
         foreach ($modules_positions as $module => $item) {
             //if($item['condition'] == 0) continue;
             $match = 1;
             //check condition before module can display
             $dynamic_settings = HW_Condition::get_active_conditions_settings();
             $condition = $item['condition'];
             //condition id
             if ($condition) {
                 if (!isset($dynamic_settings[$condition])) {
                     continue;
                 }
                 $setting = array($condition => $dynamic_settings[$condition]);
                 $setting_conditions = HW__Template_Condition::parse_template_conditions($setting);
                 #_print($setting_conditions);
                 foreach ($setting_conditions as $pages_condition) {
                     //and, or condition
                     if (isset($pages_condition) && is_array($pages_condition)) {
                         //get template alternate with AND relation
                         foreach ($pages_condition as $temp => $meet_condition) {
                             if ($meet_condition['result']) {
                                 $match = 1;
                                 //break;  //first occurence
                             } else {
                                 $match = 0;
                             }
                         }
                     }
                 }
             }
             if ($match) {
                 //add action for module position
                 $module_inst = HW_Module_Settings_page::get_modules($module);
                 if (!empty($module_inst)) {
                     HW_Module_Positions::add_position_hook($item['position'], $module_inst->get_module_content_cb());
                 }
             }
         }
     }
 }
 /**
  * setup module data
  * @param $module
  */
 protected function setup_module_data($module)
 {
     $module_inst = HW_Module_Settings_page::get_modules($module);
     #(new HW_Module())->get_config();
     if (!$module_inst) {
         //module not found
         $this->command_log(sprintf('Module %s chưa được kích hoạt.', $module));
         return;
     }
     #$module_config = $module_inst->get_config();
     $wxr_files = $module_inst->get_module_wxr_files();
     if (!isset($wxr_files['export'])) {
         return;
     }
     //config file not exists
     $file = $wxr_files['export'];
     $module_inst->setup_demo($file);
     $this->command_log('Cài đặt module ' . $module . '.');
 }
 /**
  * get current module for this cli
  */
 protected function get_current_module()
 {
     if (empty($this->module)) {
         $class = get_called_class();
         $reflector = new ReflectionClass($class);
         $file = $reflector->getFileName();
         $split = explode(DIRECTORY_SEPARATOR, $file);
         $file = end($split);
         preg_match('#^class-cli-(.+)\\.php$#', trim($file), $arr);
         if (count($arr) > 1) {
             $module = $arr[1];
             $this->module = HW_Module_Settings_page::get_modules($module);
         }
     }
     return $this->module;
 }
 /**
  * get current module info
  * @param $item
  * @return array
  */
 public function get_module_info($item = '')
 {
     static $data;
     $module_slug = preg_replace('#.+?\\/#', '', str_replace('\\', '/', trim($this->_apply_plugin, '\\/')));
     if (!isset($data[$module_slug])) {
         $module = HW_Module_Settings_page::get_modules($module_slug);
         $data[$module_slug] = array('slug' => $module_slug);
         if ($module) {
             $data[$module_slug]['name'] = $module->get_module_info('name');
             $data[$module_slug]['object'] = $module;
         }
     }
     return $item ? isset($data[$module_slug][$item]) ? $data[$module_slug][$item] : '' : $data[$module_slug];
 }
 /**
  * get module instance by slug or class name
  * @param $name
  * @param bool $actived
  * @return array|bool
  */
 public static function get_module_by_name($name, $actived = false)
 {
     $module = HW_Module_Settings_page::get_modules($name);
     if ($actived == false || $actived && self::is_active($name)) {
         return $module;
     }
     return false;
 }