コード例 #1
0
ファイル: tservices.php プロジェクト: kapai69/fl-ru-damp
 /**
  * Отправить услугу на модерацию.
  * 
  * @param int   $id
  * @param array $data
  */
 public function sendToModeration($id, $data, $status = 0)
 {
     $stop_words = new stop_words();
     $nStopWordsCnt = $stop_words->calculate($data['title'], $data['description'], $data['requirement']);
     $this->db()->insert($this->TABLE_MODERATION, array('rec_id' => $id, 'rec_type' => 22, 'stop_words_cnt' => $nStopWordsCnt, 'status' => $status));
 }
コード例 #2
0
ファイル: projects.php プロジェクト: amage/fl-ru-damp
 /**
  * Редактировать проект
  *
  * @param array  $prj        Данные для редактирования
  * @param object $newattach  Новые файлы (@see class CFile)
  * @return boolean true если редактирование прошло успешно, иначе false
  */
 function editPrj($prj, $newattach, $categories = false)
 {
     global $DB;
     if ($prj['kind'] == 7) {
         preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['end_date'], $o1);
         preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $prj['win_date'], $o2);
         if ($o1) {
             $end_date = date('Y-m-d', mktime(0, 0, 0, $o1[2], $o1[1], $o1[3]));
         } else {
             $end_date = $prj['end_date'];
         }
         if ($o2) {
             $win_date = date('Y-m-d', mktime(0, 0, 0, $o2[2], $o2[1], $o2[3]));
         } else {
             $win_date = $prj['win_date'];
         }
     } else {
         $end_date = NULL;
         $win_date = NULL;
     }
     $top_set = $post_set = '';
     if ($prj['top_days']) {
         $top_set = $DB->parse(",\n                  top_from    = CASE WHEN COALESCE(top_to,'epoch') >= now() THEN top_from ELSE now() END,\n                  top_to      = CASE WHEN COALESCE(top_to,'epoch') >= now() THEN top_to + '?i days'::interval ELSE now() + '?i days'::interval END\n              ", $prj['top_days'], $prj['top_days']);
     }
     if ($prj['post_now']) {
         $post_set = ", post_date = NOW()";
     }
     $sql = '';
     if ($prj['user_id'] == $_SESSION['uid'] && !hasPermissions('projects')) {
         // автор, не админ, не про - отправить на модерирование
         $sModeration = 'moderator_status = 0, ';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
         $stop_words = new stop_words();
         $nStopWordsCnt = $stop_words->calculate($prj['name'], $prj['descr']);
         $this->addModeration($prj['id'], $nStopWordsCnt);
     }
     $prj['payed'] = round($prj['payed'], 0);
     $prj['strong_top'] = hasPermissions('projects') ? (int) $prj['strong_top'] : 0;
     $sql .= $DB->parse("UPDATE projects\n            SET state       = ?i,\n                name        = ?,\n                cost        = ?f,\n                descr       = ?,\n                currency    = ?i,\n                kind        = ?i,\n                country     = ?i,\n                city        = ?i,\n                payed       = ?,\n                pro_only    = ?b,\n                verify_only = ?b,\n                videolnk    = ?,\n                strong_top  = ?i,\n                logo_id     = ?i,\n                link        = ?,\n                is_color    = ?b,\n                is_bold     = ?b,\n                billing_id  = ?i,\n                payed_items = ?,\n                edit_date   = NOW(),\n\t\t\t\tend_date    = ?,\n\t\t\t\tbudget_type = ?i,\n\t\t\t\tpriceby     = ?i,\n                prefer_sbr  = ?b,\n                urgent      = ?b,\n                hide        = ?b,\n                o_urgent    = ?b,\n                o_hide      = ?b,\n                contacts    = ?,\n                {$sModeration}\n\t\t\t\twin_date    = ?\n                {$top_set}\n                {$post_set}\n          WHERE id = ?i\n       ", $prj['state'], $prj['name'], $prj['cost'], $prj['descr'], $prj['currency'], $prj['kind'], $prj['country'], $prj['city'], $prj['payed'], $prj['pro_only'], $prj['verify_only'], $prj['videolnk'], $prj['strong_top'], $prj['logo_id'], $prj['link'], $prj['is_color'], $prj['is_bold'], $prj['billing_id'], $prj['payed_items'], $end_date, $prj['budget_type'], $prj['priceby'], $prj['prefer_sbr'], $prj['urgent'], $prj['hide'], $prj['urgent'], $prj['hide'], $prj['contacts'], $win_date, $prj['id']);
     if ($categories) {
         $this->saveSpecs($prj['id'], $categories);
     }
     $DB->query("DELETE FROM project_attach WHERE project_id = ?i", $prj['id']);
     // Удаляем все
     if ($newattach && is_array($newattach)) {
         $sql .= ";INSERT INTO project_attach (project_id, file_id) VALUES ";
         $i = 0;
         foreach ($newattach as $a) {
             $sql .= ($i++ ? ',' : '') . $DB->parse('(?i, ?i)', $prj['id'], $a['file_id']);
         }
     }
     //Обновляем информацию в старых преоктах (которые хранились также в таблице blogs_msgs)
     if (is_new_prj($prj['post_date'])) {
         $base = $prj['kind'] == 2 ? 5 : 3;
         $sql .= $DB->parse(";UPDATE blogs_msgs b\n                   SET title = ?,\n                       msgtext = ?,\n                       modified = NOW()\n                  FROM blogs_themes_old t\n                 WHERE t.id_gr = ?i\n                   AND t.base = ?i\n                   AND b.thread_id = t.thread_id\n                   AND b.reply_to IS NULL", $prj['name'], $prj['descr'], $prj['id'], $base);
     }
     return !!$DB->squery($sql);
 }
コード例 #3
0
ファイル: pay_place.php プロジェクト: Nikitian/fl-ru-damp
 function addUserTopNew($ad)
 {
     global $DB;
     $insert = array();
     $insert['uid'] = $ad['uid'];
     $insert['type_place'] = $ad['type_place'];
     if ($ad['ad_header']) {
         $insert['ad_header'] = $ad['ad_header'];
     }
     if ($ad['ad_text']) {
         $insert['ad_text'] = $ad['ad_text'];
     }
     if ($ad['ad_img_file_name']) {
         $insert['ad_img_file_name'] = $ad['ad_img_file_name'];
     }
     $DB->setCheckAutoSlashes(false);
     $nId = $DB->insert('paid_places', $insert, 'id');
     if ($nId) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
         $stop_words = new stop_words(true);
         $nStopWordsCnt = $stop_words->calculate($ad['ad_header'], $ad['ad_text']);
         $DB->insert('moderation', array('rec_id' => $nId, 'rec_type' => user_content::MODER_CAROUSEL, 'stop_words_cnt' => $nStopWordsCnt));
     }
     $DB->setCheckAutoSlashes(true);
     return !empty($nId);
 }
コード例 #4
0
ファイル: contest.php プロジェクト: kapai69/fl-ru-damp
 /**
  * Восстанавливает комментарий.
  *
  * @param int $cid id комментария
  *
  * @return string сообщение об ошибке или пустая строка, если все нормально
  */
 public function RestoreComment($cid)
 {
     global $DB;
     if ($this->is_moder) {
         $cid = intval($cid);
         $sModer = '';
         if (!hasPermissions('projects') && !is_pro()) {
             $p_comment = $this->GetComment($cid);
             if ($p_comment['user_id'] == $_SESSION['uid']) {
                 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($p_comment['msg']);
                 $sModer = ' , moderator_status =' . ($nStopWordsCnt ? ' 0 ' : ' NULL ');
                 if ($nStopWordsCnt) {
                     $DB->insert('moderation', array('rec_id' => $cid, 'rec_type' => user_content::MODER_CONTEST_COM, 'stop_words_cnt' => $nStopWordsCnt));
                 } else {
                     $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $cid, user_content::MODER_CONTEST_COM);
                 }
             }
         }
         $DB->query("UPDATE projects_contest_msgs SET deleted = NULL, deluser_id = NULL {$sModer} WHERE id = ?i", $cid);
         return $DB->error;
     }
 }
コード例 #5
0
 /**
  * Добавление предложения к проекту.
  *
  * @param integer $user_id           id фрилансера
  * @param integer $prj_id            id проекта
  * @param integer $cost_from         цена ОТ
  * @param integer $cost_to           цена ДО
  * @param integer $cost_type         валюта цены
  * @param integer $time_from         время ОТ
  * @param integer $time_to           время ДО
  * @param integer $time_type         тип времени (0 - часы, 1 - дни. 2 - месяцы)
  * @param string  $text              текст предложения
  * @param string  $work1_id          id 1 прикрепленной работы
  * @param string  $work2_id          id 2 прикрепленной работы
  * @param string  $work3_id          id 3 прикрепленной работы
  * @param string  $work1_link        ссылка на 1 прикрепленную работы
  * @param string  $work2_link        ссылка на 2 прикрепленную работы
  * @param string  $work3_link        ссылка на 3 прикрепленную работы
  * @param string  $work1_name        название 1 прикрепленной работы
  * @param string  $work2_name        название 2 прикрепленной работы
  * @param string  $work3_name        название 3 прикрепленной работы
  * @param array   $work1_pict        файл 1 работы
  * @param array   $work2_pict        файл 2 работы
  * @param array   $work3_pict        файл 3 работы
  * @param array   $work1_prev_pict   файл превью 1 работы
  * @param array   $work2_prev_pict   файл превью 2 работы
  * @param array   $work3_prev_pict   файл превью 3 работы
  * @param boolean $for_customer_only показывать предложение только работоадетлю
  * @param integer $dialogueId        id ветки диалога
  * @param integer $emp_read          прочитано работодателем или нет
  * @param boolean $prefer_sbr        предпочитаю работать с СБР
  * @param boolean $auto              0 или ID автоответа (не обновляется)
  * @param integer $moduser_id        UID пользователя (админа), изменяющего предложение. если null - то $user_id id фрилансера
  * @param string modified_reason       Причина редактирования
  *
  * @return string текст ошибки в случае неуспеха
  */
 public function AddOffer($user_id, $prj_id, $cost_from, $cost_to, $cost_type, $time_from, $time_to, $time_type, $text, $work1_id, $work2_id, $work3_id, $work1_link, $work2_link, $work3_link, $work1_name, $work2_name, $work3_name, $work1_pict, $work2_pict, $work3_pict, $work1_prev_pict, $work2_prev_pict, $work3_prev_pict, $for_customer_only = false, $dialogueId = 0, $emp_read = 0, $prefer_sbr = false, $is_color = false, $contacts = null, $payed_items = '0', $auto = 0, $moduser_id = null, $modified_reason = '')
 {
     global $DB;
     $obj_portfolio = new portfolio();
     $obj_dialogue = new projects_offers_dialogue();
     if ((int) $user_id <= 0 || (int) $prj_id <= 0) {
         return false;
     }
     $is_color = $is_color ? 't' : 'f';
     if ($cost_from < 0 && $cost_from !== '') {
         $cost_from = 0;
         //$error = 'Начальная стоимость должна быть положительным числом.';
     }
     if ($cost_to < 0 && $cost_to !== '') {
         $cost_to = 0;
         //$error = 'Конечная стоимость должна быть положительным числом.';
     }
     if ($cost_to !== '' && $cost_from !== '' && ($cost_to < $cost_from && $cost_to > 0)) {
         $wrk = $cost_to;
         $cost_to = $cost_from;
         $cost_from = $wrk;
     }
     if ($time_from < 0 && $time_from !== '') {
         $time_from = 0;
     }
     if ($time_to < 0 && $time_to !== '') {
         $time_to = 0;
     }
     if ($time_to !== '' && $time_from !== '' && $time_to < $time_from && intval($time_to) > 0) {
         $wrk = $time_to;
         $time_to = $time_from;
         $time_from = $wrk;
     }
     $prj_id = intval($prj_id);
     $user_id = intval($user_id);
     $cost_from = floatval(str_replace(',', '.', str_replace(' ', '', $cost_from)));
     $cost_to = floatval(str_replace(',', '.', str_replace(' ', '', $cost_to)));
     $cost_type = intval($cost_type);
     $time_from = intval($time_from);
     $time_to = intval($time_to);
     $time_type = intval($time_type);
     $text = __paramValue('string', $text);
     $text = str_replace("\r\n", "\n", $text);
     // Cчитается как два символа -- поэтому надо заменить на один, чтобы при подсчете символов последние символы не обрезались
     //$text = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $text);//trim(substr(change_q(trim($text), true, 90), 0, 3000));
     $for_customer_only = $for_customer_only ? 't' : 'f';
     $prefer_sbr = $prefer_sbr ? 't' : 'f';
     $work1_id = intval($work1_id);
     $work2_id = intval($work2_id);
     $work3_id = intval($work3_id);
     $work1_pict = substr(change_q(trim($work1_pict), false, 25), 0, 24);
     $work2_pict = substr(change_q(trim($work2_pict), false, 25), 0, 24);
     $work3_pict = substr(change_q(trim($work3_pict), false, 25), 0, 24);
     $work1_prev_pict = substr(change_q(trim($work1_prev_pict), false, 30), 0, 29);
     $work2_prev_pict = substr(change_q(trim($work2_prev_pict), false, 30), 0, 29);
     $work3_prev_pict = substr(change_q(trim($work3_prev_pict), false, 30), 0, 29);
     $work1_pict = $work1_pict == '' && $work1_prev_pict != '' ? $work1_prev_pict : $work1_pict;
     $work2_pict = $work2_pict == '' && $work2_prev_pict != '' ? $work2_prev_pict : $work2_pict;
     $work3_pict = $work3_pict == '' && $work3_prev_pict != '' ? $work3_prev_pict : $work3_pict;
     $moduser_id = $moduser_id ? $moduser_id : $user_id;
     $payed_items = $payed_items == '1' ? $payed_items : '0';
     $sql = "SELECT po.*, pb.id IS NOT NULL AS is_blocked \n          FROM projects_offers AS po\n          LEFT JOIN projects_offers_blocked pb ON  pb.src_id = po.id\n          WHERE po.project_id = '{$prj_id}' AND po.user_id = " . $user_id;
     $po = $DB->row($sql, $prj_id, $user_id);
     if ($DB->error) {
         return $DB->error;
     }
     $sql = 'SELECT e.is_pro FROM projects p 
         INNER JOIN employer e ON e.uid = p.user_id WHERE p.id = ?i';
     $emp_is_pro = $DB->val($sql, $prj_id);
     if ($po['is_blocked'] == 't' && $moduser_id == $user_id) {
         return 'OfferIsBlocked';
     }
     $slashedText = addslashes($text);
     if ($po['id']) {
         if ($po['refused'] == 't' && $moduser_id == $user_id) {
             return 403;
         }
         $sql = '';
         $sModer = '';
         if ($emp_is_pro != 't' && $moduser_id == $user_id && !hasPermissions('projects') && !is_pro() && ($po['descr'] != $slashedText || $po['pict1'] != $work1_pict && !empty($work1_pict) || $po['pict2'] != $work2_pict && !empty($work2_pict) || $po['pict3'] != $work3_pict && !empty($work3_pict) || $po['prev_pict1'] != $work1_prev_pict && !empty($work1_prev_pict) || $po['prev_pict2'] != $work2_prev_pict && !empty($work2_prev_pict) || $po['prev_pict3'] != $work3_prev_pict && !empty($work3_prev_pict))) {
             // автор, не админ, не про меняет заголовок либо текст - отправить на модерирование
             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($slashedText);
             $sModer = ' , moderator_status =' . ($nStopWordsCnt ? ' 0 ' : ' NULL ');
             if ($nStopWordsCnt) {
                 // если есть что то подозрительное - на модерирование
                 $DB->insert('moderation', array('rec_id' => $po['id'], 'rec_type' => user_content::MODER_PRJ_OFFERS, 'stop_words_cnt' => $nStopWordsCnt));
             } else {
                 // иначе на модерирование не отправляем
                 $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $po['id'], user_content::MODER_PRJ_OFFERS);
             }
         }
         $sql .= "UPDATE projects_offers SET\n            descr = '{$slashedText}',\n            cost_from = {$cost_from},\n            cost_to = {$cost_to},\n            cost_type = {$cost_type},\n            time_from = {$time_from},\n            time_to = {$time_to},\n            time_type = {$time_type},\n            portf_id1 = '{$work1_id}',\n            portf_id2 = '{$work2_id}',\n            portf_id3 = '{$work3_id}',\n            pict1 = '{$work1_pict}',\n            pict2 = '{$work2_pict}',\n            pict3 = '{$work3_pict}',\n            prev_pict1 = '{$work1_prev_pict}',\n            prev_pict2 = '{$work2_prev_pict}',\n            prev_pict3 = '{$work3_prev_pict}',\n            only_4_cust = '{$for_customer_only}',\n            prefer_sbr = '{$prefer_sbr}',\n            po_emp_read = '{$emp_read}',\n            is_color = '{$is_color}',\n            payed_items = B'{$payed_items}',\n            moduser_id = {$moduser_id}, \n            modified_reason = '{$modified_reason}',\n            " . ($contacts !== null ? "offer_contacts = '{$contacts}'," : '') . "\n            modified = now() \n            {$sModer} \n            WHERE id = {$po['id']} AND refused = false";
         $this->offer_id = $po['id'];
         $DB->squery($sql);
         $error = $DB->error;
         if ($dialogueId) {
             $error .= $obj_dialogue->SaveDialogueMessage($user_id, $text, $dialogueId, 0, true, $moduser_id);
             $authorId = $DB->val('SELECT user_id FROM projects WHERE id = ?', $prj_id);
             $memBuff = new memBuff();
             $memBuff->delete("prjEventsCnt{$authorId}");
         }
         return $error;
     } else {
         $nStopWordsCnt = 0;
         if ($emp_is_pro != 't' && !is_pro()) {
             // если нужно считаем стоп-слова
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
             $stop_words = new stop_words();
             $nStopWordsCnt = $stop_words->calculate($slashedText);
         }
         include_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_answers.php';
         $sModVal = !is_pro() && $emp_is_pro != 't' && $nStopWordsCnt ? '0' : 'NULL';
         $sql = "INSERT INTO projects_offers (project_id, user_id, cost_from, cost_to, cost_type, time_from, time_to, time_type, portf_id1, portf_id2, portf_id3, pict1, pict2, pict3, prev_pict1, prev_pict2, prev_pict3, only_4_cust, prefer_sbr, po_emp_read, descr, is_color, payed_items, offer_contacts, po_frl_read, moderator_status, auto)\n          ( SELECT {$prj_id}, {$user_id}, {$cost_from}, {$cost_to}, {$cost_type}, {$time_from}, {$time_to}, {$time_type}, '{$work1_id}', '{$work2_id}', '{$work3_id}', '{$work1_pict}', '{$work2_pict}', '{$work3_pict}', '{$work1_prev_pict}', '{$work2_prev_pict}', '{$work3_prev_pict}', '{$for_customer_only}', '{$prefer_sbr}', '{$emp_read}', '{$slashedText}', '{$is_color}', B'{$payed_items}', '{$contacts}', TRUE, {$sModVal}, {$auto} \n            WHERE NOT EXISTS(SELECT 1 FROM projects_blocked WHERE project_id = {$prj_id}) ); \n          SELECT currval('projects_offers_id_seq');";
         $po_id = $DB->val($sql);
         $error = $DB->error;
         $this->offer_id = $po_id;
         if ($po_id) {
             if ($emp_is_pro != 't' && !is_pro() && $nStopWordsCnt) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
                 $DB->insert('moderation', array('rec_id' => $po_id, 'rec_type' => user_content::MODER_PRJ_OFFERS, 'stop_words_cnt' => $nStopWordsCnt));
             }
             $error .= $obj_dialogue->AddDialogueMessage($po_id, $user_id, $text, true, false, true);
         }
         if (!$error) {
             $_SESSION['po_count'] = (int) $_SESSION['po_count'] + 1;
         }
         return $error;
     }
 }
コード例 #6
0
ファイル: user_content.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Отправить на модерирование запись какой-либо сущности
  * 
  * @param int $rec_id - ID записи
  * @param int $rec_type - ID в admin_contents - сущность для модерирования
  * @param array $data - тестовые данные для автоматической проверки на стоп-слова
  */
 static function sendToModeration($rec_id, $rec_type, $data = null)
 {
     $stop_words = new stop_words();
     $nStopWordsCnt = $stop_words->calculate($data);
     $GLOBALS['DB']->insert('moderation', array('rec_id' => $rec_id, 'rec_type' => $rec_type, 'stop_words_cnt' => $nStopWordsCnt));
 }
コード例 #7
0
ファイル: users.php プロジェクト: kapai69/fl-ru-damp
 /**
  * Изменение данных пользователя
  * Должны быть определены только те переменные, которые надо изменять
  * Перед вызовом проверить переменные класса!
  *
  * @param integer $fid               id пользователя
  * @param array $res                 ошибки базы данных
  * @param string $eddition           дополнительное условие SQL
  *
  * @return string (error)
  */
 public function Update($fid, &$res, $eddition = '')
 {
     global $DB;
     if (!$fid) {
         return 'Пользователь не определен!';
     }
     //Хотфикс
     $parnames = array('skype_as_link', 'skype_1_as_link', 'skype_2_as_link', 'skype_3_as_link', 'email_as_link', 'email_1_as_link', 'email_2_as_link', 'email_3_as_link');
     $current = get_class($this);
     $class_vars = get_class_vars(get_class($this));
     $fields = array();
     $pwd_changed = false;
     if (!isset($this->moduser_id)) {
         $this->moduser_id = $fid;
     }
     $this->modified_time = 'now';
     if (isset($this->photo)) {
         $this->photo_modified_time = 'now';
     }
     // отправка на модерирование -----------
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
     $stop_words = new stop_words();
     $aModerFields = array('uname', 'usurname', 'pname', 'spec_text', 'resume_file', 'resume', 'konk', 'company', 'status_text', 'photo', 'logo', 'compname');
     $aModerUpdate = array();
     $aOldValues = array();
     //--------------------------------------
     foreach ($class_vars as $name => $value) {
         if (!in_array($name, $parnames) && isset($this->{$name})) {
             if ($name == 'passwd') {
                 $fields[] = $name . "= '" . self::hashPasswd($this->{$name}) . "'";
                 $pwd_changed = true;
             } else {
                 if ($name == 'rating') {
                     // рейтинг напрямую в users менять нельзя
                     continue;
                 } else {
                     //$fields[] = $name."= '".$this->$name."'";
                     $fields[] = $DB->parse("{$name} = ?", $this->{$name});
                     // отправка на модерирование -----------
                     if ($this->moduser_id == $fid && in_array($name, $aModerFields)) {
                         $aModerUpdate[] = $name;
                         $aOldValues[$name] = $this->GetField($fid, $sGetFieldError, $name);
                     }
                     //--------------------------------------
                 }
             }
         }
     }
     $fld = implode(', ', $fields);
     if ($fld) {
         $fid = intval($fid);
         $sql .= $DB->parse("UPDATE {$current} SET {$fld} WHERE (uid = ?i " . $eddition . ')', $fid);
         if ($res = $DB->squery($sql)) {
             // отправка на модерирование -----------
             if ($aModerUpdate) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
                 $aModerNoWord = array('resume_file', 'photo', 'logo');
                 $nOrderId = $DB->val("SELECT from_id FROM orders WHERE from_id= ?i \n                        AND from_date <= now() AND from_date + to_date + COALESCE(freeze_to, '0')::interval >= now() \n                        AND NOT (freeze_from_time IS NOT NULL AND NOW() >= freeze_from_time::date AND NOW() < freeze_to_time)", $fid);
                 foreach ($aModerUpdate as $name) {
                     $sChangeId = $DB->val('SELECT id FROM users_change WHERE user_id = ?i AND ucolumn = ?', $fid, $name);
                     if (!$sChangeId && ($stop_words->calculate($this->{$name}) || in_array($name, $aModerNoWord))) {
                         if (!empty($this->{$name})) {
                             $aData = array('user_id' => $fid, 'utable' => $current, 'ucolumn' => $name, 'old_val' => $aOldValues[$name], 'new_val' => $this->{$name}, 'moderator_status' => $nOrderId ? -2 : 0);
                             $sChangeId = $DB->insert('users_change', $aData, 'id');
                             if (!$nOrderId) {
                                 $aData = array('rec_id' => $sChangeId, 'rec_type' => user_content::MODER_PROFILE, 'status' => 0);
                                 if (!in_array($name, $aModerNoWord)) {
                                     $stop_words->calculateRegexNoWords();
                                     // устанавливаем спец режим
                                     $aData['stop_words_cnt'] = $stop_words->calculate($this->{$name});
                                 }
                                 $DB->insert('moderation', $aData);
                             }
                         }
                     } else {
                         if (!empty($this->{$name}) && ($stop_words->calculate($this->{$name}) || in_array($name, $aModerNoWord))) {
                             $stop_words->calculateRegexNoWords();
                             // устанавливаем спец режим
                             $DB->update('users_change', array('new_val' => $this->{$name}), 'id = ?i', $sChangeId);
                             $DB->update('moderation', array('stream_id' => null, 'stop_words_cnt' => $stop_words->calculate($this->{$name})), 'rec_id = ?i AND rec_type = ?i', $sChangeId, user_content::MODER_PROFILE);
                         } else {
                             $DB->query('DELETE FROM users_change WHERE id = ?i', $sChangeId);
                             $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $sChangeId, user_content::MODER_PROFILE);
                         }
                     }
                 }
             }
             //--------------------------------------
             if ($pwd_changed) {
                 // убиваем сессии клиентов внешнего api.
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/session.php';
                 $sess = new externalSession();
                 $sess->destroy($fid);
                 // сброс привязки аккаунтов фрилансера и работодателя -----
                 if ($aAnti = $DB->col('SELECT "login" FROM users WHERE anti_uid = ?i', $fid)) {
                     foreach ($aAnti as $sLogin) {
                         $GLOBALS['session']->logout($sLogin);
                     }
                     if ($_SESSION['uid'] == $fid) {
                         $_SESSION['anti_uid'] = $_SESSION['anti_login'] = $_SESSION['anti_surname'] = $_SESSION['anti_name'] = '';
                     }
                     $DB->query('UPDATE users SET anti_uid = NULL WHERE uid = ?i OR anti_uid = ?i', $fid, $fid);
                 }
                 //---------------------------------------------------------
             }
             //если человек отписался от всех рассылок, удалить запись из users_subscribe_keys
             if (strpos($this->subscr, '1') === false && strlen($this->subscr) > 0) {
                 $DB->query('DELETE FROM users_subscribe_keys WHERE uid = ?i', $fid);
             }
         } else {
             if ($error = $DB->error) {
                 $error = parse_db_error($error);
             }
         }
     }
     return $error;
 }
コード例 #8
0
ファイル: kwords.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Сохраняет изменения ключевые слова пользователя для модерирование
  * 
  * @param  int $uid UID Пользователя
  * @param  int $prof ID Профессии
  * @param  array $old_ids массив ID старых ключевых слов
  * @param  array $new_ids массив ID новых ключевых слов
  * @param  integer $moduser_id UID изменяющего пользователя (админа). если null - то берется $uid
  * @param  string $keys строка с ключевыми словами через запятую
  * @return bool true - успех, false - провал
  */
 function moderUserKeys($uid = 0, $prof = 0, $old_ids = array(), $new_ids = array(), $moduser_id = null, $keys = '')
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
     $bRet = true;
     $moduser_id = $moduser_id ? $moduser_id : $uid;
     $new_ids = $new_ids ? $new_ids : array();
     if ($uid && $uid == $moduser_id && !hasPermissions('users') && $prof && (array_diff($new_ids, $old_ids) || array_diff($old_ids, $new_ids))) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
         $sId = $GLOBALS['DB']->val("SELECT id FROM portf_choise_change \n                WHERE user_id = ?i AND prof_id = ?i AND ucolumn = 'kwords'", $uid, $prof);
         $stop_words = new stop_words();
         $nStopWordsCnt = $stop_words->calculate($keys);
         if (!$sId && $new_ids && $nStopWordsCnt) {
             $aData = array('user_id' => $uid, 'prof_id' => $prof, 'ucolumn' => 'kwords', 'stop_words_cnt' => $nStopWordsCnt, 'old_val' => implode(',', $old_ids), 'moderator_status' => is_pro() ? -2 : 0);
             $sId = $GLOBALS['DB']->insert('portf_choise_change', $aData, 'id');
             $bRet = empty($GLOBALS['DB']->error);
             if ($bRet && !is_pro()) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
                 $GLOBALS['DB']->insert('moderation', array('rec_id' => $sId, 'rec_type' => user_content::MODER_PORTF_CHOISE, 'stop_words_cnt' => $nStopWordsCnt));
             }
         } elseif ($sId && $new_ids && $nStopWordsCnt) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
             $GLOBALS['DB']->query('UPDATE portf_choise_change SET stop_words_cnt = ?i WHERE id = ?i', $nStopWordsCnt, $sId);
             $GLOBALS['DB']->query('UPDATE moderation SET stream_id = NULL, stop_words_cnt = ?i WHERE rec_id = ?i AND rec_type = ?i', $nStopWordsCnt, $sId, user_content::MODER_PORTF_CHOISE);
         } else {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
             $GLOBALS['DB']->query('DELETE FROM portf_choise_change WHERE id = ?i', $sId);
             $GLOBALS['DB']->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $sId, user_content::MODER_PORTF_CHOISE);
         }
     } elseif ($uid && $moduser_id && $uid != $moduser_id && hasPermissions('users') && $prof) {
         $sId = $GLOBALS['DB']->val("SELECT id FROM portf_choise_change \n                WHERE user_id = ?i AND prof_id = ?i AND ucolumn = 'kwords'", $uid, $prof);
         if ($sId) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
             $GLOBALS['DB']->query('DELETE FROM portf_choise_change WHERE id = ?i', $sId);
             $GLOBALS['DB']->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $sId, user_content::MODER_PORTF_CHOISE);
         }
     }
     return $bRet;
 }
コード例 #9
0
 /**
  * Обновление предложения
  *
  * @param integer $fid      ИД обновляемого предложения
  * @param array   $update   Переменная типа array(name=>value) где name - поле таблицы, value - значение для записи (@see Таблица freelance_offers) 
  * @return boolean
  */
 public function Update($fid, $update)
 {
     global $DB;
     if (!hasPermissions('projects') && !is_pro()) {
         // автор, не админ, не про
         $update['moderator_status'] = 0;
         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($fields['descr'], $fields['title']);
         $DB->insert('moderation', array('rec_id' => $fid, 'rec_type' => user_content::MODER_SDELAU, 'stop_words_cnt' => $nStopWordsCnt));
     }
     if (isset($update['is_blocked']) && $update['is_blocked']) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
         $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $fid, user_content::MODER_SDELAU);
     }
     $DB->update("freelance_offers", $update, "id = ?i {$this->access}", $fid);
     return true;
 }
コード例 #10
0
ファイル: firstpage.php プロジェクト: amage/fl-ru-damp
 /**
  * Привязать объявление к платному месту
  * 
  * @param  int $nId ID платного места из users_first_page
  * @param  string $sError опционально. возвращает сообщение об ошибке.
  *         если функция вернула false, но ошибки нет - значит просто нет объявления.
  * @return bool true - успех, false - провал
  */
 function bindDescription($nId = 0, &$sError = '')
 {
     $bRet = false;
     if ($nId) {
         $nModeratorStatus = null;
         $nDescriptionId = self::GetLastUfpID($nId, $nModeratorStatus);
         if ($nDescriptionId) {
             $GLOBALS['DB']->query('UPDATE users_first_page SET ufp_description_id = ?i WHERE id = ?i', $nDescriptionId, $nId);
             $bRet = true;
             $sError = $GLOBALS['DB']->error;
             if (empty($sError) && !$nModeratorStatus) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
                 $GLOBALS['DB']->query('DELETE FROM moderation WHERE rec_type = ?i AND rec_id IN (SELECT id FROM users_first_page WHERE ufp_description_id = ?i)', user_content::MODER_FIRST_PAGE, $nDescriptionId);
                 $aDescr = firstpage::GetFullDescription($nId);
                 if (!empty($aDescr['title']) || !empty($aDescr['descr']) || !empty($aDescr['full_descr']) || !empty($aDescr['portfolio'])) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
                     $stop_words = new stop_words(true);
                     $nStopWordsCnt = $stop_words->calculate($aDescr['title'], $aDescr['descr'], $aDescr['full_descr']);
                     $GLOBALS['DB']->insert('moderation', array('rec_id' => $nId, 'rec_type' => user_content::MODER_FIRST_PAGE, 'stop_words_cnt' => $nStopWordsCnt));
                 }
             }
         }
     }
     return $bRet;
 }
コード例 #11
0
ファイル: professions.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Отправка уточнения к разделу в портфолио на модерирование
  * 
  * @global DB $DB
  * @param  int $uid UID пользователя
  * @param  int $prof_id ID профессии
  * @param  string $text новый текст уточнения
  * @param  string $old_text старый текст уточнения
  */
 public function checkUserContent($uid, $prof_id, $text, $old_text)
 {
     global $DB;
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php';
     $choise_id = $DB->val("SELECT id FROM portf_choise_change WHERE user_id = ?i AND prof_id = ?i AND ucolumn = 'text';", $uid, $prof_id);
     $stop_words = new stop_words();
     $nStopWordsCnt = $stop_words->calculate($text);
     // сам юзер
     if (!$choise_id && !empty($text) && $text != "" && $nStopWordsCnt) {
         $nModeratorStatus = is_pro() ? -2 : 0;
         $sId = $DB->val("INSERT INTO portf_choise_change (user_id, prof_id, ucolumn, stop_words_cnt, old_val, moderator_status) \n                             VALUES (?i, ?i, 'text', ?i, ?, ?i) RETURNING id", $uid, $prof_id, $nStopWordsCnt, $old_text, $nModeratorStatus);
         if ($nModeratorStatus == 0) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
             $DB->insert('moderation', array('rec_id' => $sId, 'rec_type' => user_content::MODER_PORTF_CHOISE, 'stop_words_cnt' => $nStopWordsCnt));
         }
     } else {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
         if ($choise_id && !empty($text) && $text != "" && $nStopWordsCnt) {
             $DB->query('UPDATE portf_choise_change SET stop_words_cnt = ?i WHERE id = ?i', $nStopWordsCnt, $choise_id);
             $DB->query('UPDATE moderation SET stream_id = NULL, stop_words_cnt = ?i WHERE rec_id = ?i AND rec_type = ?i', $nStopWordsCnt, $choise_id, user_content::MODER_PORTF_CHOISE);
         } else {
             $DB->query('DELETE FROM portf_choise_change WHERE id = ?i;
                         DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $choise_id, $choise_id, user_content::MODER_PORTF_CHOISE);
         }
     }
 }
コード例 #12
0
 /**
  * Редактирование сообщения в диалоге предложения к проекту.
  *
  * @param integer $user_id            id пользователя
  * @param string $message             текст сообщения
  * @param integer $comment_id         id комментария
  * @param integer $po_id              id ветки комментариев проекта
  * @param boolean $is_first           первый комментарий в ветке (продложение) или комментарии
  * @param integer $moduser_id         UID пользователя (админа), изменяющего предложение. если null - то берется $user_id
  * @param string $modified_reason причина редактирования
  *
  * @return string                     пустая строка если метод выполнен успешно или сообщение об ошибке
  */
 public function SaveDialogueMessage($user_id, $message, $comment_id, $po_id, $is_first = false, $moduser_id = null, $modified_reason = '')
 {
     $user_id = intval($user_id);
     $comment_id = intval($comment_id);
     $message = preg_replace("/(\r\n|\r|\n){3,100}/i", "\r\n\r\n", $message);
     $message = rtrim(ltrim($message, "\r\n"));
     $message = change_q_x(substr(stripcslashes($message), 0, 1000), false, true, '', false, false);
     $moduser_id = $moduser_id ? $moduser_id : $user_id;
     if ($is_first) {
         $GLOBALS['DB']->query('UPDATE projects_offers_dialogue SET post_text = ?, post_date = NOW(), moduser_id = ?i, modified = now() WHERE id = ?', $message, $moduser_id, $comment_id);
         return $DB->error;
     } else {
         $ret = $GLOBALS['DB']->row('SELECT d.user_id, d.post_text, e.is_pro AS emp_is_pro, f.is_pro AS frl_is_pro 
             FROM projects_offers_dialogue d 
             LEFT JOIN projects_offers po ON po.id = d.po_id 
             LEFT JOIN projects p ON p.id = po.project_id 
             LEFT JOIN employer e ON e.uid = p.user_id 
             LEFT JOIN freelancer f ON f.uid = po.user_id 
             WHERE po_id = ? LIMIT 1', $po_id);
         if ($ret['user_id'] == $user_id || hasPermissions('projects')) {
             if ($ret['emp_is_pro'] != 't' && $ret['frl_is_pro'] != 't' && $ret['user_id'] == $moduser_id && !hasPermissions('projects') && $ret['post_text'] != $message) {
                 // автор, не админ, не про меняет заголовок либо текст - отправить на модерирование
                 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($message);
                 $sModer = ' , moderator_status =' . ($nStopWordsCnt ? ' 0 ' : ' NULL ');
                 if ($nStopWordsCnt) {
                     $GLOBALS['DB']->insert('moderation', array('rec_id' => $comment_id, 'rec_type' => user_content::MODER_PRJ_DIALOG, 'stop_words_cnt' => $nStopWordsCnt));
                 } else {
                     $GLOBALS['DB']->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $comment_id, user_content::MODER_PRJ_DIALOG);
                 }
             }
             $GLOBALS['DB']->query("UPDATE projects_offers_dialogue SET post_text = ?, post_date = NOW(), moduser_id = ?i, modified = now(), modified_reason = ? {$sModer} WHERE id = ? AND user_id = ?", $message, $moduser_id, $modified_reason, $comment_id, $user_id);
             return $GLOBALS['DB']->error;
         } else {
             return 1;
         }
     }
 }