Example #1
0
         $frl = new employer();
         $alert[1] = $frl->UpdatePwd(get_uid(), $oldpwd, $pwd, 0);
         if (!$alert[1]) {
             $info = "Изменения внесены";
             $smail = new smail();
             $smail->ChangePwd($uid, $pwd);
             // Пишем в лог смены паролей
             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/restorepass_log.php";
             restorepass_log::SaveToLog($uid, getRemoteIP(), 3);
         }
     }
     break;
 case "foto_change":
     $foto = new CFile($_FILES['foto']);
     $del = trim($_POST['del']);
     $frl = new employer();
     if ($foto->name || $del == 1) {
         $error .= $frl->UpdateFoto(get_uid(), $foto, $del);
         /*if (!$error) $info_msg = "Изменения внесены";
         		else $error = "Файл не удовлетворяет условиям загрузки";*/
         if (!$error) {
             $_SESSION['photo'] = $frl->photo;
         }
         $nParam = !$error ? 1 : 2;
         header_location_exit('/users/' . $_SESSION['login'] . '/setup/foto/?msg=' . $nParam);
     }
     break;
     //Удаление аккаунта убрано! не раскоменчивать!
     /*case "delete":
     		$passwd = trim($_POST['passwd']);
     		if ($passwd){
Example #2
0
 /**
  * Один из шаблон текста решения арбитража (всплывающее окно).
  *
  * @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();
 }
Example #3
0
 /**
  * Уведомления заказчику, если кандидат/победитель/исполнитель заблокирован на сайте
  * 
  * проект/конкурс/СБР - всего 5 видов уведомлений @see pmail::_ExecutorCandidateBanMail
  * 
  * @param  string|array $ids идентификаторы заблокированных пользователей
  * @param  resource $connect соединение к БД (необходимо в PgQ) или NULL -- создать новое
  * @return bool true - успех, false - провал
  */
 function ExecutorCandidateBanMail($ids, $connect = NULL)
 {
     if (empty($ids)) {
         return false;
     }
     $mRes = employer::GetEmployersBlockedCandidates($ids);
     if (!$GLOBALS['DB']->error && pg_num_rows($mRes)) {
         $nCurCnf = 1;
         $aRecipient = array();
         while ($aOne = pg_fetch_assoc($mRes)) {
             $aOne['name'] = htmlspecialchars($aOne['name'], ENT_QUOTES, 'CP1251', false);
             if ($nCurCnf != $aOne['cnf']) {
                 if ($aRecipient) {
                     $this->_ExecutorCandidateBanMail($nCurCnf, $aRecipient);
                     $aRecipient = array();
                 }
                 $nCurCnf = $aOne['cnf'];
             }
             if ($aOne['lnk'] == 'project') {
                 $sLink = $GLOBALS['host'] . getFriendlyURL('project', $aOne['id']);
             } elseif ($aOne['lnk'] == 'sbr') {
                 $sLink = $GLOBALS['host'] . '/' . sbr::NEW_TEMPLATE_SBR . '/?id=' . $aOne['id'];
             }
             $sUlink = $GLOBALS['host'] . '/users/' . $aOne['login'];
             $sUname = $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']';
             $aRecipient[] = array('email' => $aOne['e_name'] . " " . $aOne['e_surname'] . " <" . $aOne['email'] . ">", 'extra' => array('name' => $aOne['name'], 'link' => $sLink, 'u_link' => $sUlink, 'u_name' => $sUname, 'USER_LOGIN' => $aOne['e_login']));
         }
         if ($aRecipient) {
             $this->_ExecutorCandidateBanMail($nCurCnf, $aRecipient);
         }
     }
 }
Example #4
0
        $action = "save";
    }
    if ($_POST['action_reload'] != "") {
        $action = "reload";
    }
    if ($_POST['action_change'] != "") {
        $action = "change";
    }
    if ($_POST['action_change2'] != "") {
        $action = "change_country";
    }
    if ($_POST['action_change3'] != "") {
        $action = "change_country2";
    }
}
$employer = new employer();
$employer->GetUserByUID(get_uid(false));
$contacts = array('phone' => array('name' => 'Телефон', 'value' => $employer->phone), 'site' => array('name' => 'Сайт', 'value' => $employer->site), 'icq' => array('name' => 'ICQ', 'value' => $employer->icq), 'skype' => array('name' => 'Skype', 'value' => $employer->skype), 'email' => array('name' => 'E-mail', 'value' => $employer->second_email));
//hash. Если пользователь вводил данные до авторизации, то подставляем данные в массив #_POST
//@todo Переписать это в адаптер.
if ($hash) {
    $guestMemoryModel = new GuestMemoryModel();
    $savedData = $guestMemoryModel->getData($hash);
    $tmpPrj->setProjectField('name', substr(__paramValue('html', antispam(addslashes($savedData['name'])), 60, true), 0, 512));
    $tmpPrj->setProjectField('descr', __paramValue('html', antispam(addslashes($savedData['descr'])), null, true));
    if (isset($savedData['IDResource'])) {
        $uploader = new uploader($savedData['IDResource']);
    }
    $agreement = $savedData['agreement'];
    $tmpPrj->setProjectField('agreement', $agreement);
    if ($agreement) {
Example #5
0
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php';
//Для чего тут?
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";
Example #6
0
 /**
  * Отправляем письма уведомления об отмене арбитража заказчику и исполнителю.
  * 
  * @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;
 }
 public function doActivation($code)
 {
     $activation_data = $this->getActivation($code);
     if (!$activation_data) {
         return false;
     }
     $this->deleteActivation($code);
     $current_uid = get_uid(false);
     if ($current_uid) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
         $user = new employer();
         $user->GetUserByUID($current_uid);
         $status = 1;
     } else {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/registration.php';
         $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']) {
             return self::REDIRECT_AUTH_FAIL;
         }
         $status = $user_data['ret'];
         $user = $user_data['user'];
     }
     $uid = $user->uid;
     $redirect = false;
     $data = $activation_data['data'];
     switch ($activation_data['type']) {
         case GuestConst::TYPE_PERSONAL_ORDER:
             $data['emp_id'] = $uid;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php';
             $orderModel = TServiceOrderModel::model();
             if ($order = $orderModel->createPersonal($data)) {
                 $tservices_smail = new tservices_smail();
                 $tservices_smail->newOrder($order);
                 $redirect = sprintf(tservices_helper::url('order_card_url'), $order['id']);
             }
             break;
         case GuestConst::TYPE_VACANCY:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             $data['state'] = projects::STATE_MOVED_TO_VACANCY;
             $date_public = null;
             $redirect_layout = '/public/?step=1&kind=4&public=%s&popup=1';
         case GuestConst::TYPE_PROJECT:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             $key = md5(uniqid($uid));
             $tmpPrj = new tmp_project($key);
             $tmpPrj->initForUser($user);
             if (isset($data['IDResource']) && !empty($data['IDResource'])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
                 $uploader = new uploader($data['IDResource']);
                 $attachedfiles_files = $uploader->getFiles();
                 $tmpPrj->clearAttaches();
                 $tmpPrj->addAttachedFiles($attachedfiles_files, false);
                 $uploader->clear();
             }
             if ($prj = $tmpPrj->addSimpleProject($data)) {
                 $_SESSION['new_public'] = 1;
                 $redirect = getFriendlyURL('project', $prj);
                 if (isset($redirect_layout)) {
                     $redirect = sprintf($redirect_layout, $prj['id']);
                 }
                 $src_id = $prj['id'];
                 //Если проект был создан при переходе с лендинга
                 //то привязываем его для статистики
                 if (isset($data['landingProjectId'])) {
                     require_once ABS_PATH . '/classes/LandingProjects.php';
                     LandingProjects::model()->linkWithProject($data['landingProjectId'], $src_id, !$activation_data['user_id']);
                 }
             }
             break;
     }
     //Обновляем приглашение
     if (isset($activation_data['invite_id']) && $activation_data['invite_id'] > 0) {
         $guestInviteModel = new GuestInviteModel();
         $guestInviteModel->updateDateComeInvite($activation_data['invite_id'], array('src_id' => isset($src_id) ? $src_id : null, 'date_public' => isset($date_public) ? $date_public : null));
     }
     //Мессага с паролями для новеньких
     if (!$activation_data['user_id'] && !$current_uid) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Helpers/SubBarNotificationHelper.php';
         SubBarNotificationHelper::getInstance()->setMessage($activation_data['type'], array('login' => $user->login, 'password' => $user->passwd), $user->uid);
     } elseif ($status == users::AUTH_STATUS_2FA) {
         $_SESSION['ref_uri'] = $redirect;
         $redirect = '/auth/second/';
     }
     return $redirect;
 }
Example #8
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
$uid = get_uid(false);
$employer = new employer();
$employer->GetUserByUID($uid);
$account = new account();
$account->GetInfo($uid);
$_SESSION['ac_sum'] = $account->sum;
$_SESSION['ac_sum_rub'] = $account->sum_rub;
$_SESSION['bn_sum'] = $account->bonus_sum;
//Формируем проект
$tmpPrj = new tmp_project('key');
$tmpPrj->setEdit(true);
$tmpPrj->setProjectField('kind', 1);
$tmpPrj->setProjectField('descr', 'Описание проекта для оплаты с разными op_code');
$tmpPrj->setProjectField('name', 'Проект для оплаты с разными op_code');
$tmpPrj->setProjectField('agreement', 1);
$tmpPrj->setProjectField('priceby', 1);
$tmpPrj->setProjectField('budget_type', 1);
$cats[] = array('category_id' => 12, 'subcategory_id' => 120);
Example #9
0
 /**
  * Выдает объект sbr в зависимости от роли пользователя и запрошенной страницы.
  * Админ может выступать от роли фрилансера/работодателя чужой сделки, админа или обычного участника сделки.
  * 
  * @return object экземпляр класса sbr_emp|sbr_frl|sbr_adm.
  */
 static function getInstance($access = NULL, $U = NULL, $is_emp = NULL)
 {
     $req =& $_REQUEST;
     $sess =& $_SESSION;
     $site = $req['site'];
     $sbr = NULL;
     if (!$sess['uid'] && !$U) {
         return NULL;
     }
     if (($is_adm = hasPermissions('sbr', $sess['uid'])) || hasPermissions('sbr_finance', $sess['uid'])) {
         if (isset($req['access'])) {
             if ($req['access'] == self::USER_ACCESS) {
                 unset($sess['F']);
                 unset($sess['E']);
                 unset($sess['access']);
             } else {
                 $sess['access'] = $req['access'];
                 if ($req['F']) {
                     $sess['F'] = $req['F'];
                     unset($sess['E']);
                 } else {
                     if ($req['E']) {
                         $sess['E'] = $req['E'];
                         unset($sess['F']);
                     } else {
                         unset($sess['F']);
                         unset($sess['E']);
                     }
                 }
             }
         }
         if (!$access) {
             $access = $sess['access'];
         }
     }
     if (hasPermissions('sbr_finance', $sess['uid'])) {
         $is_adm_sbr = true;
     }
     if ($is_adm && $site == 'admin') {
         // доступ А.
         $sbr = new sbr_adm($sess['uid'], $sess['login']);
     } else {
         if ($is_adm_sbr && $site == 'admin') {
             $sbr = new sbr_adm_finance($sess['uid'], $sess['login']);
         } else {
             if ($access == self::ADMIN_ACCESS) {
                 if ($U && $is_emp !== NULL) {
                     if ($is_emp) {
                         $E = $U;
                     } else {
                         $F = $U;
                     }
                 } else {
                     $E = $sess['E'];
                     $F = $sess['F'];
                 }
                 if ($E) {
                     $cls = 'sbr_emp';
                     if ($E instanceof users) {
                         $u = $E;
                     } else {
                         $u = new employer();
                         $u->GetUser($E);
                     }
                 } else {
                     if ($F) {
                         $cls = 'sbr_frl';
                         if ($F instanceof users) {
                             $u = $F;
                         } else {
                             $u = new freelancer();
                             $u->GetUser($F);
                         }
                     }
                 }
                 if ($u && !$err) {
                     // отдаем доступ Ф или Р.
                     $sbr = new $cls($u->uid, $u->login, $sess['uid']);
                 }
             }
         }
     }
     if (!$sbr && $sess['uid']) {
         $cls = $access == self::ADMIN_ACCESS && $is_adm ? 'sbr_adm' : ($access == self::ADMIN_ACCESS && $is_adm_sbr ? 'sbr_adm_finance' : (is_emp($sess['role']) ? 'sbr_emp' : 'sbr_frl'));
         $sbr = new $cls($sess['uid'], $sess['login']);
     }
     return $sbr;
 }
Example #10
0
 /**
  * Аналог generateInvoice
  * использующий DocGenReserves класс для генерации дока.
  * 
  * @param type $user_info
  *
  * @return bool
  */
 public function generateInvoice2($user_info, $generate_now = false)
 {
     $user_info['form_type'] = sbr::FT_JURI;
     $file = new CFile();
     $reserve_id = @$this->data['reserve_id'];
     $data = $this->getCheckByReserveId($reserve_id);
     if (isset($data['payed_date']) && !empty($data['payed_date'])) {
         return false;
     }
     if (isset($data['check_file_id']) && $data['check_file_id'] > 0) {
         $file->Delete($data['check_file_id']);
     }
     if (!$data) {
         $data = array();
     }
     $this->data = array_merge($data, $this->data, $user_info);
     $login = @$_SESSION['login'];
     if (@$_SESSION['uid'] != $this->data['user_id']) {
         $emp = new employer();
         $ret = $emp->GetName($this->data['user_id'], $error);
         if (!$ret) {
             return false;
         }
         $login = $ret['login'];
     }
     try {
         $doc = new DocGenReserves(array('id' => $this->options['src_id'], 'employer' => array('login' => $login)));
         $doc->setField('date_offer', $this->data['date_offer']);
         unset($this->data['date_offer']);
         if (!isset($this->data['date'])) {
             $this->data['date'] = date('Y-m-d H:i:s');
         }
         $doc->setField('datetext_1', $this->data['date']);
         $doc->setField('num_bs', $this->options['src_id']);
         $doc->setField('fio_emp', $this->data);
         if (empty($user_info['phone'])) {
             $user_info['phone'] = $user_info['mob_phone'];
         }
         $doc->setField('phone', $user_info['phone']);
         $doc->setField('price_price', $this->data['price']);
         $doc->setField('nonds_commision', $this->data['tax_price']);
         $doc->setField('nondstotal_price', $this->data);
         $doc->setField('pricends_commision', $this->data['tax_price']);
         $doc->setField('price_reserve_price', $this->data['reserve_price']);
         $doc->setField('pricelong_reserve_price', $this->data['reserve_price']);
         $doc->setField('price_commision', $this->data['tax_price']);
         if ($generate_now) {
             $doc->disableQueue();
         }
         $file = $doc->generateBankInvoice();
     } catch (Exception $e) {
         return false;
     }
     $this->data['check_file_id'] = $file->id;
     if (!$this->addCheck()) {
         return false;
     }
     if ($generate_now) {
         Events::trigger('generateInvoice2');
     }
     return $file;
 }
Example #11
0
<?php

if ($uid) {
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php";
    $user = new employer();
    // Изменяем авто продление PRO, если нужно
    if (strtolower($_GET['pro_auto_prolong']) == 'on') {
        $user->setPROAutoProlong('on', get_uid());
    }
    if (strtolower($_GET['pro_auto_prolong']) == 'off') {
        $user->setPROAutoProlong('off', get_uid());
    }
    $user->GetUser($_SESSION['login']);
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
    $account = new account();
    $ok = $account->GetInfo($_SESSION['uid'], true);
    $u_is_pro_auto_prolong = $user->GetField($uid, $e, 'is_pro_auto_prolong', false);
    // Включено ли у юзера автоматическое продление PRO
    ?>
<script type="text/javascript">
tr = true;
var PRICE_EMP_PRO = <?php 
    echo payed::PRICE_EMP_PRO;
    ?>
;
	function chang(t){
		var amm = <?php 
    echo round($account->sum, 2);
    ?>
;
		var s = t;
Example #12
0
 /**
  * Уведомление второй стороны о новом отзыве
  * 
  * @param type $project
  */
 public function _onFeedback($project, $to_frl = true)
 {
     $params = array('project_title' => $project['name'], 'project_url' => $GLOBALS['host'] . '/projects/' . $project['id']);
     $frl = new freelancer();
     $frl->GetUserByUID($project['exec_id']);
     $emp = new employer();
     $emp->GetUserByUID($project['user_id']);
     if ($to_frl) {
         //Письмо отправляем исполнителю
         $recipient = $this->_formatFullname($frl, true);
         $subject = "Заказчик оставил вам отзыв о сотрудничестве в проекте";
         $params['emp_login'] = $emp->login;
         $params['emp_fullname'] = $this->_formatFullname($emp);
         $params['rating'] = $project['emp_rating'];
         $params['opinions_url'] = $GLOBALS['host'] . '/users/' . $frl->login . '/opinions/';
         $params['text'] = $project['emp_feedback'];
         $template = 'fb_frl.tpl.php';
         //С отзывом
         if ($project['emp_rating'] == 1 && $frl->is_pro != 't') {
             $template = 'pos_fb_frl.tpl.php';
             //Не-ПРО с положительным отзывом
         }
     } else {
         $recipient = $this->_formatFullname($emp, true);
         $subject = "Исполнитель оставил вам отзыв о сотрудничестве в проекте";
         $params['frl_login'] = $frl->login;
         $params['frl_fullname'] = $this->_formatFullname($frl);
         $params['rating'] = $project['frl_rating'];
         $params['opinions_url'] = $GLOBALS['host'] . '/users/' . $emp->login . '/opinions/';
         $params['text'] = $project['frl_feedback'];
         $template = 'fb_emp.tpl.php';
     }
     $this->subject = $subject;
     $this->recipient = $recipient;
     $this->message = Template::render(PROJECTS_TPL_MAIL_PATH . $template, $params);
     $ret = $this->send('text/html');
     //Отправляем СМС
     if ($to_frl && isset($project['emp_feedback'])) {
         $status = null;
         if ($frl->is_pro == 't' && $project['emp_rating'] > 0 || $project['emp_rating'] < 0) {
             $status = @$project['frl_feedback_id'] > 0 ? 102 : 100;
         } elseif ($frl->is_pro == 'f' && $project['emp_rating'] > 0) {
             $status = 101;
         }
         if ($status) {
             ProjectsSms::model($frl->uid)->sendStatus($status, $project['id']);
         }
     }
     return $ret;
 }
Example #13
0
$url_parts = parse_url($_SERVER['REQUEST_URI']);
if ($_GET['pid'] && !$_POST['action']) {
    $friendly_url = getFriendlyURL('project', $_GET['pid']);
    if (strtolower($url_parts['path']) != $friendly_url) {
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: ' . $friendly_url);
        exit;
    }
}
switch ($section) {
    // смена статуса блока рекомендованных фрилансерова
    case 'setRcmdFrlStatus':
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
        $status = __paramInit('string', 'status') == 'true';
        $rcmdFrlStatus = employer::SetRcmdFrlStatus($status);
        exit;
        //$_GET['status']
    case 'changePrjFavState':
        $pid = isset($_GET['pid']) ? intval($_GET['pid']) : 0;
        $uid = isset($_SESSION['uid']) ? intval($_SESSION['uid']) : 0;
        if ($pid === 0 || $uid === 0) {
            die('0');
        }
        $obj_project = new projects();
        echo $obj_project->changePrjFavState($uid, $pid);
        exit;
        //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    default:
        if (isset($_POST['prjid'])) {
Example #14
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php";
$user = new employer();
$user->GetUser($_SESSION['login']);
?>
<style>
.tarif {
	color: #333333;
	font-size: 13px;
}
</style>
<h1>Услуги</h1>
<?php 
if ($profs) {
    ?>
<table width="100%" border="0" cellspacing="0" cellpadding="19">
<tr valign="top">
	<td height="400" valign="top" bgcolor="#FFFFFF" class="box2" style="color: #333333;">
		<div style="color: #000000; font-size: 35px; margin-bottom: 25px;">Предоставленные услуги</div>
		<table width="290" border="0" cellspacing="0" cellpadding="0" style="background-image: url(/images/bg_pro.gif); background-repeat: no-repeat;">
			<tr valign="top">
				<td width="50" rowspan="2" style="height: 112; padding-top:35px; padding-left:8px;padding-right:3px;"><?php 
    echo view_avatar($user->login, $user->photo);
    ?>
</td>
				<td class="frlname" style="height: 112; padding-top:35px;"><?php 
    echo view_pro_emp();
    ?>
 <?php 
    echo $user->uname;
/**
 * @param $frm - данные запроса
 * @param $type - тип страницы, с которой была запрошена форма быстрого редактирования проекта
 *                 1 - лента на главной, 
 *                 2 - редактируется конкурс,
 *                 3 - страница проекта в профиле работодателя,
 *                 4 - проект в списке в профиле работодателя
 * */
function quickprjedit_save_prj($frm, $type)
{
    $objResponse = new xajaxResponse();
    if (hasPermissions('projects')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
        $oprj = new new_projects();
        $project = $oprj->getPrj($frm['id']);
        if ($project['id']) {
            $objResponse->script('popupQEditPrjHideErrors();');
            $key = $frm['tmpid'];
            $tmpPrj = new tmp_project($key);
            $tmpPrj->init(2);
            $errors = array();
            $frm['name'] = trim($frm['name']);
            $frm['descr'] = trim($frm['descr']);
            if ($frm['link'] == 'Адрес сайта') {
                $frm['link'] = '';
            }
            $frm['link'] == trim($frm['link']);
            if (!empty($frm['link'])) {
                if (strpos($frm['link'], 'http://') === 0) {
                    $protocol = 'http://';
                }
                if (strpos($frm['link'], 'https://') === 0) {
                    $protocol = 'https://';
                }
                if ($protocol == '') {
                    $protocol = 'http://';
                }
                $frm['link'] = $protocol . ltrim($frm['link'], $protocol);
                if (!is_url($frm['link'])) {
                    $errors[] = 'logourl';
                }
            }
            if (empty($frm['name'])) {
                $errors[] = 'name';
            }
            if (empty($frm['descr'])) {
                $errors[] = 'descr';
            }
            if ($frm['pf_city']) {
                $frm['city'] = $frm['pf_city'];
            }
            if ($project['kind'] == 7) {
                if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) {
                    $errors[] = 'end_date';
                }
                if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) {
                    $errors[] = 'win_date';
                }
                if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) {
                    $errors[] = 'end_date_past';
                }
                if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) {
                    $errors[] = 'win_date_past';
                }
            }
            if (!count($errors)) {
                $c = $frm['categories'];
                $sc = $frm['subcategories'];
                foreach ($frm['categories'] as $sKey => $value) {
                    if ($value == 0) {
                        continue;
                    }
                    $check[] = $value . '_' . $sc[$sKey];
                }
                $uniq = array_unique($check);
                foreach ($uniq as $val) {
                    list($cat, $subcat) = explode('_', $val);
                    $check_array[$cat][] = $subcat;
                }
                $categories = array();
                foreach ($check_array as $k => $val) {
                    if (count($val) > 1 && array_search(0, $val) !== false) {
                        $categories[] = array('category_id' => $k, 'subcategory_id' => 0);
                        unset($check_array[$k]);
                    } else {
                        foreach ($val as $m => $v) {
                            $categories[] = array('category_id' => $k, 'subcategory_id' => $v);
                        }
                    }
                }
                $tmpPrj->setProjectField('name', change_q_x($frm['name']), true);
                $tmpPrj->setProjectField('descr', change_q_x($frm['descr'], false, true, '', false, false));
                $tmpPrj->setProjectField('pro_only', $frm['pro_only'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('verify_only', $frm['verify_only'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('strong_top', (int) $frm['strong_top']);
                $tmpPrj->setProjectField('prefer_sbr', $frm['prefer_sbr'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('urgent', $frm['is_urgent'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('hide', $frm['is_hide'] == 1 ? 't' : 'f');
                switch ($frm['kind']) {
                    case 1:
                        $tmpPrj->setProjectField('country', 0);
                        $tmpPrj->setProjectField('city', 0);
                        $tmpPrj->setProjectField('kind', $frm['kind']);
                        break;
                    case 4:
                        $tmpPrj->setProjectField('country', $frm['country']);
                        $tmpPrj->setProjectField('city', $frm['city']);
                        $tmpPrj->setProjectField('kind', $frm['kind']);
                        break;
                }
                if ($project['kind'] == 7) {
                    $tmpPrj->setProjectField('end_date', $frm['end_date']);
                    $tmpPrj->setProjectField('win_date', $frm['win_date']);
                    $tmpPrj->clearWinners();
                }
                $tmpPrj->setCategories($categories);
                $tmpPrj->setProjectField('link', $frm['link']);
                $tmpPrj->setProjectField('is_color', $frm['is_color'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('is_bold', $frm['is_bold'] == 1 ? 't' : 'f');
                $tmpPrj->setAddedTopDays($frm['top_ok'] == 1 ? $frm['top_days'] : 0);
                if (!$project['folder_id']) {
                    $tmpPrj->setProjectField('folder_id', 0);
                }
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
                $attachedfiles = new attachedfiles($frm['attachedfiles_session']);
                $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
                $tmpPrj->addAttachedFiles($attachedfiles_files);
                $attachedfiles->clear();
                $tmpPrj->saveProject(get_uid(false), $ttt);
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
                $stop_words = new stop_words(hasPermissions('projects'));
                $objResponse->script('popupQEditPrjHide();');
                switch ($type) {
                    case 1:
                    case 4:
                        // Лента проектов
                        global $session;
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
                        $prj_id = $project['id'];
                        $obj_project = new new_projects();
                        $tproject = $obj_project->getProjects($num, -1, 1, false, null, false, true, $prj_id);
                        $this_kind = $tproject[0]['kind'];
                        $this_uid = get_uid(false);
                        $this_pro_last = $_SESSION['pro_last'];
                        $this_is_pro = payed::CheckPro($_SESSION['login']);
                        $this_edit_mode = hasPermissions('projects');
                        if ($this_uid) {
                            $this_user_role = $_SESSION['role'];
                        }
                        $this_project = $tproject[0];
                        $row = $this_project;
                        if ($this_edit_mode || $this_project['kind'] == 2 || $this_project['user_id'] == $this_uid || $this_project['offer_id'] || $this_pro_last) {
                            $this_show_data = 1;
                            $row['show_data'] = 1;
                        } else {
                            $this_show_data = 0;
                            $row['show_data'] = 0;
                        }
                        $descr = $row['descr'];
                        $descr = preg_replace('/^ /', "", $descr);
                        $descr = preg_replace("/(\n) /", "\$1", $descr);
                        $descr = reformat(strip_tags(LenghtFormatEx($descr, 180), '<br />'), 50, 1, 0, 1);
                        $descr = preg_replace("//", '&nbsp;', $descr);
                        $row['descr'] = $descr;
                        $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7;
                        $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7;
                        $row['t_pro_only'] = $this_project['pro_only'] == 't';
                        $row['t_verify_only'] = $this_project['verify_only'] == 't';
                        $row['t_hide'] = $this_project['hide'] == 't';
                        $row['t_urgent'] = $this_project['urgent'] == 't';
                        $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == 't';
                        $row['priceby'] = $this_project['priceby'];
                        $row['t_is_adm'] = hasPermissions('projects');
                        $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time();
                        $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs'];
                        $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id'];
                        $attaches = projects::GetAllAttach($this_project['id']);
                        $attaches = !$attaches ? array() : $attaches;
                        foreach ($attaches as $k => $a) {
                            $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']);
                            $attaches[$k] = $a;
                        }
                        $row['attaches'] = $this_project['attaches'] = $attaches;
                        $is_ajax = true;
                        $can_change_prj = hasPermissions('projects');
                        $row['friendly_url'] = getFriendlyURL('project', $row['id']);
                        ob_start();
                        if ($type == 1) {
                            $project = projects::initData($row);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php';
                        } else {
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
                            $user = new employer();
                            $user->GetUserByUID($this_project['user_id']);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.employer-project-item.php';
                        }
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project-item{$prj_id}", 'innerHTML', $html_data);
                        if ($row['is_color'] == 't') {
                            $objResponse->script("\$('project-item{$prj_id}').addClass('b-post_bg_fffded')");
                        } else {
                            $objResponse->script("\$('project-item{$prj_id}').removeClass('b-post_bg_fffded')");
                        }
                        //$objResponse->script('alert("Лента");');
                        //$objResponse->script('window.location.reload();');
                        break;
                    case 2:
                        // Конкурс
                        //$objResponse->script('alert("Конкурс");');
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        global $session;
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (hasPermissions('projects')) {
                            $project_history = $obj_project->GetPrjHistory($prj_id);
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        $contest = new contest($project['id'], $uid, is_emp(), $project['user_id'] == $uid, hasPermissions('projects'), is_pro());
                        $contest->GetOffers((string) $_GET['filter']);
                        $project['contest_end'] = mktime() > strtotime($project['end_date']);
                        $project['contest_win'] = mktime() > strtotime($project['win_date']);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest_item.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("contest_info_{$prj_id}", 'innerHTML', $html_data);
                        break;
                    case 3:
                        // Проект
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.prj-main-info.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project_info_{$project['id']}", 'innerHTML', $html_data);
                        break;
                    default:
                        $objResponse->script('window.location.reload();');
                        break;
                }
            } else {
                $tab1 = 0;
                $tab2 = 0;
                foreach ($errors as $error) {
                    switch ($error) {
                        case 'end_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'end_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Дата окончания конкурса не может находиться  в прошлом");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Дата определения победителя должна быть больше даты окончания конкурса");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'logourl':
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay").setStyle("display","block");');
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay_txt").set("html", "Ссылка для логотипа указана не верно");');
                            break;
                        default:
                            $objResponse->script('popupQEditPrjShowError("' . $error . '");');
                            break;
                    }
                    if (in_array($error, array('name', 'descr', 'location', 'end_date', 'win_date', 'end_date_past', 'win_date_past'))) {
                        ++$tab1;
                    } elseif (in_array($error, array('logourl'))) {
                        ++$tab2;
                    }
                }
                if ($tab1) {
                    $objResponse->script('popupQEditPrjMenu(1)');
                } elseif ($tab2) {
                    $objResponse->script('popupQEditPrjMenu(2)');
                }
            }
        }
        $objResponse->script('popupQEditIsProcess = false;');
    }
    return $objResponse;
}
Example #16
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();
 }
Example #17
0
 /**
  * Как работать с выбранным исполнителем: вы можете обсудить проект в сообщениях и договорившись о сотр-ве, начать СБР.
  * Это рассылка для новых работодателей. Отправляется в тот же день через несколько часов.
  * вызывается из hourly.php раз в сутки.
  */
 public function employerHelpInfo()
 {
     session_start();
     global $DB;
     $rows = employer::GetNewEmployer();
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php';
     $host = $GLOBALS['host'];
     $this->subject = 'FL.ru: как работать с выбранным исполнителем?';
     $message = "<p>Мы рады приветствовать вас на крупнейшей бирже удаленной работы FL.ru. Начало работы на сайте &ndash; это подбор нужного вам специалиста. Найти исполнителя можно несколькими способами:</p>\n    \n<ul>\n<li>публикация проекта или конкурса;</li>\n<li>поиск в каталоге фрилансеров;</li>\n<li>заказ подбора исполнителя у наших менеджеров.</li>\n</ul>\n\n<p>После того как вы определитесь с фрилансером, который будет выполнять ваш заказ, обсудите с ним детали сотрудничества.</p>\n\n<p>Мы рекомендуем всегда заключать &laquo;<a href='{$host}/" . sbr::NEW_TEMPLATE_SBR . "/?utm_source=newsletter4&utm_medium=rassylka&utm_campaign=wellcome_employer_2'>Безопасную Сделку</a>&raquo; &ndash; так вы сможете обмениваться любой информацией и будете уверены в том, что ваш заказ будет выполнен точно в срок и в соответствии с техническим заданием.</p>\n\n<p>При сотрудничестве через &laquo;Безопасную Сделку&raquo; гонорар исполнителю выплачивается только после того, как вы примете результат работы. <a href='https://feedback.fl.ru/topic/397436-chto-takoe-bezopasnaya-sdelka/?utm_source=newsletter4&utm_medium=rassylka&utm_campaign=wellcome_employer_2'>Оплата</a> производится любым удобным для вас способом: банковской картой, с помощью электронных платежных систем или же по безналичному расчету.</p>\n\n<p>Перейти на сайт и приступить к поиску исполнителя!</p>";
     $this->message = $this->GetHtml(false, $message, array('header' => 'default', 'footer' => 'feedback_default'), array('target_footer' => true));
     if (count($rows) < 20) {
         foreach ($rows as $user) {
             $this->message = $this->GetHtml(false, $message, array('header' => 'default', 'footer' => 'feedback_default'), array('login' => $user['login']));
             $this->recipient = $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] <' . $user['email'] . '>';
             $this->send('text/html');
         }
         return;
     }
     $this->recipient = '';
     $massId = $this->send('text/html');
     foreach ($rows as $user) {
         if (!$user['unsubscribe_key']) {
             $user['unsubscribe_key'] = users::GetUnsubscribeKey($user['login']);
         }
         $this->recipient[] = array('email' => $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] <' . $user['email'] . '>', 'extra' => array('USER_NAME' => $user['uname'], 'USER_SURNAME' => $user['usurname'], 'USER_LOGIN' => $user['login'], 'MESSAGE' => $message, 'UNSUBSCRIBE_KEY' => $user['unsubscribe_key']));
     }
     $this->bind($massId);
 }
Example #18
0
 /**
  * Основной метод регистрации пользователей
  * @param bool $is_preset Флаг, показывающий наличие подготовленных данных
  * @return type
  */
 public function actionRegistration($is_preset = false)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr_meta.php";
     if (!$is_preset) {
         $this->setFieldInfo('role', __paramInit('int', null, 'role'));
         $this->setFieldInfo('login', trim(__paramInit('string', null, 'login')));
         $this->setFieldInfo('email', trim(__paramInit('string', null, 'email')));
         $this->setFieldInfo('subscr_news', trim(__paramInit('bool', null, 'subscribe')));
         //$this->setFieldInfo('smscode', trim(__paramInit('string', null, 'smscode')));
         //$this->setFieldInfo('phone', $_SESSION["reg_phone"]);
         // пароль берем напрямую из $_POST, а то __paramInit режет спецсимволы (пароль хешируется - SQL инъекция невозможна)
         $this->setFieldInfo('password', stripslashes($_POST['password']));
         $this->checkedFields();
         session_start();
         $this->setFieldInfo('captchanum', __paramInit('string', null, 'captchanum'));
         $num = __paramInit('string', null, 'rndnum');
         if (!$_SESSION["regform_captcha_entered"]) {
             $_SESSION['reg_captcha_num'] = $this->captchanum;
             $captcha = new captcha($this->captchanum);
             if (!$captcha->checkNumber($num)) {
                 $this->error['captcha'] = 'Неверный код. Попробуйте еще раз';
                 $this->is_validate = false;
                 unset($_SESSION['reg_captcha_num']);
             }
         }
     }
     //if ( (is_release() || $_SESSION["reg_phone"] != 71111112222) && sbr_meta::findSafetyPhone($_SESSION["reg_phone"], __paramInit('string', null, 'role') == 2 ? 'emp' : 'frl') ) {
     //    $this->error['phone'] = 'Пользователь с таким номером уже зарегистрирован';
     //    $this->is_validate = false;
     //    unset($_SESSION['reg_captcha_num']);
     //}
     if ($this->is_validate) {
         //unset($_SESSION['smsIsRequested']);
         if ($this->role == self::ROLE_FREELANCER) {
             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php";
             $newuser = new freelancer();
             $newuser->role = 0;
         } else {
             if ($this->role == self::ROLE_EMPLOYER) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php";
                 $newuser = new employer();
                 $newuser->role = 1;
             }
         }
         $newuser->login = substr($this->login, 0, 15);
         $newuser->email = substr($this->email, 0, 64);
         $newuser->passwd = substr($this->password, 0, 24);
         $newuser->subscr = '1111111' . (int) $this->subscr_news . '11111111';
         $newuser->uid = $newuser->Create($rerror, $error);
         if ($newuser->uid && !$error) {
             $ok = $this->completedRegistration($newuser);
             if ($ok) {
                 //require_once $_SERVER['DOCUMENT_ROOT']."/classes/sms_gate.php";
                 //$phone = '+' . preg_replace("#^\+#", "", $_SESSION["reg_phone"]);
                 unset($_SESSION["regform_captcha_entered"]);
                 unset($_SESSION["login_generated"]);
                 $tu_ref_uri = @$_SESSION['tu_ref_uri'];
                 //unset($_SESSION["reg_phone"]);
                 //unset($_SESSION['send_sms_time']);
                 //sms_gate::saveSmsInfo($phone, $_SESSION["reg_sms_isnn"], $_SESSION["smsCode"], $_SESION["reg_sms_date_send"], $newuser->uid);
                 $_SESSION['email'] = $newuser->email;
                 $_SESSION['rrole'] = $this->role;
                 // Если пришли сюда регистрироватся то после нажатия кнопки регистрации удаляем куки регистрации иначе после активации нас перекинет на мастер
                 $wizard = new wizard();
                 $wizard->clearCookiesById($newuser->role == 1 ? 1 : 2);
                 // В зависимоти от того кого регистрируем
                 // На всякий случай при новой регистрации удаляем переменную проверки
                 self::resetCheckAccess();
                 $_user_action = isset($_REQUEST['user_action']) && $_REQUEST['user_action'] ? substr(htmlspecialchars($_REQUEST['user_action']), 0, 25) : '';
                 $_user_action = trim($_user_action);
                 login($newuser->login, users::hashPasswd(trim(stripslashes($newuser->passwd))), 1, false);
                 if (is_emp($newuser->role)) {
                     $_SESSION['reg_role'] = 'Employer';
                     $ref_uri = isset($_SESSION['ref_uri'], $_SESSION['was_customer_wizard']) ? urldecode($_SESSION['ref_uri']) : null;
                     unset($_SESSION['was_customer_wizard']);
                     $redirect_to = $ref_uri ? $ref_uri : '/public/?step=1&kind=1';
                     //По умолчанию, при регистрации заказчика, перенаправляем его на публикацию проекта
                     if (strpos($_user_action, 'project_to_')) {
                         $login = str_replace('add_project_to_', '', $_user_action);
                         $redirect_to = '/public/?step=1&kind=9&exec=' . $login;
                     }
                     $redirect = __paramInit('link', NULL, 'redirect');
                     if ($redirect && !$ref_uri) {
                         $redirect_to = urldecode($redirect);
                     }
                 } else {
                     $_SESSION['reg_role'] = 'Freelancer';
                     $redirect_to = $redirect_to = "/registration/profession.php" . (!empty($user_action) ? "?user_action={$user_action}" : '');
                     //Очищаем чтобы далее небыло редиректа
                     //@todo: согласно https://beta.free-lance.ru/mantis/view.php?id=28862
                     $_user_action = '';
                 }
                 switch ($_user_action) {
                     case 'tu':
                         if ($tu_ref_uri) {
                             $redirect_to = HTTP_PFX . $_SERVER["HTTP_HOST"] . urldecode($tu_ref_uri);
                         }
                         break;
                     case 'new_tu':
                         if (!is_emp($newuser->role)) {
                             $redirect_to = HTTP_PFX . $_SERVER["HTTP_HOST"] . '/users/' . $newuser->login . '/tu/new/';
                         } else {
                             $redirect_to = HTTP_PFX . $_SERVER["HTTP_HOST"] . '/tu/';
                         }
                         break;
                     case 'promo_verification':
                         $redirect_to = '/promo/verification/';
                         break;
                     case 'buypro':
                         if (is_emp($newuser->role)) {
                             $redirect_to = '/payed-emp/';
                         } else {
                             $redirect_to = '/payed/';
                         }
                         break;
                     case 'add_order':
                         $url = __paramInit('link', NULL, 'redirect');
                         $redirect_to = HTTP_PFX . $_SERVER["HTTP_HOST"] . urldecode($url);
                         break;
                 }
                 if (!is_emp($newuser->role)) {
                     $_SESSION['activate_password'] = $newuser->passwd;
                     $_SESSION['subscr_news'] = (int) $this->subscr_news;
                     //Создаем новый экземпляр, т.к. нужно обновить только подписки
                     //Отписываем от всего, кроме личных сообщений
                     $freelancer = new freelancer();
                     $freelancer->UpdateSubscr($newuser->uid, 1, array(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, 0);
                 }
                 //Обработать действия по событию успешной регистрации
                 $this->afterSuccessRegistation($newuser);
                 if ($is_preset) {
                     return array('success' => true, 'user_id' => $newuser->uid, 'redirect' => $redirect_to);
                 } else {
                     header("Location: " . $redirect_to);
                     exit;
                 }
             }
         }
     } else {
         return $this->error;
     }
 }
Example #19
0
 /**
  * Не использовать!
  * Отправляем письмо уведомление исполнителю об изменении заказе на базе ТУ.
  * 
  * @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;
 }
Example #20
0
//а нафига вообще тут это нужно?
if (!$page) {
    $page = 1;
}
if ($login) {
    // Ћичный блог пользовател¤
    $login = pg_escape_string($login);
    $user = new users();
    $user->GetUser($login);
    if ($user->uid && !$user->is_banned) {
        if (!is_emp($user->role)) {
            $user = new freelancer();
            $user->GetUser($login);
            $is_visible = substr($user->tabs, 3, 1);
        } else {
            $user = new employer();
            $user->GetUser($login);
            $is_visible = substr($user->tabs, 2, 1);
        }
        $user->GetUser($login);
        if ($is_visible) {
            $themes = $blog->GetMsgs($user->uid, $page, $num_msgs, $error, 1);
        }
    }
    $rss_title = "Ћичные блоги на FL.ru ({$user->login})";
    $rss_link = $host . "/rss/blogs.php?user={$user->login}";
    $rss_description = "Ћичные блоги на сайте www.fl.ru ({$user->login})";
    $gr_name = "Ћичные блоги";
} else {
    // ќбщие блоги
    $themes = $blog->GetGroup($gr, $gr_name, $num_msgs, $page, $err, 0, 1, $from, $read_only, "new", false);
Example #21
0
session_start();
$uid = get_uid();
$no_banner = true;
/*
if ( !$uid ) { 
    include( '../emp_only.php' );
    exit(); 
}
*/
if ($uid && substr($_SESSION['role'], 0, 1) != 1) {
    header('Location: /payed/');
    exit;
}
if ($uid) {
    $mod = hasPermissions('users') ? 0 : 1;
    $user = new employer();
    // Изменяем авто продление PRO, если нужно
    if (strtolower($_POST['pro_auto_prolong']) == 'on') {
        $user->setPROAutoProlong('on', $uid);
        $result['success'] = true;
        if (!WalletTypes::isWalletActive($uid)) {
            $result['wallet_popup'] = true;
        }
        echo json_encode($result);
        exit;
    }
    if (strtolower($_POST['pro_auto_prolong']) == 'off') {
        $user->setPROAutoProlong('off', $uid);
        echo json_encode(array('success' => true));
        exit;
    }