Хак functions.php | Ссылка на профиль по символу @

6.14K
.

ДоХтор, чти http://php.net/manual/ru/featu ... r.php

.

Delphinum, спасибо ) На первый взгляд сложно разобраться, т.к. у меня нет опыта работы с консолью.

.

ДоХтор, на второй взгляд поймешь, что там все элементарно

.
# Delphinum (30.01.2017 / 21:21)
ДоХтор, на второй взгляд поймешь, что там все элементарно
Ок
.
ValekS
Ей 25

Хотя не, в 7-рке еще пару отличий будет. Вот код для 7(вставлять в /system/johncms/Tools.php, строка 104):

* (+/-)
/**
* Обработка текстов перед выводом на экран
*
* @param string $str
* @param int $br   Параметр обработки переносов строк
*                  0 - не обрабатывать (по умолчанию)
*                  1 - обрабатывать
*                  2 - вместо переносов строки вставляются пробелы
* @param int $tags Параметр обработки тэгов
*                  0 - не обрабатывать (по умолчанию)
*                  1 - обрабатывать
*                  2 - вырезать тэги
*
* @return string
*/
public function checkout($str, $br = 0, $tags = 0)
{	
    $str = htmlentities(trim($str), ENT_QUOTES, 'UTF-8');
    if ($br == 1) {
        $str = nl2br($str);
    } elseif ($br == 2) {
        $str = str_replace("\r\n", ' ', $str);
    }
    if ($tags == 1) {
        $str = $this->container->get('bbcode')->tags($str);
    } elseif ($tags == 2) {
        $str = $this->container->get('bbcode')->notags($str);
    }
    return self::linkUser(trim($str));
}

/**
* Ссылка на профиль по символу @
* 
* @param string $str
* 
* @return string
*/
public function linkUser($str) {
    $arr = preg_replace_callback(
        '~(@(.*))~iu',
        function ($a) {
            $us = $this->db->query("
            SELECT `id` FROM `users` 
            WHERE `name` = '". mysql_real_escape_string($a[2]) ."'
            ")->fetch();

            if (!empty($us['id'])) {
                return '<a href="'. $this->config['homeurl'] .'/users/profile.php?user='. $us['id'] .'">'. $a[1] .'</a>';
            } else {
                return $a[0];
            }
        },
        explode(' ', $str)
    );
    return join(' ', $arr);
}
.
(\/)____o_O____(\/)

можно ещё объеденить с хаком когда страница юзера это субдомен, то есть
админ.сайт.ру

.

ValekS, а зачем в этой строке return self::linkUser(trim($str)); писать trim() ? Он ведь вверху прописан.

.
¯\_(ツ)_/¯

ValekS, Че то не катит. Функцию checkout заменить надо?

.
Ей 25
# ДоХтор (30.01.2017 / 21:30)
ValekS, а зачем в этой строке return self::linkUser(trim($str)); писать trim() ? Он ведь вверху прописан.
Не знаю. Так изначально было в коде функции.
.
# PaRtiZzaN (30.01.2017 / 21:30)
ValekS, Че то не катит. Функцию checkout заменить надо?
Да. Или заменить в ней одну строку

return self::linkUser($str);
Всего: 88