Пример #1
0
function pay_place_top($catalog = 0, $caruselTop)
{
    global $DB, $session;
    if ($catalog == 0) {
        $yaM = "yaCounter6051055.reachGoal('main_carousel_ref');";
    } else {
        $yaM = "yaCounter6051055.reachGoal('cat_carousel_ref');";
    }
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pay_place.php';
    $payPlace = new pay_place($catalog);
    $ppAds = $payPlace->getUserPlaceNew();
    if (is_array($ppAds)) {
        foreach ($ppAds as $ppAd) {
            $pp_uids[] = $ppAd['uid'];
        }
        $pp_uids = array_unique($pp_uids);
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
        $usrs = new users();
        $pp_result = $usrs->getUsers('uid IN (' . implode(',', array_values($pp_uids)) . ')');
        foreach ($pp_result as $k => $v) {
            $toppay_usr[$v['uid']] = $v;
        }
        $pp_h = $payPlace->getAllInfo($pp_uids);
    }
    $not_load_info = true;
    ob_start();
    include $_SERVER['DOCUMENT_ROOT'] . '/templates/pay_place.php';
    $html = antispam(str_replace(array("\r", "\n"), '', ob_get_clean()));
    $aRes['success'] = true;
    $aRes['html'] = iconv('windows-1251', 'UTF-8', $html);
    echo json_encode($aRes);
}
Пример #2
0
 public function process_event(&$event)
 {
     global $DB;
     $this->force_connect();
     $r = false;
     switch ($event->type) {
         case 'ProjectPosted':
             $project_id = $event->data['id'];
             $this->log->notice('New project posted #id = ' . $project_id);
             $obj_project = new projects();
             $project = $obj_project->GetPrjCust($project_id);
             // Не выбран испольнитель (если испольнитель выбран, то не пишем ответ на этот проект)
             if ($project && $project['exec_id'] == 0 && $project['kind'] == 1) {
                 $autoresponses = autoresponse::getListForProject($project);
                 foreach ($autoresponses as $autoresponse) {
                     $freelancer = $autoresponse->data['freelancer'];
                     $contacts_freelancer = $autoresponse->data['contacts_freelancer'];
                     // Проверяем если проект только для про, то и пользователь который на него отвечает должен быть ПРО
                     if ($project['pro_only'] == 't' && !payed::CheckPro($freelancer->login)) {
                         continue;
                     }
                     // Проверяем если проект только для верифицированных, то и пользователь который на него отвечает должен быть верифицирован
                     if ($project['verify_only'] == 't' && !$freelancer->IsVerified()) {
                         continue;
                     }
                     // Проверка, что текущий пользователь не является владельцем проекта
                     if ($project['user_id'] == $freelancer->uid) {
                         continue;
                     }
                     // Добавление нового отзыва к проекту
                     $obj_offer = new projects_offers();
                     $save_contacts = serialize($contacts_freelancer);
                     $DB->start();
                     $error_offer = $obj_offer->AddOffer($freelancer->uid, $project['id'], '', '', '', '', '', '', antispam(stripslashes($autoresponse->data['descr'])), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', $autoresponse->toBoolean($autoresponse->data['only_4_cust']), 0, 0, false, false, $save_contacts, 0, $autoresponse->data['id']);
                     // В случае добавление автоответа, уменьшаем счетчик автоответов для пользователя (в транзакции)
                     if ($error_offer || !$autoresponse->reduce($freelancer, $obj_offer, $project_id)) {
                         $this->log->notice('Rollback autoresponse posted for project #id = ' . $project_id);
                         $DB->rollback();
                     } else {
                         $obj_project->incrementViews($project_id);
                         $this->log->notice(sprintf('New autoresponse #%d posted for project #%d', $obj_offer->offer_id, $project_id));
                         $DB->commit();
                     }
                 }
             }
             break;
     }
     return PGQ_EVENT_OK;
 }
Пример #3
0
function SaveStatus($text, $statusType, $login = NULL)
{
    session_start();
    $freelancer = new freelancer();
    $text = addslashes(substr(stripslashes(trim($text)), 0, 200));
    close_tags($text, 's');
    $freelancer->status_text = antispam(htmlspecialchars(htmlspecialchars_decode(change_q_x(trim($text), true, false), ENT_QUOTES), ENT_QUOTES));
    $freelancer->status_type = intval($statusType);
    if ($freelancer->statusToStr($statusType)) {
        $stdStatus = "";
        $objResponse = new xajaxResponse();
        $uid = hasPermissions('users') && $login != $_SESSION['login'] ? $freelancer->GetUid($err, $login) : get_uid(false);
        $pro = hasPermissions('users') && $login != $_SESSION['login'] ? is_pro(true, $uid) : is_pro();
        $error = $freelancer->Update($uid, $res);
        if (!$freelancer->status_text) {
            $freelancer->status_text = $stdStatus;
        }
        $freelancer->status_text = stripslashes($freelancer->status_text);
        switch ($freelancer->status_type) {
            case 1:
                $status_cls = 'b-status b-status_busy';
                break;
            case 2:
                $status_cls = 'b-status b-status_abs';
                break;
            case -1:
                $status_cls = 'b-status b-status_no';
                break;
            default:
                $status_cls = 'b-status b-status_free';
        }
        if (!$noassign) {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
            $stop_words = new stop_words(hasPermissions('users'));
            $sStatusText = $pro ? $freelancer->status_text : $stop_words->replace($freelancer->status_text);
            //$GLOBALS['xajax']->setCharEncoding("windows-1251");
            $jsobj = json_encode(array('data' => iconv('CP1251', 'UTF8', $freelancer->status_text)));
            $objResponse->assign("statusText", "innerHTML", $freelancer->status_text == $stdStatus ? "" : reformat($sStatusText, 40, 0, 1, 25));
            $objResponse->assign("statusTitle", "innerHTML", $freelancer->statusToStr($statusType));
            //            $objResponse->assign("statusTitle", "style.display", $statusType > -1 ? '' : 'none');
            $objResponse->script("statusType = {$statusType};\n\t\t\t                      statusTxt = document.getElementById('statusText').innerHTML;\n\t\t\t                      statusTxtSrc = {$jsobj};");
        }
        $objResponse->script("\$('bstatus').erase('class');\n             \$('bstatus').addClass('{$status_cls}');");
    }
    return $objResponse;
}
Пример #4
0
/**
 * Редактирование комментария.
 *
 * @param   integer        id комментария
 * @param   string         комментарий
 *
 * @return xajaxResponse
 */
function ChangeComment($cid, $comment)
{
    global $contest, $stop_words;
    session_start();
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    $objResponse = new xajaxResponse();
    if (!trim($comment)) {
        $objResponse->alert('Комментарий не может быть пустым');
        return $objResponse;
    }
    if (!($uid = $_SESSION['uid'])) {
        return $objResponse;
    }
    $contest = new contest(0, $uid, is_emp(), FALSE, hasPermissions('projects'));
    // если пользователь не про или не верифицирован, то есть смысл проверить, может быть конкурс только для про или только для верифицированных
    $project = contest::getProjectByCommentID($cid);
    if ((!is_pro() || !is_verify()) && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        if ($project['pro_only'] == 't' && !is_pro()) {
            $objResponse->call('comment.reset');
            $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.');
            return $objResponse;
        } elseif ($project['verify_only'] == 't' && !is_verify()) {
            $objResponse->call('comment.reset');
            $objResponse->alert('Данная функция доступна только верифицированным пользователям.');
            return $objResponse;
        }
    }
    if (!($offer = $contest->GetOffer($oid))) {
        return $objResponse;
    }
    $contest->pid = $offer['project_id'];
    $comment = change_q_x(antispam(substr(rtrim(ltrim($comment, "\r\n")), 0, 5000)), false, true, 'b|br|i|p|ul|li|cut|h[1-6]{1}', false, false);
    if ($error = $contest->ChangeComment($cid, $comment)) {
        $objResponse->alert($error);
    } else {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
        $stop_words = new stop_words(hasPermissions('projects'));
        $html = reformat(stripslashes($stop_words->replace($comment)), 30, 0, 0, 1);
        $original = reformat(stripslashes($comment), 30, 0, 0, 1);
        $objResponse->call('comment.changed', $html, $original, dateFormat('[изменен: d.m.Y | H:i]', $comments[$i]['modified']));
    }
    return $objResponse;
}
Пример #5
0
 $title = antispam(__paramInit('htmltext', NULL, 'title', ''));
 // дополнительно обрезаем отформатированую строку до 256 символов (максимальное количество в базе)
 $title = substr($title, 0, 256);
 $title = $title === false ? '' : $title;
 $category_id = __paramInit('int', NULL, 'category_id');
 if (commune::IS_NEW_WYSIWYG) {
     $msgtext = __paramValue('ckedit', antispam($_POST['msgtext']));
     //antispam(__paramInit('wysiwyg_tidy', NULL, 'msgtext', ''));
     //$msgtext = stripslashes($msgtext);
 } else {
     $msgtext = antispam(__paramInit('wysiwyg_tidy', NULL, 'msgtext', ''));
 }
 $youtube_link = __paramInit('html', NULL, 'youtube_link', '');
 //$attach         = __paramInit('string', NULL, 'prev_attach');
 //$youtube_link   = str_replace('watch?v=', 'v/', $youtube_link);
 $question = antispam(trim(__paramInit('string', NULL, 'question')));
 $answers = is_array($_POST['answers']) ? $_POST['answers'] : array();
 $answers_exists = is_array($_POST['answers_exists']) ? $_POST['answers_exists'] : array();
 $multiple = __paramInit('int', NULL, 'multiple', '0');
 $close_comments = __paramInit('int', NULL, 'close_comments');
 $is_private = __paramInit('int', NULL, 'is_private');
 $user_data = commune::GetUserCommuneRel($id, $uid);
 if ((!$user_data['is_accepted'] || $user_data['is_deleted'] || $user_data['is_banned']) && (!hasPermissions('communes') && !$user_data['is_author'])) {
     header("Location: /commune/?id={$id}&om={$om}" . ($rating ? '&rating=' . $rating : ''));
     exit;
 }
 if ($_POST['delattach']) {
     $deleted_file = $_POST['delattach'];
     $file = new CFile();
     $file->table = 'file_commune';
     foreach ($deleted_file as $i => $id_del) {
Пример #6
0
 /**
  * Отправка сообщения.
  * 
  * @param type $attr
  */
 public function _ceSend($attr)
 {
     $user = new users();
     $messages = new messages();
     $stopWords = new stop_words(false);
     $user->getUserByUID(intval($attr->uid));
     if (empty($user->login) || $user->login == 'admin') {
         self::error(3, false);
         return;
     }
     if ($user->is_banned) {
         self::error(4, false);
         return;
     }
     $text = iconv('UTF-8', 'CP1251', $attr->text);
     $text = antispam(change_q_x($text, false, true, null, false, false));
     $messages->Add($this->_uid, $user->login, addslashes($text), array(), 0, false, null, $id);
     if (!is_pro() && !is_pro(true, $attr->uid)) {
         if (!hasPermissions('streamnomod') && !hasPermissions('streamnomod', $attr->uid)) {
             $stopWords = new stop_words(false);
             $text = $stopWords->replace($text);
         }
     }
     $text = reformat($text, 14, 0, 0, 1);
     $time = date('Y-m-d H:i:s');
     $data = array('func' => 'income', 'attr' => array('id' => $id, 'uid' => $this->_uid, 'cuid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'files' => array(), 'date' => $time));
     $this->_addEvent($data);
     return array('id' => $id, 'uid' => $user->uid, 'text' => iconv('CP1251', 'UTF-8', $text), 'date' => $time);
 }
Пример #7
0
 $cost_month = intval(str_replace(" ", "", $_POST['cost_month']) * 100) / 100;
 $cost_type_hour = intval($_POST['cost_type_hour']);
 $cost_type_month = intval($_POST['cost_type_month']);
 $in_office = intval($_POST['in_office']) == 1 ? 't' : 'f';
 $prefer_sbr = intval($_POST['prefer_sbr']) == 1 ? 't' : 'f';
 // Разбиваем длинные слова.
 setlocale(LC_ALL, 'ru_RU.CP1251');
 $text = stripslashes(trim($_POST['ab_text']));
 #    $text = preg_replace("|[\s]+|", " ", $text);
 $text = preg_replace("|[\t]+|", " ", $text);
 $text = preg_replace("|[ ]+|", " ", $text);
 $original_text = $text;
 $cat_show = !empty($_POST['cat_show']) && (int) $_POST['cat_show'] > 0;
 // Обрезаем.
 $newlines = intval(substr_count($text, "\r"));
 $text = antispam(change_q_x_a(substr($text, 0, $ab_text_max_length + $newlines), false, false, "b|i|p|ul|li{1}"));
 /**
  * Проверка значений.
  */
 if (strlen($original_text) > $ab_text_max_length + $newlines) {
     $error_serv .= ($error_serv == '' ? '' : '<br />') . 'Количество знаков превышает допустимое значение. Допустимо максимум ' . $ab_text_max_length . ' знаков для поля "Уточнения к услугам в портфолио"';
 }
 if ($exp < 0 || $exp > $max_exp_years) {
     $error_serv .= ($error_serv == '' ? '' : '<br />') . 'Недопустимое значение. Опыт работы должен быть в пределе от 0 до ' . $max_exp_years . '.';
 }
 if ($cost_hour < 0 || $cost_hour > $max_cost_hour[$_POST['cost_type_hour']]) {
     $error_serv .= ($error_serv == '' ? '' : '<br />') . 'Недопустимое значение. Стоимость часа работы должна быть в пределе ' . view_range_cost2(0, $max_cost_hour[$_POST['cost_type_hour']], '', '', false, $_POST['cost_type_hour'] . '.');
 }
 if ($cost_month < 0 || $cost_month > $max_cost_month[$_POST['cost_type_month']]) {
     $error_serv .= ($error_serv == '' ? '' : '<br />') . 'Недопустимое значение. Стоимость месяца работы должна быть в пределе ' . view_range_cost2(0, $max_cost_month[$_POST['cost_type_month']], '', '', false, $_POST['cost_type_month']) . '.';
 }
Пример #8
0
function AddDialogueMessage($form)
{
    global $session;
    session_start();
    $objResponse = new xajaxResponse();
    $offerIsBlocked = projects_offers::isOfferBlocked(false, get_uid(), $form['prj_id']);
    if ($offerIsBlocked) {
        $objResponse->alert('Ваше предложение заблокировано, вы не можете отправить это сообщение');
        return $objResponse;
    }
    $prj = new projects();
    $project = $prj->GetPrjCust(intval($form['prj_id']));
    $is_pro = is_pro();
    if ($project['pro_only'] == 't' && !$is_pro && !is_emp() && !hasPermissions('projects')) {
        if ($project['kind'] == 7) {
            if (contest::IsContestOfferExists($project['id'], get_uid(false))) {
                $is_pro = true;
            }
        } else {
            if (projects_offers::IsPrjOfferExists($project['id'], get_uid(false))) {
                $is_pro = true;
            }
        }
    }
    if ($project['pro_only'] == 't' && !$is_pro && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        $objResponse->alert('Данная функция доступна только пользователям с аккаунтом PRO.');
        $objResponse->script("\$('savebtn').set('disabled', false);");
        return $objResponse;
    } elseif ($project['verify_only'] == 't' && !($_SESSION['is_verify'] == 't') && $project['user_id'] != get_uid() && !hasPermissions('projects')) {
        $objResponse->alert('Данная функция доступна только верифицированным пользователям.');
        $objResponse->script("\$('savebtn').set('disabled', false);");
        return $objResponse;
    }
    if (!trim($form['po_text'])) {
        $objResponse->alert('Невозможно отправить пустое сообщение.');
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        return $objResponse;
    }
    if (!is_emp() && $form['from'] == 'emp') {
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта работодателя.');
        return $objResponse;
    } elseif (is_emp() && $form['from'] == 'frl') {
        $objResponse->script("\n            \$('savebtn').set('disabled', false);\n        ");
        $objResponse->alert('Невозможно отправить сообщение. Вы вышли из аккаунта фрилансера.');
        return $objResponse;
    }
    //Не позволяем производить действия с заблокированным проектом
    if (projects::CheckBlocked(intval($form['prj_id']))) {
        $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($form['prj_id']) . "'");
    } elseif (intval($_SESSION['uid'])) {
        $po_id = intval($form['po_id']);
        //$po_text = substr(change_q_x($form['po_text'], false), 0, 1000);
        $po_text = antispam(trim($form['po_text']));
        $po_text = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $po_text);
        $po_commentid = intval($form['po_commentid']);
        $user_id = get_uid(false);
        $user = new users();
        $user_name = $user->GetName($user_id, $error);
        $pod = new projects_offers_dialogue();
        $project_dialogue = $pod->GetDialogueForOffer($po_id);
        $project = $pod->GetProjectFromDialogue($po_id);
        if (count($project_dialogue)) {
            for ($i = count($project_dialogue) - 1; $i >= 0; --$i) {
                if ($project_dialogue[$i]['user_id'] != $user_id) {
                    $to_user_name = $project_dialogue[$i]['login'];
                    break;
                }
            }
        }
        if (is_emp()) {
            $emp_read = true;
            $frl_read = false;
        } else {
            $emp_read = false;
            $frl_read = true;
        }
        if (!$po_commentid) {
            $error = $pod->AddDialogueMessage($po_id, $user_id, $po_text, $frl_read, $emp_read);
            $last_comment = $pod->GetLastDialogueMessage($user_id, $po_id);
            $objResponse->script("last_commentid={$last_comment};");
            $objResponse->script("edit_block[{$po_id}] = '&nbsp;&nbsp;<span><a href=\"javascript:void(null)\" onClick=\"answer({$po_id}, {$last_comment});markRead(\\'{$po_id}\\');\" class=\"internal\">Редактировать</a></span>';");
            //		$objResponse->script("alert(last_commentid);");
            //		$objResponse->script("alert(edit_block);");
        } else {
            $error = $pod->SaveDialogueMessage($user_id, $po_text, $po_commentid, $po_id, false);
            if ($error == 1) {
                $objResponse->alert('Вы не можете редактировать комментарий, так как на него уже ответили.');
                return $objResponse;
            }
        }
        $po_text = rtrim(ltrim($po_text, "\r\n"));
        $po_text = substr(change_q_x($po_text, false, true, '', false, false), 0, 1000);
        $po_text = stripslashes($po_text);
        if ($error == '') {
            $sPostText = $po_text;
            if ($project['kind'] != 4) {
                $sId = $po_commentid ? $po_commentid : $last_comment;
                $aComment = $pod->getDialogueMessageById($sId);
                if ($aComment['moderator_status'] === '0') {
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
                    $stop_words = new stop_words(hasPermissions('projects'));
                    $sPostText = $stop_words->replace($sPostText);
                }
            }
            if (!$po_commentid) {
                $objResponse->append('po_dialogue_talk_' . $po_id, 'innerHTML', '<div style="margin-bottom:8px;font-size:100%;"><span class="' . (is_emp() ? 'emp' : 'frl') . 'name11"><a href="/users/' . get_login($user_id) . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['uname'] . ' ' . $user_name['usurname'] . '">' . $user_name['uname'] . ' ' . $user_name['usurname'] . '</a> [<a href="/users/' . $user_name['login'] . '/" class="' . (is_emp() ? 'emp' : 'frl') . 'name11" title="' . $user_name['login'] . '">' . $user_name['login'] . '</a>]</span> <span id="po_date_' . $last_comment . '">[' . strftime('%d.%m.%Y | %H:%M', time()) . ']</span><br /><div id="po_comment_' . $last_comment . '">' . reformat($sPostText, 50, 0, 0, 1) . '</div><div id="po_comment_original_' . $last_comment . '" style="display:none;">' . str_replace(' ', '&nbsp;', reformat($po_text, 1000, 0, 1)) . '</div></div>');
                //			$objResponse->call('resetfld', $po_id);
                $objResponse->script('dialogue_count[' . $po_id . '] = ' . (count($project_dialogue) + 1));
            } else {
                $objResponse->assign('po_comment_' . $po_commentid, 'innerHTML', reformat($sPostText, 50, 0, 0, 1));
                $objResponse->assign('po_comment_original_' . $po_commentid, 'innerHTML', str_replace(' ', '&nbsp;', reformat($po_text, 1000, 0, 1)));
                $objResponse->assign('po_date_' . $po_commentid, 'innerHTML', dateFormat('[d.m.Y | H:i]', date('Y-m-d H:i:s')));
            }
            $objResponse->call('answer', $po_id);
            if ($to_user_name && $project['id'] && $project['name'] && !$po_commentid) {
                /*require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php");
                		$smail = new smail();
                		if ($project['user_id'] == $user_id) {
                               $error = $smail->NewPrjMessageOnOfferFrl($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text);
                		} else {
                               $error = $smail->NewPrjMessageOnOfferEmp($user_name['login'], $project['id'], $project['name'], $to_user_name, $po_text);
                		}*/
            }
        } else {
            $objResponse->alert('Ошибка сохранения.');
        }
    } else {
        $objResponse->alert('Ошибка сохранения. Авторизируйтесь на сайте.');
    }
    return $objResponse;
}
Пример #9
0
     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();
 $attach_have = $_POST['have_attach'];
 $olduser = intval($_POST['olduser']);
 $us = new users();
 $logins = $us->GetName($olduser, $error);
 $olduserlogin = $logins['login'];
 if (!$olduserlogin) {
     break;
 }
 if (!$t) {
     $base = 0;
 } else {
     $base = 1;
 }
Пример #10
0
        }
        echo json_encode($result);
        exit;
        break;
}
$js_file_utf8[] = '/scripts/ckedit/ckeditor.js';
switch ($_page) {
    case 'new':
        if (!$uid) {
            header('Location: /fbd.php');
            exit;
        }
        $content = 'content_new.php';
        $title = antispam(__paramInit('html', null, 'title'));
        $short = antispam(__paramInit('html', null, 'short'));
        $msgtext = antispam(__paramInit('html', null, 'msgtext'));
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            if (trim($short) == '') {
                $alert[1] = 'Поле не должно быть пустым!';
            }
            if (trim($msgtext) == '') {
                $alert[2] = 'Поле не должно быть пустым!';
            }
            if (trim($title) == '') {
                $alert[0] = 'Поле не должно быть пустым!';
            }
            $file = new CFile($_FILES['attach']);
            if ($file->tmp_name) {
                $file->max_size = articles::ARTICLE_MAX_LOGOSIZE;
                $file->proportional = 1;
                $file->max_image_size = array('width' => 100, 'height' => 100, 'less' => 1);
Пример #11
0
 public function updateProfessionUser($uid, $prof_id, $params)
 {
     global $DB;
     $uid = intval($uid);
     $prof_id = intval($prof_id);
     $params = $this->prepareRequest($params);
     $this->validate($params);
     if (empty($this->errors)) {
         $this->update = array('cost_from' => $params['prof_cost_from'], 'cost_to' => $params['prof_cost_to'], 'cost_hour' => $params['prof_cost_hour'], 'cost_1000' => $params['prof_cost1000'], 'cost_type' => $params['prof_cost_type_db_id'], 'cost_type_hour' => $params['prof_cost_type_hour_db_id'], 'time_type' => $params['prof_time_type_db_id'], 'time_from' => $params['prof_time_from'], 'time_to' => $params['prof_time_to'], 'portf_text' => antispam($params['portf_text']), 'show_preview' => $params['on_preview'] ? 't' : 'f', 'modified' => 'NOW()');
         $is_upd = $DB->update("portf_choise", $this->update, "user_id= ?i AND prof_id = ?i", $uid, $prof_id);
         if ($is_upd) {
             $this->checkUserContent($uid, $prof_id, $params['portf_text'], $params['old_portf_text']);
         } else {
             $this->errors['error'] = 'Данные не сохранены';
         }
     }
 }
Пример #12
0
 id="ch-b1"  /> <label class="b-check__label b-check__label_bold b-check__label_color_666" for="ch-b1">Показывать блок</label></div></td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" style="width:100%">
<tr>
	<td>
		<table cellspacing="0" cellpadding="4" style="width:100%; border:0"  class="dop-inf-tabl">
		<tr>
			<td>
				Текст:
			</td>
		</tr>
		<tr>
		<td>
                    <div class="b-textarea"><textarea cols="89" rows="9" name="konk" class="b-textarea__textarea"><?php 
echo $_POST['konk'] != "" ? antispam(htmlspecialchars($_POST['konk'])) : input_ref($user->konk);
?>
</textarea></div>
		</td>
		</tr>
		<?php 
if ($alert[9]) {
    ?>
		<tr><td><?php 
    echo view_error($alert[9]);
    ?>
</td></tr>
		<?php 
}
?>
		<tr>
Пример #13
0
 public function checkYoutubeAction()
 {
     $yt_link = front::$_req['value'];
     $yt_link = substr(change_q_x(antispam(str_replace('watch?v=', 'v/', $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) {
             echo json_encode(array('valid' => false, 'reason' => 'Неверная ссылка'));
             return;
         }
     }
     echo json_encode(array('valid' => true));
 }
Пример #14
0
 public function editWork($uid, $params)
 {
     global $DB;
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
     $params = self::prepareWork($params);
     $error = self::validateWork($params);
     $work_id = $params['id'];
     if (!empty($error)) {
         return $error;
     }
     $update = array('link' => $params['link'], 'name' => antispam($params['work_name']), 'descr' => antispam($params['work_descr']), 'cost' => $params['work_cost'], 'cost_type' => $params['work_cost_type_db_id'], 'time_value' => $params['time_cost'], 'time_type' => $params['work_time_type_db_id'], 'prev_type' => $params['work_preview_type'], 'prof_id' => $params['work_category_db_id']);
     if ($params['video'] != '') {
         $video_link = video_validate($params['video']);
         $video_link = preg_replace("/^http:\\/\\//", '', $video_link);
         $update['video_link'] = $video_link;
         $update['is_video'] = true;
     } else {
         $update['video_link'] = '';
         $update['is_video'] = false;
     }
     if ($uid == $_SESSION['uid'] && !hasPermissions('users')) {
         // автор, не админ, не про меняет заголовок либо текст - отправить на модерирование
         $update['moderator_status'] = !is_pro() ? '0' : '-2';
     }
     if ($params['position_num'] !== NULL) {
         $update['norder'] = intval($params['position_num']);
     }
     $dir = 'users/' . substr($_SESSION['login'], 0, 2) . "/{$_SESSION['login']}/upload/";
     if (isset($params['IDResource']) && is_array($params['IDResource'])) {
         foreach ($params['IDResource'] as $resource) {
             $resources[uploader::sgetTypeUpload($resource)] = $resource;
         }
         if (isset($resources['portfolio'])) {
             $mainFile = current(uploader::sgetFiles($resources['portfolio']));
             if (!empty($mainFile)) {
                 // Если что-то загрузили и не удаляли
                 $MFile = uploader::remoteCopy($mainFile['id'], 'file', $dir, false);
                 uploader::sclear($resources['portfolio']);
                 // Делаем отдельное привью из оригинальной большой картинки  -- @todo ХЗ зачем но раньше так делали
                 if (in_array($MFile->getext(), $GLOBALS['graf_array']) && $MFile->getext() != 'swf') {
                     $MFile->resizeImage($dir . 'tn_' . $MFile->name, self::PREVIEW_MAX_WIDTH, self::PREVIEW_MAX_HEIGHT, 'auto', true);
                 }
                 $update['pict'] = $MFile->name;
                 $is_remove_main_file = true;
             }
         }
         if (isset($resources['pf_preview'])) {
             $preview = current(uploader::sgetFiles($resources['pf_preview']));
             if (!empty($preview)) {
                 // Если что-то загрузили и не удаляли
                 $PFile = uploader::remoteCopy($preview['id'], 'file', $dir, false, 'sm_f_');
                 uploader::sclear($resources['pf_preview']);
                 $update['prev_pict'] = $PFile->name;
                 $is_remove_preview_file = true;
             }
         }
     }
     if ($params['main_file'] == '' && !isset($MFile)) {
         // Удаляем файл
         $update['pict'] = '';
         $is_remove_main_file = true;
     }
     if ($params['preview_file'] == '' && !isset($PFile)) {
         // Удаляем файл
         $update['prev_pict'] = '';
         $is_remove_preview_file = true;
     }
     if ($is_remove_main_file) {
         $cf = new CFile();
         $cf->Delete(0, $dir, $params['old_main_file']);
         // удаляем ранее загруженный файл
     }
     if ($is_remove_preview_file) {
         $cf = new CFile();
         $cf->Delete(0, $dir, $params['old_preview_file']);
         // удаляем ранее загруженный файл
     }
     if (empty($error)) {
         $wmodeAllowValues = array('direct', 'gpu', 'window');
         if (!in_array($params['wmode'], $wmodeAllowValues)) {
             $params['wmode'] = 'window';
         }
         if ($work_id) {
             $update['edit_date'] = 'NOW()';
             $result = $DB->update('portfolio', $update, 'id = ?i AND user_id = ?i', $work_id, $uid);
         } else {
             $update['user_id'] = $uid;
             $result = $DB->insert('portfolio', $update, 'id');
             $work_id = $result;
         }
         if ($MFile && $MFile->getext() == 'swf' && $MFile->id) {
             $res = $DB->query('UPDATE swf_file_params SET wmode = ?, table_name = ? WHERE fid = ?i', $params['wmode'], $MFile->table, $MFile->id);
             if (pg_affected_rows($res) == 0) {
                 $res = $DB->query('INSERT INTO swf_file_params (fid, wmode, table_name) VALUES(?i, ?, ?)', $MFile->id, $params['wmode'], $MFile->table);
             }
         } else {
             if (!$MFile) {
                 $ext = preg_replace("#.*(\\.[a-zA-Z0-9]*)\$#", '$1', $params['main_file']);
                 if (strtolower($ext) == '.swf') {
                     $res = $DB->query('UPDATE swf_file_params SET wmode = ? WHERE fid = (SELECT id FROM file WHERE fname = ?)', $params['wmode'], $params['main_file']);
                     if (pg_affected_rows($res) == 0) {
                         $res = $DB->query('INSERT INTO swf_file_params (fid, wmode, table_name) VALUES( ( SELECT id  FROM file WHERE fname = ?) , ?, ?)', $params['main_file'], $params['wmode'], 'file');
                     }
                 }
             }
         }
     } else {
         return $error;
     }
     if ($work_id && $result && !is_pro()) {
         /*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php' );
                     require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' );
         
                     $stop_words = new stop_words();
                     $nStopWordsCnt = $stop_words->calculate($update['name'], $update['descr']);
                     $DB->insert('moderation', array('rec_id' => $work_id, 'rec_type' => user_content::MODER_PORTFOLIO, 'stop_words_cnt' => $nStopWordsCnt));*/
     }
     return $result;
 }
Пример #15
0
 if ($cid) {
     $is_edit = true;
     $pod = new projects_offers_dialogue();
     $project_dialogue = $pod->GetDialogueForOffer($po_id);
     $edit_dialog = $project_dialogue[count($project_dialogue) - 1];
 }
 if ($action == 'create') {
     if (!trim($_POST['po_text'])) {
         $error = 'Невозможно отправить пустое сообщение.';
     }
     //Не позволяем производить действия с заблокированным проектом
     if (projects::CheckBlocked(intval($_POST['prj_id']))) {
         return;
     } elseif (intval($_SESSION['uid'])) {
         $po_id = intval($_POST['po_id']);
         $po_text = antispam(trim($_POST['po_text']));
         $po_commentid = intval($_POST['po_commentid']);
         $user_id = get_uid(false);
         $user = new users();
         $user_name = $user->GetName($user_id, $error);
         $project_dialogue = $pod->GetDialogueForOffer($po_id);
         $project = $pod->GetProjectFromDialogue($po_id);
         if (count($project_dialogue)) {
             for ($i = count($project_dialogue) - 1; $i >= 0; --$i) {
                 if ($project_dialogue[$i]['user_id'] != $user_id) {
                     $to_user_name = $project_dialogue[$i]['login'];
                     break;
                 }
             }
         }
         if (is_emp()) {
Пример #16
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']));
 }
Пример #17
0
}
?>
		<tr>
			<td>
				Максимум 500 знаков.<br /><br />
			</td>
		</tr>
		<tr>
			<td>
				Текст:
			</td>
		</tr>
		<tr>
			<td>
                            <div class="b-textarea"><textarea cols="89" rows="17" name="resumetxt" class="b-textarea__textarea tawl" rel="4000" placeholder="<?php 
echo $_POST['resumetxt'] != "" ? antispam(htmlspecialchars(stripslashes($_POST['resumetxt']))) : input_ref($user->resume);
?>
"></textarea></div>
			</td>
		</tr>
		<?php 
if ($alert[5]) {
    ?>
		<tr><td><?php 
    echo view_error($alert[5]);
    ?>
</td></tr>
		<?php 
}
?>
		<tr>
Пример #18
0
 }
 if ($action == 'next' || $action == "change" || $action == "change_country") {
     $use_draft = $project['user_id'] == get_uid(false);
     // сохаряем проект в черновики между первым и вторым шагом, если вдруг что пойдет не так
     $is_tmp_draft = false;
     if ($use_draft) {
         if (!$draft_id) {
             $is_tmp_draft = true;
         }
         $tmp = $_POST;
         $tmp['uid'] = $uid;
         $dmp = $drafts->SaveProject($tmp);
         $draft_id = $dmp['id'];
     }
     $tmpPrj->setProjectField('descr', antispam(__paramInit('html', NULL, 'descr', NULL, NULL, TRUE)));
     $tmpPrj->setProjectField('name', substr(antispam(__paramInit('string', NULL, 'name', NULL, 60)), 0, 512));
     $tmpPrj->setProjectField('cost', __paramInit('float', NULL, 'cost', 0));
     $tmpPrj->setProjectField('currency', __paramInit('int', NULL, 'currency', 0));
     $tmpPrj->setProjectField('budget_type', __paramInit('int', NULL, 'budget_type', 0));
     $tmpPrj->setProjectField('priceby', __paramInit('int', NULL, 'priceby', 0));
     $tmpPrj->setProjectField('agreement', __paramInit('int', NULL, 'agreement', 0));
     if (!$PDA) {
         $c = __paramInit('array', NULL, 'categories');
         $sc = __paramInit('array', NULL, 'subcategories');
         if (empty($c) || sizeof($c) == 1 && $c[0] == 0) {
             $error['category'] = 'Не выбран раздел';
         } else {
             $cats = array();
             foreach ($c as $sKey => $value) {
                 if ($value == 0) {
                     continue;
Пример #19
0
 //		exit;
 //		break;
 case "post_msg":
     $isNeedUseCaptcha = messages::isNeedUseCaptcha(get_uid(false));
     $chat_user = new users();
     $chat_user->GetUser($chat_with);
     if ($chat_user->is_banned && !hasPermissions('users')) {
         $error_flag = 1;
         $alert[3] = "Этот пользователь заблокирован. Вы не можете отправить ему личное сообщение";
     }
     //Разрешено ли пользователю отправлять сообщения
     if (!isset($error_flag) && is_emp($chat_user->role) && !messages::isAllowed($chat_user->uid, $uid)) {
         $chat_with = '';
         break;
     }
     $msg = antispam(__paramInit('html', NULL, 'msg'));
     $prjname = __paramInit('string', NULL, 'prjname');
     $attachedfiles_session = __paramInit('string', NULL, 'attachedfiles_session');
     //$attach = new CFile($_FILES['attach']);
     // загрузка файлов
     $files = array();
     $attach = $_FILES['attach'];
     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]));
         }
     }
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/attachedfiles.php";
Пример #20
0
     } else {
         $subcat = $freelancer->spec;
         $cat = professions::GetGroupIdByProf($subcat);
         $cats[] = array('category_id' => $cat, 'subcategory_id' => $subcat);
         $tmpPrj->setCategories($cats);
     }
     $tmpPrj->setProjectField('country', __paramValue('int', $_POST['project_location_columns'][0]));
     $tmpPrj->setProjectField('city', __paramValue('int', $_POST['project_location_columns'][1]));
 }
 if ($project['kind'] == projects::KIND_PROJECT) {
     $tmpPrj->setProjectField('pro_only', 't');
 } else {
     $tmpPrj->setProjectField('pro_only', __paramInit('bool', NULL, 'pro_only') ? 't' : 'f');
 }
 $tmpPrj->setProjectField('verify_only', __paramInit('bool', NULL, 'verify_only') ? 't' : 'f');
 $tmpPrj->setProjectField('videolnk', __paramValue('html', antispam($_POST['videolnk']), 60, true));
 $tmpPrj->setProjectField('strong_top', __paramInit('int', NULL, 'strong_top'));
 $tmpPrj->setProjectField('prefer_sbr', __paramInit('bool', NULL, 'prefer_sbr') ? 't' : 'f');
 $tmpPrj->setAddedTopDays(__paramInit('bool', NULL, 'top_ok') ? __paramInit('int', NULL, 'top_days', 0) : 0);
 $tmpPrj->setProjectField('link', substr(__paramInit('string', NULL, 'link'), 0, 100));
 $oproject = $project;
 $project = $tmpPrj->getProject();
 //Данные о ранее купленных услугах "Срочный" и "Скрытый"
 //Если редактирование, то берем старое значение. иначе false
 if ($tmpPrj->isEdit()) {
     $tmpPrj->setProjectField('o_hide', $oproject['hide']);
     $tmpPrj->setProjectField('o_urgent', $oproject['urgent']);
 } else {
     $tmpPrj->setProjectField('o_hide', 'f');
     $tmpPrj->setProjectField('o_urgent', 'f');
 }
Пример #21
0
 /**
  * Быстро добавить проект с полями из массива
  * 
  * @param type $data
  * @return boolean
  */
 function addSimpleProject($data = array())
 {
     if (empty($data)) {
         return false;
     }
     if (isset($data['categories'])) {
         $this->setCategories($data['categories']);
     }
     if (!isset($data['budget_type'])) {
         $data['budget_type'] = 0;
     }
     if (!isset($data['prefer_sbr'])) {
         $data['prefer_sbr'] = false;
     }
     foreach ($data as $key => $value) {
         switch ($key) {
             case 'name':
                 $value = substr(antispam($value), 0, 512);
                 break;
             case 'descr':
                 $value = antispam($value);
                 break;
         }
         $this->setProjectField($key, $value);
     }
     $prePrj = $this->_preDb(0, 0);
     $success = $this->addPrj($this->_project, $this->_attach, array_reverse($this->_categories));
     if (!$success) {
         $this->_postDbFailed($prePrj, 0, 0);
         return false;
     }
     $ret = $this->getProject();
     $this->_postDbSuccess();
     return $ret;
 }
Пример #22
0
         $error_flag = 1;
         $alert[63] = "Поле заполнено некорректно";
     }
 }
 // more phone
 if (strlen($_POST['resumetxt']) > 4000) {
     $error_flag = 1;
     $alert[5] = "Количество знаков превышает допустимое значение";
 } else {
     $frl->resume = antispam(__paramInit('html', null, 'resumetxt', '', 4000));
 }
 if (strlen($_POST['companytxt']) > 500) {
     $error_flag = 1;
     $alert[6] = "Количество знаков в тексте о компании превышает допустимое значение";
 } else {
     $frl->company = antispam(__paramInit('html', null, 'companytxt', '', 500));
 }
 $frl->blocks = '1' . intval(trim($_POST['showteam'])) . intval(trim($_POST['showcommune'])) . intval(trim($_POST['showjoincommune'])) . intval(trim($_POST['showempl'])) . intval(trim($_POST['showfrl']));
 $frl->compname = __paramInit('string', NULL, 'compname', '');
 $frl->ljuser = change_q(substr(strip_tags(trim($_POST['ljuser'])), 0, 64), true);
 // more lj
 $frl->lj_1 = change_q(substr(trim($_POST['lj_1']), 0, 64), true);
 if (!preg_match("/^[a-zA-Z0-9_-]*\$/", $frl->lj_1)) {
     $error_flag = 1;
     $alert[71] = "Поле заполнено некорректно";
 }
 $frl->lj_2 = change_q(substr(trim($_POST['lj_2']), 0, 64), true);
 if (!preg_match("/^[a-zA-Z0-9_-]*\$/", $frl->lj_2)) {
     $error_flag = 1;
     $alert[72] = "Поле заполнено некорректно";
 }
Пример #23
0
 function test_antispam()
 {
     //Проверка всякого рода спам-писем.
     //Однозначно "хорошие" сообщения
     $this->assertTrue(antispam('Здравствуйте! Сколько стоит установить окна?'));
     $this->assertTrue(antispam('http://okna-company.ru Здравствуйте! Это наш сайт. Сколько стоит продвижение сайта?'));
     $this->assertTrue(antispam('http://okna-company.ru http://okna-company.ru Здравствуйте! Это наш сайт. Сколько стоит продвижение сайта?'));
     $this->assertTrue(antispam('Здравствуйте! Я хочу заказать машину. Мне нравятся следующие: http://agwdfoywbabsdf.com http://foabakqjahafhasdfasd.com http://baydnkankalkaslasls.com Лето Синий Лис Ягнёнок Бесконечность Бытия Обречённость'));
     //Однозначно "плохие" сообщения
     $this->assertFalse(antispam('Online Sex [url=http://agwdfoywbabsdf.com]http://agwdfoywbabsdf.com[/url] online casino.'));
     $this->assertFalse(antispam('http://agwdfoywbabsdf.com http://foabakqjahafhasdfasd.com http://baydnkankalkaslasls.com Лето Синий Лис Ягнёнок Бесконечность Бытия Обречённость'));
     $this->assertFalse(antispam('Courts are a place where serious business is conducted, and that demands appropriate attire, says Delaware Superior Court Judge William Witham Jr., <a href=http://www.ju-this-site-is-fake-mplightfarmsonline.com/new-air-max-2013-run-this-link-is-fake-ning-shoes-for-men-blue-p-2692.html><b>New Air Max 2013 Running Shoes For Men Blue</b></a>, Between the redesign of its denim collection and the launch of a plus size fashion blog, the company has certainly taken strides to provide all women with the awesome denim options they deserve. Check out some of the photos from the look book below, and head to Fashion To Figure to purchase.锘縜'));
     //Тут письмо подозрительно, так как только английские символы и ссылка. Если есть ссылка и только английские символы - значит спамер.
     $this->assertFalse(antispam('Courts are a place where serious business is conducted, and that demands appropriate attire, says Delaware Superior Court Judge William Witham Jr.,  http://www.ju-this-site-is-fake-mplightfarmsonline.com/new-air-max-2013-run-this-link-is-fake-ning-shoes-for-men-blue-p-2692.html><b>New Air Max 2013 Running Shoes For Men Blue , Between the redesign of its denim collection and the launch of a plus size fashion blog, the company has certainly taken strides to provide all women with the awesome denim options they deserve. Check out some of the photos from the look book below, and head to Fashion To Figure to purchase.锘縜'));
     $this->assertFalse(antispam('Amdimr <a href=\\"http://ydufshhyeuao.com/\\">ydufshhyeuao</a>, [url=http://abtzmbcevibp.com/]abtzmbcevibp[/url], [link=http://znaragczxwqp.com/]znaragczxwqp[/link], http://bxueqcscjdwv.com/'));
 }
Пример #24
0
 function checkYoutubeAction()
 {
     $yt_link = front::$_req["value"];
     $yt_link = substr(change_q_x(antispam(str_replace('watch?v=', 'v/', $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) {
             echo json_encode(array("valid" => false, "reason" => "Неверная ссылка"));
             return;
         }
     }
     echo json_encode(array("valid" => true));
 }
Пример #25
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);
 }
Пример #26
0
 $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++;
         }
     }
 }
 if (is_array($_POST['answers_exists']) && !empty($_POST['answers_exists'])) {
     foreach ($_POST['answers_exists'] as $key => $pa) {
         if (trim((string) $pa) !== '') {
             $answers_exists[$key] = substr_entity(change_q_x(antispam(preg_replace('/&/', '&amp;', (string) trim($pa))), false, false, ''), 0, blogs::MAX_POLL_ANSWER_CHARS * 2, true);
             $i++;
         }
     }
 }
 if ($i > 0 && $question === '') {
     $error_flag = 1;
     $alert[5] = 'Введите текст вопроса';
 } 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 варианта ответа в голосовании';
/**
 * Сохранение комментария к работе в конкурсе
 * 
 * @param object $objResponse xajaxResponse
 * @param string $rec_id идентификатор записи
 * @param string $rec_type тип записи
 * @param array $aForm массив данных
 * @param string $sDrawFunc имя функции для выполнения после сохранения
 */
function _admEditContestComSaveForm(&$objResponse, $rec_id = '', $rec_type = '', $aForm = array(), $sDrawFunc = '')
{
    $alert = array();
    $comment = $aForm['msg'];
    if (!trim($comment)) {
        $alert[1] = 'Комментарий не может быть пустым';
    }
    if (!$alert) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/contest.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
        $contest = new contest(0, $uid, is_emp(), false, true);
        $comment = change_q_x(antispam(substr(rtrim(ltrim($comment, "\r\n")), 0, 5000)), false, true, 'b|br|i|p|ul|li|cut|h[1-6]{1}', false, false);
        $sReason = _parseReason($aForm['user_id'], $aForm['adm_edit_text']);
        $contest->ChangeComment($rec_id, $comment);
        messages::contestComModifiedNotification($aForm['project_id'], $aForm['offer_id'], $rec_id, $aForm['login'], $aForm['uname'], $aForm['usurname'], $sReason);
        $content_id = user_content::MODER_CONTEST_COM;
        _admEditAfterAll($objResponse, $content_id, $rec_id, $rec_type, $sDrawFunc, $aForm);
    } else {
        _setErrors($objResponse, $alert, array(1 => 'msg'), $sDrawFunc);
    }
}
Пример #28
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;
 }