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