/** * Оплата из буфера * @param type $type * @param array $data (prof_id) * @return type */ function quickPaymentTservicebindupBuffer($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_spec = $kind == tservices_binds::KIND_SPEC; $tservices_binds = new tservices_binds($kind); $bind = $tservices_binds->getItem($uid, $tservice_id, $prof_id); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/buffer.php"; $buffer = new buffer(); $buffer_sum = $buffer->getSum(); $price = $tservices_binds->getPrice(true, $uid, $prof_id); if ($bind && $buffer_sum >= $price) { $bill = new billing($uid); $ok = $bill->addServiceAndPayFromAccount(tservices_binds::OP_CODE_UP_BUFFER, array('bind_id' => $bind['id'])); if ($ok) { $is_error = false; $buffer->setUsedSum($price); $objResponse->script("window.location.reload();"); } } // Показываем предупреждение в случае ошибки 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; }
/** * Инициализация тизера. * * @global array $js_file * * @param array $options [kind, uid] */ public function init($options = array()) { global $js_file; $js_file[] = 'tservices/tservices_binds.js'; if ($options) { $this->kind = (int) $options['kind']; $this->uid = (int) $options['uid']; } $time_to = time() + 7 * 86400; $use_bind_popup = false; $tu_bind_teaser = array('date' => date('j', $time_to) . ' ' . monthtostr(date('n', $time_to), true), 'href' => 'javascript:void(0);'); $tservices_binds = new tservices_binds($this->kind); $tservices_class = new tservices($this->uid); $profs = array(); if ($this->kind == tservices_binds::KIND_SPEC) { $profs[] = $this->prof_id; } elseif ($this->kind == tservices_binds::KIND_GROUP) { $tservices_categories = new tservices_categories(); $categories = $tservices_categories->getCategoriesByParent($this->prof_id); foreach ($categories as $category) { $profs[] = $category['id']; } } if ($countBindedTu = $tservices_binds->countBindedTu($this->uid, (int) $this->prof_id)) { $binded_text = ending($countBindedTu, 'ваша услуга', 'ваши услуги', 'ваших услуг'); $tu_bind_teaser['subtitle'] = $countBindedTu . ' ' . $binded_text . ' уже <br>закреплен' . ($countBindedTu > 1 ? 'ы' : 'а') . ' в этом разделе'; if ($tservices_class->hasUnbindedTservices($this->kind, $this->uid, $profs)) { $use_bind_popup = true; $tu_bind_teaser['title'] = 'Закрепите еще одну услугу'; $tu_bind_teaser['btn_text'] = 'Закрепить'; } else { $tu_bind_teaser['title'] = 'Добавьте еще одну услугу<br>и закрепите ее здесь'; $tu_bind_teaser['href'] = '/users/' . $_SESSION['login'] . '/tu/new/'; $tu_bind_teaser['btn_text'] = 'Добавить'; } } else { if ($tservices_class->hasUserTservice(true, $profs)) { $use_bind_popup = true; $tu_bind_teaser['title'] = 'Закрепите здесь услугу'; $tu_bind_teaser['btn_text'] = 'Закрепить'; } else { $tu_bind_teaser['title'] = 'Добавьте свою услугу<br>и закрепите ее здесь'; $tu_bind_teaser['href'] = '/users/' . $_SESSION['login'] . '/tu/new/'; $tu_bind_teaser['btn_text'] = 'Добавить'; } } if ($use_bind_popup) { quickPaymentPopupTservicebind::getInstance()->init(array('uid' => $this->uid, 'kind' => $this->kind, 'prof_id' => $this->prof_id)); $tu_bind_teaser['popup_id'] = quickPaymentPopupTservicebind::getInstance()->getPopupId(0); $tu_bind_teaser['popup'] = quickPaymentPopupTservicebind::getInstance()->render(); } $this->data = $tu_bind_teaser; $this->data['price'] = $tservices_binds->getPrice(false, $this->uid, $this->prof_id); $this->data['main_div_class'] = $this->kind == tservices_binds::KIND_LANDING ? 'b-layout__tu-cols b-layout__tu-cols_height_330' : 'i-pic i-pic_port i-pic_width_225 i-pic_margbot_30'; }
/** * Инициализация тизера. * * @global array $js_file * * @param array $options [kind, uid] */ public function init($options = array()) { if ($options) { $this->kind = (int) $options['kind']; $this->uid = (int) $options['uid']; } $this->data = array(); $tservices_binds = new tservices_binds($this->kind); $this->data['bind_up_price'] = $tservices_binds->getPrice(true, $this->uid); $this->data['date_stop'] = dateFormat('j', $this->date_stop) . ' ' . monthtostr(dateFormat('m', $this->date_stop), true); $this->data['allow_up'] = $this->allow_up; $this->data['tservice_id'] = $this->tservice_id; }
public function init($params) { $kind = $params['kind'] ?: tservices_binds::KIND_LANDING; //По умолчанию ставим лендинг $prof_id = (int) $params['prof_id']; $this->setBuyPopupTemplate('buy_popup_tservicebindup.tpl.php'); $tservices_binds = new tservices_binds($kind); $promoCodes = new PromoCodes(); $buffer = new buffer(); $options = array('popup_title_class_bg' => 'b-fon_bg_po', 'popup_title_class_icon' => 'b-icon__po', 'popup_title' => 'Поднятие закрепления на 1 место', 'popup_id' => $this->getPopupId(0), 'unic_name' => $this->UNIC_NAME, 'payments_title' => 'Сумма и способ оплаты', 'payments_exclude' => array(self::PAYMENT_TYPE_BANK), 'ac_sum' => round($_SESSION['ac_sum'], 2), 'payment_account' => self::PAYMENT_TYPE_ACCOUNT, 'kind' => $kind, 'profession' => $tservices_binds->getProfessionText(false, $prof_id), 'buffer' => $buffer->getSum(), 'ammount' => round($tservices_binds->getPrice(true, @$params['uid'], $prof_id), 2), 'disable_tservices' => false, 'prof_id' => $prof_id, 'promo_code' => $promoCodes->render(PromoCodes::SERVICE_TSERVICEBIND)); //Обязательно передаем родителю parent::init($options); //Добавляем свойство к одному способу оплаты $this->options['payments'][self::PAYMENT_TYPE_CARD]['wait'] = 'Ждите ....'; $this->options['payments'][self::PAYMENT_TYPE_PLATIPOTOM]['content_after'] = sprintf($this->options['payments'][self::PAYMENT_TYPE_PLATIPOTOM]['content_after'], 'закрепление'); $this->inited = true; }
public function init($params) { $kind = $params['kind'] ?: 1; //По умолчанию ставим лендинг $prof_id = (int) $params['prof_id']; $profs = array(); if ($kind == tservices_binds::KIND_SPEC) { $profs[] = $prof_id; } elseif ($kind == tservices_binds::KIND_GROUP) { $tservices_categories = new tservices_categories(); $categories = $tservices_categories->getCategoriesByParent($prof_id); foreach ($categories as $category) { $profs[] = $category['id']; } } $tservices = new tservices($params['uid']); $data = $tservices->getNotBindedList($kind, $profs); $tservices_text = $tservices_cur_text = ''; $tservices_cur = 0; if ($data) { foreach ($data as $tservice) { if (!$tservices_cur) { $tservices_cur = $tservice['id']; } if (!$tservices_cur_text) { $tservices_cur_text = $tservice['title']; } $tservices_list[] = $tservice['id'] . ": '" . addslashes($tservice['title']) . "'"; } $tservices_text = '{' . implode(', ', $tservices_list) . '}'; } else { $tservices_text = '{}'; } $this->setBuyPopupTemplate('buy_popup_tservicebind.tpl.php'); $tservices_binds = new tservices_binds($kind); $promoCodes = new PromoCodes(); $options = array('popup_title_class_bg' => 'b-fon_bg_po', 'popup_title_class_icon' => 'b-icon__po', 'popup_title' => $is_prolong ? 'Продление закрепления' : 'Закрепление услуги', 'popup_subtitle' => $is_prolong ? 'Срок продления закрепления' : 'Срок закрепления услуги', 'popup_id' => $this->getPopupId(0), 'unic_name' => $this->UNIC_NAME, 'payments_title' => 'Сумма и способ оплаты', 'payments_exclude' => array(self::PAYMENT_TYPE_BANK), 'ac_sum' => round($_SESSION['ac_sum'], 2), 'payment_account' => self::PAYMENT_TYPE_ACCOUNT, 'kind' => $kind, 'profession' => $tservices_binds->getProfessionText(false, $prof_id), 'tservices' => $tservices_text, 'tservices_cur' => $tservices_cur, 'tservices_cur_text' => $tservices_cur_text, 'ammount' => $tservices_binds->getPrice(false, $params['uid'], $prof_id), 'disable_tservices' => false, 'prof_id' => $prof_id, 'promo_code' => $promoCodes->render(PromoCodes::SERVICE_TSERVICEBIND)); //Обязательно передаем родителю parent::init($options); //Добавляем свойство к одному способу оплаты $this->options['payments'][self::PAYMENT_TYPE_CARD]['wait'] = 'Ждите ....'; $this->options['payments'][self::PAYMENT_TYPE_PLATIPOTOM]['content_after'] = sprintf($this->options['payments'][self::PAYMENT_TYPE_PLATIPOTOM]['content_after'], 'закрепление'); $this->inited = true; }
/** * Отображение страницы /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))); }
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); // Сортировка категорий профессий по названию //usort($profs, function($a, $b) { return strcmp($a['groupname'], $b['groupname']);}); $page_title = 'Фриланс сайт удаленной работы №1. Фрилансеры, работа на дому, freelance : FL.ru'; // отрисовка страницы include $_SERVER['DOCUMENT_ROOT'] . "/template3.php";