public static function rpc_post_install(Context $ctx) { $status = array(); $enabled = (array) $ctx->post('modules'); // Загружаем отсутствующие модули. foreach (modman::getAllModules() as $name => $info) { if (in_array($name, $enabled) and !modman::isInstalled($name)) { if (!modman::install($name)) { $status[$name] = 'failed'; } else { $status[$name] = 'installed'; } } } $ctx->config->modules = $enabled; $ctx->config->save(); $next = new url($ctx->get('destination', '?q=admin')); $next->setarg('status', $status); self::rpc_rebuild($ctx); // Обновляем базу модулей, чтобы выбросить удалённые локальные. modman::updateDB(); return new Redirect($next->string()); }
public static function on_get_remove(Context $ctx) { $ctx->theme = os::path('lib', 'modules', 'modman', 'template.xsl'); if (!count($modules = modman::getAllModules())) { modman::updateDB(); $modules = modman::getAllModules(); } // Удаляем из списка обязательные модули: их нельзя отключать. // Это, за одно, позволит дробить модули без захламления интерфейса // и смущения пользователя. foreach ($modules as $k => $v) { if (empty($v['installed']) or 'required' == @$v['priority']) { unset($modules[$k]); } } return self::getXML2($ctx, $modules, array('mode' => 'remove', 'title' => t('Удаление модулей'))); }