You are here

function pay_node_form_load in Pay 7

Same name and namespace in other branches
  1. 6 modules/pay_node/pay_node.module \pay_node_form_load()

A load helper for pay_forms that are attached to a node.

6 calls to pay_node_form_load()
pay_node_admin_node_form_alter in modules/pay_node/includes/pay_node.admin.inc
A form_alter helper for node creation forms.
pay_node_handler_field_pay_form_link::render in modules/pay_node/includes/views/pay_node_handler_field_pay_form_link.inc
Render the field.
pay_node_node_load in modules/pay_node/pay_node.module
Implements hook_node_load().
pay_node_pay_form in modules/pay_node/pay_node.module
A callback for node/x/pay which presents a payment form.
pay_node_pay_form_access in modules/pay_node/pay_node.module
An access callback for payment forms.

... See full list

File

modules/pay_node/pay_node.module, line 269

Code

function pay_node_form_load($node) {

  // Allow this to work if we only get a nid.
  if (is_scalar($node)) {
    $node = node_load($node);
  }

  // Don't continue if pay_node settings aren't enabled for this node type.
  if (!variable_get('pay_node_enabled_' . $node->type, FALSE)) {
    return;
  }

  // Determine the pay_form handler for this type, and verify that it's enabled.
  if (!($handler = variable_get('pay_node_form_' . $node->type, NULL))) {
    return;
  }
  if (!array_key_exists($handler, array_filter(variable_get('pay_node_forms', array())))) {
    return;
  }

  // The linking method (create, select, etc.)
  $method = variable_get('pay_node_method_' . $node->type, '');

  // Load the pay_form that is associated with this node, if one exists.
  if ($node->nid) {
    if ($pfid = db_query("SELECT pfid FROM {pay_form_node} n\n      INNER JOIN {pay_form} f USING ( pfid )\n      WHERE f.handler = :f.handler\n      AND n.nid = :n.nid\n      AND method = :method", array(
      ':f.handler' => $handler,
      ':n.nid' => $node->nid,
      ':method' => $method,
    ))
      ->fetchField()) {
      if ($pay_form = pay_form_load($pfid)) {

        // Hard-code the payment form's URL.
        $pay_form
          ->set_menu_path('node/' . $node->nid . '/pay');
      }
    }
    elseif ($method == 'select') {
      return;
    }
  }

  // Rely on defaults.
  if (!isset($pay_form)) {

    // The node is linked to a form. Use the default value.
    if ($method = 'select') {
      if ($pfid = variable_get('pay_node_view_default_select_' . $node->type, '')) {
        $pay_form = pay_form_load($pfid);
      }
    }
    elseif ($method = 'create') {
      $pay_form = pay_form_load($handler);
    }
  }
  return $pay_form;
}