/**
 * Сохранение работы в портфолио
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditPortfolioSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/portfolio.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    $max_time_value = 100;
    //стоимость работы из портфолио
    $max_portf_cost[0] = 100000;
    // usd
    $max_portf_cost[1] = 100000;
    // euro
    $max_portf_cost[2] = 5000000;
    // rur
    $max_portf_cost[3] = 100000;
    // fm
    $user = new users();
    $user->GetUserByUID($aForm['user_id']);
    // инициализация
    $aPortf = portfolio::GetPortfById($rec_id);
    $alert = array();
    $maxlen = $aForm['is_video'] ? 80 : 120;
    $name = substr($aForm['pname'], 0, $maxlen);
    $name = change_q_x($name, false, true, '', false, false);
    $name = $name ? $name : '';
    $descr = substr(change_q_new(trim(stripslashes($aForm['descr']))), 0, 1500);
    $prof = intval($aForm['prof']);
    $new_prof = intval($aForm['new_prof']);
    $prj_id = $rec_id;
    $cost = intval(str_replace(' ', '', $aForm['pcost']) * 100) / 100;
    $cost_type = intval($aForm['pcosttype']);
    $time_value = intval(trim($aForm['ptime']));
    $time_type = intval($aForm['ptimeei']);
    $is_video = $aForm['is_video'] ? 't' : 'f';
    $video_link = $aForm['is_video'] ? stripslashes(trim($aForm['v_video_link'])) : '';
    $link = $aForm['is_video'] ? '' : addhttp(trim(substr(change_q_x($aForm['link'], true), 0, 150)));
    $link = $link ? $link : '';
    $make_position = $aForm['make_position'];
    $make_position_num = trim($aForm['make_position_num']);
    $update_prev = intval($aForm['upd_prev']);
    $prev_type = intval($aForm['prev_type']);
    $del_prev = intval($aForm['del_prev']);
    $new_position = NULL;
    $pict = substr(change_q_new(trim(stripslashes($aForm['pict']))), 0, 1500);
    $prev_pict = substr(change_q_new(trim(stripslashes($aForm['prev_pict']))), 0, 1500);
    if ($new_prof != $prof) {
        $new_position = 0;
    }
    if (isset($make_position)) {
        switch ($make_position) {
            case 'first':
                $new_position = 1;
                break;
            case 'last':
                $new_position = 0;
                break;
            case 'num':
            default:
                $new_position = intval($make_position_num);
                $new_position = $new_position <= 0 ? 1 : $new_position;
                break;
        }
    }
    // валидация (нумерация алертов как в первоначальном варианте радактирования и новый нулевой)
    if (!$name || strlen(trim(stripslashes($aForm['pname']))) > 80) {
        $alert[1] = 'Поле заполнено некорректно';
    }
    if ($link != '' && !url_validate($link, true)) {
        $alert[6] = 'Поле заполнено некорректно';
    }
    if ($is_video == 't') {
        $v_video_link = video_validate($video_link);
        if (!$v_video_link) {
            $alert[206] = "Поле заполнено некорректно";
        } else {
            $video_link = preg_replace("/^http:\\/\\//", '', $v_video_link);
        }
    }
    if ($cost < 0 || $cost > $max_portf_cost[$cost_type]) {
        $alert[4] = 'Стоимость должна быть в пределе от 0 ' . view_range_cost2(0, $max_portf_cost[$cost_type], '', '', false, $cost_type) . ($cost_type != 2 ? '.' : '');
    }
    if ($time_value < 0 || $time_value > $max_time_value) {
        $alert[5] = 'Временные затраты должны быть в пределе от 0 до ' . $max_time_value . '.';
    }
    if ($new_prof != $prof && ($new_prof == professions::CLIENTS_PROF_ID || $new_prof == professions::BEST_PROF_ID) && portfolio::CountAll($aForm['user_id'], $new_prof, true) >= portfolio::MAX_BEST_WORKS) {
        $alert[0] = 'Превышено количество работ в этом разделе';
    }
    // сохраняем
    if (!$alert) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
        $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']);
        $portf = new portfolio();
        $portf->EditPortf($aForm['user_id'], $name, $img, $sm_img, $link, $descr, $new_prof, $cost, $cost_type, $time_type, $time_value, $prev_type, $prj_id, $file_error, $preview_error, $new_position, 0, $video_link, $update_prev, $_SESSION['uid'], $pict, $prev_pict, $user->login, $sReason);
        if ($del_prev) {
            $portf->DelPict($user->login, $prj_id, 0);
        }
        messages::portfolioModifiedNotification($aPortf, $user, $sReason);
        $content_id = user_content::MODER_PORTFOLIO;
        _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm);
    } else {
        _setErrors($objResponse, $alert, array(0 => 'prof', 1 => 'pname', 2 => 'descr', 4 => 'pcost', 5 => 'ptime', 6 => 'link', 206 => 'video_link'), $sDrawFunc);
    }
}
Example #2
0
     $v_video_link = video_validate($video_link);
     if (!$v_video_link) {
         $error_flag = 1;
         $alert[206] = "Поле заполнено некорректно";
     } else {
         $video_link = preg_replace("/^http:\\/\\//", "", $v_video_link);
     }
 }
 if ($cost < 0 || $cost > $max_portf_cost[$cost_type]) {
     $error_flag = 1;
     if ($is_video == 'f') {
         $enum = 4;
     } else {
         $enum = 204;
     }
     $alert[$enum] = 'Поле заполнено некорректно. Стоимость должна быть в пределе от 0 ' . view_range_cost2(0, $max_portf_cost[$cost_type], '', '', false, $cost_type) . ($cost_type != 2 ? '.' : '');
 }
 if ($time_value < 0 || $time_value > $max_time_value) {
     $error_flag = 1;
     if ($is_video == 'f') {
         $enum = 5;
     } else {
         $enum = 205;
     }
     $alert[$enum] = 'Поле заполнено некорректно. Временные затраты должны быть в пределе от 0 до ' . $max_time_value . '.';
 }
 if ($sm_img->size > 102400) {
     if ($is_video == 'f') {
         $enum = 7;
     } else {
         $enum = 207;
Example #3
0
 /**
  * Обработка данных в шаге порфтоило
  * 
  * @return string 
  */
 public function actionProcessingPortfolio()
 {
     $error = array();
     $type = __paramInit('int', null, 'spec_column_id');
     $spec = __paramInit('int', null, 'spec_db_id');
     $spec_name = __paramInit('string', null, 'spec');
     if ($type == 0) {
         $error['spec'] = 'Вы должны выбрать свою специализацию';
     } else {
         $data['spec_orig'] = professions::GetProfessionOrigin($spec);
     }
     $data['spec'] = $spec;
     $data['exp'] = __paramInit('int', null, 'exp');
     $data['cost_hour'] = __paramInit('float', null, 'cost_hour');
     $data['cost_type_hour'] = __paramInit('int', null, 'currency_hour_db_id');
     $curr_hour_name = __paramInit('string', null, 'currency_hour');
     $data['cost_month'] = __paramInit('float', null, 'cost_month');
     $data['cost_type_month'] = __paramInit('int', null, 'currency_month_db_id');
     $curr_month_name = __paramInit('string', null, 'currency_month');
     $data['resume'] = __paramInit('int', null, 'resume_id');
     $data['info'] = stripslashes(__paramInit('string', null, 'info', ''));
     if (strlen($data['info']) > 4000) {
         $error['info'] = 'Исчерпан лимит символов для этого поля (4000 символов)';
     }
     $data['in_office'] = $_POST['in_office'] == 1 ? 1 : 0;
     if ($data['resume'] > 0) {
         $resume = new CFile($data['resume']);
     }
     if ($data['exp'] < 0 || $data['exp'] > step_freelancer::MAX_YEAR_VALUE) {
         $error['exp'] = 'Недопустимое значение. Опыт работы должен быть в пределе от 0 до ' . step_freelancer::MAX_YEAR_VALUE . '.';
     }
     if ($data['cost_hour'] < 0 || $data['cost_hour'] > $this->MAX_COST_HOUR[$data['cost_type_hour']]) {
         $error['cost_hour'] = 'Недопустимое значение. Стоимость часа работы должна быть в пределе ' . view_range_cost2(0, $this->MAX_COST_HOUR[$data['cost_type_hour']], '', '', false, $data['cost_type_hour'] . '.');
     }
     if ($data['cost_month'] < 0 || $data['cost_month'] > $this->MAX_COST_MONTH[$data['cost_type_month']]) {
         $error['cost_month'] = 'Недопустимое значение. Стоимость месяца работы должна быть в пределе ' . view_range_cost2(0, $this->MAX_COST_MONTH[$data['cost_type_month']], '', '', false, $data['cost_type_month']) . '.';
     }
     if (count($error) <= 0) {
         $insert['portfolio'] = serialize($data);
         $this->parent->saveFieldsInfo($insert);
     }
     // Обрабатываем порфтолио
     if (is_array($_POST['name'])) {
         foreach ($_POST['name'] as $k => $value) {
             $value = __paramValue('string', stripslashes($value));
             $descr = __paramValue('string', stripslashes($_POST['descr'][$k]));
             $id = __paramValue('int', $_POST['id'][$k]);
             // id работы, если он есть
             $link = __paramValue('string', stripslashes($_POST['link'][$k]));
             $link = preg_replace("/^http:\\/\\//", "", trim($link));
             if ($value == '' && $descr == '' && $link == '' && empty($_POST['pict_id'][$k])) {
                 continue;
             }
             if (is_empty_html($value)) {
                 $error['portf' . $k]['name'] = "Введите название работы";
             }
             if (strlen($descr) > 1500) {
                 $error['descr' . $k]['name'] = "Исчерпан лимит символов для этого поля (1500 символов)";
             }
             if ($link != '' && !url_validate($link)) {
                 $error['portf' . $k]['link'] = "Поле заполнено некорректно";
             }
             $portf_insert[] = array("name" => $value, "pict_id" => $_POST['pict_id'][$k] > 0 ? intval($_POST['pict_id'][$k]) : null, "link" => $link, "prof_id" => $spec, "wiz_uid" => $this->getWizardUserID(), "descr" => $descr, "id" => $id);
         }
     }
     if (count($error) <= 0) {
         if (count($portf_insert) > 0) {
             $ids = $this->createWorks($portf_insert);
         }
         $this->parent->setCompliteStep(true);
         $this->parent->setNextStep($this->parent->getPosition() + 1);
         header("Location: /wizard/registration/");
         exit;
     }
     $this->request = $data;
     $this->portf_insert = $portf_insert;
     return $error;
 }
                echo $value['id'];
                ?>
" class="b-layout b-layout_padleft_60">
                        <?php 
                if ($project['user_id'] == $_SESSION['uid'] || $_SESSION['uid'] == $value['user_id'] || hasPermissions('projects')) {
                    ?>
                           <?php 
                    $txt_time = view_range_time($value['time_from'], $value['time_to'], $value['time_type']);
                    ?>
                                                    
                           <div class="b-layout__txt"><?php 
                    echo $txt_time;
                    ?>
</div>
                           <?php 
                    $txt_cost = view_range_cost2($value['cost_from'], $value['cost_to'], '', '', false, $value['cost_type']);
                    if ($txt_cost != '') {
                        ?>
                              <div class="b-layout__txt"><?php 
                        echo $txt_cost;
                        ?>
</div>
                           <?php 
                    }
                    ?>
                        <?php 
                }
                //if
                ?>
							
                         <?php 
Example #5
0
 /**
  * Формирование текстового пояснения к фильтру.
  *
  * @param array $filter фильтр
  * @param boolean $filter_apply применен фильтр или нет
  * @return string текстовое пояснение к фильтру
  */
 function GetDescription($filter, $filter_apply)
 {
     $ret = '';
     if ($filter_apply) {
         if (isset($filter['cost_from']) && !empty($filter['cost_from']) || isset($filter['cost_to']) && !empty($filter['cost_to'])) {
             $ret .= ($ret == '' ? '' : ' ') . 'стоимость работы ';
             $ret .= view_range_cost2($filter['cost_from'], $filter['cost_to'], '', '', false, $filter['cost_type']);
             /*
               	    if (isset($filter['cost_from']) && !empty($filter['cost_from']))
               	    {
               	      $ret .= (($ret =='') ? '' : ' ') . 'от $' . $filter['cost_from'];
               	    }
               	    if (isset($filter['cost_to']) && !empty($filter['cost_to']))
               	    {
               	      $ret .= (($ret =='') ? '' : ' ') . 'до $' . $filter['cost_to'];
               	    }
             */
         }
     } else {
         $ret = 'отключен';
     }
     return $ret;
 }
Example #6
0
 /**
  * Сохраняет стоимость и срок выполнения работы.
  *
  * @param integer $uid id пользователя
  * @param integer $proj_id id работы
  * @param real $cost стоимость работы
  * @param integer $time_type тип срока (0 - часы, 1 - дни, 2 - месяцы)
  * @param integer $time_value срок выполнения работы (в единицах $time_type)
  *
  * @return string текст ошибки или пустая строка
  */
 public function ChangePortfPrice($uid, $proj_id, $cost, $cost_type, $time_type, $time_value)
 {
     global $DB;
     global $portf_cost;
     $uid = intval($uid);
     $proj_id = intval($proj_id);
     $cost = intval($cost * 100) / 100;
     $time_type = intval($time_type);
     $time_value = intval($time_value);
     /**
      * Проверка.
      */
     $error = '';
     if ($cost < 0 || $cost > $portf_cost[$cost_type]) {
         $error .= ($error == '' ? '' : '<br />') . 'Недопустимое значение. Стоимость должна быть в пределе от 0 ' . view_range_cost2(0, $portf_cost[$cost_type], '', '', false, $cost_type) . '.';
     }
     if ($time_value < 0 || $time_value > PORTF_TIME) {
         $error .= ($error == '' ? '' : '<br />') . 'Недопустимое значение. Срок должен быть в пределе от 0 до ' . PORTF_TIME . '.';
     }
     if ($uid && $proj_id && $error == '') {
         $sql = "UPDATE portfolio SET cost = {$cost}, cost_type='{$cost_type}', time_type = {$time_type}, time_value = {$time_value} WHERE id=?i AND user_id=?i";
         $DB->query($sql, $proj_id, $uid);
         $error = $DB->error;
         if ($error_db != '') {
             $error .= ($error_serv == '' ? '' : '<br />') . 'Ошибка сохранения в БД.';
         }
     }
     if ($error != '') {
         $error = 'Данные не сохранены<br /><br />' . $error;
     }
     return $error;
 }