/** * Отдает HTML для Редактирование предложения по проектам * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aParams дополнительные параметры с UID отправителя. остальные - опционально * @return string */ function _admEditPrjOfferParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/portfolio.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_answers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_dialogue.php'; $offer = projects_offers::GetPrjOfferById($rec_id); $dialogue = new projects_offers_dialogue(); $user = new users(); $account = new account(); $portfolio = new portfolio(); $professions = professions::GetSelFilProf($offer['user_id']); $professions = $professions ? $professions : array(); $cur_prof = $professions ? $professions[0]['id'] : 0; $op_sum = projects_offers_answers::COLOR_FM_COST; if (!($portf_works = $portfolio->GetPortfProf($offer['user_id'], $cur_prof))) { $portf_works = array(); } $user->GetUserByUID($offer['user_id']); $account->GetInfo($offer['user_id']); $offer['dialogue'] = $dialogue->GetDialogueForOffer($offer['id']); ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/projects_offers.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(document.getElementById('adm_edit_descr')) document.getElementById('adm_edit_descr').value = (\$('adm_edit_descr_source')? \$('adm_edit_descr_source').value : null);"; // работы ----------------------------------- $offer['portfolio_work_1_id'] = $offer['portf_id1']; $offer['portfolio_work_2_id'] = $offer['portf_id2']; $offer['portfolio_work_3_id'] = $offer['portf_id3']; $offer['portfolio_work_1'] = $offer['pict1']; $offer['portfolio_work_2'] = $offer['pict2']; $offer['portfolio_work_3'] = $offer['pict3']; $offer['portfolio_work_1_prev_pict'] = $offer['prev_pict1']; $offer['portfolio_work_2_prev_pict'] = $offer['prev_pict2']; $offer['portfolio_work_3_prev_pict'] = $offer['prev_pict3']; $offer['cost_from'] = round($offer['cost_from'], 2); $offer['cost_to'] = round($offer['cost_to'], 2); $use = array(); $sWorks = 'adm_edit_content.works_ids = new Array(); adm_edit_content.works_names = new Array(); adm_edit_content.works_prevs = new Array(); adm_edit_content.works_picts = new Array(); adm_edit_content.works_links = new Array();'; if ($portf_works) { foreach ($portf_works as $key => $value) { $use[$value['id']] = 1; $sWorks .= "adm_edit_content.works_ids[{$value['id']}] = '{$value['id']}';\n adm_edit_content.works_names[{$value['id']}] = '" . htmlspecialchars(addslashes(trim($value['name']))) . "';\n adm_edit_content.works_prevs[{$value['id']}] = '" . trim($value['prev_pict']) . "';\n adm_edit_content.works_picts[{$value['id']}] = '" . trim($value['pict']) . "';\n adm_edit_content.works_links[{$value['id']}] = '" . trim($value['link']) . "';"; } } for ($i = 1; $i < 4; $i++) { if ($user_offer['portf_id' . $i] > 0 && !isset($use[$user_offer['portf_id' . $i]])) { $sId = $user_offer['portf_id' . $i]; $sWorks .= "adm_edit_content.works_ids[{$sId}] = '{$sId}';\n adm_edit_content.works_prevs[{$sId}] = '" . trim($user_offer['prev_pict' . $i]) . "';\n adm_edit_content.works_picts[{$sId}] = '" . trim($user_offer['pict' . $i]) . "';"; } } if ($offer['portfolio_work_1'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_1_id']}, '{$offer['portfolio_work_1']}', '{$offer['portfolio_work_1_prev_pict']}');"; } if ($offer['portfolio_work_2'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_2_id']}, '{$offer['portfolio_work_2']}', '{$offer['portfolio_work_2_prev_pict']}');"; } if ($offer['portfolio_work_3'] != '') { $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_3_id']}, '{$offer['portfolio_work_3']}', '{$offer['portfolio_work_3_prev_pict']}');"; } //------------------------------------------- $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать предложения по проекту'); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');"); $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное', 'Файлы'];"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script("adm_edit_content.userLogin = '******';"); $objResponse->script($sOnReady); $objResponse->script($sWorks); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PRJ_OFFERS . ');'); }
$content = '404.php'; include '../template2.php'; exit; } } else { $po = new projects_offers(); if (!$project || !$po->GetPrjOffer($prj_id, $user_id) || $cid && $pod->GetLastDialogueMessage($user_id, $po_id) != $cid) { $content = '404.php'; include '../template2.php'; exit; } } if ($cid) { $is_edit = true; $pod = new projects_offers_dialogue(); $project_dialogue = $pod->GetDialogueForOffer($po_id); $edit_dialog = $project_dialogue[count($project_dialogue) - 1]; } if ($action == 'create') { if (!trim($_POST['po_text'])) { $error = 'Невозможно отправить пустое сообщение.'; } //Не позволяем производить действия с заблокированным проектом if (projects::CheckBlocked(intval($_POST['prj_id']))) { return; } elseif (intval($_SESSION['uid'])) { $po_id = intval($_POST['po_id']); $po_text = antispam(trim($_POST['po_text'])); $po_commentid = intval($_POST['po_commentid']); $user_id = get_uid(false); $user = new users();
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}] = ' <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(' ', ' ', 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(' ', ' ', 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; }
/** * Получение одного проекта * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____projects_get($aParams = array()) { $this->_validDevice($aParams); $sId = __paramValue('int', $aParams['id'], null, true); if (!empty($sId)) { require_once ABS_PATH . '/classes/projects.php'; $oPrj = new new_projects(); $aProject = $oPrj->GetPrjCust($sId); $aAttaches = $oPrj->getAllAttach($sId); if (!empty($aProject)) { if ($aProject['is_banned'] || $aProject['is_blocked']) { // работодатель или проест заблокированы $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND); } $aResult = array('item' => $this->_getProjectData($aProject)); $nUid = get_uid(false); $aSpecs = new_projects::getSpecs($sId); if (is_array($aSpecs) && $aSpecs) { $aResult['item']['category_id'] = $aSpecs[0]['category_id']; $aResult['item']['subcategory_id'] = $aSpecs[0]['subcategory_id']; } $aResult['item']['attaches'] = array(); if ($aAttaches) { foreach ($aAttaches as $attach) { $aResult['item']['attaches'][] = array("url" => WDCPREFIX . '/' . $attach['path'], "file" => $attach['name']); } } $aResult['item']['responses'] = array(); if ($aProject['kind'] == 7) { // конкурс require_once ABS_PATH . '/classes/contest.php'; $oContest = new contest($sId, $nUid, is_emp(), $aProject['user_id'] == $nUid, false, is_pro()); $oContest->GetOffers(); if (is_array($oContest->offers) && $oContest->offers) { foreach ($oContest->offers as $aOne) { $aResult['item']['responses'][] = $this->_getContestOfferData($aOne); } } } else { // проект require_once ABS_PATH . '/classes/projects_offers.php'; require_once ABS_PATH . '/classes/projects_offers_dialogue.php'; $oPrjOffers = new projects_offers(); $obj_dialogue = new projects_offers_dialogue(); $nOffersCnt = 0; if (is_emp()) { // залогинен работодатель $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, $aProject['user_id'] == $nUid, 'date', $aProject['user_id'] == $nUid ? 'a' : 'nor'); } else { $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, false, null, 'nor'); } // Диалоги по предложениям к данному проекту и все остальное if (is_array($aOffers) && $aOffers) { foreach ($aOffers as $key => $value) { $aOffers[$key]['exec_id'] = $aProject['exec_id']; $aOffers[$key]['emp_uid'] = $aProject['user_id']; $aOffers[$key]['dialogue'] = $obj_dialogue->GetDialogueForOffer($value['id']); $aResult['item']['responses'][] = $this->_getProjectOfferData($aOffers[$key]); } } $aResult['item']['responses_count'] = $nOffersCnt; $aResult['item']['is_responses_exists'] = $oPrjOffers->OfferExist($sId, $nUid) ? 1 : 2; // Наличие предложения данного юзера по данному проекту if ($aResult['item']['is_responses_exists'] == 1) { // Предложение данного пользователя по данному проекту $user_offer = $oPrjOffers->GetPrjOffer($sId, $nUid); $user_offer['exec_id'] = $aProject['exec_id']; $user_offer['emp_uid'] = $aProject['user_id']; // Диалог по предложению данного пользователя $user_offer['dialogue'] = $obj_dialogue->GetDialogueForOffer($user_offer['id']); $aResult['item']['responses'][] = $this->_getProjectOfferData($user_offer); } } } else { $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND); } } else { $this->error(EXTERNAL_ERR_EMPTY_PROJECT_ID); } return $aResult; }