本文整理汇总了PHP中memBuff::get方法的典型用法代码示例。如果您正苦于以下问题:PHP memBuff::get方法的具体用法?PHP memBuff::get怎么用?PHP memBuff::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类memBuff
的用法示例。
在下文中一共展示了memBuff::get方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_unanimated_gif
/**
* Обрезает анимированный .gif, оставляя только первый кадр.
* Обрезанный гиф сохраняет в той же директории, где и оригинал, под тем же именем, только с префиксом 'na_'.
* Если файл с таким именем (с префиксом) уже есть, то ничего не делает.
* Возвращает в случае успеха имя обрезанного гифа, в случае ошибки (или это не анимированный гиф) -- имя оригинала.
*
* @param string $dir путь к оригиналу (от корня, без '/' в начале)
* @param string $orig_name имя гифа оригинала.
* @param string $alt_dir имя альтернативной директории для поиска файла (отличной от foto)
* @return string имя обрезанного гифа
*/
function get_unanimated_gif($dir, $orig_name, $alt_dir = false)
{
if (CFile::getext($orig_name) != 'gif') {
return $orig_name;
}
$memBuff = new memBuff();
$res = $memBuff->get($orig_name);
if ($res) {
return $res;
}
$orig_file = $alt_dir ? trim($alt_dir, '/') . '/' . $orig_name : "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/" . $orig_name;
$orig_content = @file_get_contents(WDCPREFIX_LOCAL . '/' . $orig_file);
$unan_content = unanimate_gif($orig_content);
if ($unan_content !== false) {
$unan_name = "na_" . $orig_name;
$unan_file = dirname($orig_file) . "/" . $unan_name;
$unan = new CFile($unan_file);
if (!$unan->id) {
$unan = new CFile($orig_file);
$unan->name = $unan_name;
$unan->size = strlen($unan_content);
$put = $unan->putContent($unan_file, $unan_content);
// Записываем измененный файл
if ($put) {
$memBuff->set($orig_name, $unan_name, 3600 * 12);
return $unan_name;
}
} else {
$memBuff->set($orig_name, $unan_name, 3600 * 12);
return $unan_name;
}
}
return $orig_name;
// Если не смогли сохранить возвращаем оригинал
}
示例2: 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']);
}
示例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: getCountSubscribe
/**
* Количество подписавшихся на рассылку
* @global type $DB
* @return type
*/
public function getCountSubscribe()
{
global $DB;
$memBuff = new memBuff();
$count = $memBuff->get('verify_count');
if (!$count) {
$count = $DB->val("SELECT COUNT(*) as cnt FROM verify");
$memBuff->add('verify_count', $count, 600);
}
return $count;
}
示例5: del
/**
* Удаляет файл из кэша.
*
* @param string|int $key ключ [path+fname] или [id]
*/
public function del($key)
{
if ($r = $this->_cache[$key]) {
unset($this->_cache[self::_k($r, 1)]);
unset($this->_cache[self::_k($r, 2)]);
}
if ($r = $this->_memBuff->get(self::_memkey($key))) {
$this->_memBuff->delete(self::_memkey(self::_k($r, 1)));
$this->_memBuff->delete(self::_memkey(self::_k($r, 2)));
}
}
示例6: quickPRJPayAccount
function quickPRJPayAccount()
{
$objResponse = new xajaxResponse();
$uid = get_uid(false);
ob_start();
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
$bill = new billing($uid);
$billReserveId = $bill->checkoutOrder();
$payed_sum = $bill->getOrderPayedSum();
if ($bill->isAllowPayFromAccount()) {
$complete = $bill->buyOrder($billReserveId);
if ($complete) {
$_SESSION['quickprj_ok'] = 1;
$memBuff = new memBuff();
$project_id = $memBuff->get('bill_ok_project_' . $uid);
if ($project_id) {
$is_payed = $memBuff->get('bill_ok_project_payed_' . $uid);
if ($is_payed) {
$memBuff->delete('bill_ok_project_payed_' . $uid);
$friendly_url = "/public/?step=2&public={$project_id}";
} else {
$friendly_url = getFriendlyURL('project', $project_id);
$_SESSION['quickprj_ok'] = 1;
$friendly_url .= '?quickprj_ok=1';
}
$objResponse->script("window.location = '{$friendly_url}';");
$memBuff->delete('bill_ok_project_' . $uid);
} else {
$objResponse->script("window.location = '/?quickprj_ok=1';");
}
}
}
ob_end_clean();
return $objResponse;
}
示例7: 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;
}
示例8: 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;
}
示例9: createBill
/**
* Создает новый счет, отправляет на регистрацию в платежную систему.
*
* @param integer $uid ид. пользователя.
* @param array $request параметры ($_POST).
* @return array $error массив ошибок.
*/
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");
$oper_xml = '';
switch ($request['oper_code']) {
case 'megafon':
$oper_xml = '<extra name="megafon2-acc">1</extra>';
break;
case 'mts':
$oper_xml = '<extra name="mts-acc">1</extra>';
break;
case 'beeline':
$oper_xml = '<extra name="beeline-acc">1</extra>';
break;
}
if ($id) {
$xml = '<?xml version="1.0" encoding="' . $this->encode . '"?>' . '<request>' . '<protocol-version>4.00</protocol-version>' . '<request-type>30</request-type>' . '<extra name="password">' . $this->passwd . '</extra>' . '<terminal-id>' . $this->login . '</terminal-id>' . '<extra name="txn-id">' . $id . '</extra>' . '<extra name="to-account">' . $this->form['phone'] . '</extra>' . '<extra name="amount">' . $this->form['sum'] . '</extra>' . '<extra name="comment">' . $this->form['comment'] . '</extra>' . '<extra name="create-agt">' . $this->create_agt . '</extra>' . '<extra name="ltime">' . $this->ltime . '</extra>' . '<extra name="ALARM_SMS">' . $this->alarm_sms . '</extra>' . '<extra name="ACCEPT_CALL">' . $this->accept_call . '</extra>' . $oper_xml . '</request>';
if ($this->passwd == 'debug') {
$result = '<response><result-code fatal="false">0</result-code></response>';
} else {
$result = $this->_request($xml);
}
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;
}
示例10: resendCode
function resendCode($sbr_id, $stage_id)
{
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pskb.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff.php';
$sbr_id = __paramValue('int', $sbr_id);
$stage_id = __paramValue('int', $stage_id);
$objResponse = new xajaxResponse();
$objResponse->script("\$('alert_sms').removeClass('b-layout__txt_color_56bd06').removeClass('b-layout__txt_color_c7271e'); ");
if (!$sbr_id) {
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Запрос не может быть обработан.');");
//$objResponse->alert('Запрос не может быть обработан.');
return $objResponse;
}
$m = new memBuff();
$lasttime = $m->get(pskb::SMS_RESEND_KEY . $sbr_id);
if ($lasttime) {
$mins = ceil(($lasttime + 300 - time()) / 60);
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Еще раз выслать код можно будет через {$mins} минут" . ending($mins, 'у', 'ы', '') . ".');");
//$objResponse->alert("Повторный запрос можно будет сделать примерно через {$mins} минут" . ending($mins, 'у', 'ы', '') );
return $objResponse;
}
$uid = get_uid(0);
if (!$uid) {
$objResponse->redirect('/');
return $objResponse;
}
$sbr = sbr_meta::getInstance();
if (!$sbr->initFromId($sbr_id)) {
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Запрос не может быть обработан.');");
return $objResponse;
}
$stage = $sbr->initFromStage($stage_id, false);
if (!$stage) {
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Запрос не может быть обработан.');");
return $objResponse;
}
if ($uid != $sbr->data['frl_id']) {
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Запрос не может быть обработан.');");
//$objResponse->alert('Запрос не может быть обработан.');
return $objResponse;
}
$pskb = new pskb($sbr);
if (!$pskb->resendCode($stage)) {
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_c7271e'); \n \$('alert_sms').set('html', 'Не удалось выслать код.');");
//$objResponse->alert('Ошибка запроса. Попробуйте еще раз.');
return $objResponse;
}
$m->set(pskb::SMS_RESEND_KEY . $sbr_id, time(), 300);
$objResponse->script("\$('alert_sms').addClass('b-layout__txt_color_56bd06'); \n \$('alert_sms').set('html', 'Код отправлен повторно.');\n \$('send_sms').destroy();\n \$('resend_sms').set('html', 'Еще раз выслать код можно будет через 5 минут.')");
//$objResponse->alert('Код отправлен повторно.');
if (defined('PSKB_TEST_MODE')) {
$objResponse->script('document.location.reload();');
}
return $objResponse;
}
示例11: memBuff
*/
echo '<p>Результат <strong>paymentAviso</strong>:</p>';
echo '<pre>';
print_r(htmlspecialchars($complete));
echo '</pre>';
exit;
$uid = get_uid(false);
$key = 'post_payment_' . $uid;
$memBuff = new memBuff();
if (isset($_GET['cancel'])) {
//Отказ от платежа
header('Location: /bill/fail');
exit;
} elseif (isset($_GET['success'])) {
$host = $GLOBALS['host'];
$payment = $memBuff->get($key);
$_SERVER['HTTP_X_REAL_IP'] = '77.75.157.166';
$invoceId = isset($payment['invoiceId']) ? $payment['invoiceId'] : rand(1, 50000);
//Что нам говорит яндекс
$post = array('requestDatetime' => date('c'), 'action' => 'checkOrder', 'shopId' => $payment['ShopID'], 'invoiceId' => $invoceId, 'customerNumber' => $payment['customerNumber'], 'orderCreatedDatetime' => date('c'), 'orderSumAmount' => floatval($payment['Sum']), 'orderSumCurrencyPaycash' => 643, 'orderSumBankPaycash' => 1001, 'shopSumAmount' => $payment['Sum'], 'shopSumCurrencyPaycash' => 643, 'shopSumBankPaycash' => 1001, 'paymentPayerCode' => 42007148320.0, 'paymentType' => $payment['paymentType']);
if (isset($payment['orderId'])) {
$post['orderId'] = $payment['orderId'];
}
$post['md5'] = strtoupper(md5(implode(';', array($post['action'], $post['orderSumAmount'], $post['orderSumCurrencyPaycash'], $post['orderSumBankPaycash'], $post['shopId'], $post['invoiceId'], $post['customerNumber'], YK_KEY))));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host . '/income/ykassa.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, BASIC_AUTH);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
ob_start();
$res = curl_exec($ch);
示例12: Buy
/**
* Совершить покупку
*
* @param integer $id возвращает id покупки
* @param integer $transaction_id идентификатор текущей транзакции
* @param integer $op_code идентификатор операции
* @param integer $uid UID
* @param string $descr описание для системы
* @param string $comments описание для истории юзера
* @param integer $ammount количество товара
* @param integer $commit завершать ли транзакцию?
* @param integer $promo_code ИД промо-кода
*
* @return integer 0
*/
function Buy(&$id, $transaction_id, $op_code, $uid, $descr = "", $comments = "", $ammount = 1, $commit = 1, $promo_code = 0, $payment_sys = 0, $trs_sum = 0)
{
global $DB;
if (!$transaction_id || $transaction_id != $this->check_transaction($transaction_id, $uid)) {
return "Невозможно завершить транзакцию";
} else {
$res = $DB->query("SELECT op_codes.sum as op_sum, account.sum, account.id FROM op_codes, account WHERE op_codes.id=? AND account.uid=?", $op_code, $uid);
if (pg_errormessage()) {
return "Ошибка при получении информации о счете!";
}
list($op_sum, $ac_sum, $bill_id) = pg_fetch_row($res);
$sum = $op_sum * $ammount;
if ($promo_code) {
$promoCodes = new PromoCodes();
$sum = $sum - $promoCodes->getDiscount($promo_code, $sum);
}
$ac_sum = round($ac_sum, 2);
$sum = round($sum, 2);
//@todo: зачем мемкеш? если занос денег deposit и покупка в отдной сессии php
//можно было старое значение передать глобальной переменной или реестром
$memBuff = new memBuff();
$ac_sum_old = round($memBuff->get("ac_sum_old_" . $uid), 2);
$memBuff->delete("ac_sum_old_" . $uid);
$new_ac_sum = $ac_sum_old < 0 ? $ac_sum - $ac_sum_old : $ac_sum;
if ($sum > 0 && $sum > $new_ac_sum) {
return "Недостаточно средств на счету!";
}
if ($sum < 0) {
return "Покупка на отрицательную сумму!";
}
$id = $DB->insert('account_operations', array('billing_id' => $bill_id, 'op_code' => $op_code, 'ammount' => -$sum, 'descr' => $descr, 'comments' => $comments, 'payment_sys' => $payment_sys, 'trs_sum' => $trs_sum), 'id');
if ($DB->error) {
return "Ошибка при записи счета!";
} else {
if ($uid == get_uid(false)) {
$_SESSION['ac_sum'] = $_SESSION['ac_sum'] - $sum;
}
}
if ($promo_code) {
$promoCodes->markUsed($promo_code);
}
// количество операций
$_SESSION['account_operations'] = intval($_SESSION['account_operations']) + 1;
// для счетчика everesttech.net (см. engine/templates/footer.tpl)
if ($sum > 0) {
$_SESSION['everesttech_conter'] = 1;
}
if ($commit) {
$this->commit_transaction($transaction_id, $uid, $id);
}
}
return 0;
}
示例13: memBuff
<?php
require_once $_SERVER["DOCUMENT_ROOT"] . "/classes/stdf.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php";
$membuf = new memBuff();
$memkey = "b-combo-getprofandgroups";
$s = $membuf->get($memkey);
if (!$s) {
$rows = professions::GetProfessionsAndGroup();
$result = array();
foreach ($rows as $k => $i) {
if ($result[$i["gid"]] === null) {
$result[$i["gid"]] = array('0' => iconv("WINDOWS-1251", "UTF-8//IGNORE", $i["gname"]), "undefined_value" => iconv("WINDOWS-1251", "UTF-8//IGNORE", 'Все специальности'));
if ($i["id"] !== null) {
$result[$i["gid"]][$i["id"]] = iconv("WINDOWS-1251", "UTF-8//IGNORE", $i["name"]);
} else {
$result[$i["gid"]] = iconv("WINDOWS-1251", "UTF-8//IGNORE", $i["gname"]);
}
} else {
if (is_array($result[$i["gid"]])) {
$result[$i["gid"]][$i["id"]] = iconv("WINDOWS-1251", "UTF-8//IGNORE", $i["name"]);
}
}
}
$s = json_encode($result);
$membuf->add($memkey, $s);
}
print 'var professionsList = ' . $s . '; professionsList["0"]["0"] = "Другое";professionsList["0"]["undefined_value"] = "Нет специализации";';
示例14: isAllowed
/**
* Проверка возможности отправить сообщение ползователю.
*
* @global type $DB
* @staticvar null $exists_allowed
*
* @param type $to_id
* @param type $from_id
*
* @return bool
*/
public static function isAllowed($to_id, $from_id = null)
{
$is_auth = isset($_SESSION['uid']) && $_SESSION['uid'] > 0;
if (!$from_id && !$is_auth) {
return false;
}
if (!$from_id) {
$from_id = $_SESSION['uid'];
}
if ($is_auth && (currentUserHasPermissions('users') || is_emp())) {
return true;
}
$is_allowed = self::_isAllowed($to_id, $from_id);
if (!$is_allowed) {
//Была ли уже проверка доступности
//тогда пользователю запрещено писать
$key_check_is_allowed = sprintf(self::KEY_CHECK_IS_ALLOWED, $from_id, $to_id);
$mem = new memBuff();
if ($mem->get($key_check_is_allowed)) {
return false;
}
//Иначе делаем проверку
//Которые уже хотя бы раз общались с заказчиком через личку,
//например если заказчик инициировал общение или они ранее общались
$proxy_db = new DB();
$is_allowed = $proxy_db->val('SELECT messages_dialog_count(?i, ?i)', $to_id, $from_id) > 0;
//Которых заказчик выбрал исполнителем в любом своем проекте
if (!$is_allowed) {
require_once ABS_PATH . '/classes/projects.php';
$is_allowed = (bool) projects::isExec($from_id, $to_id);
}
//В список условий я бы еще добавил проведение заказа на сайте - если есть завершенный заказ
//(с резервом или без, по ТУ, проекту или прямой) с данным заказчиком, то тоже разрешать
//исполнителю писать ему в личку, так как в заказе светится логин заказчика и они уже сотрудничали.
if (!$is_allowed) {
require_once ABS_PATH . '/tu/models/TServiceOrderModel.php';
$is_allowed = (bool) TServiceOrderModel::hasSuccessfulOrder($from_id, $to_id);
}
//Если фрилансер был выбран на любое призовое место в конкурсе то
//он может писать сообщения заказчику.
if (!$is_allowed) {
require_once ABS_PATH . '/classes/contest.php';
$is_allowed = (bool) contest::isPrizePlace($from_id, $to_id);
}
if ($is_allowed) {
self::setIsAllowed($to_id, $from_id, true);
}
$mem->set($key_check_is_allowed, 1, 0, self::KEY_CHECK_TAG_IS_ALLOWED);
}
return $is_allowed;
}
示例15: getCurrencyForDate
/**
* Берем курсы валют на определенный день
*
* @param string $date Дата (в формате 01/01/2009), по умолчанию текущий день
* @return array|boolean Курсы валют где ключ это название валюты а значение это массив [units=>Единиц, kurs=> Курс по отношению к рублю], либо false если не удалось взять курсы валют
*/
function getCurrencyForDate($date = false)
{
if (!$date) {
$date = date("d/m/Y");
}
$mb = new memBuff();
if ($tmp = $mb->get('currency_for_date')) {
if ($tmp['date'] == $date && $tmp['data']) {
return $tmp['data'];
}
}
libxml_disable_entity_loader();
$file = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req={$date}&d=1");
// Валюты которые меняются раз в месяц
$file2 = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req={$date}&d=0");
// Валюты которые меняются раз в день
$p = simplexml_load_string($file);
$p2 = simplexml_load_string($file2);
$v = "Valute";
foreach ($p->{$v} as $key => $value) {
$cur[(string) $value->CharCode] = array("units" => intval($value->Nominal), "kurs" => round(str_replace(",", ".", $value->Value), 4));
}
foreach ($p2->{$v} as $key => $value) {
$cur[(string) $value->CharCode] = array("units" => intval($value->Nominal), "kurs" => round(str_replace(",", ".", $value->Value), 4));
}
if (!isset($cur)) {
return false;
}
$cur['RUB'] = array("units" => 1, "kurs" => 1);
// Заглушка для рубля
$mb->set('currency_for_date', array('date' => $date, 'data' => $cur));
return $cur;
}