$user_action = $exec ? '/registration/?user_action=add_project_to_' . $exec : '/guest/new/project/'; if ($kind != 1 && $kind != 4 || $exec) { ref_uri(); //Сохраняем ref_uri страницы } if ($kind == 4) { $user_action = '/guest/new/vacancy/'; } elseif ($kind == 7) { $user_action = '/registration/?user_action=add_contest'; } // Публикация проектов доступна только для работодателя header('Location: ' . $user_action); exit; } //Проверка перехода с лендинга публикации проекта if ($name = isLandingProject()) { $tmpPrj->setProjectField('name', $name); } ref_uri(); //Сохраняем ref_uri страницы $is_personal = false; if ($exec || $project['exec_id']) { $freelancer = new freelancer(); if ($exec) { //Добавление проекта $freelancer->GetUser($exec); } else { $freelancer->GetUserByUID($project['exec_id']); } if ($freelancer->uid && ($project['kind'] == projects::KIND_PERSONAL || $kind == projects::KIND_PERSONAL)) { $is_personal = true;
/** * Создание проекта */ public function actionProject() { $subform = new GuestNewProjectForm(array('is_adm' => $this->is_adm)); $form = new NewDataForm($subform, array('is_adm' => $this->is_adm)); $form->addElement(new Form_Element_Hidden('social')); //Проверка перехода с лендинга публикации проекта if ($name = isLandingProject()) { $subform->setDefault('name', $name); } if (isset($_POST) && sizeof($_POST) > 0) { if (isset($_POST['social']) && $_POST['social']) { $form->getElement('uname')->setRequired(false); $form->getElement('usurname')->setRequired(false); $form->getElement('email')->setRequired(false); } $valid = $form->isValid($_POST); $data = $form->getValues(); //@todo: подготовка данных, лучше все это делать в контролах но нет времени! //@todo: частично дублирует GuestHelper::overrideData //Если публикация проекта из лендинга, то фиксируем ID //чтобы в случае публикации привязать проект if ($landingProjectId = getLastLandingProjectId()) { $data['dataForm']['landingProjectId'] = $landingProjectId; } $data['dataForm']['kind'] = 1; //проект! unset($data['dataForm']['profession']); $data['dataForm']['categories'][] = array('category_id' => $subform->getElement('profession')->getGroupDbIdValue(), 'subcategory_id' => $subform->getElement('profession')->getSpecDbIdValue()); $data['dataForm']['IDResource'] = @$data['dataForm']['IDResource'][0]; $cost_element = $subform->getElement('cost'); $is_agreement = $cost_element->getValue('agreement') == 1; $data['dataForm']['cost'] = $is_agreement ? 0 : $data['dataForm']['cost']; $data['dataForm']['currency'] = $is_agreement ? 0 : $cost_element->getValue('currency_db_id'); $data['dataForm']['priceby'] = $is_agreement ? 1 : $cost_element->getValue('priceby_db_id'); $filter = @$data['dataForm']['filter']; if (!$filter) { $filter = array(); } $data['dataForm']['pro_only'] = true; //in_array('pro_only', $filter); $data['dataForm']['verify_only'] = in_array('verify_only', $filter); unset($data['dataForm']['filter']); if ($this->is_adm) { if (!$data['uname'] && !$data['usurname']) { $data['uname'] = "Менеджер"; $data['usurname'] = "Компании"; } } if (isset($data['dataForm']['auth']) && $data['dataForm']['auth']) { $data['dataForm']['agreement'] = $is_agreement; $guestMemoryModel = new GuestMemoryModel(); $hash = $guestMemoryModel->saveData($data['dataForm']); $redirect = GuestConst::getMessage(GuestConst::URI_CANCEL, GuestConst::TYPE_PROJECT) . '&hash=' . $hash; $this->redirect($redirect); } if ($valid) { $oauth_link = $form->getElement('social')->getValue(); unset($data['social']); if (!$oauth_link) { $userValidator = $form->getElement('email')->getValidator('NoUserExists'); $user = $userValidator->getUser(); $data['user_id'] = $user->uid; } $data['type'] = GuestConst::TYPE_PROJECT; $code = GuestActivationModel::model()->newActivation($data); if ($code) { if ($oauth_link) { $redirect = urlencode("/guest/activate/" . $code); $this->redirect($oauth_link . '&emp_redirect=' . $redirect); } else { $guestSmail = new GuestSmail(); $link = $this->is_adm ? $data['dataForm']['link'] : ''; $guestSmail->sendActivation($data['email'], $code, $user, $data['type'], $link); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/Helpers/PopupAfterPageLoaded.php"; PopupAfterPageLoaded::getInstance()->showAfterLoad(GuestConst::getMessage($user->uid > 0 ? GuestConst::MSG_AL_EXIST : GuestConst::MSG_AL, $data['type'])); $ref_uri = '.'; if (!$this->is_adm) { $ref_uri = empty($_SESSION['ref_uri']) ? sprintf('/') : urldecode($_SESSION['ref_uri']); } $this->redirect($ref_uri); } } } } $this->render('project', array('title' => 'Новый проект (задание на разовую работу)', 'form' => $form->render())); }