/**
  * Read modules list from cache or collect
  * from modules directory is not caches yet.
  * 
  * @return void
  */
 public function readModulesList()
 {
     $cachedModulesList = get_option($this->modulesListOptionName);
     // Cache modules list only if not cached before.
     // Empty array is another case and it mean
     // that this method is never called before.
     if (!is_array($cachedModulesList)) {
         cssJSToolbox::printDebugMessage("Caching Modules List");
         $cachedModulesList = array();
         $modulesDirPath = CJTOOLBOX_PATH . "/{$this->directory}";
         $modulesIterator = opendir($modulesDirPath);
         // Get all modules.
         while ($moduleDir = readdir($modulesIterator)) {
             // Build module main file path.
             $moduleFileName = "{$moduleDir}.php";
             $modulePath = "{$modulesDirPath}/{$moduleDir}";
             if ($moduleDir != '.' && $moduleDir != '..' & is_dir($modulePath)) {
                 $moduleFilePath = "{$modulePath}/{$moduleFileName}";
                 $module = array('id' => $moduleDir, 'path' => $modulePath, 'url' => CJTOOLBOX_URL . "/modules/{$moduleDir}", 'file' => $moduleFilePath, 'status' => 'active');
                 $cachedModulesList[$moduleDir] = $module;
             }
         }
         closedir($modulesIterator);
         // Update database modules list.
         update_option($this->modulesListOptionName, $cachedModulesList);
     }
     $this->modulesList = $cachedModulesList;
 }