Example #1
0
 /**
  * Get all modules method
  *
  * @param  \Phire\Project $project
  * @return void
  */
 public function getModules(\Phire\Project $project = null)
 {
     $modules = Table\Extensions::findAll('id ASC', array('type' => 1));
     $moduleRows = $modules->rows;
     $moduleDir1 = new Dir($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/extensions/modules', false, false, false);
     $moduleDir2 = new Dir(__DIR__ . '/../../../../../module', false, false, false);
     $dirs = array_merge($moduleDir1->getFiles(), $moduleDir2->getFiles());
     $moduleFiles = array();
     $formats = Archive::formats();
     foreach ($dirs as $file) {
         if (array_key_exists(substr($file, strrpos($file, '.') + 1), $formats)) {
             $moduleFiles[substr($file, 0, strpos($file, '.'))] = $file;
         }
     }
     foreach ($moduleRows as $key => $module) {
         $moduleName = $module->name;
         if (null !== $project) {
             $cfg = $project->module($module->name);
             if (null !== $cfg && null !== $cfg->module_nav) {
                 $n = !is_array($cfg->module_nav) ? $cfg->module_nav->asArray() : $cfg->module_nav;
                 $modNav = new Nav($n, array('top' => array('id' => strtolower($module->name) . '-nav', 'class' => 'module-nav')));
                 $modNav->setAcl($this->data['acl']);
                 $modNav->setRole($this->data['role']);
                 $moduleRows[$key]->module_nav = $modNav;
             }
         }
         if (isset($moduleFiles[$module->name])) {
             unset($moduleFiles[$module->name]);
         }
         // Get module info
         $assets = unserialize($module->assets);
         $moduleRows[$key]->author = '';
         $moduleRows[$key]->desc = '';
         $moduleRows[$key]->version = '';
         foreach ($assets['info'] as $k => $v) {
             if (stripos($k, 'name') !== false) {
                 $moduleRows[$key]->name = $v;
             } else {
                 if (stripos($k, 'author') !== false) {
                     $moduleRows[$key]->author = $v;
                 } else {
                     if (stripos($k, 'desc') !== false) {
                         $moduleRows[$key]->desc = $v;
                     } else {
                         if (stripos($k, 'version') !== false) {
                             $moduleRows[$key]->version = $v;
                         }
                     }
                 }
             }
         }
         $latest = '';
         $handle = @fopen('http://update.phirecms.org/modules/' . strtolower($moduleName) . '/version', 'r');
         if ($handle !== false) {
             $latest = trim(stream_get_contents($handle));
             fclose($handle);
         }
         if (version_compare($moduleRows[$key]->version, $latest) < 0 && $this->data['acl']->isAuth('Phire\\Controller\\Phire\\Config\\IndexController', 'update')) {
             $moduleRows[$key]->version .= ' (<a href="' . BASE_PATH . APP_URI . '/config/update?module=' . $moduleName . '">' . $this->i18n->__('Update to') . ' ' . $latest . '</a>?)';
         }
     }
     $this->data['modules'] = $moduleRows;
     $this->data['new'] = $moduleFiles;
 }