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