function NewAdvice($to_user, $msgtext) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr.php"; $objResponse = new xajaxResponse(); $to_user = intval($to_user); $sbr = new sbr(get_uid(false)); $isReqvsFilled = !$sbr->checkUserReqvs(); if ($isReqvsFilled && !is_emp($_SESSION['role'])) { $objResponse->call('alert', 'Заполните раздел «Финансы»'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (!$to_user) { $objResponse->call('alert', 'Ошибка'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (is_empty_html($msgtext)) { $objResponse->call('alert', 'Вы не заполнили форму.'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (strlen_real($msgtext) > paid_advices::MAX_DESCR_ADVICE) { $objResponse->call('alert', 'Рекомендация не должна быть больше ' . paid_advices::MAX_DESCR_ADVICE . ' символов'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } $advice = new paid_advices(); $new = $advice->add($to_user, $msgtext); if ($new === false) { $objResponse->call('alert', 'Ошибка отправки рекомендации.'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } $objResponse->call('newAdviceResp', $res); return $objResponse; }
/** * Сохранение предложений фрилансеров Сделаю * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aForm массив данных * @param string $sDrawFunc имя функции для выполнения после сохранения */ function _admEditSdelauSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php'; $alert = array(); if (trim($aForm['name']) == '') { $alert[1] = 'Поле не заполнено'; } elseif (strlen($aForm['name']) > freelancer_offers::MAX_SIZE_TITLE) { $alert[1] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_TITLE; } if (trim($aForm['msg']) == '') { $alert[2] = 'Поле не заполнено'; } elseif (strlen_real($aForm['msg']) > freelancer_offers::MAX_SIZE_DESCRIPTION) { $alert[2] = 'Максимальное количество символов ' . freelancer_offers::MAX_SIZE_DESCRIPTION; } if ($aForm['categories'] == 0) { $alert[3] = 'Не выбран раздел и подраздел'; } if (!$alert) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $oFreelancerOffers = new freelancer_offers(); $update = array('title' => $aForm['name'], 'descr' => $aForm['msg'], 'category_id' => intval($aForm['categories']), 'subcategory_id' => intval($aForm['subcategories']), 'modify_date' => date('Y-m-d H:i:s')); $oFreelancerOffers->Update(intval($rec_id), $update); $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']); messages::sdelauModifiedNotification($aForm['msg'], $aForm['login'], $aForm['uname'], $aForm['usurname'], $sReason); $content_id = user_content::MODER_SDELAU; _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm); } else { _setErrors($objResponse, $alert, array(1 => 'name', 2 => 'msg', 3 => 'categories'), $sDrawFunc); } }
/** * Обновление заметки о пользователе на главной странице сообществ. * * @param integer $user_id - uid пользователя * @param integer $commune_id - id сообщества * @param string $note - заметка * * @return xajaxResponse */ function UpdateNoteMP($user_id, $commune_id, $note) { $objResponse = new xajaxResponse(); if (get_uid(false) != $user_id) { return $objResponse; } $note = change_q_x(stripcslashes($note), FALSE, TRUE, '', false, false); if (strlen_real($note) > commune::MEMBER_NOTE_MAX_LENGTH) { $objResponse->alert('Максимальное количество символов ' . commune::MEMBER_NOTE_MAX_LENGTH); $objResponse->script('$("ne2' . $user_id . '").getElement("textarea").disabled=false;'); return $objResponse; } if (commune::UpdateNoteMP($user_id, $commune_id, $note)) { if (preg_match) { $objResponse->assign("ne1{$user_id}", 'innerHTML', reformat(stripslashes($note), 20, 0, 0, 1, 15)); $objResponse->script(' memberNoteForm(' . $user_id . '); $("ne2' . $user_id . '").getElement("textarea").disabled=false; '); } } return $objResponse; }
exit; } $content = "tpl.public-offers.php"; $js_file = array('tawl.js'); if ($action) { if ($_POST['action']) { if (trim($_POST['title']) == "") { $error['title'] = true; } if (trim($_POST['descr']) == "") { $error['descr'] = true; } if ($_POST['categories'] == 0) { $error['categories'] = true; } if (strlen_real($_POST['descr']) > freelancer_offers::MAX_SIZE_DESCRIPTION) { $error['descr_max'] = true; } if (strlen($_POST['title']) > freelancer_offers::MAX_SIZE_TITLE) { $error['title_max'] = true; } } if ($action != "create" && $action != "update" && $fid) { $offer = $frl_offers->getOfferById($fid); if (!$offer) { include $error_page; exit; } } switch ($action) { case "create":
$error['cost'] = 'Введите положительную сумму'; } if ($project['cost'] > 999999) { $error['cost'] = 'Слишком большая сумма'; } if ($project['cost'] > 0 && ($project['currency'] < 0 || $project['currency'] > 3)) { $error['currency'] = 'Валюта не определена'; } if (is_empty_html($project['descr'])) { $error['descr'] = 'Поле не заполнено'; } if (is_empty_html($project['name'])) { $error['name'] = 'Поле не заполнено'; } $descr_limit = !$PDA ? 5000 : 2500; if (strlen_real($project['descr']) > $descr_limit) { $error['descr'] = "Исчерпан лимит символов ({$descr_limit})"; } if ($project['kind'] == 7) { $tmpPrj->setProjectField('end_date', str_replace('.', '-', __paramInit('string', NULL, 'end_date')), 0, 64); $tmpPrj->setProjectField('win_date', str_replace('.', '-', __paramInit('string', NULL, 'win_date')), 0, 64); $project = $tmpPrj->getProject(); $pExrates = project_exrates::getAll(); if ($project['currency'] == 0) { // USD $costRub = $project['cost'] * $pExrates['24']; // бюджет в рублях } elseif ($project['currency'] == 1) { // EURO $costRub = $project['cost'] * $pExrates['34']; } else {
/** * Добавление сообщения в диалог предложения к проекту. * * @param integer $po_id id предложения к проекту * @param integer $user_id id пользователя * @param string $message текст сообщения * @param boolean $frl_read пометка о прочтении фрилансером * @param boolean $emp_read пометка о прочтении работодателем * @param boolean $emp_read пометка о корневом сообщении - само предложение * * @return string пустая строка если метод выполнен успешно или сообщение об ошибке */ public function AddDialogueMessage($po_id, $user_id, $message, $frl_read = false, $emp_read = false, $root = false) { global $DB; $message = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $message); $message = rtrim(ltrim($message, "\r\n")); if (strlen_real($message) > 1000) { $message = substr(stripcslashes($message), 0, 1000); } $message = change_q_x(stripcslashes($message), false, true, '', false, false); $sql = 'SELECT po.user_id AS frl, p.user_id AS emp, e.is_pro AS emp_is_pro, f.is_pro AS frl_is_pro FROM projects_offers po LEFT JOIN projects p ON p.id = po.project_id LEFT JOIN employer e ON e.uid = p.user_id LEFT JOIN freelancer f ON f.uid = po.user_id WHERE po.id = ?i LIMIT 1'; $users = $DB->row($sql, $po_id); $nStopWordsCnt = 0; if (!$root && $users['emp_is_pro'] != 't' && $users['frl_is_pro'] != 't') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php'; $stop_words = new stop_words(); $nStopWordsCnt = $stop_words->calculate($message); } $sModVal = $root || $users['emp_is_pro'] == 't' || $users['frl_is_pro'] == 't' || !$nStopWordsCnt ? null : 0; $sId = $DB->insert('projects_offers_dialogue', array('po_id' => $po_id, 'user_id' => $user_id, 'post_text' => (string) $message, 'frl_read' => (bool) $frl_read, 'emp_read' => (bool) $emp_read, 'root' => (bool) $root, 'moderator_status' => $sModVal), 'id'); if ($sId && !$root && $users['emp_is_pro'] != 't' && $users['frl_is_pro'] != 't' && $nStopWordsCnt) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $GLOBALS['DB']->insert('moderation', array('rec_id' => $sId, 'rec_type' => user_content::MODER_PRJ_DIALOG, 'stop_words_cnt' => $nStopWordsCnt)); } // стираем мемкеш $memBuff = new memBuff(); if ((int) $users['frl'] !== (int) $user_id) { $memBuff->delete("prjMsgsCnt{$users['frl']}"); $memBuff->delete("prjMsgsCntWst{$users['frl']}"); } elseif ((int) $users['emp'] !== (int) $user_id) { $memBuff->delete("prjMsgsCnt{$users['emp']}"); $memBuff->delete("prjLastMess{$users['emp']}"); } return $GLOBALS['DB']->error; }
/** * Добавление проекта * * @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'])); }
} if ($files) { if (!($err = tryLoadFile($files, 'upload', $user_login, $attach_name, $small, commune::MSG_IMAGE_MAX_WIDTH, commune::MSG_IMAGE_MAX_HEIGHT, commune::MSG_FILE_MAX_SIZE))) { //$request['small'] = $small; } else { $alert['attach'] = $err; $attach_name = NULL; } } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $attachedfiles = new attachedfiles($_POST['attachedfiles_session']); $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4)); //$question = change_q_x_a(antispam(trim((string) $question)), false, false, ''); if (strlen_real($question) > commune::POLL_QUESTION_CHARS_MAX) { $len = strlen($question); $rlen = strlen_real($question); $question = substr($question, 0, $len - ($rlen - commune::POLL_QUESTION_CHARS_MAX)); } $answers = array(); $answers_exists = array(); $multiple = (bool) $_POST['multiple']; $acount = 0; if ($request['answers'] && is_array($request['answers'])) { foreach ($request['answers'] as $key => $answer) { if (trim($answer) != '') { $answers[] = __paramValue('string', $answer, commune::POLL_ANSWER_CHARS_MAX * 2); ++$acount; } else { unset($request['answers'][$key]); } }
/** * Обработка информации шага проекты. */ public function actionProjects() { $prj_id = $_SESSION['view_wizard_project']; if (!$prj_id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; $prj_exrates = project_exrates::GetAll(); $categories = professions::GetAllGroupsLite(); $professions = professions::GetAllProfessions(); array_group($professions, 'groupid'); $professions[0] = array(); $addedPrc = is_pro() ? 0 : new_projects::PRICE_ADDED; $colorPrc = new_projects::PRICE_COLOR * ($addedPrc > 0 ? 1 : 0); $boldPrc = new_projects::PRICE_BOLD + $addedPrc; $logoPrc = new_projects::PRICE_LOGO + $addedPrc; $cTopPrice = new_projects::PRICE_CONTEST_TOP1DAY + $addedPrc; $pTopPrice = new_projects::PRICE_TOP1DAY + $addedPrc; $action = __paramInit('string', 'action', 'action', null); $attachedfiles_session = __paramInit('string', 'attachedfiles_session', 'attachedfiles_session', false); // проверяем есть ли уже созданый проект $projects = $this->getCreatedProjects(); $existPrjID = count($projects) > 0 ? $projects[0][id] : null; // выводим ранее сохраненный проект if ($action != 'create_project' && $existPrjID) { $data = $projects[0]; list($category, $subcategory) = explode('|', $data['categories']); $currency_name = $this->CURRENCY_TYPE[$data['currency']]; $priceby_name = $this->PRICEBY_TYPE[$data['priceby']]; $data['pro_only'] = $data['pro_only'] === 't'; $price = $data['payed']; $option = array(); $option['top'] = $data['top_count'] > 0; $option['top_count'] = $data['top_count']; $option['color'] = $data['is_color'] === 't'; $option['bold'] = $data['is_bold'] === 't'; $option['logo'] = $data['logo_id'] > 0; } elseif ($action == 'create_project') { // сохраняем новый проект или изменяем старый $in_office = __paramInit('int', null, 'in_office', 0); $type = __paramInit('string', null, 'kind'); if ($type == 'contest') { $data['kind'] = 7; $data['end_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'end_date_eng_format', 0))); $data['win_date'] = date('d-m-Y', strtotime(__paramInit('string', null, 'win_date_eng_format', 0))); } elseif ($in_office == 1) { $location = __paramInit('integer', null, 'location_column_id'); if ($location == 1) { $data['city'] = __paramInit('integer', null, 'location_db_id'); $data['country'] = country::getCountryByCityId($data['city']); } else { $data['country'] = __paramInit('integer', null, 'location_db_id'); } $data['kind'] = 4; } else { $data['kind'] = 1; } $data['name'] = __paramInit('string', null, 'name'); $data['descr'] = __paramInit('string', null, 'descr'); $category = __paramInit('int', null, 'r_category'); $subcategory = __paramInit('int', null, 'r_subcategory'); $agreement = __paramInit('int', null, 'agreement', 0); $data['pro_only'] = __paramInit('int', null, 'pro_only', 0) == 1 ? true : false; if ($agreement != 1) { $data['cost'] = __paramInit('int', null, 'cost', 0); $data['priceby'] = __paramInit('int', null, 'r_priceby', 0); $data['currency'] = __paramInit('int', null, 'r_currency', 0); $data['budget_type'] = __paramInit('int', null, 'budget_type', 0); } if (is_empty_html($data['descr'])) { $error['descr'] = 'Поле не заполнено'; } if (is_empty_html($data['name'])) { $error['name'] = 'Поле не заполнено'; } // проверяем длину необработанной строки, а иначе спецсимволы считаются как несколько символов if (strlen(stripslashes($_POST['name'])) > 60) { $error['name'] = 'Превышен лимит - 60 символов'; } if (!$category) { $error['category'] = 'Не выбран раздел'; } elseif ($subcategory) { $data['categories'] = "{$category}|{$subcategory}"; } else { $data['categories'] = $category; } if ($data['cost'] < 0) { $error['cost'] = 'Введите положительную сумму'; } if ($data['cost'] > 999999) { $error['cost'] = 'Слишком большая сумма'; } if ($data['cost'] > 0 && ($data['currency'] < 0 || $data['currency'] > 3)) { $error['currency'] = 'Валюта не определена'; } if ($data['cost'] > 0 && ($data['priceby'] < 1 || $data['priceby'] > 4)) { $error['priceby'] = 'Вид бюджета не определен'; } $descr_limit = projects::LIMIT_DESCR; if (strlen_real($data['descr']) > $descr_limit) { $error['descr'] = "Исчерпан лимит символов ({$descr_limit})"; } if ($data['kind'] == 7) { if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) { $error['end_date'] = 'Неправильная дата'; } if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $data['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) { $error['win_date'] = 'Неправильная дата'; } if (!$error['end_date'] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) { $error['end_date'] = 'Дата окончания конкурса не может находиться в прошлом'; } if (!$error['win_date'] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) { $error['win_date'] = 'Дата определения победителя должна быть больше даты окончания конкурса'; } } $option['top'] = __paramInit('int', null, 'option_top', 0); $option['top_count'] = __paramInit('int', null, 'option_top_count', 0); $option['color'] = __paramInit('int', null, 'option_color', 0); $option['bold'] = __paramInit('int', null, 'option_bold', 0); $option['logo'] = __paramInit('int', null, 'option_logo', 0); // логотип if ($option['logo'] == 1) { $data['logo_link'] = str_replace('http://', '', __paramInit('string', null, 'logo_link', null)); $data['logo_id'] = __paramInit('int', null, 'logo_id', null); // если выбрана опция "Логотип со ссылкой", то картинка должна быть обязательно if (!$data['logo_id']) { $error['logo_image'] = 'Отсутствует логотип'; } if ($data['logo_link'] === 'Адрес сайта') { $data['logo_link'] = ''; } if ($data['logo_link'] !== '' && !is_url($data['logo_link'])) { $error['logo_link'] = 'Не верно введен адрес'; } } else { $data['logo_id'] = null; } $price = 0; // закрепление на верху if ($option['top'] == 1 && $option['top_count'] > 0) { if ($option['top_count'] > 999) { $option['top_count'] = 999; } $price = (int) $option['top_count'] * ($data['kind'] == 7 ? $cTopPrice : $pTopPrice); $data['top_count'] = (int) $option['top_count']; $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_TOP, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $price); } else { $data['top_count'] = 0; } // выделение цветом if ($option['color'] == 1) { $price += (int) $colorPrc; $data['is_color'] = true; $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_COLOR, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $colorPrc); } else { $data['is_color'] = false; } // выделение жирным if ($option['bold'] == 1) { $price += (int) $boldPrc; $data['is_bold'] = true; $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_BOLD, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $boldPrc); } else { $data['is_bold'] = false; } if ($option['logo'] == 1) { $price += (int) $logoPrc; $pay_option[] = array('wiz_uid' => $this->getWizardUserID(), 'op_code' => new_projects::OPCODE_PAYED, 'option' => self::PROJECT_OPTION_LOGO, 'type' => $data['kind'] == 7 ? self::BILL_TYPE_CONTEST : self::BILL_TYPE_PROJECT, 'ammount' => $logoPrc); } if ($price > 0) { $data['payed'] = (int) $price; } if (!$error) { $data['wiz_uid'] = $this->getWizardUserID(); // если проект уже есть if ($existPrjID) { // то просто обновляем его $prj_id = $this->updateProject($data, $existPrjID); // и очищаем все платные опции для этого проекта wizard_billing::clearPayedOptions($prj_id); } else { $prj_id = $this->createProject($data); } if ($prj_id && $_POST['attachedfiles_session']) { $attachedfiles = new attachedfiles($_POST['attachedfiles_session']); $files = $attachedfiles->getFiles(array(1, 2, 3, 4)); $this->parent->addAttachedFiles($files, $prj_id); $attachedfiles->clear(); } if ($prj_id && $data['kind'] == 7) { $insert = array('wiz_uid' => $data['wiz_uid'], 'op_code' => new_projects::OPCODE_KON_NOPRO, 'type' => self::BILL_TYPE_CONTEST, 'ammount' => new_projects::getKonkursPrice(), 'parent' => $prj_id); wizard_billing::addPaidOption($insert); } if ($price > 0 && $prj_id) { foreach ($pay_option as $k => $opt) { $opt['parent'] = $prj_id; wizard_billing::addPaidOption($opt); } } if ($prj_id) { $_SESSION['view_wizard_project'] = $prj_id; header('Location: /wizard/registration/'); exit; } else { $error['project'] = 'Ошибка записи проекта'; } } $currency_name = __paramInit('string', null, 'currency'); $priceby_name = __paramInit('string', null, 'priceby'); } // Генерируем данные для вывода ошибок и заполнения полей $loc[] = country::GetCountryName($data['country']); if ($data['city']) { $loc[] = city::GetCityName($data['city']); } $location_name = implode(': ', $loc); $cat[] = professions::GetGroupName($category); if ($subcategory) { $cat[] = professions::GetProfName($subcategory); } $category_name = implode(': ', $cat); if ($data['logo_id']) { $file = new CFile($data['logo_id']); $logo_path = WDCPREFIX . '/' . $file->path . $file->name; } include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.php'; } else { $project = $this->getProjectById($prj_id); $attached = $this->getProjectAttach($prj_id); include $_SERVER['DOCUMENT_ROOT'] . '/wizard/registration/steps/tpl.step.project.view.php'; } }
/** * Проверка передаваемых данных для сохранения/изменения комментария * * @param boolean $edit_mode Флаг указывающий какие данные на проверке при создании или при редактировании, * для проверки валидности автора к редактированию комментария * @return type */ protected function checkInput($edit_mode = false) { $uid = get_uid(false); if (!$uid) { header("Location: /fbd.php"); die; } $tn = 0; if ($this->enableWysiwyg) { if ($this->enableNewWysiwyg) { $msg = __paramValue('ckedit', antispam($_POST['cmsgtext'])); //$msg = __paramValue('ckedit_nocut', antispam($_POST['cmsgtext'])); } else { $msg = __paramValue('wysiwyg_tidy', antispam($_POST['cmsgtext'])); } } else { $msg = change_q_x(antispam(stripslashes($_POST['cmsgtext'])), false, false, 'b|br|i|p|ul|li|cut|s|h[1-6]{1}', false, false); } $reply = __paramInit('int', null, 'parent_id', NULL); $order_type = __paramInit('int', null, 'ord'); $thread = __paramInit('int', 'id'); $rmatt = $_POST['rmattaches']; $no_redirect = $_POST['no_redirect']; if ($edit_mode) { $mod = $this->_options['is_permission']; $comment = $this->getData($reply); if (!$mod && $comment['author'] != get_uid(false)) { header("Location: /fbd.php"); die; } } // загрузка файлов $files = array(); $attach = $_FILES['attach']; if (is_array($attach) && !empty($attach['name'])) { foreach ($attach['name'] as $key => $v) { if (!$attach['name'][$key] || $key > self::MAX_FILE_COUNT) { continue; } $_POST['is_attached'] = true; $files[] = new CFile(array('name' => $attach['name'][$key], 'type' => $attach['type'][$key], 'tmp_name' => $attach['tmp_name'][$key], 'error' => $attach['error'][$key], 'size' => $attach['size'][$key])); if ($attach['size'][$key] == 0) { $alert['attach'] = "Пустой файл"; } } } $yt_link = $_POST['yt_link']; if ((!$msg || is_empty_html($msg)) && !$_POST['is_attached'] && $yt_link == '') { $alert['msgtext'] = 'Поле не должно быть пустым'; } elseif (strlen_real($msg) > self::MSG_TEXT_MAX_LENGTH) { $alert['msgtext'] = 'Количество символов превышает допустимое'; } elseif ($this->enableWysiwyg) { /*$tidy = new tidy(); $msg = $tidy->repairString( $msg, array( 'fix-backslash' => false, 'show-body-only' => true, 'bare' => true, 'preserve-entities' => true, 'wrap' => '0'), 'raw');*/ $msg = str_replace("\n", "", $msg); $msg = preg_replace("/\\h/", " ", $msg); } if ($yt_link != '') { $v_yt_link = video_validate($yt_link); if (!$v_yt_link) { $alert['yt_link'] = "Неверная ссылка."; } else { $yt_link = $v_yt_link; } } else { $yt_link = null; } $model = $this->model(); list($att, $uperr, $error_flag) = $this->UploadFiles($files, array('width' => 390, 'height' => 1000, 'less' => 0), '', $model['attaches']['file_table']); if ($uperr) { $alert['attach'] = $uperr; $att = $comment['attach']; } $this->_post_msg = array('resource' => $this->_resource_id, 'parent_id' => $reply, 'author' => get_uid(false), 'msgtext' => $msg, 'yt' => $edit_mode && !$yt_link ? "" : $yt_link, 'attaches' => $att, 'rmattaches' => $rmatt); if (!isset($alert)) { $new = $this->save($this->_post_msg, $edit_mode ? $comment['id'] : null, $comment['author']); // если автор комментария прикрепляет новые файлы - на модерирование // пока не используется - на модерирование сразу при insert/update /*if ( $edit_mode && $new && $files && $comment['author'] == $uid && $model['comments']['fields']['moderator_status'] && $model['moderation_rec_type'] ) { $GLOBALS['DB']->query( 'UPDATE ' . $model['comments']['table'] . ' SET ' . $model['comments']['fields']['moderator_status'] .' = 0' . ' WHERE ' . $model['comments']['fields']['id'] .' = ?i', $comment['id'] ); $GLOBALS['DB']->query( 'DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $comment['id'], $model['moderation_rec_type'] ); }*/ if ($new && !count($this->errors) && !$no_redirect) { // Сделано в связи с тем что IE(любой версии) не понимает #anchor, если делать в PHP header() $_SESSION['c_new_id'] = intVal($new); $parse = parse_url($_SERVER['HTTP_REFERER']); $location = $parse['path'] . '?' . url($_SERVER['HTTP_REFERER'], array('r' => rand(1, 1000))); header("Location: {$location}", true, 303); exit; } } else { if ($edit_mode) { $this->_post_msg['attaches'] = $comment['attach']; } else { $this->_post_msg['attaches'] = null; } } return $alert; }