Exemple #1
0
         $mail->recipient = "{$employer->login} <" . $employer->email . ">";
         // получатель
         $mail->send('text/html');
         // отправляем письмо как plain/text
     }
 }
 if (!$is_edit && $is_personal) {
     //Добавляем ответ фрилансера
     //$message = 'Я получил' . ($sex == 'f' ? 'а' : '') . ' ваше предложение о проекте, в скором времени отвечу на него.';
     $message = '';
     $obj_offer = new projects_offers();
     $obj_offer->AddOffer($freelancer->uid, $proj['id'], '', '', 2, '', '', 0, $message, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', false, 0, 1);
     $tmpPrj->SetExecutor($proj['id'], $freelancer->uid, $employer->uid);
     //Отправляем СМС Фрилансеру
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_sms.php";
     ProjectsSms::model($freelancer->uid)->sendStatus(0, $proj['id'], 9);
 }
 if (hasPermissions("projects")) {
     $inspect_user_session = new session();
     $inspect_user_session->UpdateProEndingDate($view_user_login);
 }
 if (!$is_edit) {
     $_SESSION['new_public'] = 1;
 }
 $drafts->DeleteDraft($draft_id, $uid, 1);
 if ($is_edit) {
     $back = $backLink ? $backLink : '/projects/' . $proj['id'];
 } else {
     $back = "/public/?step=2&public={$proj['id']}";
 }
 header("Location: {$back}");
/**
 * Установка исполнителя проекта.
 *
 * @param integer      $po_id   id предложения к проекту
 * @param unknown_type $prj_id  id проекта
 * @param unknown_type $user_id id юзера-исполнителя
 *
 * @return xajax response
 */
function SelectProjectExecutor($po_id, $prj_id, $user_id, $type, $exec_po_id = 0)
{
    session_start();
    $user = new users();
    $prj = new projects();
    $prj_offer = new projects_offers();
    $po_id = intval($po_id);
    $prj_id = intval($prj_id);
    $exec_po_id = intval($exec_po_id);
    $user_id = intval($user_id);
    $user_name = $user->GetName($user_id, $error);
    $emp_id = get_uid(false);
    $emp_name = $user->GetName($emp_id, $error);
    $objResponse = new xajaxResponse();
    $pod = new projects_offers_dialogue();
    $pod->markReadEmp(array($po_id), $emp_id);
    //Не позволяем производить действия с заблокированным проектом
    if (projects::CheckBlocked(intval($prj_id))) {
        $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($prj_id) . "'");
        return $objResponse;
    }
    $project = $prj->GetPrj($emp_id, $prj_id, 1);
    if (tservices_helper::isAllowOrderReserve()) {
        //@todo: отправляем на форму нового заказа на базе проекта для текущего предложения фрилансера
        $objResponse->script("document.location.href='/new-project-order/{$po_id}/'");
        return $objResponse;
    }
    if ($error = $prj->SetExecutor($prj_id, $user_id, $emp_id)) {
        $objResponse->alert($error);
        return $objResponse;
    }
    $project['exec_id'] = $user_id;
    //Отправляем уведомления участникам сделки
    $smail = new projects_smail();
    $smail->onSetExecutorFrl($project);
    $smail->onSetExecutorEmp($project);
    //Отправляем СМС уведомление
    ProjectsSms::model($project['exec_id'])->sendStatus($project['status'], $project['id'], $project['kind']);
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/base.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/api.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/mobile.php';
    externalApi_Mobile::addPushMsg($user_id, 'prj_select_performer', array('from_user_id' => $project['user_id'], 'name' => $project['name'], 'project_id' => $project['id']));
    // Если находимся в "Не определен", тогда предыдущий исполнитель (если он был) сам попадает в "Не определен".
    // Перезагружаем в этом случае страницу.
    if ($type == 'o' && $project['exec_id']) {
        $objResponse->script("document.location.href=document.location.href.replace(/(&v=\\d*)?#offers\$/,'&v=" . mt_rand(1, 99999) . "#offers')");
        return $objResponse;
    }
    list($po_offers_count, $msg_offers_count) = $prj_offer->CountPrjOffers($prj_id, 'offers');
    $objResponse->assign('po_offers_count', 'innerHTML', $po_offers_count);
    if ($msg_offers_count > 0) {
        $objResponse->assign('op_count_offers_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_offers_count . ' ' . ending($msg_offers_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
    } else {
        $objResponse->assign('op_count_offers_new_msgs', 'innerHTML', '');
        if ($type == 'o') {
            $objResponse->remove('sort_box');
        }
    }
    list($po_executor_count, $msg_executor_count) = $prj_offer->CountPrjOffers($prj_id, 'executor');
    $objResponse->assign('po_executor_count', 'innerHTML', $po_executor_count);
    if ($msg_executor_count > 0) {
        $objResponse->assign('op_count_executor_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_executor_count . ' ' . ending($msg_executor_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
    } else {
        $objResponse->assign('op_count_executor_new_msgs', 'innerHTML', '');
        if ($type == 'i') {
            $objResponse->remove('sort_box');
        }
    }
    list($po_candidate_count, $msg_candidate_count) = $prj_offer->CountPrjOffers($prj_id, 'candidate');
    $objResponse->assign('po_candidate_count', 'innerHTML', $po_candidate_count);
    if ($msg_candidate_count > 0) {
        $objResponse->assign('op_count_candidate_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_candidate_count . ' ' . ending($msg_candidate_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
    } else {
        $objResponse->assign('op_count_candidate_new_msgs', 'innerHTML', '');
        if ($type == 'c') {
            $objResponse->remove('sort_box');
        }
    }
    list($po_refuse_count, $msg_refuse_count) = $prj_offer->CountPrjOffers($prj_id, 'refuse');
    $objResponse->assign('po_refuse_count', 'innerHTML', $po_refuse_count);
    if ($msg_refuse_count > 0) {
        $objResponse->assign('op_count_refuse_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_refuse_count . ' ' . ending($msg_refuse_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
    } else {
        $objResponse->assign('op_count_refuse_new_msgs', 'innerHTML', '');
        if ($type == 'r') {
            $objResponse->remove('sort_box');
        }
    }
    if ($exec_po_id > 0) {
        //$objResponse->assign("po_b_exec_" . $exec_po_id, "innerHTML", '<a id="po_img_exec_' . $exec_po_id . '" class="b-button-multi__link" onclick="xajax_SelectProjectExecutor(' . $exec_po_id . ', ' . $prj_id . ', ' . $user_id . ', ' . "'" . $type . "'" . ', ' . $po_id . ');" href="javascript:void(0)" title="Буду работать с этим человеком."><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_green"></span><span class="b-button-multi__txt">Исполнитель</span></span></a>');
    }
    //$objResponse->assign("po_b_exec_" . $po_id, "innerHTML", '<a id="po_img_exec_' . $po_id . '" class="b-button-multi__link" href="javascript:void(0)" title="Буду работать с этим человеком."><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_green"></span><span class="b-button-multi__txt">Исполнитель</span></span></a>');
    //$objResponse->assign("po_b_select_" . $po_id, "innerHTML", '<a id="po_img_select_' . $po_id . '" class="b-button-multi__link" onclick="xajax_SelectProjectOffer(' . $po_id . ', ' . $prj_id . ', ' . $user_id . ', ' . "'" . $type . "'" . ');" href="javascript:void(0)" title="Прошел предварительный отбор. Может быть исполнителем"><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_blue"></span><span class="b-button-multi__txt">Кандидат</span></span></a>');
    // $objResponse->assign("po_b_refuse_" . $po_id, "innerHTML", '<a id="po_img_refuse_' . $po_id . '" class="b-button-multi__link" onclick="show_fpopup(' . "'po_b_refuse_" . $po_id . "', 'po_m_refuse_" . $po_id . "'" . ');" href="javascript:void(0)" title="Этот человек мне не подходит. Может быть в следующий раз."><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_red"></span><span class="b-button-multi__txt">Отказать</span></span></a>');
    $objResponse->script("removeNoteBar('{$user_name['login']}');");
    $objResponse->remove('po_' . $po_id);
    $objResponse->remove('po_u_' . $po_id);
    $objResponse->remove('po_bar_' . $po_id);
    $offer = $prj_offer->GetPrjOffer($project['id'], $project['exec_id']);
    $sHtml = projects_helper::renderStatus($project, $offer);
    $objResponse->assign('project_status_' . $prj_id, 'innerHTML', $sHtml);
    --$_SESSION['offers_on_page'];
    if ($_SESSION['offers_on_page'] == 0) {
        $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($prj_id) . '&type=' . $type . "'");
    }
    return $objResponse;
}
 /**
  * Уведомление второй стороны о новом отзыве
  * 
  * @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;
 }