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, '');
 }
Пример #2
0
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>';