function DelLogo($key) { $objResponse = new xajaxResponse(); $tmpPrj = new tmp_project($key); if ($tmpPrj->init(2)) { $tmpPrj->delLogo(true); $objResponse->script('try{adlogo()}catch(eeee){}'); } return $objResponse; }
/** * Отдает HTML для Редактирование проектов и конкурсов * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aParams дополнительные параметры с UID отправителя. остальные - опционально * @return string */ function _admEditProjectsParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array()) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $sTmpKey = md5(uniqid($_SESSION['uid'])); $tmpPrj = new tmp_project($sTmpKey); $prj = $tmpPrj->init(1, $rec_id); $tmpPrj->fix(); // $aFolders = projects::getUserFolders( $prj['user_id'] ); // папки $remTPeriod = $tmpPrj->getRemainingTopPeriod($remTD, $remTH, $remTM, $remtverb); // закрепление // страны и города $countries = country::GetCountries(); if ($prj['country']) { $cities = city::GetCities($prj['country']); } // разделы $categories = professions::GetAllGroupsLite(); $professions = professions::GetAllProfessions(); array_group($professions, 'groupid'); $professions[0] = array(); $project_categories = new_projects::getSpecs($rec_id); if (empty($project_categories)) { $project_categories[] = array('category_id' => 0, 'subcategory_id' => 0); } ob_start(); include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/projects.php'; $sHtml = ob_get_contents(); ob_end_clean(); // текст $sOnReady = "if(document.getElementById('adm_edit_descr')) \n document.getElementById('adm_edit_descr').value = (\$('adm_edit_descr_source')? \$('adm_edit_descr_source').value : null);"; // аттачи $sAttach = getAttachedFilesJs(projects::GetAllAttach($rec_id), tmp_project::MAX_FILE_COUNT, tmp_project::MAX_FILE_SIZE, 'project'); $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать ' . ($rec_type == '7' ? 'конкурс' : 'проект')); $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml); $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');"); $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное', 'Файлы', 'Платные услуги'];"); $objResponse->script('adm_edit_content.edit();'); $objResponse->script($sAttach); $objResponse->script($sOnReady); $objResponse->script("var mx = new MultiInput('adm_edit_professions','category_line'); mx.init();"); $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PROJECTS . ');'); // для конкурса даты окончания и определения победителей if ($prj['kind'] == 7) { $objResponse->script("new tcal ({ 'formname': 'adm_edit_frm', 'controlname': 'adm_edit_end_date', 'iconId': 'end_date_btn', 'clickEvent': function(){ adm_edit_content.hideError('end_date'); } });"); $objResponse->script("new tcal ({ 'formname': 'adm_edit_frm', 'controlname': 'adm_edit_win_date', 'iconId': 'win_date_btn', 'clickEvent': function(){ adm_edit_content.hideError('win_date'); } });"); } }
/** * Обработка и оплата операций * * @global type $DB * @param type $option * @return boolean */ function billingOperation($option, $transaction_id) { global $DB; $ok = false; $account = new account(); switch ($option['op_code']) { // Аккаунт ПРО у фрилансера case 48: case 49: case 50: case 51: case 76: // Удаляем операции по покупке ответов - публикуем ответы $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); $this->clearBlockedOperations(step_freelancer::OFFERS_OP_CODE); $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, 'all', false); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } $this->showProjectsFeedbacks(); } break; // Аккаунт ПРО у работодателя // Аккаунт ПРО у работодателя case 15: $prof = new payed(); $ok = $prof->SetOrderedTarif($this->uid, $transaction_id, 1, "Аккаунт PRO", $option['op_code'], $error); if ($ok) { $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['freeze_to'] ? false : $_SESSION['pro_last']['cnt']; $userdata = new users(); $_SESSION['pro_test'] = $userdata->GetField($this->uid, $error2, 'is_pro_test', false); } // Обновляем выбор цвета для проектов тк он для ПРО бесплатный $colorProjects = $this->updateColorProject(); $prj = new new_projects(); foreach ($colorProjects as $k => $project) { $delete_color[] = $project['op_id']; if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $prj->editPrj($project, false); } // Удаляем данные операции if ($delete_color) { $this->deleteDraftAccountOperation($delete_color); } break; // Публикация конкурса // Публикация конкурса case new_projects::OPCODE_KON: case new_projects::OPCODE_KON_NOPRO: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_wizard_registration.php'; $drafts = new drafts(); $draft = $drafts->getDraft($option['parent_id'], $this->uid, 1); // Если еще не опубликован if (!$draft['prj_id']) { $project_id = $draft['id']; $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], 1, 0); $ok = $bill_id > 0; if ($bill_id) { $color = $DB->val("SELECT id FROM draft_account_operations WHERE parent_id = ? AND op_type = 'contest' AND option = 'color' AND uid = ?", $project_id, wizard::getUserIDReg()); $draft['billing_id'] = $bill_id; $draft['folder_id'] = 'null'; $draft['payed'] = '0'; $draft['payed_items'] = '000'; if (is_pro() && $color > 0) { $draft['is_color'] = 't'; } else { $draft['is_color'] = 'f'; } $draft['win_date'] = date('d-m-Y', strtotime($draft['win_date'])); $draft['end_date'] = date('d-m-Y', strtotime($draft['end_date'])); $draft['is_bold'] = 'f'; $draft['user_id'] = $this->uid; if ($draft['country'] == null) { $draft['country'] = 'null'; } if ($draft['city'] == null) { $draft['city'] = 'null'; } $draft['name'] = addslashes($draft['name']); $draft['descr'] = addslashes($draft['descr']); if ($draft['logo_id'] <= 0) { $draft['logo_id'] = 'null'; } $prj = new new_projects(); $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($option['parent_id'], 4); if ($attachedfiles_tmpdraft_files) { $attachedfiles_tmpdraft_files = array_map(create_function('$a', 'return array("id" => $a);'), $attachedfiles_tmpdraft_files); } if ($attachedfiles_tmpdraft_files) { $month = date('Ym'); $dir = 'projects/upload/' . $month . '/'; $files = step_wizard_registration::transferFiles($attachedfiles_tmpdraft_files, 'file_projects', $dir); } $spec = $draft["categories"]; $spec = explode("|", $spec); $spec = array(array('category_id' => $spec[0], 'subcategory_id' => $spec[1])); $prj->addPrj($draft, $files); $prj->saveSpecs($draft["id"], $spec); // смотрим были ли выбраны платные опции для опубликованного конкурса if ($draft['id'] != $project_id && $draft['id'] > 0) { if ($this->sleep[$project_id]) { foreach ($this->sleep[$project_id] as $k => $opt) { $opt['parent_id'] = $draft['id']; $this->billingOperation($opt); } } else { //Обновляем родителя на всякий случай $update = array("parent_id" => $draft['id']); $DB->update("draft_account_operations", $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project_id, wizard::getUserIDReg()); $this->sleep_parent[$project_id] = $draft['id']; } $DB->update("draft_projects", array('prj_id' => $draft['id']), "id = ? AND uid = ?", $project_id, wizard::getUserIDReg()); } } } break; // Платный проект/конкурс // Платный проект/конкурс case 53: $prj = new new_projects(); if ($this->sleep_parent[$option['parent_id']]) { $option['parent_id'] = $this->sleep_parent[$option['parent_id']]; } $project = $prj->getProject($option['parent_id']); if (!$project['id']) { $this->sleep[$option['parent_id']][$option['id']] = $option; return true; } else { unset($this->sleep[$option['parent_id']]); } if ($project['country'] == null) { $project['country'] = 'null'; } if ($project['city'] == null) { $project['city'] = 'null'; } $project['name'] = addslashes($project['name']); $project['descr'] = addslashes($project['descr']); if ($project['logo_id'] <= 0) { $project['logo_id'] = 'null'; } $project['folder_id'] = 'null'; $items = array(); switch ($option['option']) { case 'top': $project['top_days'] = $option['op_count']; break; case 'color': $is_pay = $project['payed_items'] & '010'; if ($is_pay != '010') { $project['payed_items'] = $project['payed_items'] | '010'; $project['is_color'] = 't'; $items['color'] = true; if (is_pro()) { $is_payed = true; $prj->SavePayedInfo($items, $project['id'], null, $project['top_days']); $prj->editPrj($project, false); } } else { $is_payed = true; } break; case 'bold': $is_pay = $project['payed_items'] & '001'; if ($is_pay != '001') { $project['payed_items'] = $project['payed_items'] | '001'; $project['is_bold'] = 't'; $items['bold'] = true; } else { $is_payed = true; } break; case 'logo': $is_pay = $project['payed_items'] & '100'; if ($is_pay != '100') { $key = md5(microtime()); $prj = new tmp_project($key); $prj->init(1); $fu = new CFile($option['src_id']); $ext = $fu->getext(); $tmp_dir = $prj->getDstAbsDir(); $tmp_name = $fu->secure_tmpname($tmp_dir, '.' . $ext); $tmp_name = substr_replace($tmp_name, "", 0, strlen($tmp_dir)); $fu->table = 'file_projects'; $r = $fu->_remoteCopy($tmp_dir . $tmp_name); $project['payed_items'] = $project['payed_items'] | '100'; $project['logo_id'] = $fu->id; $items['logo'] = true; if ($option['extra']) { $project['link'] = $option['extra']; } } else { $is_payed = true; } break; } if (!$is_payed) { $error = $account->Buy($bill_id, $transaction_id, $option['op_code'], $this->uid, $option['descr'], $option['comment'], $option['ammount'], 0); $ok = $bill_id > 0; $project['billing_id'] = $bill_id; $prj->SavePayedInfo($items, $project['id'], $bill_id, $project['top_days']); $prj->editPrj($project, false); } else { $ok = true; } break; // Платные ответы на проекты // Платные ответы на проекты case 61: $answers = new projects_offers_answers(); $error = $answers->BuyByFM($this->uid, $option['op_count'], $transaction_id, 0); if (!$error) { $ok = true; $_SESSION['answers_ammount'] = $option['op_count']; // Публикуем ответы $step_frl = new step_freelancer(); $offers = $step_frl->getWizardOffers($this->uid, $option['op_count']); if ($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $step_frl->log = $this->log; $step_frl->user = new users(); $step_frl->user->GetUserByUID($this->uid); $step_frl->transferOffers($offers); } } break; } return $ok; }
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php'; $uid = get_uid(false); $employer = new employer(); $employer->GetUserByUID($uid); $account = new account(); $account->GetInfo($uid); $_SESSION['ac_sum'] = $account->sum; $_SESSION['ac_sum_rub'] = $account->sum_rub; $_SESSION['bn_sum'] = $account->bonus_sum; //Формируем проект $tmpPrj = new tmp_project('key'); $tmpPrj->setEdit(true); $tmpPrj->setProjectField('kind', 1); $tmpPrj->setProjectField('descr', 'Описание проекта для оплаты с разными op_code'); $tmpPrj->setProjectField('name', 'Проект для оплаты с разными op_code'); $tmpPrj->setProjectField('agreement', 1); $tmpPrj->setProjectField('priceby', 1); $tmpPrj->setProjectField('budget_type', 1); $cats[] = array('category_id' => 12, 'subcategory_id' => 120); $tmpPrj->setCategories($cats); //Добавляем ему купленную опцию Срочный $tmpPrj->setProjectField('urgent', 't'); //Другие платные услуги if (false) { $tmpPrj->setAddedTopDays(4); }
$filename = $file->MoveUploadedFile($sFullDir); $fileid = $file->id; $err = $file->StrError(); if (!$err && $type == 'work_prev' && (!in_array($file->getext(), $GLOBALS['graf_array']) || strtolower($file->getext()) == 'swf' || strtolower($file->getext()) == 'flv')) { $err = 'Недопустимый тип файла'; } if ($type == 'photo' || $type == 'logo') { if (!$err && !$file->img_to_small('sm_' . $filename, array('width' => 50, 'height' => 50))) { $err .= 'Невозможно уменьшить картинку.'; } } } } elseif (!$err) { // логотип проекта require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $tmpPrj = new tmp_project($pkey); $prj = $tmpPrj->init(1); $err = $tmpPrj->setLogo($file); $tmpPrj->fix(); $logo = $tmpPrj->getLogo(); $logourl = WDCPREFIX . '/' . $logo['path'] . $logo['name']; } } } ?> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <?php $stc->Add('/css/projects3.css');
/** * Выход пользователя из системы * * @param boolean $save_cookie Удалять сохраненные кукисы или нет */ function logout($save_cookie = FALSE) { if (!$save_cookie) { $sql = "UPDATE users SET solt=NULL WHERE login='******'login'] . "'"; pg_query(DBConnect(), $sql); if (is_emp()) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; tmp_project::clearTmpAll($_SESSION['login']); } } $GLOBALS['session']->logout($_SESSION['login']); if ($_SESSION['uid']) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php"; $user = new users(); $active = $user->GetField($_SESSION['uid'], $err, 'active'); $activate_code = activate_code::getActivateCodeByUid($_SESSION['uid']); if ($activate_code != '' && ($active == true || $active == 't')) { $user->active = false; } $user->last_time = 'now'; $user->Update($_SESSION['uid'], $res); } //Переносим хеши ссылок на уже зафиксированные местки для юзера при выходе/входе $_ga_stat_url_hash = isset($_SESSION['ga_stat_url_hash']) ? $_SESSION['ga_stat_url_hash'] : null; session_unset(); //Воссанавливаем значение хешей ссылок if ($_ga_stat_url_hash) { $_SESSION['ga_stat_url_hash'] = $_ga_stat_url_hash; } if (!$save_cookie) { uncookie(); } }
/** * Оплата услуг. * * @param array $order Данные по оплачивоемой услуге * * @return bool */ public function paymentOrder($order) { $_op_code = self::getOpCodeByDiscount($order['op_code']); switch ($_op_code) { // Верификация банковской картой через ЯКассу case 191: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment']); if (!$error) { $success = true; //Устанавливаем флаг верификации require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $verify = new Verification(); $verify->cardYK($this->user['uid']); //Обновляем сессию //@todo: эта штука не работает! $session = new session(); $session->UpdateVerification($this->user['login']); //Обновляем имя и фамилию $fio = mb_unserialize($order['option']); if (isset($fio['uname']) && isset($fio['usurname'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $u = new users(); $u->GetUserByUID($this->user['uid']); $u->uname = $fio['uname']; $u->usurname = $fio['usurname']; $u->Update($this->user['uid'], $db_errors); } //Назначаем возврат require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing/BillPayback.php'; BillPayback::getInstance()->requestPayback($order['id'], $this->paymentSysParams['invoiceId'], $order['ammount']); } break; //------------------------------------------------------------------ // Верификация через FF //------------------------------------------------------------------ // Верификация через FF case 117: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Verification.php'; $error = $this->account->Buy($account_operation_id, $this->transaction, Verification::FF_OP_CODE, $this->user['uid'], $order['comment'], $order['descr'], 1, 0); $verify = new Verification(); $verify->data = unserialize($order['option']); $this->_db->query('UPDATE verify_ff SET is_pro = ?, bill_id = ? WHERE id = ?', false, $account_operation_id, $order['src_id']); if ($verify->verify($this->user['uid'])) { $this->_db->query('UPDATE verify_ff SET result = TRUE WHERE id = ?', $order['src_id']); $success = true; } break; //------------------------------------------------------------------ // Конкурс //------------------------------------------------------------------ // Конкурс case 9: case 106: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: // Платный конкурс // Платный конкурс case 86: // Платный проект (вакансия, устаревший опкод) // Платный проект (вакансия, устаревший опкод) case 53: //Покупка вакансии //Покупка вакансии case 113: //пользователь не PRO //пользователь не PRO case 192: //пользователь PRO //Платные услуги проектов //пользователь PRO //Платные услуги проектов case 138: case 139: case 140: case 141: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php'; // Публикуем платный проект if ($order['parent_table'] == 'draft_projects') { $draft_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->initFromDraft($draft_id, $this->user['uid']); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = false; // Нет конкурса значит его уже опубликовали и оплатили, оставляем деньги на личном счете if ((int) $tproject['prj_id'] <= 0) { // Не тратим деньги на такой конкурс if ($tmpPrj->isKonkurs() && strtotime($tproject['end_date']) <= time()) { $success = true; break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; // Отработали все по конкурсу удаляем его чтобы не мешал (после отработки всех операций) $this->setAfterQuery($this->_db->parse('DELETE FROM draft_projects WHERE id = ? AND uid = ?', $draft_id, $this->user['uid']), $order['parent_id']); $sql = 'UPDATE draft_projects SET prj_id = ? WHERE id = ? AND uid = ?'; $this->_db->query($sql, $proj['id'], $draft_id, $this->user['uid']); } else { $success = true; } } elseif ($order['parent_table'] == 'projects') { $prj_id = $order['parent_id']; $this->project_key = md5(uniqid($this->user['uid'])); $tmpPrj = new tmp_project($this->project_key); $tmpPrj->setInitFromDB($prj_id); $tproject = $tmpPrj->getProject(); $isMovedToVacancy = $tmpPrj->isStateMovedToVacancy(); // Если закрыт или заблокирован не тратим деньги if ($tproject['closed'] == 't' || $tproject['is_blocked'] == 't') { $success = true; break; } switch ($order['option']) { case 'top': $tmpPrj->setAddedTopDays($order['op_count']); break; case 'logo': $LogoFile = new CFile($order['src_id']); $tmpPrj->initLogo($LogoFile, $order['descr']); break; case 'urgent': $tmpPrj->setProjectField('urgent', 't'); break; case 'hide': $tmpPrj->setProjectField('hide', 't'); break; case 'office': $tmpPrj->setProjectField('old_state', $tproject['state']); $tmpPrj->setProjectField('state', projects::STATE_PUBLIC); //Если оплачивается не перемещенная вакансия //то работаем как обычно и подымаем вверх if ($tproject['state'] != projects::STATE_MOVED_TO_VACANCY) { $tmpPrj->setProjectField('post_now', true); } break; } $error = $tmpPrj->saveProject($this->user['uid'], $proj, $this->ordersPromoCodes); $success = !$error; if ($success) { if (isset($tmpPrj->account_operation_id) && $tmpPrj->account_operation_id > 0) { $account_operation_id = $tmpPrj->account_operation_id; } switch ($order['option']) { case 'office': if ($tproject['state'] == projects::STATE_MOVED_TO_VACANCY) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->sendMovedToVacancySuccessPayed($tproject); require_once $_SERVER['DOCUMENT_ROOT'] . '/guest/models/GuestInviteModel.php'; $guestInviteModel = new GuestInviteModel(); $guestInviteModel->updateDatePublicBySrc($prj_id, array(GuestConst::TYPE_PROJECT, GuestConst::TYPE_VACANCY)); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; $autoresponse = new autoresponse(); $autoresponse->reduceByProject($prj_id); } break; } } } //Сохраняем, чтобы показать попап юзеру $memBuff = new memBuff(); $memBuff->add('bill_ok_project_' . $this->user['uid'], $proj['id']); //Если это оплата вакансии или конкусра то предлагаем еще купить платные опции if (in_array($order['option'], array('office', 'contest')) && !$isMovedToVacancy) { $memBuff->add('bill_ok_project_payed_' . $this->user['uid'], true); } break; //------------------------------------------------------------------ // Платное место в карусели //------------------------------------------------------------------ // Платное место в карусели case 65: // На главной странице $catalog = 0; case 73: // В каталоге require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php'; $payPlace = new pay_place(isset($catalog) ? $catalog : 1); $buyMain = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['comment'], $order['descr'], $order['op_count'], 0, $order['promo_code']); if ($buyMain === 0) { $options = unserialize($order['option']); if (isset($options['adHead'])) { //поддержка старого режима $success = $payPlace->addUser($this->user['uid'], $options['adHead'], $options['adText'], $options['adImg']); } else { $success = $payPlace->addUserRequest($this->user['uid'], $options); } } break; //------------------------------------------------------------------ // ПРО аккаунт фрилансеры //------------------------------------------------------------------ // ПРО аккаунт фрилансеры case 47: // Тестовый ПРО на 1 неделю if (payed::IsUserWasPro($this->user['uid'])) { return false; break; } case 15: // Про на 1 месяц (emp) // Про на 1 месяц (emp) case 48: // Про на 1 месяц (frl) // Про на 1 месяц (frl) case 118: // Про на 3 месяца (emp) // Про на 3 месяца (emp) case 49: // Про на 3 месяца (frl) // Про на 3 месяца (frl) case 119: // Про на 6 месяцeв (emp) // Про на 6 месяцeв (emp) case 50: // Про на 6 месяцев (frl) // Про на 6 месяцев (frl) case 120: // Про на 1 год (emp) // Про на 1 год (emp) case 51: // Про на 1 год (frl) // Про на 1 год (frl) case 132: // Про на 1 день (frl) // Про на 1 день (frl) case 131: // Про на 1 неделю (frl) // Про на 1 неделю (frl) case 163: // Тестовый ПРО на месяц // Тестовый ПРО на месяц case 164: // PROFI на 1 месяц require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php'; $payed = new payed(); $user = is_emp($this->user['role']) ? new employer() : new freelancer(); $success = $payed->SetOrderedTarif($this->user['uid'], $this->transaction, $order['op_count'], $order['comment'], $order['op_code'], $order['promo_code'], $error); if ($success) { if (isset($payed->account_operation_id) && $payed->account_operation_id > 0) { $account_operation_id = $payed->account_operation_id; } // Обновим сессию сразу! if (get_uid(false) == $this->user['uid']) { $_SESSION['pro_last'] = payed::ProLast($this->user['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; if ($_SESSION['pro_last']['is_freezed']) { $_SESSION['payed_to'] = $_SESSION['pro_last']['cnt']; } } else { $membuff = new memBuff(); $membuff->set('is_changed_pro_' . $this->user['uid'], true); //Этот подход не работает //$session = new session(); //$session->UpdateProEndingDate($this->user['login']); } if ($order['auto'] == 't') { $user->setPROAutoProlong('on', $this->user['uid']); } else { $user->setPROAutoProlong('off', $this->user['uid']); } //Опубликовать перемещенные вакансии при покупке ПРО //@todo: Теперь вакансии для всех платные разница лишь в цене для ПРО дешевле //поэтому отключаем публикацию после покупки ПРО //https://beta.free-lance.ru/mantis/view.php?id=28579 /* if (is_emp($this->user['role'])) { require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"); $project = new projects(); $project->publishedMovedToVacancy($this->user); }*/ //Чистим кеш каталога PROFI пользователей if ($order['op_code'] == 164) { freelancer::clearCacheProfiCatalog(); } } break; //------------------------------------------------------------------ //------------------------------------------------------------------ case 45: // рассылка по каталогу require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/masssending.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $masssending = masssending::Get($order['parent_id']); $masssending = $masssending[0]; $error = $this->account->Buy($account_operation_id, $this->transaction, masssending::OPER_CODE, $this->user['uid'], $order['descr'], $order['comment'], $masssending['pre_sum'], 0, $order['promo_code']); if ($error) { break; } masssending::UpdateAcOpID($order['parent_id'], $account_operation_id); $success = (bool) messages::Masssending($masssending['user_id'], $masssending['id'], $masssending['msgtext'], $masssending['posted_time']); break; //------------------------------------------------------------------ /* * Погашение задолженности */ //------------------------------------------------------------------ /* * Погашение задолженности */ case 135: $error = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], 1, 1, 0, 0, $order['ammount']); if (!$error) { $success = true; //Начисление погашенной комиссии и удаление блокировки ТУ require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php'; TServiceOrderModel::model()->clearDebt($this->user['uid']); } break; //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ //------------------------------------------------------------------- /* * Операции над бизнес логикой резерва средств * при успешном зачислении денег */ case 136: $success = false; $data = @$this->list_service[$order['id']]['info']; if (!$data) { break; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php'; $reserveInstance = ReservesModelFactory::getInstance($data['type']); //Уже была зарезервирована или нет нужный параметров то //ничего не покупаем деньги остаются на ЛС if (!$reserveInstance || !isset($this->paymentSysParams['invoiceId'])) { break; } //Невозможно сменить статус сделки выходим $reserveInstance->setReserveData($data); if (!$reserveInstance->allowChangeStatus(ReservesModel::STATUS_RESERVE)) { break; } $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount']); if ($ret === 0) { //Успешно купили услугу и теперь меняем статус резерва $data['invoice_id'] = $this->paymentSysParams['invoiceId']; $data['acc_op_id'] = $account_operation_id; $reserveInstance->setReserveData($data); $success = $reserveInstance->changeStatus(ReservesModel::STATUS_RESERVE); } break; //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ //------------------------------------------------------------------ /* * Завершение покупки автоответов. */ case 137: $success = false; $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $order['descr'], $order['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0 && isset($order['parent_id']) && intval($order['parent_id'])) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/autoresponse.php'; autoresponse::$db = $GLOBALS['DB']; // Активация покупки услуги автоответа if ($autoresponse = autoresponse::get($order['parent_id'])) { $autoresponse->activate(); $success = true; } } break; //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров //------------------------------------------------------------------ // Закрепление в каталоге фрилансеров case 142: // В корневом разделе // В корневом разделе case 143: // В разделе $is_spec = false; case 144: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $freelancer_binds->prepare($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount'], 1, $order['promo_code']); if ($ret === 0) { $success = $freelancer_binds->create(); } break; //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Продление закрепления в каталоге фрилансеров case 148: // В корневом разделе // В корневом разделе case 149: // В разделе $is_spec = false; case 150: // В подразделе if (!isset($is_spec)) { $is_spec = true; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); $ret = true; if ($bind_id) { $freelancer_binds->getProlongInfo($this->user['uid'], $order['src_id'], $is_spec, $order['op_count']); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], $freelancer_binds->bind_info['comment'], $order['ammount']); } if ($ret === 0) { $success = $freelancer_binds->prolong($bind_id, $order['op_count'], $order['src_id'], $is_spec); } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров //------------------------------------------------------------------ // Поднятие закрепления в каталоге фрилансеров case 151: // В корневом разделе // В корневом разделе case 152: // В разделе $is_spec = false; case 153: // В подразделе // В подразделе case 194: //Оплата из буфера if (!isset($is_spec)) { $is_spec = $order['src_id'] > 0; } $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_binds.php'; $freelancer_binds = new freelancer_binds(); $bind_id = $freelancer_binds->isUserBinded($this->user['uid'], $order['src_id'], $is_spec); if ($bind_id) { $freelancer_binds->getUpInfo($this->user['uid'], $order['src_id'], $is_spec); $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $freelancer_binds->bind_info['descr'], '', $order['ammount']); if ($ret === 0) { $success = $freelancer_binds->up($bind_id, $order['src_id'], $is_spec); } } break; //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг //------------------------------------------------------------------ // Закрепление/продление в каталоге услуг case 155: // В лендинге // В лендинге case 156: // В корневом разделе // В корневом разделе case 157: // В разделе // В разделе case 158: // В подразделе $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $option = unserialize($order['option']); $tservice_id = isset($option['tservice_id']) ? $option['tservice_id'] : $order['option']; $is_prolong = isset($option['is_prolong']) ? $option['is_prolong'] : false; $tservices_binds->prepare($this->user['uid'], $tservice_id, $order['src_id'], $order['op_count'], $is_prolong); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $is_prolong ? $tservices_binds->update() : $tservices_binds->create(); } } break; //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг //------------------------------------------------------------------ // Поднятие закрепления в каталоге услуг case 159: // В лендинге // В лендинге case 160: // В корневом разделе // В корневом разделе case 161: // В разделе // В разделе case 162: // В подразделе // В подразделе case 193: //Оплата из буфера $success = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices_binds.php'; $tservices_binds = new tservices_binds(tservices_binds::KIND_LANDING); $tservices_binds->setKindByOpCode($_op_code); $bind = $tservices_binds->getItemById($order['src_id']); $tservices_binds->makeUpInfo($bind); if ($tservices_binds->bind_info) { $ret = $this->account->Buy($account_operation_id, $this->transaction, $order['op_code'], $this->user['uid'], $tservices_binds->bind_info['descr'], $tservices_binds->bind_info['comment'], $order['ammount']); if ($ret === 0) { $success = $tservices_binds->update(); } } break; } if ($success) { $update = array('status' => self::STATUS_COMPLETE); $this->update($order['id'], $update); $memBuff = new memBuff(); $memBuff->delete('last_operation_' . $order['uid'] . '_' . $order['service']); //Если только что была оплата из яндекс.кассы if ($this->paymentSysParams['invoiceId']) { //Фиксируем ID транзакции $label = op_codes::getLabel($order['op_code']); if (isset($account_operation_id) && $account_operation_id > 0) { $label = (empty($label) ? '' : "{$label},") . "trans_{$account_operation_id}"; } // Посылаем данные о покупке в google analytics $this->_db->query("SELECT pgq.insert_event('statistic', 'service_payed', ?)", http_build_query(array('is_emp' => is_emp($this->user['role']), 'label' => $label, 'ammount' => floatval($order['ammount']), 'cid' => $this->getCid()))); } } return $success; }
$promo = __paramInit('string', 'promo', 'promo'); $scrollToPay = __paramInit('bool', 'pay_services', 'pay_services', false); $draft_id = intval(__paramInit('int', 'draft_id', 'draft_id')); $auto_draft = intval(__paramInit('int', 'auto_draft', 'auto_draft')); if (!$key) { $key = md5(uniqid($uid)); // ключ-идентификатор создаваемого/редактируемого проекта, для хранения в кэше. if ($step == 1 && !$proj_id) { // если с нулевого шага пришли. Не передаем ключ оттуда сразу, т.к. юзер может несколько // несколько проектов сразу открыть, в этом случае ключ должен быть уникальным. header("Location: /public/?step=1&kind={$kind}" . ($exec ? "&exec={$exec}" : '') . "&pk={$key}&" . ($auto_draft ? 'auto_draft=1&' : '') . ($draft_id ? 'draft_id=' . $draft_id . '&' : '') . ($hash ? 'hash=' . $hash . '&' : '') . "red=" . urlencode($back)); exit; } } $pprm = '&pk=' . $key; $tmpPrj = new tmp_project($key); if (!($project = $tmpPrj->init($step, $proj_id))) { $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; }
public function paidOperation($id) { global $DB; if (!$id) { return false; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; $operation = $DB->row('SELECT * FROM draft_account_operations WHERE id = ? AND status IS NULL', $id); $account = new account(); $this->_transactionId = $account->start_transaction($_SESSION['uid'], $this->_transactionId); switch ($operation['op_type']) { case 'project': $project = $DB->row('SELECT id, payed_info FROM projects WHERE id = ?i', $operation['parent']); if (!$project['id']) { return 'Ошибка обработки операции.'; } if ($account->sum >= $operation['ammount']) { if ($error = $account->Buy($bill_id, $this->_transactionId, $operation['op_code'], $_SESSION['uid'], trim($operations['descr'], '/'), trim($operations['comments'], '/'), 1, true)) { return $error; } } if (!$bill_id) { return 'Не хватает денег.'; } $update = array(); switch ($operation['option']) { case 'color': $update['is_color'] = true; $update['payed_items'] = $project['payed_info'] | '010'; break; case 'bold': $update['is_bold'] = true; $update['payed_items'] = $project['payed_info'] | '001'; break; case 'top': $update['top_from'] = date('d.m.Y H:i', strtotime('now')); $update['top_to'] = date('d.m.Y H:i', strtotime("now +{$operation['op_count']} day")); break; case 'logo': $update['logo_id'] = $operation['src_id']; $update['payed_items'] = $project['payed_info'] | '100'; break; } $update['billing_id'] = $bill_id; $DB->update('projects', $update, 'id = ?', $operation['parent']); header('Location: /bill/success/'); exit; break; case 'contest': // Публикация конкурса if ($account->sum >= $operation['ammount']) { if ($error = $account->Buy($bill_id, $this->_transactionId, $operation['op_code'], $_SESSION['uid'], trim($operations['descr'], '/'), trim($operations['comments'], '/'), 1, true)) { return $error; } } if (!$bill_id) { return 'Не хватает денег.'; } $key = md5(microtime()); $prj = new tmp_project($key); if (get_uid()) { $prj->init(1); } $draft = new drafts(); $project = $drafts->getDraft($operation['parent'], $_SESSION['uid'], 1); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $attachedfiles = new attachedfiles(); $attachedfiles_tmpdraft_files = drafts::getAttachedFiles($operation['parent'], 4); if ($attachedfiles_tmpdraft_files) { $attachedfiles_prj_files = array(); foreach ($attachedfiles_tmpdraft_files as $attachedfiles_draft_file) { $attachedfiles_draft_files[] = $attachedfiles_draft_file; } $attachedfiles->setFiles($attachedfiles_draft_files, 1); } $insert = array('user_id' => $_SESSION['uid'], 'name' => $project['name'], 'descr' => $project['descr'], 'kind' => $project['kind'], 'cost' => $project['cost'], 'currency' => $project['currency'], 'country' => $project['country'] > 0 ? $project['country'] : 'NULL', 'city' => $project['city'] > 0 ? $project['city'] : 'NULL', 'payed' => '0', 'pro_only' => $project['pro_only'], 'logo_id' => 'NULL', 'link' => $project['logo_link'], 'is_color' => 'f', 'is_bold' => 'f', 'billing_id' => 0, 'payed_items' => '000', 'folder_id' => 0, 'budget_type' => $project['budget_type'], 'priceby' => $project['priceby'], 'prefer_sbr' => $project['prefer_sbr'], 'end_date' => $project['p_end_date'], 'win_date' => $project['p_win_date']); if (!empty($project['categories'])) { $cat = explode('|', $project['categories']); $categories[0] = array('category_id' => intval($cat[0]), 'subcategory_id' => intval($cat[1])); } $create = $prj->addPrj($insert, $attachedfiles_draft_files, $categories); // Добавляем проект if ($create) { $drafts->DeleteDraft($draft_id, $uid, 1); header('Location: /bill/success/'); exit; } break; case 'account': // Покупка ПРО break; } }
$back = __paramInit('string', 'red', 'red', ''); $key = __paramInit('string', 'pk', 'pk'); $draft_id = intval(__paramInit('int', 'draft_id', 'draft_id')); $auto_draft = intval(__paramInit('int', 'auto_draft', 'auto_draft')); if (!$key) { $key = md5(uniqid($uid)); // ключ-идентификатор создаваемого/редактируемого проекта, для хранения в кэше. if ($step == 1 && !$proj_id) { // если с нулевого шага пришли. Не передаем ключ оттуда сразу, т.к. юзер может несколько // несколько проектов сразу открыть, в этом случае ключ должен быть уникальным. header("Location: /public/?step=1&kind={$kind}&pk={$key}&" . ($auto_draft ? 'auto_draft=1&' : '') . ($draft_id ? 'draft_id=' . $draft_id . '&' : '') . "red=" . urlencode($back)); exit; } } $pprm = '&pk=' . $key; $tmpPrj = new tmp_project($key); if (!($project = $tmpPrj->init($step, $proj_id))) { //$error = 'no_emp'; include "../emp_only.php"; exit; } if ($proj_id && projects::isProjectOfficePostedAfterNewSBR($project) && !hasPermissions('projects')) { header("Location: /404.php"); exit; } if ($proj_id && $tmpPrj->isKonkurs() && !$tmpPrj->isActiveKonkurs() && !hasPermissions('projects')) { $error = 'contest_closed'; $content = "error.php"; include "../template2.php"; exit; }
function quickprjedit_get_prj($prj_id) { $objResponse = new xajaxResponse(); if (hasPermissions('projects')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; $categories = professions::GetAllGroupsLite(); $professions = professions::GetAllProfessions(); array_group($professions, 'groupid'); $professions[0] = array(); $oprj = new new_projects(); $project = $oprj->getPrj($prj_id); if ($project['id']) { $project_categories = $oprj->getSpecs($project['id']); if (empty($project_categories)) { $project_categories[] = array('category_id' => 0, 'subcategory_id' => 0); } $html_categories = ''; foreach ($project_categories as $project_category) { $html_categories .= "<div id='category_line'>\n <select name='categories[]' class='b-select__select b-select__select_width_180' onchange='popupQEditPrjRefreshSubCategory(this);'>\n <option value='0'>Выберите раздел</option>\n "; foreach ($categories as $cat) { if ($cat['id'] <= 0) { continue; } $html_categories .= "<option value='{$cat['id']}' " . ($project_category['category_id'] == $cat['id'] ? ' selected' : '') . ">{$cat['name']}</option>"; } $html_categories .= "</select>\n <select name='subcategories[]' class='b-select__select b-select__select_width_180'>\n "; $categories_specs = $professions[$project_category['category_id']]; for ($i = 0; $i < sizeof($categories_specs); ++$i) { $html_categories .= "<option value='{$categories_specs[$i]['id']}'" . ($categories_specs[$i]['id'] == $project_category['subcategory_id'] ? ' selected' : '') . ">{$categories_specs[$i]['profname']}</option>"; } $html_categories .= " <option value='0' " . ($project_category['subcategory_id'] == 0 ? ' selected' : '') . '>Все специализации</option> </select> </div> '; } $countries = country::GetCountries(); if ($project['country']) { $cities = city::GetCities($project['country']); } $html_location = ''; $html_location .= "<div><select id='popup_qedit_prj_fld_country' name='country' onChange='popupQEditPrjCityUpd(this.value);'><option value='0'>Страна</option>"; foreach ($countries as $country_id => $country) { $html_location .= "<option value='{$country_id}' " . ($country_id == $project['country'] ? 'selected' : '') . ">{$country}</option>"; } $html_location .= '</select></div>'; $html_location .= "<div id='frm_city'><select name='city'><option value='0'>Город</option>"; if ($cities) { foreach ($cities as $city_id => $city) { $html_location .= "<option value='{$city_id}' " . ($city_id == $project['city'] ? 'selected' : '') . ">{$city}</option>"; } } $html_location .= '</select>'; $objResponse->assign('popup_qedit_prj_fld_id', 'value', $project['id']); $objResponse->assign('popup_qedit_prj_fld_name', 'value', htmlspecialchars_decode($project['name'], ENT_QUOTES)); $objResponse->assign('popup_qedit_prj_fld_descr', 'value', htmlspecialchars_decode($project['descr'], ENT_QUOTES)); $objResponse->assign('popup_qedit_prj_fld_categories', 'innerHTML', $html_categories); $objResponse->assign('popup_qedit_prj_fld_location', 'innerHTML', $html_location); $objResponse->script('$("popup_qedit_prj_fld_kind_1").set("checked", false);'); switch ($project['kind']) { case 1: $objResponse->script('$("popup_qedit_prj_cal1").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_cal2").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_kind").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_fld_kind_1").set("checked", true);'); $objResponse->script('$("popup_qedit_prj_fld_location").setStyle("display", "none");'); break; case 2: //$objResponse->script('$("sbr_text_block").setStyle("display", "none");'); break; case 4: $objResponse->script('$("popup_qedit_prj_cal1").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_cal2").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_kind").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_fld_kind_2").set("checked", true);'); $objResponse->script('$("popup_qedit_prj_fld_location").setStyle("display", "block");'); break; case 7: $objResponse->script('$("popup_qedit_prj_cal1").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_cal2").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_kind").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_fld_location").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_fld_end_date").set("value", "' . date('d-m-Y', strtotime($project['end_date'])) . '");'); $objResponse->script('$("popup_qedit_prj_fld_win_date").set("value", "' . date('d-m-Y', strtotime($project['win_date'])) . '");'); break; } if ($project['pro_only'] == 't') { $objResponse->script('$("popup_qedit_prj_fld_pro_only").set("checked", true);'); } else { $objResponse->script('$("popup_qedit_prj_fld_pro_only").set("checked", false);'); } if ($project['verify_only'] == 't') { $objResponse->script('$("popup_qedit_prj_fld_verify_only").set("checked", true);'); } else { $objResponse->script('$("popup_qedit_prj_fld_verify_only").set("checked", false);'); } if ($project['prefer_sbr'] == 't') { $objResponse->script('$("popup_qedit_prj_fld_prefer_sbr").set("checked", true);'); } else { $objResponse->script('$("popup_qedit_prj_fld_prefer_sbr").set("checked", false);'); } if ($project['strong_top'] == 1) { $objResponse->script('$("popup_qedit_prj_fld_strong_top").set("checked", true);'); } else { $objResponse->script('$("popup_qedit_prj_fld_strong_top").set("checked", false);'); } /*if($project['prefer_sbr']=='t') { $objResponse->script('$("popup_qedit_prj_fld_prefer_sbr").set("checked", true);'); } else { $objResponse->script('$("popup_qedit_prj_fld_prefer_sbr").set("checked", false);'); }*/ $objResponse->script("var mx = new MultiInput('popup_qedit_prj_fld_categories','category_line', " . (int) ($project['is_pro'] === 't') . '); mx.init();'); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $attchedfiles = new attachedfiles($attachedfiles_session); $attachedfiles_tmpprj_files = $oprj->GetAllAttach($project['id']); if ($attachedfiles_tmpprj_files) { $attachedfiles_prj_files = array(); foreach ($attachedfiles_tmpprj_files as $attachedfiles_prj_file) { $attachedfiles_prj_files[] = $attachedfiles_prj_file['file_id']; } $attchedfiles->setFiles($attachedfiles_prj_files); } $attachedfiles_files = $attchedfiles->getFiles(); $js_attachedfiles = 'attachedfiles_list = [];'; if ($attachedfiles_files) { $n = 0; foreach ($attachedfiles_files as $attachedfiles_file) { $js_attachedfiles .= "attachedfiles_list[{$n}] = new Object;\n"; $js_attachedfiles .= "attachedfiles_list[{$n}].id = '" . md5($attachedfiles_file['id']) . "';\n"; $js_attachedfiles .= "attachedfiles_list[{$n}].name = '{$attachedfiles_file['orig_name']}';\n"; $js_attachedfiles .= "attachedfiles_list[{$n}].path = '" . WDCPREFIX . "/{$attachedfiles_file['path']}{$attachedfiles_file['name']}';\n"; $js_attachedfiles .= "attachedfiles_list[{$n}].size = '" . ConvertBtoMB($attachedfiles_file['size']) . "';\n"; $js_attachedfiles .= "attachedfiles_list[{$n}].type = '{$attachedfiles_file['type']}';\n"; ++$n; } } $objResponse->script($js_attachedfiles); $objResponse->script("attachedFiles.init('popup_qedit_prj_attachedfiles', '" . $attchedfiles->getSession() . "', attachedfiles_list, " . tmp_project::MAX_FILE_COUNT . ', ' . tmp_project::MAX_FILE_SIZE . ",'" . implode(', ', $GLOBALS['disallowed_array']) . "', 'project', " . get_uid(false) . ');'); if ($project['is_color'] == 't') { $objResponse->script("\$('popup_qedit_prj_is_color').set('checked', true); popupQEditPrjToggleIsColor();"); } else { $objResponse->script("\$('popup_qedit_prj_is_color').set('checked', false); popupQEditPrjToggleIsColor();"); } if ($project['is_bold'] == 't') { $objResponse->script("\$('popup_qedit_prj_is_bold').set('checked', true); popupQEditPrjToggleIsBold();"); } else { $objResponse->script("\$('popup_qedit_prj_is_bold').set('checked', false); popupQEditPrjToggleIsBold();"); } if ($project['hide'] == 't') { $objResponse->script("\$('popup_qedit_prj_is_hide').set('checked', true); "); } else { $objResponse->script("\$('popup_qedit_prj_is_hide').set('checked', false); "); } if ($project['urgent'] == 't') { $objResponse->script("\$('popup_qedit_prj_is_urgent').set('checked', true); "); } else { $objResponse->script("\$('popup_qedit_prj_is_urgent').set('checked', false); "); } $objResponse->assign('popup_qedit_prj_logolink', 'value', $project['link']); $key = md5(uniqid($uid)); $tmpPrj = new tmp_project($key); $tmpPrj->init(1, $project['id']); $remTPeriod = $tmpPrj->getRemainingTopPeriod($remTD, $remTH, $remTM, $remtverb); $addedTD = $tmpPrj->getAddedTopDays(); $objResponse->assign('popup_qedit_prj_fld_tmpid', 'value', $key); if ($remTPeriod || $addedTD) { $objResponse->script('$("popup_qedit_prj_top_ok").set("checked", true);'); $objResponse->script('$("popup_qedit_prj_top_ok").set("disabled", true);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1_days").set("value", "1");'); $objResponse->script('$("popup_qedit_prj_top_ok_icon").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1_days").set("disabled", true);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_c").set("checked", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_c").set("disabled", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_days").set("disabled", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_days").set("value", "1");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_left").set("html", "' . $remtverb . ' ' . $remTPeriod . '");'); } else { $objResponse->script('$("popup_qedit_prj_top_ok").set("checked", false);'); $objResponse->script('$("popup_qedit_prj_top_ok").set("disabled", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1_days").set("value", "1");'); $objResponse->script('$("popup_qedit_prj_top_ok_icon").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_top_ok_tab1_days").set("disabled", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_c").set("checked", false);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_c").set("disabled", true);'); $objResponse->script('$("popup_qedit_prj_top_ok_tab2_days").set("disabled", true);'); } if ($project['logo_id']) { $logo = $tmpPrj->getLogo(); $objResponse->script('$("popup_qedit_prj_use_logo_src").set("href", "' . WDCPREFIX . '/' . $logo['path'] . $logo['name'] . '");'); $objResponse->script('$("popup_qedit_prj_use_logo").set("checked", true);'); $objResponse->script('$("popup_qedit_prj_use_logo").set("disabled", true);'); $objResponse->script('$("popup_qedit_prj_use_logo_tab").setStyle("display", "block");'); $objResponse->script('$("popup_qedit_prj_use_logo_tab2").setStyle("display", "none");'); } else { $objResponse->script('$("popup_qedit_prj_use_logo").set("checked", false);'); $objResponse->script('$("popup_qedit_prj_use_logo").set("disabled", false);'); $objResponse->script('$("popup_qedit_prj_use_logo_tab").setStyle("display", "none");'); $objResponse->script('$("popup_qedit_prj_use_logo_tab2").setStyle("display", "none");'); } $tmpPrj->fix(); $objResponse->call('center_popup', '.b-shadow_center-quick'); } } return $objResponse; }
<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; session_start(); $uid = get_uid(false); $error = ''; if ($uid && hasPermissions('projects') && $_POST['tmpid']) { $key = $_POST['tmpid']; $tmpPrj = new tmp_project($key); $prj = $tmpPrj->init(1); if ($prj['id']) { switch ($_POST['tmpaction']) { case 'del': $tmpPrj->delLogo(); $tmpPrj->fix(); break; case 'upload': if (__paramInit('bool', NULL, 'use_logo')) { if (!$_FILES['logo']['size']) { $error = 'Необходимо выбрать файл'; } elseif ($err = $tmpPrj->setLogo(new CFile($_FILES['logo']))) { $error = $err; } $tmpPrj->fix(); $logo = $tmpPrj->getLogo(); $logourl = WDCPREFIX . '/' . $logo['path'] . $logo['name']; } break; } }
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 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'])); }
public function transferProjects() { $projects = $this->getCreatedProjects(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php'; if ($projects) { $key = md5(microtime()); $prj = new tmp_project($key); $this->setPath(); foreach ($projects as $k => $project) { $files = $this->getProjectAttach($project['id']); if ($project['kind'] == 7) { $tmp_dir = $this->tmpAbsDir; } else { $tmp_dir = $this->dstAbsDir; } if ($files) { $table = 'file_projects'; $files = $this->transferFiles($files, $table, $tmp_dir); } if ($project['kind'] != 7) { $attach = array_map(create_function('$a', 'return array("file_id" => $a["id"]);'), $files); $insert = array('user_id' => $_SESSION['uid'] ? $_SESSION['uid'] : $_SESSION['RUID'], 'name' => addslashes($project['name']), 'descr' => addslashes($project['descr']), 'kind' => $project['kind'], 'cost' => $project['cost'], 'currency' => $project['currency'], 'country' => $project['country'] > 0 ? $project['country'] : 'NULL', 'city' => $project['city'] > 0 ? $project['city'] : 'NULL', 'payed' => '0', 'pro_only' => $project['pro_only'], 'logo_id' => 'NULL', 'link' => $project['logo_link'], 'is_color' => 'f', 'is_bold' => 'f', 'billing_id' => 0, 'payed_items' => '000', 'folder_id' => 0, 'budget_type' => $project['budget_type'], 'priceby' => $project['priceby'], 'prefer_sbr' => $project['prefer_sbr']); $cat = explode('|', $project['categories']); $categories[0] = array('category_id' => intval($cat[0]), 'subcategory_id' => intval($cat[1])); $prj->addPrj($insert, $attach, $categories); // Добавляем проект if ($insert['id']) { $delete_projects[] = $project['id']; } else { $error_project[] = "Ошибка создания проекта #{$project['id']}"; } // Проверяем платные опции если есть обновляем в отложенных операциях тк выше все операции выбранные там уже ушли туда if ($insert['id'] && ($project['is_color'] || $project['is_bold'] || $project['top_count'] > 0 || $project['logo_id'] > 0)) { $update = array('parent_id' => $insert['id']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'project' AND uid = ?", $project['id'], wizard::getUserIDReg()); if ($project['logo_link']) { $update = array('extra' => $project['logo_link']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND option = 'logo' AND uid = ?", $contest['id'], wizard::getUserIDReg()); } } // Если это конкурс он сразу идет в черновики } else { $draft = new drafts(); $cat = explode('|', $project['categories']); $insert = array('uid' => $_SESSION['uid'] ? $_SESSION['uid'] : $_SESSION['RUID'], 'name' => addslashes($project['name']), 'descr' => addslashes($project['descr']), 'kind' => $project['kind'], 'cost' => $project['cost'], 'currency' => $project['currency'], 'country' => $project['country'], 'end_date' => $project['end_date'], 'win_date' => $project['win_date'], 'city' => $project['city'], 'pro_only' => $project['pro_only'] == 't' ? 1 : 0, 'budget_type' => $project['budget_type'], 'priceby' => $project['priceby'], 'prefer_sbr' => $project['prefer_sbr'], 'categories' => array(0 => $cat[0]), 'subcategories' => array(0 => $cat[1]), 'logo_id' => $project['logo_id'], 'link' => $project['logo_link']); $contest = $draft->SaveProject($insert, $files); if ($contest['id']) { $delete_projects[] = $project['id']; } else { $error_project[] = "ошибка создания конкурса #{$project['id']}"; } // Проверяем платные опции если есть пишем в отложенные платежи if ($contest['id'] && ($project['is_color'] || $project['is_bold'] || $project['top_count'] > 0 || $project['logo_id'] > 0)) { $update = array('parent_id' => $contest['id']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND uid = ?", $project['id'], wizard::getUserIDReg()); if ($project['logo_link']) { $update = array('extra' => $project['logo_link']); $this->_db->update('draft_account_operations', $update, "parent_id = ? AND op_type = 'contest' AND option = 'logo' AND uid = ?", $contest['id'], wizard::getUserIDReg()); } } } } if ($delete_projects) { $this->_db->query('DELETE FROM wizard_projects WHERE id IN (?l) AND wiz_uid = ?', $delete_projects, $this->getWizardUserID()); } if ($error_projects) { foreach ($error_projects as $error) { $this->log->writeln('Error transfer projects content () - user (' . wizard::getUserIDReg() . '|' . $this->getWizardUserID() . ") - Error: {$error}"); } } } return $error; }