Exemple #1
0
    /**
     * Отправляет уведомления об изменении админом сообщения в личке ("Мои контакты").
     * 
     * @param int    $from_uid UID отправителя
     * @param int    $prof_id  ID профессии
     * @param string $reason   причина редактирования
     *
     * @return bool true - успех, false - провал
     */
    public function portfChoiceModifiedNotification($from_uid = 0, $prof_id = 0, $reason = '')
    {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
        $from = new users();
        $from->GetUserByUID($from_uid);
        $prj = professions::GetProfDesc($from_uid, $prof_id);
        $sLink = getAbsUrl('/users/' . $from->login . '/setup/#prof' . $prof_id);
        $sRason = $reason ? "\n\nПричина: " . $reason : '';
        $sFeedback = str_replace('//', '/{службу поддержки}/', $GLOBALS['host'] . '/about/feedback/');
        $message = 'Здравствуйте, ' . $from->uname . ' ' . $from->usurname . '

Модераторы нашего ресурса отредактировали ваши уточнения к разделу «' . $prj['profname'] . '»

' . $sLink . $sRason . '

Вы можете обратиться в ' . $sFeedback . '.

Надеемся на понимание, Команда Free-lance.ru
';
        self::Add(users::GetUid($err, 'admin'), $from->login, $message, '', 1);
    }
/**
 * Отдает 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 . ');');
}
function editProfession($uid = '', $params = '')
{
    $objResponse =& new xajaxResponse();
    $uid = intval($uid);
    if ($uid != get_uid(false) || !get_uid(false)) {
        return $objResponse;
    }
    $params = stripslashes($params);
    parse_str($params, $params);
    $params['portf_text'] = _htmlentities($params['portf_text'], 'UTF-8');
    $params['old_portf_text'] = _htmlentities($params['old_portf_text'], 'UTF-8');
    $params['user_keys'] = _htmlentities($params['user_keys'], 'UTF-8');
    $params = uploader::encodeCharset($params, array('utf-8', 'cp1251'));
    $prof_id = intval($params['prof_id']);
    $profession = new professions();
    $profession->updateUserKeywordsProfessions($uid, $prof_id, $params['user_keys']);
    $profession->updateProfessionUser($uid, $prof_id, $params);
    if (!empty($profession->errors)) {
        $errors = json_encode(array_map('win2utf', $profession->errors));
        $objResponse->script("portfolio.viewError({$errors}, 'profession_edit_popup')");
    } else {
        $stop_words = new stop_words(hasPermissions('users'));
        $user = new users();
        $user->login = $_SESSION['login'];
        $user->uid = $_SESSION['uid'];
        $user->is_pro = is_pro() ? 't' : 'f';
        $is_owner = $uid == $_SESSION['uid'];
        $success = true;
        $pinfo = current(portfolio::getPortfolioCategory($prof_id));
        $pinfo['mainprofname'] = $pinfo['group_name'];
        $pinfo['profname'] = $pinfo['prof_name'];
        $pinfo['gr_prevs'] = $pinfo['show_preview'];
        $pinfo = $profession->prepareCostText($pinfo, $stop_words);
        $ukeys[$prof_id] = $profession->loadProfessionUserKeyword($user->uid, $prof_id);
        if ($params['position'] == 2) {
            $afterProfID = (int) $params['position_category_db_id'];
            $afterProf = current(portfolio::getPortfolioCategory($afterProfID));
            $newPosition = $afterProf['ordering'] + 1;
            if ($newPosition != $pinfo['ordering']) {
                if ($newPosition > $pinfo['ordering']) {
                    $newPosition--;
                }
                $profession->changePositionProfessionsUser($newPosition, $uid, $prof_id);
                $change_position = true;
            }
        } else {
            if ($params['position'] != $pinfo['ordering']) {
                if (!is_pro()) {
                    // Если пользователь не ПРо у него скрыты два раздела которые существуют они стоят на первых позициях всегда, и поэтому нельзя ставить разделу 1 позицию
                    // позицию надо ставить исходя из позиций этих скрытых разделов.
                    $fpos = $profession->GetProfDesc($uid, professions::BEST_PROF_ID);
                    $spos = $profession->GetProfDesc($uid, professions::CLIENTS_PROF_ID);
                    if ($fpos['ordering'] == $spos['ordering']) {
                        // Оба на первой позиции
                        $first = 2;
                    } else {
                        // Позиции корректны
                        $first = 3;
                    }
                }
                $afterProfID = 0;
                $profession->changePositionProfessionsUser(is_pro() ? 1 : $first, $uid, $prof_id);
                $change_position = true;
                $is_first = true;
            }
        }
        ob_start();
        include_once $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.profession.item.php';
        $sHtml = ob_get_contents();
        ob_end_clean();
        if ($pinfo['show_preview'] == 't' && $params['on_preview_default'] == '0' || $pinfo['show_preview'] == 'f' && $params['on_preview_default'] == '1') {
            // Меняем вид работ
            $portfolio = new portfolio();
            $works = $portfolio->GetPortf($user->uid, $prof_id, true);
            if (!empty($works)) {
                $result = portfolio::prepareDataPortfolio($works, $uid, $stop_words, true);
                extract($result);
                $work[0]['id'] = 100;
                ob_start();
                include_once $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.portfolio.works.php';
                $sWorks = ob_get_contents();
                ob_end_clean();
            } else {
                $work[0]['id'] = null;
                $pp_noblocks[$prof_id] = array();
                ob_start();
                include $_SERVER['DOCUMENT_ROOT'] . '/user/tpl.portfolio.works.php';
                $sWorks = ob_get_contents();
                ob_end_clean();
            }
        }
        $objResponse->assign("profession_{$prof_id}", 'innerHTML', $sHtml);
        if ($sWorks != '') {
            $objResponse->assign("prof_works_{$prof_id}", 'innerHTML', $sWorks);
        }
        $objResponse->script("\$('profession_edit_popup').dispose(); ");
        if (!empty($change_position)) {
            $action = $is_first ? 'before' : 'after';
            $objResponse->script("portfolio.setPosition({$prof_id}, {$afterProfID}, '{$action}')");
        }
        $objResponse->script("JSScroll(\$('professions_works_{$prof_id}'));");
    }
    return $objResponse;
}