/**
  * Отображение страницы /tu/.
  */
 public function actionIndex()
 {
     $uid = get_uid();
     $page = __paramInit('int', 'page', 'page', 1);
     $limit = 21;
     $empty_criteria = $this->filter_widget->filter->isEmpty();
     $prof_id = $this->filter_widget->filter->category ? $this->filter_widget->filter->category : $this->filter_widget->filter->category_group;
     $tserviceModel = TServiceModel::model();
     $freelancerModel = FreelancerModel::model();
     $tservicesCatalogModel = new tservices_catalog();
     $tservicesCatalogModel->category_id = $prof_id;
     $kind = tservices_binds::KIND_ROOT;
     if ($this->filter_widget->filter->category) {
         $kind = tservices_binds::KIND_SPEC;
     } elseif ($this->filter_widget->filter->category_group) {
         $kind = tservices_binds::KIND_GROUP;
     }
     if ($page == 1 && $uid && !is_emp()) {
         $this->getClips()->add('bind_teaser', $this->widget('TServiceBindTeaser', array('kind' => $kind, 'uid' => $uid, 'prof_id' => $prof_id, 'is_inner' => !$empty_criteria), true));
         $this->getClips()->add('bind_teaser_short', $this->widget('TServiceBindTeaserShort', array(), true));
     }
     $free_places = true;
     //Сначала берем закрепленные
     $tservicesCatalogModel->setPage($limit, $page);
     $tservices_binded = $tservicesCatalogModel->getBindedList($kind);
     //Тут только для текущей страницы
     $tservices_binded_ids = $tservicesCatalogModel->getBindedIds($kind);
     //Тут для всех страниц
     $count_binded = count($tservices_binded_ids);
     $count_binded_cur_page = count($tservices_binded);
     if ($count_binded_cur_page) {
         // расширение сведений о типовых услугах
         $tserviceModel->extend($tservices_binded, 'id')->readVideos($tservices_binded, 'videos', 'videos');
         // во всех строках "распаковать" массив видео-клипов
         // расширение сведений о пользователях
         $freelancerModel->extend($tservices_binded, 'user_id', 'user');
         //Добавляем попапы продления и поднятия к услугам текущего юзера
         foreach ($tservices_binded as $key => $tservice) {
             $is_owner = $tservice['user_id'] == $uid;
             if ($is_owner) {
                 $this->getClips()->add('bind_links_' . $tservice['id'], $this->widget('TServiceBindLinks', array('kind' => $kind, 'uid' => $uid, 'is_inner' => !$empty_criteria, 'date_stop' => $tservice['date_stop'], 'allow_up' => $page > 1 || $key > 0, 'tservice_id' => $tservice['id']), true));
                 if (quickPaymentPopupTservicebind::getInstance()->inited == false) {
                     quickPaymentPopupTservicebind::getInstance()->init(array('uid' => $uid, 'kind' => $kind, 'prof_id' => $prof_id));
                 }
                 $popup_id = quickPaymentPopupTservicebind::getInstance()->getPopupId($tservice['id']);
                 $popups[] = quickPaymentPopupTservicebind::getInstance()->render(array('is_prolong' => true, 'date_stop' => $tservice['date_stop'], 'popup_id' => $popup_id, 'tservices_cur' => $tservice['id'], 'tservices_cur_text' => $tservice['title']));
                 if ($key > 0) {
                     if (quickPaymentPopupTservicebindup::getInstance()->inited == false) {
                         quickPaymentPopupTservicebindup::getInstance()->init(array('uid' => $uid, 'tservices_id' => $tservice['id'], 'tservices_title' => $tservice['title'], 'kind' => $kind, 'prof_id' => $prof_id));
                     }
                     $popup_id = quickPaymentPopupTservicebindup::getInstance()->getPopupId($tservice['id']);
                     $popups[] = quickPaymentPopupTservicebindup::getInstance()->render(array('popup_id' => $popup_id, 'tservices_cur' => $tservice['id'], 'tservices_cur_text' => $tservice['title']));
                 }
             }
         }
         $free_places = $count_binded_cur_page < $limit;
     }
     if ($free_places) {
         //Есть места для отображения незакрепленных услуг
         $tservicesCatalogModel->keywords = $this->filter_widget->filter->keywords;
         $tservicesCatalogModel->price_ranges = $this->filter_widget->filter->prices;
         $tservicesCatalogModel->price_max = $this->filter_widget->filter->price_max;
         $tservicesCatalogModel->country_id = $this->filter_widget->filter->country;
         $tservicesCatalogModel->city_id = $this->filter_widget->filter->city;
         $tservicesCatalogModel->order = $this->filter_widget->filter->order;
         $tservicesCatalogModel->setPage($limit, $page, $count_binded, $count_binded_cur_page);
         // поиск записей
         $list = $tservicesCatalogModel->cache(300)->getList($tservices_binded_ids);
         $tservices_search = $list['list'];
         $total = $list['total'];
         // расширение сведений о типовых услугах
         $tserviceModel->extend($tservices_search, 'id')->readVideos($tservices_search, 'videos', 'videos');
         // во всех строках "распаковать" массив видео-клипов
         // расширение сведений о пользователях
         $freelancerModel->extend($tservices_search, 'user_id', 'user');
     }
     $tservices = $tservices_binded;
     foreach ($tservices_search as $tservice) {
         if (count($tservices) < $limit && !in_array($tservice['id'], $tservices_binded_ids)) {
             $tservices[] = $tservice;
         }
     }
     $tservicesCatalogModel2 = new tservices_catalog();
     $tservicesCatalogModel2->category_id = $prof_id;
     $tservicesCatalogModel2->order = TServiceFilter::ORDER_PRICE_ASC;
     $tservicesCatalogModel2->setPage(1, 1);
     $list2 = $tservicesCatalogModel2->cache(300)->getList();
     $min_price = $list2['list'][0]['price'];
     SeoTags::getInstance()->initTserviceList($prof_id, $this->filter_widget->filter->category > 0, $total, $min_price);
     $view_name = !$empty_criteria ? 'list' : 'tile';
     $this->is_main = $empty_criteria;
     /*
             if ($empty_criteria)
             {
                 // над списком типовых услуг вывести рекламный блок раздела
                 require_once($_SERVER['DOCUMENT_ROOT'] . '/tu/widgets/TServiceCatalogPromo.php');
                 $this->getClips()->add('content-promo', $this->widget('TServiceCatalogPromo', array(), true));
             }
     */
     $tservices_binds = new tservices_binds($kind);
     $this->render($view_name, array('category_title' => $this->filter_widget->getCategoryAngGroupTitle(' / '), 'total' => $total, 'nothing_found' => empty($tservices), 'tservices' => $tservices, 'page' => $tservicesCatalogModel->page, 'limit' => $limit, 'paging_base_url' => $this->filter_widget->getUserFriendlyUrl(), 'is_adm' => $this->is_adm, 'orders' => $this->filter_widget->getAllowedOrders(true), 'cur_order' => $this->filter_widget->filter->order, 'uid' => $uid, 'popups' => $popups, 'bind_up_price' => $tservices_binds->getPrice(true, $uid, $prof_id)));
 }
Esempio n. 2
0
        $is_owner = $tservice['user_id'] == $uid;
        if ($is_owner) {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/quick_payment/quickPaymentPopupTservicebind.php';
            if (quickPaymentPopupTservicebind::getInstance()->inited == false) {
                quickPaymentPopupTservicebind::getInstance()->init(array('uid' => $uid, 'kind' => tservices_binds::KIND_LANDING));
            }
            $popup_id = quickPaymentPopupTservicebind::getInstance()->getPopupId($tservice['id']);
            $popups[] = quickPaymentPopupTservicebind::getInstance()->render(array('is_prolong' => true, 'date_stop' => $tservice['date_stop'], 'popup_id' => $popup_id, 'tservices_cur' => $tservice['id'], 'tservices_cur_text' => $tservice['title']));
            if ($key > 0) {
                $isExistsBindUp = true;
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/quick_payment/quickPaymentPopupTservicebindup.php';
                if (quickPaymentPopupTservicebindup::getInstance()->inited == false) {
                    quickPaymentPopupTservicebindup::getInstance()->init(array('uid' => $uid, 'tservices_id' => $tservice['id'], 'tservices_title' => $tservice['title'], 'kind' => tservices_binds::KIND_LANDING));
                }
                $popup_id = quickPaymentPopupTservicebindup::getInstance()->getPopupId($tservice['id']);
                $popups[] = quickPaymentPopupTservicebindup::getInstance()->render(array('popup_id' => $popup_id, 'tservices_cur' => $tservice['id'], 'tservices_cur_text' => $tservice['title']));
            }
        }
    }
    if ($isExistsBindUp) {
        $tservicesBinds = new tservices_binds(tservices_binds::KIND_LANDING);
        $bindUpPrice = $tservicesBinds->getPrice(true, $uid);
    }
}
$suffix = $uid <= 0 ? '_anon' : (is_emp() ? '_emp' : '_frl');
$content_landing_image = $_SERVER['DOCUMENT_ROOT'] . "/templates/landings/tpl.landing_image{$suffix}.php";
$content = $_SERVER['DOCUMENT_ROOT'] . "/templates/landings/tpl.landing_tservices.php";
// Список профессий
$prfs = new professions();
$profs = $prfs->GetAllProfessions("", 0, 1);
// Сортировка категорий профессий по названию
Esempio n. 3
0
 /**
  * Уведомление фрилансеру после того, 
  * как услуга опустилась на 4 место и ниже в списке закреплений ТУ
  * 
  * @return type
  */
 public function remindBindsUp()
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/tservices/tservices_binds.php";
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/quick_payment/quickPaymentPopupTservicebind.php";
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/quick_payment/quickPaymentPopupTservicebindup.php";
     $tservices_categories = new tservices_categories();
     //Базовый шаблон письма
     $layout = Template::render(TSERVICES_BINDS_TPL_BASE_LAYOUT, array('params' => '', 'content' => '%CONTENT%'));
     $this->message = nl2br($layout);
     $count = 0;
     $page = 0;
     while ($binds = tservices_binds::getDowned(++$page, 50)) {
         $bind_ids = array();
         foreach ($binds as $el) {
             $kind_txt = '';
             $link = '';
             $link_prolong = '/?' . quickPaymentPopupTservicebind::getPopupId($el['tservice_id']) . '=1';
             $link_up = '/?' . quickPaymentPopupTservicebindup::getPopupId($el['tservice_id']) . '=1';
             switch ($el['kind']) {
                 case tservices_binds::KIND_LANDING:
                     $kind_txt = 'на главной странице сайта';
                     break;
                 case tservices_binds::KIND_ROOT:
                     $kind_txt = 'в общем разделе каталога услуг';
                     $link = '/tu';
                     break;
                 case tservices_binds::KIND_GROUP:
                     $category = $tservices_categories->getCategoryById($el['prof_id']);
                     $kind_txt = sprintf("в разделе %s каталога услуг", @$category['title']);
                     $link = sprintf("/tu/%s", @$category['link']);
                     break;
                 case tservices_binds::KIND_SPEC:
                     $category = $tservices_categories->getCategoryById($el['prof_id']);
                     $kind_txt = sprintf("в подразделе %s каталога услуг", @$category['title']);
                     $link = sprintf("/tu/%s", @$category['link']);
                     break;
             }
             $link_prolong = $link . $link_prolong;
             $link_up = $link . $link_up;
             //Шаблон уведомления
             $content = Template::render(TSERVICES_BINDS_TPL_MAIL_PATH . "remind_up.tpl.php", array('smail' => $this, 'kind' => $kind_txt, 'title' => $el['title'], 'link_up' => $link_up, 'link_prolong' => $link_prolong));
             $this->recipient[] = array('email' => $this->_formatFullname($el, true), 'extra' => array('CONTENT' => nl2br($content)));
             $bind_ids[] = $el['id'];
         }
         $count += count($bind_ids);
         $massId = $this->send('text/html');
         if ($massId) {
             tservices_binds::markSent('up', $bind_ids);
         }
     }
     return $count;
 }
                ?>
">
                                Продлить
                            </a>
                            <?php 
                if ($k > 0) {
                    ?>
                                <div class="b-layout__txt b-layout__txt_bold b-layout__txt_color_6db335 b-layout__txt_padbot_5 b-layout__txt_fontsize_15 b-layout__txt_padtop_20">
                                    Поднимите услугу на<br>1 место за <?php 
                    echo view_cost_format($bindUpPrice, false);
                    ?>
 рублей
                                </div>
                                <a class="b-button b-button_flat b-button_flat_green" href="#"
                                   data-popup="<?php 
                    echo quickPaymentPopupTservicebindup::getInstance()->getPopupId($tservice['id']);
                    ?>
">
                                    Поднять
                                </a>
                            <?php 
                }
                ?>
                        </div>
                     
                        <?php 
            }
            ?>
                    </div>
                </div>
            </div>
/**
 * Оплата через Плати потом
 * 
 * @param type $type - тип оплаты
 * @param type $data - данные по параметрам покупаемой услуги
 * @return \xajaxResponse
 */
function quickPaymentTservicebindupPlatipotom($type, $data)
{
    $is_error = true;
    $uid = get_uid(false);
    $objResponse =& new xajaxResponse();
    $kind = (int) @$data['kind'];
    $tservice_id = (int) @$data['tservice_text_db_id'];
    $prof_id = (int) @$data['prof_id'];
    //$is_prolong = (bool)@$data['is_prolong'];
    $promo_code = (string) @$data['promo'];
    $tservices_binds = new tservices_binds($kind);
    $bind = $tservices_binds->getItem($uid, $tservice_id, $prof_id);
    if ($bind) {
        $is_error = false;
        $bill = new billing($uid);
        //Допустимо использование промокодов
        $bill->setPromoCodes('SERVICE_TSERVICEBIND', $promo_code);
        $op_code = $tservices_binds->getOpCode(true);
        $option = array('bind_id' => $bind['id']);
        //Формируем заказ
        $billReserveId = $bill->addServiceAndCheckout($op_code, $option);
        $payed_sum = $bill->getRealPayedSum();
        $platipotom = new platipotom();
        $html_form = $platipotom->render($payed_sum, $bill->account->id, $billReserveId);
        if ($html_form) {
            $idx = quickPaymentPopupTservicebindup::getPopupId($tservice_id);
            $objResponse->script("\n                var qp_form_wrapper = \$\$('#" . $idx . " .__quick_payment_form');\n                if(qp_form_wrapper){    \n                    qp_form_wrapper.set('html','{$html_form}');\n                    qp_form_wrapper.getElement('form')[0].submit();\n                }\n            ");
            //сохранаем в сессию куда перейти при успешной покупке
            $redirect = (string) @$data['redirect'];
            $_SESSION[quickPaymentPopup::QPP_REDIRECT] = $redirect;
        }
    }
    // Показываем предупреждение в случае ошибки
    if ($is_error) {
        $idx = quickPaymentPopupTservicebindup::getPopupId($tservice_id);
        $objResponse->script("\n            var qp = window.quick_payment_factory.getQuickPaymentById('tservicebindup', '" . $idx . "');\n            if(qp) qp.show_error('Возникла ошибка при поднятии закрепления услуги!');\n        ");
    }
    return $objResponse;
}