touch($prefs['mods_dir'] . "/Packages/00_list." . urlencode($prefs['mods_server']) . ".txt"); $_REQUEST['reload'] = true; } if (isset($_REQUEST['reload'])) { $modslib->refresh_remote($prefs['mods_server'] . "/Packages/00_list.public.txt", $prefs['mods_dir'] . "/Packages/00_list." . urlencode($prefs['mods_server']) . ".txt"); } } if (isset($_REQUEST['package'])) { $packtype = substr($_REQUEST['package'], 0, strpos($_REQUEST['package'], '-')); $package = substr($_REQUEST['package'], strpos($_REQUEST['package'], '-') + 1); $smarty->assign('packtype', $packtype); $smarty->assign('package', $package); } if (isset($_REQUEST['action']) and isset($package) and $iswritable) { if ($_REQUEST['action'] == 'configuration') { $mod = new TikiModInfo($packtype, $package); $mod->writeconf($prefs['mods_dir'], $_REQUEST['conf']); $_REQUEST['action'] = 'upgrade'; } if ($_REQUEST['action'] == 'remove') { $deps = $modslib->find_deps_remove($prefs['mods_dir'], $prefs['mods_server'], array($packtype . '-' . $package)); $smarty->assign('installask', $deps); } elseif (($_REQUEST['action'] == 'install') || ($_REQUEST['action'] == 'upgrade')) { $deps = $modslib->find_deps($prefs['mods_dir'], $prefs['mods_server'], array($packtype . '-' . $package)); $smarty->assign('installask', $deps); } } elseif (isset($_REQUEST['button-check'])) { $deps = $modslib->find_deps($prefs['mods_dir'], $prefs['mods_server'], $_REQUEST['install-wants']); $smarty->assign('installask', $deps); } elseif (isset($_REQUEST['button-install'])) { $deps = $modslib->find_deps($prefs['mods_dir'], $prefs['mods_server'], $_REQUEST['install-wants']);
/** * @param $path * @param $mod * @param bool $upgrade * @return bool */ function remove($path, $mod, $upgrade = false) { $this->feedback_info("removing " . $mod->modname . " (" . $mod->revision . ") ..."); $file = $path . '/Installed/' . $mod->modname . '.info.txt'; if (is_file($file)) { $info = new TikiModInfo($mod->modname); $err = $info->readinfo($file); if ($err !== false) { $this->feedback_error($err); return false; } if (!$upgrade and is_array($info->sql_remove) and count($info->sql_remove)) { global $tikilib; foreach ($info->sql_remove as $sql) { $tikilib->query($sql, array()); } } if (isset($info->files) and count($info->files)) { foreach ($info->files as $f) { if (!@unlink($f[1])) { $this->feedback_warning(sprintf(tra("%s impossible to remove"), $f[1])); } if (is_file($f[1] . '.orig.' . $info->revision)) { rename($f[1] . '.orig.' . $info->revision, $f[1]); } } } unlink($file); $this->rebuild_list($path . '/Installed/'); if (is_file($path . '/Installed/' . $info->type . '-' . $info->name . '.conf.txt')) { unlink($path . '/Installed/' . $info->type . '-' . $info->name . '.conf.txt'); } return $info->revision; } else { $this->feedback_warning("'{$file}' was not found for removing"); } }