/** * Сохранение профиля юзера * * @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();"); } }