/**
 * Отдает 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 . ');');
}
Example #2
0
/**
 * Блокирование/разблокирование предложения по проекту
 * 
 * @param  int    $offer_id      ID предложения
 * @param  int    $user_id       UID пользователя
 * @param  int    $project_id    ID проекта
 * @param  string $reason        причина
 * @param  int    $reason_id     ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 27)
 * @param  string $reason_name   Краткое описание причины действия (из селекта) для лога админских действий
 * @return object xajaxResponse
 */
function BlockedProjectOffer($offer_id, $user_id, $project_id, $reason, $reason_id = null, $reason_name = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('projects')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
        $projects_offers = new projects_offers();
        $offer_id = intval($offer_id);
        $offer = $projects_offers->GetPrjOfferById($offer_id);
        if ($offer && $offer['id'] == $offer_id) {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
            $objUser = new users();
            $objUser->GetUserByUID($offer['user_id']);
            // лог админских действий
            $projects = new projects();
            $project = $projects->GetPrjCust($project_id);
            $sObjName = $project['name'];
            $sObjLink = getFriendlyURL('project', $project_id);
            $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') {
                $projects_offers->UnBlocked($offer_id);
                // пишем лог админских действий
                admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_UNBLOCK_OFFER, $user_id, $offer_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason);
                $objResponse->assign("project-offer-block-{$offer_id}", 'innerHTML', '&nbsp;');
                $objResponse->assign("project-offer-block-{$offer_id}", 'style.display', 'none');
                $objResponse->assign("project-button-{$offer_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.blockedProjectOffer(' . $offer_id . ',' . $user_id . ',' . $project_id . ')">Заблокировать</a>');
            } else {
                $sBlockId = $projects_offers->Blocked($offer_id, $user_id, $project_id, $reason, $reason_id, $_SESSION['uid']);
                // пишем лог админских действий
                admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_BLOCK_OFFER, $user_id, $offer_id, $project['name'], $sObjLink, 0, '', $reason_id, $reason, $sBlockId);
                $reason = reformat($reason, 24, 0, 0, 1, 24);
                $html = BlockedProjectOfferHTML($reason, $_SESSION['login'], "{$_SESSION['name']} {$_SESSION['surname']}");
                $objResponse->assign("project-offer-block-{$offer_id}", 'innerHTML', $html);
                $objResponse->assign("project-offer-block-{$offer_id}", 'style.display', 'block');
                $objResponse->assign("project-button-{$offer_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.unblockedProjectOffer(' . $offer_id . ',' . $user_id . ',' . $project_id . ')">Разблокировать</a>');
                $objResponse->script("\$('ban_btn').addClass('b-button_rectangle_color_green').removeClass('b-button_rectangle_color_disable');");
            }
        } else {
            $objResponse->alert('Несуществующее предложение');
        }
    }
    return $objResponse;
}
Example #3
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 resolvePrjOffers($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_PRJ_OFFERS, $stream_id);
     if ($sRecId) {
         $bRet = true;
         if ($rec_type == 7) {
             $aData = array('moderator_status' => $user_id);
             if ($action == 1 && $is_sent == 'f') {
                 // отправка уведомления о новом сообщении
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pmail.php';
                 $pmail = new pmail();
                 $pmail->NewPrjOffer($rec_id);
                 $aData['is_sent'] = true;
                 // устанавливаем флаг отправки
             }
             $sDeluserId = $GLOBALS['DB']->val('SELECT deluser_id FROM projects_contest_offers WHERE id = ?i', $rec_id);
             if ($action == 1 && $sDeluserId && $sDeluserId != $from_id) {
                 $aData['is_deleted'] = false;
                 $aData['deluser_id'] = null;
                 $aData['deleted_reason'] = '';
             } elseif ($action == 2 && $sDeluserId != $from_id) {
                 $aData['is_deleted'] = true;
                 $aData['deluser_id'] = $user_id;
                 $aData['deleted_reason'] = $reason;
             }
             $GLOBALS['DB']->update('projects_contest_offers', $aData, 'id = ?i', $rec_id);
             $GLOBALS['DB']->update('projects_offers', array('moderator_status' => $user_id), 'id = ?i', $rec_id);
         } else {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             $projects_offers = new projects_offers();
             $offer = $projects_offers->GetPrjOfferById($rec_id);
             $aData = $aData2 = array('moderator_status' => $user_id);
             $projects = new projects();
             $project = $projects->GetPrjCust($offer['project_id']);
             $sObjName = $project['name'];
             $sObjLink = getFriendlyURL('project', $offer['project_id']);
             if ($action == 1) {
                 if ($is_sent == 'f') {
                     // отправка уведомления о новом сообщении
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pmail.php';
                     $pmail = new pmail();
                     $pmail->NewPrjOffer($rec_id);
                     $aData['is_sent'] = true;
                     // устанавливаем флаг отправки
                 }
                 if ($offer['blocked_time']) {
                     $projects_offers->UnBlocked($rec_id);
                     // пишем лог админских действий
                     admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_UNBLOCK_OFFER, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, '');
                 }
             } elseif ($action == 2 && !$offer['blocked_time']) {
                 $sReason = 'Содержит запрещенную информацию';
                 $sBlockId = $projects_offers->Blocked($rec_id, $from_id, $offer['project_id'], $reason, 0, $user_id, true);
                 // пишем лог админских действий
                 admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_BLOCK_OFFER, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, $sReason, $sBlockId);
             }
             $GLOBALS['DB']->update('projects_offers', $aData, 'id = ?i', $rec_id);
             $GLOBALS['DB']->update('projects_offers_dialogue', $aData2, 'po_id = ?i AND root = true', $rec_id);
         }
     }
     return $bRet;
 }
Example #4
0
 /**
  * Выбор пользователя в предложении к проекту
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_response_select($aParams = array())
 {
     $this->_validDevice($aParams);
     require_once ABS_PATH . '/classes/projects_offers.php';
     $nUid = get_uid(false);
     $oOffer = new projects_offers();
     $nId = intvalPgSql($aParams['id']);
     $aOffer = $oOffer->GetPrjOfferById($nId);
     if (is_array($aOffer) && $aOffer) {
         require_once ABS_PATH . '/classes/projects.php';
         $oPrj = new new_projects();
         $aProject = $oPrj->GetPrjCust($aOffer['project_id']);
         if (!empty($aProject) || $aProject['is_blocked'] == 'f') {
             // Не позволяем производить действия с заблокированным проектом
             if ($nUid == $aProject['user_id']) {
                 $nSelect = intvalPgSql($aParams['select']);
                 if ($nSelect > 0 && $nSelect < 4) {
                     $aOffer['emp_uid'] = $aProject['user_id'];
                     switch ($nSelect) {
                         case 1:
                             $error = false;
                             if ($aProject['exec_id'] == $aOffer['user_id']) {
                                 $error = $oPrj->ClearExecutor($aProject['id'], $nUid);
                             }
                             if (!$error) {
                                 $error = $oOffer->SetRefused($aOffer['id'], $aProject['id'], $aOffer['user_id'], '', true);
                             }
                             if ($error) {
                                 $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             } else {
                                 $aOffer['refused'] = 't';
                             }
                             break;
                         case 2:
                             $error = false;
                             if ($aProject['exec_id'] == $aOffer['user_id']) {
                                 $error = $oPrj->ClearExecutor($aProject['id'], $nUid);
                             }
                             if (!$error) {
                                 $error = $oOffer->SetSelected($aOffer['id'], $aProject['id'], $aOffer['user_id'], true);
                             }
                             if ($error) {
                                 $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             } else {
                                 $aOffer['selected'] = 't';
                             }
                             break;
                         case 3:
                             if ($oPrj->SetExecutor($aProject['id'], $aOffer['user_id'], $nUid)) {
                                 $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             } else {
                                 $aOffer['exec_id'] = $aOffer['user_id'];
                             }
                             break;
                     }
                     $aResult = array('project_response' => $this->_getProjectOfferData($aOffer));
                 } else {
                     $this->error(EXTERNAL_ERR_PRJ_SELECTED);
                 }
             } else {
                 $this->error(EXTERNAL_ERR_OWNER);
             }
         } else {
             $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_OFFER_NOT_FOUND);
     }
     return $aResult;
 }