/**
  * Обработка информации по шагу портфолио 
  */
 public function actionPortfolio()
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php";
     $category = intval($_COOKIE['your_categories']);
     $spec = intval($_COOKIE['your_subcategories']);
     if ($category > 0) {
         $category_name = professions::GetGroupName($category);
     } else {
         $category = 0;
     }
     if ($spec > 0) {
         $subcategory_name = professions::GetProfName($spec);
     } else {
         $spec = 0;
     }
     $action = __paramInit('string', null, 'action');
     if ($action == 'upd_portf') {
         $error = $this->actionProcessingPortfolio();
         if ($error) {
             $data = $this->request;
             $portf_insert = $this->portf_insert;
             /*if($data['resume'] > 0) {
                   $resume = new CFile($data['resume']);
               }*/
         }
     } else {
         // запись в базе для текущего портфолио
         $field = $this->parent->getFieldsUser();
         // все данные портфолио
         $data = unserialize($field['portfolio']);
         // сохраненные работы для текущего портфолио
         $portf_insert = $this->getWorks();
     }
     if ($data['resume'] > 0) {
         $resume = new CFile($data['resume']);
     }
     $curr_hour_name = $this->CURRENCY_TYPE[$data['cost_type_hour']];
     $curr_month_name = $this->CURRENCY_TYPE[$data['cost_type_month']];
     // подготовка специализации для вывода в шаблон
     $spec = $data['spec'];
     $specString = professions::GetProfNameWP($spec, '/', null, false);
     list($category_name, $subcategory_name) = explode('/', $specString);
     $count_portf = $this->getCountWorks();
     $answersExists = $this->_getCountAnswers();
     include $_SERVER['DOCUMENT_ROOT'] . "/wizard/registration/steps/tpl.step.portfolio.php";
 }
Exemple #2
0
 /**
  * Взять все данные по проекту из истории
  *
  * @param integer $prj_id Ид проекта
  * @return array
  */
 function GetPrjHistory($prj_id)
 {
     global $DB;
     $sql = "SELECT p.*, city.city_name, country.country_name \n                FROM projects_history AS p \n                LEFT JOIN city ON city.id = p.city\n                LEFT JOIN country ON country.id = p.country\n                WHERE p.id=?i";
     $project = $DB->row($sql, $prj_id);
     if ($project) {
         $project['spec_txt'] = '';
         if ($project['specs']) {
             $sp = array();
             $spec_t = preg_split("/,/", $project['specs']);
             foreach ($spec_t as $spec_t_item) {
                 $spec_t_i = preg_split("/\\|/", $spec_t_item);
                 array_push($sp, array('category_id' => $spec_t_i[0], 'subcategory_id' => $spec_t_i[1]));
             }
             $parts = array();
             foreach ($sp as $item) {
                 $name = '';
                 if ($item['subcategory_id']) {
                     $name = professions::GetProfNameWP($item['subcategory_id'], ' / ');
                 } elseif ($item['category_id']) {
                     $name = professions::GetGroupName($item['category_id']);
                 } else {
                     continue;
                 }
                 $parts[] = $name;
             }
             $project['spec_txt'] = implode('  ', $parts);
         }
         if ($project['files']) {
             $files = preg_split("/,/", $project['files']);
             $project['attach'] = array();
             $month = date('Ym');
             foreach ($files as $file) {
                 array_push($project['attach'], array('name' => $file, 'path' => 'projects/upload/' . $month));
             }
         }
     }
     return $project;
 }
Exemple #3
0
 /**
  * достает профессии из sbr_to_spec и помещает их в $this->data['professions'].
  */
 public function retrieveProfession()
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
     global $DB;
     if (!$this->data['id']) {
         return;
     }
     $sql = 'SELECT category_id, subcategory_id FROM sbr_to_spec WHERE sbr_id = ?i ORDER BY id DESC';
     $res = $DB->rows($sql, $this->data['id']);
     $this->data['professions'] = array();
     if (is_array($res)) {
         foreach ($res as $prof) {
             $prof['prof_name'] = $prof['subcategory_id'] ? professions::GetProfNameWP($prof['subcategory_id'], ': ', '', false) : professions::GetGroupName($prof['category_id']);
             if ($prof['subcategory_id']) {
                 $prof['default'] = $prof['subcategory_id'];
                 $prof['default_column'] = 1;
             } else {
                 $prof['default'] = $prof['category_id'];
                 $prof['default_column'] = 0;
             }
             $this->data['professions'][] = $prof;
         }
     } else {
         $this->data['professions'] = array();
     }
 }
Exemple #4
0
// Все изменения $tmpPrj->_project переносим в переменную.
$project = $tmpPrj->getProject();
if (trim($project['contacts']) != '') {
    $contacts = unserialize($project['contacts']) ? unserialize($project['contacts']) : $contacts;
}
if ($project['country']) {
    $location = country::GetCountryName($project['country']);
    if ($project['city']) {
        $location .= ': ' . city::GetCityName($project['city']);
    }
    $project['location'] = $location;
}
$prj_categories = $tmpPrj->getCategories();
if ($prj_categories) {
    foreach ($prj_categories as $ind => $category) {
        $prj_categories[$ind]['prof_name'] = $category['subcategory_id'] ? professions::GetProfNameWP($category['subcategory_id'], ': ', '', false) : professions::GetGroupName($category['category_id']);
    }
}
if ($step > 0) {
    $tmpPrj->fix();
}
if (!$additional_header) {
    $additional_header = '';
}
//$additional_header .= '<script type="text/javascript" src="/scripts/tawl_bem.js"></script>';
$js_file[] = 'tawl_bem.js';
if ($content == 'content2.php') {
    //$additional_header .= '<script type="text/javascript" src="/css/block/b-shadow/b-shadow.js"></script>';
    $js_file[] = '/css/block/b-shadow/b-shadow.js';
} else {
    if ($content == 'new/tpl.step_1.php') {
Exemple #5
0
 /**
  * Информация о заказе в HTML по id в account_operations: логин, имя пользователя, где размещено, время действия.
  * @param   integer   $bill_id   id операции в account_operations
  * @param   integer   $uid       uid пользователя
  * @return  string               данные о заказе в виде HTML
  */
 public function GetOrderInfo($bill_id, $uid)
 {
     include_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
     global $DB;
     $sql = "SELECT * FROM mass_sending WHERE account_op_id = ? LIMIT 1";
     $row = $DB->row($sql, $bill_id);
     $out = "Для " . $row['all_count'] . " " . getTermination($row['all_count'], array('пользователя', 'пользователей', 'пользователей'));
     $sql = "SELECT * FROM mass_sending_profs WHERE mass_sending_id  = ?";
     $row2 = $DB->rows($sql, $row['id']);
     if (is_array($row2) && count($row2)) {
         $sect = array();
         foreach ($row2 as $ms) {
             if ((int) $ms['prof_id']) {
                 $sect[] = professions::GetProfNameWP((int) $ms['prof_id']);
             } else {
                 $sect[] = professions::GetGroupName((int) $ms['group_id']) . "/Все разделы";
                 //'Все разделы';
             }
         }
         $out .= ', ' . implode(', ', $sect);
     }
     return $out;
 }
Exemple #6
0
 /**
  * Обработка информации шага проекты.
  */
 public function actionProjects()
 {
     $prj_id = $_SESSION['view_wizard_project'];
     if (!$prj_id) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php';
         $prj_exrates = project_exrates::GetAll();
         $categories = professions::GetAllGroupsLite();
         $professions = professions::GetAllProfessions();
         array_group($professions, 'groupid');
         $professions[0] = array();
         $addedPrc = is_pro() ? 0 : new_projects::PRICE_ADDED;
         $colorPrc = new_projects::PRICE_COLOR * ($addedPrc > 0 ? 1 : 0);
         $boldPrc = new_projects::PRICE_BOLD + $addedPrc;
         $logoPrc = new_projects::PRICE_LOGO + $addedPrc;
         $cTopPrice = new_projects::PRICE_CONTEST_TOP1DAY + $addedPrc;
         $pTopPrice = new_projects::PRICE_TOP1DAY + $addedPrc;
         $action = __paramInit('string', 'action', 'action', null);
         $attachedfiles_session = __paramInit('string', 'attachedfiles_session', 'attachedfiles_session', false);
         // проверяем есть ли уже созданый проект
         $projects = $this->getCreatedProjects();
         $existPrjID = count($projects) > 0 ? $projects[0][id] : null;
         // выводим ранее сохраненный проект
         if ($action != 'create_project' && $existPrjID) {
             $data = $projects[0];
             list($category, $subcategory) = explode('|', $data['categories']);
             $currency_name = $this->CURRENCY_TYPE[$data['currency']];
             $priceby_name = $this->PRICEBY_TYPE[$data['priceby']];
             $data['pro_only'] = $data['pro_only'] === 't';
             $price = $data['payed'];
             $option = array();
             $option['top'] = $data['top_count'] > 0;
             $option['top_count'] = $data['top_count'];
             $option['color'] = $data['is_color'] === 't';
             $option['bold'] = $data['is_bold'] === 't';
             $option['logo'] = $data['logo_id'] > 0;
         } elseif ($action == 'create_project') {
             // сохраняем новый проект или изменяем старый
             $in_office = __paramInit('int', null, 'in_office', 0);
             $type = __paramInit('string', null, 'kind');
             if ($type == 'contest') {
                 $data['kind'] = 7;
                 $data['end_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'end_date_eng_format', 0)));
                 $data['win_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'win_date_eng_format', 0)));
             } elseif ($in_office == 1) {
                 $location = __paramInit('integer', null, 'location_column_id');
                 if ($location == 1) {
                     $data['city'] = __paramInit('integer', null, 'location_db_id');
                     $data['country'] = country::getCountryByCityId($data['city']);
                 } else {
                     $data['country'] = __paramInit('integer', null, 'location_db_id');
                 }
                 $data['kind'] = 4;
             } else {
                 $data['kind'] = 1;
             }
             $data['name'] = __paramInit('string', null, 'name');
             $data['descr'] = __paramInit('string', null, 'descr');
             $category = __paramInit('int', null, 'r_category');
             $subcategory = __paramInit('int', null, 'r_subcategory');
             $agreement = __paramInit('int', null, 'agreement', 0);
             $data['pro_only'] = __paramInit('int', null, 'pro_only', 0) == 1 ? true : false;
             if ($agreement != 1) {
                 $data['cost'] = __paramInit('int', null, 'cost', 0);
                 $data['priceby'] = __paramInit('int', null, 'r_priceby', 0);
                 $data['currency'] = __paramInit('int', null, 'r_currency', 0);
                 $data['budget_type'] = __paramInit('int', null, 'budget_type', 0);
             }
             if (is_empty_html($data['descr'])) {
                 $error['descr'] = 'Поле не заполнено';
             }
             if (is_empty_html($data['name'])) {
                 $error['name'] = 'Поле не заполнено';
             }
             // проверяем длину необработанной строки, а иначе спецсимволы считаются как несколько символов
             if (strlen(stripslashes($_POST['name'])) > 60) {
                 $error['name'] = 'Превышен лимит - 60 символов';
             }
             if (!$category) {
                 $error['category'] = 'Не выбран раздел';
             } elseif ($subcategory) {
                 $data['categories'] = "{$category}|{$subcategory}";
             } else {
                 $data['categories'] = $category;
             }
             if ($data['cost'] < 0) {
                 $error['cost'] = 'Введите положительную сумму';
             }
             if ($data['cost'] > 999999) {
                 $error['cost'] = 'Слишком большая сумма';
             }
             if ($data['cost'] > 0 && ($data['currency'] < 0 || $data['currency'] > 3)) {
                 $error['currency'] = 'Валюта не определена';
             }
             if ($data['cost'] > 0 && ($data['priceby'] < 1 || $data['priceby'] > 4)) {
                 $error['priceby'] = 'Вид бюджета не определен';
             }
             $descr_limit = projects::LIMIT_DESCR;
             if (strlen_real($data['descr']) > $descr_limit) {
                 $error['descr'] = "Исчерпан лимит символов ({$descr_limit})";
             }
             if ($data['kind'] == 7) {
                 if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) {
                     $error['end_date'] = 'Неправильная дата';
                 }
                 if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) {
                     $error['win_date'] = 'Неправильная дата';
                 }
                 if (!$error['end_date'] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) {
                     $error['end_date'] = 'Дата окончания конкурса не может находиться  в прошлом';
                 }
                 if (!$error['win_date'] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) {
                     $error['win_date'] = 'Дата определения победителя должна быть больше даты окончания конкурса';
                 }
             }
             $option['top'] = __paramInit('int', null, 'option_top', 0);
             $option['top_count'] = __paramInit('int', null, 'option_top_count', 0);
             $option['color'] = __paramInit('int', null, 'option_color', 0);
             $option['bold'] = __paramInit('int', null, 'option_bold', 0);
             $option['logo'] = __paramInit('int', null, 'option_logo', 0);
             // логотип
             if ($option['logo'] == 1) {
                 $data['logo_link'] = str_replace('http://', '', __paramInit('string', null, 'logo_link', null));
                 $data['logo_id'] = __paramInit('int', null, 'logo_id', null);
                 // если выбрана опция "Логотип со ссылкой", то картинка должна быть обязательно
                 if (!$data['logo_id']) {
                     $error['logo_image'] = 'Отсутствует логотип';
                 }
                 if ($data['logo_link'] === 'Адрес сайта') {
                     $data['logo_link'] = '';
                 }
                 if ($data['logo_link'] !== '' && !is_url($data['logo_link'])) {
                     $error['logo_link'] = 'Не верно введен адрес';
                 }
             } else {
                 $data['logo_id'] = null;
             }
             $price = 0;
             // закрепление на верху
             if ($option['top'] == 1 && $option['top_count'] > 0) {
                 if ($option['top_count'] > 999) {
                     $option['top_count'] = 999;
                 }
                 $price = (int) $option['top_count'] * ($data['kind'] == 7 ? $cTopPrice : $pTopPrice);
                 $data['top_count'] = (int) $option['top_count'];
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_TOP, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $price);
             } else {
                 $data['top_count'] = 0;
             }
             // выделение цветом
             if ($option['color'] == 1) {
                 $price += (int) $colorPrc;
                 $data['is_color'] = true;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_COLOR, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $colorPrc);
             } else {
                 $data['is_color'] = false;
             }
             // выделение жирным
             if ($option['bold'] == 1) {
                 $price += (int) $boldPrc;
                 $data['is_bold'] = true;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_BOLD, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $boldPrc);
             } else {
                 $data['is_bold'] = false;
             }
             if ($option['logo'] == 1) {
                 $price += (int) $logoPrc;
                 $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_LOGO, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $logoPrc);
             }
             if ($price > 0) {
                 $data['payed'] = (int) $price;
             }
             if (!$error) {
                 $data['wiz_uid'] = $this->getWizardUserID();
                 // если проект уже есть
                 if ($existPrjID) {
                     // то просто обновляем его
                     $prj_id = $this->updateProject($data, $existPrjID);
                     // и очищаем все платные опции для этого проекта
                     wizard_billing::clearPayedOptions($prj_id);
                 } else {
                     $prj_id = $this->createProject($data);
                 }
                 if ($prj_id && $_POST['attachedfiles_session']) {
                     $attachedfiles = new attachedfiles($_POST['attachedfiles_session']);
                     $files = $attachedfiles->getFiles(array(1, 2, 3, 4));
                     $this->parent->addAttachedFiles($files, $prj_id);
                     $attachedfiles->clear();
                 }
                 if ($prj_id && $data['kind'] == 7) {
                     $insert = array('wiz_uid' => $data['wiz_uid'], 'op_code' => new_projects::OPCODE_KON_NOPRO, 'type' => self::BILL_TYPE_CONTEST, 'ammount' => new_projects::getKonkursPrice(), 'parent' => $prj_id);
                     wizard_billing::addPaidOption($insert);
                 }
                 if ($price > 0 && $prj_id) {
                     foreach ($pay_option as $k => $opt) {
                         $opt['parent'] = $prj_id;
                         wizard_billing::addPaidOption($opt);
                     }
                 }
                 if ($prj_id) {
                     $_SESSION['view_wizard_project'] = $prj_id;
                     header('Location: /wizard/registration/');
                     exit;
                 } else {
                     $error['project'] = 'Ошибка записи проекта';
                 }
             }
             $currency_name = __paramInit('string', null, 'currency');
             $priceby_name = __paramInit('string', null, 'priceby');
         }
         // Генерируем данные для вывода ошибок и заполнения полей
         $loc[] = country::GetCountryName($data['country']);
         if ($data['city']) {
             $loc[] = city::GetCityName($data['city']);
         }
         $location_name = implode(': ', $loc);
         $cat[] = professions::GetGroupName($category);
         if ($subcategory) {
             $cat[] = professions::GetProfName($subcategory);
         }
         $category_name = implode(': ', $cat);
         if ($data['logo_id']) {
             $file = new CFile($data['logo_id']);
             $logo_path = WDCPREFIX . '/' . $file->path . $file->name;
         }
         include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.php';
     } else {
         $project = $this->getProjectById($prj_id);
         $attached = $this->getProjectAttach($prj_id);
         include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.view.php';
     }
 }