} require_once dirname(__FILE__) . "/SMPHPToolkit/SMAjax.php"; require_once dirname(__FILE__) . "/CADBiS/PacketsTodayLimits.php"; CADBiSNew::instance()->script_src('js/ajax/buffer.js'); $ajaxbuf = new ajax_buffer("update_buffer"); $ajaxbuf->show_progress(true); $ajaxbuf->set_postback_url($_SERVER['REQUEST_URI']); $BILL = new CBilling($GV["dbhost"], $GV["dbname"], $GV["dblogin"], $GV["dbpassword"]); require_once dirname(__FILE__) . "/CADBiS/cadbis_statistic_backend.php"; $packets = $BILL->GetTarifs(); $config = $BILL->GetCADBiSConfig(); $packets_confs = array(); foreach ($packets as &$packet) { $accts = $BILL->GetTarifTodayAccts($packet['gid']); $packet['accts']['traffic'] = $accts['traffic']; $packet['accts']['time'] = $accts['time']; $packets_confs[$packet['gid']]['rang'] = new ajax_var('rng' . $packet['gid'], $packet['rang']); $packets_confs[$packet['gid']]['exceed_times'] = new ajax_var('et' . $packet['gid'], $packet['exceed_times']); $ajaxbuf->register_vars($packets_confs[$packet['gid']]); } $max_month_traffic = new ajax_var('max_month_traffic', $config['max_month_traffic'] / 1024 / 1024); $ajaxbuf->register_var($max_month_traffic); if ($ajaxbuf->is_post_back()) { foreach ($packets as &$packet) { $packet['rang'] = $packets_confs[$packet['gid']]['rang']->get_value(); $packet['exceed_times'] = $packets_confs[$packet['gid']]['exceed_times']->get_value(); $BILL->UpdateTarif($packet['gid'], $packet); } $BILL->UpdateConfigVar('max_month_traffic', $max_month_traffic->get_value() * 1024 * 1024); } $daylimits = new PacketsTodayLimits($BILL);
public static function get_page($pagesize, $page, $asc = true) { return array_slice($asc ? self::$mydata : array_reverse(self::$mydata), ($page - 1) * $pagesize, $pagesize); } // так же допустим есть функция удаления строки public static function delete($num) { unset(self::$mydata[$num]); } } // Инициализируем буфер и менеджер сущностей $ajaxbuffer = new ajax_buffer("ajax_buffer"); $ajaxbuffer->show_progress(true); $emanager = new ajax_entities_manager('entities_manager', $ajaxbuffer); // Если нужно выполнить какие-то действия над данными по постбэку if ($ajaxbuffer->is_post_back() && $emanager->isAnyAction()) { switch ($emanager->getAction()) { // необходимо удалить строку case $emanager->action->DEL: mydata::delete($emanager->getItem()); break; } // сбрасываем действие (в противном случае оно будет активно при каждом ajax запросе) $emanager->eraseAction(); } // Форматтер для отображения данных грида class my_grid_formatter extends grid_formatter { protected $_field = ''; protected $_client_id = ''; public function __construct($field, $client_id)
case 'actions': return '<a href="javascript:deleteCat(' . $data['cid'] . ');">Удалить</a>, <a href="javascript:editCat(' . $data['cid'] . ',\'' . $data['title'] . '\',\'' . $data['title_ru'] . '\');">Изменить</a>'; default: return parent::format($data, $type); } } } $cats_ds = new grid_data_source(new grid_header_item_array(new grid_header_item('cid', 'Id', type::STRING, true), new grid_header_item('title', 'Категория', type::STRING, true, null, true, true), new grid_header_item('title_ru', 'Название', type::STRING, true, null, true, true), new grid_header_item('actions', 'Действия', null, false, new cats_formatter('actions', $emanager)))); $cats_grid = new ajax_grid('cats_grid', $cats_ds, $ajaxbuf_cats); $cats_grid_pager = new ajax_grid_pager('cats_grid_pager', $BILL->GetRowsCount('url_categories', $cats_grid->get_filterfield(), $cats_grid->get_filtering()), 20); $cats_grid->attach_pager($cats_grid_pager); /** * Check if we need to make some actions */ if ($emanager->isAnyAction() && $ajaxbuf_cats->is_post_back()) { switch ($emanager->getAction()) { case $emanager->action->ADD: $item = json_decode($emanager->getItem()); $BILL->AddUrlCategory(array('title' => $item->title, 'title_ru' => $item->title_ru)); break; case $emanager->action->UPD: $item = json_decode($emanager->getItem()); $item->keywords = explode(',', $item->keywords); for ($i = 0; $i < count($item->keywords); ++$i) { $item->keywords[$i] = rtrim(ltrim($item->keywords[$i])); if (strlen($item->keywords[$i]) < 4 || empty($item->keywords[$i])) { array_splice($item->keywords, $i, 1); $i = 0; } }