示例#1
0
 /**
  * показывает сплэшскрин, предварительно сделав проверку: нужно ли его показывать
  * @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;
         }
     }
 }
示例#2
0
 /**
  * Определяет, нужно ли добавлять специализацию в профиль
  * @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;
 }
示例#3
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();
 }
示例#4
0
 /**
  * Новая СБР
  * Проверяет пользовательский запрос на создание/редактирование СБР. Инициализирует данные в соответствии с переданными значениями.
  * 
  * @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'] = 'Превышена максимальная сумма сделки &mdash; ' . sbr::MAX_COST_USD . ' USD (или ' . sbr_meta::view_cost($this->maxNoRezCost(), exrates::BANK) . ')';
             }
         }
     }
     //        var_dump($this->error);
     //        die();
     return !$this->error;
 }
示例#5
0
$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;
}
//------------------------------------------------------------------------------
//Пользователь скрыл вкладку ТУ
//Доступна только ему и админам
示例#6
0
/**
 * Удаляет категорию из подписки на проекты
 * 
 * @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;
}
示例#7
0
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));
 }
示例#9
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;
 }
示例#10
0
        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);
示例#11
0
    /**
     * Отсылает письмо о резерве денег по СбР.
     *
     * @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;
    }
示例#12
0
 /**
  * Уведомление исполнителю об успешной публикации ранее скрытых отзывов
  * 
  * @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');
 }
示例#13
0
 /**
  * Извлечение автоответов которые соответсвуют критериям проекта.
  *
  * @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;
 }
示例#14
0
                 }
             }
         }
         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')) {
示例#15
0
<?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;
示例#16
0
    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";
示例#17
0
 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;
 }
示例#19
0
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";
示例#20
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();
 }
 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";
 }
示例#22
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;
 }