public static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
/** * Отображение страницы /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))); }
?> <?php } //if ?> <?php } //else ?> </div> <div class="b-layout b-layout_padtop_20"> <h2 class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_color_666 b-layout_top_100 b-layout__txt_padbot_10 b-layout__txt_weight_normal"> <?php echo SeoTags::getInstance()->getFooterText(); ?> </h2> </div> <script type="text/javascript"> var offer_works = []; <?php for ($i = 1; $i <= 3; $i++) { ?> <?php if ($ps['portfolio_work_' . $i] != '') { ?> offer_works.push([<?php echo $ps['portfolio_work_' . $i . '_id']; ?>
$user->IncHits($user->login); } } if ($user->is_banned && !hasPermissions('users')) { if (!$content) { $content = "ban.php"; } } else { if (!$content) { $content = $page == 'opinions' ? 'content_new.php' : 'content.php'; // !!! проверить /* if ($_SESSION['login'] == $name) { $content = "content_setup.php"; $fpath = $_SERVER['DOCUMENT_ROOT'] . "/user/employer/"; } else { $content = "content.php"; } */ } } //Мета-теги SeoTags::getInstance()->initByUser($user); $page_title = SeoTags::getInstance()->getTitle(); $page_descr = SeoTags::getInstance()->getDescription(); $page_keyw = SeoTags::getInstance()->getKeywords(); $body_class = $user->is_pro == 't' ? 'p-pro' : 'p-nopro'; if (hasPermissions('users')) { $js_file[] = 'adm_edit_content.js'; } include "../" . $template;
public function run() { //собираем шаблон $this->render('t-service-catalog-header', array('page_title' => SeoTags::getInstance()->getH1())); }
$prof_name = $prof_name_arr['name']; $prof_title = $prof_name_arr['title'] ? $prof_name_arr['title'] : $prof_name; $prof_type = professions::GetProfType($prof_id); $anchor = professions::GetProfessionOrigin($prof_id); $g_page_id = "1|" . $prof_id; } //Мета-теги if ($prof_group_id) { SeoTags::getInstance()->initFreelancers($prof_group_id, $page, false); } else { SeoTags::getInstance()->initFreelancers($prof_id, $page); } $page_title = SeoTags::getInstance()->getTitle(); $page_descr = SeoTags::getInstance()->getDescription(); $page_keyw = SeoTags::getInstance()->getKeywords(); $page_h1 = SeoTags::getInstance()->getH1(); //------------------------------------------------------------------------------ // Показывать только про пользователей $is_pro = __paramInit('bool', 'is_pro', 'is_pro', false); $action = __paramInit('string', 'action', 'action', ''); //Выборка при поиске (не менялась) if (in_array($action, array('search', 'search_advanced'))) { $search_string = __paramInit('htmltext', 'search_string', 'search_string'); $search_string = html_entity_decode(stripslashes(trim($search_string)), ENT_QUOTES); if (!isset($_POST['action']) && isset($_GET['action'])) { $_POST = $_GET; } $build = $_POST; unset($build['page']); $query_string_menu = stripslashes(http_build_query($build)); unset($build['prof']);
class="blue" target="_blank" href="/users/<?php echo $user->login; ?> /viewproj.php?prjid=<?php echo $prj['id']; ?> " style="text-decoration:none"> <?php echo view_preview2($user->login, $prj['prev_pict'], "upload", 'center', false, false, htmlspecialchars($sName), 200); ?> </a> <span class="b-layout_hide" itemprop="description"><?php echo SeoTags::getInstance()->getImageDescription(); ?> </span> <?php } //else ?> <p><span class="money"><?php echo $txt_cost; ?> </span><?php echo ($is_txt_time ? ", " : "") . ($txt_time != '' ? $txt_time : ""); ?> </p> <div id="portfolio-block-<?php
echo printBanner240(false); ?> <!-- end of Banner 240x400 --> <?php if (!$uid) { ?> <div id="seo_block" class="b-layout b-layout_padtop_20"> <h2 class="b-layout__txt b-layout__txt_color_666 b-layout__txt_bold b-layout__txt_padbot_10"> <?php echo SeoTags::getInstance()->getSideHead(); ?> </h2> <div class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_color_666"> <?php echo SeoTags::getInstance()->getSideText(); ?> </div> </div> <?php } ?> </div> <div class="b-layout__one b-layout__one_relative b-layout__one_width_72ps b-layout__one_width_full_ipad"> <?php echo $this->renderClip('content_top'); ?> <?php echo $this->renderClip('categories'); ?>