Как добавить username в ватермарк?

Всем привет!

Не даёт покоя насущный вопрос: "Как добавить имя пользователя (загрузившего картинку) в ватермарк?"
Курил блоги и ФАК, но везде вопрос оставался без ответа. Ковырялся сам, но нюанс остался. Итак.

С добавлением статичного текста всё ясно — правим конфиг.

Сама функция добавления ватермарка, насколько я понимаю, находится в файле engine\modules\image\Image.class.php

Непосредственно добавление ватермарка происходит здесь (строка 180):

    $oImage->watermark(
	$aParams['watermark_text'],
	explode(',',$aParams['watermark_position'],2),
        explode(',',$aParams['watermark_font_color']),
	explode(',',$aParams['watermark_back_color']),
	$aParams['watermark_font_alfa'],
	$aParams['watermark_back_alfa']
    );


За сам текст отвечает первый параметр:
$aParams['watermark_text']

Если добавить
. " | "
, выводится
текст |
— значит иду верным путём.
Остаётся каким-то образом добавить переменную, отвечающую за имя пользователя, некий {username}. Пробовал $aParams['user_login'] — не прокатывает… ((

Вопрос, что это за переменная и как её правильно добавить? Люди добрые, и прогеры злобные, помогите, плиз.

UPD

Вопрос решился благодаря spolischook .
Добавляем в код следующие элементы:

$usver = $this->User_GetUserCurrent();
$oImage->watermark(
«Posted by ». $usver->getLogin(). " | ". $aParams['watermark_text'],
explode(',',$aParams['watermark_position'],2),
explode(',',$aParams['watermark_font_color']),
explode(',',$aParams['watermark_back_color']),
$aParams['watermark_font_alfa'],
$aParams['watermark_back_alfa']
);

И получаем результат вида «Posted by {имя_пользователя} | {текст_ватермарка_из_конфига}».
Спасибо, spolischook , за помощь!

17 комментариев

avatar
Может попробовать $username$ или %username%. Точно не помню как.
avatar
это может прокатить в шаблонах {smarty}, если не ошибаюсь. В данном случае не то.
Но спасибо, что не прошёл мимо, а откликнулся!
avatar
$this->User_GetUserById() а id из сессии нада получать… как то так.
avatar
Ой, сори, вот оно — $this->User_GetUserCurrent()
avatar
к сожалению, не прокатывает:
$aParams['watermark_text'] . " | " . $this->User_GetUserCurrent()

загрузка изображения вообще не проходит. Что-то не так обрабатывается.
avatar
в том числе, если даже указываю $this->User_GetUserCurrent('1'). Всё равно не проходит загрузка изображения.
avatar
$this->User_GetUserCurrent() возвращает обьект из него вам нужен только логин. Сделайте в коде:
var_dump($this->User_GetUserCurrent());
die();

И посмотрите что получится.
avatar
не совсем понимаю, куда добавить в тексте

    $oImage->watermark(
        $aParams['watermark_text'],
        explode(',',$aParams['watermark_position'],2),
        explode(',',$aParams['watermark_font_color']),
        explode(',',$aParams['watermark_back_color']),
        $aParams['watermark_font_alfa'],
        $aParams['watermark_back_alfa']
    );

Подозреваю, что нужно создать отдельную переменную и уже ей присваивать значение приведённой вами конструкции. И только потом вставлять переменную в $aParams['watermark_text']. $переменная
Но не до конца понимаю, как.
avatar
не совсем понимаю, куда добавить в тексте
добавте вышеуказанную конструкцию в инициализацию класса, не ошибетесь — в класс init().
avatar
добавил в инициализацию, получилось так:

public function Init() {
$this->aParamsDefault = array(
'watermark_use'=>true,
'round_corner' =>false);
var_dump($this->User_GetUserCurrent());
die();

}

теперь в строке добавления ватермарка пишу:
$oImage->watermark(
$aParams['watermark_text']. " | ". $this->User_GetUserCurrent('user_login'), // далее не интересующий нас код

Резёльтат — отрицательный. Картинка не подгружается, скрипт не работает.
avatar
Простите, но такое ощущение — два автомеханика делают операцию на сердце
Вы хотя бы прочитали хотя бы в гугле что, а особенно зачем вы пишите?
avatar
AlikMis Предложите свой вариант.
Nubilus Скрипт должен был вывести все свойства обьекта который возвращает ф-я GetUserCurrent(), которая идет без параметров тоесть не нужно указывать в скобках ничего, и остановиться.
avatar
Простите, но такое ощущение — два автомеханика делают операцию на сердце
AlikMis Это не ощущение, оно так и есть на самом деле :)
Nubilus У меня заработала следующая конструкция:
$usver = $this->User_GetUserCurrent();
echo $usver->getLogin();

$usver->getLogin() — отдаст логин текущего пользователя. Пользуйтесь :)
avatar
spolischook , спасибо огромное! Еееее! Теперь всё гуд ))
avatar
Ребят, а как вывести названия топика в ватермарк?
avatar
Пробовал
$myTitle = $this->ModuleTopic_EntityTopic();
       echo $myTitle->getTitle();


но облом, не работает
avatar
ребят умираю от голода, не могу запустить проект ))) Помогите
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.