You are here

uc_coupon.tokens.inc in Ubercart Discount Coupons 7.3

Same filename and directory in other branches
  1. 7.2 uc_coupon.tokens.inc

Token support for uc_coupon.

File

uc_coupon.tokens.inc
View source
<?php

/**
 * @file
 * Token support for uc_coupon.
 */

/**
 * Implements hook_token_info().
 */
function uc_coupon_token_info() {
  $types = array(
    'uc_coupon' => array(
      'name' => t('Coupon'),
      'description' => t('Tokens related to Ubercart discount coupons.'),
      'needs-data' => 'uc_coupon',
    ),
  );
  $tokens = array(
    'uc_coupon' => array(
      'name' => array(
        'name' => t('Name'),
        'description' => t('The name of the coupon.'),
      ),
      'code' => array(
        'name' => t('Code'),
        'description' => t('The coupon code. For bulk coupons this will be the actual code applied, or the code
        	prefix if the coupon has not yet been applied.'),
      ),
      'codes' => array(
        'name' => t('All Codes'),
        'description' => t('The coupon codes.  For bulk coupons, this will be a comma separated list of codes.'),
      ),
      'value' => array(
        'name' => t('Value'),
        'description' => t('The value of the coupon.  If the coupon has already been applied to an order, this will be
        	the actual currency value of the coupon.  Otherwise, it will be the nominal discount.'),
      ),
      'credit' => array(
        'name' => t('Remaining credit'),
        'description' => t('For store credit/gift certificate type coupons which have been applied to an order, the unused credit remaining.'),
      ),
    ),
    'uc_order' => array(
      'coupon-code' => array(
        'name' => t('Coupon Code'),
        'description' => t('The coupon code used in the order.'),
      ),
    ),
  );
  return array(
    'types' => $types,
    'tokens' => $tokens,
  );
}

/**
 * Implements hook_tokens().
 */
function uc_coupon_tokens($type, $tokens, $data = array(), $options = array()) {
  $sanitize = !empty($options['sanitize']);
  $values = array();
  switch ($type) {
    case 'uc_order':
      if (array_key_exists('coupon-code', $tokens) && !empty($data['uc_order']) && isset($data['uc_order']->data['coupon'])) {
        $values[$tokens['coupon-code']] = $sanitize ? check_plain($data['uc_order']->data['coupon']) : $data['uc_order']->data['coupon'];
      }
      break;
    case 'uc_coupon':
      if (!empty($data['uc_coupon'])) {
        $coupon = $data['uc_coupon'];
        if (array_key_exists('name', $tokens)) {
          $values[$tokens['name']] = $sanitize ? check_plain($coupon->name) : $coupon->name;
        }
        if (array_key_exists('code', $tokens)) {
          $values[$tokens['code']] = $sanitize ? check_plain($coupon->code) : $coupon->code;
        }
        if (array_key_exists('codes', $tokens)) {
          $codes = array();
          if ($coupon->bulk) {
            for ($id = 0; $id < $coupon->data['bulk_number']; $id++) {
              $codes[] = uc_coupon_get_bulk_code($coupon, $id);
            }
          }
          else {
            $codes[] = $coupon->code;
          }
          $values[$tokens['codes']] = implode("\n", $sanitize ? array_walk($codes, 'check_plain') : $codes);
        }
        if (array_key_exists('value', $tokens)) {
          $values[$tokens['value']] = isset($coupon->amount) ? theme('uc_price', array(
            'price' => $coupon->amount,
          )) : theme('uc_coupon_discount', array(
            'coupon' => $coupon,
          ));
        }
        if (array_key_exists('credit', $tokens)) {
          if ($coupon->type !== 'credit') {
            if ($coupon->bulk && !$coupon->valid) {
              $values[$tokens['credit']] = t('n/a');
            }
            else {
              $amt = $coupon->value;
              $usage = isset($coupon->usage) ? $coupon->usage : uc_coupon_count_usage($coupon->cid);
              if (isset($usage['value'][$coupon->code])) {
                $amt -= $usage['value'][$coupon->code];
              }
              if (isset($coupon->amount)) {
                $amt -= $coupon->amount;
              }
              $values[$tokens['credit']] = uc_currency_format($amt);
            }
          }
          else {
            $values[$tokens['credit']] = t('n/a');
          }
        }
      }
      break;
  }
  return $values;
}

Functions

Namesort descending Description
uc_coupon_tokens Implements hook_tokens().
uc_coupon_token_info Implements hook_token_info().