/**
 * Сохранение профиля юзера
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditProfileSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    $error = '';
    $bNew = true;
    setlocale(LC_ALL, 'ru_RU.CP1251');
    switch ($aForm['p_ucolumn']) {
        case 'uname':
            $new_val = change_q(substr(trim($aForm['new_val']), 0, 21), true);
            if (!preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $new_val)) {
                $error = 'Поле заполнено некорректно';
            }
            break;
        case 'usurname':
            $new_val = change_q(substr(trim($aForm['new_val']), 0, 21), true);
            if (!preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/", $new_val)) {
                $error = 'Поле заполнено некорректно';
            }
            break;
        case 'pname':
            $new_val = change_q(substr(trim(stripslashes($aForm['new_val'])), 0, 100), true);
            break;
        case 'spec_text':
            $ab_text_max_length = 500;
            $new_val = stripslashes(trim($aForm['new_val']));
            $new_val = preg_replace("|[\t]+|", " ", $new_val);
            $new_val = preg_replace("|[ ]+|", " ", $new_val);
            $original_text = $new_val;
            $newlines = intval(substr_count($new_val, "\r"));
            $new_val = change_q_x_a(substr($new_val, 0, $ab_text_max_length + $newlines), false, false, "b|i|p|ul|li{1}");
            if (strlen($original_text) > $ab_text_max_length + $newlines) {
                $error = 'Допустимо максимум ' . $ab_text_max_length . ' знаков.';
            }
            break;
        case 'resume_file':
        case 'photo':
        case 'logo':
            $del_file = intval($aForm['del_file']);
            $dir = $aForm['login'];
            $dir2 = $aForm['p_ucolumn'] == 'resume_file' ? 'resume' : ($aForm['p_ucolumn'] == 'photo' ? 'foto' : 'logo');
            if ($del_file || $aForm['new_val']) {
                $new_val = $del_file ? '' : substr(change_q_new(trim(stripslashes($aForm['new_val']))), 0, 1500);
                if ($aForm['old_val']) {
                    $oCFile = new CFile();
                    $oCFile->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/' . $dir2 . '/', $aForm['old_val']);
                    if ($aForm['p_ucolumn'] == 'photo' || $aForm['p_ucolumn'] == 'logo') {
                        $oCFile->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/' . $dir2 . '/', 'sm_' . $aForm['old_val']);
                    }
                }
            } else {
                // админ нажал "Сохранить" не зааплоадив файл - считаем что утвердил тот что есть
                $bNew = false;
            }
            break;
        case 'resume':
            $new_val = str_replace("\r\n", "\r", $aForm['new_val']);
            if (strlen($new_val) > 4000) {
                $error = 'Допустимо максимум 4000 знаков.';
            }
            $new_val = change_q(substr(trim($new_val), 0, 4000), false, 25);
            break;
        case 'konk':
            if (strlen($aForm['new_val']) > 4000) {
                $error = 'Допустимо максимум 4000 знаков.';
            }
            $new_val = change_q(substr(trim($aForm['new_val']), 0, 4000), false, 90);
            break;
        case 'company':
            if (strlen($aForm['new_val']) > 500) {
                $error = 'Допустимо максимум 500 знаков.';
            }
            $new_val = substr(change_q_x($aForm['new_val'], false, true, null, false, false), 0, 500);
            break;
        case 'status_text':
            $new_val = addslashes(substr(stripslashes(trim($aForm['new_val'])), 0, 200));
            close_tags($new_val, 's');
            $new_val = htmlspecialchars(htmlspecialchars_decode(change_q_x(trim($new_val), true, false), ENT_QUOTES), ENT_QUOTES);
            break;
        case 'compname':
            $new_val = change_q_x($aForm['new_val'], true);
            break;
        default:
            setlocale(LC_ALL, 'en_US.UTF-8');
            return false;
            break;
    }
    setlocale(LC_ALL, 'en_US.UTF-8');
    if (!$error) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
        if ($bNew) {
            $sReason = _parseReason($rec_id, $aForm['adm_edit_text']);
            messages::profileModifiedNotification($rec_id, $aForm['p_ucolumn'], $aForm['p_utable'], $sReason);
            if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') {
                user_content::editProfile($aForm['p_change_id'], $new_val);
            }
        }
        $objResponse->script('adm_edit_content.cancel();');
        if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') {
            $objResponse->script('parent.adm_edit_content.cancel();');
            resolveContent($aForm['p_content_id'], $aForm['p_stream_id'], user_content::MODER_PROFILE . '_' . $aForm['p_change_id'] . '_0', 1, $rec_id, $aForm['p_content_cnt'], $aForm['p_status'], $aForm['p_is_sent'], '', $objResponse);
        } else {
            // действие после редактирования по умолчанию
            if ($bNew) {
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/' . $aForm['p_utable'] . '.php';
                $user = new $aForm['p_utable']();
                $user->{$aForm}['p_ucolumn'] = $new_val;
                $user->moduser_id = $_SESSION['uid'];
                $user->Update($rec_id, $res);
            }
            if ($sDrawFunc == 'suspect') {
                // шерстим все профили на наличие контактов в админке
                $objResponse->script("window.location = '/siteadmin/suspicious_contacts/?site={$aForm['p_site']}&action=resolve&sid={$aForm['p_sid']}&page={$aForm['p_page']}'");
                return 0;
            }
            $objResponse->script('window.location.reload(true)');
        }
    } else {
        $sParent = $sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2' ? 'parent.' : '';
        $objResponse->script("{$sParent}\$('adm_edit_err_new_val').set('html', '{$error}');");
        $objResponse->script("{$sParent}\$('div_adm_edit_err_new_val').setStyle('display', '');");
        $objResponse->script("{$sParent}adm_edit_content.disabled = false; {$sParent}adm_edit_content.button();");
    }
}