Source of file api.dshaper.php
Size: 8,157 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.dshaper.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 | <?php /** * User dynamic shaper with speeds self-changing depends on time of day */ class DynamicShaper { /** * Contains all tariffs names array * * @var array */ protected $allTariffs = array(); /** * Contains all tariffs speeds as tariffname=>speeddown/speedup * * @var array */ protected $allSpeeds = array(); /** * Contains prepeared data for tariff speed selector * * @var array */ protected $selectorParams = array(); public function __construct() { $this->loadTariffs(); $this->loadSpeeds(); $this->preprocessTariffs(); } /** * Loads existing tariffs from database * * @return void */ protected function loadTariffs() { $raw = zb_TariffsGetAll(); if (!empty($raw)) { foreach ($raw as $io => $each) { $this->allTariffs[$each['name']] = $each['name']; } } } /** * Loads available tariff speeds from database * * @return void */ protected function loadSpeeds() { $this->allSpeeds = zb_TariffGetAllSpeeds(); } /** * Preprocess tariffs for selector boxes * * @return void */ protected function preprocessTariffs() { if (!empty($this->allTariffs)) { foreach ($this->allTariffs as $io => $eachTariff) { $this->selectorParams[$eachTariff] = $eachTariff . $this->getSpeeds($eachTariff); } } } /** * Returns current tariff natural speeds * * @param string $tariff * @return string */ protected function getSpeeds($tariff) { $result = ''; if (isset($this->allSpeeds[$tariff])) { $result = ' (' . $this->allSpeeds[$tariff]['speeddown'] . '/' . $this->allSpeeds[$tariff]['speedup'] . ')'; } return ($result); } /** * Returns available time rules grid * * @return string */ public function renderList() { $messages = new UbillingMessageHelper(); $allTariffs = zb_TariffGetPricesAll(); $query = "SELECT * from `dshape_time` ORDER BY `id` ASC"; $allrules = simple_queryall($query); $cells = wf_TableCell(__('ID')); $cells.= wf_TableCell(__('Tariff')); $cells.= wf_TableCell(__('Time from')); $cells.= wf_TableCell(__('Time to')); $cells.= wf_TableCell(__('Speed')); $cells.= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); if (!empty($allrules)) { foreach ($allrules as $io => $eachrule) { $rowClass = (isset($allTariffs[$eachrule['tariff']])) ? 'row3' : 'sigdeleteduser'; $tariffControl = (cfr('TARIFFSPEED')) ? wf_Link('?module=tariffspeeds&tariff=' . $eachrule['tariff'], $eachrule['tariff'] . ' ', false) : $eachrule['tariff']; $cells = wf_TableCell($eachrule['id']); $cells.= wf_TableCell($tariffControl); $cells.= wf_TableCell($eachrule['threshold1']); $cells.= wf_TableCell($eachrule['threshold2']); $cells.= wf_TableCell($eachrule['speed']); $actions = wf_JSAlert('?module=dshaper&delete=' . $eachrule['id'], web_delete_icon(), $messages->getDeleteAlert()); $actions.= wf_JSAlert('?module=dshaper&edit=' . $eachrule['id'], web_edit_icon(), $messages->getEditAlert()); $cells.= wf_TableCell($actions); $rows.= wf_TableRow($cells, $rowClass); } } $result = wf_TableBody($rows, '100%', '0', 'sortable'); return ($result); } /** * Deletes existing time rule from database * * @param int $ruleid */ public function delete($ruleid) { $ruleid = vf($ruleid, 3); $query = "DELETE from `dshape_time` where `id`='" . $ruleid . "'"; nr_query($query); log_register("DSHAPE DELETE [" . $ruleid . ']'); } /** * Deletes shaper rules from database by tariff name * * @param string $tariff */ public function flushTariff($tariff) { $tariff = mysql_real_escape_string($tariff); $query = "DELETE from `dshape_time` WHERE `tariff`='" . $tariff . "';"; nr_query($query); log_register("DSHAPE FLUSH TARIFF `" . $tariff . '`'); } /** * Returns time rule adding form * * @return string */ public function renderAddForm() { $sup = wf_tag('sup') . '*' . wf_tag('sup', true); $inputs = wf_Selector('newdshapetariff', $this->selectorParams, __('Tariff'), '', true); $inputs.= wf_TimePickerPresetSeconds('newthreshold1', '', __('Time from') . $sup . ' ', true); $inputs.= wf_TimePickerPresetSeconds('newthreshold2', '', __('Time to') . $sup . ' ', true); $inputs.= wf_TextInput('newspeed', __('Speed') . $sup, '', true, 8); $inputs.= wf_Submit(__('Create')); $result = wf_Form('', 'POST', $inputs, 'glamour'); return ($result); } /** * Returns time rule editing form * * @param int $timeruleid existing time rule database ID * @return string */ public function renderEditForm($timeruleid) { $timeruleid = vf($timeruleid, 3); $query = "SELECT * from `dshape_time` WHERE `id`='" . $timeruleid . "'"; $timerule_data = simple_query($query); $sup = wf_tag('sup') . '*' . wf_tag('sup', true); $inputs = wf_tag('select', false, '', 'DISABLED'); $inputs.= wf_tag('option') . $timerule_data['tariff'] . $this->getSpeeds($timerule_data['tariff']) . wf_tag('option', true); $inputs.= wf_tag('select', true); $inputs.= wf_tag('br'); $inputs.= wf_HiddenInput('editdshapetariff', $timerule_data['tariff']); $inputs.= wf_TimePickerPresetSeconds('editthreshold1', $timerule_data['threshold1'], __('Time from') . $sup, true); $inputs.= wf_TimePickerPresetSeconds('editthreshold2', $timerule_data['threshold2'], __('Time to') . $sup, true); $inputs.= wf_TextInput('editspeed', __('Speed') . $sup, $timerule_data['speed'], true, 8); $inputs.= wf_Submit(__('Save')); $form = wf_Form('', 'POST', $inputs, 'glamour'); $form.= wf_CleanDiv(); $form.=wf_tag('br'); $form.= wf_BackLink('?module=dshaper'); return ($form); } /** * Creates new time rule in database * * @param string $tariff existing tariff name * @param string $threshold1 event start time * @param string $threshold2 event stop time * @param integer $speed */ public function create($tariff, $threshold1, $threshold2, $speed) { $tariff = mysql_real_escape_string($tariff); $threshold1 = mysql_real_escape_string($threshold1); $threshold2 = mysql_real_escape_string($threshold2); $speed = vf($speed); $query = "INSERT INTO `dshape_time` (`id` , `tariff` , `threshold1` , `threshold2` , `speed` ) " . "VALUES (NULL , '" . $tariff . "', '" . $threshold1 . "', '" . $threshold2 . "', '" . $speed . "');"; nr_query($query); log_register("DSHAPE ADD `" . $tariff . '`'); } /** * Edits existing timerule in database * * @param type $timeruleid * @param type $threshold1 event start time * @param type $threshold2 event stop time * @param type $speed */ public function edit($timeruleid, $threshold1, $threshold2, $speed) { $timeruleid = vf($timeruleid); $threshold1 = mysql_real_escape_string($threshold1); $threshold2 = mysql_real_escape_string($threshold2); $speed = vf($speed); $query = "UPDATE `dshape_time` SET `threshold1` = '" . $threshold1 . "', `threshold2` = '" . $threshold2 . "', `speed` = '" . $speed . "' WHERE `id` ='" . $timeruleid . "' LIMIT 1; "; nr_query($query); log_register("DSHAPE CHANGE [" . $timeruleid . '] ON `' . $speed . '`'); } } ?> |