/** * показывает сплэшскрин, предварительно сделав проверку: нужно ли его показывать * @param type $type код сплэша * @param type $debug - принудительно показать сплэш, даже если не прошел проверку * @param type $setViewed если true - отметить как просмотренный * @return boolean */ function show($type, $debug = false, $setViewed = true) { $need_show = false; if (self::SPLASH_EMPLOYER & $type || self::SPLASH_FREELANCER & $type) { $need_show = self::checkEmpFrlSplashShow($type); } if (self::SPLASH_MESSAGES & $type) { $need_show = self::checkContactsSplashShow(); } if (self::SPLASH_MONEY & $type) { $need_show = !self::isViewed($type); } if (self::SPLASH_PROEMP_NOTPROFRL & $type || self::SPLASH_NOTPROEMP_NOTPROFRL & $type) { $need_show = true; } if (self::SPLASH_REAL_NAMES & $type && !self::isViewed($type) || $debug) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/rating.php"; $attachedFiles = new attachedfiles(); $user = new users(); $user->GetUserByUID(get_uid(0)); $userpicSrc = $user->photo ? WDCPREFIX . '/users/' . $user->login . '/foto/' . $user->photo : WDCPREFIX . '/images/no_foto.png'; $rating = new rating($user->uid, $user->is_pro, $user->is_verify, $user->is_profi); $r_data = $rating->data; $need_show = true; } if (self::SPLASH_NO_SPEC & $type && !self::isViewed($type) || $debug) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; $frl = new freelancer(); $frl->GetUserByUID(get_uid(0)); if (!$frl->spec) { $need_show = true; } } // Проверяем не показывали уже этот тип if ($need_show || $debug || self::SPLASH_KONKURS == $type) { $tpl_splash = $_SERVER['DOCUMENT_ROOT'] . self::SPLASH_DIR . self::getTemplateSplash($type); if ($tpl_splash != '') { include $tpl_splash; if ($debug) { return true; } // Отмечаем как просмотренный if ($type != self::SPLASH_MESSAGES && $setViewed) { self::setViewed($type); } return true; } } }
/** * Определяет, нужно ли добавлять специализацию в профиль * @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; }
/** * Формирует отчет по арбитражу за определенный период. * * @param string $sStartDate дата начала периода * @param string $sEndDate дата конца периода */ public function printArbitrageReport($sStartDate = null, $sEndDate = null) { global $EXRATE_CODES; // имя итогового файла $sWorkTitle = 'Arbitrage report'; $sWorkTitle .= $sStartDate ? ' ' . $sStartDate : ''; $sWorkTitle .= $sEndDate ? ' - ' . $sEndDate : ''; $sWorkTitle .= '.xls'; // выбираем все этапы которые закрыты арбитражом global $DB; $sQuery = 'SELECT ss.id, sd.num FROM sbr_stages ss LEFT JOIN sbr_docs sd ON ss.sbr_id = sd.sbr_id AND sd.type = 8 WHERE ss.status = ' . sbr_stages::STATUS_ARBITRAGED; $sQuery .= $sStartDate ? " AND ss.closed_time >= '{$sStartDate}'" : ''; $sQuery .= $sEndDate ? " AND ss.closed_time <= '{$sEndDate}'" : ''; $aRows = $DB->rows($sQuery . ' ORDER BY ss.closed_time'); // подключаем pear require_once 'Spreadsheet/Excel/Writer.php'; // создаем документ $workbook = new Spreadsheet_Excel_Writer(); $workbook->setVersion(8); // создаем лист $worksheet =& $workbook->addWorksheet('1'); $worksheet->setInputEncoding('CP1251'); // заголовок листа $worksheet->write(0, 0, 'ООО "Ваан"'); $worksheet->write(2, 1, 'Таблица по актам арбитража'); $m_sty = array('NumFormat' => '### ### ##0.00', 'Align' => 'right'); $d_sty = array('NumFormat' => 'DD MMM, YYYY HH:MM:SS'); $td_sty = array('FontFamily' => 'Calibri', 'VAlign' => 'vequal_space', 'Align' => 'center', 'Border' => 1, 'BorderColor' => 'black'); $th_sty = array('FontFamily' => 'Arial', 'Size' => 10, 'Align' => 'center', 'Border' => 1, 'BorderColor' => 'black', 'Bold' => 1); $format_top =& $workbook->addFormat($th_sty); $format_td =& $workbook->addFormat($td_sty); $format_money =& $workbook->addFormat(array_merge($td_sty, $m_sty)); $format_date =& $workbook->addFormat(array_merge($td_sty, $d_sty)); $format_top->setTextWrap(1); $aHeader = array('№ п/п', 'Номер акта', 'Дата', 'Номер «Безопасной Сделки»', 'Наименование Работодателя', 'Наименование Исполнителя', 'Сумма к выплате Работодателю, руб.коп.', 'Сумма к выплате Исполнителю, руб.коп.', 'Способ выплаты'); for ($i = 0; $i < count($aHeader); ++$i) { $worksheet->write(3, $i, $aHeader[$i], $format_top); } // данные if ($aRows) { $nCnt = 1; $aRates = exrates::GetAll(); foreach ($aRows as $aOne) { $sbr = sbr_meta::getInstance(sbr_meta::ADMIN_ACCESS); $stage = $sbr->initFromStage($aOne['id'], false); $stage->getArbitrage(true); // № п/п $worksheet->write($nCnt + 3, 0, $nCnt, $format_td); // Номер акта $worksheet->write($nCnt + 3, 1, $aOne['num'], $format_td); // Дата $sDate = date('Y-m-d H:i:s', strtotime($stage->arbitrage['resolved'])); $worksheet->write($nCnt + 3, 2, $sDate, $format_date); // Номер СБР $worksheet->write($nCnt + 3, 3, $stage->sbr->getContractNum(), $format_td); // Наименование Работодателя $stage->sbr->getEmpReqvs(); $sEmpFio = sbr_meta::getFioFromReqvs($stage->sbr->emp_reqvs); if (!$sEmpFio) { $emp = new employer(); $emp->GetUserByUID($stage->sbr->emp_id); $sEmpFio = $emp->uname . ' ' . $emp->usurname . ' [' . $emp->login . ']'; } $worksheet->write($nCnt + 3, 4, $sEmpFio, $format_td); // Наименование Исполнителя $stage->sbr->getFrlReqvs(); $sFrlFio = sbr_meta::getFioFromReqvs($stage->sbr->frl_reqvs); if (!$sFrlFio) { $frl = new freelancer(); $frl->GetUserByUID($stage->sbr->frl_id); $sFrlFio = $frl->uname . ' ' . $frl->usurname . ' [' . $frl->login . ']'; } $worksheet->write($nCnt + 3, 5, $sFrlFio, $format_td); // Сумма к выплате Работодателю, руб.коп. $nSumm = $stage->getPayoutSum(sbr::EMP, exrates::BANK); $worksheet->write($nCnt + 3, 6, $nSumm, $format_money); // Сумма к выплате Исполнителю, руб.коп. $nSumm = $stage->getPayoutSum(sbr::FRL, exrates::BANK); $worksheet->write($nCnt + 3, 7, $nSumm, $format_money); // Способ выплаты $worksheet->write($nCnt + 3, 8, $EXRATE_CODES[$stage->sbr->cost_sys][1], $format_td); ++$nCnt; } } // отправляем на скачивание $workbook->send($sWorkTitle); // закрываем документ $workbook->close(); }
/** * Новая СБР * Проверяет пользовательский запрос на создание/редактирование СБР. Инициализирует данные в соответствии с переданными значениями. * * @param array $request данные запроса (гет, пост). * @param array $files массив $_FILES с вложениями к каждому этапу. * @param sbr $old старый экземпляр сделки. Передается при редактировании. * * @return bool нет ошибок? */ public function _new_initFromRequest($request, $files = null, $old = null) { $is_now_draft = $this->data['is_draft']; $this->data['is_draft'] = $request['draft'] ? 't' : 'f'; if (!isset($request['frl_db_id'])) { $request['frl_db_id'] = ''; } $request['frl_db_id'] = intval($request['frl_db_id']); if (isset($request['tuid'], $request['tuhash'])) { if ($request['tuhash'] === $this->tserviceHash($request['tuid'])) { $service = $this->checkTService($request['tuid'], $request['frl_db_id']); if ($service) { $this->data['tservice_id'] = $service['id']; $this->data['tservice_hash'] = $this->tserviceHash($service['id']); } } } elseif ($request['project_id']) { $this->checkProject($request['project_id']); } // если сделка создается из конкурса, то исполнителем может быть только победитель конкурса if ($request['project_id'] && isset($request['frl_db_id']) && $this->project['kind'] == 7 && $this->project['exec_id'] != $request['frl_db_id']) { $request['frl_db_id'] = $this->project['exec_id']; $this->error['frl'] = 'Исполнителем этой сделки может быть только победитель конкурса'; } if (!isset($request['scheme_type'])) { $request['scheme_type'] = ''; } if ($old) { if (!$request['cost_sys']) { $request['cost_sys'] = $old->cost_sys; } if (!$request['scheme_type']) { $request['scheme_type'] = $old->scheme_type; } } foreach ($request as $field => $value) { if (is_scalar($value)) { $value = trim(stripslashes($value)); } switch ($field) { case 'stages': foreach ($value as $pos => $stage) { $nowStage = $this->getStageByIdForData($stage['id']); $value[$pos]['descr'] = htmlspecialchars($stage['descr']); if (($request['scheme_type'] == sbr::SCHEME_PDRD || $request['scheme_type'] == sbr::SCHEME_PDRD2) && $stage['cost'] < sbr_stages::MIN_COST_RUR_PDRD) { $this->error['cost'][$nowStage->data['num']] = 'Поле заполненно некоректно'; } if ($request['scheme_type'] == sbr::SCHEME_LC && $is_now_draft != 't' && $stage['cost'] < sbr_stages::MIN_COST_RUR && $stage['cost'] != $nowStage->data['cost']) { $this->error['cost'][$nowStage->data['num']] = 'Поле заполненно некоректно'; } if ($request['scheme_type'] == sbr::SCHEME_LC && $is_now_draft == 't' && $stage['cost'] < sbr_stages::MIN_COST_RUR) { $this->error['cost'][$nowStage->data['num']] = 'Поле заполненно некоректно'; } if ($this->data['reserved_id'] && (int) $stage['work_time_add'] == 0) { $value[$pos]['work_time'] = $nowStage->data['work_time']; $request[$field][$pos]['work_time'] = $nowStage->data['work_time']; } elseif ($this->data['reserved_id'] && (int) $stage['work_time_add'] > 0) { $start_time = $nowStage->data['start_time'] ? $nowStage->data['start_time'] : $nowStage->data['first_time']; $endDate = strtotime($start_time . ' + ' . $nowStage->data['int_work_time'] . 'days'); $nextDate = $endDate < time() ? strtotime("+{$stage['work_time_add']} days") : strtotime(date('d.m.Y H:i', $endDate) . "+{$stage['work_time_add']} days"); $workTime = ceil(($nextDate - strtotime($start_time)) / 86400); $value[$pos]['work_time'] = $workTime; $request[$field][$pos]['work_time'] = $workTime; } } break; case 'name': if (is_empty_html($value)) { $this->error[$field] = 'Пожалуйста, заполните это поле'; } $value = substr($value, 0, self::NAME_LENGTH); break; case 'frl_db_id': if (!$this->isDraft()) { if (!$value || $value == 'логин') { $this->error['frl_db_id'] = 'Необходимо добавить исполнителя'; } } if (!$this->error['frl_db_id'] && $value != '') { $frl = new freelancer(); $frl->GetUserByUID($value); if ($frl->is_banned == 1) { $this->error['frl_db_id'] = 'Данный пользователь заблокирован'; $this->error['frl_ban'] = 'Данный пользователь заблокирован'; } $this->data['frl_id'] = $frl->uid; } break; // специальность // специальность case 'profession0_db_id': if (!$value) { $this->error['profession0_db_id'] = 'Необходимо выбрать специальность'; } break; case 'cost_sys': $reqvs = $this->getUserReqvs(); if (!in_array($value, array(exrates::YM, exrates::WMR, exrates::BANK))) { $this->error['cost_sys_err'] = 'Недопустимая валюта резервирования'; $value = exrates::BANK; } if (($value == exrates::YM || $value == exrates::WMR) && $reqvs['form_type'] == sbr::FT_JURI) { $this->error['cost_sys_err'] = 'Резервирование через Яндекс.Деньги или WebMoney доступно только физическим лицам'; } break; case 'project_id': $value = $this->project['id']; break; case 'id': $value = intvalPgSql($value); break; case 'scheme_type': $value = intvalPgSql($value); if ($value && (!self::$scheme_types[$value] || $value == self::SCHEME_OLD && (!$old || $old->scheme_type != self::SCHEME_OLD))) { $this->error['scheme_type_err'] = 'Неверный тип договора'; } break; case 'version': $value = (int) $value > 32767 ? 32767 : (int) $value; break; case 'frl_refuse_reason': $value = substr($value, 0, self::SBR_REASONS_LENGTH); break; default: break; } $this->data[$field] = $value; } $this->data['professions'] = array(); if ($_POST['profession0']) { $this->data['professions'][] = array('category_id' => __paramInit('int', null, 'profession0_column_id', 0), 'subcategory_id' => __paramInit('int', null, 'profession0_db_id', 0), 'prof_name' => __paramInit('string', null, 'profession0', 0)); } if ($_POST['profession1']) { $this->data['professions'][] = array('category_id' => __paramInit('int', null, 'profession1_column_id', 0), 'subcategory_id' => __paramInit('int', null, 'profession1_db_id', 0), 'prof_name' => __paramInit('string', null, 'profession1', 0)); } if ($_POST['profession2']) { $this->data['professions'][] = array('category_id' => __paramInit('int', null, 'profession2_column_id', 0), 'subcategory_id' => __paramInit('int', null, 'profession2_db_id', 0), 'prof_name' => __paramInit('string', null, 'profession2', 0)); } if ($request['stages']) { foreach ($request['stages'] as $num => $stage) { if (isset($stage['attaches']) && is_array($stage['attaches'])) { foreach ($stage['attaches'] as $anum => $att_id) { if (!isset($files[$att_id])) { continue; } // $attached[$att_id]['id'] = md5($attached[$att_id]['id']); if ($files[$att_id]['status'] == 1) { $request['stages'][$num]['attached'][$anum] = $files[$att_id]; } } } } if ($GLOBALS['action'] === 'editstage') { foreach ($files as $key => $file) { if ($file['status'] == 4) { $this->stages[0]->data['_new_del_attach'][] = $file; } } } $this->_new_initStagesFromRequest($request['stages'], $files, $request['action'] == 'create' ? 0 : ($request['action'] == 'edit' ? 1 : 2)); $this->getUserReqvs(); $this->getFrlReqvs(); if ($this->user_reqvs['rez_type'] == sbr::RT_UABYKZ || $this->frl_reqvs['rez_type'] == sbr::RT_UABYKZ) { $cost = 0; foreach ($this->stages as $s) { $cost += $s->cost; } $cost_rur = $cost * $this->cost2rur(); if ($cost_rur > $this->maxNorezCost()) { foreach ($this->stages as $p => $s) { $this->error['cost'][$pos] = 'Поле заполненно некоректно'; } $this->error['cost_sys_err_tbl'] = 'Превышена максимальная сумма сделки — ' . sbr::MAX_COST_USD . ' USD (или ' . sbr_meta::view_cost($this->maxNoRezCost(), exrates::BANK) . ')'; } } } // var_dump($this->error); // die(); return !$this->error; }
$is_allow = $is_owner || $is_adm; if (!($is_owner || $is_adm) && !$is_active) { include ABS_PATH . '/404.php'; exit; } //------------------------------------------------------------------------------ //Если ТУ заблокирована и юзер не владелец и не админ то 404 if (!($is_owner || $is_adm) && $data['is_blocked'] == 't') { $content = 'tpl.blocked.php'; include '../template3.php'; exit; } //------------------------------------------------------------------------------ //Получаем инфо о владельце ТУ $user_obj = new freelancer(); $user_obj->GetUserByUID($data['user_id']); $uid = $user_obj->uid; if (!$uid) { include ABS_PATH . '/404.php'; exit; } //------------------------------------------------------------------------------ // Блокируем ТУ для всех остальных если пользователь имеет задолженность $_debt_info = TServiceOrderModel::model()->isDebt($user_obj->uid); if ($_debt_info && !$is_owner && !$is_adm && $_debt_info['is_blocked'] == 't') { include ABS_PATH . '/404.php'; exit; } //------------------------------------------------------------------------------ //Пользователь скрыл вкладку ТУ //Доступна только ему и админам
/** * Удаляет категорию из подписки на проекты * * @param int $category_id * @param int $subcategory_id * @return \xajaxResponse */ function removeSubscFilter($category_id, $subcategory_id) { session_start(); $objResponse = new xajaxResponse(); if (!($uid = get_uid(false))) { return $objResponse; } $user = new freelancer(); $user->GetUserByUID($uid); $regex = '/:?c' . $category_id . ($subcategory_id > 0 ? 's' . $subcategory_id : '') . '/'; $user->mailer_str = preg_replace($regex, '', $user->mailer_str); $res = array(); $user->Update($uid, $res); return $objResponse; }
function checkFrlRezType($frl_id, $emp_rez_type) { $frl_id = intval($frl_id); $objResponse = new xajaxResponse(); $objResponse->script("\$('taxes_alert').hide();"); $objResponse->script("\$('unknown_frl_rez').addClass('b-fon_hide');"); $objResponse->script("if(!\$('nerez_frl_rez').hasClass('b-fon_nohide')) \$('nerez_frl_rez').addClass('b-fon_hide');"); $objResponse->script("\$('frl_ban').addClass('b-fon_hide');"); $objResponse->script("\$('frl').getParent().removeClass('b-combo__input_error');"); if (!$frl_id) { return $objResponse; } $frl = new freelancer(); $frl->GetUserByUID($frl_id); if (!$frl->uid) { return $objResponse; } else { if ($frl->is_banned == 1) { $objResponse->script("\$('frl_ban').removeClass('b-fon_hide');"); $objResponse->script("\$('frl').getParent().addClass('b-combo__input_error');"); } if ($frl_reqvs = sbr_meta::getUserReqvs($frl->uid)) { if ((int) $frl_reqvs['rez_type'] <= 0) { $objResponse->script("\$('unknown_frl_rez').removeClass('b-fon_hide');"); $objResponse->script("if(\$('scheme_type" . sbr::SCHEME_PDRD2 . "').checked) \$('taxes_alert').show();"); } if ((int) $frl_reqvs['rez_type'] == sbr::RT_UABYKZ) { $objResponse->script("\$('nerez_frl_rez').removeClass('b-fon_hide');"); } if ($frl_reqvs['rez_type'] == sbr::RT_UABYKZ) { if ($frl_reqvs['form_type'] == sbr::FT_PHYS) { $objResponse->script("\$('alert_frl_is_fiz').removeClass('b-layout__txt_hide');"); $objResponse->script("\$('alert_frl_is_jur').addClass('b-layout__txt_hide');"); $objResponse->script("sbr.options.reztype = 'UABYKZ_FIZ';"); } else { $objResponse->script("\$('alert_frl_is_jur').removeClass('b-layout__txt_hide');"); $objResponse->script("\$('alert_frl_is_fiz').addClass('b-layout__txt_hide');"); $objResponse->script("sbr.options.reztype = 'UABYKZ';"); } } elseif ($emp_rez_type == 0) { $objResponse->script("\$('alert_frl_is_fiz').addClass('b-layout__txt_hide');"); $objResponse->script("\$('alert_frl_is_jur').addClass('b-layout__txt_hide');"); $objResponse->script("sbr.options.reztype = 'RU'; "); } $objResponse->script("\$\$('input[tmpname=\"cost\"]')[0].fireEvent('change')"); $sbr = sbr_meta::getInstance(); $sbr->frl_id = $frl->uid; $sbr_schemes = $sbr->getSchemes(); $taxes = sbr_meta::jsSchemeTaxes($sbr_schemes, $frl_reqvs, $sbr->getUserReqvs(), sbr::EMP, exrates::BANK); $objResponse->script("sbr.options.schemes = {$taxes};"); $objResponse->script('sbr.form.recalcTotal()'); } else { $objResponse->script("\$('unknown_frl_rez').removeClass('b-fon_hide');"); $objResponse->script("if(\$('scheme_type" . sbr::SCHEME_PDRD2 . "').checked) \$('taxes_alert').show();"); } } return $objResponse; }
public function actionNewOrder() { $code = __paramInit('string', 'code', 'code', ''); $activation_data = $this->order_model->getOrderActivation($code); if (!$activation_data) { $this->missingAction(null); } $this->order_model->deleteOrderActivation($code); $is_new = !($activation_data['user_id'] > 0); $registration = new registration(); $user_data = $registration->autoRegistationAndLogin(array('uid' => $activation_data['user_id'], 'role' => 1, 'email' => $activation_data['email'], 'uname' => $activation_data['uname'], 'usurname' => $activation_data['usurname'])); //Если почему то не можем зарегать //то редиректим на регистрацию if (!$user_data || !$user_data['ret']) { $this->redirect('/registration/'); } $status = $user_data['ret']; $user = $user_data['user']; $this->uid = $user->uid; $service_id = intval($activation_data['tu_id']); $debt_info = $this->order_model->isDebt($this->uid); //блокируем возможность заказать если у исполнителя долг //и вышли все сроки погашения if ($debt_info && $debt_info['is_blocked'] == 't') { $this->missingAction(null); } $activation_data['options']['emp_id'] = $this->uid; $this->order_model->attributes($activation_data['options']); $order = $this->order_model->create($service_id); //Не удалось создать заказ показываем 404 if (!$order) { $this->missingAction(null); } //Уведомляем все стороны $tservices_smail = new tservices_smail(); $tservices_smail->newOrder($order); //Если юзер уже бывалый пользователь то редиректим на карточку заказа $order_url = sprintf(tservices_helper::url('order_card_url'), $order['id']); if (!$is_new) { if ($status == users::AUTH_STATUS_2FA) { $_SESSION['ref_uri'] = $order_url; $order_url = '/auth/second/'; } $this->redirect($order_url); } //Берем доп.инфу о фрилансере $freelancer = new freelancer(); $freelancer->GetUserByUID($order['frl_id']); //Если юзер новичек то показываем ему логин/пароль и статус заказа $this->layout = '//layouts/content-full-width'; $this->render('new-order', array('order_url' => $order_url, 'login' => $user->login, 'passwd' => $user->passwd, 'freelancer' => (array) $freelancer)); }
/** * Не использовать! * Отправляем письмо уведомление исполнителю об изменении заказе на базе ТУ. * * @param array $order * @return boolean */ public function _changeOrder($order) { if (empty($order)) { return FALSE; } //@todo: Нет необходимости получать пользователей в заказе все есть! $employer = new employer(); $employer->GetUserByUID(@$order['emp_id']); if (!$employer->uid) { return FALSE; } $freelancer = new freelancer(); $freelancer->GetUserByUID(@$order['frl_id']); if (!$freelancer->uid) { return FALSE; } $this->recipient = $this->_formatFullname(&$freelancer, true); $message = Template::render(TSERVICES_TPL_MAIL_PATH . 'change_order_frl.tpl.php', array('smail' => &$this, 'order' => $order, 'params' => $this->_addUrlParams('f'), 'emp_fullname' => $this->_formatFullname(&$employer))); $this->message = nl2br($message); $ret_f = $this->send('text/html'); return $ret_f; }
header_location_exit('/404.php'); } $account->GetInfo(get_uid()); $account->sum = $account->sum ? $account->sum : 0; $iAmAdmin = true; } else { if (!$uid) { header('Location: /fbd.php'); exit; } if (is_emp()) { header('Location: /frl_only.php'); exit; } $user = new freelancer(); $user->GetUserByUID($uid); $account->GetInfo($uid); $account->sum = $account->sum ? $account->sum : 0; $_SESSION['ac_sum'] = $account->sum; $_SESSION['ac_sum_rub'] = $account->sum_rub; $transaction_id = $account->start_transaction($uid, $tr_id); } if ($user->is_pro == 't') { $no_banner = true; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/promotion.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/rating.php"; $mode = __paramInit('int', 'mode', 'mode', 0); $mode_array = array(promotion::MODE_FP_MAIN_ID, promotion::MODE_FP_CTLG_ID);
/** * Отсылает письмо о резерве денег по СбР. * * @param int $uid UID фрилансера * @param int $prj_id id проекта * * @return string */ public function NoRiskMoneyReserved($uid, $prj_id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; $t_user = new freelancer(); $t_user->GetUserByUID($uid); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $prj = projects::GetProject($prj_id); $this->message = $this->GetHtml($t_user->uname, "\n\nСообщаем вам, что Заказчик зарезервировал деньги на личном счёте под «Безопасную Сделку» по проекту <a href='{$GLOBALS['host']}" . getFriendlyURL('project', $prj['id']) . $this->_addUrlParams('f') . "'>{$GLOBALS['host']}" . getFriendlyURL('project', $prj['id']) . '</a>. <br /> Теперь вы можете приступать к работе. ', 'simple'); $this->recipient = "{$t_user->uname} {$t_user->usurname} [{$t_user->login}] <" . $t_user->email . '>'; $this->subject = 'Заказчик зарезервировал деньги под «Безопасную Сделку»'; if (!$this->SmtpMail('text/html')) { $error = 'Невозможно отправить сообщение'; } return $error; }
/** * Уведомление исполнителю об успешной публикации ранее скрытых отзывов * * @param type $frl_id */ public function _onPublicFrl($frl_id) { $frl = new freelancer(); $frl->GetUserByUID($frl_id); $this->subject = "Успешно опубликованы ранее скрытые отзывы о сотрудничестве в проектах"; $this->recipient = $this->_formatFullname($frl, true); $this->message = Template::render(PROJECTS_TPL_MAIL_PATH . 'public_frl.tpl.php', array('opinions_url' => $GLOBALS['host'] . '/users/' . $frl->login . '/opinions/')); return $this->send('text/html'); }
/** * Извлечение автоответов которые соответсвуют критериям проекта. * * @param project $project Проект (объект класса project) * * @return array (autoresponse a1, autoresponse a2, ... autoresponse a1) */ public static function getListForProject($project) { global $DB; $list = array(); // Специализация проекта $sql_spec = ''; $specs = projects::getProjectCategories($project['id']); foreach ($specs as $spec) { if ($sql_spec) { $sql_spec .= ' OR '; } $sql_spec .= sprintf(' (filter_category_id = %d AND filter_subcategory_id = %d) OR (filter_category_id = %d AND filter_subcategory_id = 0)', $spec['category_id'], $spec['subcategory_id'], $spec['category_id']); } // Запрос на извлечение автоответов, подходящих к выбранному проекту $sql = sprintf("SELECT DISTINCT ON (user_id) user_id, id, post_date, descr, only_4_cust \n FROM autoresponse \n WHERE \n active = 't' AND remained > 0 \n AND (filter_budget = 0 OR \n (filter_budget <= %d AND filter_budget_currency = %d AND filter_budget_priceby = %d)\n )\n AND ({$sql_spec}) \n ORDER BY user_id, post_date", intval($project['cost']), $project['currency'], $project['priceby']); if ($res = $DB->rows($sql)) { foreach ($res as $data) { $freelancer = new freelancer(); $freelancer->GetUserByUID($data['user_id']); if (!$freelancer->uid) { continue; } $data['freelancer'] = $freelancer; $data['contacts_freelancer'] = array('phone' => array('name' => 'Телефон', 'value' => $freelancer->phone), 'site' => array('name' => 'Сайт', 'value' => $freelancer->site), 'icq' => array('name' => 'ICQ', 'value' => $freelancer->icq), 'skype' => array('name' => 'Skype', 'value' => $freelancer->skype), 'email' => array('name' => 'E-mail', 'value' => $freelancer->second_email)); $list[] = new self($data); } } return $list; }
} } } if ($project['exec_id'] && !$exec_info) { $exec_info = $obj_offer->GetPrjOffer($prj_id, $project['exec_id']); } list($op_count_all, $op_count_all_new_msgs) = $obj_offer->CountPrjOffers($prj_id, $countAllType); list($op_count_offers, $op_count_offers_new_msgs) = $obj_offer->CountPrjOffers($prj_id, 'offers'); list($op_count_candidate, $op_count_candidate_new_msgs) = $obj_offer->CountPrjOffers($prj_id, 'candidate'); list($op_count_refuse, $op_count_refuse_new_msgs) = $obj_offer->CountPrjOffers($prj_id, 'refuse'); list($op_count_executor, $op_count_executor_new_msgs) = $obj_offer->CountPrjOffers($prj_id, 'executor'); list($op_count_frl_refuse, $op_count_frl_refuse_new_msgs) = $obj_offer->CountPrjOffers($prj_id, 'frl_refuse'); } } else { $freelancer = new freelancer(); $freelancer->GetUserByUID(get_uid(false)); $contacts_freelancer = array('phone' => array('name' => 'Телефон', 'value' => $freelancer->phone), 'site' => array('name' => 'Сайт', 'value' => $freelancer->site), 'icq' => array('name' => 'ICQ', 'value' => $freelancer->icq), 'skype' => array('name' => 'Skype', 'value' => $freelancer->skype), 'email' => array('name' => 'E-mail', 'value' => $freelancer->second_email)); if ($_POST['ps_cost_from'] >= 1000000 || $_POST['ps_cost_from'] < 0) { $_POST['ps_cost_from'] = 0; } if ($_POST['ps_cost_to'] >= 1000000 || $_POST['ps_cost_to'] < 0) { $_POST['ps_cost_to'] = 0; } switch ($action) { case 'add': $hash = __paramInit('string', null, 'hash'); if ($hash != md5($project['id'] . $uid . projects_offers::SALT)) { header('Location: ' . getFriendlyURL('project', $project['id'])); exit; } if (($project['pro_only'] == 't' && !$is_pro || $project['verify_only'] == 't' && !$is_verify) && $project['user_id'] != $_SESSION['uid'] && !hasPermissions('projects')) {
<?php $pdrd_disabled = $sbr->scheme_type != sbr::SCHEME_PDRD && time() < strtotime('2011-01-01'); $categories = professions::GetAllGroupsLite(true, true); $sub_categories = professions::GetProfList(); $frl_ftype = sbr::FT_PHYS; if ($sbr->frl_id) { $frl = new freelancer(); $frl->GetUserByUID($sbr->frl_id); if (!$sbr->frl_login) { $sbr->data['frl_login'] = $frl->login; } if ($frl_reqvs = sbr_meta::getUserReqvs($frl->uid)) { $frl_ftype = (int) $frl_reqvs['form_type']; $frl_rtype = $frl_reqvs['rez_type']; } } ?> <script type="text/javascript"> Sbr.prototype.DEBUG=0; var SBR = new Sbr('createFrm'); window.addEvent('domready', function() { SBR = new Sbr('createFrm'); } ); Sbr.prototype.CATEGORIES={<?php // категории/подкатегории: {ид_кат:{имя_кат:{ид_подкат:имя_подкат,ид_подкат:...}},ид_кат:...} foreach ($sub_categories as $sc) { $cc = $sc['prof_group']; $ccname = str_replace("'", "\\'", $categories[$cc]['name']); $scname = str_replace("'", "\\'", $sc['name']); if ($lcc != $cc) { echo ($lcc ? '}},' : '') . "{$cc}:{'{$ccname}':{"; $lcc = $cc;
exit; } //Проверка перехода с лендинга публикации проекта if ($name = isLandingProject()) { $tmpPrj->setProjectField('name', $name); } ref_uri(); //Сохраняем ref_uri страницы $is_personal = false; if ($exec || $project['exec_id']) { $freelancer = new freelancer(); if ($exec) { //Добавление проекта $freelancer->GetUser($exec); } else { $freelancer->GetUserByUID($project['exec_id']); } if ($freelancer->uid && ($project['kind'] == projects::KIND_PERSONAL || $kind == projects::KIND_PERSONAL)) { $is_personal = true; } } if (!$kind) { $kind = $project['kind']; } //#0026326 //Лимит на кол-во публикаций проектов для неPRO за 24 часа if ($kind == 1 && !$proj_id && ($last_prj_date = $tmpPrj->isProjectsLimit($uid))) { //и есть лимит $last_prj_date = ago_pub($last_prj_date, 'G:i'); $content = "new/tpl.limit.php"; include "../template2.php";
public function getInformationUser($uid = false) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/country.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/city.php"; if (!$uid) { $uid = $_SESSION['uid']; } if (is_emp()) { $user = new employer(); } else { $user = new freelancer(); } $user->GetUserByUID($uid); $this->setFieldInfo('uname', $user->uname); $this->setFieldInfo('usurname', $user->usurname); $this->setFieldInfo('birthday', $user->birthday); $this->setFieldInfo('country', $user->country); $this->setFieldInfo('country_name', country::GetCountryName($user->country)); $this->setFieldInfo('city', $user->city); $this->setFieldInfo('city_name', city::GetCityName($user->city)); $this->setFieldInfo('sex', $user->sex == 't' ? 1 : ($user->sex == 'f' ? 0 : -1)); $this->setFieldInfo('info_for_reg', unserialize($user->info_for_reg)); }
/** * Провека параметров и подготовка настроек * для обновлении или добавления * * @param type $data * @return type */ public function isValid($data) { require_once ABS_PATH . '/freelancers/widgets/FreelancersPreviewWidget.php'; require_once ABS_PATH . '/classes/freelancer.php'; $this->is_valid = false; $max_pos = FreelancersPreviewWidget::MAX_ITEMS; $this->group_id = isset($data['group']) ? intval($data['group']) : 0; $this->prof_id = isset($data['prof']) ? intval($data['prof']) : 0; $hash = isset($data['hash']) ? $data['hash'] : null; //Проверка группы/раздела именно тех на странице которых был открыт попап if ($hash !== paramsHash(array($this->group_id, $this->prof_id))) { return $this->is_valid; } $value = isset($data['value']) ? $data['value'] : ''; $this->uid = isset($data['uid']) && $data['uid'] > 0 ? $data['uid'] : null; $this->pos = isset($data['pos']) && $data['pos'] > 0 && $data['pos'] <= $max_pos ? intval($data['pos']) : null; if (!$this->uid || !$this->pos || empty($value)) { return $this->is_valid; } $user = new freelancer(); $user->GetUserByUID($this->uid); if ($user->uid <= 0) { return $this->is_valid; } $pattern = implode('|', FreelancersPreviewEditorPopup::$types); $matches = array(); if (preg_match("/^({$pattern})_([0-9]+)\$/", $value, $matches)) { $this->type = self::$type_from_string[$matches[1]]; $this->src_id = $matches[2]; switch ($this->type) { case self::TYPE_PF: require_once ABS_PATH . '/classes/portfolio.php'; $portfolio = new portfolio(); $this->is_valid = (bool) $portfolio->isExistActive($this->uid, $this->src_id); break; case self::TYPE_TU: require_once ABS_PATH . '/classes/tservices/tservices.php'; $tservices = new tservices($this->uid); $this->is_valid = (bool) $tservices->isExistActive($this->src_id); break; } if ($this->is_valid) { $res = $this->getRowByUidAndPos($this->uid, $this->pos, $this->group_id, $this->prof_id); $this->id = $res ? $res['id'] : 0; //Уже есть данная позиция //то готовим данные для обновления if ($this->id > 0) { $this->data = array('src_id' => $this->src_id, 'type' => $this->type, 'is_default' => false); $this->is_default = $res['is_default'] == 't'; //Первое добавление позиции //то готовим новые данные для добавления } else { $exist_data = isset($_SESSION[self::SESS_EXIST_PREVIEW_DATA]) ? $_SESSION[self::SESS_EXIST_PREVIEW_DATA] : null; for ($idx = 1; $idx <= $max_pos; $idx++) { if ($idx == $this->pos) { $this->data[$idx] = array('src_id' => $this->src_id, 'type' => $this->type, 'user_id' => $this->uid, 'pos' => $idx, 'group_id' => $this->group_id, 'prof_id' => $this->prof_id, 'is_default' => false); } elseif (isset($exist_data['ids'][$idx - 1])) { $this->data[$idx] = array('src_id' => $exist_data['ids'][$idx - 1], 'type' => $exist_data['type'], 'user_id' => $this->uid, 'pos' => $idx, 'group_id' => $this->group_id, 'prof_id' => $this->prof_id, 'is_default' => false); } } } //Устанавливаем по возможности //текущии настройки для общего каталога / раздела /* - общий каталог поумолчанию из основного подраздела (специализации), но может и настраиваться по своему - раздел каталога поумолчанию из последнего отредактированного подраздела, но может настраиваться по своему - подраздел (специализация) настраивается по своему */ if ($this->prof_id > 0 && $this->group_id == 0 && count($this->data)) { $is_exist_setting_for_catalog = false; $is_exist_setting_for_group = false; require_once ABS_PATH . '/classes/professions.php'; $group_id = professions::GetGroupIdByProf($this->prof_id); $exist_data = $this->getExistData($group_id); $current_settings = array(); if ($exist_data) { foreach ($exist_data as $el) { //Существующие текущие настройки раздела if ($el['prof_id'] == $this->prof_id && $el['group_id'] == 0) { unset($el['id']); if ($el['pos'] == $this->pos) { $el['src_id'] = $this->src_id; $el['type'] = $this->type; } $current_settings[$el['pos']] = $el; //Существующие настройки для общего каталога } elseif ($el['prof_id'] == 0 && $el['group_id'] == 0 && $el['is_default'] == 'f') { $is_exist_setting_for_catalog = true; //Существующие настройки для группы } elseif ($el['prof_id'] == 0 && $el['group_id'] == $group_id && $el['is_default'] == 'f') { $is_exist_setting_for_group = true; } } } //Если настройки для каталога нет и эта основная //специализация то ее добавляем в общий каталог $data_extended = array(); $current_settings = $this->id > 0 ? $current_settings : $current_settings + $this->data; if (!$is_exist_setting_for_catalog) { $is_main_prof = (bool) $this->db()->val('SELECT 1 FROM freelancer WHERE uid = ?i AND spec = ?i LIMIT 1', $this->uid, $this->prof_id); if ($is_main_prof) { foreach ($current_settings as $el) { $el['prof_id'] = 0; $el['group_id'] = 0; $el['is_default'] = true; $data_extended[] = $el; } } } //Если нет настроек для группы раздела то добавляем текущии //настройки как поумолчанию для группы if (!$is_exist_setting_for_group) { foreach ($current_settings as $el) { $el['prof_id'] = 0; $el['group_id'] = $group_id; $el['is_default'] = true; $data_extended[] = $el; } } if ($data_extended) { $this->data_extra_update = $data_extended; } } } } return $this->is_valid; }
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/rating.php"; $stretch_page = true; $showMainDiv = true; $footer_payed = true; $no_banner = true; $freelancer = new freelancer(); $is_allow = isAllowProfi(); if ($is_allow) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $uid = get_uid(); $account = new account(); $account->GetInfo($uid, true); if (__paramInit('bool', 'quickprofi_ok', NULL, false)) { //Обновляем сессию $freelancer->GetUserByUID($uid); $_SESSION['is_profi'] = $freelancer->isProfi(); $pro_last = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt']; } } $catalogList = $freelancer->getProfiCatalog(80); $maxFirstCLBlock = 90; $cntCatalogList = count($catalogList); $isMoreCatalogList = $cntCatalogList > $maxFirstCLBlock; $cntFirstCLBlock = $isMoreCatalogList ? $maxFirstCLBlock : $cntCatalogList; $page_title = "PROFI аккаунт - фриланс, удаленная работа на FL.ru"; $css_file = array('/css/block/b-icon/__cont/b-icon__cont.css'); $js_file = array('payed.js', 'billing.js'); $content = 'content.php'; $header = "../header.php";
/** * Один из шаблон текста решения арбитража (всплывающее окно). * * @param array $arb массив данных по арбитражу. * @return string */ function arb_descr() { $stage = $this; if ($stage->arbitrage === false) { $stage->getArbitrage(TRUE); } if (!$stage->arbitrage) { return NULL; } ob_start(); if (!$stage->arbitrage['resolved']) { include $_SERVER['DOCUMENT_ROOT'] . '/norisk2/tpl.currents-arb_reason.php'; } else { $show_pay_info = true; $emp = new employer(); $frl = new freelancer(); $emp->GetUserByUID($this->sbr->emp_id); $frl->GetUserByUID($this->sbr->frl_id); if ($this->sbr->isEmp() && $stage->arbitrage['frl_percent'] >= 1 || $this->sbr->isFrl() && $stage->arbitrage['frl_percent'] <= 0 || $this->getPayouts($this->sbr->uid)) { $show_pay_info = false; } include $_SERVER['DOCUMENT_ROOT'] . '/norisk2/tpl.currents-arb_solution.php'; } return ob_get_clean(); }
public function completeData($type_role = 1) { if ($this->isDisable()) { header("Location: /wizard/registration/?step=1"); exit; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/city.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/country.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/blogs.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; $themes_blogs = blogs::getRandomThemes(5); $themes_commune = commune::getRandomCommunes(3); $month = array('1' => 'января', '2' => 'февраля', '3' => 'марта', '4' => 'апреля', '5' => 'мая', '6' => 'июня', '7' => 'июля', '8' => 'августа', '9' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря'); if ($type_role == step_wizard_registration::TYPE_WIZARD_EMP) { $user = new employer(); $checkPRO = $this->checkWizardPRO(array(step_employer::OP_CODE_PRO)); $pro_emp = $checkPRO['id'] > 0 ? 1 : 0; if ($pro_emp) { $week_pro = round($checkPRO['ammount'] / 10); } } else { $user = new freelancer(); $checkPRO = $this->checkWizardPRO(step_freelancer::getOperationCodePRO()); $pro_frl = $checkPRO['id'] > 0 ? 1 : 0; if ($pro_frl) { $op_code = $checkPRO['op_code']; } } $user->GetUserByUID(wizard::getUserIDReg()); $info_for_reg = unserialize($user->info_for_reg); $uname = $user->uname; $usurname = $user->usurname; $sex = $user->sex == 't' ? 1 : ($user->sex == 'f' ? 0 : -1); $birthday = strtotime($user->birthday); if ($birthday) { $bday = date('d', $birthday); $bmonth = (int) date('m', $birthday); $bmonth_value = $month[$bmonth]; $byear = date('Y', $birthday); } else { $bday = ''; $bmonth = (int) date('m', $birthday); $bmonth_value = $month[$bmonth]; $byear = ''; } $city = $user->city; if ($city) { $city_value = city::GetCityName($city); } $country = $user->country; if ($country) { $country_value = country::GetCountryName($country); } if ($type_role == step_wizard_registration::TYPE_WIZARD_EMP) { $company = $user->compname; $about_company = $user->company; $logo_name = $user->logo; $dir = "users/" . substr($user->login, 0, 2) . "/" . $user->login . "/logo/"; $logo_path = WDCPREFIX . "/" . $dir . $user->logo; } $info['site'] = $this->loadMultiVal('site', 'site', $user); $info['email'] = $this->loadMultiVal('second_email', 'email', $user); $info['phone'] = $this->loadMultiVal('phone', 'phone', $user); $info['icq'] = $this->loadMultiVal('icq', 'icq', $user); $info['skype'] = $this->loadMultiVal('skype', 'skype', $user); $info['jabber'] = $this->loadMultiVal('jabber', 'jabber', $user); $info['lj'] = $this->loadMultiVal('ljuser', 'lj', $user); $action = __paramInit('string', null, 'action'); if ($action == 'upd_info') { $info_for_reg = $_POST['info_for_reg']; if ($info_for_reg['email_0'] !== null) { $info_for_reg['second_email'] = $info_for_reg['email_0']; unset($info_for_reg['email_0']); } if ($info_for_reg['phone_0'] !== null) { $info_for_reg['phone'] = $info_for_reg['phone_0']; unset($info_for_reg['phone_0']); } if ($info_for_reg['site_0'] !== null) { $info_for_reg['site'] = $info_for_reg['site_0']; unset($info_for_reg['site_0']); } if ($info_for_reg['lj_0'] !== null) { $info_for_reg['ljuser'] = $info_for_reg['lj_0']; unset($info_for_reg['lj_0']); } if ($info_for_reg['jabber_0'] !== null) { $info_for_reg['jabber'] = $info_for_reg['jabber_0']; unset($info_for_reg['jabber_0']); } if ($info_for_reg['skype_0'] !== null) { $info_for_reg['skype'] = $info_for_reg['skype_0']; unset($info_for_reg['skype_0']); } if ($info_for_reg['icq_0'] !== null) { $info_for_reg['icq'] = $info_for_reg['icq_0']; unset($info_for_reg['icq_0']); } if ($info_for_reg['compname'] !== null) { $info_for_reg['company'] = $info_for_reg['compname']; unset($info_for_reg['compname']); } $info_for_reg = array_map('intval', $info_for_reg); $user->info_for_reg = serialize($info_for_reg); $uname = __paramInit('string', null, 'uname', null, 21); $usurname = __paramInit('string', null, 'usurname', null, 21); if ($uname == '') { $error['uname'] = "Поле заполнено некорректно"; } if ($usurname == '') { $error['usurname'] = "Поле заполнено некорректно"; } if (!preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $uname)) { $error['uname'] = "Поле заполнено некорректно"; } else { $user->uname = $uname; } if (!preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $usurname)) { $error['usurname'] = "Поле заполнено некорректно"; } else { $user->usurname = $usurname; } $sex = __paramInit('int', null, 'sex', 1); // по умолчанию мужской пол $user->sex = $sex == 1 ? 't' : 'f'; $bday = __paramInit('int', null, 'bday', null); $bmonth = __paramInit('int', null, 'bmonth_db_id', 1); $bmonth_value = __paramInit('string', null, 'bmonth'); $byear = __paramInit('int', null, 'byear', null); if ($bday != null && $byear != null) { if (!is_numeric($bday) || !is_numeric($byear) || !checkdate($bmonth, $bday, $byear) || $byear < 1945 || $byear > date('Y')) { $error['birthday'] = "Поле заполнено некорректно"; } else { $user->birthday = dateFormat("Y-m-d", $byear . "-" . $bmonth . "-" . $bday); } } else { $user->birthday = "1910-01-01"; } if (!$error['birthday'] && $user->birthday && date("Y", strtotime($user->birthday)) >= date("Y")) { $error['birthday'] = "Поле заполнено некорректно"; } $city = __paramInit('int', null, 'city_db_id', 0); $city_value = __paramInit('string', null, 'city', false); $country = __paramInit('int', null, 'country_db_id', 0); $country_value = __paramInit('string', null, 'country', false); if ($city == 0 && strlen($city_value) != 0) { $error['city'] = 'Поле заполнено некорректно'; } if ($country == 0 && strlen($country_value) != 0) { $error['country'] = 'Поле заполнено некорректно'; } $user->country = $country; $user->city = $city; $company = __paramInit('string', null, 'company') ? substr(__paramInit('string', null, 'company'), 0, 64) : ''; $about_company = __paramInit('string', null, 'about_company'); $user->compname = $company; if (strlen($about_company) > 500) { $error['company'] = "Количество знаков в тексте о компании превышает допустимое значение"; } else { $user->company = $about_company; } $logo_id = __paramInit('int', null, 'logo_company'); $logo_name = __paramInit('string', null, 'logo_name'); if ($logo_name) { $user->logo = $logo_name; $user->Update(wizard::getUserIDReg(), $res); } $info['site'] = $this->initMultiVal('site'); $info['email'] = $this->initMultiVal('email'); $info['phone'] = $this->initMultiVal('phone'); $info['icq'] = $this->initMultiVal('icq'); $info['skype'] = $this->initMultiVal('skype'); $info['jabber'] = $this->initMultiVal('jabber'); $info['lj'] = $this->initMultiVal('lj'); if (!empty($info['site'])) { foreach ($info['site'] as $i => $value) { $name = 'site' . ($i != 0 ? "_{$i}" : ""); if (!url_validate(addhttp($value), true) && trimhttp($value) != '') { $error[$name] = "Поле заполнено некорректно"; } else { $user->{$name} = addhttp($value); } } } if (!empty($info['email'])) { foreach ($info['email'] as $i => $value) { if ($i == 0) { $name_save = "second_email"; } else { $name_save = "email_{$i}"; } $name = 'email' . ($i != 0 ? "_{$i}" : ""); if (!is_email($value) && $value != '') { $error[$name] = "Поле заполнено некорректно"; } else { $user->{$name_save} = $value; } } } if (!empty($info['phone'])) { foreach ($info['phone'] as $i => $value) { $name = 'phone' . ($i != 0 ? "_{$i}" : ""); if (!preg_match("/^[-+0-9)( #]*\$/", $value)) { $error[$name] = "Поле заполнено некорректно"; } else { $user->{$name} = $value; } } } if (!empty($info['icq'])) { foreach ($info['icq'] as $i => $value) { $name = 'icq' . ($i != 0 ? "_{$i}" : ""); if (!preg_match("/^[-0-9\\s]*\$/", $value) && !is_email($value)) { $error[$name] = "Поле заполнено некорректно"; } else { $user->{$name} = $value; } } } if (!empty($info['skype'])) { foreach ($info['skype'] as $i => $value) { $name = 'skype' . ($i != 0 ? "_{$i}" : ""); $user->{$name} = $value; } } if (!empty($info['jabber'])) { foreach ($info['jabber'] as $i => $value) { $name = 'jabber' . ($i != 0 ? "_{$i}" : ""); if (strlen($value) > 255) { $error[$name] = "Количество знаков превышает допустимое значение"; } else { $user->{$name} = $value; } } } if (!empty($info['lj'])) { foreach ($info['lj'] as $i => $value) { if ($i == 0) { $name_save = "ljuser"; } else { $name_save = "lj_{$i}"; } $name = 'lj' . ($i != 0 ? "_{$i}" : ""); if (!preg_match("/^[a-zA-Z0-9_-]*\$/", $value)) { $error[$name] = "Поле заполнено некорректно"; } else { $user->{$name_save} = $value; } } } if ($type_role == step_wizard_registration::TYPE_WIZARD_EMP) { $pro_emp = __paramInit('int', null, 'pro-emp', false); if ($pro_emp) { $week_pro = round(__paramInit('int', null, 'week_pro', 0)); } } else { $ammount = 0; $pro_frl = __paramInit('int', null, 'pro-frl', false); if ($pro_frl) { $pro = __paramInit('string', null, 'pro', -1); switch ($pro) { case "1week": $op_code = 76; $ammount = 7; break; case "1": $op_code = 48; $ammount = 19; break; case "3": $op_code = 49; $ammount = 54; break; case "6": $op_code = 50; $ammount = 102; break; case "12": $op_code = 51; $ammount = 180; break; case "-1": default: $ammount = 0; break; } } } if (!$error && wizard::getUserIDReg()) { $error['save'] = $user->Update(wizard::getUserIDReg(), $res); if (!$error['save']) { if ($type_role == step_wizard_registration::TYPE_WIZARD_EMP) { $ammount = $week_pro * 10; if ($ammount > 0) { $checkPRO = $this->checkWizardPRO(step_employer::OP_CODE_PRO); if ($checkPRO['id'] > 0) { $update = array("ammount" => $ammount); wizard_billing::editPaidOption($update, $checkPRO['id']); } else { $insert = array("wiz_uid" => step_wizard::getWizardUserID(), "op_code" => step_employer::OP_CODE_PRO, "type" => 3, "ammount" => $ammount, "parent" => wizard::getUserIDReg()); wizard_billing::addPaidOption($insert); } } else { $sql = "DELETE FROM wizard_billing WHERE wiz_uid = ? AND op_code = ?"; $this->_db->query($sql, step_wizard::getWizardUserID(), step_employer::OP_CODE_PRO); } } else { // Чистим $sql = "DELETE FROM wizard_billing WHERE wiz_uid = ? AND op_code IN (?l)"; $this->_db->query($sql, step_wizard::getWizardUserID(), step_freelancer::getOperationCodePRO()); if ($ammount > 0) { $insert = array("wiz_uid" => step_wizard::getWizardUserID(), "op_code" => $op_code, "type" => 4, "ammount" => $ammount, "parent" => wizard::getUserIDReg()); wizard_billing::addPaidOption($insert); } } $this->parent->setCompliteStep(true); $this->parent->setNextStep($this->parent->getPosition() + 1); header("Location: /wizard/registration/"); exit; } } if ($logo_id > 0) { $file = new CFile($logo_id); $logo_path = WDCPREFIX . "/" . $file->path . $file->name; } } include $_SERVER['DOCUMENT_ROOT'] . "/wizard/registration/steps/tpl.step.info.php"; }
/** * Отправляем письма уведомления об отмене арбитража заказчику и исполнителю. * * @param array $order Заказ * @return boolean */ protected function _onApplyArbitrage($order, $price) { if (empty($order)) { return FALSE; } $priceBack = $order['reserve_data']['price'] - $price; //Уведомления заказчику $user = new employer(); $user->GetUserByUID((int) @$order['emp_id']); if (!$user->uid) { return FALSE; } $this->recipient = $this->_formatFullname(&$user, true); $this->message = Template::render(RESERVES_TPL_MAIL_PATH . 'apply_arbitrage.tpl.php', array('smail' => &$this, 'order' => $order, 'is_emp' => true, 'pricePay' => $price, 'priceBack' => $priceBack, 'params' => $this->_addUrlParams('e'))); $ret1 = $this->send('text/html'); ReservesSms::model($user->uid)->sendByStatusAndPrice(ReservesSms::STATUS_APPLY_ARBITRAGE_EMP, $price, $priceBack, $order['id']); //Уведомления исполнителю $user = new freelancer(); $user->GetUserByUID((int) @$order['frl_id']); if (!$user->uid) { return FALSE; } $this->recipient = $this->_formatFullname(&$user, true); $this->message = Template::render(RESERVES_TPL_MAIL_PATH . 'apply_arbitrage.tpl.php', array('smail' => &$this, 'order' => $order, 'is_emp' => false, 'pricePay' => $price, 'priceBack' => $priceBack, 'params' => $this->_addUrlParams('e'))); $ret2 = $this->send('text/html'); ReservesSms::model($user->uid)->sendByStatusAndPrice(ReservesSms::STATUS_APPLY_ARBITRAGE_FRL, $price, $priceBack, $order['id']); return $ret1 && $ret2; }