本文整理汇总了PHP中memBuff::set方法的典型用法代码示例。如果您正苦于以下问题:PHP memBuff::set方法的具体用法?PHP memBuff::set怎么用?PHP memBuff::set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类memBuff
的用法示例。
在下文中一共展示了memBuff::set方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: output
/**
* Печатает содержимое файлов, при запросе /static.php?t=$seed.
* Сжимает содержимое, контролирует кэширование на сервере и клиенте.
*
* @param string $seed закодировнная строка (параметр ?t).
*/
public function output($seed)
{
$log = $this->_log;
if (($type = $this->_decodeSeed($seed, $seed_expired)) === false) {
$log->writeln("\n\nstatic_compressor::output()\n");
$log->writeln("Error _decodeSeed - seed:{$seed}\n\n");
exit;
}
if ($seed_expired) {
$seed = $this->_encodeSeed($type);
}
$last_mod = $this->getLastModified($type);
$mem_key = md5('static_compress.output' . $seed);
$mem_data = $this->memBuff->get($mem_key);
if (!$mem_data || $last_mod != $mem_data['last_mod']) {
$mem_data['body'] = $this->_compress($type, true);
$mem_data['etag'] = '"' . md5($mem_data['body']) . '"';
$mem_data['last_mod'] = $last_mod;
$mem_data['length'] = strlen($mem_data['body']);
$this->memBuff->set($mem_key, $mem_data, self::GC_LIFE);
}
header('Content-Type: text/' . ($this->types[$type] == 'js' ? 'javascript' : 'css') . '; charset=' . self::getCharsetType($type));
header('Cache-Control: public, must-revalidate, max-age=0');
header('ETag: ' . $mem_data['etag']);
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $mem_data['last_mod']) . ' GMT');
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $mem_data['etag'] && (!isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $mem_data['last_mod'])) {
header('HTTP/1.1 304 Not Modified');
$mem_data['length'] = 0;
$mem_data['body'] = null;
}
header('Content-Length: ' . $mem_data['length']);
exit($mem_data['body']);
}
示例2: process_event
public function process_event(&$event)
{
$r = FALSE;
switch ($event->type) {
case 'memcache_delete':
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff.php';
$memBuff = new memBuff();
$memBuff->delete($event->data['key']);
$r = TRUE;
break;
case 'memcache_flush_group':
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff.php';
$memBuff = new memBuff();
$memBuff->flushGroup($event->data['key']);
$r = TRUE;
break;
case 'static_compress.createBatchBySeed':
$GLOBALS['DEBUG_VAR'] = array();
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/static_compress.php';
$memBuff = new memBuff();
$memBuff->set('eto.kostyl.inache.tupit.set.v.createBatch', 1, 1);
$stc = new static_compress();
$r = !($error = $stc->createBatchBySeed($event->data['seed']));
break;
}
if ($event->type) {
$this->log->notice("Function {$event->type}... " . ($r ? 'Success' : 'Error ' . $error));
$this->log->notice(base64_decode($event->data['seed']));
$this->log->notice(var_export($GLOBALS['DEBUG_VAR']));
}
return PGQ_EVENT_OK;
}
示例3: bind
/**
* Сохраняет или возвращает данные связывающие рассылку в личку с рассылкой в почту. Данные актуальны с
* момента начала рассылки и до ее окончания. Данные хранятся в переменной (т.к. скрипт постоянно запущен) и
* дублируются в memcahce на случай отключения скрипта во время рассылки. Если во время рассылки в личку
* остановить скрипт и перегрузить memcahce, то данные данные потеряются и рассылка в почту не пойдет.
* Если сделать то же во время рассылки на почту, есть вероятность отправить части пользователей повторные
* письма.
*
* @param integer $messId id личного сообщения
* @param array $data массив с данными для сохранения или NULL если данные нужно получить
* @return array если $data == NULL, возвращает массив данных для $messId
*/
public function bind($messId, $data = NULL)
{
$cache = new memBuff();
$idx = -1;
if (empty($this->_binds)) {
$this->_binds = $cache->get(self::MASSSEND_BIND_CACHE_KEY);
if (!is_array($this->_binds)) {
$this->_binds = array();
}
}
if (count($this->_binds) >= 100) {
array_shift($this->_binds);
}
for ($i = count($this->_binds) - 1; $i >= 0; $i--) {
if ($this->_binds[$i]['__messId'] == $messId) {
$idx = $i;
break;
}
}
if (is_null($data)) {
return $idx >= 0 ? $this->_binds[$idx] : array();
} else {
$data['__messId'] = $messId;
if ($idx >= 0) {
$this->_binds[$idx] = $data;
} else {
$this->_binds[] = $data;
}
$cache->set(self::MASSSEND_BIND_CACHE_KEY, $this->_binds, 3600 * 48);
}
}
示例4: updateCache
/**
* Обновить кеш цен
*
* @global type $DB
* @return boolean
*/
public static function updateCache()
{
global $DB;
self::$_cache_data = null;
$data = $DB->rows("SELECT * FROM " . get_class($this));
if ($data) {
//Преобразуем в удобную форму пользования
foreach ($data as $el) {
self::$_cache_data[$el['op_code']][$el['param']] = $el['sum'];
}
$memBuff = new memBuff();
return $memBuff->set(self::OP_CODES_PRICE_MEMCACHE_TAG, self::$_cache_data, self::OP_CODES_PRICE_MEMCACHE_LIFE);
}
return false;
}
示例5: getCBRates
/**
* Получает курсы валют с сайта ЦБ
*
* @return array массив, индексированный кодами валют (USD, EUR и т.д.), элементы которого есть свойства данной валюты.
* Курс рубля к каждой валюте берется из свойства 'Value'.
*/
function getCBRates()
{
static $rates = NULL;
if ($rates) {
return $rates;
}
$memBuff = new memBuff();
$curr_day = strtotime(date('d.m.Y'));
if ($rdata = $memBuff->get('getCBRates')) {
$rates = $rdata['rates'];
if ($rdata['day'] == $curr_day) {
return $rates;
}
}
$xml = @file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp', false, stream_context_create(array('http' => array('timeout' => 1))));
//было 5 сек
if ($xml && get_http_response_code($http_response_header) == 200) {
$xmlDoc = new DOMDocument();
if (@$xmlDoc->loadXML($xml)) {
$rates = NULL;
$xpath = new DOMXPath($xmlDoc);
$valutes = $xpath->query('//Valute/CharCode');
foreach ($valutes as $v) {
$name = $v->nodeValue;
if ($children = $v->parentNode->childNodes) {
foreach ($children as $ch) {
if ($ch->nodeType == XML_ELEMENT_NODE) {
$rates[$name][$ch->nodeName] = $ch->nodeValue;
}
}
}
}
//@todo: кешируем курс пока на сутки потом нужно перерабоать в крон и БД
$memBuff->set('getCBRates', array('day' => $curr_day, 'rates' => $rates), 86400);
}
}
return $rates;
}
示例6: getSpamCount
/**
* Возвращает количество жалоб о спаме, удовлетворяющих условиям выборки
*
* @param array $filter фильтр
* @return int
*/
function getSpamCount($filter = array())
{
$DB = new DB();
// plproxy
$aFilter = array();
$oMemBuf = new memBuff();
$nCount = 0;
if (is_array($filter) && count($filter)) {
foreach ($filter as $sKey => $sVal) {
$aFilter[] = array($sKey, $sVal);
}
}
if (empty($aFilter) && ($nCount = $oMemBuf->get('messages_spam_count')) !== false) {
return $nCount;
} else {
$sQuery = 'SELECT messages_spam_get_count(?a)';
$nCount = $DB->val($sQuery, $aFilter);
if (empty($aFilter) && !$DB->error) {
$oMemBuf->set('messages_spam_count', $nCount, 3600);
}
}
return $nCount;
}
示例7: getList
/**
* ¬озвращает список публичных типовых услуг по заданным услови¤м и пагинацией
*
* @return array
*/
public function getList($excluded_ids = array())
{
$criteria = array($this->category_id, $this->city_id, $this->country_id, $this->keywords, $this->limit, $this->offset, $this->price_ranges, $this->price_max, $this->order, $excluded_ids, $this->user_id);
$membuf = new memBuff();
$memkey = __METHOD__ . '#' . md5(serialize($criteria));
if (false !== ($result = $membuf->get($memkey)) && is_release()) {
return $result;
}
$sort = $this->getSort();
# @see http://sphinxsearch.com/forum/view.html?id=11538 about city = x or country = y
$sphinxClient = new SphinxClient();
$sphinxClient->SetServer(SEARCHHOST, SEARCHPORT);
$sphinxClient->SetLimits($this->offset, $this->limit, 20000);
$sphinxClient->SetSortMode(SPH_SORT_EXTENDED, $sort);
$sphinxClient->SetFieldWeights(array('title' => 2, 'extra_title' => 1));
//$sphinxClient->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$selectExpression = '*';
// все колонки
if ($this->user_id) {
$selectExpression .= ", IF(user_id = {$this->user_id}, 1, 0) as match_user";
$sphinxClient->setFilter('match_user', array(1));
}
if ($this->category_id) {
$selectExpression .= ", IF(category_id = {$this->category_id} or category_parent_id = {$this->category_id}, 1, 0) as match_category";
$sphinxClient->setFilter('match_category', array(1));
}
if ($this->country_id) {
$selectExpression .= ", IF(user_country_id = {$this->country_id} or country_id = {$this->country_id}, 1, 0) as match_country";
$sphinxClient->setFilter('match_country', array(1));
}
if ($this->city_id) {
$selectExpression .= ", IF(user_city_id = {$this->city_id} or city_id = {$this->city_id}, 1, 0) as match_city";
$sphinxClient->setFilter('match_city', array(1));
}
if (count($this->price_ranges)) {
$match_price_exprs = array();
foreach ($this->getPriceRanges() as $i => $price_range) {
if (!isset($this->price_ranges[$i])) {
continue;
}
$match_price_exprs[] = "price_{$i} = 1";
}
$match_price_exprs = implode(' or ', $match_price_exprs);
$selectExpression .= ", IF({$match_price_exprs}, 1, 0) as match_price";
$sphinxClient->setFilter('match_price', array(1));
}
if ($this->price_max > 0) {
$selectExpression .= ", IF(price <= {$this->price_max}, 1, 0) as match_price_max";
$sphinxClient->setFilter('match_price_max', array(1));
}
$searchString = '';
if (!empty($this->keywords)) {
$keywords = implode(' ', array_filter(preg_split('/\\s*,\\s*/', $this->keywords)));
$searchString = trim($keywords);
//$searchString = $this->GetSphinxKeyword($searchString);
$sphinxClient->SetMatchMode(SPH_MATCH_ANY);
//SPH_MATCH_EXTENDED2);
}
if (count($excluded_ids)) {
$sphinxClient->setFilter('tservice_id', $excluded_ids, true);
}
$sphinxClient->SetSelect($selectExpression);
$queryResult = $sphinxClient->query($searchString, "tservices;delta_tservices");
//echo '<pre>error: ', $sphinxClient->GetLastError(), '</pre>';
//echo '<pre>warn : ', $sphinxClient->GetLastWarning(), '</pre>';
$list = array();
$total = 0;
if (isset($queryResult['matches'])) {
foreach ($queryResult['matches'] as $id => $row) {
$row['attrs']['id'] = $id;
$list[] = $row['attrs'];
}
$total = $queryResult['total_found'] < $queryResult['total'] ? $queryResult['total_found'] : $queryResult['total'];
}
$result = array('list' => $list, 'total' => $total);
if ($this->_ttl) {
$membuf->set($memkey, $result, $this->_ttl);
}
return $result;
}
示例8: _setLogTable
/**
* Устанавливает таблицу для записи посещений.
* @see stat_collector::Step1()
*
* @param string $table имя таблицы (stat_log|stat_log_t)
* @param boolean $only_mem true: сохранить только в мемкэш, иначе еще и в БД.
* @return boolean успешно?
*/
private function _setLogTable($table, $only_mem = false)
{
$MEM = new memBuff();
if ($only_mem || $this->_sDB->update('stat_variables', array('value' => $table), 'name = ?', 'log_table')) {
return $MEM->set(stat_collector::LOGTBL_MEM_KEY, $table, 3000);
}
return false;
}
示例9: stream
/**
* Запускает "постоянное соединение" и в цикле начинает проверять новые серверные события и отсылать их
* клиентам.
*/
public function stream($type)
{
$timer = 0;
$sConn = round(self::CONNECT_TTL * 0.7);
$disconnect = false;
$this->_isStream = true;
// обязательно отключаем работу с сессией, т.к. скрипт работает длительное время
// и он может переписать сделанные другими скриптами изменения на старые
session_write_close();
ob_implicit_flush(true);
$this->_counter('connects', 1);
while (true) {
// переодически сохраняем данные соединения
if (++$timer % $sConn == 0) {
$this->_saveConnect();
}
// проверяем новые события при необходимости
foreach ($this->_sEvents as $name => $event) {
$time = microtime(true);
$key = self::MEMBUFF_EVENTS_TIMER_KEY . $this->_uid . ':' . $name;
$evTime = (int) $this->_memBuff->get($key);
if ($evTime + $event['check'] < $time) {
$this->_memBuff->set($key, $time, self::CONNECT_TTL);
call_user_func(array($this, $event['func']));
}
}
// поспим
sleep(1);
// теперь можно все отдать клиенту
$evid = $this->_counter('evid');
if ($this->_connect['evid'] < $evid) {
$this->_sendEvent($this->_connect['evid'] + 1);
$this->_connect['evid'] = $evid;
$this->_saveConnect();
if ($type != 'hold') {
$disconnect = true;
}
}
if ($disconnect || $timer >= self::SCRIPT_LIVE) {
break;
}
// и пробел для поддержания соеденения
//$this->_sendByte();
}
}
示例10: header
header("Location: " . str_replace($GLOBALS['host'], '', $location));
//перекидываем на текущую страницу, чтобы нельзя было повторить POST по F5
exit;
break;
}
$header = "../header.php";
$footer = "../footer.html";
if (!$user->login) {
include ABS_PATH . "/404.php";
exit;
}
$obj_memcache = new memBuff();
if ($_SESSION['login']) {
if ($_SESSION['login'] != $user->login) {
if (!$obj_memcache->get('user_view_' . strtolower($user->login) . '_' . strtolower($_SESSION['login']))) {
$obj_memcache->set('user_view_' . strtolower($user->login) . '_' . strtolower($_SESSION['login']), 1, 3600);
$user->IncHits($user->login);
}
}
} else {
if (!$obj_memcache->get('user_view_' . strtolower($user->login) . '_' . getRemoteIP())) {
$obj_memcache->set('user_view_' . strtolower($user->login) . '_' . getRemoteIP(), 1, 3600);
$user->IncHits($user->login);
}
}
if ($user->is_banned && !hasPermissions('users')) {
if (!$content) {
$content = "ban.php";
}
} else {
if (!$content) {
示例11: GetPreview
/**
* формирует превью проекта на главной странице.
*/
function GetPreview($data)
{
$objResponse = new xajaxResponse();
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/CFile.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/HTML/projects_lenta.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff2.php';
$kind = 1;
$memBuff = new memBuff();
$htmlLenta = $memBuff->get('projectsLentaHTML');
if (!$htmlLenta) {
$prj = new new_projects();
$prjs = $prj->getProjects($num_prjs, -1, 1, false, null, true);
foreach ($prjs as &$proj) {
// стираем принадлежность проекта к пользователю, чтобы не появилось кнопок РЕДАКТИРОВАТЬ и пр.
unset($proj['user_id']);
}
unset($proj);
$htmlPrj = new HTMLProjects();
$htmlPrj->template = '/projects/tpl.lenta.new.php';
$prj_content = $htmlPrj->ShowProjects($num_prjs, $prjs, 1, 1, null, true);
$prfs = new professions();
$profs = $prfs->GetAllProfessions('', 0, 1);
// подложка с лентой проектов
ob_start();
include $_SERVER['DOCUMENT_ROOT'] . '/templates/main.php';
$htmlLenta = ob_get_clean();
// кэшируем ленту проектов
$memBuff->set('projectsLentaHTML', $htmlLenta, 1800);
}
// подготавливаем данные для шаблона в ленту проектов
$row = array();
$row['kind'] = __paramValue('int', $data['kind']);
$row['cost'] = __paramValue('int', $data['cost']);
$row['currency'] = __paramValue('int', $data['currency_db_id']);
$row['priceby'] = __paramValue('int', $data['priceby_db_id']);
$row['name'] = stripslashes(__paramValue('html', $data['name'], null, true));
$contacts = array('phone' => array('name' => 'Телефон', 'value' => ''), 'site' => array('name' => 'Сайт', 'value' => ''), 'icq' => array('name' => 'ICQ', 'value' => ''), 'skype' => array('name' => 'Skype', 'value' => ''), 'email' => array('name' => 'E-mail', 'value' => ''));
if (isset($data['contacts'])) {
foreach ($data['contacts'] as $name => $value) {
if (!isset($contacts[$name])) {
continue;
}
switch ($name) {
case 'site':
if (!url_validate(ltrim(ltrim($value, 'http://'), 'https://')) && trim($value) != '') {
$error["contact_{$name}"] = 'Поле заполнено некорректно';
}
if (strpos($value, 'htt') === false && trim($value) != '') {
$value = 'http://' . $value;
}
break;
case 'email':
if (!is_email($value) && trim($value) != '') {
$error["contact_{$name}"] = 'Поле заполнено некорректно';
}
break;
}
$contacts[$name]['value'] = __paramValue('htmltext', stripslashes($value));
}
$row['contacts'] = serialize($contacts);
}
$descrFull = stripslashes(__paramValue('html', $data['descr'], null, true));
$descr = preg_replace('/^ /', "", $descrFull);
$descr = preg_replace("/(\n) /", "\$1", $descr);
$descr = reformat(strip_tags(htmlspecialchars(LenghtFormatEx(htmlspecialchars_decode($descr, ENT_QUOTES), 180), ENT_QUOTES), '<br />'), 50, 1, 0, 1);
$descr = preg_replace("//", ' ', $descr);
$row['descr'] = $descr;
$row['t_is_payed'] = $data['logo_ok'] || $data['top_ok'];
$row['t_is_ontop'] = __paramValue('bool', $data['top_ok']);
$row['t_pro_only'] = $data['pro_only'] ? 't' : 'f';
$row['t_verify_only'] = $data['verify_only'] ? 't' : 'f';
$row['t_urgent'] = $data['urgent'] ? 't' : 'f';
$row['t_hide'] = $data['hide'] ? 't' : 'f';
$row['create_date'] = date('Y-m-d H:i', strtotime(date('Y-m-d H:i:s')) - 120);
// делаем дату публикации 2 минуты назад
$row['end_date'] = __paramValue('string', $data['end_date']);
$row['win_date'] = __paramValue('string', $data['win_date']);
$row['country'] = __paramValue('int', $data['project_location_columns'][0]);
$row['city'] = __paramValue('int', $data['project_location_columns'][1]);
list($row['country_name'], $row['city_name']) = explode(': ', __paramValue('string', $data['location']));
$logoOK = __paramValue('bool', $data['logo_ok']);
$topOK = __paramValue('bool', $data['top_ok']);
$row['link'] = __paramValue('string', $data['link']);
if ($logoOK) {
$logoAttach = new attachedfiles($data['logo_attachedfiles_session']);
$logoFiles = $logoAttach->getFiles(array(1));
if (count($logoFiles)) {
$logoFile = array_pop($logoFiles);
// загружено может быть несколько файлов, берем последний
$logoCFile = new CFile($logoFile['id']);
} elseif (__paramValue('int', $data['logo_file_id'])) {
$logoCFile = new CFile(__paramValue('int', $data['logo_file_id']));
}
$row['logo_name'] = $logoCFile->name;
//.........这里部分代码省略.........
示例12: createBill
/**
* Создание счета @see class qiwipay.
*
* @param array $request параметры ($_POST).
*
* @return unknown
*/
public function createBill($request)
{
if (!$this->uid) {
return 'Пользователь не определен';
}
$account = new account();
$account->GetInfo($this->uid, true);
if ($error = $this->validate($request, $account->id)) {
return $error;
}
$this->DB->start();
$aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']);
$id = $this->DB->insert('qiwi_account', $aData, 'id');
if ($id) {
$params = new createBill();
$params->login = $this->login;
// логин
$params->password = $this->passwd;
// пароль
$params->user = $this->form['phone'];
// пользователь, которому выставляется счет
$params->amount = $this->form['sum'];
// сумма
$params->comment = $this->form['comment'];
// комментарий
$params->txn = $id;
// номер заказа
$params->lifetime = $this->ltime;
// время жизни (если пусто, используется по умолчанию 30 дней)
$params->alarm = $this->alarm_sms;
if ($this->passwd == 'debug') {
$result = 1;
} else {
$result = $this->service->createBill($params)->createBillResult;
}
if ($err = $this->_checkResultError($result)) {
$error['qiwi'] = $err;
$this->DB->rollback();
die;
return $error;
}
unset($aData['sum']);
$sCode = substr($aData['phone'], 0, 3);
$sNum = substr($aData['phone'], 3);
$sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes
WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum);
$aData['operator_id'] = $sOper;
$this->DB->insert('qiwi_phone', $aData);
$memBuff = new memBuff();
$nStamp = time();
$sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone'];
if (!($aData = $memBuff->get($sKey))) {
$aData = array('time' => $nStamp, 'cnt' => 0);
}
$aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp;
$aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1;
$memBuff->set($sKey, $aData, 3600);
//-----------------------------------
}
$this->DB->commit();
$this->saveBillForm();
return 0;
}
示例13: GetNewFrlEventsCount
/**
* Возвращает количество новых событий в проектах фрилансера.
*
* @param integer $user_id id фрилансера
* @param boolean $waster учитывать проекты в корзине?
*
* @return integer
*/
public function GetNewFrlEventsCount($user_id, $waste = true)
{
global $DB;
$mem = new memBuff();
$key = 'prjEventsCnt' . ($waste ? 'Wst' : '') . $user_id;
$count = $mem->get($key);
if ($count === FALSE || is_array($count)) {
$ex_where = $waste ? '' : ' AND po.is_waste = false ';
$sql = "\n SELECT count(po.*) \n FROM projects_offers AS po\n LEFT JOIN projects p \n ON p.id = po.project_id\n WHERE \n p.state = 0\n AND po.po_frl_read = false \n {$ex_where}\n AND po.user_id = ?i \n LIMIT 1";
$count = (int) $DB->val($sql, $user_id);
$mem->set($key, $count, 1800);
}
return $count;
}
示例14: getExcDaysInit
/**
* Берем данные за определенный год.
*
* @global type $DB
*
* @param mixed $year Год, если нет текущий
* @param bool $set Записать данные сразу в переменные класса или нет
* @param bool $cache Использовать кеш или нет
*
* @return type
*/
public function getExcDaysInit($year = false, $set = false, $cache = true)
{
global $DB;
if ($year == false) {
$year = $this->format('Y');
}
$mem = new memBuff();
$exc_days = $cache ? $mem->get("exc_days_{$year}") : false;
if ($exc_days === false) {
$sql = 'SELECT * FROM exception_date WHERE year = ?';
$exc_days = $DB->row($sql, $year);
$mem->set("exc_days_{$year}", $exc_days, 1800);
}
if (!$exc_days) {
return array();
}
$workdays = $this->initCollectionDate($exc_days['workdays']);
$holidays = $this->initCollectionDate($exc_days['holidays']);
if ($set) {
$this->setWorkdays($workdays, true);
$this->setHolidays($holidays, true);
return;
}
return $exc_days;
}
示例15: getMaxPrice
/**
* Возвращает максимальную сумму покупки, проверив, покупал ли юзер
* что-нибудь через Плати потом ранее.
*
* @param type $bill_id ИД счета
*
* @return int
*/
public function getMaxPrice($bill_id = 0)
{
$maxPrice = self::PRICE_MAX;
if ($this->is_pro) {
$maxPrice = self::PRICE_MAX_PRO;
} else {
$uid = get_uid(false);
if ($uid > 0) {
$memBuff = new memBuff();
if ($maxPriceSaved = $memBuff->get('platipotom_max_price_' . $uid)) {
return $maxPriceSaved;
} else {
if (!$bill_id) {
$account = new account();
$account->GetInfo($uid, true);
$bill_id = $account->id;
}
$sql = 'SELECT id FROM account_operations WHERE op_code = 12 AND payment_sys = ?i AND billing_id = ?i';
$operation_id = $this->db()->val($sql, self::PAYMENT_CODE, $bill_id);
if ($operation_id) {
$maxPrice = self::PRICE_MAX_MORE;
}
$memBuff->set('platipotom_max_price_' . $uid, $maxPrice);
}
}
}
return $maxPrice;
}