Esempio n. 1
0
 } 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();
Esempio n. 2
0
     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('&nbsp;'), 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;
Esempio n. 3
0
 /**
  * Обработка данных при записии платежа
  * 
  * @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;
 }
Esempio n. 4
0
 /**
  * Проверяет, можно ли отправить черновик на утверждение исполнителю.
  *
  * @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;
 }
Esempio n. 5
0
function EditNote($login, $action, $text, $rating = 0)
{
    session_start();
    $objResponse = new xajaxResponse();
    $nuid = get_uid(false);
    //$text = str_replace('&', '&amp;', $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('&', '&amp;', $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;
}
Esempio n. 7
0
 /**
  * Обработка информации шага проекты.
  */
 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';
     }
 }
Esempio n. 8
0
 //Устанавливаем новые флаги для этих услуг
 $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'];
         // бюджет в рублях
Esempio n. 9
0
 /**
  * Обработка входящих данных на запись рассылки
  * 
  * @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;
 }
Esempio n. 10
0
        $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');
Esempio n. 11
0
 $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) {
Esempio n. 12
0
     $_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) {
Esempio n. 13
0
 /**
  * Добавление проекта
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_add($aParams = array())
 {
     $this->_validDevice($aParams);
     require_once ABS_PATH . "/classes/projects.php";
     $nKind = intvalPgSql($aParams['kind']);
     $nKind = !empty($nKind) ? $nKind : $this->_mCfg['default_kind'];
     $nUid = get_uid(false);
     $sKey = md5(uniqid($uid));
     // ключ-идентификатор создаваемого/редактируемого проекта, для хранения в кэше.
     $aCats = array(array('category_id' => intvalPgSql($aParams['group_category_id']), 'subcategory_id' => intvalPgSql($aParams['category_id'])));
     $tmpPrj = new tmp_project($sKey);
     $tmpPrj->init(1, 0);
     $tmpPrj->setProjectField('kind', $nKind);
     $tmpPrj->setProjectField('descr', __paramValue('html', antispam(iconv('utf-8', 'cp1251', $aParams['descr'])), null, true));
     $tmpPrj->setProjectField('name', substr(antispam(__paramValue('string', iconv('utf-8', 'cp1251', $aParams['title']), 60)), 0, 512));
     $tmpPrj->setProjectField('cost', __paramValue('float', $aParams['budget']));
     $tmpPrj->setProjectField('currency', intvalPgSql($aParams['currency']));
     $tmpPrj->setProjectField('priceby', intvalPgSql($aParams['dimension']));
     $tmpPrj->setProjectField('agreement', intvalPgSql($aParams['budget_agreement']));
     $tmpPrj->setProjectField('budget_type', 0);
     // TODO: ???
     $tmpPrj->setCategories($aCats);
     $tmpPrj->setProjectField('country', intvalPgSql($aParams['country_id']));
     $tmpPrj->setProjectField('city', intvalPgSql($aParams['city_id']));
     $tmpPrj->setProjectField('pro_only', intvalPgSql($aParams['only_pro']) ? 't' : 'f');
     $tmpPrj->setProjectField('verify_only', intvalPgSql($aParams['only_verified']) ? 't' : 'f');
     $tmpPrj->setProjectField('prefer_sbr', intvalPgSql($aParams['prefer_sbr']) ? 't' : 'f');
     $project = $tmpPrj->getProject();
     if ($project['cost'] < 0) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MIN);
     }
     if ($project['cost'] > 999999) {
         $this->error(EXTERNAL_ERR_PRJ_COST_MAX);
     }
     if ($project['cost'] > 0 && ($project['currency'] < 0 || $project['currency'] > 3)) {
         $this->error(EXTERNAL_ERR_PRJ_CURRENCY);
     }
     if (is_empty_html($project['descr'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_DESCR);
     }
     if (is_empty_html($project['name'])) {
         $this->error(EXTERNAL_ERR_PRJ_EMPTY_TITLE);
     }
     if (strlen_real($project['descr']) > $this->_mCfg['descr_limit']) {
         $this->error(EXTERNAL_ERR_PRJ_LENGTH_DESCR);
     }
     // TODO: пока только проекты
     /*if ( $project['kind'] == 7 ) {
                     $tmpPrj->setProjectField('end_date', __paramInit('string', NULL, 'end_date'),0,64);
                     $tmpPrj->setProjectField('win_date', __paramInit('string', NULL, 'win_date'),0,64);
                     $project = $tmpPrj->getProject();
     
                     if (!preg_match("/^([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})$/", $project['end_date'], $o1) || !checkdate($o1[2], $o1[1], $o1[3]))
                             $error['end_date'] = 'Неправильная дата';
     
                     if (!preg_match("/^([0-9]{1,2})\-([0-9]{1,2})\-([0-9]{4})$/", $project['win_date'], $o2) || !checkdate($o2[2], $o2[1], $o2[3]))
                             $error['win_date'] = 'Неправильная дата';
     
                     // Модераторам аккуратней	
                 if(!hasPermissions('projects')) {
                     if (!$error['end_date'] && mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]) <= mktime(0, 0, 0))
                             $error['end_date'] = 'Дата окончания конкурса не может находиться  в прошлом';
     
                     if (!$error['win_date'] && mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]) <= mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]))
                             $error['win_date'] = 'Дата определения победителя должна быть больше даты окончания конкурса';
                     }
     
             }*/
     // сохранение файлов
     if (is_array($_FILES['files']) && $_FILES['files']) {
         $aFiles = $this->_multiple($_FILES);
         foreach ($aFiles['files'] as $aFile) {
             if (is_array($aFile) && !$aFile['error']) {
                 $_FILES['attachedfiles_file'] = $aFile;
                 $_POST['attachedfiles_action'] = 'add';
                 $_POST['attachedfiles_type'] = 'project';
                 $bSilentMode = true;
                 include ABS_PATH . '/attachedfiles.php';
                 if (isset($file['errno'])) {
                     switch ($file['errno']) {
                         case 1:
                             $this->error(EXTERNAL_ERR_FILE);
                             break;
                         case 2:
                             $this->error(EXTERNAL_ERR_MAX_FILES_CONUT);
                             break;
                         case 3:
                             $this->error(EXTERNAL_ERR_MAX_FILES_SIZE);
                             break;
                         case 4:
                             $this->error(EXTERNAL_ERR_FILE_FORMAT);
                             break;
                         default:
                             $this->error(EXTERNAL_ERR_SERVER_ERROR);
                             break;
                     }
                 }
                 $attachedfiles_files = $attachedfiles->getFiles(array(1, 3, 4));
                 $tmpPrj->addAttachedFiles($attachedfiles_files);
                 $attachedfiles->clear();
             }
         }
     }
     $tmpPrj->fix();
     $tmpPrj->saveProject(null, $aProject);
     return $this->x____projects_get(array('id' => $aProject['id']));
 }
Esempio n. 14
0
 }
 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) {
Esempio n. 15
0
 /**
  * Обработка данных в шаге порфтоило
  * 
  * @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;
 }
Esempio n. 16
0
 /**
  * Заполняет массив $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 = 'Минимальный бюджет &mdash; ' . 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 = 'Превышена максимальная сумма этапа &mdash; ' . 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;
 }
Esempio n. 17
0
 /**
  * Редактировать комментарий
  *
  * @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);
 }
Esempio n. 18
0
 }
 $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('/&/', '&amp;', (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);
    }
}
Esempio n. 20
0
 /**
  * Проверка передаваемых данных для сохранения/изменения комментария
  * 
  * @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;
 }