예제 #1
0
/**
 * Возвращает список предупреждение пользователя для попап окна.
 * 
 * @param int    $uid       UID пользователя
 * @param array  $contextId Контекст (для лога админских действий)
 * @param string $draw_func способ отображения
 *
 * @return object xajaxResponse
 */
function getUserWarns($uid = 0, $contextId = '', $draw_func = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    if (hasPermissions('users')) {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
        $user = new users();
        $user->GetUserByUID($uid);
        if ($user->uid) {
            $aPermissions = permissions::getUserPermissions($_SESSION['uid']);
            $admin_log = new admin_log('user', $_SESSION['uid'], $aPermissions);
            $aWarns = $admin_log->getUserWarns($nCount, $uid);
            $sCount = $nCount ? $nCount : '0';
            $sWarns = $user->warn ? $user->warn : '0';
            $objResponse->assign('a_user_warns', 'href', '/users/' . $user->login);
            $objResponse->assign('s_user_warns', 'innerHTML', $user->uname . ' ' . $user->usurname . ' [' . $user->login . ']');
            $objResponse->assign('e_user_warns', 'innerHTML', $sWarns);
            $objResponse->assign('n_user_warns', 'innerHTML', $sCount);
            if ($nCount) {
                $sTable = '<table id="t_user_warns" class="notice-table">';
                $nCount = 1;
                foreach ($aWarns as $aOne) {
                    $sReason = $aOne['admin_comment'] ? hyphen_words($aOne['admin_comment'], true) : '&lt;без причины&gt;';
                    $sAdmin = $aOne['adm_login'] ? '<a target="_blank" href="/users/' . $aOne['adm_login'] . '">' . $aOne['adm_login'] . '</a>' : 'не известно';
                    $sDate = $aOne['act_time'] ? date('d.m.Y H:i', strtotime($aOne['act_time'])) : 'не известно';
                    $sTable .= '<tr>
                    	<td class="cell-number">' . $nCount . '.</td>
                    	<td class="cell-uwarn">' . $sReason . '</td>
                    	<td class="cell-who">Выдан: [' . $sAdmin . ']
                    	<td class="cell-date">' . $sDate . '</td>
                        <td' . ($aOne['src_id'] ? ' id="i_user_warns_' . $aOne['src_id'] . '"' : '') . '>' . ($aOne['src_id'] ? '<a href="javascript:void(0);" onclick="banned.warnUser(' . $uid . ',' . $aOne['src_id'] . ',\'' . $draw_func . '\',\'' . $contextId . '\',0);"><img src="/images/btn-remove2.png" alt="" width="11" height="11" /></a>' : '') . '</td>
                    </tr>';
                    ++$nCount;
                }
                $sTable .= '</table>';
                $objResponse->assign('d_user_warns', 'innerHTML', $sTable);
            } else {
                $objResponse->assign('d_user_warns', 'innerHTML', '&nbsp;');
            }
            $sBanTitle = $user->is_banned || $user->ban_where ? 'Разбанить' : 'Забанить';
            $objResponse->script('adminLogOverlayClose();');
            $objResponse->script("\$('ov-notice4').setStyle('display', '');");
            $objResponse->script('adjustUserWarnsHTML();');
            $objResponse->assign('b_user_warns', 'innerHTML', '<button onclick="adminLogOverlayClose();banned.userBan(' . $uid . ', \'' . $contextId . '\',0)">' . $sBanTitle . '</button><a class="lnk-dot-grey" href="javascript:void(0);" onclick="adminLogOverlayClose();">Отмена</a>');
        }
    }
    return $objResponse;
}
예제 #2
0
<?php

if (!defined('IS_SITE_ADMIN')) {
    header('Location: /404.php');
    exit;
}
$s = 'style="color: #666;"';
if (!isset($aPermissions)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
    $aPermissions = permissions::getUserPermissions($uid);
}
foreach ($aPermissions as $sPermission) {
    $sVar = 'bHas' . ucfirst($sPermission);
    ${$sVar} = true;
}
if ($bHasAll || $bHasAdm) {
    ?>

    <?php 
    if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
        ?>
    <div class="admin-menu">
    	<h3>Действия</h3>
    	<ul>
            <?php 
        if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
            ?>
    		<li><a <?php 
            echo $menu_item == 1 ? $s : '';
            ?>
 href="/siteadmin/admin_log/?site=log">Лента всех действий</a></li>
예제 #3
0
/**
 * Проверяем имеет ли пользователь разрешенные права доступа
 * 
 * @todo: делает запрос даже если НЕТ! юзера? - доработано
 * 
 * @param   string      код права доступа
 * @param   integer     ID пользователя
 * @return  boolean     true - имеет, false - нет
 */
function hasPermissions($permission, $uid = 0)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/permissions.php";
    $uid = intval($uid);
    if (!$uid) {
        $uid = get_uid(false);
    }
    //Если забанен или незалогин то прав у тебя нет!
    if ($uid <= 0) {
        return false;
    }
    if ($uid != $_SESSION['uid']) {
        $user_permissions = permissions::getUserPermissions($uid);
    } else {
        $user_permissions = $_SESSION['permissions'];
    }
    if (!$user_permissions) {
        $user_permissions = array();
    }
    return in_array($permission, $user_permissions) || in_array('all', $user_permissions);
}
예제 #4
0
 /**
  * Аутентификация пользователя и заполнение его сессии необходимыми данными.
  *
  * @param string $login логин пользователя
  * @param string $pwd   пароль пользователя
  * @param array &params             данные пользователя
  * @param boolean $is_2fa_off принудительное откулючение 2х этапной проверки
  *
  * @return integer id сессии
  *
  * @global DB $DB
  */
 public function Auth($login, $pwd, &$params, $is_2fa_off = false)
 {
     //////////////////////////////////////////////////////////
     // Ахтунг! Изменение логики нужно отражать также в новом движке.
     // Например, при добавлении новый полей в сессию, добавьте их в Web_Front::login()
     //////////////////////////////////////////////////////////
     global $DB;
     $plogin = preg_replace('/[+ ()-]/', '', $login);
     $phoneType = preg_replace("/\\D/", '', $plogin);
     if ($phoneType == $plogin) {
         $plogin = '******' . $plogin;
         $sql = "SELECT user_id FROM sbr_reqv WHERE (_1_mob_phone = ? OR _2_mob_phone = ?) AND is_activate_mob = 't'";
         $uids = $DB->rows($sql, $plogin, $plogin);
         if ($uids) {
             foreach ($uids as $u) {
                 $sql_uids .= $u['user_id'] . ',';
             }
             $sql_uids = preg_replace('/,$/', '', $sql_uids);
         }
     }
     $sql = '
       SELECT 
         u.email, u.role, u.uname, u.usurname, u.uid, u.is_banned, u.ban_where, u.active, 
         a.sum, a.bonus_sum,
         u.login, u.anti_uid, u.is_pro_test, u.is_pro_new, u.is_chuck, 
         u.sex, u.settings, u.splash_show, u.is_verify,
         u.reg_date, ac.code, u.photo, u.is_profi,
         u.birthday
       FROM users AS u
       LEFT JOIN activate_code ac ON ac.user_id = u.uid  
       LEFT JOIN account AS a ON a.uid = u.uid
       WHERE ((lower(u.login) = ? OR lower(u.email) = ?) AND u.passwd = ?) ' . ($sql_uids ? "OR ( u.uid IN ({$sql_uids}) AND u.passwd = ?)" : '');
     $res = $DB->rows($sql, strtolower($login), mb_strtolower($login), $pwd, $pwd);
     if ($res) {
         $qres = $res;
         $uvisits = array();
         $n = 0;
         foreach ($qres as $k => $v) {
             $uvisits[$this->getLastVisit($v['uid']) . '-' . $n] = $k;
             ++$n;
         }
         asort($uvisits);
         $res = $qres[array_pop($uvisits)];
     }
     $error .= $DB->error;
     $first_login = $this->getLastVisit($res['uid']);
     $ip = getRemoteIP();
     /**
      * Дополнительная проверка логина. 
      * Нужна для исправления паролей, содержащих 
      * теги (или похожие на теги последовательности).
      * 
      * !!Убрать после следующей глобальной смены паролей.
      */
     if (!$res) {
         // попробуем убрать (0018079)
         //$res = $this->FixPassword($sql, $login);
     }
     /**
      * Определяем нужна ли 2хэтапная авторизация.
      */
     if (!$is_2fa_off && count($res) && $first_login) {
         //не первый вход
         //если на 2ом этапе ввели другой аккаунт то направить
         //обратно на 2ой этап и сообщить обэтом
         if (isset($params['2fa_provider']['uid']) && $params['2fa_provider']['uid'] != $res['uid']) {
             $is_login = $params['2fa_provider']['type'] == 0;
             session::setFlashMessage($is_login ? self::TXT_AUTH_2FA_LOG_FAIL : self::TXT_AUTH_2FA_SOC_FAIL, '/auth/second/');
             return self::AUTH_STATUS_2FA;
         }
         $is_opauth = defined('IS_OPAUTH');
         if (!isset($params['2fa_provider']) || $params['2fa_provider']['type'] > 0 != $is_opauth) {
             //несовпадают типы авторизаций на 2ом этапе
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/opauth/OpauthModel.php';
             $opauthModel = new OpauthModel();
             $is_2fa = $opauthModel->getMultilevel($res['uid']);
             if (isset($is_2fa['type'])) {
                 //$is_2fa - авторизация через выбранную соцсеть
                 //0 - нужна обычная авторизация так как вход был выполнен через соцсеть
                 $params['2fa_provider'] = array('type' => !$is_opauth ? $is_2fa['type'] : 0, 'uid' => $res['uid'], 'login' => $res['login']);
                 //Сбрасываем авторизацию
                 $res = array();
                 //переходим ко 2ой стадии
                 return self::AUTH_STATUS_2FA;
             }
         }
     }
     //Более нам параметр этапов авторизации не нужен
     unset($params['2fa_provider']);
     /**
      * Успешная авторизация.
      */
     if (count($res)) {
         list($email, $trole, $tname, $tsurname, $tid, $is_banned, $ban_where, $active, $sum, $bonus_sum, $log, $anti_uid, $is_pro_test, $is_pro_new, $is_chuck, $sex, $settings, $splash_show, $is_verify, $reg_date, $activate_code, $photo, $is_profi, $birthday) = array_values($res);
         if ($activate_code != '' && $active == 't') {
             $this->checkRegDate($tid, $reg_date);
         }
         if ($is_banned) {
             return -1;
         }
         //if ($active=='f') return -2; //##0027983
         if (!$this->CheckUserAllowIP($ip, $tid)) {
             return -3;
         }
         $params['birthday'] = $birthday ? strtotime($birthday) : null;
         $params['age'] = $params['birthday'] ? intval(ElapsedYears($params['birthday'])) : null;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
         $params['permissions'] = permissions::getUserPermissions($tid);
         $params['email'] = $email;
         $params['role'] = $trole;
         $params['name'] = $tname;
         $params['surname'] = $tsurname;
         $params['uid'] = $tid;
         $params['user_ip'] = $ip;
         $params['ac_sum'] = zin($sum);
         $params['bn_sum'] = zin($bonus_sum);
         $params['login'] = $log;
         $params['is_pro_new'] = $is_pro_new;
         $params['pro_test'] = $is_pro_test;
         $params['is_chuck'] = $is_chuck;
         $params['is_verify'] = $is_verify;
         $params['sex'] = $sex;
         $params['reg_date'] = $reg_date;
         $params['photo'] = $photo;
         if (!is_emp($trole)) {
             $params['is_profi'] = $is_profi === 't';
         }
         if ($anti_uid) {
             $anti_class = is_emp($trole) ? 'freelancer' : 'employer';
             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/{$anti_class}.php";
             $anti = new $anti_class();
             $anti->GetUserByUID($anti_uid);
             $params['anti_uid'] = $anti->uid;
             $params['anti_login'] = $anti->login;
             $params['anti_surname'] = $anti->usurname;
             $params['anti_name'] = $anti->uname;
         }
         if (!is_emp($params['role'])) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
             if ($po_summary = projects_offers::GetFrlOffersSummary($params['uid'])) {
                 $params['po_count'] = $po_summary['total'];
             }
         }
         $sql = 'UPDATE users SET last_time = now(), last_ip = ?, is_active = true WHERE uid = ?i';
         $res = $DB->query($sql, $ip, $tid);
         $this->SaveLoginIPLog($tid, $ip);
         $this->increaseLoginsCnt($tid);
         // количество операций
         $sQuery = 'SELECT COUNT(ao.id) FROM account_operations ao 
             INNER JOIN account a ON a.id = ao.billing_id WHERE a.uid = ?i AND (ao.ammount <> 0 OR ao.trs_sum <> 0)';
         $params['account_operations'] = $DB->val($sQuery, $tid);
         $params['question_button_hide'] = $settings[1];
         // Показывать/скрывать кнопку "У вас есть вопрос?"
         $params['promo_block_hide'] = $settings[2];
         // показывать Блок "Быстрый доступ к основным функциям сайта"
         $params['direct_external_links'] = $settings[3];
         // Не показывать страницу "Переход по внешней ссылке" a.php
         $params['sbr_slash_show'] = $settings[4] && $first_login < strtotime('2012-08-08');
         // Показывать/скрыть СБР промо-слеш
         $params['splash_show'] = $splash_show;
         $params['chat'] = $settings[5];
         $params['chat_sound'] = $settings[6];
         // #0017182 > Вопрос можем ли мы вытащить эту настройку из кук пользователей и сохранить ее в базу?
         if (empty($settings[3]) && $_COOKIE['direct_external_links'] == 1) {
             $this->setDirectExternalLinks($tid, 1);
             if ($anti_uid) {
                 $this->setDirectExternalLinks($anti_uid, 1);
             }
             setcookie('direct_external_links', '', time() - 60 * 60 * 24 * 365, '/');
             setcookie('no_a_php', '1', time() + 60 * 60 * 24 * 365 * 2, '/');
         }
         //генерация куки для userecho
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/userecho.php';
         setcookie('ue_sso_token', UserEcho::get_sso_token(USERECHO_API_KEY, USERECHO_PROJECT_KEY, array()), 0, '/', preg_replace('/^https?\\:\\/\\/(?:www\\.)?/', '.', 'fl.ru'));
         // Первый заход, регистрация через мастер, мастер не закончен
         if ($first_login == 0) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/wizard_registration.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_employer.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/wizard/step_freelancer.php';
             if (is_emp($params['role'])) {
                 $wiz_user = wizard::isUserWizard($tid, step_employer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_EMP_ID);
             } else {
                 $wiz_user = wizard::isUserWizard($tid, step_freelancer::STEP_REGISTRATION_CONFIRM, wizard_registration::REG_FRL_ID);
             }
             if ($wiz_user['id'] > 0) {
                 $role = is_emp($params['role']) ? wizard_registration::REG_EMP_ID : wizard_registration::REG_FRL_ID;
                 header('Location: /registration/activated.php?role=' . $role);
                 //header("Location: /wizard/registration/?role={$role}");
                 exit;
             } elseif (!is_emp($params['role'])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
                 $pro_last = payed::ProLast($_SESSION['login']);
                 $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt'];
                 if ($_SESSION['pro_last'] && $_SESSION['is_pro_new'] != 't') {
                     payed::checkNewPro($id);
                 }
                 if ($pro_last['freeze_to']) {
                     $_SESSION['freeze_from'] = $pro_last['freeze_from'];
                     $_SESSION['freeze_to'] = $pro_last['freeze_to'];
                     $_SESSION['is_freezed'] = $pro_last['is_freezed'];
                     $_SESSION['payed_to'] = $pro_last['cnt'];
                 }
                 if ($_SESSION['anti_login']) {
                     $pro_last = payed::ProLast($_SESSION['anti_login']);
                     $_SESSION['anti_pro_last'] = $pro_last['freeze_to'] ? false : $pro_last['cnt'];
                 }
                 //отправляем письмо с инфой, как работать на сайте
                 /*
                 require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php");
                 $mail = new smail();
                 
                 if (is_emp()) {                
                     $mail->employerQuickStartGuide(get_uid(false));
                 } else {
                    $mail->freelancerQuickStartGuide(get_uid(false));
                 }
                 */
                 return $tid;
                 if (!defined('IN_API')) {
                     // для API мобильного приложения не нужно
                     header("Location: /users/{$login}/");
                     exit;
                 }
             }
         }
         //-----------------------------------
     } else {
         $tid = 0;
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/annoy.php';
         $annoy = new annoy();
         $annoy->Add($ip);
     }
     return $tid;
 }
예제 #5
0
/**
 * Удаление сущности
 * 
 * @param  string $sId составной уникальный ID сущности
 * @param  int $sUid UID сздателя сущности
 * @param  string $sReason причина удаления
 * @param  string $sDrawFunc имя функции для выполнения после сохранения
 * @param  string $sParams JSON кодированные дополнительные параметры
 * @return xajaxResponse 
 */
function setDeleted($sId = '', $sUid = 0, $sReason = '', $sDrawFunc = '', $sParams = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    list($rec_content_id, $rec_id, $rec_type) = explode('_', $sId);
    $aParams = _jsonArray($sParams);
    if ($sDrawFunc == 'stream0' || $sDrawFunc == 'stream1' || $sDrawFunc == 'stream2') {
        // удаление в потоках
        resolveContent($aParams['content_id'], $aParams['stream_id'], $sId, 2, $sUid, $aParams['content_cnt'], $aParams['status'], $aParams['is_sent'], $sReason, $objResponse);
    } else {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/permissions.php';
        $aPermissions = permissions::getUserPermissions($_SESSION['uid']);
        $user_content = new user_content($_SESSION['uid'], $aPermissions);
        $bSend = false;
        if ($user_content->hasContentPermissions($rec_content_id)) {
            if (strpos($sReason, '%USERNAME%') !== false && $sUid) {
                $user = new users();
                $user->GetUserByUID($sUid);
                $sReason = str_replace('%USERNAME%', $user->uname . ' ' . $user->usurname, $sReason);
            }
            switch ($rec_content_id) {
                case user_content::MODER_MSSAGES:
                    switch ($sDrawFunc) {
                        // дейсвие из переписки между юзерами
                        case 'updateLetter':
                            updateLetter($rec_id, $sUid, 2, $sReason, $objResponse);
                            break;
                        case 'delLetter':
                            // в потоке - важно чтобы поток не был потерян либо перехвачен
                        // в потоке - важно чтобы поток не был потерян либо перехвачен
                        default:
                            delLetter($aParams['stream_id'], $sUid, $rec_id . '_' . $rec_type, $sReason, $objResponse);
                            break;
                    }
                    break;
                case user_content::MODER_BLOGS:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/blogs.php';
                    if ($rec_type == 1) {
                        // post
                        blogs::MarkDeleteBlog($_SESSION['uid'], $rec_id, $group, $base, $thread_id, $page, $msg, 0, $sReason);
                    } else {
                        // comment
                        blogs::MarkDeleteMsg($_SESSION['uid'], $rec_id, getRemoteIP(), $err, 0, $sReason);
                    }
                    $bSend = true;
                    break;
                case user_content::MODER_TSERVICES:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/tservices/tservices.php';
                    $tserviceObj = new tservices();
                    if ($tserviceObj->Blocked($rec_id, $_SESSION['uid'], $sReason)) {
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__tservices_blocked,#__tservices_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                case user_content::MODER_SBR_REQV:
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
                    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/Finance/FinanceSmail.php';
                    if (sbr_meta::reqvBlocked($rec_id, $_SESSION['uid'], $sReason, 0, $_SESSION['login'])) {
                        $finSmail = new FinanceSmail();
                        $finSmail->financeBlocked($rec_id, $sReason);
                        $objResponse->script("\$('ov-notice22-r').toggleClass('b-shadow_hide');");
                        $objResponse->script("\$\$('#__finance_blocked,#__finance_unblocked').toggleClass('b-button_hide');");
                    }
                    break;
                default:
                    break;
            }
            if ($bSend) {
                $user_content->sendNotification($_SESSION['uid'], $sUid, $rec_content_id, $rec_id, $rec_type, 2, $sReason);
                $objResponse->script('window.location.reload(true)');
            }
        }
        return $objResponse;
    }
    $objResponse->script("delete banned.buffer['delreason_{$sId}'];");
    $objResponse->script("parent.\$\$(\"div[id^='ov-notice']\").setStyle('display', 'none');");
    $objResponse->script("parent.\$('ov-notice22-r').toggleClass('b-shadow_hide');");
    return $objResponse;
}
예제 #6
0
/**
 * Парсит HTML одной работы в портфолио
 * 
 * @param  array $aOne массив с данными комментария
 * @param  int $status статус: 0 - не проверенно, 1 - утверждено, 2 - удалено
 * @param  string $sKind опционально. тип записи
 * @param  array $aStream данные о потоке
 * @param  int $nCnt количество записей в потоке
 * @param  int $nContentId идентификатор сущности из admin_contents (фактический из потоков, то есть со сборными)
 * @return string HTML
 */
function _parsePortfolioOne($aOne = array(), $status = 0, $sKind = '0', $aStream = array(), $nCnt = 0, $nContentId = 0)
{
    global $stop_words, $user_content, $sTeam;
    $sReturn = '';
    $sAttach = '';
    if ($aOne['is_video'] == 't') {
        // работа есть видео
        if ($aOne['prev_pict']) {
            // есть отдельно загруженное превью
            $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $aOne['prev_pict'] . '" alt="' . $aOne['prev_pict'] . '" title="' . $aOne['prev_pict'] . '" />';
        } else {
            // нет отдельно загруженного превью
            $sInner = $aOne['video_link'];
        }
        $sAttach = '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15"><strong>Ссылка на YouTube/RuTube/Vimeo видео:</strong> <br/><a href="http://' . $aOne['video_link'] . '" target="_blank">' . $sInner . '</a></div>';
    } elseif ($aOne['pict']) {
        // работа есть файл
        $ext = CFile::getext($aOne['pict']);
        $preview = $aOne['prev_pict'];
        $sPreview = '';
        if (in_array($ext, $GLOBALS['graf_array']) && $ext != 'swf') {
            // работа есть картинка
            if ($aOne['pict'] != substr($preview, 3, strlen($preview))) {
                // превью сделано не на основе оригинальной картинки либо вообще отсутствует
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/tn_' . $aOne['pict'] . '" alt="' . $aOne['pict'] . '" title="' . $aOne['pict'] . '" />';
                if ($preview) {
                    // превью загружено отдельно
                    $sPreview = 'Превью: <br/><img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
                }
            } else {
                // превью сделано на основе оригинальной картинки
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
            }
        } else {
            //работа не есть картинка
            if ($preview) {
                // есть отдельно загруженное превью
                $sInner = '<img src="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $preview . '" alt="' . $preview . '" title="' . $preview . '" />';
            } else {
                // нет отдельно загруженного превью
                $sInner = 'Работа';
            }
        }
        $sAttach = '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15">
            <a href="' . WDCPREFIX . '/users/' . $aOne['login'] . '/upload/' . $aOne['pict'] . '" target="_blank">' . $sInner . '</a><br/>
            ' . $sPreview . '
            </div>';
    }
    $txt_cost = view_cost2($aOne['cost'], '', '', false, $aOne['cost_type']);
    $txt_time = view_time($aOne['time_value'], $aOne['time_type']);
    $is_txt_time = $txt_cost != '' && $txt_time != '';
    $sLink = $GLOBALS['host'] . '/users/' . $aOne['login'];
    $sLink2 = $aOne['link'] ? '<div class="b-post__txt b-post__txt_padbot_15 b-post__txt_fontsize_15"><strong>Ссылка:</strong> <br/><a href="' . $aOne['link'] . '" target="_blank">' . $aOne['link'] . '</a></div>' : '';
    $sTitle = $status != 1 ? $stop_words->replace(xmloutofrangechars($aOne['name'])) : xmloutofrangechars($aOne['name']);
    $sTitle = reformat($sTitle, 52, 0, 1);
    $aOne['descr'] = nl2br($aOne['descr']);
    // грязный хак так как close_tags стала съедать переносы строк
    $sMessage = close_tags($aOne['descr'], 'b,i,p,ul,li');
    $sMessage = $status != 1 ? $stop_words->replace(xmloutofrangechars($aOne['descr'])) : xmloutofrangechars($aOne['descr']);
    $sMessage = reformat($sMessage, 60, 0, 0, 1);
    $aOne['is_sent'] = '0';
    $aOne['context_code'] = '1';
    $aOne['context_link'] = $sLink;
    $aOne['context_title'] = $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']';
    $sJSParams = "{'content_id': {$nContentId}, 'stream_id': '{$aStream['stream_id']}', 'content_cnt': {$nCnt}, 'status': {$status}, 'is_sent': '{$aOne['is_sent']}'}";
    $sEditIcon = _parseEditIcon('admEditPortfolio', $aOne['id'], $status, $sKind, $sJSParams);
    $bIsModer = $user_content->hasContentPermissions($nContentId, permissions::getUserPermissions($aOne['user_id']));
    $sModified = $aOne['moduser_id'] && ($aOne['moduser_id'] != $aOne['user_id'] || $bIsModer) ? '<div class="b-post__txt b-post__txt_padbot_15"><span style="color:red;">Работа была отредактирована. ' . ($aOne['modified_reason'] ? 'Причина: ' . $aOne['modified_reason'] : 'Без причины') . '</span></div>' : '';
    $sPRO = $aOne['moderator_status'] == -1 ? '<div class="b-post__txt b-post__txt_fontsize_11"><span style="color: #cc4642;">У пользователя был аккаунт PRO</span></div>' : '';
    $sPro = $aOne['is_pro'] == 't' ? view_pro2($aOne['is_pro_test'] == 't' ? true : false) . '&nbsp;' : '';
    $sReturn .= '
<div class="b-post b-post_bordtop_dfe3e4 b-post_padtop_15 b-post_marg_20_10" id="my_div_content_' . $aOne['content_id'] . '_' . $aOne['id'] . '_' . $sKind . '">
    ' . _parseHidden($aOne, $sKind) . '
    ' . _parseOkIcon($status, $aOne['content_id'], $aOne['id'], $sKind, $aOne['user_id']) . '
    ' . _parsePostTime($status, $aOne['post_time']) . '
    <div class="b-username b-username_padbot_5">' . ($aOne['is_team'] == 't' ? $sTeam : $sPro) . '<a class="b-username__link b-username__link_color_fd6c30 b-username__link_fontsize_11 b-username__link_bold" href="/users/' . $aOne['login'] . '" target="_blank">' . $aOne['uname'] . ' ' . $aOne['usurname'] . ' [' . $aOne['login'] . ']</a></div>
    ' . ($aOne['warn'] ? '<div class="b-username_padbot_5"><a onclick="parent.user_content.getUserWarns(' . $aOne['user_id'] . ');" href="javascript:void(0);" class="notice">Предупреждения:&nbsp;<span id="warn_' . $aOne['user_id'] . '_' . $aOne['content_id'] . '_' . $aOne['id'] . '">' . intval($aOne['warn']) . '</span></a></div>' : '<div class="b-username_padbot_5 user-notice">Предупреждений нет</div>') . '
    ' . $sPRO . '
    ' . _parseMass($aOne, $status, $sKind) . '
    <div class="b-post__txt b-post__txt_padbot_10 b-post__txt_fontsize_15"><span class="b-post__bold">Новая работа:</span> <a class="b-post__link b-post__link_fontsize_15" href="/users/' . $aOne['login'] . '/viewproj.php?prjid=' . $aOne['id'] . '" target="_blank">' . $sTitle . '</a></div>
    <div class="b-post__txt b-post__txt_fontsize_15">' . $sMessage . '</div>
    <div class="b-post__txt b-post__txt_fontsize_15">' . $txt_cost . ($is_txt_time ? ', ' : '') . ($txt_time != '' ? $txt_time : '') . '</div>

    ' . $sAttach . '
    ' . $sLink2 . '

    ' . $sModified . '
    ' . _parseDelIcons($aOne, 'user_id', $status, $sKind, $sJSParams, $sEditIcon) . '
</div>';
    return $sReturn;
}
예제 #7
0
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages_spam.php';
$nMessagesSpamCount = messages_spam::getSpamCount();
// количество жалоб на проекты
if (!isset($nComplainProjectsCount)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
    $nComplainProjectsCount = projects::GetComplainPrjsCount();
}
?>

<div class="admin-menu">

    <h3>Модераторская</h3>
    <?php 
if (!isset($aPermissions)) {
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/permissions.php";
    $aPermissions = permissions::getUserPermissions(get_uid(false));
}
foreach ($aPermissions as $sPermission) {
    $sVar = 'bHas' . ucfirst($sPermission);
    ${$sVar} = true;
}
?>
    <?php 
if ($bHasAll || $bHasAdm) {
    ?>

        <?php 
    if ($bHasAll || $bHasUsers || $bHasProjects || $bHasBlogs || $bHasCommunes) {
        ?>
        - Действия<br/>
        <?php