| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Install, update and uninstall functions for the token module.
 
-  */
 
- /**
 
-  * Implements hook_requirements().
 
-  */
 
- function token_requirements($phase = 'runtime') {
 
-   $requirements = array();
 
-   $t = get_t();
 
-   if ($phase == 'runtime') {
 
-     // Check for various token definition problems.
 
-     $token_problems = token_get_token_problems();
 
-     // Format and display each token problem.
 
-     foreach ($token_problems as $problem_key => $problem) {
 
-       if (!empty($problem['problems'])) {
 
-         $problems = array_unique($problem['problems']);
 
-         $problems = array_map('check_plain', $problems);
 
-         $token_problems[$problem_key] = $problem['label'] . theme('item_list', array('items' => $problems));
 
-         $requirements['token-' . $problem_key] = array(
 
-           'title' => $problem['label'],
 
-           'value' => theme('item_list', array('items' => $problems)),
 
-           'severity' => $problem['severity'],
 
-         );
 
-       }
 
-     }
 
-   }
 
-   return $requirements;
 
- }
 
- /**
 
-  * Implements hook_schema().
 
-  */
 
- function token_schema() {
 
-   $schema['cache_token'] = drupal_get_schema_unprocessed('system', 'cache');
 
-   $schema['cache_token']['description'] = 'Cache table for token information.';
 
-   return $schema;
 
- }
 
- /**
 
-  * Add the cache_token table.
 
-  */
 
- function token_update_7000() {
 
-   if (!db_table_exists('cache_token')) {
 
-     $schema = drupal_get_schema_unprocessed('system', 'cache');
 
-     $schema['description'] = 'Cache table for token information.';
 
-     db_create_table('cache_token', $schema);
 
-   }
 
- }
 
- /**
 
-  * Deprecate and disable the token_actions module.
 
-  */
 
- function token_update_7001() {
 
-   module_disable(array('token_actions'));
 
-   return 'The Token actions module has been deprecated by the updated system module actions that support tokens.';
 
- }
 
- /**
 
-  * Migrate old token_actions module actions to system actions.
 
-  */
 
- //function token_update_700X() {
 
- //  $actions = db_query("SELECT aid, type, callback, parameters, label FROM {actions} WHERE type = 'system' AND callback IN ('token_actions_message_action', 'token_actions_send_email_action', 'token_actions_goto_action')")->fetchAll();
 
- //  foreach ($actions as $action) {
 
- //    $action->parameters = unserialize($action->parameters);
 
- //    foreach ($action->parameters as $key => $value) {
 
- //      if (is_string($value)) {
 
- //        $action->parameters[$key] = token_update_token_text($value);
 
- //      }
 
- //    }
 
- //    $action->callback = str_replace('token_actions_', '', $action->callback);
 
- //    actions_save($action->callback, $action->type, $action->parameters, $action->label, $action->aid);
 
- //  }
 
- //  return 'Token actions module actions migrated to system module actions. You may still want to verify that the actions were upgraded correctly.';
 
- //}
 
- /**
 
-  * Build a list of Drupal 6 tokens and their Drupal 7 token names.
 
-  */
 
- function _token_upgrade_token_list() {
 
-   $tokens = array(
 
-     // Global tokens
 
-     'user-name' => 'current-user:name',
 
-     'user-id' => 'current-user:id',
 
-     'user-mail' => 'current-user:mail',
 
-     'site-url' => 'site:url',
 
-     'site-name' => 'site:name',
 
-     'site-slogan' => 'site:slogan',
 
-     'site-mission' => 'site:mission',
 
-     'site-mail' => 'site:mail',
 
-     'site-date' => 'date:short',
 
-     //'site-date-' => '', // Date tokens expanded below
 
-     'current-page-path' => 'current-page:path',
 
-     'current-page-url' => 'current-page:url',
 
-     'page-number' => 'current-page:page-number',
 
-     // Comment tokens
 
-     'comment-cid' => 'comment:cid',
 
-     'comment-nid' => 'comment:node:nid',
 
-     'comment-title' => 'comment:title',
 
-     'comment-body' => 'comment:body',
 
-     'comment-author-name' => 'comment:author:name',
 
-     'comment-author-mail' => 'comment:author:mail',
 
-     //'comment-body-format' => '',
 
-     //'comment-' => '', // Date tokens expanded below
 
-     'comment-node-title' => 'comment:node',
 
-     // Node tokens
 
-     'nid' => 'node:nid',
 
-     'type' => 'node:type',
 
-     'type-name' => 'node:type-name',
 
-     'language' => 'node:language',
 
-     'title' => 'node:title',
 
-     'author-uid' => 'node:author:uid',
 
-     'author-name' => 'node:author:name',
 
-     'author-mail' => 'node:author:mail',
 
-     'node_comment_count' => 'node:comment-count',
 
-     'unread_comment_count' => 'node:comment-count-new',
 
-     'log' => 'node:log',
 
-     //'' => '', // Date tokens expanded below
 
-     //'mod-' => '', // Date tokens expanded below
 
-     'menupath' => 'node:menu-link:parent:path][node:menu-link',
 
-     'menu' => 'node:menu-link:menu-name',
 
-     'menu-link-title' => 'node:menu-link',
 
-     'menu-link-mlid' => 'node:menu-link:mlid',
 
-     'menu-link-plid' => 'node:menu-link:parent:mlid',
 
-     //'term' => 'node:term',
 
-     //'term-id' => 'node:term:tid',
 
-     //'vocab' => 'node:term:vocabulary',
 
-     //'vocab-id' => 'node:term:vocabulary:vid',
 
-     // Book tokens
 
-     //'book' => 'node:book',
 
-     //'book_id' => 'node:book:bid',
 
-     //'bookpath' => 'node:book:path',
 
-     // Taxonomy tokens
 
-     'tid' => 'term:tid',
 
-     'cat' => 'term:name',
 
-     'cat-description' => 'term:description',
 
-     'vid' => 'term:vocabulary:vid',
 
-     'vocab' => 'term:vocabulary',
 
-     'vocab-description' => 'term:vocabulary:description',
 
-     // User tokens
 
-     'user' => 'user:name',
 
-     'uid' => 'user:uid',
 
-     'mail' => 'user:mail',
 
-     'reg-date' => 'user:created',
 
-     'reg-since' => 'user:created:since',
 
-     //'user-created' => '', // Date tokens expanded below
 
-     'log-date' => 'user:last-login',
 
-     'log-since' => 'user:last-login:since',
 
-     //'user-last-login' => '', // Date tokens expanded below
 
-     //'date-in-tz' => '',
 
-     'account-url' => 'user:url',
 
-     'account-edit' => 'user:edit-url',
 
-   );
 
-   // Account for date tokens which need to be expanded.
 
-   $tokens += _token_upgrade_token_date_list('site-', 'site:date');
 
-   $tokens += _token_upgrade_token_date_list('', 'node:created');
 
-   $tokens += _token_upgrade_token_date_list('mod-', 'node:changed');
 
-   //$tokens += _token_upgrade_token_date_list('node-revision-', 'node:changed');
 
-   $tokens += _token_upgrade_token_date_list('comment-', 'comment:created');
 
-   $tokens += _token_upgrade_token_date_list('user-register-', 'user:created');
 
-   $tokens += _token_upgrade_token_date_list('user-last-login-', 'user:last-login');
 
-   return $tokens;
 
- }
 
- /**
 
-  * Build a list of Drupal 6 date tokens and their Drupal 7 token names.
 
-  */
 
- function _token_upgrade_token_date_list($old_token, $new_token) {
 
-   $tokens = array();
 
-   $formats = array(
 
-     'yyyy' => 'Y',
 
-     'yy' => 'y',
 
-     'month' => 'F',
 
-     'mon' => 'M',
 
-     'mm' => 'm',
 
-     'm' => 'n',
 
-     'ww' => 'W',
 
-     'date' => 'N',
 
-     'day' => 'l',
 
-     'ddd' => 'D',
 
-     'dd' => 'd',
 
-     'd' => 'j',
 
-   );
 
-   foreach ($formats as $token_format => $date_format) {
 
-     $tokens[$old_token . $token_format] = "$new_token:custom:$date_format";
 
-   }
 
-   $tokens[$old_token . 'raw'] = "$new_token:raw";
 
-   $tokens[$old_token . 'since'] = "$new_token:since";
 
-   return $tokens;
 
- }
 
- /**
 
-  * Update a string containing Drupal 6 style tokens to Drupal 7 style tokens.
 
-  *
 
-  * @param $text
 
-  *   A string containing tokens.
 
-  * @param $updates
 
-  *   An optional array of Drupal 7 tokens keyed by their Drupal 6 token name.
 
-  *   The default tokens will be merged into this array. Note neither the old
 
-  *   or new token names should include the surrounding bracket ([ and ])
 
-  *   characters.
 
-  * @return
 
-  *   A string with the tokens upgraded
 
-  *
 
-  * @see _token_upgrade_token_list()
 
-  */
 
- function token_update_token_text($text, $updates = array(), $leading = '[', $trailing = ']') {
 
-   $updates += _token_upgrade_token_list();
 
-   $regex = '/' . preg_quote($leading, '/') . '([^\s]*)' . preg_quote($trailing, '/') . '/';
 
-   preg_match_all($regex, $text, $matches);
 
-   foreach ($matches[1] as $index => $old_token) {
 
-     if (isset($updates[$old_token])) {
 
-       $new_token = $updates[$old_token];
 
-       $text = str_replace("{$leading}{$old_token}{$trailing}", "[$new_token]", $text);
 
-       // Also replace any tokens that have a -raw suffix.
 
-       $text = str_replace("{$leading}{$old_token}-raw{$trailing}", "[$new_token]", $text);
 
-     }
 
-   }
 
-   return $text;
 
- }
 
- /**
 
-  * Get token problems.
 
-  */
 
- function token_get_token_problems() {
 
-   // @todo Improve the duplicate checking to report which modules are the offenders.
 
-   //$token_info = array();
 
-   //foreach (module_implements('token_info') as $module) {
 
-   //  $module_token_info = module_invoke($module, 'token_info');
 
-   //  if (in_array($module, _token_core_supported_modules())) {
 
-   //    $module .= '/token';
 
-   //  }
 
-   //  if (isset($module_token_info['types'])) {
 
-   //    if (is_array($module_token_info['types'])) {
 
-   //      foreach (array_keys($module_token_info['types']) as $type) {
 
-   //        if (is_array($module_token_info['types'][$type])) {
 
-   //          $module_token_info['types'][$type] += array('module' => $module);
 
-   //        }
 
-   //      }
 
-   //    }
 
-   //  }
 
-   //  if (isset($module_token_info['tokens'])) {
 
-   //    if (is_array($module_token_info['tokens'])) {
 
-   //
 
-   //    }
 
-   //  }
 
-   //  if (is_array($module_token_info)) {
 
-   //    $token_info = array_merge_recursive($token_info, $module_token_info);
 
-   //  }
 
-   //}
 
-   $token_info = token_info();
 
-   $token_problems = array(
 
-     'not-array' => array(
 
-       'label' => t('Tokens or token types not defined as arrays'),
 
-       'severity' => REQUIREMENT_ERROR,
 
-     ),
 
-     'missing-info' => array(
 
-       'label' => t('Tokens or token types missing name property'),
 
-       'severity' => REQUIREMENT_WARNING,
 
-     ),
 
-     'type-no-tokens' => array(
 
-       'label' => t('Token types do not have any tokens defined'),
 
-       'severity' => REQUIREMENT_INFO,
 
-     ),
 
-     'tokens-no-type' => array(
 
-       'label' => t('Token types are not defined but have tokens'),
 
-       'severity' => REQUIREMENT_INFO,
 
-     ),
 
-     'duplicate' => array(
 
-       'label' => t('Token or token types are defined by multiple modules'),
 
-       'severity' => REQUIREMENT_ERROR,
 
-     ),
 
-   );
 
-   // Check token types for problems.
 
-   foreach ($token_info['types'] as $type => $type_info) {
 
-     $real_type = !empty($type_info['type']) ? $type_info['type'] : $type;
 
-     if (!is_array($type_info)) {
 
-       $token_problems['not-array']['problems'][] = "\$info['types']['$type']";
 
-       continue;
 
-     }
 
-     elseif (!isset($type_info['name'])) {
 
-       $token_problems['missing-info']['problems'][] = "\$info['types']['$type']";
 
-     }
 
-     elseif (is_array($type_info['name'])) {
 
-       $token_problems['duplicate']['problems'][] = "\$info['types']['$type']";
 
-     }
 
-     elseif (empty($token_info['tokens'][$real_type])) {
 
-       $token_problems['type-no-tokens']['problems'][] = "\$info['tokens']['$real_type']";
 
-     }
 
-   }
 
-   // Check tokens for problems.
 
-   foreach ($token_info['tokens'] as $type => $tokens) {
 
-     if (!is_array($tokens)) {
 
-       $token_problems['not-array']['problems'][] = "\$info['tokens']['$type']";
 
-       continue;
 
-     }
 
-     else {
 
-       foreach (array_keys($tokens) as $token) {
 
-         if (!is_array($tokens[$token])) {
 
-           $token_problems['not-array']['problems'][] = "\$info['tokens']['$type']['$token']";
 
-           continue;
 
-         }
 
-         elseif (!isset($tokens[$token]['name'])) {
 
-           $token_problems['missing-info']['problems'][] = "\$info['tokens']['$type']['$token']";
 
-         }
 
-         elseif (is_array($tokens[$token]['name'])) {
 
-           $token_problems['duplicate']['problems'][] = "\$info['tokens']['$type']['$token']";
 
-         }
 
-       }
 
-     }
 
-     if (!isset($token_info['types'][$type])) {
 
-       $token_problems['tokens-no-type']['problems'][] = "\$info['types']['$type']";
 
-     }
 
-   }
 
-   return $token_problems;
 
- }
 
 
  |