merci-8.x-2.x-dev/modules/merci_printable_contract/merci_printable_contract.module

modules/merci_printable_contract/merci_printable_contract.module
<?php

/**
 * @file
 * merci_printable_contract functions
 */

/* Windows does not have the money_format function in php.*/
if (!function_exists('money_format')) {
  module_load_include('inc', 'merci_printable_contract', 'money_format');
}
/**
 * Implements hook_menu().
 */
function merci_printable_contract_menu() {

  $admin = array('administer MERCI');

  $items['node/%node/contract'] = array(
    'title' => 'Printable contract',
    'description' => 'Takes a node object and returns a printable contract',
    'page arguments' => array(1),
    'page callback' => 'merci_printable_contract',
    'access callback' => 'merci_printable_contract_content_access',
    'access arguments' => array(1, 'manage reservations'),
    'type' => MENU_LOCAL_TASK,
  );

  // Standard Administration settings.
  $items['admin/config/system/merci/contract'] = array(
    'title' => 'Printable Contract',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('merci_printable_contract_admin_settings'),
    'access callback' => 'user_access',
    'access arguments' => $admin,
    'description' => 'Configure settings for MERCI\'s Printable Contract.',
    'type' => MENU_LOCAL_TASK,
  );


  return $items;
}

/**
 * @todo Please document this function.
 * @see http://drupal.org/node/1354
 */
function merci_printable_contract_content_access($node, $perm) {
  return (user_access($perm) and $node->type == 'merci_reservation');
}

/**
 * @todo Please document this function.
 * @see http://drupal.org/node/1354
 */
function merci_printable_contract_theme() {

  return array(
    'merci_printable_contract' => array(
      'template' => 'merci-printable-contract',
      'variables' => array('node' => NULL),
    ),
  );
}

/**
 * Builds the admininstration settings form.
 */
function merci_printable_contract_admin_settings($form, &$form_state) {

  $form['merci_contract_header'] = array(
    '#type' => 'textarea',
    '#title' => t('Contract header'),
    '#rows' => 10,
    // TODO: this doesn't seem to work...
    '#cols' => 5,
    '#default_value' => variable_get('merci_contract_header', ''),
    '#description' => t('Header portion of printable contract.  Allows HTML.'),
  );

  $form['merci_contract_boilerplate'] = array(
    '#type' => 'textarea',
    '#title' => t('Contract boilerplate'),
    '#rows' => 10,
    // TODO: this doesn't seem to work...
    '#cols' => 5,
    '#default_value' => variable_get('merci_contract_boilerplate', ''),
    '#description' => t('Legalese that makes the contract legally binding.'),
  );

  $form['merci_contract_footer'] = array(
    '#type' => 'textarea',
    '#title' => t('Contract footer'),
    '#rows' => 10,
    // TODO: this doesn't seem to work...
    '#cols' => 5,
    '#default_value' => variable_get('merci_contract_footer', ''),
    '#description' => t('Footer portion of printable contract. Normally includes signature lines. HTML allowed.'),
  );

  if (module_exists('token')) {
    $form['token_help'] = array(
      '#title' => t('Replacement patterns'),
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );

    // TODO Please change this theme call to use an associative array for the $variables parameter.
    $form['token_help']['help'] = array(
      '#value' => theme('token_help', 'node'),
    );
  }

  return system_settings_form($form);
}

function merci_printable_contract($node) {

  print theme('merci_printable_contract', array('node' => $node));

}
// merci_printable_contract

function merci_preprocess_merci_printable_contract(&$variables) {

  $node = $variables['node'];
  setlocale(LC_MONETARY, 'en_US');

  $user     = user_load($node->uid);
  $username = $user->name;
  $email    = $user->mail;
  if (module_exists('civicrm')) {

    civicrm_initialize(TRUE);
    global $civicrm_root;
    //include_once($civicrm_root .'/api/UFGroup.php');
    //$userID = crm_uf_get_match_id($user->uid);

    require_once $civicrm_root . '/CRM/Core/BAO/UFMatch.php';
    $userID = CRM_Core_BAO_UFMatch::getContactId( $user->uid );

    $civicrm = system_get_info('module', 'civicrm');

    if ($civicrm['version'] >= '4.4') {
      try{
        $contacts = civicrm_api3('contact', 'get', array(
          'contact_id'  =>  $userID,
        ));
      }
      catch (CiviCRM_API3_Exception $e) {
        $error = $e->getMessage();
      }
      $ob = $contacts['values'];
    } else {
      $cg = array('contact_id' => $userID);
      include_once $civicrm_root . '/api/v2/Contact.php';
      $ob = civicrm_contact_get($cg);
    }
    $username = $ob[$userID]['display_name'];
    $phone = $ob[$userID]['phone'];
  }

  $items = $node->merci_reservation_items;

  $langcode = $node->language;
  // Convert to site timezone.
  $start_date       = merci_create_local_date_object($node->field_merci_date[LANGUAGE_NONE][0]['value']);
  $end_date         = merci_create_local_date_object($node->field_merci_date[LANGUAGE_NONE][0]['end_value']);

  $hours = round((intval(date_format($end_date, "U")) - intval(date_format($start_date, "U"))) / 3600, 2);

  $variables['start_date'] = format_date($start_date->format('U'));
  $variables['end_date'] = format_date($end_date->format('U'));
  $variables['hours'] = $hours;
  $variables['username'] = $username;
  $variables['email'] = $email;
  if (isset($phone)) {
    $variables['phone'] = $phone;
  }
  $variables['items'] = $items;

}
// merci_printable_contract

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc