You are here

function gallery_assist_node_load in Gallery Assist 7

Implements hook_node_load().

File

./gallery_assist.module, line 980
Extend drupal with gallery functionalities. Manage galleries.

Code

function gallery_assist_node_load($nodes, $types) {
  $result = db_query('SELECT * FROM {gallery_assist} WHERE nid IN(:nids)', array(
    ':nids' => array_keys($nodes),
  ));

  //  dsm($nodes);
  // Load gallery data.
  foreach ($result as $x => $record) {
    if (variable_get("gallery_assist_{$nodes[$record->nid]->type}", 0) == 1) {
      $record->data = unserialize($record->data);

      // Global settings
      $settings = variable_get("gallery_assist_{$nodes[$record->nid]->type}_data", array());

      //      $settings += unserialize($record->data);
      $node_settings = !empty($record->data) ? $record->data : array();
      $settings = array_merge($settings, $node_settings);
      $settings['ganame'] = $record->ganame;
      $settings['in_profile'] = $record->in_profile;
      $settings['show_title'] = $record->show_title;
      $settings['show_in_homepage_block'] = $record->show_in_homepage_block;
      $settings['gallery_assist_weight'] = $record->gallery_assist_weight;

      // Fill node object
      $nodes[$record->nid]->ga_gid = $record->gid;
      $nodes[$record->nid]->ga_gref = $record->gref;
      $nodes[$record->nid]->ga_ref = $record->ref;
      $nodes[$record->nid]->ga_public_status = $record->ga_public_status;
      $nodes[$record->nid]->ga_count = $record->count;

      // GA items
      $nodes[$record->nid]->ga_items = array();
      $nodes[$record->nid]->ga_items_ids = array();
      $settings['ga_teaser'] = count(arg()) >= 2 ? FALSE : TRUE;
      $settings['ga_limit'] = $settings['page_items_per_row'] * $settings['page_rows_per_page'];
      if ($settings['ga_teaser']) {
        $settings['ga_limit'] = $settings['teaser_items_per_row'] * $settings['teaser_rows_per_page'];
      }

      // GA settings
      $nodes[$record->nid]->ga_conf = array(
        $nodes[$record->nid]->type => $settings,
      );

      // Avoid to print pager on teaser lists
      if (count($nodes) == 1 && arg(1) == $record->nid) {
        $query = db_select('gallery_assist_item', 'p', array(
          'fetch' => PDO::FETCH_ASSOC,
        ))
          ->extend('PagerDefault')
          ->element(0);
      }
      else {
        $query = db_select('gallery_assist_item', 'p', array(
          'fetch' => PDO::FETCH_ASSOC,
        ));
      }
      $query
        ->join('gallery_assist_translated', 't', 'p.pid = t.pid');
      $query
        ->fields('p');
      $query
        ->fields('t', array(
        'lang',
        'ptitle',
        'palt',
        'pdescription',
        'format',
      ));
      $query
        ->condition('p.gref', $nodes[$record->nid]->ga_gref);
      $query
        ->orderBy('p.cover', 'DESC');
      $query
        ->orderBy('p.weight', $settings['db_order_direction']);

      // Add the right syntax depending of pager using
      if (count($nodes) == 1 && arg(1) == $record->nid) {
        $query
          ->limit($settings['ga_limit']);
      }
      else {
        $query
          ->range(0, $settings['ga_limit']);
      }
      foreach ($query
        ->execute() as $item) {
        $item = (object) $item;
        $nodes[$record->nid]->ga_items[$item->pid] = $item;

        //        $nodes[$record->nid]->ga_items_ids[$item->pid] = new stdClass();
        //        $nodes[$record->nid]->ga_items_ids[$item->pid]->pid = $item->pid;
        //        $nodes[$record->nid]->ga_items_ids[$item->pid]->weight = $item->weight;
      }
      $query = db_select('gallery_assist_item', 'p');
      $query
        ->fields('p', array(
        'pid',
        'opath',
        'weight',
      ));
      $query
        ->condition('p.gref', $nodes[$record->nid]->ga_gref);
      $query
        ->orderBy('p.cover', 'DESC');
      $query
        ->orderBy('p.weight', $settings['db_order_direction']);
      $nodes[$record->nid]->ga_items_ids = array();
      foreach ($query
        ->execute() as $item) {
        $nodes[$record->nid]->ga_items_ids[$item->pid] = new stdClass();
        $nodes[$record->nid]->ga_items_ids[$item->pid]->pid = $item->pid;
        $nodes[$record->nid]->ga_items_ids[$item->pid]->opath = $item->opath;
        $nodes[$record->nid]->ga_items_ids[$item->pid]->weight = $item->weight;
      }
    }
  }
}