/**
 * Сохранение проектов и конкурсов
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditProjectsSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
    $alert = array();
    $tmpPrj = new tmp_project($aForm['temp_key']);
    $prj = $tmpPrj->init(2);
    $kind = isset($aForm['kind']) ? intvalPgSql($aForm['kind']) : $prj['kind'];
    $sLink = change_q_x($aForm['link'], false, true, null, false, false);
    if (!empty($sLink)) {
        if (!preg_match('/http:\\/\\//', $sLink)) {
            $sLink = 'http://' . $sLink;
        }
    }
    $tmpPrj->setProjectField('kind', $kind);
    $tmpPrj->setProjectField('descr', antispam(change_q_x($aForm['descr'], FALSE, TRUE, "", false, false)));
    $tmpPrj->setProjectField('name', substr(antispam(change_q_x($aForm['name'], TRUE)), 0, 512));
    setlocale(LC_ALL, 'en_US.UTF-8');
    $tmpPrj->setProjectField('cost', isset($aForm['cost']) ? floatval($aForm['cost']) : 0);
    $tmpPrj->setProjectField('currency', isset($aForm['currency']) ? intvalPgSql($aForm['currency']) : 0);
    $tmpPrj->setProjectField('folder_id', isset($aForm['folder_id']) ? intvalPgSql($aForm['folder_id']) : 0);
    $tmpPrj->setProjectField('budget_type', isset($aForm['budget_type']) ? intvalPgSql($aForm['budget_type']) : 0);
    $tmpPrj->setProjectField('priceby', isset($aForm['priceby']) ? intvalPgSql($aForm['priceby']) : 0);
    $tmpPrj->setProjectField('agreement', isset($aForm['agreement']) ? intvalPgSql($aForm['agreement']) : 0);
    $tmpPrj->setProjectField('country', isset($aForm['country']) ? intvalPgSql($aForm['country']) : 0);
    $tmpPrj->setProjectField('city', isset($aForm['pf_city']) ? intvalPgSql($aForm['pf_city']) : 0);
    $tmpPrj->setProjectField('pro_only', isset($aForm['pro_only']) ? 't' : 'f');
    $tmpPrj->setProjectField('is_color', isset($aForm['is_color']) ? 't' : 'f');
    $tmpPrj->setProjectField('is_bold', isset($aForm['is_bold']) ? 't' : 'f');
    $tmpPrj->setProjectField('link', $sLink);
    if ($kind == 7) {
        $tmpPrj->setProjectField('end_date', change_q_x($aForm['end_date'], TRUE));
        $tmpPrj->setProjectField('win_date', change_q_x($aForm['win_date'], TRUE));
    }
    // разделы
    $c = $aForm['categories'];
    $sc = $aForm['subcategories'];
    if (empty($c) || sizeof($c) == 1 && $c[0] == 0) {
        $alert[3] = 'Не выбран раздел';
    } else {
        $cats = array();
        foreach ($c as $sKey => $value) {
            if ($value == 0) {
                continue;
            }
            $check[] = $value . "_" . $sc[$sKey];
        }
        $uniq = array_unique($check);
        foreach ($uniq as $val) {
            list($cat, $subcat) = explode('_', $val);
            $check_array[$cat][] = $subcat;
        }
        foreach ($check_array as $k => $val) {
            if (count($val) > 1 && array_search(0, $val) !== false) {
                $cats[] = array('category_id' => $k, 'subcategory_id' => 0);
                unset($check_array[$k]);
            } else {
                foreach ($val as $m => $v) {
                    $cats[] = array('category_id' => $k, 'subcategory_id' => $v);
                }
            }
        }
        $tmpPrj->setCategories($cats);
    }
    $prj = $tmpPrj->getProject();
    $descr_limit = 5000;
    if ($prj['cost'] < 0) {
        $alert[7] = 'Введите положительную сумму';
    }
    if ($prj['cost'] > 999999) {
        $alert[7] = 'Слишком большая сумма';
    }
    if ($prj['cost'] > 0 && ($prj['currency'] < 0 || $prj['currency'] > 3)) {
        $alert[7] = 'Валюта не определена';
    }
    if (is_empty_html($prj['name'])) {
        $alert[1] = 'Поле не заполнено';
    }
    if (is_empty_html($prj['descr'])) {
        $alert[2] = 'Поле не заполнено';
    }
    if (strlen_real($prj['descr']) > $descr_limit) {
        $alert[2] = "Исчерпан лимит символов ({$descr_limit})";
    }
    if ($prj['kind'] == 7) {
        if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) {
            $alert[5] = 'Неправильная дата';
        }
        if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) {
            $alert[6] = 'Неправильная дата';
        }
        if (!$alert[5] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) {
            $alert[5] = 'Дата окончания конкурса не может находиться  в прошлом';
        }
        if (!$alert[6] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) {
            $alert[6] = 'Дата определения победителя должна быть больше даты окончания конкурса';
        }
    }
    /*elseif ( $prj['kind'] == 4 && ($prj['country'] == 0 || $prj['city'] == 0) ) {
          $alert[4] = 'Укажите местонахождение';
      }*/
    if (isset($aForm['top_ok'])) {
        $nDays = intval($aForm['top_days']);
        if (ctype_digit($aForm['top_days']) && $nDays > 0) {
            $tmpPrj->setAddedTopDays($nDays);
        } else {
            $alert[8] = 'Укажите корректное количество дней нверху';
        }
    } else {
        $tmpPrj->setAddedTopDays(0);
    }
    if (!isset($alert[8]) && isset($aForm['logo_ok'])) {
        if (empty($aForm['logo_id'])) {
            $alert[8] = 'Необходимо выбрать файл';
        }
    }
    if (isset($aForm['del_logo'])) {
        $tmpPrj->delLogo();
    }
    if (!$alert) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
        $attachedfiles = new attachedfiles($aForm['attachedfiles_session']);
        $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
        $tmpPrj->addAttachedFiles($attachedfiles_files);
        $attachedfiles->clear();
        $sError = $tmpPrj->saveProject($prj['user_id'], $prj);
        if (!$sError) {
            if ($prj['agreement'] == 1 || $prj['cost'] == 0) {
                projects::updateBudget($rec_id, 0, 0, 0, true);
            } else {
                projects::updateBudget($rec_id, $prj['cost'], $prj['currency'], $prj['priceby'], false);
            }
            $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']);
            messages::projectsModifiedNotification($rec_id, $rec_type, $aForm['user_login'], $aForm['user_uname'], $aForm['user_usurname'], $sReason);
            $content_id = user_content::MODER_PROJECTS;
            _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm);
        } else {
            $objResponse->alert($sError);
            $sParent = $sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2' ? 'parent.' : '';
            $objResponse->script("{$sParent}adm_edit_content.disabled = false; {$sParent}adm_edit_content.button();");
        }
    } else {
        _setErrors($objResponse, $alert, array(1 => 'name', 2 => 'descr', 3 => 'categories', 4 => 'country', 5 => 'end_date', 6 => 'win_date', 7 => 'cost', 8 => 'paid'), $sDrawFunc);
    }
}
Exemple #2
0
     } else {
         if ($_POST['is_exec_quickprj'] != 1) {
             $error['logo'] = 'Необходимо выбрать файл';
         }
     }
 } else {
     $tmpPrj->clearLogo();
 }
 if (!$error) {
     if (!$PDA) {
         require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
         reset($_POST['IDResource']);
         $uploader = new uploader(current($_POST['IDResource']));
         $attachedfiles_files = $uploader->getFiles();
         $tmpPrj->clearAttaches();
         $tmpPrj->addAttachedFiles($attachedfiles_files, $draft_id && !$is_tmp_draft ? true : false);
         $uploader->clear();
     }
     if ($PDA) {
         // Удаление файла для ПДА версии
         $idDel = __paramInit('int', NULL, 'atch');
         if ($idDel <= 0 && $_FILES['attach']['error'][0] == 4) {
             $tmpPrj->delAttach(0);
         }
         // сохранение файла
         if (is_array($_FILES['attachedfiles_file']) && !$_FILES['attachedfiles_file']['error']) {
             $_POST['attachedfiles_action'] = 'add';
             $_POST['attachedfiles_type'] = 'project';
             ob_start();
             include $_SERVER['DOCUMENT_ROOT'] . "/attachedfiles.php";
             ob_clean();
 public function doActivation($code)
 {
     $activation_data = $this->getActivation($code);
     if (!$activation_data) {
         return false;
     }
     $this->deleteActivation($code);
     $current_uid = get_uid(false);
     if ($current_uid) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
         $user = new employer();
         $user->GetUserByUID($current_uid);
         $status = 1;
     } else {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/registration.php';
         $registration = new registration();
         $user_data = $registration->autoRegistationAndLogin(array('uid' => $activation_data['user_id'], 'role' => 1, 'email' => $activation_data['email'], 'uname' => $activation_data['uname'], 'usurname' => $activation_data['usurname']));
         if (!$user_data || !$user_data['ret']) {
             return self::REDIRECT_AUTH_FAIL;
         }
         $status = $user_data['ret'];
         $user = $user_data['user'];
     }
     $uid = $user->uid;
     $redirect = false;
     $data = $activation_data['data'];
     switch ($activation_data['type']) {
         case GuestConst::TYPE_PERSONAL_ORDER:
             $data['emp_id'] = $uid;
             require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php';
             $orderModel = TServiceOrderModel::model();
             if ($order = $orderModel->createPersonal($data)) {
                 $tservices_smail = new tservices_smail();
                 $tservices_smail->newOrder($order);
                 $redirect = sprintf(tservices_helper::url('order_card_url'), $order['id']);
             }
             break;
         case GuestConst::TYPE_VACANCY:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             $data['state'] = projects::STATE_MOVED_TO_VACANCY;
             $date_public = null;
             $redirect_layout = '/public/?step=1&kind=4&public=%s&popup=1';
         case GuestConst::TYPE_PROJECT:
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
             $key = md5(uniqid($uid));
             $tmpPrj = new tmp_project($key);
             $tmpPrj->initForUser($user);
             if (isset($data['IDResource']) && !empty($data['IDResource'])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
                 $uploader = new uploader($data['IDResource']);
                 $attachedfiles_files = $uploader->getFiles();
                 $tmpPrj->clearAttaches();
                 $tmpPrj->addAttachedFiles($attachedfiles_files, false);
                 $uploader->clear();
             }
             if ($prj = $tmpPrj->addSimpleProject($data)) {
                 $_SESSION['new_public'] = 1;
                 $redirect = getFriendlyURL('project', $prj);
                 if (isset($redirect_layout)) {
                     $redirect = sprintf($redirect_layout, $prj['id']);
                 }
                 $src_id = $prj['id'];
                 //Если проект был создан при переходе с лендинга
                 //то привязываем его для статистики
                 if (isset($data['landingProjectId'])) {
                     require_once ABS_PATH . '/classes/LandingProjects.php';
                     LandingProjects::model()->linkWithProject($data['landingProjectId'], $src_id, !$activation_data['user_id']);
                 }
             }
             break;
     }
     //Обновляем приглашение
     if (isset($activation_data['invite_id']) && $activation_data['invite_id'] > 0) {
         $guestInviteModel = new GuestInviteModel();
         $guestInviteModel->updateDateComeInvite($activation_data['invite_id'], array('src_id' => isset($src_id) ? $src_id : null, 'date_public' => isset($date_public) ? $date_public : null));
     }
     //Мессага с паролями для новеньких
     if (!$activation_data['user_id'] && !$current_uid) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Helpers/SubBarNotificationHelper.php';
         SubBarNotificationHelper::getInstance()->setMessage($activation_data['type'], array('login' => $user->login, 'password' => $user->passwd), $user->uid);
     } elseif ($status == users::AUTH_STATUS_2FA) {
         $_SESSION['ref_uri'] = $redirect;
         $redirect = '/auth/second/';
     }
     return $redirect;
 }
/**
 * @param $frm - данные запроса
 * @param $type - тип страницы, с которой была запрошена форма быстрого редактирования проекта
 *                 1 - лента на главной, 
 *                 2 - редактируется конкурс,
 *                 3 - страница проекта в профиле работодателя,
 *                 4 - проект в списке в профиле работодателя
 * */
function quickprjedit_save_prj($frm, $type)
{
    $objResponse = new xajaxResponse();
    if (hasPermissions('projects')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
        $oprj = new new_projects();
        $project = $oprj->getPrj($frm['id']);
        if ($project['id']) {
            $objResponse->script('popupQEditPrjHideErrors();');
            $key = $frm['tmpid'];
            $tmpPrj = new tmp_project($key);
            $tmpPrj->init(2);
            $errors = array();
            $frm['name'] = trim($frm['name']);
            $frm['descr'] = trim($frm['descr']);
            if ($frm['link'] == 'Адрес сайта') {
                $frm['link'] = '';
            }
            $frm['link'] == trim($frm['link']);
            if (!empty($frm['link'])) {
                if (strpos($frm['link'], 'http://') === 0) {
                    $protocol = 'http://';
                }
                if (strpos($frm['link'], 'https://') === 0) {
                    $protocol = 'https://';
                }
                if ($protocol == '') {
                    $protocol = 'http://';
                }
                $frm['link'] = $protocol . ltrim($frm['link'], $protocol);
                if (!is_url($frm['link'])) {
                    $errors[] = 'logourl';
                }
            }
            if (empty($frm['name'])) {
                $errors[] = 'name';
            }
            if (empty($frm['descr'])) {
                $errors[] = 'descr';
            }
            if ($frm['pf_city']) {
                $frm['city'] = $frm['pf_city'];
            }
            if ($project['kind'] == 7) {
                if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) {
                    $errors[] = 'end_date';
                }
                if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $frm['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) {
                    $errors[] = 'win_date';
                }
                if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) {
                    $errors[] = 'end_date_past';
                }
                if (!in_array('end_date', $errors) && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) {
                    $errors[] = 'win_date_past';
                }
            }
            if (!count($errors)) {
                $c = $frm['categories'];
                $sc = $frm['subcategories'];
                foreach ($frm['categories'] as $sKey => $value) {
                    if ($value == 0) {
                        continue;
                    }
                    $check[] = $value . '_' . $sc[$sKey];
                }
                $uniq = array_unique($check);
                foreach ($uniq as $val) {
                    list($cat, $subcat) = explode('_', $val);
                    $check_array[$cat][] = $subcat;
                }
                $categories = array();
                foreach ($check_array as $k => $val) {
                    if (count($val) > 1 && array_search(0, $val) !== false) {
                        $categories[] = array('category_id' => $k, 'subcategory_id' => 0);
                        unset($check_array[$k]);
                    } else {
                        foreach ($val as $m => $v) {
                            $categories[] = array('category_id' => $k, 'subcategory_id' => $v);
                        }
                    }
                }
                $tmpPrj->setProjectField('name', change_q_x($frm['name']), true);
                $tmpPrj->setProjectField('descr', change_q_x($frm['descr'], false, true, '', false, false));
                $tmpPrj->setProjectField('pro_only', $frm['pro_only'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('verify_only', $frm['verify_only'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('strong_top', (int) $frm['strong_top']);
                $tmpPrj->setProjectField('prefer_sbr', $frm['prefer_sbr'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('urgent', $frm['is_urgent'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('hide', $frm['is_hide'] == 1 ? 't' : 'f');
                switch ($frm['kind']) {
                    case 1:
                        $tmpPrj->setProjectField('country', 0);
                        $tmpPrj->setProjectField('city', 0);
                        $tmpPrj->setProjectField('kind', $frm['kind']);
                        break;
                    case 4:
                        $tmpPrj->setProjectField('country', $frm['country']);
                        $tmpPrj->setProjectField('city', $frm['city']);
                        $tmpPrj->setProjectField('kind', $frm['kind']);
                        break;
                }
                if ($project['kind'] == 7) {
                    $tmpPrj->setProjectField('end_date', $frm['end_date']);
                    $tmpPrj->setProjectField('win_date', $frm['win_date']);
                    $tmpPrj->clearWinners();
                }
                $tmpPrj->setCategories($categories);
                $tmpPrj->setProjectField('link', $frm['link']);
                $tmpPrj->setProjectField('is_color', $frm['is_color'] == 1 ? 't' : 'f');
                $tmpPrj->setProjectField('is_bold', $frm['is_bold'] == 1 ? 't' : 'f');
                $tmpPrj->setAddedTopDays($frm['top_ok'] == 1 ? $frm['top_days'] : 0);
                if (!$project['folder_id']) {
                    $tmpPrj->setProjectField('folder_id', 0);
                }
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
                $attachedfiles = new attachedfiles($frm['attachedfiles_session']);
                $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
                $tmpPrj->addAttachedFiles($attachedfiles_files);
                $attachedfiles->clear();
                $tmpPrj->saveProject(get_uid(false), $ttt);
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
                $stop_words = new stop_words(hasPermissions('projects'));
                $objResponse->script('popupQEditPrjHide();');
                switch ($type) {
                    case 1:
                    case 4:
                        // Лента проектов
                        global $session;
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
                        $prj_id = $project['id'];
                        $obj_project = new new_projects();
                        $tproject = $obj_project->getProjects($num, -1, 1, false, null, false, true, $prj_id);
                        $this_kind = $tproject[0]['kind'];
                        $this_uid = get_uid(false);
                        $this_pro_last = $_SESSION['pro_last'];
                        $this_is_pro = payed::CheckPro($_SESSION['login']);
                        $this_edit_mode = hasPermissions('projects');
                        if ($this_uid) {
                            $this_user_role = $_SESSION['role'];
                        }
                        $this_project = $tproject[0];
                        $row = $this_project;
                        if ($this_edit_mode || $this_project['kind'] == 2 || $this_project['user_id'] == $this_uid || $this_project['offer_id'] || $this_pro_last) {
                            $this_show_data = 1;
                            $row['show_data'] = 1;
                        } else {
                            $this_show_data = 0;
                            $row['show_data'] = 0;
                        }
                        $descr = $row['descr'];
                        $descr = preg_replace('/^ /', "", $descr);
                        $descr = preg_replace("/(\n) /", "\$1", $descr);
                        $descr = reformat(strip_tags(LenghtFormatEx($descr, 180), '<br />'), 50, 1, 0, 1);
                        $descr = preg_replace("//", '&nbsp;', $descr);
                        $row['descr'] = $descr;
                        $row['t_is_payed'] = $this_project['payed'] && $this_project['kind'] != 2 && $this_project['kind'] != 7;
                        $row['t_is_contest'] = $this_project['kind'] == 2 || $this_project['kind'] == 7;
                        $row['t_pro_only'] = $this_project['pro_only'] == 't';
                        $row['t_verify_only'] = $this_project['verify_only'] == 't';
                        $row['t_hide'] = $this_project['hide'] == 't';
                        $row['t_urgent'] = $this_project['urgent'] == 't';
                        $row['t_prefer_sbr'] = $this_project['prefer_sbr'] == 't';
                        $row['priceby'] = $this_project['priceby'];
                        $row['t_is_adm'] = hasPermissions('projects');
                        $row['t_is_ontop'] = strtotime($this_project['top_to']) >= time();
                        $row['unread'] = (int) $this_project['unread_p_msgs'] + (int) $this_project['unread_c_msgs'] + (int) $this_project['unread_c_prjs'];
                        $row['t_is_proonly'] = $this_project['pro_only'] == 't' && !$_SESSION['pro_last'] && !$this_edit_mode && $this_uid != $this_project['user_id'];
                        $attaches = projects::GetAllAttach($this_project['id']);
                        $attaches = !$attaches ? array() : $attaches;
                        foreach ($attaches as $k => $a) {
                            $a['virus'] = is_null($a['virus']) ? $a['virus'] : bindec($a['virus']);
                            $attaches[$k] = $a;
                        }
                        $row['attaches'] = $this_project['attaches'] = $attaches;
                        $is_ajax = true;
                        $can_change_prj = hasPermissions('projects');
                        $row['friendly_url'] = getFriendlyURL('project', $row['id']);
                        ob_start();
                        if ($type == 1) {
                            $project = projects::initData($row);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.lenta-item.php';
                        } else {
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
                            $user = new employer();
                            $user->GetUserByUID($this_project['user_id']);
                            require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.employer-project-item.php';
                        }
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project-item{$prj_id}", 'innerHTML', $html_data);
                        if ($row['is_color'] == 't') {
                            $objResponse->script("\$('project-item{$prj_id}').addClass('b-post_bg_fffded')");
                        } else {
                            $objResponse->script("\$('project-item{$prj_id}').removeClass('b-post_bg_fffded')");
                        }
                        //$objResponse->script('alert("Лента");');
                        //$objResponse->script('window.location.reload();');
                        break;
                    case 2:
                        // Конкурс
                        //$objResponse->script('alert("Конкурс");');
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        global $session;
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (hasPermissions('projects')) {
                            $project_history = $obj_project->GetPrjHistory($prj_id);
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        $contest = new contest($project['id'], $uid, is_emp(), $project['user_id'] == $uid, hasPermissions('projects'), is_pro());
                        $contest->GetOffers((string) $_GET['filter']);
                        $project['contest_end'] = mktime() > strtotime($project['end_date']);
                        $project['contest_win'] = mktime() > strtotime($project['win_date']);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/contest_item.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("contest_info_{$prj_id}", 'innerHTML', $html_data);
                        break;
                    case 3:
                        // Проект
                        $project_exRates = project_exrates::GetAll();
                        $translate_exRates = array(0 => 2, 1 => 3, 2 => 4, 3 => 1);
                        $prj_id = $project['id'];
                        $obj_project = new projects();
                        $project = $obj_project->GetPrjCust($prj_id);
                        if (trim($project['contacts']) != '') {
                            $contacts_employer = unserialize($project['contacts']);
                            $empty_contacts_employer = 0;
                            foreach ($contacts_employer as $name => $contact) {
                                if (trim($contact['value']) == '') {
                                    $empty_contacts_employer++;
                                }
                            }
                            $is_contacts_employer_empty = count($contacts_employer) == $empty_contacts_employer;
                        }
                        $project_attach = $obj_project->GetAllAttach($prj_id);
                        ob_start();
                        require_once $_SERVER['DOCUMENT_ROOT'] . '/projects/tpl.prj-main-info.php';
                        $html_data = ob_get_contents();
                        ob_end_clean();
                        $objResponse->assign("project_info_{$project['id']}", 'innerHTML', $html_data);
                        break;
                    default:
                        $objResponse->script('window.location.reload();');
                        break;
                }
            } else {
                $tab1 = 0;
                $tab2 = 0;
                foreach ($errors as $error) {
                    switch ($error) {
                        case 'end_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Неправильная дата");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'end_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal1").set("html", "Дата окончания конкурса не может находиться  в прошлом");');
                            $objResponse->script('popupQEditPrjShowError("cal1");');
                            break;
                        case 'win_date_past':
                            $objResponse->script('$("popup_qedit_prj_fld_err_txt_cal2").set("html", "Дата определения победителя должна быть больше даты окончания конкурса");');
                            $objResponse->script('popupQEditPrjShowError("cal2");');
                            break;
                        case 'logourl':
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay").setStyle("display","block");');
                            $objResponse->script('$("popup_qedit_prj_fld_err_pay_txt").set("html", "Ссылка для логотипа указана не верно");');
                            break;
                        default:
                            $objResponse->script('popupQEditPrjShowError("' . $error . '");');
                            break;
                    }
                    if (in_array($error, array('name', 'descr', 'location', 'end_date', 'win_date', 'end_date_past', 'win_date_past'))) {
                        ++$tab1;
                    } elseif (in_array($error, array('logourl'))) {
                        ++$tab2;
                    }
                }
                if ($tab1) {
                    $objResponse->script('popupQEditPrjMenu(1)');
                } elseif ($tab2) {
                    $objResponse->script('popupQEditPrjMenu(2)');
                }
            }
        }
        $objResponse->script('popupQEditIsProcess = false;');
    }
    return $objResponse;
}
Exemple #5
0
 /**
  * Добавление проекта
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_add($aParams = array())
 {
     $this->_validDevice($aParams);
     require_once ABS_PATH . "/classes/projects.php";
     $nKind = intvalPgSql($aParams['kind']);
     $nKind = !empty($nKind) ? $nKind : $this->_mCfg['default_kind'];
     $nUid = get_uid(false);
     $sKey = md5(uniqid($uid));
     // ключ-идентификатор создаваемого/редактируемого проекта, для хранения в кэше.
     $aCats = array(array('category_id' => intvalPgSql($aParams['group_category_id']), 'subcategory_id' => intvalPgSql($aParams['category_id'])));
     $tmpPrj = new tmp_project($sKey);
     $tmpPrj->init(1, 0);
     $tmpPrj->setProjectField('kind', $nKind);
     $tmpPrj->setProjectField('descr', __paramValue('html', antispam(iconv('utf-8', 'cp1251', $aParams['descr'])), null, true));
     $tmpPrj->setProjectField('name', substr(antispam(__paramValue('string', iconv('utf-8', 'cp1251', $aParams['title']), 60)), 0, 512));
     $tmpPrj->setProjectField('cost', __paramValue('float', $aParams['budget']));
     $tmpPrj->setProjectField('currency', intvalPgSql($aParams['currency']));
     $tmpPrj->setProjectField('priceby', intvalPgSql($aParams['dimension']));
     $tmpPrj->setProjectField('agreement', intvalPgSql($aParams['budget_agreement']));
     $tmpPrj->setProjectField('budget_type', 0);
     // TODO: ???
     $tmpPrj->setCategories($aCats);
     $tmpPrj->setProjectField('country', intvalPgSql($aParams['country_id']));
     $tmpPrj->setProjectField('city', intvalPgSql($aParams['city_id']));
     $tmpPrj->setProjectField('pro_only', intvalPgSql($aParams['only_pro']) ? 't' : 'f');
     $tmpPrj->setProjectField('verify_only', intvalPgSql($aParams['only_verified']) ? 't' : 'f');
     $tmpPrj->setProjectField('prefer_sbr', intvalPgSql($aParams['prefer_sbr']) ? 't' : 'f');
     $project = $tmpPrj->getProject();
     if ($project['cost'] < 0) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MIN);
     }
     if ($project['cost'] > 999999) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MAX);
     }
     if ($project['cost'] > 0 && ($project['currency'] < 0 || $project['currency'] > 3)) {
         $this->error(EXTERNAL_ERR_PRJ_CURRENCY);
     }
     if (is_empty_html($project['descr'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_DESCR);
     }
     if (is_empty_html($project['name'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_TITLE);
     }
     if (strlen_real($project['descr']) > $this->_mCfg['descr_limit']) {
         $this->error(EXTERNAL_ERR_PRJ_LENGTH_DESCR);
     }
     // TODO: пока только проекты
     /*if ( $project['kind'] == 7 ) {
                     $tmpPrj->setProjectField('end_date', __paramInit('string', NULL, 'end_date'),0,64);
                     $tmpPrj->setProjectField('win_date', __paramInit('string', NULL, 'win_date'),0,64);
                     $project = $tmpPrj->getProject();
     
                     if (!preg_match("/^([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})$/", $project['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})$/", $project['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3]))
                             $error['win_date'] = 'Неправильная дата';
     
                     // Модераторам аккуратней	
                 if(!hasPermissions('projects')) {
                     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'] = 'Дата определения победителя должна быть больше даты окончания конкурса';
                     }
     
             }*/
     // сохранение файлов
     if (is_array($_FILES['files']) && $_FILES['files']) {
         $aFiles = $this->_multiple($_FILES);
         foreach ($aFiles['files'] as $aFile) {
             if (is_array($aFile) && !$aFile['error']) {
                 $_FILES['attachedfiles_file'] = $aFile;
                 $_POST['attachedfiles_action'] = 'add';
                 $_POST['attachedfiles_type'] = 'project';
                 $bSilentMode = true;
                 include ABS_PATH . '/attachedfiles.php';
                 if (isset($file['errno'])) {
                     switch ($file['errno']) {
                         case 1:
                             $this->error(EXTERNAL_ERR_FILE);
                             break;
                         case 2:
                             $this->error(EXTERNAL_ERR_MAX_FILES_CONUT);
                             break;
                         case 3:
                             $this->error(EXTERNAL_ERR_MAX_FILES_SIZE);
                             break;
                         case 4:
                             $this->error(EXTERNAL_ERR_FILE_FORMAT);
                             break;
                         default:
                             $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             break;
                     }
                 }
                 $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
                 $tmpPrj->addAttachedFiles($attachedfiles_files);
                 $attachedfiles->clear();
             }
         }
     }
     $tmpPrj->fix();
     $tmpPrj->saveProject(null, $aProject);
     return $this->x____projects_get(array('id' => $aProject['id']));
 }