}
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);
示例#2
0
    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;
                }
            }