コード例 #1
0
ファイル: sbr_adm.php プロジェクト: kapai69/fl-ru-damp
 /**
  * Формирует отчет по арбитражу за определенный период.
  *
  * @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();
 }
コード例 #2
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
$uid = get_uid(false);
$employer = new employer();
$employer->GetUserByUID($uid);
$account = new account();
$account->GetInfo($uid);
$_SESSION['ac_sum'] = $account->sum;
$_SESSION['ac_sum_rub'] = $account->sum_rub;
$_SESSION['bn_sum'] = $account->bonus_sum;
//Формируем проект
$tmpPrj = new tmp_project('key');
$tmpPrj->setEdit(true);
$tmpPrj->setProjectField('kind', 1);
$tmpPrj->setProjectField('descr', 'Описание проекта для оплаты с разными op_code');
$tmpPrj->setProjectField('name', 'Проект для оплаты с разными op_code');
$tmpPrj->setProjectField('agreement', 1);
$tmpPrj->setProjectField('priceby', 1);
$tmpPrj->setProjectField('budget_type', 1);
$cats[] = array('category_id' => 12, 'subcategory_id' => 120);
コード例 #3
0
ファイル: index.php プロジェクト: Nikitian/fl-ru-damp
    }
    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);
コード例 #4
0
ファイル: sbr_stages.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Один из шаблон текста решения арбитража (всплывающее окно).
  *
  * @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();
 }
コード例 #5
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;
 }
コード例 #6
0
ファイル: pmail.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Отправляет уведомления о смене сроков в конкурсах
  * 
  * @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;
 }
コード例 #7
0
ファイル: smail.php プロジェクト: kapai69/fl-ru-damp
    /**
     * Напоминание об окончании конкурса.
     *
     * @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;
    }
コード例 #8
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("//", '&nbsp;', $descr);
                        $row['descr'] = $descr;
                        $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7;
                        $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7;
                        $row['t_pro_only'] = $this_project['pro_only'] == 't';
                        $row['t_verify_only'] = $this_project['verify_only'] == 't';
                        $row['t_hide'] = $this_project['hide'] == 't';
                        $row['t_urgent'] = $this_project['urgent'] == 't';
                        $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == 't';
                        $row['priceby'] = $this_project['priceby'];
                        $row['t_is_adm'] = hasPermissions('projects');
                        $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time();
                        $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs'];
                        $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id'];
                        $attaches = projects::GetAllAttach($this_project['id']);
                        $attaches = !$attaches ? array() : $attaches;
                        foreach ($attaches as $k => $a) {
                            $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']);
                            $attaches[$k] = $a;
                        }
                        $row['attaches'] = $this_project['attaches'] = $attaches;
                        $is_ajax = true;
                        $can_change_prj = hasPermissions('projects');
                        $row['friendly_url'] = getFriendlyURL('project', $row['id']);
                        ob_start();
                        if ($type == 1) {
                            $project = projects::initData($row);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php';
                        } else {
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
                            $user = new employer();
                            $user->GetUserByUID($this_project['user_id']);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.employer-project-item.php';
                        }
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project-item{$prj_id}", 'innerHTML', $html_data);
                        if ($row['is_color'] == 't') {
                            $objResponse->script("\$('project-item{$prj_id}').addClass('b-post_bg_fffded')");
                        } else {
                            $objResponse->script("\$('project-item{$prj_id}').removeClass('b-post_bg_fffded')");
                        }
                        //$objResponse->script('alert("Лента");');
                        //$objResponse->script('window.location.reload();');
                        break;
                    case 2:
                        // Конкурс
                        //$objResponse->script('alert("Конкурс");');
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        global $session;
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (hasPermissions('projects')) {
                            $project_history = $obj_project->GetPrjHistory($prj_id);
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        $contest = new contest($project['id'], $uid, is_emp(), $project['user_id'] == $uid, hasPermissions('projects'), is_pro());
                        $contest->GetOffers((string) $_GET['filter']);
                        $project['contest_end'] = mktime() > strtotime($project['end_date']);
                        $project['contest_win'] = mktime() > strtotime($project['win_date']);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest_item.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("contest_info_{$prj_id}", 'innerHTML', $html_data);
                        break;
                    case 3:
                        // Проект
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.prj-main-info.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project_info_{$project['id']}", 'innerHTML', $html_data);
                        break;
                    default:
                        $objResponse->script('window.location.reload();');
                        break;
                }
            } else {
                $tab1 = 0;
                $tab2 = 0;
                foreach ($errors as $error) {
                    switch ($error) {
                        case 'end_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'end_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Дата окончания конкурса не может находиться  в прошлом");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Дата определения победителя должна быть больше даты окончания конкурса");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'logourl':
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay").setStyle("display","block");');
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay_txt").set("html", "Ссылка для логотипа указана не верно");');
                            break;
                        default:
                            $objResponse->script('popupQEditPrjShowError("' . $error . '");');
                            break;
                    }
                    if (in_array($error, array('name', 'descr', 'location', 'end_date', 'win_date', 'end_date_past', 'win_date_past'))) {
                        ++$tab1;
                    } elseif (in_array($error, array('logourl'))) {
                        ++$tab2;
                    }
                }
                if ($tab1) {
                    $objResponse->script('popupQEditPrjMenu(1)');
                } elseif ($tab2) {
                    $objResponse->script('popupQEditPrjMenu(2)');
                }
            }
        }
        $objResponse->script('popupQEditIsProcess = false;');
    }
    return $objResponse;
}
コード例 #9
0
 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;
 }
コード例 #10
0
 /**
  * Уведомление второй стороны о новом отзыве
  * 
  * @param type $project
  */
 public function _onFeedback($project, $to_frl = true)
 {
     $params = array('project_title' => $project['name'], 'project_url' => $GLOBALS['host'] . '/projects/' . $project['id']);
     $frl = new freelancer();
     $frl->GetUserByUID($project['exec_id']);
     $emp = new employer();
     $emp->GetUserByUID($project['user_id']);
     if ($to_frl) {
         //Письмо отправляем исполнителю
         $recipient = $this->_formatFullname($frl, true);
         $subject = "Заказчик оставил вам отзыв о сотрудничестве в проекте";
         $params['emp_login'] = $emp->login;
         $params['emp_fullname'] = $this->_formatFullname($emp);
         $params['rating'] = $project['emp_rating'];
         $params['opinions_url'] = $GLOBALS['host'] . '/users/' . $frl->login . '/opinions/';
         $params['text'] = $project['emp_feedback'];
         $template = 'fb_frl.tpl.php';
         //С отзывом
         if ($project['emp_rating'] == 1 && $frl->is_pro != 't') {
             $template = 'pos_fb_frl.tpl.php';
             //Не-ПРО с положительным отзывом
         }
     } else {
         $recipient = $this->_formatFullname($emp, true);
         $subject = "Исполнитель оставил вам отзыв о сотрудничестве в проекте";
         $params['frl_login'] = $frl->login;
         $params['frl_fullname'] = $this->_formatFullname($frl);
         $params['rating'] = $project['frl_rating'];
         $params['opinions_url'] = $GLOBALS['host'] . '/users/' . $emp->login . '/opinions/';
         $params['text'] = $project['frl_feedback'];
         $template = 'fb_emp.tpl.php';
     }
     $this->subject = $subject;
     $this->recipient = $recipient;
     $this->message = Template::render(PROJECTS_TPL_MAIL_PATH . $template, $params);
     $ret = $this->send('text/html');
     //Отправляем СМС
     if ($to_frl && isset($project['emp_feedback'])) {
         $status = null;
         if ($frl->is_pro == 't' && $project['emp_rating'] > 0 || $project['emp_rating'] < 0) {
             $status = @$project['frl_feedback_id'] > 0 ? 102 : 100;
         } elseif ($frl->is_pro == 'f' && $project['emp_rating'] > 0) {
             $status = 101;
         }
         if ($status) {
             ProjectsSms::model($frl->uid)->sendStatus($status, $project['id']);
         }
     }
     return $ret;
 }
コード例 #11
0
ファイル: ReservesSmail.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Отправляем письма уведомления об отмене арбитража заказчику и исполнителю.
  * 
  * @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;
 }