Exemple #1
0
 public static function find($path, $regexp = null)
 {
     $dirs = self::list_dirs($path);
     $files = array();
     foreach ($dirs as $dir) {
         \System\Directory::find_all_files($dir, $files, $regexp);
     }
     return $files;
 }
Exemple #2
0
 /** Get list of available files from user input
  * @param string $type
  * @param list   $modules
  * @return array
  */
 public function get_file_list($modules)
 {
     $found = array();
     $missing = array();
     try {
         $use_cache = \System\Settings::get('cache', 'resources');
     } catch (\System\Error\Config $e) {
         $use_cache = false;
     }
     if ($use_cache) {
         $dirs = array(BASE_DIR . $this::DIR_CACHE);
     } else {
         if ($this->src == 'static') {
             $src = $this::DIR_STATIC;
         } else {
             $src = $this::DIR_MEDIA;
         }
         $dirs = \System\Composer::list_dirs($src);
     }
     foreach ($modules as $module) {
         $mod_found = false;
         foreach ($dirs as $dir) {
             foreach ($this::$postfixes as $postfix) {
                 $path = $dir . DIRECTORY_SEPARATOR . $module;
                 if (file_exists($p = $path . '.list')) {
                     $list = $this->get_file_list(array_map('trim', array_filter(explode("\n", \System\File::read($p)))));
                     $found = array_merge($found, $list[self::KEY_FOUND]);
                     $missing = array_merge($missing, $list[self::KEY_MISSING]);
                     $mod_found = true;
                     break;
                 } else {
                     if (is_file($p = $path) || is_file($p = $path . '.' . $postfix)) {
                         $found[] = $p;
                         $mod_found = true;
                     }
                 }
                 if (is_dir($path)) {
                     $json = null;
                     $meta = self::get_meta($path, 'bower.json');
                     if (!$meta) {
                         $meta = self::get_meta($path, 'package.json');
                     }
                     if ($meta) {
                         $files = array();
                         foreach ($meta as $file) {
                             $files[] = str_replace($dir . '/', '', $path . '/' . $file);
                         }
                         $list = $this->get_file_list($files);
                         $found = array_merge($found, $list[self::KEY_FOUND]);
                         $mod_found = true;
                         break;
                     } else {
                         $files = \System\Directory::find_all_files($path);
                         foreach ($files as $key => $tmp_file) {
                             $files[$key] = str_replace($dir . '/', '', $files[$key]);
                         }
                         $list = $this->get_file_list($files);
                         $found = array_merge($found, $list[self::KEY_FOUND]);
                         $missing = array_merge($missing, $list[self::KEY_MISSING]);
                         $mod_found = true;
                         break;
                     }
                 }
             }
             if ($mod_found) {
                 break;
             }
         }
         if (!$mod_found) {
             $missing[] = $module;
         }
     }
     $this->sum = self::get_module_sum_from_list($modules);
     return array(self::KEY_FOUND => array_unique(array_filter($found)), self::KEY_MISSING => array_unique(array_filter($missing)), self::KEY_SUM => $this->sum);
 }
Exemple #3
0
 /**
  * Get all available modules
  *
  * @param bool $with_perms
  * @return array
  */
 public static function get_all($with_perms = false)
 {
     $mods = array();
     $path = ROOT . self::DIR;
     \System\Directory::find_all_files($path, $mods, '/\\.php$/');
     sort($mods);
     foreach ($mods as &$mod) {
         $mod = array("path" => preg_replace('/\\.php$/', '', substr($mod, strlen($path) + 1)));
         if ($with_perms) {
             $mod['perms'] = \System\User\Perm::get_all()->where(array("type" => 'module', "trigger" => $mod['path']))->fetch();
         }
     }
     return $mods;
 }
Exemple #4
0
 /** Load all classes inside directory
  * @param string $dir
  * @return void
  */
 public static function load_dir($dir)
 {
     $files = \System\Directory::find_all_files($dir);
     foreach ($files as $file) {
         $fname = str_replace($dir . '/', '', $file);
         $cname = self::get_class_from_file($fname);
         if (!class_exists($cname, false) && !interface_exists($cname, false)) {
             require_once $file;
         }
     }
 }