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;
}
Exemple #2
0
 /**
  * Рассортировываем портфолио.
  * 
  * @param array   $prjs       Работы портфолио @see self::GetPortf();
  * @param integer $uid        Ид пользователя
  * @param object  $stop_words @see class new stop_words()
  * @param integer $one_select Костыль для подгрузки работ в определенную категорию профессии, создает переменную $prjs которая необходима в шаблоне 
  */
 public function prepareDataPortfolio($works, $uid, $stop_words, $one_select = false)
 {
     $i = $block = 0;
     $size_block = 3;
     $is_owner = $uid == get_uid(false);
     // Рассортировываем портфолио
     foreach ($works as $prj) {
         if ($prj['is_blocked'] == 't' && $uid != get_uid(false) && !hasPermissions('users')) {
             continue;
         }
         if ($i >= $size_block || $prj['prof_id'] != $old_prof) {
             ++$block;
             $i = 0;
             //$i = $is_owner && !$add_work_block[$prj['prof_id']] ? 1 : 0;
             //$add_work_block[$prj['prof_id']] = true;
         }
         if ($one_select) {
             $prjs[$block][] = $prj;
         }
         $pp[$prj['prof_id']][$block][] = $prj;
         $pp_noblocks[$prj['prof_id']][] = $prj;
         $sName = $prj['name'];
         $pt[$prj['prof_id']][$block][$prj['id']] = $sName;
         if (!isset($pname[$prj['prof_id']])) {
             $prj = professions::prepareCostText($prj, $stop_words);
             $pname[$prj['prof_id']] = $prj;
         }
         ++$i;
         $old_prof = $prj['prof_id'];
         // Ключевые слова
         if (empty($ukeys[$prj['prof_id']])) {
             $ukeys[$prj['prof_id']] = professions::loadProfessionUserKeyword($uid, $prj['prof_id']);
         }
     }
     $result = array('add_work_block' => $add_work_block, 'pp' => $pp, 'pp_noblocks' => $pp_noblocks, 'pt' => $pt, 'pname' => $pname, 'ukeys' => $ukeys);
     if ($one_select) {
         $result['prjs'] = $prjs;
     }
     return $result;
 }