/** * Вывод главной страницы * Выводит главную страницу. По умолчанию Пополнить счет. */ public function indexAction() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard_billing.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_employer.php'; unset($_SESSION['sum']); front::og('tpl')->page = 'index'; if ($this->uri[0] == 'success.php') { header('Location: /bill/success/'); exit; } front::og('tpl')->no_banner = is_pro() ? true : false; $master = wizard_billing::getDraftAccountOperations($_SESSION['uid']); if (!is_emp()) { $pro_op_codes = step_freelancer::getOperationCodePRO(); foreach ($master as $pay) { if (in_array($pay['op_code'], $pro_op_codes)) { $is_pro = true; $op_id = $pay['id']; } elseif ($pay['op_code'] == step_freelancer::OFFERS_OP_CODE) { $disabled[$pay['id']] = $pay['id']; } } if (!$is_pro) { unset($disabled); } if ($disabled) { $str_disabled = implode(',', $disabled); $dis[$op_id] = $str_disabled; } front::og('tpl')->pro_op_codes = $pro_op_codes; front::og('tpl')->disabled = $disabled; front::og('tpl')->dis = $dis; front::og('tpl')->is_pay_pro = $is_pro; } else { foreach ($master as $pay) { if ($pay['op_code'] == step_employer::OP_CODE_PRO) { $is_pro = true; $op_id = $pay['id']; } elseif ($pay['op_code'] == 53 && $pay['option'] == 'color') { $disabled[$pay['id']] = $pay['id']; } } if (!$is_pro) { unset($disabled); } if ($disabled) { $str_disabled = implode(',', $disabled); $dis[$op_id] = $str_disabled; } front::og('tpl')->pro_op_codes = step_employer::OP_CODE_PRO; front::og('tpl')->disabled = $disabled; front::og('tpl')->dis = $dis; front::og('tpl')->is_pay_pro = $is_pro; } front::og('tpl')->master = $master; front::og('tpl')->text = static_pages::get('bill_index'); front::og('tpl')->display('bill/bill_index.tpl'); }
public function __construct($type = false, $tbl_name = false) { $this->is_pro = is_pro() ? '10' : '01'; $this->is_role = get_uid(false) ? is_emp() ? '01' : '10' : '00'; if ($tbl_name) { $this->tbl_name = $tbl_name; } if ($type) { $this->setType($type, 1); } }
/** * Получить станицу с выбором работ для таба. * * @param bool $params * * @return \xajaxResponse */ function FPEP_getTab($params) { $objResponse = new xajaxResponse(); $uid = get_uid(false); if ($uid > 0 && !is_emp() && is_pro()) { $query = http_build_query($params); $params['is_ajax'] = true; require_once ABS_PATH . '/freelancers/widgets/FreelancersPreviewEditorPopup.php'; $freelancersPreviewEditorPopup = new FreelancersPreviewEditorPopup($params); $html = $freelancersPreviewEditorPopup->render(); $objResponse->call("window.popups_factory.getPopup('freelancersPreviewEditorPopup').showTabContent", $freelancersPreviewEditorPopup->getCurrentTab(), $html, $query); } return $objResponse; }
function SaveStatus($text, $statusType, $login = NULL) { session_start(); $freelancer = new freelancer(); $text = addslashes(substr(stripslashes(trim($text)), 0, 200)); close_tags($text, 's'); $freelancer->status_text = antispam(htmlspecialchars(htmlspecialchars_decode(change_q_x(trim($text), true, false), ENT_QUOTES), ENT_QUOTES)); $freelancer->status_type = intval($statusType); if ($freelancer->statusToStr($statusType)) { $stdStatus = ""; $objResponse = new xajaxResponse(); $uid = hasPermissions('users') && $login != $_SESSION['login'] ? $freelancer->GetUid($err, $login) : get_uid(false); $pro = hasPermissions('users') && $login != $_SESSION['login'] ? is_pro(true, $uid) : is_pro(); $error = $freelancer->Update($uid, $res); if (!$freelancer->status_text) { $freelancer->status_text = $stdStatus; } $freelancer->status_text = stripslashes($freelancer->status_text); switch ($freelancer->status_type) { case 1: $status_cls = 'b-status b-status_busy'; break; case 2: $status_cls = 'b-status b-status_abs'; break; case -1: $status_cls = 'b-status b-status_no'; break; default: $status_cls = 'b-status b-status_free'; } if (!$noassign) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('users')); $sStatusText = $pro ? $freelancer->status_text : $stop_words->replace($freelancer->status_text); //$GLOBALS['xajax']->setCharEncoding("windows-1251"); $jsobj = json_encode(array('data' => iconv('CP1251', 'UTF8', $freelancer->status_text))); $objResponse->assign("statusText", "innerHTML", $freelancer->status_text == $stdStatus ? "" : reformat($sStatusText, 40, 0, 1, 25)); $objResponse->assign("statusTitle", "innerHTML", $freelancer->statusToStr($statusType)); // $objResponse->assign("statusTitle", "style.display", $statusType > -1 ? '' : 'none'); $objResponse->script("statusType = {$statusType};\n\t\t\t statusTxt = document.getElementById('statusText').innerHTML;\n\t\t\t statusTxtSrc = {$jsobj};"); } $objResponse->script("\$('bstatus').erase('class');\n \$('bstatus').addClass('{$status_cls}');"); } return $objResponse; }
/** * Отправка сообщения. * * @param type $attr */ public function _ceSend($attr) { $user = new users(); $messages = new messages(); $stopWords = new stop_words(false); $user->getUserByUID(intval($attr->uid)); if (empty($user->login) || $user->login == 'admin') { self::error(3, false); return; } if ($user->is_banned) { self::error(4, false); return; } $text = iconv('UTF-8', 'CP1251', $attr->text); $text = antispam(change_q_x($text, false, true, null, false, false)); $messages->Add($this->_uid, $user->login, addslashes($text), array(), 0, false, null, $id); if (!is_pro() && !is_pro(true, $attr->uid)) { if (!hasPermissions('streamnomod') && !hasPermissions('streamnomod', $attr->uid)) { $stopWords = new stop_words(false); $text = $stopWords->replace($text); } } $text = reformat($text, 14, 0, 0, 1); $time = date('Y-m-d H:i:s'); $data = array('func' => 'income', 'attr' => array('id' => $id, 'uid' => $this->_uid, 'cuid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'files' => array(), 'date' => $time)); $this->_addEvent($data); return array('id' => $id, 'uid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'date' => $time); }
?> /setup/specaddsetup/" id="ap11">Дополнительные специализации</a>: <?php echo $specs_add_string; ?> </div> <?php } ?> <div class="b-check b-check_padbot_20"> <table class="b-layout__table b-layout__table_width_full"> <tr class="b-layout__tr"> <td class="b-layout__td b-layout__td_width_null_ipad b-layout__td_ipad"><input name="cat_show" class="b-check__input" type="checkbox" value="1" <?php echo !is_pro() ? 'disabled="disabled"' : ''; ?> <?php echo $user->cat_show == 't' || !is_pro() ? 'checked="checked"' : ''; ?> id="cat_showl" /></td> <td class="b-layout__td b-layout__td_ipad b-layout__td_width_full b-layout__td_width_full_ipad"> <label class="b-check__label b-check__label_color_71" for="cat_showl"> <strong class="b-layout__txt_bold">Разрешить размещение в каталоге</strong><span class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_color_71 b-layout__txt_lineheight_1 b-layout_block_iphone"> (только для <span title="владельцев платного аккаунта" class="b-icon b-icon__pro b-icon__pro_f b-icon_valign_bas"></span>)</span></label> </td> </tr> </table> </div> <table class="b-layout__table b-layout__table_width_full"> <tr class="b-layout__tr"> <td class="b-layout__td b-layout__td_width_240 b-layout__td_padbot_10"> <div class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_padtop_2">Опыт работы (в годах)</div> </td>
/** * Обработка и оплата операций * * @global type $DB * @param type $option * @return boolean */ function billingOperation($option, $transaction_id) { global $DB; $ok = false; $account = new account(); switch ($option['op_code']) { // Аккаунт ПРО у фрилансера case 48: case 49: case 50: case 51: case 76: // Удаляем операции по покупке ответов - публикуем ответы $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); $this->clearBlockedOperations(step_freelancer::OFFERS_OP_CODE); $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, 'all', false); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } $this->showProjectsFeedbacks(); } break; // Аккаунт ПРО у работодателя // Аккаунт ПРО у работодателя case 15: $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); } // Обновляем выбор цвета для проектов тк он для ПРО бесплатный $colorProjects = $this->updateColorProject(); $prj = new new_projects(); foreach ($colorProjects as $k => $project) { $delete_color[] = $project['op_id']; if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $prj->editPrj($project, false); } // Удаляем данные операции if ($delete_color) { $this->deleteDraftAccountOperation($delete_color); } break; // Публикация конкурса // Публикация конкурса case new_projects::OPCODE_KON: case new_projects::OPCODE_KON_NOPRO: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_wizard_registration.php'; $drafts = new drafts(); $draft = $drafts->getDraft($option['parent_id'], $this->uid, 1); // Если еще не опубликован if (!$draft['prj_id']) { $project_id = $draft['id']; $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], 1, 0); $ok = $bill_id > 0; if ($bill_id) { $color = $DB->val("SELECT id FROM draft_account_operations WHERE parent_id = ? AND op_type = 'contest' AND option = 'color' AND uid = ?", $project_id, wizard::getUserIDReg()); $draft['billing_id'] = $bill_id; $draft['folder_id'] = 'null'; $draft['payed'] = '0'; $draft['payed_items'] = '000'; if (is_pro() && $color > 0) { $draft['is_color'] = 't'; } else { $draft['is_color'] = 'f'; } $draft['win_date'] = date('d-m-Y', strtotime($draft['win_date'])); $draft['end_date'] = date('d-m-Y', strtotime($draft['end_date'])); $draft['is_bold'] = 'f'; $draft['user_id'] = $this->uid; if ($draft['country'] == null) { $draft['country'] = 'null'; } if ($draft['city'] == null) { $draft['city'] = 'null'; } $draft['name'] = addslashes($draft['name']); $draft['descr'] = addslashes($draft['descr']); if ($draft['logo_id'] <= 0) { $draft['logo_id'] = 'null'; } $prj = new new_projects(); $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($option['parent_id'], 4); if ($attachedfiles_tmpdraft_files) { $attachedfiles_tmpdraft_files = array_map(create_function('$a', 'return array("id" => $a);'), $attachedfiles_tmpdraft_files); } if ($attachedfiles_tmpdraft_files) { $month = date('Ym'); $dir = 'projects/upload/' . $month . '/'; $files = step_wizard_registration::transferFiles($attachedfiles_tmpdraft_files, 'file_projects', $dir); } $spec = $draft["categories"]; $spec = explode("|", $spec); $spec = array(array('category_id' => $spec[0], 'subcategory_id' => $spec[1])); $prj->addPrj($draft, $files); $prj->saveSpecs($draft["id"], $spec); // смотрим были ли выбраны платные опции для опубликованного конкурса if ($draft['id'] != $project_id && $draft['id'] > 0) { if ($this->sleep[$project_id]) { foreach ($this->sleep[$project_id] as $k => $opt) { $opt['parent_id'] = $draft['id']; $this->billingOperation($opt); } } else { //Обновляем родителя на всякий случай $update = array("parent_id" => $draft['id']); $DB->update("draft_account_operations", $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project_id, wizard::getUserIDReg()); $this->sleep_parent[$project_id] = $draft['id']; } $DB->update("draft_projects", array('prj_id' => $draft['id']), "id = ? AND uid = ?", $project_id, wizard::getUserIDReg()); } } } break; // Платный проект/конкурс // Платный проект/конкурс case 53: $prj = new new_projects(); if ($this->sleep_parent[$option['parent_id']]) { $option['parent_id'] = $this->sleep_parent[$option['parent_id']]; } $project = $prj->getProject($option['parent_id']); if (!$project['id']) { $this->sleep[$option['parent_id']][$option['id']] = $option; return true; } else { unset($this->sleep[$option['parent_id']]); } if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['folder_id'] = 'null'; $items = array(); switch ($option['option']) { case 'top': $project['top_days'] = $option['op_count']; break; case 'color': $is_pay = $project['payed_items'] & '010'; if ($is_pay != '010') { $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $items['color'] = true; if (is_pro()) { $is_payed = true; $prj->SavePayedInfo($items, $project['id'], null, $project['top_days']); $prj->editPrj($project, false); } } else { $is_payed = true; } break; case 'bold': $is_pay = $project['payed_items'] & '001'; if ($is_pay != '001') { $project['payed_items'] = $project['payed_items'] | '001'; $project['is_bold'] = 't'; $items['bold'] = true; } else { $is_payed = true; } break; case 'logo': $is_pay = $project['payed_items'] & '100'; if ($is_pay != '100') { $key = md5(microtime()); $prj = new tmp_project($key); $prj->init(1); $fu = new CFile($option['src_id']); $ext = $fu->getext(); $tmp_dir = $prj->getDstAbsDir(); $tmp_name = $fu->secure_tmpname($tmp_dir, '.' . $ext); $tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir)); $fu->table = 'file_projects'; $r = $fu->_remoteCopy($tmp_dir . $tmp_name); $project['payed_items'] = $project['payed_items'] | '100'; $project['logo_id'] = $fu->id; $items['logo'] = true; if ($option['extra']) { $project['link'] = $option['extra']; } } else { $is_payed = true; } break; } if (!$is_payed) { $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], $option['ammount'], 0); $ok = $bill_id > 0; $project['billing_id'] = $bill_id; $prj->SavePayedInfo($items, $project['id'], $bill_id, $project['top_days']); $prj->editPrj($project, false); } else { $ok = true; } break; // Платные ответы на проекты // Платные ответы на проекты case 61: $answers = new projects_offers_answers(); $error = $answers->BuyByFM($this->uid, $option['op_count'], $transaction_id, 0); if (!$error) { $ok = true; $_SESSION['answers_ammount'] = $option['op_count']; // Публикуем ответы $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, $option['op_count']); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } } break; } return $ok; }
/** * Заполнение обязательных полей после регистрации через API мобильного приложения. * * @param array $aParams массив входящих данных * @return bool true - успех, false - провал */ public function actionSaveInfoMobile($aParams = array()) { $this->setFieldInfo('uname', __paramValue('string', iconv('utf-8', 'cp1251', $aParams['first_name']))); $this->setFieldInfo('usurname', __paramValue('string', iconv('utf-8', 'cp1251', $aParams['last_name']))); $this->setFieldInfo('birthday', __paramValue('string', $aParams['birthday'])); $this->setFieldInfo('country', __paramValue('int', $aParams['country_id'])); $this->setFieldInfo('city', __paramValue('int', $aParams['city_id'])); $this->setFieldInfo('info_for_reg', array('birthday' => 0, 'sex' => 0, 'country' => 0, 'city' => 0)); $gender = __paramValue('int', $aParams['gender']); $this->setFieldInfo('sex', $gender == 1 ? 't' : ($gender == 2 ? 'f' : NULL)); $this->checkedFields(); if (date('Y-m-d', strtotime($aParams['birthday'])) != $aParams['birthday']) { $this->error['birthday'] = 'Укажите некорректную дату дня рождения'; $this->errno['birthday'] = 2; } if (empty($this->error)) { if (!is_emp()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; $user = new freelancer(); } else { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $user = new employer(); } $user->info_for_reg = serialize($this->info_for_reg); $user->uname = $this->uname; $user->usurname = $this->usurname; $user->sex = $this->sex; $user->birthday = $this->birthday; $user->country = $this->country; $user->city = $this->city; if (!is_emp()) { $spec = intvalPgSql($aParams['prof_id']); if ($spec) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; $or_spec = professions::GetProfessionOrigin($spec); $spec_mod = professions::getLastModifiedSpec($_SESSION['uid']); if (!is_pro() && $spec_mod['days'] > 0) { $this->error['spec'] = 'Не прошло 30 дней с момента последней смены специализации'; $this->errno['spec'] = 2; } else { $user->spec = $spec; $user->spec_orig = $or_spec; professions::setLastModifiedSpec($_SESSION['uid'], $spec); } } else { $this->error['spec'] = 'Не указан параметр ID профессии'; $this->errno['spec'] = 1; } } if (empty($this->error)) { if ($sError = $user->Update($_SESSION['uid'], $res)) { $this->error['save'] = $sError; } else { if (!is_emp()) { $_SESSION['specs'] = $user->GetAllSpecs($_SESSION['uid']); } } } if (empty($this->error['save'])) { $_SESSION['check_user_access'] = true; } } return empty($this->error); }
<?php // ЗАГОЛОВОК ?> <h3> <img id="istop"<?php echo $remTPeriod || $addedTD ? '' : ' style="display:none"'; ?> src="/images/tp<?php echo $project['is_color'] == 't' ? '2' : ''; ?> .gif" alt="" title="<?php echo $topDays; ?> "/> <?php $sName = $project['kind'] != 4 && !is_pro() ? $stop_words->replace($project['name']) : $project['name']; ?> <?php if ($project['id'] > 0) { ?> <a name="prj<?php echo $project['id']; ?> " href="/projects/?pid=<?php echo $project['id']; ?> "> <?php echo reformat2($sName, 30, 0, 1); ?> </a>
/** * Перенос всех данных введнных в мастере на боевые таблицы * должен запускаться синхронно с завершением работы мастера * * @return type */ public function transferWizardContent() { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/log.php"; $this->log = new log('wizard/transfer-' . SERVER . '-%d.log', 'a', '%d.%m.%Y %H:%M:%S : '); $user = new users(); $user->GetUserByUID(wizard::getUserIDReg()); $this->user = $user; // Чистим ответы на заблокированные проекты $this->clearOffers(); // некоторые ответы могут остатся в этой таблице поэтому обновляем им Ид пользователя (при завершении мастера все данные по Ид пользователя мастера удаляются) $this->updateOffers(array('reg_uid' => wizard::getUserIDReg())); // пользователь может быть уже PRO (если он ранее был авторизован) - учитываем это $pro = is_pro(); $limit = $pro ? "all" : 3; // Берем все конкурсы + 3 обычных проекта для публикации ответов (без конкурсов и проектов для ПРО) $offers = $this->getWizardOffers(false, $limit, !$pro); if ($offers) { $error = $this->transferOffers($offers); } // Пишем данные пользователя введенные в шаге портфолио $field = $this->parent->getFieldsUser(); $data = unserialize($field['portfolio']); if ($data) { $error = $this->transferUserInformation($data); } //Перенос порфтолио $works = $this->getWorks(); if ($works) { $error = $this->transferWorks($works); } return $error; }
?> <?php if (hasPermissions('articles')) { include 'form.php'; } ?> </div> <div class="p-a-left b-layout__left b-layout__left_width_25ps"> <div class="p-a-popular c"> </div> <div class="favorites"> </div> <!-- Banner 240x400 --> <div class="banner_240x400"> <?php echo printBanner240(is_pro(), true); ?> </div> <!-- end of Banner 240x400 --> </div> </div> </div> <div id="del-article-form" class="form fs-o form-adel" style="display: none;"> <b class="b1"></b> <b class="b2"></b> <div class="form-in"> <form id="del_article_frm" method="post" action="/articles/?task=del-article"> <div class="form-block first last"> <h4>Удаление статьи</h4> <div class="form-el">
function removeWork($uid, $params) { $objResponse =& new xajaxResponse(); if (!$uid) { $uid = get_uid(false); } $uid = intval($uid); $work_id = intval($params['id']); $prof_id = intval($params['prof_id']); if ($uid != get_uid(false) || !get_uid(false) || $work_id < 0) { return $objResponse; } $deleted = portfolio::DelPortf($uid, $work_id); if (!$deleted) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; $stop_words = new stop_words(hasPermissions('users')); $profession = new professions(); $portfolio = new portfolio(); $user = new users(); $user->login = $_SESSION['login']; $user->uid = $_SESSION['uid']; $user->is_pro = is_pro() ? 't' : 'f'; $is_owner = $uid == $_SESSION['uid']; $pinfo = current(portfolio::getPortfolioCategory($prof_id)); $pinfo['mainprofname'] = $pinfo['group_name']; $pinfo['profname'] = $pinfo['prof_name']; $pinfo['gr_prevs'] = $pinfo['show_preview']; $pinfo = $profession->prepareCostText($pinfo, $stop_words); $works = $portfolio->GetPortf($uid, $prof_id, true); if (!empty($works)) { $result = portfolio::prepareDataPortfolio($works, $uid, $stop_words, true); extract($result); $work[0]['id'] = 100; ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.portfolio.works.php'; $sWorks = ob_get_contents(); ob_end_clean(); } else { $work[0]['id'] = null; $pp_noblocks[$prof_id] = array(); ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.portfolio.works.php'; $sWorks = ob_get_contents(); ob_end_clean(); } if ($sWorks != '') { $objResponse->assign("prof_works_{$prof_id}", 'innerHTML', $sWorks); } $objResponse->script("\$('portfolio_work_edit').getParent().dispose()"); } else { $objResponse->call('alert', 'Ошибка, работу удалить не удалось.'); } return $objResponse; }
//if ($page < 20) $buffer_on = true; /* $additional_header = '<script type="text/javascript" src="/scripts/kwords.js"></script>' . '<script type="text/javascript" src="/kword_js.php"></script>'; */ //------------------------------------------------------------------------------ require_once ABS_PATH . '/freelancers/widgets/FreelancersTServicesWidget.php'; //Инициализация виджета плитки ТУ вместо портфолио $freelancersTServicesWidget = new FreelancersTServicesWidget(); //------------------------------------------------------------------------------ //Популярные услуги из этой же категории require_once ABS_PATH . '/tu/widgets/TServicesPopular.php'; $tservicesPopular = new TServicesPopular(); $tservicesPopular->setOptions(array('prof_group_id' => $prof_group_id, 'prof_id' => $prof_id, 'limit' => 9, 'title' => 'Услуги фрилансеров', 'title_css' => 'b-layout__title_padtop_10')); $tservicesPopular->init(); //------------------------------------------------------------------------------ if ($uid > 0 && !is_emp() && !in_array($action, array('search', 'search_advanced')) && is_pro()) { require_once ABS_PATH . '/freelancers/widgets/FreelancersPreviewEditorPopup.php'; $freelancersPreviewEditorPopup = FreelancersPreviewEditorPopup::getInstance(array('group_id' => $prof_group_id, 'prof_id' => $prof_id)); } //------------------------------------------------------------------------------ $header = "../header.php"; $footer = "../footer.html"; $js_file[] = '/css/block/b-text/b-text.js'; $js_file[] = '/css/block/b-popup/b-popup.js'; $css_file = array('/css/block/b-icon/__cat/b-icon__cat.css', '/css/block/b-search/b-search.css', 'main.css', '/css/nav.css'); $js_file[] = 'search.js'; $js_file[] = 'freelancers/freelancers.js'; //@todo: Сюда переносить все inline-скрипты! $freelancers_catalog = true; include "../template2.php";
/** * Проверяет по специализациям, может ли текущий пользователь ответить на проект. * * @param int $projec_id ид проекта * * @return boolean */ public static function offerSpecIsAllowed($projec_id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; // ПРО отвечают без ограничений if (is_pro()) { return true; } if (!get_uid(false)) { return false; } $is_send_offers = false; $spec_project = new_projects::getSpecs($projec_id); $user_spec = professions::GetProfsAddSpec($_SESSION['uid']); if (is_array($user_spec)) { $user_spec = array_merge($user_spec, $_SESSION['specs']); } else { $user_spec = $_SESSION['specs']; } if ($user_spec) { $user_spec = array_merge($user_spec, professions::GetMirroredProfs(professions::GetProfessionOrigin(implode(',', $user_spec)))); $user_spec = array_unique($user_spec); //@todo запехать в один запрос foreach ($user_spec as $spec) { $prof_group[$spec] = professions::GetProfField($spec, 'prof_group'); } } foreach ($spec_project as $specs) { if (is_array($prof_group) && in_array($specs['category_id'], $prof_group)) { $is_send_offers = true; // Разрашаем оставлять отзыв break; } } return $is_send_offers; }
/** * Восстанавливает комментарий. * * @param int $cid id комментария * * @return string сообщение об ошибке или пустая строка, если все нормально */ public function RestoreComment($cid) { global $DB; if ($this->is_moder) { $cid = intval($cid); $sModer = ''; if (!hasPermissions('projects') && !is_pro()) { $p_comment = $this->GetComment($cid); if ($p_comment['user_id'] == $_SESSION['uid']) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $stop_words = new stop_words(); $nStopWordsCnt = $stop_words->calculate($p_comment['msg']); $sModer = ' , moderator_status =' . ($nStopWordsCnt ? ' 0 ' : ' NULL '); if ($nStopWordsCnt) { $DB->insert('moderation', array('rec_id' => $cid, 'rec_type' => user_content::MODER_CONTEST_COM, 'stop_words_cnt' => $nStopWordsCnt)); } else { $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $cid, user_content::MODER_CONTEST_COM); } } } $DB->query("UPDATE projects_contest_msgs SET deleted = NULL, deluser_id = NULL {$sModer} WHERE id = ?i", $cid); return $DB->error; } }
$price = $tmpPrj->getPrice($items, $__temp, true); $option = array('is_edit' => $tmpPrj->isEdit(), 'items' => $items, 'prj_id' => $project['id'], 'logo_id' => $logo['id'], 'logo_link' => $tmpProject['link']); if ($items['top']) { $option['addTop'] = $tmpPrj->getAddedTopDays(); } if ($tmpPrj->isKonkurs()) { if (new_projects::isNewContestBudget()) { $cost = $tmpPrj->getCostRub(); $op_code = new_projects::getContestTaxOpCode($tmpPrj->getCostRub(), is_pro()); $items['contest']['no_pro'] = $tmpPrj->isEdit() ? 0 : new_projects::getContestTax($cost, is_pro()); $items['contest']['pro'] = $tmpPrj->isEdit() ? 0 : new_projects::getContestTax($cost, true); } else { //Здесь счет создастся при редактировании конкурса $items['contest']['no_pro'] = $tmpPrj->isEdit() ? 0 : 3300; $items['contest']['pro'] = $tmpPrj->isEdit() ? 0 : 3000; $op_code = is_pro() ? new_projects::OPCODE_KON : new_projects::OPCODE_KON_NOPRO; } $op_code_pay = new_projects::OPCODE_PAYED_KON; } else { $op_code = new_projects::OPCODE_PAYED; $op_code_pay = new_projects::OPCODE_PAYED; } if ($items) { $bill->start(); // Конкурс if ($items['contest'] > 0) { $option['items'] = array('contest' => $items['contest']); $bill->setOptions($option); $success = $bill->create($op_code, 0, false); $items['contest'] = 0; }
/** * Редактирование данных об услугах фрилансера и их стоимости. * @param integer $fid uid пользователя * @param string $exp опыт в годах (произвольный текст) * @param string $text уточнение к услугам в портфолио * @param integer $tab_name_id название раздела портфолио: 0 - портфолио, 1 - услуги * @param float $cost_hour стоимость часа работы * @param float $cost_month стоимость месяца работы * @param integer $cost_type_hour тип валюты (0 - USD, 1 - Euro, 2 - Руб, 3 - FM) * @param integer $cost_type_month тип валюты (0 - USD, 1 - Euro, 2 - Руб, 3 - FM) * @param boolean $in_office Ишу работу в офисе * @param boolean $cat_show Показывать в каталоге или нет * @param boolean $prefer_sbr Предпочитаю работать через СБР * @return string возможная ошибка */ function UpdateServ($fid, $exp, $text, $tab_name_id, $cost_hour, $cost_month, $cost_type_hour, $cost_type_month, $in_office = false, $cat_show = true, $prefer_sbr = false) { $this->exp = $exp; $this->tab_name_id = $tab_name_id; $this->cost_hour = $cost_hour; $this->cost_month = $cost_month; $this->cost_type_hour = $cost_type_hour; $this->cost_type_month = $cost_type_month; $this->spec_text = $text; $this->in_office = $in_office; $this->prefer_sbr = $prefer_sbr; if (is_pro()) { $this->cat_show = $cat_show ? 't' : 'f'; } $error = $this->Update($fid, $res); return $error; }
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/ignor.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages_spam.php"; $msgs = new messages(); $curpage = intval(trim($_GET['curpage'])); if (!$curpage) { $curpage = intval(trim($_POST['curpage'])); } if (!$curpage || $curpage < 0) { $curpage = 1; } $page_size = $PDA ? 10 : $GLOBALS['msgspp']; $dialog = $msgs->GetMessages(get_uid(), $chat_with, $num_msgs_from, $curpage, $page_size); //$_SESSION['newmsgs'] = $msgs->GetNewMsgCount($_SESSION['uid'], $err); $user = new users(); $user->GetUser($chat_with); if (!is_pro(true, $user->uid) && !is_emp($user->role) && count($dialog) == 0 && is_emp($_SESSION['role'])) { $is_contact_splash = true; } if ($user->login == '') { header("Location: /404.php"); } // Если пользователь забанен if ($user->is_banned && !hasPermissions('users')) { $error_flag = 1; $alert[3] = "Этот пользователь заблокирован. Вы не можете отправить ему личное сообщение"; } $dlg_user = users::GetUid($err, $user->login); $dlg_user_login = $user->login; if ($post_denied = ignor::CheckIgnored($dlg_user, $_SESSION['uid']) || in_array($user->login, array('admin', 'Anonymous'))) { $error = "Пользователь запретил отправлять ему сообщения"; }
$inner = ''; if ($page != 'main') { $user_phone_block = user_phone::getInstance()->render(user_phone::PLACE_HEADER); } // Сообщение сверху страницы $alert_message = ''; if (is_emp($role)) { $fpath = "../employer/setup/"; include $fpath . "index.php"; exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $is_pro = payed::CheckPro($login); $no_banner = !!$is_pro; $action = trim($_POST['action']); if (strtolower($user) == strtolower($login) && is_pro(true)) { $no_adv = true; } else { $no_adv = false; } switch ($page) { case "info": $inner = "inform_inner.php"; $activ_tab = 3; break; case "mailer": $inner = "mailer_inner.php"; $activ_tab = 0; break; case "foto": $inner = "foto_inner.php";
<?php echo $project['completed_cnt'] > 0 ? ' <a class="b-layout__link" href="/promo/bezopasnaya-sdelka/" title="Пользователь работал через Безопасную Сделку" target="_blank"><span class="b-icon b-icon__shield"></span></a>' : ''; ?> <?php } else { //if ?> <span class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_color_6db335">Заказчик</span> <?php if ($project['is_pro'] == 't') { echo is_emp($project['role']) ? view_pro_emp() : view_pro(); } ?> <?php if (isset($user_offer_exist) && $user_offer_exist && !is_pro()) { ?> <span class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_weight_normal">(контакты заказчика видны только пользователям с аккаунтом <?php echo view_pro(); ?> )</span> <?php } ?> <?php } //else ?> <?php
<script> window.addEvent('domready', function() { xajax_GetRating('month', '<?php echo $user->login; ?> ', <?php echo !is_pro() ? '600' : 'null'; ?> ); document.getElement('select[name=ratingmode]').addEvent('change', function() { xajax_GetRating(this.get('value'), '<?php echo $user->login; ?> ', <?php echo !is_pro() ? '600' : 'null'; ?> ); }); }); </script> <?php } ?> <div class="rate-page"> <div class="month-rate-graph">
function initFromDraft($draft_id, $uid) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/project_exrates.php"; $drafts = new drafts(); $this->_project = $drafts->getDraft($draft_id, $uid, 1); if (!$this->_project['id']) { return false; } if ($this->_project['logo_id'] > 0) { $this->_project['link'] = $this->_project['logo_link']; $LogoFile = new CFile($this->_project['logo_id']); $this->initLogo($LogoFile); } $cat = explode(",", $this->_project['categories']); foreach ($cat as $category) { list($cat_id, $subcat_id) = explode("|", $category); $categories[] = array('category_id' => $cat_id, 'subcategory_id' => $subcat_id); } $this->setCategories($categories); $pExrates = project_exrates::getAll(); if ($this->_project['currency'] === 0) { // USD $costRub = $this->_project['cost'] * $pExrates['24']; // бюджет в рублях } elseif ($this->_project['currency'] === 1) { // EURO $costRub = $this->_project['cost'] * $pExrates['34']; } else { // рубли $costRub = $this->_project['cost']; } $this->setCostRub($costRub); $this->_project['draft_id'] = $this->_project['id']; unset($this->_project['id']); $this->_project['user_id'] = $this->_project['uid']; $this->_project['is_pro'] = is_pro(true, $uid) ? 't' : 'f'; if ($this->_project['top_days'] > 0) { $this->setAddedTopDays($this->_project['top_days']); } if ($this->isKonkurs()) { $this->_project['end_date'] = date('d-m-Y', strtotime($this->_project['end_date'])); $this->_project['win_date'] = date('d-m-Y', strtotime($this->_project['win_date'])); } $attach = drafts::getAttachedFiles($draft_id, 4, $this->_project['uid']); if (!empty($attach)) { foreach ($attach as $file_id) { $ret[$file_id] = array('status' => 1, 'id' => $file_id); } $this->addAttachedFiles($ret, true); } return true; }
session_start(); $uid = get_uid(); $stop_words = new stop_words(hasPermissions('users')); $g_page_id = "0|25"; $name = trim($_GET['user']); $page = trim($_GET['p']); $template = 'template2.php'; $css_file = array('profile.css', 'opinions.css', '/css/block/b-opinion/b-opinion.css', '/css/block/b-icon/__cont/b-icon__cont.css', '/css/nav.css', '/css/block/b-voting/b-voting.css'); $js_file = array('warning.js', 'note.js', 'status.js', 'banned.js', 'tawl.js', 'paid_advices.js', '/css/block/b-filter/b-filter.js', '/css/block/b-fon/b-fon.js', '/css/block/b-layout/b-layout.js', 'del_acc.js', 'sbr.js', 'specadd.js', 'drafts.js', 'polls.js', 'mAttach.js', 'blogs_cnt.js', 'blogs.js', 'opinions.js', 'calendar.js', 'projects-quick-edit.js', 'attachedfiles.js', 'projects.js'); //rus $page_keyw = "работа, удаленная работа, поиск работы, предложение работы, портфолио фрилансеров, fl.ru"; $page_descr = "Работа. Удаленная работа. Поиск работы. Предложение работы. Портфолио фрилансеров. FL.ru"; $user = new employer(); $user->GetUser($name); $p_user = $user; if (strtolower($user->uid) == strtolower($uid) && is_pro(true)) { $no_adv = true; } else { $no_adv = false; } switch ($page) { case "rating": $css_file[] = "promotion.css"; if ($user->uid == $uid) { $js_file[] = 'raphael-min.js'; $js_file[] = 'svg.js'; } $inner = "rating_inner.php"; $activ_tab = 11; break; case "project":
function AddDialogueMessage($form) { global $session; session_start(); $objResponse = new xajaxResponse(); $offerIsBlocked = projects_offers::isOfferBlocked(false, get_uid(), $form['prj_id']); if ($offerIsBlocked) { $objResponse->alert('Ваше предложение заблокировано, вы не можете отправить это сообщение'); return $objResponse; } $prj = new projects(); $project = $prj->GetPrjCust(intval($form['prj_id'])); $is_pro = is_pro(); if ($project['pro_only'] == 't' && !$is_pro && !is_emp() && !hasPermissions('projects')) { if ($project['kind'] == 7) { if (contest::IsContestOfferExists($project['id'], get_uid(false))) { $is_pro = true; } } else { if (projects_offers::IsPrjOfferExists($project['id'], get_uid(false))) { $is_pro = true; } } } if ($project['pro_only'] == 't' && !$is_pro && $project['user_id'] != get_uid() && !hasPermissions('projects')) { $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.'); $objResponse->script("\$('savebtn').set('disabled', false);"); return $objResponse; } elseif ($project['verify_only'] == 't' && !($_SESSION['is_verify'] == 't') && $project['user_id'] != get_uid() && !hasPermissions('projects')) { $objResponse->alert('Данная функция доступна только верифицированным пользователям.'); $objResponse->script("\$('savebtn').set('disabled', false);"); return $objResponse; } if (!trim($form['po_text'])) { $objResponse->alert('Невозможно отправить пустое сообщение.'); $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); return $objResponse; } if (!is_emp() && $form['from'] == 'emp') { $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта работодателя.'); return $objResponse; } elseif (is_emp() && $form['from'] == 'frl') { $objResponse->script("\n \$('savebtn').set('disabled', false);\n "); $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта фрилансера.'); return $objResponse; } //Не позволяем производить действия с заблокированным проектом if (projects::CheckBlocked(intval($form['prj_id']))) { $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($form['prj_id']) . "'"); } elseif (intval($_SESSION['uid'])) { $po_id = intval($form['po_id']); //$po_text = substr(change_q_x($form['po_text'], false), 0, 1000); $po_text = antispam(trim($form['po_text'])); $po_text = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $po_text); $po_commentid = intval($form['po_commentid']); $user_id = get_uid(false); $user = new users(); $user_name = $user->GetName($user_id, $error); $pod = new projects_offers_dialogue(); $project_dialogue = $pod->GetDialogueForOffer($po_id); $project = $pod->GetProjectFromDialogue($po_id); if (count($project_dialogue)) { for ($i = count($project_dialogue) - 1; $i >= 0; --$i) { if ($project_dialogue[$i]['user_id'] != $user_id) { $to_user_name = $project_dialogue[$i]['login']; break; } } } if (is_emp()) { $emp_read = true; $frl_read = false; } else { $emp_read = false; $frl_read = true; } if (!$po_commentid) { $error = $pod->AddDialogueMessage($po_id, $user_id, $po_text, $frl_read, $emp_read); $last_comment = $pod->GetLastDialogueMessage($user_id, $po_id); $objResponse->script("last_commentid={$last_comment};"); $objResponse->script("edit_block[{$po_id}] = ' <span><a href=\"javascript:void(null)\" onClick=\"answer({$po_id}, {$last_comment});markRead(\\'{$po_id}\\');\" class=\"internal\">Редактировать</a></span>';"); // $objResponse->script("alert(last_commentid);"); // $objResponse->script("alert(edit_block);"); } else { $error = $pod->SaveDialogueMessage($user_id, $po_text, $po_commentid, $po_id, false); if ($error == 1) { $objResponse->alert('Вы не можете редактировать комментарий, так как на него уже ответили.'); return $objResponse; } } $po_text = rtrim(ltrim($po_text, "\r\n")); $po_text = substr(change_q_x($po_text, false, true, '', false, false), 0, 1000); $po_text = stripslashes($po_text); if ($error == '') { $sPostText = $po_text; if ($project['kind'] != 4) { $sId = $po_commentid ? $po_commentid : $last_comment; $aComment = $pod->getDialogueMessageById($sId); if ($aComment['moderator_status'] === '0') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(hasPermissions('projects')); $sPostText = $stop_words->replace($sPostText); } } if (!$po_commentid) { $objResponse->append('po_dialogue_talk_' . $po_id, 'innerHTML', '<div style="margin-bottom:8px;font-size:100%;"><span class="' . (is_emp() ? 'emp' : 'frl') . 'name11"><a href="/users/' . get_login($user_id) . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['uname'] . ' ' . $user_name['usurname'] . '">' . $user_name['uname'] . ' ' . $user_name['usurname'] . '</a> [<a href="/users/' . $user_name['login'] . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['login'] . '">' . $user_name['login'] . '</a>]</span> <span id="po_date_' . $last_comment . '">[' . strftime('%d.%m.%Y | %H:%M', time()) . ']</span><br /><div id="po_comment_' . $last_comment . '">' . reformat($sPostText, 50, 0, 0, 1) . '</div><div id="po_comment_original_' . $last_comment . '" style="display:none;">' . str_replace(' ', ' ', reformat($po_text, 1000, 0, 1)) . '</div></div>'); // $objResponse->call('resetfld', $po_id); $objResponse->script('dialogue_count[' . $po_id . '] = ' . (count($project_dialogue) + 1)); } else { $objResponse->assign('po_comment_' . $po_commentid, 'innerHTML', reformat($sPostText, 50, 0, 0, 1)); $objResponse->assign('po_comment_original_' . $po_commentid, 'innerHTML', str_replace(' ', ' ', reformat($po_text, 1000, 0, 1))); $objResponse->assign('po_date_' . $po_commentid, 'innerHTML', dateFormat('[d.m.Y | H:i]', date('Y-m-d H:i:s'))); } $objResponse->call('answer', $po_id); if ($to_user_name && $project['id'] && $project['name'] && !$po_commentid) { /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"); $smail = new smail(); if ($project['user_id'] == $user_id) { $error = $smail->NewPrjMessageOnOfferFrl($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text); } else { $error = $smail->NewPrjMessageOnOfferEmp($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text); }*/ } } else { $objResponse->alert('Ошибка сохранения.'); } } else { $objResponse->alert('Ошибка сохранения. Авторизируйтесь на сайте.'); } return $objResponse; }
$ps['portfolio_work_2_prev_pict'] = $user_offer['prev_pict2']; $ps['portfolio_work_3_prev_pict'] = $user_offer['prev_pict3']; $ps['cost_from'] = round($ps['cost_from'], 2); $ps['cost_to'] = round($ps['cost_to'], 2); $sPostText = $project['kind'] != 4 && $user_offer['dialogue'][0]['moderator_status'] === '0' ? $stop_words->replace($user_offer['dialogue'][0]['post_text']) : $user_offer['dialogue'][0]['post_text']; $ps['text'] = strip_tags($sPostText); } echo '<div class="answ-bord"></div>'; if ($can_edit) { echo '<a name="new_offer"></a><h1 class="b-layout__title">Редактирование ответа по проекту:</h1>'; } else { echo '<a name="new_offer"></a><h1 class="b-layout__title">Ваш ответ по проекту</h1>'; } $user_answers = $answers; $op_codes = $user_answers->GetOpCodes(); if (!is_pro()) { $isShowFreeAnswersTxt = true; include TPL_ANSWERS_DIR . "/tpl.answers-item.php"; } ?> <?php echo view_hint_access_action('Чтобы ответить на проект'); ?> <div class="b-layout b-layout_padbot_30 b-layout_2bordbot_dfdfdf0 b-layout_margbot_30"> <form id="form_add_offer" name="form_add_offer" action="<?php echo $_SERVER['REQUEST_URI']; ?> " method="POST" onKeyPress="if((event.ctrlKey) && ((event.keyCode==10)||(event.keyCode==13))) {this.submit()}"> <input name="hash" type="hidden" value="<?php echo $hash; ?>
?> <?php if ($nothing_found) { ?> <div class="b-post b-post_padtop_60"> <h4 class="b-post__h4 b-post__h4_padbot_5 b-post__h4_center">Услуг не найдено</h4> <div class="b-post__txt b-post__txt_padbot_10 b-post__txt_center">Попробуйте изменить параметры фильтра</div> <div class="b-layout__txt b-post__txt_padbot_20 b-layout__txt_center b-layout__txt_bold">или</div> <div class="b-layout__txt b-layout__txt_center"><a href="/public/?step=1&kind=1&red=/<?php if (is_emp() && is_pro()) { print '&utm_source=tu_catalog&utm_medium=emp&utm_content=pro&utm_campaign=btn_new_project'; } elseif (is_emp() && !is_pro()) { print '&utm_source=tu_catalog&utm_medium=emp&utm_content=unpro&utm_campaign=btn_new_project'; } elseif (!is_emp() && is_pro() && get_uid()) { print '&utm_source=tu_catalog&utm_medium=frl&utm_content=pro&utm_campaign=btn_new_project'; } elseif (!is_emp() && !is_pro() && get_uid()) { print '&utm_source=tu_catalog&utm_medium=frl&utm_content=unpro&utm_campaign=btn_new_project'; } elseif (!get_uid()) { print '&utm_source=tu_catalog&utm_medium=uauth&utm_content=unpro&utm_campaign=btn_new_project'; } ?> " class="b-button b-button_flat b-button_flat_orange b-button_width_190">Опубликуйте проект</a></div> </div> <?php } ?> <?php $tservices_unique = array(); ?> <?php
$specs_add_string = join(", ", $specs_add_array); } else { $specs_add_string = "Нет"; } ?> <?php if ($specs_add_string) { ?> <div style="padding-bottom:15px;vertical-align:top;width:280px;">Дополнительные специализации: <?php echo $specs_add_string; ?> </div> <?php } if ($spec_modified && !is_pro()) { ?> <p style="padding-bottom:15px;">Вы можете сменить выбранные специализации через <?php echo $spec_modified['days'] . ' ' . ending($spec_modified['days'], 'день', 'дня', 'дней'); ?> </p> <?php } //if ?> <?php if ($user->exp > 0) { ?> <div style="padding-bottom:15px;vertical-align:top;white-space:nowrap;">Опыт работы: <?php echo view_exp($user->exp);
/** * Определяет, нужно ли добавлять специализацию в профиль * @param type $uid ИД пользователя * @param type $prof_id ИД специализации * @return int 0 если не нужно, 1 если доп. специализацию, 2 если основную спец-ю */ public function needAddProf($uid, $prof_id) { $user_profs = professions::GetProfessionsByUser($uid, true, true); $selected_profs_count = count(professions::GetProfessionsByUser($uid, false)); $has_free_spec_slot = $selected_profs_count < 1 + (is_pro(true, $uid) ? PROF_SPEC_ADD : 0); if (!in_array($prof_id, $user_profs) && $has_free_spec_slot) { $user = new freelancer(); $user->GetUserByUID($uid); return $user->spec == 0 ? 2 : 1; } return 0; }
if (!$teasersExclude) { $teasersExclude = array(); } // тизеры разные для фрилансеров и работодателей $uid = get_uid(0); if ($uid) { if (is_emp()) { $teasers = $teasersEmp; } else { $teasers = $teasersFrl; } } else { $teasers = $teasersEmp; } // для про пользователей не показвыаем рекламу ПРО аккаунта if (is_pro()) { if ($_SESSION['pro_test'] === 'f') { // тизер ПРО показываем если куплен тестовый ПРО $teasersExclude[] = 'pro'; } $teasersExclude[] = 'test-pro'; $teasersExclude[] = 'offers'; } elseif (!payed::IsUserWasPro($uid)) { $teasersExclude[] = 'test-pro'; } // формируем массив из прошедших фильтрацию тизеров foreach ($teasers as $key => $teaser) { $ok = true; foreach ($teaser['exclude'] as $filter) { if (isset($teasersExclude) && in_array($filter, $teasersExclude)) { $ok = false;
// #808080 темно-серые подписи к графику // #b2b2b2 светло-серые подписи к графику $u_m_prm_periods = array(); // склеенные периоды использования параметра (текущего инструмента самопродвижения), начиная с текущего месяца. $u_y_prm_periods = array(); // склеенные периоды использования параметра, начиная с текущего года. $u_last_prm_left = 0; // отступ в пикселях от начала годового графика до начала последнего юзерского ПРО-периода. $u_last_prm_width = 0; // ширина последнего юзерского ПРО-периода, в пикселях. $u_last_prm_period = NULL; $u_prm_end_time = 0; $u_spec = professions::GetProfessionOrigin($user->spec); $u_login = $user->login; $u_is_profi = $user->is_profi == 't'; $u_is_pro = $iAmAdmin ? is_pro(true, $uid) : $_SESSION['pro_last'] !== NULL; // ПРО ли он. Может измениться далее (см. ниже) -- связано с тем, что поле is_pro обновляется раз в минуту. $u_is_pro_auto_prolong = $user->GetField($uid, $e, 'is_pro_auto_prolong', false); // Включено ли у юзера автоматическое продление PRO $u_is_verify = $user->is_verify; $u_summary = promotion::GetSummary($uid); // данные по юзеру из stat_summary. $u_rating = $user->GetField($uid, $e, 'rating_get(rating, is_pro, is_verify)'); $u_pro_rating = $u_rating; // рейтинг, с учетом, что юзер купит ПРО (определяется ниже). $u_has_ps = false; // есть ли у него платные места хоть где-то. $u_has_ps_fp = false; // есть ли у него платное место на главной странице. $u_has_ps_ctg = false; // есть ли у него платные места в каталоге.