/** * 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; }