123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- <?php
- /**
- * @file
- * Builds placeholder replacement tokens system-wide data.
- *
- * This file handles tokens for the global 'site' token type, as well as
- * 'date' and 'file' tokens.
- */
- /**
- * Implements hook_token_info().
- */
- function system_token_info() {
- $types['site'] = array(
- 'name' => t("Site information"),
- 'description' => t("Tokens for site-wide settings and other global information."),
- );
- $types['date'] = array(
- 'name' => t("Dates"),
- 'description' => t("Tokens related to times and dates."),
- );
- $types['file'] = array(
- 'name' => t("Files"),
- 'description' => t("Tokens related to uploaded files."),
- 'needs-data' => 'file',
- );
- // Site-wide global tokens.
- $site['name'] = array(
- 'name' => t("Name"),
- 'description' => t("The name of the site."),
- );
- $site['slogan'] = array(
- 'name' => t("Slogan"),
- 'description' => t("The slogan of the site."),
- );
- $site['mail'] = array(
- 'name' => t("Email"),
- 'description' => t("The administrative email address for the site."),
- );
- $site['url'] = array(
- 'name' => t("URL"),
- 'description' => t("The URL of the site's front page."),
- );
- $site['url-brief'] = array(
- 'name' => t("URL (brief)"),
- 'description' => t("The URL of the site's front page without the protocol."),
- );
- $site['login-url'] = array(
- 'name' => t("Login page"),
- 'description' => t("The URL of the site's login page."),
- );
- // Date related tokens.
- $date['short'] = array(
- 'name' => t("Short format"),
- 'description' => t("A date in 'short' format. (%date)", array('%date' => format_date(REQUEST_TIME, 'short'))),
- );
- $date['medium'] = array(
- 'name' => t("Medium format"),
- 'description' => t("A date in 'medium' format. (%date)", array('%date' => format_date(REQUEST_TIME, 'medium'))),
- );
- $date['long'] = array(
- 'name' => t("Long format"),
- 'description' => t("A date in 'long' format. (%date)", array('%date' => format_date(REQUEST_TIME, 'long'))),
- );
- $date['custom'] = array(
- 'name' => t("Custom format"),
- 'description' => t("A date in a custom format. See !php-date for details.", array('!php-date' => l(t('the PHP documentation'), 'http://php.net/manual/en/function.date.php'))),
- );
- $date['since'] = array(
- 'name' => t("Time-since"),
- 'description' => t("A date in 'time-since' format. (%date)", array('%date' => format_interval(REQUEST_TIME - 360, 2))),
- );
- $date['raw'] = array(
- 'name' => t("Raw timestamp"),
- 'description' => t("A date in UNIX timestamp format (%date)", array('%date' => REQUEST_TIME)),
- );
- // File related tokens.
- $file['fid'] = array(
- 'name' => t("File ID"),
- 'description' => t("The unique ID of the uploaded file."),
- );
- $file['name'] = array(
- 'name' => t("File name"),
- 'description' => t("The name of the file on disk."),
- );
- $file['path'] = array(
- 'name' => t("Path"),
- 'description' => t("The location of the file relative to Drupal root."),
- );
- $file['mime'] = array(
- 'name' => t("MIME type"),
- 'description' => t("The MIME type of the file."),
- );
- $file['size'] = array(
- 'name' => t("File size"),
- 'description' => t("The size of the file."),
- );
- $file['url'] = array(
- 'name' => t("URL"),
- 'description' => t("The web-accessible URL for the file."),
- );
- $file['timestamp'] = array(
- 'name' => t("Timestamp"),
- 'description' => t("The date the file was most recently changed."),
- 'type' => 'date',
- );
- $file['owner'] = array(
- 'name' => t("Owner"),
- 'description' => t("The user who originally uploaded the file."),
- 'type' => 'user',
- );
- return array(
- 'types' => $types,
- 'tokens' => array(
- 'site' => $site,
- 'date' => $date,
- 'file' => $file,
- ),
- );
- }
- /**
- * Implements hook_tokens().
- */
- function system_tokens($type, $tokens, array $data = array(), array $options = array()) {
- $url_options = array('absolute' => TRUE);
- if (isset($options['language'])) {
- $url_options['language'] = $options['language'];
- $language_code = $options['language']->language;
- }
- else {
- $language_code = NULL;
- }
- $sanitize = !empty($options['sanitize']);
- $replacements = array();
- if ($type == 'site') {
- foreach ($tokens as $name => $original) {
- switch ($name) {
- case 'name':
- $site_name = variable_get('site_name', 'Drupal');
- $replacements[$original] = $sanitize ? check_plain($site_name) : $site_name;
- break;
- case 'slogan':
- $slogan = variable_get('site_slogan', '');
- $replacements[$original] = $sanitize ? check_plain($slogan) : $slogan;
- break;
- case 'mail':
- $replacements[$original] = variable_get('site_mail', '');
- break;
- case 'url':
- $replacements[$original] = url('<front>', $url_options);
- break;
- case 'url-brief':
- $replacements[$original] = preg_replace(array('!^https?://!', '!/$!'), '', url('<front>', $url_options));
- break;
- case 'login-url':
- $replacements[$original] = url('user', $url_options);
- break;
- }
- }
- }
- elseif ($type == 'date') {
- if (empty($data['date'])) {
- $date = REQUEST_TIME;
- }
- else {
- $date = $data['date'];
- }
- foreach ($tokens as $name => $original) {
- switch ($name) {
- case 'short':
- $replacements[$original] = format_date($date, 'short', '', NULL, $language_code);
- break;
- case 'medium':
- $replacements[$original] = format_date($date, 'medium', '', NULL, $language_code);
- break;
- case 'long':
- $replacements[$original] = format_date($date, 'long', '', NULL, $language_code);
- break;
- case 'since':
- $replacements[$original] = format_interval((REQUEST_TIME - $date), 2, $language_code);
- break;
- case 'raw':
- $replacements[$original] = $sanitize ? check_plain($date) : $date;
- break;
- }
- }
- if ($created_tokens = token_find_with_prefix($tokens, 'custom')) {
- foreach ($created_tokens as $name => $original) {
- $replacements[$original] = format_date($date, 'custom', $name, NULL, $language_code);
- }
- }
- }
- elseif ($type == 'file' && !empty($data['file'])) {
- $file = $data['file'];
- foreach ($tokens as $name => $original) {
- switch ($name) {
- // Basic keys and values.
- case 'fid':
- $replacements[$original] = $file->fid;
- break;
- // Essential file data
- case 'name':
- $replacements[$original] = $sanitize ? check_plain($file->filename) : $file->filename;
- break;
- case 'path':
- $replacements[$original] = $sanitize ? check_plain($file->uri) : $file->uri;
- break;
- case 'mime':
- $replacements[$original] = $sanitize ? check_plain($file->filemime) : $file->filemime;
- break;
- case 'size':
- $replacements[$original] = format_size($file->filesize);
- break;
- case 'url':
- $replacements[$original] = $sanitize ? check_plain(file_create_url($file->uri)) : file_create_url($file->uri);
- break;
- // These tokens are default variations on the chained tokens handled below.
- case 'timestamp':
- $replacements[$original] = format_date($file->timestamp, 'medium', '', NULL, $language_code);
- break;
- case 'owner':
- $account = user_load($file->uid);
- $name = format_username($account);
- $replacements[$original] = $sanitize ? check_plain($name) : $name;
- break;
- }
- }
- if ($date_tokens = token_find_with_prefix($tokens, 'timestamp')) {
- $replacements += token_generate('date', $date_tokens, array('date' => $file->timestamp), $options);
- }
- if (($owner_tokens = token_find_with_prefix($tokens, 'owner')) && $account = user_load($file->uid)) {
- $replacements += token_generate('user', $owner_tokens, array('user' => $account), $options);
- }
- }
- return $replacements;
- }
|