function user_update_7017

Update email templates to use new tokens.

This function upgrades customized email templates from the old !token format to the new core tokens format. Additionally, in Drupal 7 we no longer e-mail plain text passwords to users, and there is no token for a plain text password in the new token system. Therefore, it also modifies any saved templates using the old '!password' token such that the token is removed, and displays a warning to users that they may need to go and modify the wording of their templates.

Related topics

File

modules/user/user.install, line 879

Code

function user_update_7017() {
    $message = '';
    $tokens = array(
        '!site' => '[site:name]',
        '!username' => '[user:name]',
        '!mailto' => '[user:mail]',
        '!login_uri' => '[site:login-url]',
        '!uri_brief' => '[site:url-brief]',
        '!edit_uri' => '[user:edit-url]',
        '!login_url' => '[user:one-time-login-url]',
        '!uri' => '[site:url]',
        '!date' => '[date:medium]',
        '!password' => '',
    );
    $result = db_select('variable', 'v')->fields('v', array(
        'name',
    ))
        ->condition('name', db_like('user_mail_') . '%', 'LIKE')
        ->execute();
    foreach ($result as $row) {
        // Use variable_get() to get the unserialized value for free.
        if ($value = variable_get($row->name, FALSE)) {
            if (empty($message) && strpos($value, '!password') !== FALSE) {
                $message = t('The ability to send users their passwords in plain text has been removed in Drupal 7. Your existing email templates have been modified to remove it. You should <a href="@template-url">review these templates</a> to make sure they read properly.', array(
                    '@template-url' => url('admin/config/people/accounts'),
                ));
            }
            variable_set($row->name, str_replace(array_keys($tokens), $tokens, $value));
        }
    }
    return $message;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.