Example #1
0
/**
 * Добавляет жалобу на предложение фрилансера
 * 
 * @param  int $nOfferId Идентификатор предложения на которое жалуются
 * @param  int $nUserId Идентификатор пользователя который жалуется
 * @param  int $nType Тип нарушения
 * @param  string $sMsg Суть жалобы
 * @return object xajaxResponse
 */
function sendOfferComplain($nOfferId = 0, $nUserId = 0, $nType = 1, $sMsg = '')
{
    session_start();
    if (isset($_SESSION['uid'])) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php';
        $objResponse = new xajaxResponse();
        $offers = new freelancer_offers();
        if ($offers->getOfferById($nOfferId, false)) {
            if ($offers->AddComplain($nOfferId, $nUserId, intval($nType), $sMsg)) {
                $objResponse->script("\$('offer_complain_{$nOfferId}').set('html','Ваша жалоба на рассмотрении');");
                $objResponse->script("\$('offer_complain_{$nOfferId}').set('onclick','');");
            }
        }
        $objResponse->script('complainBusy=false;');
        $objResponse->script("\$\$('.b-popup').setStyle('display', 'none');");
        return $objResponse;
    }
}
/**
 * Отдает HTML для предложений фрилансеров Сделаю
 * 
 * @param  object $objResponse xajaxResponse
 * @param  string $rec_id идентификатор записи
 * @param  string $rec_type тип записи
 * @param  array $aParams массив дополнительных параметров
 * @return string
 */
function _admEditSdelauParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array())
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php';
    $oFreelancerOffers = new freelancer_offers();
    $offer = $oFreelancerOffers->getOfferById($rec_id, false);
    $objUser = new users();
    $objUser->GetUserByUID($offer['user_id']);
    // разделы
    $categories = professions::GetAllGroupsLite();
    $professions = professions::GetAllProfessions();
    array_group($professions, 'groupid');
    $professions[0] = array();
    ob_start();
    include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/sdelau.php';
    $sHtml = ob_get_contents();
    ob_end_clean();
    // текст
    $sOnReady = "if(\$('adm_edit_msg')) \$('adm_edit_msg').set('value', (\$('adm_edit_msg_source')? \$('adm_edit_msg_source').get('value') : null));";
    $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать предложение');
    $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml);
    $objResponse->script($sOnReady);
    $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');");
    $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное'];");
    $objResponse->script('adm_edit_content.edit();');
    $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_SDELAU . ');');
}
Example #3
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;
}
Example #4
0
 /**
  * Предложения фрилансеров "Сделаю". Утверждение/удаление записи
  * 
  * @param  string $stream_id идентификатор потока
  * @param  int $user_id идентификатор модератора
  * @param  int $from_id идентификатор пользователя
  * @param  int $rec_id идентификатор записи
  * @param  int $rec_type тип записи 
  * @param  int $action действие: 1 - утверждено, 2 - удалено
  * @param  string $is_sent было ли отправлено уведомление
  * @param  string $reason причина удаления
  */
 function resolveSdelau($stream_id = '', $user_id = 0, $from_id = 0, $rec_id = 0, $rec_type = 0, $action = 1, $is_sent = '', $reason = '')
 {
     $bRet = false;
     $sQuery = 'UPDATE moderation SET moder_num = ?i, status = ?i WHERE rec_id = ?i AND rec_type = ?i AND stream_id = ? RETURNING rec_id';
     $sRecId = $GLOBALS['DB']->val($sQuery, $this->nResolveCnt, $action, $rec_id, self::MODER_SDELAU, $stream_id);
     if ($sRecId) {
         $bRet = true;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $frl_offers = new freelancer_offers();
         $offer = $frl_offers->getOfferById($rec_id);
         $sObjName = $offer['title'];
         $sObjLink = '';
         // нет ссылки на конкретное предложение
         $update = array();
         if ($action == 1 && $offer['admin']) {
             //утверждаем
             $update = array('is_blocked' => false, 'reason' => '', 'reason_id' => 0, 'admin' => 0);
             admin_log::addLog(admin_log::OBJ_CODE_OFFER, 14, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, '');
         } elseif ($action == 2 && $topic['is_blocked_s'] != 't') {
             $sReason = 'Содержит запрещенную информацию';
             $update = array('is_blocked' => true, 'reason' => $reason, 'reason_id' => 0, 'admin' => $user_id, 'deleted_reason' => $reason);
             admin_log::addLog(admin_log::OBJ_CODE_OFFER, 13, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, $sReason, $rec_id);
         }
         $update['moderator_status'] = $user_id;
         $GLOBALS['DB']->update('freelance_offers', $update, 'id = ?i', $rec_id);
     }
     return $bRet;
 }
Example #5
0
     }
     if (trim($_POST['descr']) == "") {
         $error['descr'] = true;
     }
     if ($_POST['categories'] == 0) {
         $error['categories'] = true;
     }
     if (strlen_real($_POST['descr']) > freelancer_offers::MAX_SIZE_DESCRIPTION) {
         $error['descr_max'] = true;
     }
     if (strlen($_POST['title']) > freelancer_offers::MAX_SIZE_TITLE) {
         $error['title_max'] = true;
     }
 }
 if ($action != "create" && $action != "update" && $fid) {
     $offer = $frl_offers->getOfferById($fid);
     if (!$offer) {
         include $error_page;
         exit;
     }
 }
 switch ($action) {
     case "create":
         if (isset($error)) {
             $categories_specs = professions::GetAllProfessions($_POST['categories']);
             break;
         }
         $create = array("user_id" => (int) $_SESSION['uid'], "title" => $_POST['title'], "descr" => $_POST['descr'], "category_id" => (int) $_POST['categories'], "subcategory_id" => (int) $_POST['subcategories']);
         $id_offer = $frl_offers->Create($create);
         if ($id_offer > 0) {
             //$_SESSION['bill.GET']['addinfo'] = "<a href='/?kind=8#o_{$id_offer}'>Перейти к оплаченному предложению</a>";
Example #6
0
/**
 * Блокирование/разблокирование предложения фрилансера
 * 
 * @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', '&nbsp;');
                $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', '&nbsp;')");
            //$objResponse->assign("freelance-offer-block-$offer_id", 'innerHTML', '&nbsp;');
        } else {
            $objResponse->alert('Несуществующее предложение');
        }
    }
    return $objResponse;
}