Example #1
0
 /**
  * Изменить специализации поекта
  * 
  * @param  int $id ID проекта
  * @param  array $data специализации array(array('category_id'=>x, 'subcategory_id'=>y), ...)
  * @return resource
  */
 function saveSpecs($id, $data)
 {
     if (!$data) {
         return false;
     }
     // пишем лог админских действий: смена специализации поекта
     if ($this->_project['user_id'] != $_SESSION['uid'] && hasPermissions('projects')) {
         $aPrevSpecs = $GLOBALS['DB']->rows('SELECT category_id, subcategory_id FROM project_to_spec WHERE project_id = ?i', $id);
         if (!empty($aPrevSpecs)) {
             if (!function_exists('_cmp_spec')) {
                 function _cmp_spec($a, $b)
                 {
                     $intA = intval($a['category_id']);
                     $intB = intval($b['category_id']);
                     $intR = $intA < $intB ? -1 : ($intA > $intB ? 1 : 0);
                     if ($r1 == 0) {
                         $intA = intval($a['subcategory_id']);
                         $intB = intval($b['subcategory_id']);
                         $intR = $intA < $intB ? -1 : ($intA > $intB ? 1 : 0);
                     }
                     return $intR;
                 }
             }
             $aCurrSpecs = $data;
             usort($aPrevSpecs, '_cmp_spec');
             usort($aCurrSpecs, '_cmp_spec');
             if ($aPrevSpecs != $aCurrSpecs) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
                 $sReason = 'До смены:<br/>' . $this->_getSpecsStr($aPrevSpecs, ' / ', ', ');
                 $sReason .= '<br/>После:<br/>' . $this->_getSpecsStr($data, ' / ', ', ');
                 $sLink = getFriendlyURL('project', $this->_project['id']);
                 admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_CH_SPEC, $this->_project['user_id'], $this->_project['id'], $this->_project['name'], $sLink, 0, '', 0, $sReason);
             }
         }
     }
     $sql = "DELETE FROM project_to_spec WHERE project_id = {$id};";
     global $DB;
     $DB->query($sql);
     $sql = "INSERT INTO project_to_spec (project_id, category_id, subcategory_id) VALUES ";
     $parts = array();
     foreach ($data as $key => $value) {
         $cat = (int) $value['category_id'];
         $sub = (int) $value['subcategory_id'];
         $parts[] .= "({$id}, {$cat}, {$sub})";
     }
     $sql .= implode(", ", $parts);
     return $DB->query($sql);
 }
Example #2
0
 /**
  * Удаление или восстановление предложения (устанавливает флаг is_deleted).
  * 
  * @param int  $offer_id   ID предложения
  * @param bool $is_deleted новое значение поля is_deleted в projects_contest_offers
  *
  * @return string сообщение об ошибке или пустая строка, если все нормально
  */
 public function setOfferDeleted($offer_id, $is_deleted = false)
 {
     global $DB;
     $offer_id = intval($offer_id);
     $user_id = get_uid(false);
     if (!($offer = $this->GetOfferRow($offer_id))) {
         return 'Несуществующее предложение';
     }
     $aUser = $DB->row('SELECT f.uid, f.login, f.uname, f.usurname, 
             pco.project_id, pco.descr, p.name AS prj_name, p.user_id 
         FROM projects_contest_offers as pco  
         INNER JOIN projects p ON p.id = pco.project_id 
         INNER JOIN freelancer f ON f.uid = pco.user_id 
         WHERE pco.id=?i', $offer_id);
     if ($aUser['uid'] == $user_id || hasPermissions('projects')) {
         $deluser_id = $is_deleted ? $user_id : null;
         $sModer = '';
         $sql = '';
         if ($deluser_id) {
             $sModer = ' , moderator_status = ' . ($aUser['uid'] != $user_id ? $user_id : 'NULL') . ' ';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
             $sql .= $DB->parse('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $offer_id, user_content::MODER_PRJ_OFFERS);
         }
         if ($aUser['uid'] == $user_id && !hasPermissions('projects') && !is_pro() && !$deluser_id) {
             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($aUser['descr']);
             $sModer = ' , moderator_status = ' . ($nStopWordsCnt ? ' 0 ' : ' NULL ');
             if ($nStopWordsCnt) {
                 $DB->insert('moderation', array('rec_id' => $offer_id, 'rec_type' => user_content::MODER_PRJ_OFFERS, 'stop_words_cnt' => $nStopWordsCnt));
             } else {
                 $sql .= $DB->parse('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i;', $offer_id, user_content::MODER_PRJ_OFFERS);
             }
         }
         $sql .= 'UPDATE projects_contest_offers SET is_deleted = ?b, deluser_id = ?i ' . $sModer . ' WHERE id = ?i';
         $DB->query($sql, $is_deleted, $deluser_id, $offer_id);
         // пишем лог админских действий: удаление предложения в проекте
         if (!$DB->error && $aUser['uid'] != $user_id) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
             $sPrjLink = getFriendlyURL('project', $aUser['project_id']);
             $sOffLink = $sPrjLink . "?offer={$offer_id}#offer-{$offer_id}";
             $sReason = '<a href="' . $sOffLink . '" target="_blank">Предложение</a> от <a href="' . $GLOBALS['host'] . '/users/' . $aUser['login'] . '" target="_blank">' . $aUser['uname'] . ' ' . $aUser['usurname'] . ' [' . $aUser['login'] . ']</a>';
             $sActId = $is_deleted ? admin_log::ACT_ID_PRJ_DEL_OFFER : admin_log::ACT_ID_PRJ_RST_OFFER;
             admin_log::addLog(admin_log::OBJ_CODE_PROJ, $sActId, $aUser['user_id'], $aUser['project_id'], $aUser['prj_name'], $sPrjLink, 0, '', 0, $sReason);
         }
     }
     return '';
 }
Example #3
0
 /**
  * Модераторская. Лента действий. Фиксация событий: удаление предложения в проекте.
  *
  * @param int    $offer_id    id предложения
  * @param int    $prj_id      id проекта
  * @param string $prj_name    название проекта
  * @param int    $prj_user_id UID пользователя, создавшего проект
  */
 public function DelOfferLog($offer_id = 0, $prj_id = 0, $prj_name = '', $prj_user_id)
 {
     $aUser = $GLOBALS['DB']->row('SELECT f.uid, f.login, f.uname, f.usurname 
         FROM projects_offers po 
         INNER JOIN freelancer f ON f.uid = po.user_id 
         WHERE po.id = ?i', $offer_id);
     if ($aUser['uid'] != $_SESSION['uid'] && hasPermissions('projects')) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $sPrjLink = getFriendlyURL('project', $prj_id);
         $sReason = 'Предложение от <a href="' . $GLOBALS['host'] . '/users/' . $aUser['login'] . '" target="_blank">' . $aUser['uname'] . ' ' . $aUser['usurname'] . ' [' . $aUser['login'] . ']</a>';
         admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DEL_OFFER, $prj_user_id, $prj_id, $prj_name, $sPrjLink, 0, '', 0, $sReason);
     }
 }
Example #4
0
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
    $aPermissions = permissions::getUserPermissions($uid);
}
if (!admin_log::isAllowed('adm', $aPermissions) || !in_array($site, admin_log::$mode_allow) || !admin_log::isAllowed(admin_log::$mode_permissions[$site], $aPermissions)) {
    header_location_exit('/404.php');
}
$menu_item = array_search($site, admin_log::$mode_allow) + 1;
$rpath = '../../';
$css_file = array('moderation.css', 'new-admin.css', 'nav.css');
$js_file = array('admin_log.js');
$header = $rpath . 'header.php';
$inner_page = "{$site}_inner.php";
$content = '../content22.php';
$footer = $rpath . 'footer.html';
$template = 'template2.php';
$admin_log = new admin_log($site, $uid, $aPermissions);
$sLogId = __paramInit('string', 'lid', 'lid');
$sViweId = __paramInit('string', 'view');
$page = __paramInit('int', 'page', 'page', 1);
$log_pp = __paramInit('int', 'log_pp', 'log_pp', 20);
$admin_log->setLogPerPage($log_pp);
if (!$page) {
    $page = 1;
} elseif ($page < 0) {
    header_location_exit('/404.php');
    exit;
}
if ($sViweId) {
    $sLogId = $sViweId;
    $menu_item = 0;
}
Example #5
0
 /**
  * Сбросить бан пользователям, требующих разбана.
  *
  * @return boolean true в случае успеха
  */
 public function GetBanTimeout()
 {
     global $DB;
     $sql = "SELECT * FROM users_ban WHERE \"to\">'epoch' AND \"to\"<now()";
     $res = $DB->rows($sql);
     $sql = '';
     if ($res) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $objUser = new self();
         foreach ($res as $banned) {
             $sql .= "UPDATE users_ban SET \"to\"=NULL WHERE uid='" . $banned['uid'] . "';\n                UPDATE users SET is_banned=B'0', ban_where=0 WHERE uid='" . $banned['uid'] . "';\n                ";
             // пишем лог админских действий
             $nLogActId = $banned['where'] ? 6 : 4;
             // (0 - везде, 1 - блоги)
             $sWhere = $banned['where'] ? 'в блогах' : 'на сайте';
             $objUser->GetUserByUID($banned['uid']);
             $sObjName = $objUser->uname . ' ' . $objUser->usurname . '[' . $objUser->login . ']';
             $sObjLink = '/users/' . $objUser->login;
             $sReason = 'Автоматическая разблокировка ' . $sWhere . ' по истечении срока блокировки';
             admin_log::addLog(admin_log::OBJ_CODE_USER, $nLogActId, $banned['uid'], $banned['uid'], $sObjName, $sObjLink, 0, '', 0, $sReason, null, '', $banned['admin']);
         }
     }
     if ($sql) {
         $res = $DB->query($sql);
     }
     return true;
 }
Example #6
0
/**
 * Изменить выделение жирным причины действя админа.
 * 
 * @param int    $id      ID причины действя админа.
 * @param string $is_bold выделять жирным t/f
 *
 * @return obj xajaxResponse
 */
function setReasonBold($sId = 0, $sBold = 'f')
{
    session_start();
    $objResponse = new xajaxResponse();
    if (!hasPermissions('adm')) {
        return $objResponse;
    }
    admin_log::setReasonBold($sId, $sBold == 't' ? $sBold : 'f');
    $objResponse->script("\$('is_bold_{$sId}').set( 'disabled', false );");
    return $objResponse;
}
Example #7
0
 public function Blocked($id, $user_id, $reason, $reason_id = 0)
 {
     $data = $this->getCardModeration($id);
     if (!$data) {
         return false;
     }
     if ($data['is_blocked'] == 't') {
         return true;
     }
     $sQuery = "\n             UPDATE {$this->TABLE_MODERATION} SET \n                 status = 2 \n             WHERE \n                rec_id = ?i \n                AND rec_type = ?i \n             RETURNING rec_id";
     $sRecId = $this->db()->val($sQuery, $id, user_content::MODER_TSERVICES);
     //Если вдруг записи нет на модерации добавляем
     if (!$sRecId) {
         $this->sendToModeration($id, $data, 2);
     }
     $sBlockId = $this->db()->insert($this->TABLE_BLOCKED, array('src_id' => $id, 'admin' => $user_id, 'reason' => $reason, 'reason_id' => $reason_id, 'blocked_time' => 'NOW()'), 'id');
     if (!$sBlockId) {
         return false;
     }
     $sObjLink = sprintf('%s/tu/%d/%s.html', $GLOBALS['host'], $data['id'], translit(strtolower(htmlspecialchars_decode($data['title'], ENT_QUOTES))));
     //пишем лог админских действий
     admin_log::addLog(admin_log::OBJ_CODE_TSERVICES, 64, $data['uid'], $id, $data['title'], $sObjLink, 0, '', 0, $reason, $sBlockId, '', $user_id);
     //отправляем сообщение о блокировки
     messages::SendBlockedTServices($data, $reason);
     return true;
 }
Example #8
0
         $error = "ќшибка, пользователь не найден.";
         break;
     }
     if (!is_numeric($o_oth_plus)) {
         $error = "ќшибка, рейтинг должен быть числом.";
         break;
     }
     $rating = new rating($user->uid, $user->is_pro, $user->is_verify, $user->is_profi);
     $upd = array('o_oth_factor' => $rating->data['o_oth_factor'] + floatval($o_oth_plus));
     if (rating::Update($user->uid, $upd)) {
         // пишем лог админских действий: манипул¤ции с рейтингом
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $sObjName = $user->uname . ' ' . $user->usurname . ' [' . $user->login . ']';
         $sObjLink = '/users/' . $user->login;
         $sReason = '–ейтинг ' . (floatval($o_oth_plus) < 0 ? 'уменьшен' : 'увеличен') . ' на ' . abs($o_oth_plus);
         admin_log::addLog(admin_log::OBJ_CODE_USER, admin_log::ACT_ID_USR_CH_RATING, $user->uid, $user->uid, $sObjName, $sObjLink, 0, '', 0, $sReason);
         //-----------------------------------
         header("Location: /siteadmin/rating/?result=success");
         exit;
     }
     $error = "ќшибка.";
     break;
 case "setpwd":
     $login = __paramInit('string', NULL, 'login');
     $pwd = stripslashes($_POST['pwd']);
     //__paramInit('string', NULL, 'pwd');
     require_once ABS_PATH . "/classes/users.php";
     require_once ABS_PATH . "/classes/codes.php";
     $codes = new codes();
     $user = new users();
     $uid = $user->GetUid($error, $login);
Example #9
0
 /**
  * Отправляет уведомления о новых действиях модераторов
  * 
  * @param  string|array $message_ids идентификаторы комментариев
  * @param  resource $connect соединение к БД (необходимо в PgQ) или NULL -- создать новое
  * @return integer количество отправленных уведомлений
  */
 function AdminLogNotice($log_ids, $connect = NULL)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/admin_log.php";
     $admin_log = new admin_log();
     if (!($comments = $admin_log->GetNotices4Sending($log_ids, $connect))) {
         return NULL;
     }
     $this->subject = 'Новое действие модератора на сайте FL.ru';
     foreach ($comments as $aOne) {
         if (hasPermissions($aOne['rights'], $aOne['notice_uid']) && $aOne['notice_uid'] != $aOne['a_uid']) {
             $sObjEntity = admin_log::$aObj[$aOne['obj_code']]['name'];
             $sObjName = $aOne['object_name'] ? $aOne['object_name'] : '<без названия>';
             setlocale(LC_ALL, 'ru_RU.CP1251');
             $sObjName = str_replace(array('<', '>'), array('&lt;', '&gt;'), $sObjName);
             setlocale(LC_ALL, "en_US.UTF-8");
             if ($aOne['object_link']) {
                 $sObjLink = '<a href="' . getAbsUrl($aOne['object_link']) . '">' . $sObjName . '</a>';
             } else {
                 $sObjLink = $sObjName;
             }
             $this->message = $this->GetHtml($aOne['uname'], "\nНовое действие модератора:<br/>\n<a href='{$GLOBALS['host']}/users/{$aOne['a_login']}{$this->_addUrlParams('b')}'>{$aOne['a_uname']} {$aOne['a_usurname']}</a> [<a href='{$GLOBALS['host']}/users/{$aOne['a_login']}{$this->_addUrlParams('b')}'>{$aOne['a_login']}</a>]\n<br/>\n{$sObjEntity}: {$sObjLink}<br />\nДействие: {$aOne['act_name']}<br />\n<br />\n<a href='{$GLOBALS['host']}/siteadmin/admin_log/?view={$aOne['id']}{$this->_addUrlParams('b', '&')}'>{$GLOBALS['host']}/siteadmin/admin_log/?view={$aOne['id']}</a>\n<br />\n<br />\n            \t", array('header' => 'simple', 'footer' => 'simple'));
             $this->recipient = $aOne['uname'] . " " . $aOne['usurname'] . " [" . $aOne['login'] . "] <" . $aOne['email'] . ">";
             $this->SmtpMail('text/html');
         }
     }
     return $this->sended;
 }
Example #10
0
/**
 * Блокирование/разблокирование комментария к предложению по проекту
 * 
 * @param  int    $dialogue_id   ID комментария
 * @param  string $reason        причина
 * @param  int    $reason_id     ID причины, если она выбрана из списка (таблица admin_reasons, где act_id = 27)
 * @param  string $reason_name   Краткое описание причины действия (из селекта) для лога админских действий
 * @return object xajaxResponse
 */
function BlockedDialogue($dialogue_id, $reason, $reason_id = null, $reason_name = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('users')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers_dialogue.php";
        $dialogue_id = intval($dialogue_id);
        $dialogue = projects_offers_dialogue::getDialogueMessageById($dialogue_id);
        if ($dialogue) {
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
            $objUser = new users();
            $objUser->GetUserByUID($dialogue['user_id']);
            // лог админских действий
            $sObjName = $dialogue['project_name'];
            $sObjLink = getFriendlyURL('project', $dialogue['project_id']);
            $reason_id = $reason_id ? $reason_id : 0;
            $reason = str_replace('%USERNAME%', $objUser->uname . ' ' . $objUser->usurname, $reason);
            $reason = change_q($reason, FALSE, 0, TRUE);
            if ($dialogue['is_blocked'] == 't') {
                projects_offers_dialogue::UnBlocked($dialogue_id);
                // пишем лог админских действий
                admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_UNBLOCK, $dialogue['user_id'], $dialogue_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason);
                $objResponse->assign("dialogue-block-{$dialogue_id}", 'innerHTML', '&nbsp;');
                $objResponse->assign("dialogue-block-{$dialogue_id}", 'style.display', 'none');
                $objResponse->assign("dialogue-button-{$dialogue_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.blockedDialogue(' . $dialogue_id . ')">Заблокировать</a>');
            } else {
                $sBlockId = projects_offers_dialogue::Blocked($dialogue_id, $reason, $reason_id, $_SESSION['uid']);
                // пишем лог админских действий
                admin_log::addLog(admin_log::OBJ_CODE_PROJ, admin_log::ACT_ID_PRJ_DIALOG_BLOCK, $dialogue['user_id'], $dialogue_id, $sObjName, $sObjLink, 0, '', $reason_id, $reason, $sBlockId);
                $reason = reformat($reason, 24, 0, 0, 1, 24);
                $html = BlockedDialogueHTML($reason, $_SESSION['login'], "{$_SESSION['name']} {$_SESSION['surname']}");
                $objResponse->assign("dialogue-block-{$dialogue_id}", 'innerHTML', $html);
                $objResponse->assign("dialogue-block-{$dialogue_id}", 'style.display', 'block');
                $objResponse->assign("dialogue-button-{$dialogue_id}", 'innerHTML', '<a class="admn" href="javascript:void(0);" onclick="banned.unblockedDialogue(' . $dialogue_id . ')">Разблокировать</a>');
            }
        } else {
            $objResponse->alert('Несуществующее предложение');
        }
    }
    return $objResponse;
}
Example #11
0
 /**
  * Редактирует собщение
  *
  * @param integer $fid		 	  ID Пользователя
  * @param integer $edit_id	 	  идентификатор сообщения, которое надо редактировать
  * @param string  $msg		 	  текст сообщения
  * @param string  $name		 	  название сообщения
  * @param string  $attach	 	  имя присоединеного файла (или массив, если файлов несколько)
  * @param string  $ip		 	  ip, с которого запостили
  * @param string  $error		  возвращает сообщение об ошибке
  * @param integer $mod			  имеет ли юзер права на редактирование чужих сообщений (0 - да, 1 - нет)
  * @param array   $tags		 	  массив тегов  @deprecated
  * @param integer $group	 	  новый раздел для сообщения (имеет смысл только для тем, если не надо переносить - можно не определять этот параметр)
  * @param integer $base		 	  новая "база" для сообщения (имеет смысл только для тем, если не надо переносить - можно не определять этот параметр)
  * @param boolean $deleteattach   список id присоединенных файлов, которые необходимо удалить
  * @param boolean $olduserlogin   логин последнего юзера писавшего сообщения(если есть, иначе false)
  * @param string  $yt_link		  ссылка на YouTube видео
  * @param integer $close_comments запрет комментирования
  * @param integer $is_private	  приватность записи
  * @param integer $small          1 - присоединенный файл является маленькой картинкой, 2 - большой картинкой (есть превью), 0 - другое (либо массив, если файлов несколько)
  * @param string  $modified_reason причина редактирования
  * @return integer			идентификатор темы
  */
 function Edit($fid, $edit_id, $msg, $name, $attach, $ip, &$error, $mod = 1, $tags = "", &$group = null, $base = null, $deleteattach = false, $olduserlogin = false, $yt_link = '', $close_comments = 'f', $is_private = 'f', $ontop = null, $small = null, $poll_question = null, $poll_answers = null, $poll_answers_has = null, $poll_multiple = null, $modified_reason = '')
 {
     global $DB;
     $sSel = !empty($group) ? ' blogs_themes.id_gr ' : ' 0 AS id_gr ';
     $sJoin = !empty($group) ? ' INNER JOIN blogs_themes ON blogs_themes.thread_id = blogs_msgs.thread_id ' : '';
     $sql = "\n\t\t\tSELECT blogs_msgs.fromuser_id, blogs_msgs.title, blogs_msgs.msgtext, blogs_msgs.yt_link, blogs_msgs.thread_id, users.login, blogs_blocked.thread_id as is_blocked, blogs_poll.question as poll, {$sSel} \n\t\t\tFROM blogs_msgs\n\t\t\t{$sJoin}\n\t\t\tLEFT JOIN blogs_blocked ON blogs_msgs.thread_id = blogs_blocked.thread_id\n\t\t\tLEFT JOIN blogs_poll ON blogs_poll.thread_id = blogs_msgs.thread_id\n\t\t\tLEFT JOIN users ON users.uid=blogs_msgs.fromuser_id\n\t\t\tWHERE blogs_msgs.id = '{$edit_id}'\n\t\t";
     $res = $DB->query($sql, $edit_id);
     list($from_id, $old_title, $old_msgtext, $last_yt_link, $thread_id, $owner_login, $is_blocked, $poll, $prev_gr) = pg_fetch_row($res);
     if ($olduserlogin) {
         $oldlogin = $olduserlogin;
     }
     if ($from_id != $fid && $mod == 1) {
         return "Вы не можете править чужие сообщения!";
     }
     if ($is_blocked && $mod == 1) {
         return "Изменения заблокированы";
     }
     if ($group == 7) {
         $max_image_size = array('width' => 400, 'height' => 600, 'less' => 0);
     } else {
         $max_image_size = array('width' => 470, 'height' => 1000, 'less' => 0);
     }
     $error = $this->UploadFiles($attach, $max_image_size, $owner_login);
     if (!$error_flag) {
         if (is_array($deleteattach) && $deleteattach) {
             $deleteattach = array_map('intval', $deleteattach);
             $res = CFile::selectFilesById(self::FILE_TABLE, $deleteattach);
             if ($res) {
                 foreach ($res as $row) {
                     $file = new CFile();
                     $file->Delete(0, "users/" . substr($oldlogin, 0, 2) . "/" . $oldlogin . "/upload/", $row['fname']);
                     if ($row['small'] == 2) {
                         $file->Delete(0, "users/" . substr($owner_login, 0, 2) . "/" . $owner_login . "/upload/", "sm_" . $row['fname']);
                     }
                 }
             }
         }
         if (!is_null($ontop)) {
             $ontop_sql = ", ontop = '{$ontop}'";
         } else {
             $ontop_sql = '';
         }
         if ($is_private == "") {
             $is_private = 'f';
         }
         if ($close_comments == "") {
             $close_comments = 'f';
         }
         $sModer = '';
         $sql = '';
         if ($fid == $from_id && !hasPermissions('blogs')) {
             // автор, не админ, не про меняет заголовок либо текст - отправить на модерирование
             $sModer = ' , moderator_status = 0 ';
             /*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' );
               $DB->insert( 'moderation', array('rec_id' => $edit_id, 'rec_type' => user_content::MODER_BLOGS) );*/
         }
         $sql .= "UPDATE blogs_msgs SET from_ip = '{$ip}', msgtext = '{$msg}', modified=NOW(), modified_id={$fid}, modified_reason = '{$modified_reason}', title = '{$name}', yt_link = '{$yt_link}' {$ontop_sql} {$sModer} WHERE id = '{$edit_id}' RETURNING reply_to";
         $reply_to = $DB->val($sql);
         $error = $DB->error;
         if (!$error && $attach) {
             foreach ($attach as $att) {
                 $att->updateFileParams(array('src_id' => $edit_id, 'small' => $att->small), false);
             }
         }
         if (!$error) {
             $sql = !is_null($group) && !is_null($base) ? "id_gr = {$group}" : '';
             if ($close_comments && $close_comments != 'n') {
                 $sql .= ($sql ? ',' : '') . "close_comments = '{$close_comments}'";
             }
             if ($is_private && $is_private != 'n') {
                 $sql .= ($sql ? ',' : '') . "is_private = '{$is_private}'";
             }
             if ($sql) {
                 $sql = "UPDATE blogs_themes SET {$sql} WHERE thread_id = ?i RETURNING id_gr";
                 $group = $DB->val($sql, $thread_id);
                 $error .= ($error ? ' ' : '') . $DB->error;
             }
             // лог админских действий и отправка сообщения о редактировании топика админом или модератором
             if ($from_id != $fid && hasPermissions('blogs')) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
                 $sLink = getFriendlyURL('blog', $thread_id);
                 admin_log::addLog(admin_log::OBJ_CODE_BLOG, admin_log::ACT_ID_EDIT_BLOGS, $from_id, $thread_id, $name, $sLink, 2, '', null, '');
             }
             // пишем лог админских действий: смена раздела блога
             if (!empty($prev_gr) && $prev_gr != $group && $from_id != $fid && hasPermissions('blogs')) {
                 $sPrevGr = '';
                 $sCurrGr = '';
                 $aBlogGr = self::GetThemes($sErrorGr, 0);
                 foreach ($aBlogGr as $aOne) {
                     if ($aOne['id'] == $prev_gr) {
                         $sPrevGr = $aOne['t_name'];
                     }
                     if ($aOne['id'] == $group) {
                         $sCurrGr = $aOne['t_name'];
                     }
                 }
                 $sReason = "Перенос блога из раздела &quot;{$sPrevGr}&quot; в раздел &quot;{$sCurrGr}&quot;";
                 $sReason .= $close_comments == 't' ? ' (запрет комментирования)' : '';
                 admin_log::addLog(admin_log::OBJ_CODE_BLOG, admin_log::ACT_ID_BLOG_CH_GR, $from_id, $thread_id, $name, $sLink, 0, '', 0, $sReason);
             }
         }
         // опрос
         if (!$error && !$GLOBALS['PDA']) {
             if ($poll_question !== '') {
                 $bModeration = false;
                 if ($poll && (!$mod || $from_id == $fid)) {
                     $bModeration = true;
                     $data = array('question' => $poll_question);
                     if ($poll_multiple !== null) {
                         $data['multiple'] = (bool) $poll_multiple;
                     }
                     $DB->update('blogs_poll', $data, "thread_id = ?", $thread_id);
                 } else {
                     if (!$poll) {
                         $bModeration = true;
                         $DB->query("INSERT INTO blogs_poll (thread_id, question) VALUES(?i, ?)", $thread_id, $poll_question);
                     }
                 }
                 if (!is_null($poll_answers)) {
                     $aUpId = array();
                     if ((!$mod || $from_id == $fid) && is_array($poll_answers_has)) {
                         foreach ($poll_answers_has as $key => $answer) {
                             if (($answer = substr((string) $answer, 0, 255)) !== '') {
                                 $aUpId[] = intval($key);
                             }
                         }
                     }
                     $DB->query("DELETE FROM blogs_poll_answers WHERE thread_id = '{$thread_id}'" . ($aUpId ? ' AND id NOT IN (' . implode(',', $aUpId) . ')' : ''));
                     if ((!$mod || $from_id == $fid) && $aUpId) {
                         $aAnswers = $DB->rows('SELECT id, answer FROM blogs_poll_answers WHERE id IN (?l)', $aUpId);
                         foreach ($aAnswers as $aOne) {
                             $answer = $poll_answers_has[$aOne['id']];
                             if (($answer = substr((string) $answer, 0, 255)) !== '' && $answer != $aOne['answer']) {
                                 $bModeration = true;
                                 $DB->query("UPDATE blogs_poll_answers SET answer = ? WHERE id = ?i ", $answer, intval($aOne['id']));
                             }
                         }
                     }
                     if ($poll_answers && is_array($poll_answers)) {
                         $sql = '';
                         foreach ($poll_answers as $answer) {
                             if (($answer = substr((string) $answer, 0, 255)) !== '') {
                                 $sql .= ",('{$thread_id}', '{$answer}')";
                             }
                         }
                         if ($sql) {
                             $bModeration = true;
                             if (!($res = $DB->query("INSERT INTO blogs_poll_answers(thread_id, answer) VALUES " . substr($sql, 1)))) {
                                 $error = $DB->error;
                             }
                         }
                     }
                 }
                 if (!$sModer && $bModeration && $from_id == $fid && !hasPermissions('blogs')) {
                     // если еще не отправили на модерирование при основном обновлении
                     // появились новые вопросы/ответы и это правит автор, и он не админ и не ПРО - отправить на модерирование
                     /*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' );
                       $DB->query( 'UPDATE blogs_msgs SET moderator_status = 0 WHERE id = ?i', $edit_id );
                       $DB->insert( 'moderation', array('rec_id' => $edit_id, 'rec_type' => user_content::MODER_BLOGS) );*/
                 }
             } else {
                 if (!$reply_to) {
                     // Удаляем, только если редактируется топик.
                     $DB->query("DELETE FROM blogs_poll WHERE thread_id = ?i", $thread_id);
                 }
             }
         }
     }
     return $thread_id;
 }
Example #12
0
     }
     // юзер не забанен на всем сайте
     $objUser = new users();
     $objUser->GetUserByUID($sUid);
     if ($objUser->uid) {
         $sReason = 'Подозрительный пользователь: логин, имя или фамилия содержат подозрительные слова.';
         if ($objUser->ban_where) {
             // меняем бан в блогах на бан на всем сайте
             $objUser->updateUserBan($sUid, 1, 0, $sReason, null, '');
         } elseif (!$objUser->is_banned) {
             // баним на всем сайте
             $sBanId = $objUser->setUserBan($sUid, 0, $sReason, null, '', 1);
             $sObjName = $objUser->uname . ' ' . $objUser->usurname . '[' . $objUser->login . ']';
             $sObjLink = '/users/' . $objUser->login;
             // пишем лог админских действий
             admin_log::addLog(admin_log::OBJ_CODE_USER, 3, $sUid, $sUid, $sObjName, $sObjLink, -1, '', null, $sReason, $sBanId);
         }
         users::banSuspiciousUser($sUid);
         $tail = '';
         if ((int) $_GET['page'] > 0) {
             $tail = '?page=' . intval($_GET['page']);
         }
         header('Location: index.php' . $tail);
         exit;
     }
     break;
 case 'ban':
     if (!$sUid) {
         break;
     }
     // юзер уже забанен на всем сайте - нужно только убрать его из списка подозрительных
Example #13
0
<?php

define('IS_SITE_ADMIN', 1);
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
session_start();
$uid = get_uid();
if (!isset($aPermissions)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
    $aPermissions = permissions::getUserPermissions($uid);
}
if (!admin_log::isAllowed('adm', $aPermissions)) {
    header_location_exit('/404.php');
}
$admin_log = new admin_log('log', $uid, $aPermissions);
$aActions = $admin_log->getAdminActions();
$sAction = __paramInit('string', 'action', 'action', '');
$reasonId = __paramInit('string', 'id', 'id', 0);
$act_sel = __paramInit('string', 'act_sel', 'act_sel', $aActions[0]['id']);
$aReason = array();
$sNameError = '';
$sTextError = '';
$bFound = false;
foreach ($aActions as $aOne) {
    if ($aOne['id'] == $act_sel) {
        $bFound = true;
        break;
    }
}
if (!$bFound) {
    header_location_exit('/404.php');
Example #14
0
             }
             if (!$obj_offer->DelOffer($offer_id, $prj_id, $uid, hasPermissions('projects'))) {
                 header('Location: ' . getFriendlyURL('project', $project['id']) . '?' . $from_prm_s);
             }
             exit;
     }
 }
 if ((hasPermissions('projects') || $project['user_id'] == $uid) && !$project['is_blocked'] && $project['closed'] != 't') {
     switch ($action) {
         case 'free_prj_up':
             if (hasPermissions('projects')) {
                 $prj_id = intval($_POST['pid']);
                 if (new_projects::FreeUpPublicProject($prj_id, $project['user_id']) == true) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
                     $sObjLink = '/projects/?pid=' . $prj_id;
                     $log = admin_log::addLog(admin_log::OBJ_CODE_PROJ, 17, $project['user_id'], $prj_id, $project['name'], $sObjLink, 0, '', 0, '');
                 }
                 header('Location: ' . getFriendlyURL('project', $project['id']));
             }
             break;
         case 'blockuser':
             if ($project['kind'] == 7 && (hasPermissions('projects') || $project['user_id'] == $uid)) {
                 if (!($errmsg = $contest->BlockUser($_GET['uid'], $status))) {
                     header('Location: ' . getFriendlyURL('project', $project['id']) . '?' . ($_GET['comm'] ? "&comm={$_GET['comm']}" : '') . ($_GET['offer'] ? "&offer={$_GET['offer']}" : '') . ($_GET['filter'] ? "&filter={$_GET['filter']}" : ''));
                     exit;
                 }
             }
             break;
         case 'change-dates':
             if ($project['kind'] == 7 && $_POST['ds'] && $_POST['de'] && ($contest->is_owner || $contest->is_moder)) {
                 if (preg_match("/^([0-9]{1,2})\\-([0-9]{1,2})\\-([0-9]{4})\$/", $_POST['ds'], $ds) && checkdate($ds[2], $ds[1], $ds[3])) {
Example #15
0
ini_set('memory_limit', '512M');
if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/');
}
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
//------------------------------------------------------------------------------
//успешные сделки
$uids = $DB->col("\n    SELECT u.uid\n    FROM account AS a\n    INNER JOIN freelancer AS u ON u.uid = a.uid\n    WHERE a.sum < -30 AND u.is_banned = B'0'\n    LIMIT 1\n");
$logins = array();
if ($uids) {
    $objUser = new users();
    foreach ($uids as $uid) {
        $objUser->GetUserByUID($uid);
        if (!$objUser->uid) {
            continue;
        }
        $sReason = 'Приостановка аккаунта до погашения задолженности. Обратитесь в поддержку <a href="mailto:support@fl.ru">support@fl.ru</a> когда будете готовы погасить задолженность за услуги сайта.';
        $sBanId = $objUser->setUserBan($uid, 0, $sReason, null);
        // пишем лог админских действий
        $sObjName = $objUser->uname . ' ' . $objUser->usurname . '[' . $objUser->login . ']';
        $sObjLink = '/users/' . $objUser->login;
        admin_log::addLog(admin_log::OBJ_CODE_USER, 3, $uid, $uid, $sObjName, $sObjLink, 0, '', null, $sReason, $sBanId, '', 103);
        //admin
        $logins[] = $objUser->login;
        //sleep(20);
    }
}
print_r($logins);
exit;
Example #16
0
        }
    }
    $filter = array();
    $cmd = __paramInit('string', 'cmd', null, '');
    $toD = __paramInit('string', 'to_d', null, date('d'));
    $toM = __paramInit('string', 'to_m', null, date('m'));
    $toY = __paramInit('string', 'to_y', null, date('Y'));
    $act = __paramInit('string', 'act', null, 0);
    $adm = __paramInit('string', 'adm', null, 0);
    $category = __paramInit('string', 'category', null, 0);
    $sub_category = __paramInit('string', 'sub_category', null, 0);
    $search = __paramInit('string', 'search', null, '');
    $order = __paramInit('string', 'sort', null, 'date');
    $direction = __paramInit('string', 'dir', null, 'desc');
    $search = clearInputText($search);
    if ($cmd == 'filter') {
        $fromD = __paramInit('string', 'from_d', null, '');
        $fromM = __paramInit('string', 'from_m', null, '');
        $fromY = __paramInit('string', 'from_y', null, '');
        $filter = admin_log::getDatePeriod($error, $fromD, $fromM, $fromY, $toD, $toM, $toY);
        $filter['act_id'] = $act;
        $filter['admin_id'] = $adm;
        $filter['category'] = $category;
        $filter['sub_category'] = $sub_category;
        $filter['search'] = $search;
    }
    if (!$error) {
        $log = $admin_log->getLogProj($count, $filter, $page, $order, $direction);
        $pages = ceil($count / $admin_log->getLogPerPage());
    }
}
Example #17
0
     $error .= $frl->Update($uid, $res);
     break;
 case "delete":
     // удаление аккаунта
     require_once ABS_PATH . "/classes/users.php";
     require_once ABS_PATH . '/classes/admin_log.php';
     $user_obj = new users();
     $sUid = get_uid();
     $user_obj->GetUserByUID($sUid);
     $sObjName = $user_obj->uname . ' ' . $user_obj->usurname . '[' . $user_obj->login . ']';
     $sObjLink = '/users/' . $user_obj->login;
     $sReason = "Аккаунт удален самостоятельно";
     if ($user_obj->setUserBan(get_uid(), 0, $sReason, 4, '', 1, true)) {
         // если удалось заблокировать аккаунт
         // пишем лог
         admin_log::addLog(admin_log::OBJ_CODE_USER, admin_log::ACT_ID_DEL_ACC, $sUid, $sUid, $sObjName, $sObjLink, 1, '', null, $sReason);
         header("Location: /users/{$user}");
     }
     break;
 case 'real_name_splash':
     // сохранение имени, фамилии и юзерпика с соответствующего сплэш-скрина
     require_once ABS_PATH . "/classes/users.php";
     require_once ABS_PATH . "/classes/attachedfiles.php";
     require_once ABS_PATH . "/classes/CFile.php";
     $userObj = new users();
     $userID = get_uid();
     $aFiles = new attachedfiles($_POST['attachedfiles_session']);
     $userpics = $aFiles->getFiles(array(1));
     if (is_array($userpics) && !empty($userpics)) {
         $userpic = array_pop($userpics);
         $aFiles->setStatusTo3($userpic['id']);
Example #18
0
 if (!$uid) {
     header("Location: /fbd.php");
     die;
 }
 $id = intval(trim($_GET['id']));
 if ($id && $uid) {
     $thread = blogs::RestoreDeleteMsg($uid, $id, getRemoteIP(), $err, $mod);
     $msg = blogs::GetMsgInfo($id, $error, $perm);
     // пишем лог админских действий: восстановление комментария в блоге
     if (hasPermissions('blogs') && $msg['fromuser_id'] != $uid) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $sLink = getFriendlyURL('blog', $thread);
         $sReason = '<a href="' . $sLink . "?openlevel={$id}#o{$id}" . '" target="_blank">Комментарий</a> от <a href="' . $GLOBALS['host'] . '/users/' . $msg['login'] . '" target="_blank">' . $msg['uname'] . ' ' . $msg['usurname'] . ' [' . $msg['login'] . ']</a>';
         $blog_data = new blogs();
         $blog_data->GetThread($thread, $err, $mod, $uid);
         admin_log::addLog(admin_log::OBJ_CODE_BLOG, admin_log::ACT_ID_BLOG_RST_COMM, $blog_data->fromuser_id, $thread, $blog_data->title, $sLink, 0, '', 0, $sReason);
     }
 }
 exit(header("Location: " . getFriendlyURL("blog", $_GET['tr']) . "?openlevel={$id}#o{$id}" . ($_GET["ord"] ? "&ord=" . $_GET["ord"] : "")));
 break;
 /*
         $ret = blogs::GetMsgInfo($id, $err, $perm);
         $error = blogs::DeleteMsg($uid, $id, $gr, $base, $thread, $nulla, $nullb, $mod);
 }
 if ($ret){
 if ($ret['base'] == 3 || $ret['base'] == 5){
 $kind = $ret['kind'];
 include($rpath."classes/buffer_prjs.php");
 }
 }
 */
Example #19
0
         break;
     case 'time':
         $timeChecked = 'checked';
         $timeEnabled = '';
         break;
 }
 $search = clearInputText($search);
 if ($cmd == 'filter') {
     $fromD = __paramInit('string', 'from_d', null, '');
     $fromM = __paramInit('string', 'from_m', null, '');
     $fromY = __paramInit('string', 'from_y', null, '');
     $fromH = __paramInit('string', 'from_h', null, '');
     $fromI = __paramInit('string', 'from_i', null, '');
     $filter = admin_log::getDatePeriod($error, $fromD, $fromM, $fromY, $toD, $toM, $toY);
     if (!$error) {
         $error = admin_log::checkTimePeriod($bIsNull, $fromH, $fromI, $toH, $toI);
         if (!$error) {
             if (!$bIsNull) {
                 $filter['time'] = array($fromH . ':' . $fromI . ' - ' . $toH . ':' . $toI);
             } else {
                 $filter['time'] = array('00:00 - 23:59');
             }
             $filter['act_id'] = $act;
             $filter['admin_id'] = $adm;
             $filter['search'] = $search;
         }
     }
 }
 if (!$error) {
     $log = $admin_log->getLogAll($count, $filter, $page);
     $pages = ceil($count / $admin_log->getLogPerPage());
Example #20
0
 /**
  * Предложения фрилансеров "Сделаю". Утверждение/удаление записи
  * 
  * @param  string $stream_id идентификатор потока
  * @param  int $user_id идентификатор модератора
  * @param  int $from_id идентификатор пользователя
  * @param  int $rec_id идентификатор записи
  * @param  int $rec_type тип записи 
  * @param  int $action действие: 1 - утверждено, 2 - удалено
  * @param  string $is_sent было ли отправлено уведомление
  * @param  string $reason причина удаления
  */
 function resolveSdelau($stream_id = '', $user_id = 0, $from_id = 0, $rec_id = 0, $rec_type = 0, $action = 1, $is_sent = '', $reason = '')
 {
     $bRet = false;
     $sQuery = 'UPDATE moderation SET moder_num = ?i, status = ?i WHERE rec_id = ?i AND rec_type = ?i AND stream_id = ? RETURNING rec_id';
     $sRecId = $GLOBALS['DB']->val($sQuery, $this->nResolveCnt, $action, $rec_id, self::MODER_SDELAU, $stream_id);
     if ($sRecId) {
         $bRet = true;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer_offers.php';
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/admin_log.php';
         $frl_offers = new freelancer_offers();
         $offer = $frl_offers->getOfferById($rec_id);
         $sObjName = $offer['title'];
         $sObjLink = '';
         // нет ссылки на конкретное предложение
         $update = array();
         if ($action == 1 && $offer['admin']) {
             //утверждаем
             $update = array('is_blocked' => false, 'reason' => '', 'reason_id' => 0, 'admin' => 0);
             admin_log::addLog(admin_log::OBJ_CODE_OFFER, 14, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, '');
         } elseif ($action == 2 && $topic['is_blocked_s'] != 't') {
             $sReason = 'Содержит запрещенную информацию';
             $update = array('is_blocked' => true, 'reason' => $reason, 'reason_id' => 0, 'admin' => $user_id, 'deleted_reason' => $reason);
             admin_log::addLog(admin_log::OBJ_CODE_OFFER, 13, $from_id, $rec_id, $sObjName, $sObjLink, 0, '', 0, $sReason, $rec_id);
         }
         $update['moderator_status'] = $user_id;
         $GLOBALS['DB']->update('freelance_offers', $update, 'id = ?i', $rec_id);
     }
     return $bRet;
 }
/**
 * Устанавливает полный текст причины действия администратора в поле формы
 * 
 * @param  int $reasonId ID причины, полный текст которой нужно установить
 * @return object xajaxResponse
 */
function getAdmEditReasonText($reasonId)
{
    $objResponse = new xajaxResponse();
    $hasPermission = false;
    $uid = get_uid(false);
    $permissions = admin_log::getPermissionsRights();
    foreach ($permissions as $permission) {
        if (hasPermissions($permission, $uid)) {
            $hasPermission = 1;
        }
    }
    if ($hasPermission) {
        $sReason = admin_log::getAdminReasonText($reasonId);
        $objResponse->assign("adm_edit_text", "value", $sReason);
        $objResponse->script("adm_edit_content.reasons['{$reasonId}'] = '{$sReason}';");
    }
    return $objResponse;
}
Example #22
0
<div class="b-layout__right b-layout__right_float_right b-layout__right_width_240">
    <!-- Banner 240x400 -->
    <?php 
    echo printBanner240(false);
    ?>
	<!-- end of Banner 240x400 -->
</div>
<div class="b-layout__left b-layout__left_margright_270">
<?php 
    if ($ban['reason'] == 4) {
        ?>
<h1 class="b-page__title">Аккаунт был удален</h1>
<?php 
    } else {
        ?>
<h1 class="b-page__title">Аккаунт заблокирован <?php 
        echo $ban["to"] ? "до " . date("d.m.Y  H:i", strtotimeEx($ban["to"])) : "";
        ?>
</h1>
<div class="b-layout__txt b-layout__txt_padbot_20">Причина блокировки: <?php 
        $data = admin_log::getAdminReason($ban["reason"]);
        print strlen($data['reason_name']) > 0 ? $data['reason_name'] : $ban["comment"];
    }
    ?>
</div>
<?php 
}
?>
<div class="b-layout__txt b-layout__txt_padbot_20">Если вы хотите продолжить работу на сайте и восстановить аккаунт &mdash; обратитесь в <a href="http://feedback.fl.ru" target="_blank">службу поддержки</a></div>
</div>