예제 #1
0
/**
 * Изменение блокировки предложения фрилансера.
 * 
 * @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;
}