function openProfession($sId = '', $aParams = array()) { $objResponse =& new xajaxResponse(); if ((int) $sId != $_SESSION['uid']) { return $objResponse; } $prof_id = (int) $aParams['sProfId']; $category = current(portfolio::getPortfolioCategory($prof_id)); $kwords = new kwords(); $user_keys = $kwords->getUserKeys(get_uid(), $prof_id); ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.profession-edit.php'; $sHtml = ob_get_contents(); ob_end_clean(); $objResponse->assign('popup_loader', 'innerHTML', $sHtml); $objResponse->script("portfolio.initPopup('profession_edit_popup');"); $objResponse->script("ComboboxManager.initCombobox( \$('profession_edit_popup').getElements('.b-combo__input') );"); return $objResponse; }
/** * Отдает HTML для Редактирование Личные сообщения * * @param object $objResponse xajaxResponse * @param string $user_id UID пользователя * @param string $rec_type тип записи * @param array $aParams ID профессии * @return string */ function _admEditPortfChoiceParseForm(&$objResponse, $user_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/kwords.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $prof_id = $aParams['sProfId']; $prj = professions::GetProfDesc($user_id, $prof_id); $keys = kwords::getUserKeys($user_id, $prof_id); $user = new users(); $user->GetUserByUID($user_id); ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/portf_choise.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(document.getElementById('adm_edit_msg')) document.getElementById('adm_edit_msg').value = (\$('adm_edit_msg_source')? \$('adm_edit_msg_source').value : null);"; $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать уточнения к разделу в портфолио'); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script($sOnReady); $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');"); $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное'];"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PORTF_CHOISE . ');'); }
if ($prjs) { foreach ($prjs as $ikey => $prj) { if (!$prj['id']) { continue; } $prof_id = $prj['prof_id']; if ($prj['is_blocked'] == 't' && $user->uid != get_uid(false) && !hasPermissions('users')) { continue; } if ($prj['prof_id'] == professions::BEST_PROF_ID || $prj['prof_id'] == professions::CLIENTS_PROF_ID) { continue; } $links_keyword = array(); $links_keyword_hide = array(); $is_count_project = true; $user_keys = kwords::getUserKeys($user->uid, $prof_id); $bIsModer = kwords::isModerUserKeys($user->uid, $prof_id); $c = $kword_count = 0; if ($user_keys) { $kword_count = count($user_keys); foreach ($user_keys as $key) { $sKey = stripslashes($bIsModer ? $stop_words->replace($key, 'plain') : $key); if (++$c > kwords::MAX_KWORDS_PORTFOLIO) { $links_keyword_hide[] = urlencode($sKey) . ',,' . change_q_x($sKey, true, false); } else { $links_keyword[] = sprintf($html_keyword, urlencode($sKey), change_q_x($sKey, true, false)); } } } $curprof = $prj['prof_id']; if ($lastprof != $curprof) {
} if ($error_serv != '' || $error_db) { $error_serv = 'Данные не сохранены<br /><br />' . $error_serv; } if (!$error_serv) { $info_serv = "Изменения внесены"; header_location_exit("/users/{$login}"); } break; case "prof_change": // Ключевые слова !!! старые удаляются, новые добавляются не зависимо от результата обновления профессии UpdateProfDesc require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/kwords.php"; $kwords = new kwords(); if (count($_POST['prof_keys']) > 0) { foreach ($_POST['prof_keys'] as $prof_id => $keys) { $aOldIds = array_keys($kwords->getUserKeys($uid, $prof_id)); $ids = array(); $kwords->delUserKeys($uid, $prof_id); if (trim($keys)) { $ukey = explode(",", $keys); if (count($ukey) > 0) { $ids = $kwords->add($ukey, true); $kwords->addUserKeys($uid, $ids, $prof_id); } } $kwords->moderUserKeys($uid, $prof_id, $aOldIds, $ids, $uid, $keys); } } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; $obj_prof = new professions(); $error_prof .= $obj_prof->UpdateProfDesc($uid, $_POST['prof_id'], str_replace(" ", "", $_POST['prof_cost_from']), str_replace(" ", "", $_POST['prof_cost_to']), str_replace(" ", "", $_POST['prof_cost_hour']), str_replace(" ", "", $_POST['prof_cost_1000']), $_POST['prof_cost_type'], $_POST['prof_cost_type_hour'], $_POST['prof_time_type'], $_POST['prof_time_from'], $_POST['prof_time_to'], $_POST['prof_text'], $errorProfText);
/** * Создает xml файл webprof * * @return text $filename полный путь к файлу куда webdav должен сохранить получившийся xml */ public function webprofGenerateRss($filename) { global $DB, $GLOBALS; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/kwords.php"; function getProfessionName($id, $professions) { foreach ($professions as $profession) { if ($profession['id'] == $id) { return "{$profession['groupname']} / {$profession['profname']}"; } } } $spec = array(9, 37, 27, 86, 8, 164, 10); $users = self::getListForWebprof($spec); $professions = professions::GetAllProfessions(); $xml = ''; $host = str_replace(HTTP_PREFIX, '', $GLOBALS['host']); $HTTP_PREFIX = "https://"; $XMLData = ''; $xml .= '<?xml version="1.0" encoding="utf-8"?>' . "\n"; $xml .= '<!DOCTYPE source>' . "\n"; $xml .= '<source creation-time="' . date('Y-m-d H:i:s') . ' GMT+3" host="' . $host . '">' . "\n"; $xml .= ' <users>' . "\n"; if (is_array($users) && count($users)) { $XMLData = ''; foreach ($users as $user) { $frl_name = trim("{$user['uname']} {$user['usurname']}"); $frl_name = iconv('CP1251', 'UTF-8', htmlspecialchars($frl_name, ENT_QUOTES)); $frl_spec_main = iconv('CP1251', 'UTF-8', htmlspecialchars(getProfessionName($user['spec'], $professions), ENT_QUOTES)); switch ($user['status_type']) { case '0': $frl_status = 'free'; break; case '1': $frl_status = 'busy'; break; case '2': $frl_status = 'absent'; break; default: $frl_status = 'no status'; break; } $frl_spec_ext = ''; $spec_ext_ids = professions::GetProfsAddSpec($user['uid']); if ($spec_ext_ids) { foreach ($spec_ext_ids as $spec_id) { $frl_spec_ext .= "<spec>" . iconv('CP1251', 'UTF-8', htmlspecialchars(getProfessionName($spec_id, $professions), ENT_QUOTES)) . "</spec>"; } } $frl_tags = ''; $tags = kwords::getUserKeys($user['uid'], $user['spec']); $bIsModer = kwords::isModerUserKeys($user['uid'], $user['spec']); if ($tags && !$bIsModer) { foreach ($tags as $tag) { $frl_tags .= "<tag>" . iconv('CP1251', 'UTF-8', htmlspecialchars($tag, ENT_QUOTES)) . "</tag>"; } } $frl_cost_hour = ''; $frl_cost_month = ''; if ($user['cost_hour'] != 0) { $frl_cost_hour = (double) $user['cost_hour']; switch ($user['cost_type_hour']) { case '1': $frl_cost_hour .= " Euro"; break; case '2': $frl_cost_hour .= " Руб"; break; case '3': $frl_cost_hour .= " FM"; break; default: $frl_cost_hour .= " USD"; break; } $frl_cost_hour = iconv('CP1251', 'UTF-8', $frl_cost_hour); } if ($user['cost_month'] != 0) { $frl_cost_month = (double) $user['cost_month']; switch ($user['cost_type_month']) { case '1': $frl_cost_month .= " Euro"; break; case '2': $frl_cost_month .= " Руб"; break; case '3': $frl_cost_month .= " FM"; break; default: $frl_cost_month .= " USD"; break; } $frl_cost_month = iconv('CP1251', 'UTF-8', $frl_cost_month); } $XMLData .= "<user>"; $XMLData .= "<name>{$frl_name}</name>"; $XMLData .= "<spec_main>{$frl_spec_main}</spec_main>"; $XMLData .= "<spec_ext>{$frl_spec_ext}</spec_ext>"; $XMLData .= "<status>{$frl_status}</status>"; $XMLData .= "<rating>{$user['rating']}</rating>"; $XMLData .= "<cost_from_hour>{$frl_cost_hour}</cost_from_hour>"; $XMLData .= "<cost_from_month>{$frl_cost_month}</cost_from_month>"; $XMLData .= "<url>" . $HTTP_PREFIX . "{$host}/users/{$user['login']}</url>"; $XMLData .= "<tags>{$frl_tags}</tags>"; $XMLData .= "</user>\n"; } } $xml .= $XMLData . "\n"; $xml .= ' </users>' . "\n"; $xml .= '</source>' . "\n"; $file = new CFile(); return $file->putContent($filename, $xml); }
<?php $lastprof = -1; $j = 0; $k = -1; if ($prjs) { foreach ($prjs as $ikey => $prj) { if ((int) $prj['prof_id'] == 0 || !$is_pro && ($prj['prof_id'] == professions::BEST_PROF_ID || $prj['prof_id'] == professions::CLIENTS_PROF_ID)) { continue; } $old_error_reporting = error_reporting(); error_reporting(0); if (@$prj['prof_id'] > 0) { $prof[$prj['prof_id']] = $prj['prof_id']; } error_reporting($old_error_reporting); $user_keys = $kwords->getUserKeys(get_uid(), $prj['prof_id']); $curprof = $prj['prof_id']; if ($lastprof != $curprof) { $i = 1; ++$k; if ($lastprof != -1) { ?> </table> </div> <?php } if (isset($action) && $action == 'prof_change' && isset($saved_prof_id) && $prj['prof_id'] == $saved_prof_id && $error_prof != '') { $prj['cost_hour'] = $_POST['prof_cost_hour']; $prj['cost_1000'] = $_POST['prof_cost_1000']; $prj['cost_type_hour'] = $_POST['prof_cost_type_hour']; $prj['cost_type'] = $_POST['prof_cost_type'];
public function loadProfessionUserKeyword($uid, $prof_id) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/kwords.php"; $html_keyword_js = '<a href="/freelancers/?word=$1" class="inherit">$2</a>'; $html_keyword = preg_replace('/\\$\\d/', '%s', $html_keyword_js); $stop_words = new stop_words(hasPermissions('users')); $wkeys = kwords::getUserKeys($uid, $prof_id); $modkey = kwords::isModerUserKeys($uid, $prof_id); $kword_count = 0; $c = 0; if ($wkeys) { $links_keyword = array(); $links_keyword_hide = array(); $kword_count = count($wkeys); foreach ($wkeys as $key) { $sKey = stripslashes($modkey ? $stop_words->replace($key, 'plain') : $key); if (++$c > kwords::MAX_KWORDS_PORTFOLIO) { $links_keyword_hide[] = urlencode($sKey) . ',,' . change_q_x($sKey, true, false); } else { $links_keyword[] = sprintf($html_keyword, urlencode($sKey), change_q_x($sKey, true, false)); } } $wkeys['links_keyword'] = $links_keyword; $wkeys['links_keyword_hide'] = $links_keyword_hide; $wkeys['count'] = $kword_count; } return $wkeys; }
/** * Парсит HTML одного уточнения к разделам в портфолио * * @param array $aOne массив с данными комментария * @param int $status статус: 0 - не проверенно, 1 - утверждено, 2 - удалено * @param string $sKind опционально. тип записи * @param array $aStream данные о потоке * @param int $nCnt количество записей в потоке * @param int $nContentId идентификатор сущности из admin_contents (фактический из потоков, то есть со сборными) * @return string HTML */ function _parsePortfChoiceOne($aOne = array(), $status = 0, $sKind = '0', $aStream = array(), $nCnt = 0, $nContentId = 0) { global $stop_words, $sTeam; $sReturn = ''; $sMsgText = ''; if ($aOne['ucolumn'] == 'text') { $sMsgText = $status != 1 ? $stop_words->replace(xmloutofrangechars($aOne['new_val']), 'html', true, 'suspect') : xmloutofrangechars($aOne['new_val']); } else { $user_keys = kwords::getUserKeys($aOne['user_id'], $aOne['prof_id']); $aTmp = array(); if ($user_keys) { foreach ($user_keys as $key) { $aTmp[] = $status != 1 ? $stop_words->replace(change_q_x(stripslashes(xmloutofrangechars($key))), 'html', true, 'suspect') : change_q_x(stripslashes(xmloutofrangechars($key))); } $sMsgText = implode(', ', $aTmp); } } $sLink = $GLOBALS['host'] . '/users/' . $aOne['login']; $sColumn = $aOne['ucolumn'] == 'text' ? 'Уточнения к разделу' : 'Ключевые слова'; $sMsgText = reformat($sMsgText, 54, 0, 1); $aOne['is_sent'] = '0'; $aOne['context_code'] = '1'; $aOne['context_link'] = $sLink; $aOne['context_title'] = $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']'; $sJSParams = "{'sProfId': {$aOne['prof_id']}, 'change_id': '{$aOne['id']}', 'content_id': {$nContentId}, 'stream_id': '{$aStream['stream_id']}', 'content_cnt': {$nCnt}, 'status': {$status}, 'is_sent': '{$aOne['is_sent']}'}"; $sEditIcon = _parseEditIcon('admEditPortfChoice', $aOne['user_id'], $status, $sKind, $sJSParams); $sJSParams = "{'content_id': {$nContentId}, 'stream_id': '{$aStream['stream_id']}', 'content_cnt': {$nCnt}, 'status': {$status}, 'is_sent': '{$aOne['is_sent']}'}"; $sPRO = $aOne['moderator_status'] == -1 ? '<div class="b-post__txt b-post__txt_fontsize_11"><span style="color: #cc4642;">У пользователя был аккаунт PRO</span></div>' : ''; $sPro = $aOne['is_pro'] == 't' ? view_pro2($aOne['is_pro_test'] == 't' ? true : false) . ' ' : ''; $sReturn .= ' <div class="b-post b-post_bordtop_dfe3e4 b-post_padtop_15 b-post_marg_20_10" id="my_div_content_' . $aOne['content_id'] . '_' . $aOne['id'] . '_' . $sKind . '"> ' . _parseHidden($aOne, $sKind) . ' ' . _parseOkIcon($status, $aOne['content_id'], $aOne['id'], $sKind, $aOne['user_id']) . ' ' . _parsePostTime($status, $aOne['post_time']) . ' <div class="b-username b-username_padbot_5">' . ($aOne['is_team'] == 't' ? $sTeam : $sPro) . '<a class="b-username__link b-username__link_color_fd6c30 b-username__link_fontsize_11 b-username__link_bold" href="/users/' . $aOne['login'] . '/#' . $aOne['prof_id'] . '" target="_blank">' . $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']</a></div> ' . ($aOne['warn'] ? '<div class="b-username_padbot_5"><a onclick="parent.user_content.getUserWarns(' . $aOne['user_id'] . ');" href="javascript:void(0);" class="notice">Предупреждения: <span id="warn_' . $aOne['user_id'] . '_' . $aOne['content_id'] . '_' . $aOne['id'] . '">' . intval($aOne['warn']) . '</span></a></div>' : '<div class="b-username_padbot_5 user-notice">Предупреждений нет</div>') . ' ' . $sPRO . ' ' . _parseMass($aOne, $status, $sKind) . ' <div class="b-post__txt b-post__txt_fontsize_15"><span class="b-post__bold">' . $sColumn . '</span>: ' . $sMsgText . '</div> ' . _parseDelIcons($aOne, 'user_id', $status, $sKind, $sJSParams, $sEditIcon) . ' </div>'; return $sReturn; }