Beispiel #1
0
 /**
  * Изменение позиции пользователя.
  *
  * @param integer $user           uid пользователя
  * @param integer $transaction_id id транзакции
  * @param array   $bids           массив, в котором индекс элементов - id места размещения, значения - сумма для поднятия позиции
  *
  * @return integer id операции транзакции
  */
 public function BidPlaces($user, $transaction_id, $bids, &$error)
 {
     $bill_id = 0;
     if ($bids) {
         foreach ($bids as $prof => $sum) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
             $account = new account();
             $error = $account->Buy($bill_id, $transaction_id, 21, $user, $prof, '', $sum, 0);
             if ($error !== 0) {
                 return 0;
             }
             global $DB;
             $sql = 'UPDATE users_first_page SET psum=psum+? WHERE id IN (SELECT id FROM users_first_page 
                 WHERE user_id = ? AND from_date+to_date >= now() AND payed=true
                 AND ordered = true AND profession=? )';
             $DB->query($sql, $sum, $user, $prof);
             $id = 1;
         }
     }
     if ($bill_id) {
         //$account->commit_transaction($transaction_id, $user, $bill_id);
         $memBuff = new memBuff();
         $memBuff->flushGroup('firstpg');
     }
     return $id;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
/**
 * Обрезает анимированный .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;
    // Если не смогли сохранить возвращаем оригинал
}
Beispiel #4
0
 /**
  * Выбрать ТУ для списка пользователей 
  * по указанному количеству на каждого
  * 
  * @param type $uids
  * @param type $limit
  * @param type $expire
  * @param type $group
  * @return type
  */
 public function getListByUids($uids, $limit = 3, $expire = 0, $group = false)
 {
     $sql = $this->db()->parse("\n            SELECT \n                DISTINCT ON (q.id) \n                q.*,\n                f.fname AS file\n            FROM (\n                SELECT \n                    s.id AS id, \n                    s.user_id,\n                    s.title AS title, \n                    s.price AS price,\n                    s.videos AS videos,\n                    s.total_feedbacks AS total_feedbacks,\n                    row_number() OVER(PARTITION BY s.user_id ORDER BY s.id DESC) AS rownum\n                FROM {$this->TABLE} AS s \n                LEFT JOIN {$this->TABLE_DEBT} AS od ON od.user_id = s.user_id \n                LEFT JOIN {$this->TABLE_BLOCKED} AS sb ON sb.src_id = s.id \n                WHERE \n                    s.user_id IN(?l) \n                    AND s.deleted = FALSE \n                    AND s.active = TRUE \n                    AND sb.src_id IS NULL\n                    AND (od.id IS NULL OR od.date >= NOW())\n            ) AS q\n            LEFT JOIN {$this->TABLE_FILES} AS f ON f.src_id = q.id AND f.small = 4\n            WHERE q.rownum <= ?i\n            ORDER BY q.id DESC, f.preview DESC, f.id \n        ", $uids, $limit);
     $memBuff = new memBuff();
     $result = $memBuff->getSql($error, $sql, $expire, true, $group);
     return $result;
 }
Beispiel #5
0
 /**
  * Сохраняет или возвращает данные связывающие рассылку в личку с рассылкой в почту. Данные актуальны с 
  * момента начала рассылки и до ее окончания. Данные хранятся в переменной (т.к. скрипт постоянно запущен) и
  * дублируются в 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);
     }
 }
Beispiel #6
0
 /**
  * Количество подписавшихся на рассылку
  * @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;
 }
Beispiel #7
0
 /**
  * Взять последнюю новость
  *
  * @return array Новость
  */
 function GetLastNews()
 {
     $sql = "SELECT post_date, header FROM news ORDER BY post_date DESC, id DESC LIMIT 1";
     $memBuff = new memBuff();
     $headers = $memBuff->getSql($error, $sql, 1800);
     if ($error) {
         $error = parse_db_error($error);
     } else {
         $ret = $headers[0];
     }
     return $ret;
 }
Beispiel #8
0
 /**
  * Обновить кеш цен
  * 
  * @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;
 }
Beispiel #9
0
 /**
  * Создает пакет.
  *
  * @param int    $type          тип пакета (TYPE_CSS|TYPE_JS|TYPE_PHP_JS|TYPE_JS_UTF8)
  * @param string $batch_id      ид. (хеш) пакета
  * @param string $batch_version устанавливаемая версия пакета (текущая версия всей статики).
  * @param string $filename      вернется имя файла пакета
  * @param bool   $light         true, если сжимаем по облегченному варианту (сжатие быстрое, но не полное).
  *
  * @return int код ошибки или 0.
  */
 private function _createBatch($type, $batch_id, $batch_version, &$filename, $light = false)
 {
     $log = $this->_log;
     $err = 0;
     $cfile = new CFile();
     $filename = self::STATIC_WDPATH . '/' . $this->createFileName($batch_id, $batch_version, $this->types[$type]);
     $lock_key = $this->_createBatchLockKey($batch_id, $batch_version);
     if (!$light || !$cfile->CheckPath($filename, false)) {
         // проверка на случай, если pgq переполнится.
         $log->writeln("creating new batch file {$filename}, compressing content...");
         if ($content = $this->_compress($type, $light)) {
             $cfile->exclude_reserved_wdc = true;
             if ($cfile->putContent($filename, $content)) {
                 $log->writeln('saving batch info to memcached...');
                 if (!$this->setBatchVersion($batch_id, $batch_version)) {
                     $err = 3;
                 }
             } else {
                 $err = 2;
             }
         } else {
             $err = 1;
         }
     }
     if ($err) {
         $log->writeln("failed ({$err})");
         $filename = null;
     }
     $log->writeln('unset lock...');
     $ok = $this->memBuff->delete($lock_key);
     $log->writeln($ok ? 'ok' : 'failed');
     return $err;
 }
Beispiel #10
0
 /**
  * Удаляет файл из кэша. 
  *
  * @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)));
     }
 }
Beispiel #11
0
/**
 * Получает курсы валют с сайта ЦБ
 *
 * @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;
}
Beispiel #12
0
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;
}
 /**
  * ¬озвращает список публичных типовых услуг по заданным услови¤м и пагинацией
  * 
  * @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;
 }
Beispiel #14
0
 /**
  * Создает новый счет, отправляет на регистрацию в платежную систему.
  *
  * @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;
 }
Beispiel #15
0
 /**
  * Возвращает информацию по заданной HH-валюте
  *
  * @param string $code   код валюты (USD, UAH и т.д.).
  * @return array
  */
 function getHHCurrency($code)
 {
     global $DB;
     $sql = "SELECT * FROM hh_currency WHERE code ILIKE '{$code}'";
     $memBuff = new memBuff();
     if ($rows = $memBuff->getSql($error, $sql, self::MEM_LIFE)) {
         $ret = $rows[0];
     }
     return $ret;
 }
Beispiel #16
0
 /**
  * Получает текущую таблицу для записи посещений.
  * @see stat_collector::LogStat()
  * @return string   stat_log|stat_log_t
  */
 function getLogTable()
 {
     $MEM = new memBuff();
     if (!($table = $MEM->get(stat_collector::LOGTBL_MEM_KEY))) {
         $table = $this->_sDB->val('SELECT value FROM stat_variables WHERE name = ?', 'log_table');
         $this->_setLogTable($table, true);
     }
     if (!$table) {
         $table = 'stat_log';
     }
     return $table;
 }
Beispiel #17
0
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;
}
Beispiel #18
0
        default:
            die("Unknown mode\n");
    }
} else {
    $count = 0;
    $res = $master->query($sql);
    while ($user = pg_fetch_assoc($res)) {
        $msg = preg_replace("/\\{\\{([-_A-Za-z0-9]+)\\}\\}/e", "\$user['\\1']", $pMessage);
        $plproxy->query("SELECT messages_add(?, ?, ?, ?, ?a)", $sender['uid'], $user['uid'], $msg, TRUE, $pFiles);
        if ($count > 0 && $count % $printStatus == 0) {
            echo "Working... {$count} emails sended\n";
        }
        $count++;
    }
}
$memBuff = new memBuff();
$memBuff->set("msgsCnt_updated", time());
if (is_null($count)) {
    die("Settings error\n");
} else {
    if ($count) {
        echo "OK. Total: {$count} users\n";
    } else {
        echo "OK.\n";
    }
}
if ($mass) {
    while (!$plproxy->val("SELECT COUNT(*) FROM messages(?) WHERE id = ?", $sender['uid'], $message_id)) {
        echo "Wait PGQ (10 seconds)...\n";
        sleep(10);
    }
Beispiel #19
0
function WstProj($offer_id, $cur_folder = 1)
{
    session_start();
    $objResponse = new xajaxResponse();
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers_dialogue.php";
    $user_id = get_uid(false);
    if ($r = projects_offers::WasteProj($offer_id, $user_id)) {
        $objResponse->script("\n\t\t  if(pobx = document.getElementById('prjoffer_box{$offer_id}')) {\n\t\t    pobx.parentNode.removeChild(pobx,true);\n\t\t    if(curfc = document.getElementById('prjfld_cnt{$cur_folder}')) {\n\t\t      curfc.innerHTML = parseInt(curfc.innerHTML) + {$r};\n  \t\t    if(wstc = document.getElementById('prjfld_cnt5')) // корзина\n  \t\t      wstc.innerHTML = parseInt(wstc.innerHTML) - {$r};\n  \t\t    if(allc = document.getElementById('prjfld_cnt0')) // все вместе\n  \t\t      allc.innerHTML = parseInt(allc.innerHTML) + {$r};\n\t\t    }\n\t\t    dprj();\n\t\t  }\n\t\t");
    }
    // обновляем мигающий значек проекта
    if (!projects_offers::CheckNewFrlEvents($user_id, false) && !projects_offers_dialogue::CountMessagesForFrl($user_id, true, false)) {
        $objResponse->script("\n            if(\$('new_offers_messages')) \$('new_offers_messages').removeClass('l-projects-a');\n        ");
    }
    $memBuff = new memBuff();
    $memBuff->delete("prjMsgsCnt{$user_id}");
    $memBuff->delete("prjMsgsCntWst{$user_id}");
    $objResponse->script("Notification()");
    return $objResponse;
}
Beispiel #20
0
 /**
  * Совершить покупку
  *
  * @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;
 }
Beispiel #21
0
/**
 * Подписаться на топик сообщества.
 *
 * @param int  $theme_id         - id сообщения из commune_messages
 * @param bool $use_new_template - так как на альфе и боевой используется отчасти старый шаблон, который использует 
 *                               эту функцию,временно ввожу этот флаг, чтобы сохранить работоспособность обоих вариантов
 * */
function SubscribeTheme($theme_id, $use_new_template = false)
{
    session_start();
    if (!isset($_SESSION['uid'])) {
        return;
    }
    $subscribeText = 'Подписаться на тему';
    $unsubscribeText = 'Отписаться от темы';
    if ($use_new_template) {
        $subscribeText = 'Подписаться на комментарии';
        $unsubscribeText = 'Отписаться от комментариев';
    }
    $objResponse = new xajaxResponse();
    $res = commune::SubscribeTheme($theme_id, $_SESSION['uid']);
    $txt = !$res ? $subscribeText : $unsubscribeText;
    if ($use_new_template) {
        $memkey = "comm_topic_subscribe_{$theme_id}" . '_' . $_SESSION['uid'];
        $membuf = new memBuff();
        $membuf->delete($memkey);
        $objResponse->script("\$('subscribe_to_comm').set('html', '{$txt}');");
    } else {
        $objResponse->script("\$('subscrToggle').set('html', '{$txt}');");
    }
    return $objResponse;
}
Beispiel #22
0
/**
 * формирует превью проекта на главной странице.
 */
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("//", '&nbsp;', $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;
        $row['logo_path'] = $logoCFile->path;
    }
    $is_ajax = true;
    // подготовка данных для подробной страницы проекта
    $project = $row;
    $categories = array();
    for ($i = 0; $i < 3; ++$i) {
        $categoryID = __paramValue('int', $data['project_profession' . $i . '_columns'][0]);
        $subcategoryID = __paramValue('int', $data['project_profession' . $i . '_spec_columns'][0]);
        if ($categoryID || $subcategoryID) {
            $categories[] = array('category_id' => $categoryID, 'subcategory_id' => $subcategoryID);
        }
    }
    $project['spec_txt'] = projects::_getSpecsStr($categories, ' / ', ', ', true);
    $project['ico_payed'] = $logoOK;
    $project['is_upped'] = $topOK;
    $project['descr'] = $descrFull;
    $project['logo_id'] = $logoCFile->id;
    $project['prefer_sbr'] = __paramValue('bool', $data['prefer_sbr']) ? 't' : 'f';
    $project['urgent'] = __paramValue('bool', $data['urgent']) ? 't' : 'f';
    $project['hide'] = __paramValue('bool', $data['hide']) ? 't' : 'f';
    if (trim($project['contacts']) != '') {
        $contacts_employer = unserialize($project['contacts']);
        $empty_contacts_employer = 0;
        foreach ($contacts_employer as $name => $contact) {
            if (trim($contact['value']) == '') {
                $empty_contacts_employer++;
            }
        }
        $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
    }
    $isPreview = true;
    $project_exRates = project_exrates::GetAll();
    $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
    ob_start();
    include $_SERVER['DOCUMENT_ROOT'] . '/public/new/tpl.preview.php';
    ?>
    <?php 
    $htmlProject = ob_get_clean();
    $objResponse->assign('project_preview_lenta', 'innerHTML', $htmlLenta);
    $objResponse->assign('project_preview_content', 'innerHTML', $htmlProject);
    $objResponse->script('Public.showPreview()');
    return $objResponse;
}
<?php

/*
 * Удаляет ключи из мемкеша связанные с потоками и чисит таблицы в базе.
 * Это приводит к тому, что структура потоков создается заново.
 * 
 * @author Max 'BlackHawk' Yastrembovich
 */
require_once '../classes/stdf.php';
require_once '../classes/user_content.php';
$mem_buff = new memBuff();
$DB9 = new DB('plproxy');
$mem_buff->touchTag('user_content');
$DB9->query('SELECT mod_streams_release()');
$user_content = new user_content();
$user_content->releaseDelayedStreams();
// чтобы отработал метод _initStreams
 /**
  * Получение списка пользователей.
  *
  * @todo кеш и js
  * 
  * @param string $s        - поисковая строка
  * @param string $limit    - сколько записей запрашивать
  * @param int    $userType - фильтр результатов поиска:  0 - искать и фриленсеров и работодателей,   
  *                         1 - искать только фриленсеров,
  *                         2 - искать только работодателей,
  * @param int    $scope    - определяет, где искать:  0 - в СБР/контактах и общем списке пользователей,
  *                         1 - в СБР/контактах,
  *                         2 - в общем списке пользователей
  *
  * @return string - список пользователей в формате JSON
  */
 public function getUsersList($s, $limit = 'ALL', $userType = 0, $scope = 0)
 {
     session_start();
     $uid = get_uid(false);
     $result = array();
     $contacts = array();
     $more = array();
     // подготовка строки для поиска в shpinx
     if ($s != '') {
         $s = iconv('UTF-8', 'WINDOWS-1251//IGNORE', $s);
         $s = substr(trim($s), 0, 60);
         $r = preg_split("/\\s+/", $s);
         $s = '';
         // если введено два слова, то пологаем что это имя и фамилия и обрабатываем вариант такого поиска особо
         // если одно из слов состоит только из /^[-_a-z0-9]+$/i также полагаем что это может быть часть логина
         if (count($r) == 2) {
             $s = "(@uname {$r[0]} & (@usurname *{$r[1]}* | @usurname {$r[1]})) | (@usurname {$r[0]} & (@uname *{$r[1]}* | @uname {$r[1]}))";
             if (preg_match('/^[-_a-z0-9]+$/i', $r[0])) {
                 $s .= " | (@login *{$r[0]}* & (@uname *{$r[1]}* | @usurname *{$r[1]}*)) | @login *{$r[0]}*";
             }
             if (preg_match('/^[-_a-z0-9]+$/i', $r[1])) {
                 $s .= " | (@login *{$r[1]}* & (@uname {$r[0]} | @usurname {$r[0]})) | @login *{$r[1]}*";
             }
             // во всех остальных случаях полагаем что все слова кроме последнего введены полностью и просто ищем совпадения
         } else {
             for ($i = 0; $i < count($r) - 1; ++$i) {
                 $s .= "{$r[$i]} | ";
             }
             $s .= "*{$r[$i]}* | {$r[$i]}";
         }
     }
     // если нужны контакты в сбр и личке, то получаем их id
     if ($scope == 0 || $scope == 1) {
         // контакты в сбр
         $memBuff = new memBuff();
         $contacts = $memBuff->get("bComboUsers{$uid}");
         if ($contacts === false) {
             if (is_emp()) {
                 $sbr = new sbr_emp($uid);
             } else {
                 $sbr = new sbr_frl($uid);
             }
             $contacts = $sbr->getPartersId();
             // контакты в личке
             $mess = new messages();
             $rows = $mess->GetContacts($uid);
             for ($i = 0; $i < count($rows); ++$i) {
                 if (!in_array($rows[$i]['uid'], $contacts)) {
                     $contacts[] = $rows[$i]['uid'];
                 }
             }
             $memBuff->set("bComboUsers{$uid}", $contacts, 600);
         }
     }
     // $i = 0-контакты, 1-остальные пользователи
     for ($i = 0; $i <= 1; ++$i) {
         if (!$i && !$contacts) {
             continue;
         }
         $rows = array();
         // если поиск не требуется
         if ($s == '') {
             if (!$i) {
                 if ($userType) {
                     $table = $userType == 2 ? 'employer' : 'freelancer';
                 } else {
                     $table = 'users';
                 }
                 $rows = users::GetUsersInfoByIds($limit == 'ALL' ? $contacts : array_slice($contacts, 0, $limit), $table);
             }
             // если требуется
         } else {
             $filter = array();
             if ($contacts) {
                 if (!$i) {
                     $filter['uids'] = $contacts;
                 } else {
                     $filter['nouids'] = $contacts;
                 }
             }
             if ($userType) {
                 $filter['utype'] = $userType - 1;
             }
             $search = new search(get_uid(false));
             $search->addElement('users_simple', true);
             $search->search($s, 0, $filter, $limit == 'ALL' ? 1000 : $limit);
             $res = $search->getElements();
             $rows = $res['users_simple']->getRecords();
             $more[$i] = $res['users_simple']->total - count($rows);
         }
         // готовим вывод
         foreach ($rows as $k => $v) {
             if ($v['uid'] == null) {
                 $v['uid'] = $v['id'];
             }
             $v['uname'] = iconv('WINDOWS-1251', 'UTF-8//IGNORE', $v['uname']);
             $v['usurname'] = iconv('WINDOWS-1251', 'UTF-8//IGNORE', $v['usurname']);
             if ($v['photo']) {
                 $v['path'] = 'users/' . substr($v['login'], 0, 2) . '/' . $v['login'] . '/foto';
                 $v['photo'] = get_unanimated_gif($v['login'], $v['photo']);
             } else {
                 $v['photo'] = '/images/temp/small-pic.gif';
             }
             $v['isContacts'] = (int) (!(bool) $i);
             $result[] = $v;
         }
     }
     //return $result;
     // выводим
     $data = array('list' => $result, 'counters' => array('moreContacts' => $more[0], 'moreUsers' => $more[1]), 'dav' => WDCPREFIX);
     return json_encode($data);
 }
Beispiel #25
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/quick_payment/quickPaymentPopupFactory.php';
$uid = get_uid(false);
if (!$uid) {
    header_location_exit('/404.php');
}
$_SESSION['quickprj_is_success'] = 'y';
if ($_SESSION['quickprj_is_begin'] == 1) {
    unset($_SESSION['quickprj_is_begin']);
    $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);
            header("Location: /public/?step=2&public={$project_id}");
        } else {
            $friendly_url = getFriendlyURL('project', $project_id);
            $_SESSION['quickprj_ok'] = 1;
            header('Location: ' . $friendly_url . '?quickprj_ok=1');
        }
        $memBuff->delete('bill_ok_project_' . $uid);
    } else {
        header('Location: /');
    }
    exit;
}
$_SESSION['quickmas_is_success'] = 'y';
if ($_SESSION['quickmas_is_begin'] == 1) {
Beispiel #26
0
    }
}
/*
$q = (!empty($payment))?http_build_query($payment):null;
$host .= "/test/bill/ykassa_order.php";
$host .= ($q)?"?{$q}":"?scid=52128&ShopID=17004&Sum=399&customerNumber=179&paymentType=PC&orderId=610&invoiceId=7777";
echo "<p><a href='{$host}'>{$host}</a></p>";
*/
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))));
Beispiel #27
0
 /**
  * Возвращает количество жалоб о спаме, удовлетворяющих условиям выборки
  * 
  * @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;
 }
Beispiel #28
0
 /**
  * Проверяет, включен ли чат в данные момент у пользователя (метод статический).
  * 
  * @param int $uid uid пользователя для проверки
  *
  * @return bool true - чат в данный момент активен, false - нет
  */
 public static function active($uid)
 {
     if (isset($this)) {
         $memBuff = $this->_memBuff;
     } else {
         $memBuff = new memBuff();
     }
     $v = $memBuff->get(self::MEMBUFF_COUNTERS_KEY . $uid . ':connects');
     return (bool) $v;
 }
Beispiel #29
0
 /**
  * Собирает FROM часть SQL запроса по условие выборки в $this->aGet.
  */
 public function fseoSetFrom()
 {
     global $DB;
     $sRndSelect = '';
     $sRndRestrict = '';
     // если выборка должна быть случайной, то нужно случайное число
     if (!empty($this->aGet['random'])) {
         $memBuff = new memBuff();
         if (!($nRnd = $memBuff->get('fseo_' . $this->sLinkId . '_rnd'))) {
             $nRnd = mt_rand(1, 1000);
             $memBuff->set('fseo_' . $this->sLinkId . '_rnd', $nRnd, self::CATALOG_MEM_LIFE);
         }
         $sRndSelect = ", fu.uid % {$nRnd} AS rnd_num";
         $sRndRestrict = 'ORDER BY rnd_num LIMIT ' . self::RANDOM_LIMIT;
     }
     if (!empty($this->aGet['main_prof']) || !empty($this->aGet['additional_prof'])) {
         // когда есть основная или дополнительная профа
         $aSQL = array();
         if (!empty($this->aGet['main_prof'])) {
             // когда есть основная профа
             $aSQL['main_choise'] = 'SELECT *' . $sRndSelect . ' FROM fu WHERE spec_orig = ' . $this->sSQLProfId;
         } elseif (!empty($this->aGet['additional_prof'])) {
             // когда есть дополнительная профа
             $aSQL['add_choise'] = 'SELECT fu.*' . $sRndSelect . ' FROM fu 
                 INNER JOIN spec_add_choise sp ON sp.user_id = fu.uid 
                 AND sp.prof_id = ' . $this->sSQLProfId . ' WHERE fu.is_pro = true';
             $aSQL['paid_choise'] = 'SELECT fu.*' . $sRndSelect . ' FROM fu 
                 INNER JOIN spec_paid_choise pc ON pc.user_id = fu.uid 
                 AND pc.prof_id  = ' . $this->sSQLProfId . ' AND pc.paid_to > NOW()';
         }
         $sBegin = $sRndRestrict ? '((' : '(';
         $sEnd = $sRndRestrict ? ") {$sRndRestrict} ) AS s " : ' ) AS s ';
         $this->aSQL['from'] = $sBegin . implode(' UNION ALL ', $aSQL) . $sEnd;
     } else {
         // когда нет вообще никаких проф
         $this->aSQL['from'] = $sRndSelect ? '(SELECT *' . $sRndSelect . ' FROM fu ' . $sRndRestrict . ') s' : 'fu s';
     }
 }
Beispiel #30
0
        $projects = new projects();
        if ($prj_id && $user->is_pro == 't') {
            $error .= $projects->publishedMovedToVacancy(array('uid' => $uid), $prj_id);
        }
        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) {