Пример #1
0
 /**
  * Добавление предложения к конкурсу.
  *
  * @param integer $user_id           id фрилансера
  * @param integer $prj_id            id конкурса
  * @param string  $text              текст предложения
  * @param array   $work_pict         работа
  * @param array   $work_prev_pict    превью работы
  * @param boolean $for_customer_only показывать только работодателю
  *
  * @return string текст ошибки в случае неуспеха
  */
 public function AddOfferKon($user_id, $prj_id, $text, $work_pict, $work_prev_pict, $for_customer_only = false)
 {
     global $DB;
     $obj_portfolio = new portfolio();
     $obj_dialogue = new projects_offers_dialogue();
     $prj_id = intval($prj_id);
     $user_id = intval($user_id);
     $text = substr(change_q(trim($text), true, 90), 0, 3000);
     $for_customer_only = $for_customer_only ? 't' : 'f';
     $attach = array();
     foreach ($work_pict as $key => $value) {
         if ($value != '') {
             $attach[$key]['pict'] = substr(change_q(trim($value), false, 25), 0, 24);
             $attach[$key]['prev'] = substr(change_q(trim($work_prev_pict[$key]), false, 30), 0, 29);
         }
     }
     $sql = "SELECT COUNT(*) as num\n          FROM projects_offers AS po\n          WHERE (po.project_id = '{$prj_id}') AND (user_id = " . $user_id . ')';
     $count = $DB->val($sql, $prj_id, $user_id);
     if ($count) {
         return 'Предложение уже существует';
     } else {
         $sql = "INSERT INTO projects_offers (project_id, user_id, cost_from, cost_to, cost_type, time_from, time_to, time_type, pict1, pict2, pict3, prev_pict1, prev_pict2, prev_pict3, only_4_cust)\n          VALUES (?i, ?i, 0, 0, 0, 0, 0, 0, '', '', '', '', '', '', ? );SELECT currval('projects_offers_id_seq');";
         $po_id = $DB->val($sql, $prj_id, $user_id, $for_customer_only);
         $error = $DB->error;
         if ($po_id) {
             $error .= $obj_dialogue->AddDialogueMessage($po_id, $user_id, $text, true, false);
             $sql = '';
             foreach ($attach as $value) {
                 $sql .= 'INSERT INTO projects_offers_attach (offer_id, prev_pict, pict) ' . 'VALUES (?i, ?, ?);';
             }
             if ($sql != '') {
                 $DB->query($sql, $po_id, $value['prev'], $value['pict']);
                 $error .= $DB->error;
             }
         }
         if (!$error) {
             $_SESSION['po_count'] = (int) $_SESSION['po_count'] + 1;
         }
         return $error;
     }
 }
Пример #2
0
function AddDialogueMessage($form)
{
    global $session;
    session_start();
    $objResponse = new xajaxResponse();
    $offerIsBlocked = projects_offers::isOfferBlocked(false, get_uid(), $form['prj_id']);
    if ($offerIsBlocked) {
        $objResponse->alert('Ваше предложение заблокировано, вы не можете отправить это сообщение');
        return $objResponse;
    }
    $prj = new projects();
    $project = $prj->GetPrjCust(intval($form['prj_id']));
    $is_pro = is_pro();
    if ($project['pro_only'] == 't' && !$is_pro && !is_emp() && !hasPermissions('projects')) {
        if ($project['kind'] == 7) {
            if (contest::IsContestOfferExists($project['id'], get_uid(false))) {
                $is_pro = true;
            }
        } else {
            if (projects_offers::IsPrjOfferExists($project['id'], get_uid(false))) {
                $is_pro = true;
            }
        }
    }
    if ($project['pro_only'] == 't' && !$is_pro && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.');
        $objResponse->script("\$('savebtn').set('disabled', false);");
        return $objResponse;
    } elseif ($project['verify_only'] == 't' && !($_SESSION['is_verify'] == 't') && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        $objResponse->alert('Данная функция доступна только верифицированным пользователям.');
        $objResponse->script("\$('savebtn').set('disabled', false);");
        return $objResponse;
    }
    if (!trim($form['po_text'])) {
        $objResponse->alert('Невозможно отправить пустое сообщение.');
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        return $objResponse;
    }
    if (!is_emp() && $form['from'] == 'emp') {
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта работодателя.');
        return $objResponse;
    } elseif (is_emp() && $form['from'] == 'frl') {
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта фрилансера.');
        return $objResponse;
    }
    //Не позволяем производить действия с заблокированным проектом
    if (projects::CheckBlocked(intval($form['prj_id']))) {
        $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($form['prj_id']) . "'");
    } elseif (intval($_SESSION['uid'])) {
        $po_id = intval($form['po_id']);
        //$po_text = substr(change_q_x($form['po_text'], false), 0, 1000);
        $po_text = antispam(trim($form['po_text']));
        $po_text = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $po_text);
        $po_commentid = intval($form['po_commentid']);
        $user_id = get_uid(false);
        $user = new users();
        $user_name = $user->GetName($user_id, $error);
        $pod = new projects_offers_dialogue();
        $project_dialogue = $pod->GetDialogueForOffer($po_id);
        $project = $pod->GetProjectFromDialogue($po_id);
        if (count($project_dialogue)) {
            for ($i = count($project_dialogue) - 1; $i >= 0; --$i) {
                if ($project_dialogue[$i]['user_id'] != $user_id) {
                    $to_user_name = $project_dialogue[$i]['login'];
                    break;
                }
            }
        }
        if (is_emp()) {
            $emp_read = true;
            $frl_read = false;
        } else {
            $emp_read = false;
            $frl_read = true;
        }
        if (!$po_commentid) {
            $error = $pod->AddDialogueMessage($po_id, $user_id, $po_text, $frl_read, $emp_read);
            $last_comment = $pod->GetLastDialogueMessage($user_id, $po_id);
            $objResponse->script("last_commentid={$last_comment};");
            $objResponse->script("edit_block[{$po_id}] = '&nbsp;&nbsp;<span><a href=\"javascript:void(null)\" onClick=\"answer({$po_id}, {$last_comment});markRead(\\'{$po_id}\\');\" class=\"internal\">Редактировать</a></span>';");
            //		$objResponse->script("alert(last_commentid);");
            //		$objResponse->script("alert(edit_block);");
        } else {
            $error = $pod->SaveDialogueMessage($user_id, $po_text, $po_commentid, $po_id, false);
            if ($error == 1) {
                $objResponse->alert('Вы не можете редактировать комментарий, так как на него уже ответили.');
                return $objResponse;
            }
        }
        $po_text = rtrim(ltrim($po_text, "\r\n"));
        $po_text = substr(change_q_x($po_text, false, true, '', false, false), 0, 1000);
        $po_text = stripslashes($po_text);
        if ($error == '') {
            $sPostText = $po_text;
            if ($project['kind'] != 4) {
                $sId = $po_commentid ? $po_commentid : $last_comment;
                $aComment = $pod->getDialogueMessageById($sId);
                if ($aComment['moderator_status'] === '0') {
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
                    $stop_words = new stop_words(hasPermissions('projects'));
                    $sPostText = $stop_words->replace($sPostText);
                }
            }
            if (!$po_commentid) {
                $objResponse->append('po_dialogue_talk_' . $po_id, 'innerHTML', '<div style="margin-bottom:8px;font-size:100%;"><span class="' . (is_emp() ? 'emp' : 'frl') . 'name11"><a href="/users/' . get_login($user_id) . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['uname'] . ' ' . $user_name['usurname'] . '">' . $user_name['uname'] . ' ' . $user_name['usurname'] . '</a> [<a href="/users/' . $user_name['login'] . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['login'] . '">' . $user_name['login'] . '</a>]</span> <span id="po_date_' . $last_comment . '">[' . strftime('%d.%m.%Y | %H:%M', time()) . ']</span><br /><div id="po_comment_' . $last_comment . '">' . reformat($sPostText, 50, 0, 0, 1) . '</div><div id="po_comment_original_' . $last_comment . '" style="display:none;">' . str_replace(' ', '&nbsp;', reformat($po_text, 1000, 0, 1)) . '</div></div>');
                //			$objResponse->call('resetfld', $po_id);
                $objResponse->script('dialogue_count[' . $po_id . '] = ' . (count($project_dialogue) + 1));
            } else {
                $objResponse->assign('po_comment_' . $po_commentid, 'innerHTML', reformat($sPostText, 50, 0, 0, 1));
                $objResponse->assign('po_comment_original_' . $po_commentid, 'innerHTML', str_replace(' ', '&nbsp;', reformat($po_text, 1000, 0, 1)));
                $objResponse->assign('po_date_' . $po_commentid, 'innerHTML', dateFormat('[d.m.Y | H:i]', date('Y-m-d H:i:s')));
            }
            $objResponse->call('answer', $po_id);
            if ($to_user_name && $project['id'] && $project['name'] && !$po_commentid) {
                /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php");
                		$smail = new smail();
                		if ($project['user_id'] == $user_id) {
                               $error = $smail->NewPrjMessageOnOfferFrl($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text);
                		} else {
                               $error = $smail->NewPrjMessageOnOfferEmp($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text);
                		}*/
            }
        } else {
            $objResponse->alert('Ошибка сохранения.');
        }
    } else {
        $objResponse->alert('Ошибка сохранения. Авторизируйтесь на сайте.');
    }
    return $objResponse;
}
Пример #3
0
         for ($i = count($project_dialogue) - 1; $i >= 0; --$i) {
             if ($project_dialogue[$i]['user_id'] != $user_id) {
                 $to_user_name = $project_dialogue[$i]['login'];
                 break;
             }
         }
     }
     if (is_emp()) {
         $emp_read = true;
         $frl_read = false;
     } else {
         $emp_read = false;
         $frl_read = true;
     }
     if (!$po_commentid) {
         $error = $pod->AddDialogueMessage($po_id, $user_id, $po_text, $frl_read, $emp_read);
         $last_comment = $pod->GetLastDialogueMessage($user_id, $po_id);
     } else {
         $error = $pod->SaveDialogueMessage($user_id, $po_text, $po_commentid, $po_id, false);
         $last_comment = $po_commentid;
         if ($error == 1) {
             $error = 'Вы не можете редактировать комментарий, так как на него уже ответили.';
         }
     }
     $po_text = rtrim(ltrim($po_text, "\r\n"));
     $po_text = substr(change_q_x($po_text, false, true, '', false, false), 0, 1000);
     $po_text = stripslashes($po_text);
 }
 if (!$error) {
     //header("Location: ".getFriendlyURL("project", $project['id'])."?id={$po_id}&cid={$last_comment}&p=comment");
     header('Location: ' . getFriendlyURL('project', $project['id']));