/** * Отображение страницы /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))); }
$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); // Сортировка категорий профессий по названию
/** * Уведомление фрилансеру после того, * как услуга опустилась на 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; }