public static function add_dependencies_to_list($startspec, $allmods, &$deplist) { list($res, $this_file_deps) = modulerep_client::get_module_depends($startspec); if (!$res) { return array(false, $this_file_deps); } $mod = cms_utils::get_module('ModuleManager'); if (is_array($this_file_deps)) { foreach ($this_file_deps as $this_dep) { $found = false; foreach ($allmods[1] as $tm) { if ($tm['name'] == $this_dep['name'] && version_compare($tm['version'], $this_dep['version']) >= 0) { // found the module - add to list; we'll de-dupe later $found = true; $newDep = array('filename' => $tm['filename'], 'name' => $tm['name'], 'version' => $tm['version'], 'by' => $startspec, 'size' => $tm['size']); $deplist[] = $newDep; self::add_dependencies_to_list($tm['filename'], $allmods, $deplist); if (!$mod->GetPreference('latestdepends', 1)) { break; } } } if (!$found) { // check if it's an installed module (maybe it's a core module that isn't distributed) $tmp = array($this_dep); $res = self::find_unfulfilled_dependencies($tmp); if (!$res) { return array(false, $mod->Lang('error_unsatisfiable_dependency', array($this_dep['name'], $this_dep['version'], self::file_to_module_name($allmods[1], $startspec)))); } } } } return array(true, ''); }
if (!isset($params['version'])) { $this->_DisplayErrorPage($id, $params, $returnid, $this->Lang('error_insufficientparams')); return; } $version = $params['version']; $url = $this->GetPreference('module_repository'); if ($url == '') { $this->_DisplayErrorPage($id, $params, $returnid, $this->Lang('error_norepositoryurl')); return; } if (!isset($params['filename'])) { $this->_DisplayErrorPage($id, $params, $returnid, $this->Lang('error_nofilename')); return; } $xmlfile = $params['filename']; $depends = modulerep_client::get_module_depends($xmlfile); if ($depends[0] == false) { $this->_DisplayErrorPage($id, $params, $returnid, $depends[1]); return; } $this->smarty->assign('title', $this->Lang('dependstxt')); $this->smarty->assign('moduletext', $this->Lang('nametext')); $this->smarty->assign('vertext', $this->Lang('vertext')); $this->smarty->assign('xmltext', $this->Lang('xmltext')); $this->smarty->assign('modulename', $name); $this->smarty->assign('moduleversion', $version); $this->smarty->assign('xmlfile', $xmlfile); $this->smarty->assign('link_back', $this->CreateLink($id, 'defaultadmin', $returnid, $this->Lang('back_to_module_manager'))); $txt = ''; if (is_array($depends[1])) { $txt = '<ul>';