/** * Изменение редактирования пользователя * * @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; }