domain_source_nodeapi

Versions
domain
domain_source_nodeapi(&$node, $op, $a3, $a4)

Implement hook_nodeapi()

Code

domain_source/domain_source.module, line 133

<?php
function domain_source_nodeapi(&$node, $op, $a3, $a4) {
  global $_domain;
  switch ($op) {
    case 'validate':
      // If not set, we ignore.
      if (!isset($node->domain_source)) {
        return;
      }
      // Cast the key from zero to -1 to match the data coming from the input.
      ($node->domain_source == 0) ? $key = -1 : $key = $node->domain_source;
      // Check the domain and domains_raw variables to set up the allowed source list.
      $allowed = array();
      if (!empty($node->domains)) {
        $allowed = $node->domains;
      }
      if (!empty($node->domains_raw)) {
        $allowed = array_merge($allowed, $node->domains_raw);
      }
      if ($node->domain_site && $key == -1) {
        // This case is acceptable, so we let it pass.
        // I find this code easier to read than a compound IF statement.
      }
      // Here we account for both the 'domains_raw' and 'domains' options.
      else if ($node->domain_source != DOMAIN_SOURCE_USE_ACTIVE && !in_array($key, $allowed)) {
        form_set_error('domain_source', t('The source affiliate must be selected as a publishing option.'));
      }
      break;
    case 'insert':
    case 'update':
      global $_domain;
      // If not set, we came from a drupal_execute() or other external call, so use the current domain.
      if (!isset($node->domain_source)) {
        $node->domain_source = $_domain['domain_id'];
      }
      // Prevent invalid domains from being used.
      $lookup = domain_lookup($node->domain_source);
      if ($node->domain_source != DOMAIN_SOURCE_USE_ACTIVE && empty($lookup['valid'])) {
        $node->domain_source = NULL;
      }
      db_query("DELETE FROM {domain_source} WHERE nid = %d", $node->nid);
      if (!is_null($node->domain_source)) {
        db_query("INSERT INTO {domain_source} (nid, domain_id) VALUES (%d, %d)", $node->nid, $node->domain_source);
      }
      break;
    case 'delete':
      db_query("DELETE FROM {domain_source} WHERE nid = %d", $node->nid);
      break;
    case 'load':
      if ($node->nid) {
        $source = domain_source_lookup($node->nid, $node->domains, $node->domain_site);
        $node->domain_source = $source['domain_id'];
      }
      break;
    case 'view':
      // Search module casts both $a3 and $a4 as FALSE, not NULL.
      // We check that to hide this data from search and other nodeapi
      // calls that are neither a teaser nor a page view.
      if ($a3 !== FALSE || $a4 !== FALSE) {
        if (variable_get('domain_debug', 0) && user_access('set domain access') && isset($node->domain_source)) {
          $source = domain_get_node_match($node->nid);
          $extra = ' ';
          $use_active = db_result(db_query("SELECT domain_id FROM {domain_source} WHERE nid = %d", $node->nid));
          if (empty($use_active)) {
            $extra .= t('(determined automatically)');
          }
          else if ($use_active == DOMAIN_SOURCE_USE_ACTIVE) {
            $extra .= t('(using active domain)');
          }
          $node->content['domain_source'] = array('#value' => '<p>'. t('<strong>Source domain</strong>: %source', array('%source' => $source['sitename'])) . $extra .'</p>', '#weight' => 25);
        }
      }
      break;
  }
}
?>

Contact

  • agentrickard [at] gmail [dot] com

Donations

My Amazon.com Wish List