private function onMove($modulename) { $modules = GWF_Module::getModules(); usort($modules, array(__CLASS__, 'sortByPriority')); $mode = $this->getMoveMode(); if (false === ($current = GWF_Module::getModule($modulename))) { return $this->module->error('err_mod_not_installed'); } $order = array('first' => false, 'prev' => false, 'curr' => $current, 'next' => false, 'last' => false); $curr = $current; $prev = $current; $realprev = false; $priority = 1; foreach ($modules as $m) { if ($order['first'] === false) { $order['first'] = $m; } $prev = $curr; $curr = $m; if ($curr->getName() == $modulename) { $realprev = $prev; } if ($prev->getName() === $modulename) { $order['next'] = $m; } $m->saveVar('module_priority', $priority++); } $order['prev'] = $prev; $order['last'] = $curr; switch ($mode) { case self::$MOVE_UP: $exchange = $order['prev']; break; case self::$MOVE_DOWN: $exchange = $order['next']; break; case self::$MOVE_FIRST: $exchange = $order['first']; break; case self::$MOVE_LAST: $exchange = $order['last']; break; default: die('F****D UP!'); } $this->switchPriority($current, $exchange); $_GET['by'] = 'module_priority'; $_GET['dir'] = 'ASC'; return $this->module->requestMethodB('Modules'); }