/** * list modules that has permission * * @return mixed */ public function listModulesWithPermission() { if (is_array($this->module_paths) && !empty($this->module_paths)) { $output = array(); $i = 0; // loop module paths foreach ($this->module_paths as $module_path) { $config['basedir'] = $module_path; $file_area = \File::forge($config); unset($config); $files = \File::read_dir($module_path, 1, array('!^\\.'), $file_area); unset($file_area); foreach ($files as $file => $subs) { // remove back slash trail. $file = mb_substr($file, 0, mb_strlen($file) - 1); if (is_dir($module_path . $file)) { if (file_exists($module_path . $file . DS . 'classes' . DS . $file . 'admin.php') && is_file($module_path . $file . DS . 'classes' . DS . $file . 'admin.php')) { $class_name_with_namespace = '\\' . ucfirst($file) . '\\' . ucfirst($file) . 'Admin'; // load module to check class exists, method exists. \Module::load($file); if (class_exists($class_name_with_namespace)) { if (method_exists($class_name_with_namespace, '_define_permission')) { // get module name. $info = $this->readModuleMetadata($module_path . $file . DS . $file . '_module.php'); if ($info['name'] == null) { $output[$i]['module_name'] = $file; $output[$i]['module_system_name'] = $file; } else { $output[$i]['module_name'] = $info['name']; $output[$i]['module_system_name'] = $file; } $i++; } } } // endif file exists. } // endif is dir } // endforaech; unset($class_name_with_namespace, $file, $files, $subs); } // endforaech; unset($module_path); return $output; } return false; }