You are here

uc_cart_links.module in Ubercart 6.2

Allows store owners to create links to add products to carts and send customers on to checkout.

File

uc_cart_links/uc_cart_links.module
View source
<?php

/**
 * @file
 * Allows store owners to create links to add products to carts and send
 * customers on to checkout.
 */

/*******************************************************************************
 * Hook Functions (Drupal)
 ******************************************************************************/

/**
 * Implements hook_menu().
 */
function uc_cart_links_menu() {
  $items['admin/store/settings/cart_links'] = array(
    'title' => 'Cart links settings',
    'description' => 'Configure and craft special product add to cart links.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'uc_cart_links_settings_form',
    ),
    'access arguments' => array(
      'administer cart links',
    ),
    'type' => MENU_NORMAL_ITEM,
    'file' => 'uc_cart_links.admin.inc',
  );
  $items['admin/store/reports/cart_links'] = array(
    'title' => 'Cart links clicks',
    'description' => 'Track clicks through cart links.',
    'page callback' => 'uc_cart_links_report',
    'access arguments' => array(
      'view cart links report',
    ),
    'type' => MENU_NORMAL_ITEM,
    'file' => 'uc_cart_links.admin.inc',
  );
  $items['admin/store/help/cart_links'] = array(
    'title' => 'Creating cart links',
    'description' => 'Learn how to create cart links for your products.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'uc_cart_links_creation_help',
    ),
    'access arguments' => array(
      'administer store',
    ),
    'type' => MENU_NORMAL_ITEM,
    'file' => 'uc_cart_links.admin.inc',
  );
  $items['cart/add/%'] = array(
    'title' => 'Add to cart',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'uc_cart_links_form',
      2,
    ),
    'access arguments' => array(
      'access content',
    ),
    'type' => MENU_CALLBACK,
    'file' => 'uc_cart_links.pages.inc',
  );
  return $items;
}

/**
 * Implements hook_perm().
 */
function uc_cart_links_perm() {
  return array(
    'administer cart links',
    'view cart links report',
  );
}

/**
 * Implements hook_add_to_cart().
 */
function uc_cart_links_add_to_cart($nid, $qty, $data) {
  if (user_access('administer cart links') && variable_get('uc_cart_links_add_show', FALSE)) {
    $cart_link = 'p' . $nid . '_q' . $qty;
    if (!empty($data['attributes'])) {
      foreach ($data['attributes'] as $attribute => $option) {
        if (is_array($option)) {

          // Checkbox options are stored in an array
          foreach ($option as $oid => $ovalue) {
            if ($ovalue != 0) {
              $cart_link .= '_a' . $attribute . 'o' . $oid;
            }
          }
        }
        else {

          // Textfield, Select, or Radio options
          $cart_link .= '_a' . $attribute . 'o' . $option;
        }
      }
    }
    drupal_set_message(t('Cart link product action: @cart_link', array(
      '@cart_link' => $cart_link,
    )));
  }
}

Functions