Example #1
0
 /**
  * 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;
 }