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;
}
}
}
}