Ejemplo n.º 1
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;
 }
Ejemplo n.º 2
0
<?php

ini_set('display_errors', 0);
//error_reporting(E_ALL ^ E_NOTICE);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '512M');
if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/');
}
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
//require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php");
//require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/profiler.php");
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/op_codes_price.php';
exit;
//$data = op_codes_price::getAllOpCodesPrice();
$data = op_codes_price::getOpCodePrice(143);
print_r($data);
exit;
Ejemplo n.º 3
0
 /**
  * Обработка входящей операции помещения услуги в "Список услуг" согласно входящей op_code.
  * 
  * @param int   $op_code ИД операции
  * @param array $code    Данные операции (если есть на момент вызова функции)
  *
  * @return array
  */
 public function prepareOperationCode($op_code, $code = null)
 {
     $code = $code == null ? current(op_codes::getCodes($op_code)) : $code;
     $_op_code = self::getOpCodeByDiscount($op_code);
     $data = array();
     switch ($_op_code) {
         // Конкурс
         case 9:
         case 106:
         case 121:
         case 122:
         case 123:
         case 124:
         case 125:
         case 126:
         case 127:
         case 128:
         case 129:
         case 130:
             //Платный конкурс
         //Платный конкурс
         case 86:
             //Платный проект (вакансия, устаревший опкод)
         //Платный проект (вакансия, устаревший опкод)
         case 53:
             //Покупка вакансии
         //Покупка вакансии
         case 113:
             //пользователь не PRO
         //пользователь не PRO
         case 192:
             //пользователь PRO
             //Платные услуги проектов
         //пользователь PRO
         //Платные услуги проектов
         case 138:
         case 139:
         case 140:
         case 141:
             if (is_emp($this->user['role'])) {
                 $data = array('ammount' => 0, 'pro_ammount' => 0, 'descr' => '', 'comment' => 'Платный проект / ', 'service' => 'projects');
                 if (!empty($this->_option)) {
                     $i = 0;
                     if ($this->_option['items']['bold'] > 0) {
                         $data['option'] = 'bold';
                         $data['comment'] .= ($i++ ? ', ' : '') . 'жирный шрифт';
                         $data['ammount'] += $this->_option['items']['bold'];
                     }
                     if ($this->_option['items']['color'] > 0) {
                         $data['option'] = 'color';
                         $data['comment'] .= ($i++ ? ', ' : '') . 'подсветка фоном';
                         $data['ammount'] += $this->_option['items']['color'];
                     }
                     if ($this->_option['items']['urgent'] > 0) {
                         $data['option'] = 'urgent';
                         $data['comment'] .= ($i++ ? ', ' : '') . 'срочный';
                         $data['ammount'] += $this->_option['items']['urgent']['no_pro'];
                         $data['pro_ammount'] += (int) $this->_option['items']['urgent']['pro'];
                     }
                     if ($this->_option['items']['hide'] > 0) {
                         $data['option'] = 'hide';
                         $data['comment'] .= ($i++ ? ', ' : '') . 'скрытый';
                         $data['ammount'] += $this->_option['items']['hide']['no_pro'];
                         $data['pro_ammount'] += (int) $this->_option['items']['hide']['pro'];
                     }
                     if ($this->_option['items']['logo'] > 0) {
                         $data['option'] = 'logo';
                         $data['descr'] = $this->_option['logo_link'];
                         $data['src_id'] = $this->_option['logo_id'];
                         $data['comment'] .= ($i++ ? ', ' : '') . 'логотип';
                         $data['ammount'] += $this->_option['items']['logo']['no_pro'];
                         $data['pro_ammount'] += (int) $this->_option['items']['logo']['pro'];
                     }
                     if ($this->_option['items']['office'] > 0) {
                         $data['option'] = 'office';
                         $data['comment'] .= ($i++ ? ', ' : '') . 'в офис';
                         $data['ammount'] += $this->_option['items']['office'];
                     }
                     if ($this->_option['items']['top'] > 0) {
                         $data['option'] = 'top';
                         $data['op_count'] = $this->_option['addTop'];
                         $topDays = $this->_option['addTop'];
                         $data['comment'] .= ($i++ ? ', ' : '') . 'закрепление наверху на ' . $topDays . ' ' . getTermination($topDays, array(0 => 'день', 1 => 'дня', 2 => 'дней'));
                         $data['ammount'] += $this->_option['items']['top']['no_pro'];
                         $data['pro_ammount'] += (int) $this->_option['items']['top']['pro'];
                     }
                     if ($this->_option['items']['contest'] > 0) {
                         $data['option'] = 'contest';
                         $data['comment'] = 'Публикация конкурса';
                         $data['ammount'] += is_pro() ? $this->_option['items']['contest']['pro'] : $this->_option['items']['contest']['no_pro'];
                         $data['pro_ammount'] += $this->_option['items']['contest']['pro'];
                     }
                     $data['parent_id'] = $this->_option['prj_id'];
                     if ($this->_option['is_edit']) {
                         $data['parent_table'] = 'projects';
                     } else {
                         $data['parent_table'] = 'draft_projects';
                     }
                 }
             }
             break;
             // Поднятие платных мест
         // Поднятие платных мест
         case 21:
             if (!is_emp($this->user['role'])) {
                 $data = array('ammount' => round($code['sum'], 2), 'descr' => '', 'comment' => $code['op_name'], 'service' => 'first_page_up');
                 if (!empty($this->_option)) {
                     $data['descr'] = $this->_option['prof_id'];
                     $data['src_id'] = $this->_option['prof_id'];
                     $data['ammount'] = $this->_option['sum'];
                     if ($this->_option['prof_id'] == -1) {
                         $data['comment'] = 'Поднятие платного места на главной';
                     } else {
                         $data['comment'] = 'Поднятие платного места в каталоге';
                     }
                 }
             }
             break;
             // Поднятие на первое место в платных местах
         // Поднятие на первое место в платных местах
         case 145:
         case 146:
         case 154:
             if (!is_emp($this->user['role'])) {
                 $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => $code['op_name'], 'service' => 'first_page_top');
                 if (!empty($this->_option)) {
                     $data['descr'] = $this->_option['prof_id'];
                     $data['src_id'] = $this->_option['prof_id'];
                     $data['comment'] = $this->_option['comment'];
                 }
             }
             break;
             // Пополнение счета
         // Пополнение счета
         case 135:
             $data = array('ammount' => $this->_option['acc_sum'], 'descr' => '', 'comment' => 'Погашение задолженности - ' . $this->_option['acc_sum']);
             break;
             //Резервирование средств
         //Резервирование средств
         case 136:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php';
             $reserve_data = @$this->_option['reserve_data'];
             if (!$reserve_data) {
                 break;
             }
             $comment = ReservesModelFactory::getInstance($reserve_data['type'])->getBillComment($reserve_data['src_id']);
             $data = array('ammount' => $this->_option['acc_sum'], 'parent_id' => $reserve_data['id'], 'parent_table' => 'reserves', 'comment' => $comment);
             break;
             // Автоответы
         // Автоответы
         case 137:
             $data = array('ammount' => $this->_option['acc_sum'], 'comment' => 'Покупка автоответа', 'parent_id' => $this->_option['autoresponse_id'], 'parent_table' => 'autoresponse');
             break;
             // Платное место в карусели
         // Платное место в карусели
         case 65:
             // На главной странице
         // На главной странице
         case 73:
             // В каталоге
             if (!is_emp($this->user['role'])) {
                 $data = array('ammount' => round($code['sum'], 2), 'descr' => 'Оплачено', 'comment' => 'Оплата новых платных мест', 'service' => 'pay_place');
                 if (!empty($this->_option)) {
                     $data['option'] = serialize($this->_option);
                     //поддержка старого режима где небыло возможности
                     //приобрести несколько размещений
                     if (isset($this->_option['num'])) {
                         $data['ammount'] = $data['ammount'] * $this->_option['num'];
                         $data['op_count'] = $this->_option['num'];
                     }
                 }
             }
             break;
             // Аккаунт PROFI для фрилансера
         // Аккаунт PROFI для фрилансера
         case 164:
             // Аккаунт PROFI на 1 месяц
             $to = 'на 1 месяц';
             if (!is_emp($this->user['role'])) {
                 $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PROFI {$to}", 'service' => 'pro');
             }
             break;
             // Аккаунт ПРО для фрилансера
         // Аккаунт ПРО для фрилансера
         case 47:
             // Тестовый аккаунт ПРО
             if ($this->IsUserWasPro()) {
                 break;
             }
             $to = 'на 1 неделю';
         case 132:
             // Аккаунт ПРО на 1 день
             $to = !$to ? 'на 1 день' : $to;
         case 131:
             // Аккаунт ПРО на 1 неделю
             $to = !$to ? 'на 1 неделю' : $to;
         case 163:
             //Тестовый ПРО на месяц
         //Тестовый ПРО на месяц
         case 48:
             // Аккаунт ПРО на 1 месяц
             $to = !$to ? 'на 1 месяц' : $to;
         case 49:
             // Аккаунт ПРО на 3 месяца
             $to = !$to ? 'на 3 месяца' : $to;
         case 50:
             // Аккаунт ПРО на 6 месяцев
             $to = !$to ? 'на 6 месяцев' : $to;
         case 51:
             // Аккаунт ПРО на 12 месяцев
             $to = !$to ? 'на 1 год' : $to;
             if (!is_emp($this->user['role'])) {
                 $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PRO {$to}", 'service' => 'pro');
             }
             break;
             // Аккаунт ПРО для работодателей
         // Аккаунт ПРО для работодателей
         case 15:
             // Аккаунт ПРО на 1 месяц
             $code['sum'] = $code['sum'] * payed::PRICE_EMP_PRO / 10;
             $to = 'на 1 месяц';
         case 118:
             // Аккаунт ПРО на 3 месяца
             $to = !$to ? 'на 3 месяца' : $to;
         case 119:
             // Аккаунт ПРО на 6 месяцев
             $to = !$to ? 'на 6 месяцев' : $to;
         case 120:
             // Аккаунт ПРО на 12 месяцев
             $to = !$to ? 'на 1 год' : $to;
             if (is_emp($this->user['role'])) {
                 $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PRO {$to}", 'service' => 'pro');
             }
             break;
         case 45:
             $data = array('ammount' => round($this->_option['amount'], 2), 'parent_id' => $this->_option['masssending_id'], 'parent_table' => 'mass_sending', 'descr' => 'Рассылка по каталогу', 'comment' => 'Рассылка по каталогу', 'service' => 'massending');
             break;
         case 117:
             // Оплата верификации
             $data = array('option' => serialize($this->_option['data']), 'src_id' => $this->_option['prev']['id'], 'ammount' => round($code['sum'], 2), 'descr' => 'Верификация через сервис FF.RU', 'comment' => 'Верификация через сервис FF.RU', 'service' => 'verify_ff');
             break;
         case 133:
             $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Верификация WebMoney', 'comment' => 'Верификация WebMoney', 'service' => 'verify_webmoney');
             break;
             //Верификация банковской картой через ЯКассу
         //Верификация банковской картой через ЯКассу
         case 191:
             $data = array('ammount' => round($code['sum'], 2), 'descr' => 'Верификация банковской картой', 'comment' => 'Верификация банковской картой', 'option' => serialize($this->_option));
             break;
             // Закрепление в каталоге фрилансеров
         // Закрепление в каталоге фрилансеров
         case 142:
             // Корневой каталог
         // Корневой каталог
         case 143:
             // Раздел
         // Раздел
         case 144:
             // Подраздел
         // Подраздел
         case 148:
             // Продление в корневом каталоге
         // Продление в корневом каталоге
         case 149:
             // Продление в разделе
         // Продление в разделе
         case 150:
             // Продление в подразделе
             if (!is_emp($this->user['role'])) {
                 //Получаем диф.цену
                 $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']);
                 $code['sum'] = $sum ? $sum : $code['sum'];
                 $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Закрепление в каталоге фрилансеров', 'service' => 'frlbind');
                 if (!empty($this->_option)) {
                     $data['src_id'] = $this->_option['prof_id'];
                     $data['ammount'] = $data['ammount'] * $this->_option['weeks'];
                     $data['op_count'] = $this->_option['weeks'];
                 }
             }
             break;
             // Поднятие закрепления в каталоге фрилансеров
         // Поднятие закрепления в каталоге фрилансеров
         case 151:
             // Корневой каталог
         // Корневой каталог
         case 152:
             // Раздел
         // Раздел
         case 153:
             // Подраздел
         // Подраздел
         case 194:
             // Оплата из буфера
             if (!is_emp($this->user['role'])) {
                 //Получаем диф.цену
                 $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']);
                 $code['sum'] = $sum ? $sum : $code['sum'];
                 $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Поднятие закрепления в каталоге фрилансеров', 'service' => 'frlbindup');
                 if (!empty($this->_option)) {
                     $data['src_id'] = $this->_option['prof_id'];
                     $data['op_count'] = 1;
                 }
             }
             break;
             // Закрепление в каталоге услуг
         // Закрепление в каталоге услуг
         case 155:
             // Лендинг
         // Лендинг
         case 156:
             // Корневой каталог
         // Корневой каталог
         case 157:
             // Раздел
         // Раздел
         case 158:
             // Подраздел
             if (!is_emp($this->user['role'])) {
                 //Получаем диф.цену
                 $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']);
                 $code['sum'] = $sum ? $sum : $code['sum'];
                 $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Закрепление в каталоге услуг', 'service' => 'tservicebind');
                 if (!empty($this->_option)) {
                     $data['src_id'] = $this->_option['prof_id'];
                     $data['ammount'] = $data['ammount'] * $this->_option['weeks'];
                     $data['op_count'] = $this->_option['weeks'];
                     $data['option'] = serialize(array('tservice_id' => $this->_option['tservice_id'], 'is_prolong' => $this->_option['is_prolong']));
                 }
             }
             break;
             // Поднятие закрепления в каталоге услуг
         // Поднятие закрепления в каталоге услуг
         case 159:
             // Лендинг
         // Лендинг
         case 160:
             // Корневой каталог
         // Корневой каталог
         case 161:
             // Раздел
         // Раздел
         case 162:
             // Подраздел
         // Подраздел
         case 193:
             // Оплата из буфера
             if (!is_emp($this->user['role'])) {
                 //Получаем диф.цену
                 $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']);
                 $code['sum'] = $sum ? $sum : $code['sum'];
                 $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Поднятие закрепления в каталоге услуг', 'service' => 'tservicebindup');
                 if (!empty($this->_option)) {
                     $data['src_id'] = $this->_option['bind_id'];
                     $data['op_count'] = 1;
                 }
             }
             break;
     }
     unset($this->_option);
     // Сбрасываем опции чтобы не путалось при покупке сразу нескольких услуг на странице
     //Перебиваем примечание к платежу по опкоду (любому и скидочному тоже)
     if ($_descr = $this->getDescrByOpCode($op_code)) {
         $data['descr'] = $_descr;
     }
     if ($this->promoCode) {
         $data['promo_code'] = $this->promoCode['id'];
         if (!isset($this->promoCode['is_original_price'])) {
             $promoCodes = new PromoCodes();
             $data['ammount'] = $data['ammount'] - $promoCodes->getDiscount($this->promoCode, $data['ammount']);
             //@todo: для чего pro_ammount ?
             if (isset($data['pro_ammount']) && $data['pro_ammount'] > 0) {
                 $data['pro_ammount'] = $data['pro_ammount'] - $promoCodes->getDiscount($this->promoCode, $data['pro_ammount']);
             }
         }
     }
     return $data;
 }
Ejemplo n.º 4
0
 /**
  * Получить данные указанного опкода.
  * 
  * @param type $opCode
  *
  * @return bool
  */
 public static function getDataByOpCode()
 {
     $args = func_get_args();
     $opCode = $args[0];
     unset($args[0]);
     $param = @$args;
     //Проверяем есть ли диф.цена для услуги
     $price = op_codes_price::getOpCodePrice($opCode, $param);
     if ($price) {
         return array('sum' => $price);
     }
     //Если нет то отрабатываем обычную цену из op_codes
     self::getAllOpCodes();
     if (isset(self::$_cache_data[$opCode])) {
         return self::$_cache_data[$opCode];
     }
     return false;
 }
Ejemplo n.º 5
0
<?php

ini_set('display_errors', 0);
//error_reporting(E_ALL ^ E_NOTICE);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '512M');
if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/');
}
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
//require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php");
//require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/profiler.php");
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/op_codes.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/op_codes_price.php';
//------------------------------------------------------------------------------
$results = array();
//if(count($argv) > 1) parse_str(implode('&', array_slice($argv, 1)), $_GET);
//------------------------------------------------------------------------------
$results['op_codes_price::updateCache'] = (int) op_codes_price::updateCache();
op_codes::clearCache();
$results['op_codes::getAllOpCodes'] = (int) op_codes::getAllOpCodes();
//------------------------------------------------------------------------------
array_walk($results, function (&$value, $key) {
    $value = sprintf('%s = %s' . PHP_EOL, $key, $value);
});
print_r(implode('', $results));
exit;