Source of file api.speedcontrol.php
Size: 5,725 Bytes - Last Modified: 2024-05-04T16:22:09+03:00
/tmp/current_snapshot/api/libs/api.speedcontrol.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | <?php /** * Speed Control Report implementation */ class SpeedControl { /** * Speed overrides database abstraction layer * * @var object */ protected $overridesDb = ''; /** * Contains users with non zero speed overrides * * @var array */ protected $overridedUsers = array(); /** * Contains all available users data as login=>userData * * @var array */ protected $allUsersData = array(); /** * Contains existing tariffs speed data as tariffName=>speeddown/speedup * * @var array */ protected $allTariffSpeeds = array(); /** * system messages helper placeholder * * @var object */ protected $messages = ''; //some predefined stuff here const DATA_SOURCE = 'userspeeds'; const URL_ME = '?module=speedcontrol'; const ROUTE_FIX = 'fix'; /** * Submit and surrender unto Caesar * What is his rightful due * Complete oppression, no catharsis * In emphatic contempt for all of life */ public function __construct() { $this->initMessages(); $this->initOverDb(); $this->loadUsersOverrides(); if (!empty($this->overridedUsers)) { $this->loadUsersData(); $this->loadTariffSpeeds(); } } /** * Initializes the messages helper. * * @return void */ protected function initMessages() { $this->messages = new UbillingMessageHelper(); } /** * Initializes the overrides database abstraction layer. * * @return void */ protected function initOverDb() { $this->overridesDb = new NyanORM(self::DATA_SOURCE); } /** * Loads all tariff speeds. * * @return void */ protected function loadTariffSpeeds() { $this->allTariffSpeeds = zb_TariffGetAllSpeeds(); } /** * Loads all user speed overrides from the database. * * @return void */ protected function loadUsersOverrides() { $query = "SELECT `login` from `userspeeds` WHERE `speed` NOT LIKE '0'"; $alloverrides = simple_queryall($query); $this->overridesDb->where('speed', 'NOT LIKE', '0'); $this->overridedUsers = $this->overridesDb->getAll('login'); } /** * Loads all user data. * * @return void */ protected function loadUsersData() { $this->allUsersData = zb_UserGetAllDataCache(); } /** * Renders the speed control report of users with some speed overrides set * * @return string */ public function render() { $result = ''; if (!empty($this->overridedUsers)) { $tablecells = wf_TableCell(__('Login')); $tablecells .= wf_TableCell(__('Real Name')); $tablecells .= wf_TableCell(__('Full address')); $tablecells .= wf_TableCell(__('Tariff')); $tablecells .= wf_TableCell(__('Tariff speeds')); $tablecells .= wf_TableCell(__('Speed override')); $tablecells .= wf_TableCell(__('Actions')); $tablerows = wf_TableRow($tablecells, 'row1'); foreach ($this->overridedUsers as $io => $each) { if (isset($this->allUsersData[$each['login']])) { $userLogin = $each['login']; $userData = $this->allUsersData[$userLogin]; $userTariff = $userData['Tariff']; if (isset($this->allTariffSpeeds[$userTariff])) { $normalSpeedDown = $this->allTariffSpeeds[$userTariff]['speeddown']; $normalSpeedUp = $this->allTariffSpeeds[$userTariff]['speedup']; } else { $normalSpeedDown = '-'; $normalSpeedUp = '-'; } $tablecells = wf_TableCell(wf_Link(UserProfile::URL_PROFILE . $userLogin, web_profile_icon() . ' ' . $each['login'])); $tablecells .= wf_TableCell($userData['realname']); $tablecells .= wf_TableCell($userData['fulladress']); $tablecells .= wf_TableCell($userData['Tariff']); $tablecells .= wf_TableCell($normalSpeedDown . '/' . $normalSpeedUp); $tablecells .= wf_TableCell($each['speed']); $fixlink = wf_JSAlert(self::URL_ME . '&' . self::ROUTE_FIX . '=' . $userLogin, wf_img('skins/icon_repair.gif', __('Fix')), $this->messages->getEditAlert()); $tablecells .= wf_TableCell($fixlink); $tablerows .= wf_TableRow($tablecells, 'row5'); } } $result = wf_TableBody($tablerows, '100%', '0', 'sortable'); } else { $result .= $this->messages->getStyledMessage(__('Nothing to show'), 'success'); } return ($result); } /** * Drops the speed override for a user. * * @param string $userLogin The login of the user. * * @return void */ public function dropOverride($userLogin) { global $billing; global $ubillingConfig; $login = ubRouting::filters($userLogin, 'mres'); zb_UserDeleteSpeedOverride($login); zb_UserCreateSpeedOverride($login, 0); log_register('SPEEDCONTROL FIX (' . $login . ')'); // Reset user if needed $billing->resetuser($login); log_register('RESET User (' . $login . ')'); // Resurrect user if they are disconnected if ($ubillingConfig->getAlterParam('RESETHARD')) { zb_UserResurrect($login); } } } |