} else { if ($i > blogs::MAX_POLL_ANSWERS) { $error_flag = 1; $alert[5] = 'Вы можете указать максимум ' . blogs::MAX_POLL_ANSWERS . ' ответов'; } else { if ($i < 2 && $question !== '') { $error_flag = 1; $alert[5] = 'Нужно указать минимум 2 варианта ответа в голосовании'; } } } if (!($gr = intvalPgSql($gr)) && !($ord == 'my' || $PDA)) { include ABS_PATH . '/404.php'; exit; } if (is_empty_html($msg)) { $msg = ''; } if ($_POST['close_comments']) { $close_comments = 't'; } else { $close_comments = 'f'; } if ($_POST['is_private']) { $is_private = 't'; } else { $is_private = 'f'; } $msg_name = substr_entity(change_q_x(antispam($_POST['name']), true, false), 0, 96, true); $attach = $_FILES['attach']; $attach_delete = is_array($_POST['delattach']) ? $_POST['delattach'] : array();
header('Location: /fbd.php'); die; } $result = array(); $result['success'] = false; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/articles_comments.php'; $mod = hasPermissions('articles'); $comments = new articles_comments(); $msg = change_q_x($_POST['cmsgtext'], false, true, 'b|i|p|ul|ol|li|s|h[1-6]{1}', false, false); $reply = __paramInit('int', null, 'reply_to', null); $comment = $comments->getComment($reply); if (!$mod && $comment['from_id'] != $uid) { header('Location: /fbd.php'); die; } if (!$msg || is_empty_html($msg)) { $alert[1] = 'Поле не должно быть пустым'; } else { $msg = preg_replace("/(li|ol|ul)>[\n]+/iU", '$1>', $msg); $tidy = new tidy(); $msg = $tidy->repairString(str_replace(array(' '), array(' '), nl2br($msg)), array('show-body-only' => true, 'wrap' => '0'), 'raw'); $msg = str_replace("\n", '', $msg); $msg = preg_replace("/\\h/", ' ', $msg); } $yt_link = $_POST['yt_link']; if ($yt_link != '') { $v_yt_link = video_validate($yt_link); if (!$v_yt_link) { $alert[3] = 'Неверная ссылка.'; } else { $yt_link = $v_yt_link;
/** * Обработка данных при записии платежа * * @param array $post Данные для обработки */ public function setPostData($post) { if (is_empty_html($post['company'])) { $this->error['company'] = 'Введите название компании'; } if ((int) $post['sum'] <= 0) { $this->error['sum'] = 'Сумма должна быть больше нуля'; } if (is_empty_html($post['bill_num'])) { $this->error['bill_num'] = 'Введите номер счета'; } if (is_empty_html($post['invoiced_time'])) { $this->error['invoiced_time'] = 'Заполните дату выписки счета'; } $post['sum'] = (double) round($post['sum'], 2); $post['invoiced_hour'] = $this->checkHour($post['invoiced_hour'], 'invoiced_hour', 'выписки счета'); $post['accepted_hour'] = $this->checkHour($post['accepted_hour'], 'accepted_hour', 'прихода денег'); if ($post['invoiced_time'] != '') { if ($post['invoiced_hour'] != '') { $post['invoiced_time'] .= " {$post['invoiced_hour']}"; } $post['invoiced_time'] = date('Y-m-d H:i:s', strtotime($post['invoiced_time'])); } else { $post['invoiced_time'] = null; } if ($post['accepted_time'] != '') { if ($post['accepted_hour'] != '') { $post['accepted_time'] .= " {$post['accepted_hour']}"; } $post['accepted_time'] = date('Y-m-d H:i:s', strtotime($post['accepted_time'])); $post['accepted'] = true; } else { $post['accepted_time'] = null; $post['accepted'] = false; } if ((int) $post['docsend'] == 1) { $post['docsend'] = true; $post['docsend_time'] = "NOW()"; } else { $post['docsend'] = false; $post['docsend_time'] = null; } if ((int) $post['docback'] == 1) { $post['docback'] = true; $post['docback_time'] = "NOW()"; } else { $post['docback'] = false; $post['docback_time'] = null; } unset($post['invoiced_hour'], $post['accepted_hour']); $this->post_data = $post; }
/** * Проверяет, можно ли отправить черновик на утверждение исполнителю. * * @return bool да/нет. */ public function checkSendReady() { if (!$this->frl_id) { return false; } $exrur = $this->cost2rur(); foreach ($this->stages as $stage) { if ($stage->cost * $exrur < sbr_stages::MIN_COST_RUR) { return false; } if (is_empty_html($stage->descr)) { return false; } if ($stage->work_time <= 0) { return false; } } return true; }
function EditNote($login, $action, $text, $rating = 0) { session_start(); $objResponse = new xajaxResponse(); $nuid = get_uid(false); //$text = str_replace('&', '&', $text); //$text = stripslashes($text); $text = strip_only(trim($text), '<script>'); $text = change_q_x($text, FALSE, TRUE, "", false, false); // !! кол-во символов также указано в /scripts/note.js if (strlen($text) > 200) { $text = substr($text, 0, 200); } switch ($action) { case "add": if ($text) { $error = notes::Add($nuid, $login, $text, 0, "?"); } break; case "update": if ($text) { $error = notes::Update($nuid, $login, $text, $rating, "?"); } else { $error = notes::DeleteNote($nuid, $login, "?"); $action = 'delete'; } break; } if ($error) { return false; } $text_src = input_ref_scr(stripslashes($text)); $text_src = str_replace('&', '&', $text_src); $text = reformat($text, 54, 0, 0, 1, 54); //$text = addslashes($text); switch ($action) { case 'add': case 'update': if (is_empty_html($text)) { $s = "\n document.getElement('div.form-templ').setStyle('display', 'none');\n document.getElement('div.form-templ input').set('disabled', false);\n cancelNote();\n "; break; } $s = "\n n = \$('note_{$login}');\n n.getElement('.uprj-note-cnt>p').set('html', '{$text}');\n n.setStyle('display', 'block');\n\n document.getElement('div.form-templ').setStyle('display', 'none');\n document.getElement('div.form-templ input').set('disabled', false);\n\n if(\$('team_{$login}')) \$('team_{$login}').getElement('.uprj-st3').setStyle('display', 'none');\n cancelNote();\n "; break; case 'delete': $s = "\n n = \$('note_{$login}');\n n.getElement('.uprj-note-cnt>p').set('html', '');\n n.setStyle('display', 'none');\n\n if(\$('team_{$login}')) \$('team_{$login}').getElement('.uprj-st3').setStyle('display', 'inline-block');\n document.getElement('div.uprj-note.form-templ').store('action', false);\n cancelNote();\n "; break; } $objResponse->script($s); return $objResponse; }
function ModDeclinedAdvice($id_advice, $msg, $type = 1) { $objResponse = new xajaxResponse(); if (!(hasPermissions('users') || hasPermissions('paidadvice'))) { return $objResponse; } if (is_empty_html($msg)) { $objResponse->call('alert', 'Укажите причину отказа.'); return $objResponse; } $id_advice = intval($id_advice); $paid_advice = new paid_advices(); $msg = stripslashes($msg); if ($paid_advice->getAdviceStatus($id_advice) == paid_advices::STATUS_PAYED) { $objResponse->call('alert', 'Пользователь уже оплатил рекомендацию, вы не можете отклонить её'); return $objResponse; } if ($type == 1) { $paid_advice->adminDecline($id_advice, $msg); } else { $paid_advice->adminDelete($id_advice, $msg); } $advice['mod_msg'] = $msg; ob_start(); define('IS_SITE_ADMIN', 1); require_once $_SERVER['DOCUMENT_ROOT'] . '/siteadmin/paid_advice/mod_msg.tpl.php'; $html = ob_get_clean(); $btn_del = "btn_deleted_{$id_advice}"; $txt_del = "btn_txt_deleted_{$id_advice}"; $btn_dec = "btn_declined_{$id_advice}"; $txt_dec = "btn_txt_declined_{$id_advice}"; $btn_acc = "btn_accepted_{$id_advice}"; $txt_acc = "btn_txt_accepted_{$id_advice}"; $objResponse->assign("recomend_item_{$id_advice}", "innerHTML", $html); $objResponse->script("\$('tr_msg_advice_{$id_advice}').setStyle('display', 'none');"); $objResponse->script("\$('{$btn_del}').hide();\n \$('{$btn_dec}').hide();\n " . ($type == 1 ? "\$('{$txt_dec}').show();" : "\$('{$txt_dec}').hide();") . "\n \$('{$btn_acc}').show();\n \$('{$btn_acc}').set('disabled', false); \n \$('{$txt_acc}').hide();\n " . ($type == 1 ? "\$('{$txt_del}').hide();" : "\$('{$txt_del}').show();") . "\n \$('declined_{$id_advice}').destroy();"); return $objResponse; }
/** * Обработка информации шага проекты. */ 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'; } }
//Устанавливаем новые флаги для этих услуг $tmpPrj->setProjectField('urgent', __paramInit('bool', NULL, 'urgent') ? 't' : 'f'); $tmpPrj->setProjectField('hide', __paramInit('bool', NULL, 'hide') ? 't' : 'f'); if ($project['cost'] < 0) { $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']; // бюджет в рублях
/** * Обработка входящих данных на запись рассылки * * @param array $post Входящие данные $_POST * @return array Обработканные данные для записи array(name=>value) где name - имя поля в таблице value - значение поля */ public function initPost($post) { $insert = array(); if ($post['attachedfiles_session']) { $attachedfiles = new attachedfiles($post['attachedfiles_session']); $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4)); if (count($attachedfiles_files) > 0) { $insert['is_attached'] = true; $_POST['attachedfiles_files'] = $attachedfiles_files; } else { $insert['is_attached'] = false; } } $insert['in_draft'] = (int) $post['in_draft'] == 0 ? 'false' : 'true'; if (isset($post['status_sending'])) { $insert['status_sending'] = (int) $post['status_sending']; } if (isset($post['status_message'])) { $insert['status_message'] = (int) $post['status_message']; } if (!is_empty_html($post['subject'])) { $insert['subject'] = __paramValue('string', addslashes($post['subject'])); } else { $insert['subject'] = 'Рассылка Free-lance.ru'; //$this->error['subject'] = 'Введите заголовок письма'; } if (!is_empty_html($post['message'])) { //$insert['message'] = addslashes(__paramValue('ckedit', stripslashes($post['message']) )); $insert['message'] = $post['message']; } else { $this->error['message'] = 'Введите текст письма'; } if ($post['type_sending']) { $post['type_sending'] = array_map('intval', $post['type_sending']); $insert['type_sending'] = (string) implode("", array((int) $post['type_sending'][0], (int) $post['type_sending'][1])); } if ($post['type_regular']) { $insert['type_regular'] = __paramValue('int', $post['type_regular']); } if ($post['type_send_regular']) { $insert['type_send_regular'] = __paramValue('int', $post['type_send_regular']); } if (!is_empty_html($post['time_sending'])) { $time = __paramValue('string', $post['time_sending']) . ":00"; if (is_empty_html($post['date_sending'])) { $insert['date_sending'] = date('Y-m-d ' . $time); } } elseif ($insert['type_regular'] == 2) { $this->error['time_sending'] = 'Введите время отправки рассылки'; } if (!is_empty_html($post['date_sending'])) { $time = "00:00"; if (!is_empty_html($post['time_sending'])) { $time = __paramValue('string', $post['time_sending']) . ":00"; } $insert['date_sending'] = date('Y-m-d ' . $time, strtotime($post['date_sending'])); } elseif ($insert['type_regular'] != 2) { $this->error['date_sending'] = 'Введите дату отправки рассылки'; } // Обработка фильтра Работодателя if ($post['filter_emp']) { // Записываем фильтр $insert['filter_emp'] = $this->initPostEmpFilter($post); } if ($post['filter_frl']) { // Записываем фильтр $insert['filter_frl'] = $this->initPostFrlFilter($post); } if ($post['filter_file']) { $insert['filter_file'] = true; } else { $insert['filter_file'] = ''; } $insert['user_id'] = get_uid(); //$insert['count_recipients'] = 0; return $insert; }
$pro = __paramInit('float', NULL, 'pro', 0); $no_pro = __paramInit('float', NULL, 'no_pro', 0); //break; if (masssending::SetTariff($pro, $no_pro)) { header("Location: /siteadmin/masssending/?om={$om}&result=success"); exit; } break; case 'Decide': $id = __paramInit('int', NULL, 'id', 0); //$is_accepted = __paramInit('int', NULL, 'Accept_x'); $is_accepted = !empty($_POST['status']) && $_POST['status'] == 'Accept'; $denied_reason = NULL; if (!$is_accepted) { $denied_reason = __paramInit('string', NULL, 'denied_reason'); if (is_empty_html($denied_reason)) { $alert[$id]['denied_reason'] = 'Введите причину отказа'; } else { $masssending->Deny($id, $denied_reason); } } else { $masssending->acceptByAdmin($id); } if (!$error && !$alert) { header("Location: /siteadmin/masssending/?om={$om}"); exit; } break; } $content = '../content.php'; $js_file = array('/css/block/b-popup/b-popup.js');
$login = __paramInit('string', null, 'login'); $id = __paramInit('int', null, 'id'); $is_jury = intval($_POST['is_jury']) == 1 ? 't' : 'f'; include_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUser($login); // $txt = change_q_x(stripslashes($_POST['txt']), FALSE, false, 'b|br\s?\/?|i|p|ul|li|cut|s|h[1-6]{1}|img id="\d+"|p class="[qa]"', false, false); // $txt = pg_escape_string(stripslashes($_POST['txt'])); // // $txt = strip_tags($txt, '<p><b><strong><i><em><br><ul><li><ol><h1><h2><h3><h4><h5><h6><img><a><noindex>'); $txt = iconv('UTF-8', 'CP1251', $_POST['txt']); $txt = __paramValue('ckedit', $txt); if (!$login || !$user->uid) { $alert['login'] = '******'; } if (!$txt || $txt == '' || is_empty_html($txt)) { $alert['txt'] = 'Поле не должно быть пустым.'; } $attached = isset($_POST['attached']) ? $_POST['attached'] : array(); $rmfiles = isset($_POST['rmattaches']) && count($_POST['rmattaches']) ? $_POST['rmattaches'] : null; $int = new interview(); $files = new CFile(); if (!isset($alert)) { $interview = $int->getInterview($uid, $id); /* Обновление интервью */ if (!$int->updateInterview($id, $user->uid, $txt, $attached, $is_jury)) { $alert['alert'] = 'Невозможно изменить запись.'; } /* Удаление файлов, которые нужно удалить =) */ if (!isset($alert) && $rmfiles) { foreach ($rmfiles as $rf) {
$_error['block'] = true; $error = true; } $uCount = users::getCountUsersAll(); $preview = __paramInit('int', null, 'preview'); $digest_id = __paramInit('int', null, 'id'); $from_mail = __paramInit('string', null, 'from_mail'); $title_mail = __paramInit('string', null, 'title_mail'); $check_frl = __paramInit('int', null, 'freelancers', null); $check_emp = __paramInit('int', null, 'employers', null); $send_type = __paramInit('int', null, 'send_type'); $send_date = __paramInit('string', null, 'send_date_eng_format'); $send_time = __paramInit('string', null, 'time_sending'); $regular = __paramInit('string', null, 'regular_week'); $draft = __paramInit('int', null, 'draft'); if (is_empty_html($title_mail)) { $_error['title_mail'] = true; $error = true; } if (!$check_frl && !$check_emp) { $_error['check_recipient'] = true; $error = true; } $date_sending = $send_type == 1 ? date('Y-m-d H:i') : date('Y-m-d ', strtotime($send_date)) . "{$send_time}:00"; $update = array('in_draft' => $draft == 1 ? 'true' : 'false', 'count_rec_emp' => $uCount['live_emp_today'], 'count_rec_frl' => $uCount['live_frl_today'], 'filter_frl' => $check_frl ? 0 : null, 'filter_emp' => $check_emp ? 0 : null, 'type_send_regular' => 1, 'date_sending' => $date_sending, 'subject' => $title_mail, 'message' => $blocks->createHTMLMessage()); $digest = $update; if (!$error) { if ($mailer->update($update, $digest_id)) { $blocks->updateDigestBlocks($digest_id); $_SESSION['is_save_digest'] = true; if ($preview) {
/** * Добавление проекта * * @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 ($acount > 0 && $question == '') { $alert['polls'] = 'Введите текст вопроса'; } else { if ($acount > commune::POLL_ANSWERS_MAX && $question != '') { $alert['polls_question'] = 'Вы можете указать максимум ' . commune::POLL_ANSWERS_MAX . ' ответов'; } else { if ($acount < 2 && $question != '') { $alert['polls_question'] = 'Нужно указать минимум 2 варианта ответа'; } } } if (strlen($_POST['title']) > commune::MSG_TITLE_MAX_LENGTH) { $alert['title'] = 'Количество символов превышает допустимое (' . commune::MSG_TITLE_MAX_LENGTH . ')'; } if (is_empty_html($msgtext) && $question == '' && empty($alert) && $nTotalSize == 0 && $youtube_link == '' && count($attachedfiles_files) == 0) { $alert['msgtext'] = 'Поле заполнено некорректно'; $msgtext = ''; } else { if (strlen($msgtext) > commune::MSG_TEXT_MAX_LENGTH) { $alert['msgtext'] = 'Количество символов превышает допустимое'; } } if ($youtube_link != '') { if ($video = video_validate($youtube_link)) { $request['youtube_link'] = $video; } else { $alert['youtube'] = 'Неверная ссылка'; } } if ($alert) {
/** * Обработка данных в шаге порфтоило * * @return string */ public function actionProcessingPortfolio() { $error = array(); $type = __paramInit('int', null, 'spec_column_id'); $spec = __paramInit('int', null, 'spec_db_id'); $spec_name = __paramInit('string', null, 'spec'); if ($type == 0) { $error['spec'] = 'Вы должны выбрать свою специализацию'; } else { $data['spec_orig'] = professions::GetProfessionOrigin($spec); } $data['spec'] = $spec; $data['exp'] = __paramInit('int', null, 'exp'); $data['cost_hour'] = __paramInit('float', null, 'cost_hour'); $data['cost_type_hour'] = __paramInit('int', null, 'currency_hour_db_id'); $curr_hour_name = __paramInit('string', null, 'currency_hour'); $data['cost_month'] = __paramInit('float', null, 'cost_month'); $data['cost_type_month'] = __paramInit('int', null, 'currency_month_db_id'); $curr_month_name = __paramInit('string', null, 'currency_month'); $data['resume'] = __paramInit('int', null, 'resume_id'); $data['info'] = stripslashes(__paramInit('string', null, 'info', '')); if (strlen($data['info']) > 4000) { $error['info'] = 'Исчерпан лимит символов для этого поля (4000 символов)'; } $data['in_office'] = $_POST['in_office'] == 1 ? 1 : 0; if ($data['resume'] > 0) { $resume = new CFile($data['resume']); } if ($data['exp'] < 0 || $data['exp'] > step_freelancer::MAX_YEAR_VALUE) { $error['exp'] = 'Недопустимое значение. Опыт работы должен быть в пределе от 0 до ' . step_freelancer::MAX_YEAR_VALUE . '.'; } if ($data['cost_hour'] < 0 || $data['cost_hour'] > $this->MAX_COST_HOUR[$data['cost_type_hour']]) { $error['cost_hour'] = 'Недопустимое значение. Стоимость часа работы должна быть в пределе ' . view_range_cost2(0, $this->MAX_COST_HOUR[$data['cost_type_hour']], '', '', false, $data['cost_type_hour'] . '.'); } if ($data['cost_month'] < 0 || $data['cost_month'] > $this->MAX_COST_MONTH[$data['cost_type_month']]) { $error['cost_month'] = 'Недопустимое значение. Стоимость месяца работы должна быть в пределе ' . view_range_cost2(0, $this->MAX_COST_MONTH[$data['cost_type_month']], '', '', false, $data['cost_type_month']) . '.'; } if (count($error) <= 0) { $insert['portfolio'] = serialize($data); $this->parent->saveFieldsInfo($insert); } // Обрабатываем порфтолио if (is_array($_POST['name'])) { foreach ($_POST['name'] as $k => $value) { $value = __paramValue('string', stripslashes($value)); $descr = __paramValue('string', stripslashes($_POST['descr'][$k])); $id = __paramValue('int', $_POST['id'][$k]); // id работы, если он есть $link = __paramValue('string', stripslashes($_POST['link'][$k])); $link = preg_replace("/^http:\\/\\//", "", trim($link)); if ($value == '' && $descr == '' && $link == '' && empty($_POST['pict_id'][$k])) { continue; } if (is_empty_html($value)) { $error['portf' . $k]['name'] = "Введите название работы"; } if (strlen($descr) > 1500) { $error['descr' . $k]['name'] = "Исчерпан лимит символов для этого поля (1500 символов)"; } if ($link != '' && !url_validate($link)) { $error['portf' . $k]['link'] = "Поле заполнено некорректно"; } $portf_insert[] = array("name" => $value, "pict_id" => $_POST['pict_id'][$k] > 0 ? intval($_POST['pict_id'][$k]) : null, "link" => $link, "prof_id" => $spec, "wiz_uid" => $this->getWizardUserID(), "descr" => $descr, "id" => $id); } } if (count($error) <= 0) { if (count($portf_insert) > 0) { $ids = $this->createWorks($portf_insert); } $this->parent->setCompliteStep(true); $this->parent->setNextStep($this->parent->getPosition() + 1); header("Location: /wizard/registration/"); exit; } $this->request = $data; $this->portf_insert = $portf_insert; return $error; }
/** * Заполняет массив $this->data из данных пользовательского запроса. * * @param array $request $_POST|$_GET * @return boolean был ли вообще передан этап (должны быть заполнены обязательные поля). */ function initFromRequest($request) { $data_exists = false; foreach ($request as $field => &$value) { $err = NULL; if (is_scalar($value)) { $value = stripslashes($value); } if (!$data_exists) { if (in_array($field, array('name', 'descr', 'cost', 'work_time', 'add_work_time', 'project_attach'))) { $data_exists = $value && (!is_string($value) || trim($value)); } } switch ($field) { case 'name': if (!$this->sbr->isDraft() && is_empty_html($value)) { $err = 'Пожалуйста, заполните это поле'; } $value = substr(trim($value), 0, self::NAME_LENGTH); break; case 'descr': if (!$this->sbr->isDraft() && is_empty_html($value)) { $err = 'Пожалуйста, заполните это поле'; } //$value = htmlspecialchars($value); $value = substr($value, 0, self::DESCR_LENGTH); break; case 'category': case 'sub_category': $value = intvalPgSql($value); break; case 'cost': if (is_empty_html($value)) { if (!$this->sbr->isDraft()) { $err = 'Введите сумму'; } } else { $cost = floatval(preg_replace('/\\s+/', '', $value)); $cost_rur = $cost * $this->sbr->cost2rur(); if ($cost_rur > self::MAX_COST_RUR) { $err = 'Слишком большая сумма'; } else { if ($cost_rur < self::MIN_COST_RUR - $this->sbr->isDraft() && $this->data['cost'] != $cost || $cost == 0) { $err = 'Минимальный бюджет — ' . self::MIN_COST_RUR . ' руб.'; } else { $this->sbr->getFrlReqvs(); if ($this->sbr->frl_reqvs['rez_type'] == sbr::RT_UABYKZ) { if ($cost_rur > $this->sbr->maxNorezCost()) { $err = 'Превышена максимальная сумма этапа — ' . sbr::MAX_COST_USD . ' USD (или ' . sbr_meta::view_cost($this->sbr->maxNorezCost(), exrates::BANK) . ')'; } } } } $value = $cost; } break; case 'work_time': if (!$this->sbr->isDraft() && is_empty_html($value)) { $err = 'Пожалуйста, заполните это поле (число от 1 до ' . self::MAX_WORK_TIME . ')'; } else { $val = intvalPgSql($value); if ($val < 1 - $this->sbr->isDraft()) { $err = 'Неверный ввод'; } else { if ($val > self::MAX_WORK_TIME) { $err = 'Число не может быть больше ' . self::MAX_WORK_TIME; } } if (!$this->sbr->isDraft()) { $value = $val; } } $request['work_days'] = $value; $request['int_work_time'] = intval($value); break; case 'work_time_add': case 'add_work_time': $value = intvalPgSql($value); break; case 'add_wt_switch': $value = $value == '-' ? '-' : '+'; break; case 'project_attach': if (is_array($value) && $this->sbr->project) { if ($this->sbr->project['attach']) { $this->data['attach'] = array_intersect_key($this->sbr->project['attach'], $value); } } break; case 'del_attach': break; case 'id': $value = intvalPgSql($value); break; case 'version': $value = (int) $value > 32767 ? 32767 : (int) $value; break; } if ($err) { $this->error[$field] = $err; } $this->data[$field] = $value; } return $data_exists; }
/** * Редактировать комментарий * * @param integer $id ИД редактируемого комментария * @return array [коды ошибок, описание ошибок] (по умолчанию оба занчения null) */ function editComment($id) { $DB = new DB('master'); $blog = $_POST['blogID']; $user = get_uid(); $IDEdit = $id; //intval($this->uri[3]); $alert = array(); $deleted_attach = $_POST['editattach']; if ($deleted_attach) { foreach ($deleted_attach as $key => $val) { if ($val == 1) { front::og("db")->delete("DELETE FROM corporative_blog_attach WHERE id = ?n", $key); } } } if (strlen($_POST['msg']) > blogs::MAX_DESC_CHARS) { $error_flag = 1; $alert[2] = "Максимальный размер сообщения " . blogs::MAX_DESC_CHARS . " символов!"; $msg =& $_POST['msg']; } else { $msg = $_POST['msg']; $msg = preg_replace("/<ul.*>/Ui", "<ul>", $msg); $msg = preg_replace("/<li.*>/Ui", "<li>", $msg); $msg = change_q_x_a(antispam($msg), false, false); } $msg_name = substr(change_q_x(antispam($_POST['title']), true), 0, 96); $yt_link = substr(change_q_x(antispam(str_replace('watch?v=', 'v/', $_POST['yt_link'])), true), 0, 128); if ($yt_link != '') { if (strpos($yt_link, 'http://ru.youtube.com/v/') !== 0 && strpos($yt_link, 'http://youtube.com/v/') !== 0 && strpos($yt_link, 'http://www.youtube.com/v/') !== 0) { $error_flag = 1; $alert[4] = "Неверная ссылка."; } } if (is_empty_html($msg)) { $msg = ''; } // загрузка файлов $attach = $_FILES['attach']; if (is_array($attach) && sizeof($attach) <= 10) { if (is_array($attach) && !empty($attach['name'])) { foreach ($attach['name'] as $key => $v) { if (!$attach['name'][$key]) { continue; } $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 ($group == 7) { $max_image_size = array('width' => 400, 'height' => 600, 'less' => 0); } else { $max_image_size = array('width' => 470, 'height' => 1000, 'less' => 0); } list($files, $alert_, $error_flag___) = self::uploadFile($files, $max_image_size); $error_flag = max($error_flag___, $error_flag); if (is_array($alert_)) { $alert = array_merge($alert, $alert_); } } else { if (is_array($attach) && !empty($attach['name'])) { $error_flag = 1; $alert[2] = "Файлов не должно быть больше 10"; } } if (!$msg && !count($files)) { $error_flag = 1; $alert[2] = "Поле заполнено некорректно"; } if (($msg || $files['f_name'][0]) && get_uid() && !$error_flag) { $upd = array("title" => $msg_name, "yt_link" => $yt_link, "msg" => $msg, "id_modified" => get_uid(), "id_deleted" => 0, "date_change" => date("Y-m-d H:i:s")); front::og("db")->update("UPDATE corporative_blog SET ?s WHERE (id = ?n)", $upd, $IDEdit); if (is_array($files)) { $asql = ''; for ($i = 0; $i < count($files['f_name']); $i++) { if ($files['f_name'][$i]) { $asql .= ", ({$IDEdit}, '{$files['f_name'][$i]}', '{$files['tn'][$i]}')"; } } if ($asql) { $asql = substr($asql, 2); } } if ($asql) { $DB->query("INSERT INTO corporative_blog_attach(msg_id, \"name\", small) VALUES {$asql}"); } $tags = $_POST['tags']; if ($tags) { $tags_arr = $tags; //explode(",", $tags); array_unique($tags_arr); $this->tagsDelete($IDEdit); $tg = tags::Add($tags_arr); $this->tagsAdd($IDEdit, $tg); } } front::og("tpl")->ederror_flag = $error_flag; front::og("tpl")->edalert = $alert; front::og("tpl")->edpost = array("blog" => $blog, "user" => $user, "parent" => $parent, "msg" => $msg, "title" => $msg_name, "yt_link" => $yt_link); return array($error_flag, $error); }
} $msg = change_q_x(antispam($_POST['msg']), false, false, 'b|br|i|p|ul|li|cut|s|h[1-6]{1}', false, false); $msg_name = substr_entity(change_q_x(antispam($_POST['msg_name']), true, false), 0, 96, true); $yt_link = $_POST['yt_link']; if ($yt_link != '') { $v_yt_link = video_validate($yt_link); if (!$v_yt_link) { $error_flag = 1; $alert[4] = "Неверная ссылка."; } else { $yt_link = $v_yt_link; } } $attach = $_FILES['attach']; $tn = 0; if (!$error_flag && is_empty_html($msg)) { $msg = ''; } // опросы $question = substr_entity(change_q_x(antispam(trim((string) $_POST['question'])), false, false, ''), 0, blogs::MAX_POLL_CHARS, true); $answers = array(); $answers_exists = array(); $multiple = (bool) $_POST['multiple']; if (is_array($_POST['answers']) && !empty($_POST['answers'])) { $i = 0; foreach ($_POST['answers'] as $pa) { if (trim((string) $pa) !== '') { $answers[] = substr_entity(change_q_x(antispam(preg_replace('/&/', '&', (string) trim($pa))), false, false, ''), 0, blogs::MAX_POLL_ANSWER_CHARS * 2, true); $i++; } }
/** * Сохранение проектов и конкурсов * * @param object $objResponse xajaxResponse * @param string $rec_id идентификатор записи * @param string $rec_type тип записи * @param array $aForm массив данных * @param string $sDrawFunc имя функции для выполнения после сохранения */ function _admEditProjectsSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php'; $alert = array(); $tmpPrj = new tmp_project($aForm['temp_key']); $prj = $tmpPrj->init(2); $kind = isset($aForm['kind']) ? intvalPgSql($aForm['kind']) : $prj['kind']; $sLink = change_q_x($aForm['link'], false, true, null, false, false); if (!empty($sLink)) { if (!preg_match('/http:\\/\\//', $sLink)) { $sLink = 'http://' . $sLink; } } $tmpPrj->setProjectField('kind', $kind); $tmpPrj->setProjectField('descr', antispam(change_q_x($aForm['descr'], FALSE, TRUE, "", false, false))); $tmpPrj->setProjectField('name', substr(antispam(change_q_x($aForm['name'], TRUE)), 0, 512)); setlocale(LC_ALL, 'en_US.UTF-8'); $tmpPrj->setProjectField('cost', isset($aForm['cost']) ? floatval($aForm['cost']) : 0); $tmpPrj->setProjectField('currency', isset($aForm['currency']) ? intvalPgSql($aForm['currency']) : 0); $tmpPrj->setProjectField('folder_id', isset($aForm['folder_id']) ? intvalPgSql($aForm['folder_id']) : 0); $tmpPrj->setProjectField('budget_type', isset($aForm['budget_type']) ? intvalPgSql($aForm['budget_type']) : 0); $tmpPrj->setProjectField('priceby', isset($aForm['priceby']) ? intvalPgSql($aForm['priceby']) : 0); $tmpPrj->setProjectField('agreement', isset($aForm['agreement']) ? intvalPgSql($aForm['agreement']) : 0); $tmpPrj->setProjectField('country', isset($aForm['country']) ? intvalPgSql($aForm['country']) : 0); $tmpPrj->setProjectField('city', isset($aForm['pf_city']) ? intvalPgSql($aForm['pf_city']) : 0); $tmpPrj->setProjectField('pro_only', isset($aForm['pro_only']) ? 't' : 'f'); $tmpPrj->setProjectField('is_color', isset($aForm['is_color']) ? 't' : 'f'); $tmpPrj->setProjectField('is_bold', isset($aForm['is_bold']) ? 't' : 'f'); $tmpPrj->setProjectField('link', $sLink); if ($kind == 7) { $tmpPrj->setProjectField('end_date', change_q_x($aForm['end_date'], TRUE)); $tmpPrj->setProjectField('win_date', change_q_x($aForm['win_date'], TRUE)); } // разделы $c = $aForm['categories']; $sc = $aForm['subcategories']; if (empty($c) || sizeof($c) == 1 && $c[0] == 0) { $alert[3] = 'Не выбран раздел'; } else { $cats = array(); foreach ($c as $sKey => $value) { if ($value == 0) { continue; } $check[] = $value . "_" . $sc[$sKey]; } $uniq = array_unique($check); foreach ($uniq as $val) { list($cat, $subcat) = explode('_', $val); $check_array[$cat][] = $subcat; } foreach ($check_array as $k => $val) { if (count($val) > 1 && array_search(0, $val) !== false) { $cats[] = array('category_id' => $k, 'subcategory_id' => 0); unset($check_array[$k]); } else { foreach ($val as $m => $v) { $cats[] = array('category_id' => $k, 'subcategory_id' => $v); } } } $tmpPrj->setCategories($cats); } $prj = $tmpPrj->getProject(); $descr_limit = 5000; if ($prj['cost'] < 0) { $alert[7] = 'Введите положительную сумму'; } if ($prj['cost'] > 999999) { $alert[7] = 'Слишком большая сумма'; } if ($prj['cost'] > 0 && ($prj['currency'] < 0 || $prj['currency'] > 3)) { $alert[7] = 'Валюта не определена'; } if (is_empty_html($prj['name'])) { $alert[1] = 'Поле не заполнено'; } if (is_empty_html($prj['descr'])) { $alert[2] = 'Поле не заполнено'; } if (strlen_real($prj['descr']) > $descr_limit) { $alert[2] = "Исчерпан лимит символов ({$descr_limit})"; } if ($prj['kind'] == 7) { if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3])) { $alert[5] = 'Неправильная дата'; } if (!preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3])) { $alert[6] = 'Неправильная дата'; } if (!$alert[5] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0)) { $alert[5] = 'Дата окончания конкурса не может находиться в прошлом'; } if (!$alert[6] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3])) { $alert[6] = 'Дата определения победителя должна быть больше даты окончания конкурса'; } } /*elseif ( $prj['kind'] == 4 && ($prj['country'] == 0 || $prj['city'] == 0) ) { $alert[4] = 'Укажите местонахождение'; }*/ if (isset($aForm['top_ok'])) { $nDays = intval($aForm['top_days']); if (ctype_digit($aForm['top_days']) && $nDays > 0) { $tmpPrj->setAddedTopDays($nDays); } else { $alert[8] = 'Укажите корректное количество дней нверху'; } } else { $tmpPrj->setAddedTopDays(0); } if (!isset($alert[8]) && isset($aForm['logo_ok'])) { if (empty($aForm['logo_id'])) { $alert[8] = 'Необходимо выбрать файл'; } } if (isset($aForm['del_logo'])) { $tmpPrj->delLogo(); } if (!$alert) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $attachedfiles = new attachedfiles($aForm['attachedfiles_session']); $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4)); $tmpPrj->addAttachedFiles($attachedfiles_files); $attachedfiles->clear(); $sError = $tmpPrj->saveProject($prj['user_id'], $prj); if (!$sError) { if ($prj['agreement'] == 1 || $prj['cost'] == 0) { projects::updateBudget($rec_id, 0, 0, 0, true); } else { projects::updateBudget($rec_id, $prj['cost'], $prj['currency'], $prj['priceby'], false); } $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']); messages::projectsModifiedNotification($rec_id, $rec_type, $aForm['user_login'], $aForm['user_uname'], $aForm['user_usurname'], $sReason); $content_id = user_content::MODER_PROJECTS; _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm); } else { $objResponse->alert($sError); $sParent = $sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2' ? 'parent.' : ''; $objResponse->script("{$sParent}adm_edit_content.disabled = false; {$sParent}adm_edit_content.button();"); } } else { _setErrors($objResponse, $alert, array(1 => 'name', 2 => 'descr', 3 => 'categories', 4 => 'country', 5 => 'end_date', 6 => 'win_date', 7 => 'cost', 8 => 'paid'), $sDrawFunc); } }
/** * Проверка передаваемых данных для сохранения/изменения комментария * * @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; }