[РЕШЕНО] Помогите разобраться с токенами

Аватар пользователя vlucas vlucas 25 июля 2014 в 2:41

Доброй ночи. Проблема такая:

Есть нода в которой, в body используются токены. В частности токен [current-user:name]. Нода будет рассылаться пользователям (модуль Simplenews), поэтому токен всегда будет меняться, на пользователя которому уходит письмо.

В своем модуле мне нужно получить перед отправкой body и, естественно, правильно заменить токены значениями. Делаю так:

<?php

  $current_user 

user_load($uid);  // $uid - uid очередного пользователя НЕ текущего
  
  
$context = array(
    
'user' => $current_user,    
  );
  
  
dsm($current_user);  
  
  
dsm(token_replace('[current-user:name]'$context));  // в итоге вижу текущего

?>

Почему в итоге всегда получаю текущего пользователя?

Комментарии

Аватар пользователя vlucas vlucas 25 июля 2014 в 11:49

Василий Сергеевич wrote:
dashiwa wrote:
https://www.drupal.org/node/218104

Спасибо, но это немного не то. Мне просто необходимы токены![/quote]

dashiwa - беру свои слова обрано - это то что нужно!:

<?php

global $current_user;
$original_user = $current_user;
$old_state = drupal_save_session();
drupal_save_session(FALSE);

$current_user = user_load($uid); // $uid - uid очередного пользователя НЕ текущего

$context = array(
'user' => $current_user,
);

dsm($current_user);

dsm(token_replace('[current-user:name]', $context));

$current_user = $original_user;
drupal_save_session($old_state);

?>

Аватар пользователя vlucas vlucas 25 июля 2014 в 11:05

webpavilion wrote:
[ user:name ] вместо [ current-user:name ]?

Это неправильный токен - он вообще не заменяется

Аватар пользователя webpavilion webpavilion 25 июля 2014 в 11:29

не заменять он может только если контекст неверный передан, точно юзер с таким id существует???
у меня работает без проблем: