/** * Формирует отчет по арбитражу за определенный период. * * @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(); }
<?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);
} 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) { $tmpPrj->setProjectField('cost', 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(); }
/** * Не использовать! * Отправляем письмо уведомление исполнителю об изменении заказе на базе ТУ. * * @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; }
/** * Отправляет уведомления о смене сроков в конкурсах * * @param string|array $ids идентификаторы конкурсов * @param resource $connect соединение к БД (необходимо в PgQ) или NULL -- создать новое. * @return integer количество отправленных уведомлений. */ function ContestChangeDates($ids, $connect = NULL) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $contest = new contest(0, 0); if (!($prjs = $contest->GetContests4Sending($ids))) { return NULL; } $emp = new employer(); $emp->GetUserByUID($prjs[0]['user_id']); foreach ($prjs as $prj) { if ($prj['email'] && substr($prj['subscr'], 8, 1) == '1' && $prj['is_banned'] == '0') { $prj['name'] = htmlspecialchars($prj['name'], ENT_QUOTES, 'CP1251', false); $userlink = HTTP_PREFIX . "{$GLOBALS['host']}/users/{$emp->uname}"; $this->message = $this->GetHtml($prj['uname'], "\n\t\t\t\t\tЗаказчик <a href=\"{$userlink}\">{$emp->uname} {$emp->usurname}</a> [<a href=\"{$userlink}\">{$emp->login}</a>] изменил(a) сроки конкурса\n\t\t\t\t\t«<a href=\"{$GLOBALS['host']}" . getFriendlyURL("project", $prj['id']) . $this->_addUrlParams('f') . "\">" . $prj['name'] . "</a>».\n Вы можете перейти к своей <a href=\"{$GLOBALS['host']}" . getFriendlyURL("project", $prj['id']) . "?offer={$prj['offer_id']}{$this->_addUrlParams('f', '&')}#offer-{$prj['offer_id']}\">работе</a>.\n\t\t\t\t\t<br /><br/>\n\t\t\t\t\tДата завершения конкурса: " . dateFormat("d.m.Y", $prj['end_date']) . "<br />\n\t\t\t\t\tДата объявления победителей: " . dateFormat("d.m.Y", $prj['win_date']) . "<br />\n ", array('header' => 'simple', 'footer' => 'frl_subscr_projects'), array('login' => $prj['login'])); $this->recipient = "{$prj['uname']} {$prj['usurname']} [{$prj['login']}] <{$prj['email']}>"; $this->subject = 'Сроки конкурса «' . htmlspecialchars_decode($prj['name'], ENT_QUOTES) . '» были изменены'; $this->send('text/html'); ++$count; } } return $this->sended; }
/** * Напоминание об окончании конкурса. * * @return string возможная ошибка */ public function ContestEndReminder() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $users = contest::WInterval('1 day', 'end_date'); if (!$this->Connect()) { return 'Невозможно соеденится с SMTP сервером'; } foreach ($users as $prj_id => $u) { $project_name = htmlspecialchars($u['project_name'], ENT_QUOTES, 'CP1251', false); // Заказчик $user = new employer(); $user->GetUserByUID($u['employer']); if ($user->email && substr($user->subscr, 8, 1) == '1') { $this->message = $this->GetHtml($user->uname, "\nСообщаем вам, что остается один день до окончания конкурса «<a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . $this->_addUrlParams('e') . '">' . $project_name . '</a>». ', array('header' => 'simple', 'footer' => 'sub_emp_projects'), array('login' => $user->login)); $this->recipient = "{$user->uname} {$user->usurname} [{$user->login}] <" . $user->email . '>'; $this->subject = 'Остался день до окончания конкурса «' . htmlspecialchars_decode($u['project_name'], ENT_QUOTES) . '»'; $this->SmtpMail('text/html'); } // фрилансеры foreach ($u['freelancer'] as $user) { if (!$user['email'] || substr($user['subscr'], 8, 1) != '1' || $user['is_banned'] == '1') { continue; } $this->message = $this->GetHtml($user['uname'], "\nСообщаем вам, что остается один день до окончания конкурса «<a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . $this->_addUrlParams('f') . '">' . $project_name . "</a>».\n<br />\nВы можете перейти к своей <a href=\"{$GLOBALS['host']}" . getFriendlyURL('project', $prj_id) . "?offer={$user['offer_id']}{$this->_addUrlParams('f', '&')}#offer-{$user['offer_id']}\">работе</a>.\n<br />\n", array('header' => 'simple', 'footer' => 'default'), array('login' => $user['login'])); $this->recipient = "{$user['uname']} {$user['usurname']} [{$user['login']}] <{$user['email']}>"; $this->subject = 'Остался день до окончания конкурса «' . htmlspecialchars_decode($u['project_name'], ENT_QUOTES) . '»'; $this->SmtpMail('text/html'); } } return 0; }
/** * @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("//", ' ', $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; }
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; }
/** * Уведомление второй стороны о новом отзыве * * @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; }
/** * Отправляем письма уведомления об отмене арбитража заказчику и исполнителю. * * @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; }