/** * Сохранение предложений фрилансеров Сделаю * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aForm массив данных * @param string $sDrawFunc имя функции для выполнения после сохранения */ function _admEditSdelauSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php'; $alert = array(); if (trim($aForm['name']) == '') { $alert[1] = 'Поле не заполнено'; } elseif (strlen($aForm['name']) > freelancer_offers::MAX_SIZE_TITLE) { $alert[1] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_TITLE; } if (trim($aForm['msg']) == '') { $alert[2] = 'Поле не заполнено'; } elseif (strlen_real($aForm['msg']) > freelancer_offers::MAX_SIZE_DESCRIPTION) { $alert[2] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_DESCRIPTION; } if ($aForm['categories'] == 0) { $alert[3] = 'Не выбран раздел и подраздел'; } if (!$alert) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $oFreelancerOffers = new freelancer_offers(); $update = array('title' => $aForm['name'], 'descr' => $aForm['msg'], 'category_id' => intval($aForm['categories']), 'subcategory_id' => intval($aForm['subcategories']), 'modify_date' => date('Y-m-d H:i:s')); $oFreelancerOffers->Update(intval($rec_id), $update); $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']); messages::sdelauModifiedNotification($aForm['msg'], $aForm['login'], $aForm['uname'], $aForm['usurname'], $sReason); $content_id = user_content::MODER_SDELAU; _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm); } else { _setErrors($objResponse, $alert, array(1 => 'name', 2 => 'msg', 3 => 'categories'), $sDrawFunc); } }
if ($id_offer > 0) { //$_SESSION['bill.GET']['addinfo'] = "<a href='/?kind=8#o_{$id_offer}'>Перейти к оплаченному предложению</a>"; header("Location: /public/offer/offer_published.php?offer_id={$id_offer}"); } break; case "update": if (!$fid) { $fid = intval($_POST['fid']); } $is_edit = true; if (isset($error)) { $categories_specs = professions::GetAllProfessions($_POST['categories']); break; } $update = array("title" => $_POST['title'], "descr" => $_POST['descr'], "category_id" => (int) $_POST['categories'], "subcategory_id" => (int) $_POST['subcategories']); $frl_offers->Update(intval($_POST['fid']), $update); if (isset($_POST['page'])) { $page = intval($_POST['page']); } $page_uri = ""; if ($page < 0) { $page = 0; } if ($page > 0) { $page_uri = "&page={$page}"; } $back = __paramInit('string', 'red', 'red', ''); $back = $back ? $back : '/projects/?kind=8' . $page_uri . '#o_' . $fid; header("Location: {$back}"); break; case "edit":
/** * Изменение блокировки предложения фрилансера. * * @param int $offer_id ID предложения фрилансера * @param int $act_id ID нового действия (admin_actions) * @param int $src_id ID исходного действия (в данном случае равен $obj_id или 0 - просто индикатор) * @param string $reason причина * @param int $reason_id ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 13) * * @return object xajaxResponse */ function updateOfferBlock($offer_id, $act_id, $src_id, $reason = '', $reason_id = null) { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('projects')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php'; $frl_offers = new freelancer_offers(); $offer_id = intval($offer_id); $offer = $frl_offers->getOfferById($offer_id); if ($offer) { $objUser = new users(); $objUser->GetUserByUID($offer['user_id']); $sObjName = $offer['title']; $sObjLink = ''; // нет ссылки на конкретное предложение $reason_id = $reason_id ? $reason_id : 0; $reason = str_replace('%USERNAME%', $objUser->uname . ' ' . $objUser->usurname, $reason); $reason = change_q($reason, false, 0, true); if ($act_id == 14 && $src_id) { // разблокируем предложение $update = array('is_blocked' => 'f', 'reason' => '', 'reason_id' => 0, 'admin' => 0); $frl_offers->Update($offer_id, $update); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_OFFER, 14, $offer['user_id'], $offer_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason); // так как появилось новое действие в логе $objResponse->script('window.location="/siteadmin/admin_log/?site=offer";'); } elseif ($act_id == 13 && $src_id) { // редактируем текущую блокировку предложения admin_log::updateOfferBlock($src_id, $reason, $reason_id); $objResponse->script('window.location.reload(true)'); } elseif ($act_id == 13 && !$src_id) { // блокируем предложение $update = array('is_blocked' => 't', 'reason' => $reason, 'reason_id' => $reason_id, 'admin' => $_SESSION['uid']); $frl_offers->Update($offer_id, $update); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_OFFER, 13, $offer['user_id'], $offer_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason, $offer_id); // так как появилось новое действие в логе $objResponse->script('window.location="/siteadmin/admin_log/?site=offer";'); } } else { $objResponse->script('adminLogOverlayClose();'); $objResponse->alert('Несуществующее предложение'); } } return $objResponse; }
/** * Блокирование/разблокирование предложения фрилансера * * @param int $offer_id * @param string $reason причина * @param int $reason_id ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 13) * @param string $reason_name Краткое описание причины действия (из селекта) для лога админских действий * @return object xajaxResponse */ function BlockedFreelanceOffer($offer_id, $reason, $reason_id = null, $reason_name = '') { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('projects')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $frl_offers = new freelancer_offers(); $offer_id = intval($offer_id); $offer = $frl_offers->getOfferById($offer_id); if ($offer) { $objUser = new users(); $objUser->GetUserByUID($offer['user_id']); // лог админских действий $sObjName = $offer['title']; $sObjLink = ''; // нет ссылки на конкретное предложение $reason_id = $reason_id ? $reason_id : 0; $reason = str_replace('%USERNAME%', $objUser->uname . ' ' . $objUser->usurname, $reason); $reason = change_q($reason, FALSE, 0, TRUE); if ($offer['is_blocked'] == 't') { // был заблокирован - разблокируем $update = array('is_blocked' => false, 'reason' => '', 'reason_id' => 0, 'admin' => 0); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_OFFER, 14, $offer['user_id'], $offer_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason); $objResponse->assign("freelance-offer-reason-txt-{$offer_id}", 'innerHTML', ' '); $objResponse->assign("freelance-offer-reason-{$offer_id}", 'style.display', 'none'); $objResponse->assign("freelance-offer-button-{$offer_id}", 'innerHTML', '<a class="b-buttons__link b-buttons__link_dot_c10601 b-buttons__link_margleft_10" href="javascript:void(0);" onclick="banned.blockedFreelanceOffer(' . $offer_id . ')">Заблокировать</a>'); } else { // был разблокирован - блокируем $objUser = new users(); $objUser->GetUserByUID($offer['user_id']); $update = array('is_blocked' => true, 'reason' => $reason, 'reason_id' => $reason_id, 'admin' => $_SESSION['uid']); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_OFFER, 13, $offer['user_id'], $offer_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason, $offer_id); $reason = reformat($reason, 24, 0, 0, 1, 24); $html = BlockedFreelanceOfferHTML($reason); $objResponse->assign("freelance-offer-reason-txt-{$offer_id}", 'innerHTML', $reason); $objResponse->assign("freelance-offer-reason-{$offer_id}", 'style.display', 'block'); $objResponse->assign("freelance-offer-button-{$offer_id}", 'innerHTML', '<a class="b-buttons__link b-buttons__link_dot_c10601 b-buttons__link_margleft_10" href="javascript:void(0);" onclick="banned.unblockedFreelanceOffer(' . $offer_id . ')">Разблокировать</a>'); $objResponse->script("if(banned.reload==1){window.location.reload(true);}"); } $frl_offers->Update($offer_id, $update); $objResponse->script("\$('freelance-offer-block-{$offer_id}').set('html', ' ')"); //$objResponse->assign("freelance-offer-block-$offer_id", 'innerHTML', ' '); } else { $objResponse->alert('Несуществующее предложение'); } } return $objResponse; }