/** * Массовое утверждение записей * * @param int $content_id идентификатор сущности из admin_contents * @param string $stream_id идентификатор потока * @param string $sid JSON строка с массивом идентификаторов записей * @param string $user_id JSON строка с массивом UID авторов записей * @param int $content_cnt количество записей в потоке * @param int $status статус сущностей: 0 - для модерирования, 1 - утвержденные, 2 - удаленные * @param string $is_sent JSON строка с массивом флагов было ли отправлено уведомление * @return object xajaxResponse */ function massApproveContent($content_id = 0, $stream_id = '', $sid = '', $user_id = '', $content_cnt = 0, $status = 0, $is_sent = '') { global $user_content; $objResponse = new xajaxResponse(); $objResponse->script('user_content.spinner.hide(true);'); if ($user_content->hasContentPermissions($content_id) && $status != 1) { $aStream = array(); $checkStream = $user_content->checkStream($content_id, $stream_id, $_SESSION['uid'], $aStream); if ($checkStream) { $aSid = _jsonArray($sid); $aUid = _jsonArray($user_id); $aSend = _jsonArray($is_sent); $nSid = count($aSid); if (is_array($aSid) && $nSid && is_array($aUid) && count($aUid) && is_array($aSend) && count($aSend) && $nSid == count($aUid) && $nSid == count($aSend)) { for ($i = 0; $i < $nSid; $i++) { list($rec_content_id, $rec_id, $rec_type) = explode('_', $aSid[$i]); $user_content->resolveContent($stream_id, $_SESSION['uid'], $aUid[$i], $rec_content_id, $rec_id, $rec_type, 1, $aSend[$i]); $content_cnt--; $objResponse->script("\$('my_div_content_{$sid}').destroy();"); } $user_content->checkStream($content_id, $stream_id, $_SESSION['uid'], $aStream, $nSid); if (!$status) { $nLimit = user_content::CONTENTS_PER_PAGE - $content_cnt; if ($content_id != user_content::MODER_MSSAGES) { $user_content->chooseContent($content_id, $stream_id, $aStream['stream_num'], $nLimit); } elseif (!$status && $content_cnt < user_content::MESSAGES_PER_PAGE) { $user_content->chooseContent(1, $stream_id, $aStream['stream_num'], user_content::MESSAGES_PER_PAGE); } $nLimit = $content_id == user_content::MODER_MSSAGES ? user_content::MESSAGES_PER_PAGE : user_content::CONTENTS_PER_PAGE; _parseContents($objResponse, $aStream, $content_id, $user_content->getContent($content_id, $stream_id, 0, 0, $nLimit)); } $objResponse->script("parent.\$('span_num_{$stream_id}').set('html', '#{$aStream['title_num']}')"); } $objResponse->script("parent.\$('check_{$stream_id}').set('checked', false)"); $objResponse->script("\$(user_content.scrollWindow).scrollTo(0, user_content.scrollPosition);"); } else { _loseStream($objResponse, $stream_id); } } else { _parsePermissionsDenied($objResponse); } $objResponse->script('user_content.spinner.resize();'); return $objResponse; }
/** * Редактирование предложений фрилансеров Сделаю * * @param string $sId идентификатор записи * @param int $nEdit флаг редактирования * @param array $aForm данные формы редактирования * @param string $sDrawFunc имя функции для выполнения после сохранения * @param string $sParams JSON кодированные дополнительные параметры * @return xajaxResponse */ function admEditSdelau($sId = '', $nEdit = 0, $aForm = array(), $sDrawFunc = '', $sParams = '') { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('projects')) { list($rec_id, $rec_type) = explode('_', $sId); $aParams = _jsonArray($sParams); if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') { if (!_admEditBeforeStreams($objResponse, $nEdit, $aForm, $aParams, user_content::MODER_SDELAU, $sId, $sDrawFunc)) { return $objResponse; } } if ($nEdit) { _admEditSdelauSaveForm($objResponse, $rec_id, $rec_type, $aForm, $sDrawFunc); } else { _admEditSdelauParseForm($objResponse, $rec_id, $rec_type, $aParams); } } return $objResponse; }
/** * Активирует пользователей. * * @param string $sUsers JSON строка с массивом UID пользователей * @param int $nReload 1 - если нужно перезагрузить страницу * * @return object xajaxResponse */ function activateUser($sUsers = '', $nReload = 0) { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('users')) { $aUsers = _jsonArray($sUsers); if ($aUsers) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard_registration.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_employer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_freelancer.php'; foreach ($aUsers as $sUid) { if (users::SetActiveByUid($sUid)) { $user = new users(); $user->GetUserByUID($sUid); if ($user->role[0] == 1) { $wiz_user = wizard::isUserWizard($sUid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID); } else { $wiz_user = wizard::isUserWizard($sUid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID); } step_wizard::setStatusStepAdmin(step_wizard::STATUS_COMPLITED, $sUid, $wiz_user['id']); $objResponse->script("\$('activate_{$sUid}').set('html','');"); } } $objResponse->script('adminLogCheckUsers(false)'); $objResponse->script('$("chk_all").checked=false;'); } if ($nReload) { $objResponse->script('window.location.reload(true)'); } } return $objResponse; }
/** * Сохраняет жалобу на спам в личных сообщениях * * @param string $sSpamerId UID спамера * @param string $sUserId UID пожаловавшегося пользователя * @param string $sParams JSON строка с массивом параметров жалобы на спам * @return object xajaxResponse */ function sendSpamComplaint($sSpamerId = '', $sUserId = '', $sParams = '') { session_start(); $objResponse = new xajaxResponse(); $aParams = _jsonArray($sParams); if ($sSpamerId && $sUserId && $aParams) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/messages_spam.php"; $oSpam = new messages_spam(); $bSpam = $oSpam->addSpamComplaint($sSpamerId, $sUserId, $aParams); if ($bSpam) { $objResponse->assign('mess_spam_' . $aParams['num'], 'innerHTML', messages_spam::COMPLAINT_PENDING_TXT); } else { $objResponse->alert('Ошибка сохранения жалобы'); } $objResponse->script("\$('spam_complaint_popup').setStyle('display','none');"); } return $objResponse; }
/** * Изменение редактирования пользователя * * @param string $sUsers JSON строка с массивом UID пользователей * @param int $nActId ID действия из admin_actions (1, 2) * @param int $sWarnId ID предупреждения при редактировании/снятии * @param string $reasonId ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 1,2) * @param string $reasonName НЕ ИСПОЛЬЗУЕТСЯ. Краткое описание причины действия (из селекта) * @param string $reasonText Текст причины * @param string $draw_func способ отображения * @param string $sContext Контекст (для лога админских действий) * @return object xajaxResponse */ function updateUserWarn($sUsers = '', $nActId, $sWarnId = 0, $reasonId = null, $reasonName, $reasonText, $draw_func, $sContext = '') { session_start(); $objResponse = new xajaxResponse(); if (hasPermissions('users')) { $reasonId = $reasonId ? $reasonId : null; $aContext = _jsonArray($sContext); $aContext = $aContext ? $aContext : array('uid' => '', 'code' => 0, 'link' => '', 'name' => ''); $aUsers = _jsonArray($sUsers); $bCheck = true; if ($aContext['uid'] == 'moder') { global $user_content; $bCheck = $user_content->checkContent($aContext['contentId'], $aContext['streamId'], $aContext['recId']); } if ($bCheck && $aUsers && is_string($reasonText) && $reasonText != '') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $users = new users(); foreach ($aUsers as $sUid) { $users->GetUserByUID($sUid); if ($users->uid) { $sReason = str_replace('%USERNAME%', $users->uname . ' ' . $users->usurname, $reasonText); $sReason = change_q($sReason, FALSE, 0, TRUE); $sUniqId = "warnUser{$sUid}"; $sObjName = $users->uname . ' ' . $users->usurname . '[' . $users->login . ']'; $sObjLink = '/users/' . $users->login; if ($nActId == 2 && $sWarnId) { // снимаем предупреждение $users->UnWarn($sWarnId); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_USER, 2, $sUid, $sUid, $sObjName, $sObjLink, 0, '', $reasonId, $sReason); $actFlag = -1; } elseif ($nActId == 1 && $sWarnId) { // редактируем предупреждение admin_log::updateUserWarn($sWarnId, $sReason, $reasonId); $actFlag = 0; } elseif ($nActId == 1 && !$sWarnId && $users->warn < 3 && !$users->is_banned) { $aUserContent = array(); $sUserContent = ''; if ($aContext['code'] == 2 && preg_match('#^blog_msg_([\\d]+)#', $aContext['uid'], $aMatch)) { /*require_once( $_SERVER['DOCUMENT_ROOT'].'/classes/blogs.php' ); $aUserContent = blogs::GetMsgInfo( $aMatch[1], $err, $perm ); if ( $aUserContent ) { $sUserContent = $aContext['link'] . ($aUserContent['msgtext'] ? "\n\n" . $aUserContent['msgtext'] : ''); }*/ } // делаем предупреждение $sNewWarnId = $users->Warn($users->login, $sReason, $reasonId, $aContext['link'], $sUserContent); // пишем лог админских действий admin_log::addLog(admin_log::OBJ_CODE_USER, 1, $sUid, $sUid, $sObjName, $sObjLink, $aContext['code'], $aContext['link'], $reasonId, $sReason, $sNewWarnId, $aContext['name']); $actFlag = 1; } WarnsHTML($draw_func, $sUid, $users, $objResponse, $sUniqId, $aContext['uid'], $actFlag); } } } $objResponse->script("\$\$(\"div[id^='ov-notice']\").setStyle('display', 'none');"); $objResponse->script("if(banned.reload==1){window.location.reload(true);}"); $objResponse->script("if(banned.zero){banned.zeroShow();}"); if ($aContext['uid'] == 'moder') { // если варнинг делается из потока модерирования $objResponse->script('user_content.resolveContent(user_content.resolveSid, 2, user_content.resolveUid)'); $objResponse->script("parent.\$\$(\"div[id^='ov-notice']\").setStyle('display', 'none');"); } } return $objResponse; }