function gallery_assist_nodeapi in Gallery Assist 6
Implementation of hook_nodeapi().
File
- ./
gallery_assist.module, line 3478 - Drupal content type with gallery functionality.
Code
function gallery_assist_nodeapi(&$node, $op, $teaser, $page) {
global $user, $base_url;
switch ($op) {
case 'load':
if ($node->type != 'gallery_assist' && variable_get('gallery_assist_' . $node->type, 0) == 1) {
$gallery = gallery_assist_load($node);
if (!isset($gallery->gid) && empty($gallery->ganame)) {
gallery_assist_insert($node);
$gallery = gallery_assist_load($node);
}
// Add Gallery Assist gallery data to the node object.
foreach ($gallery as $key => $addition) {
$node->{$key} = $addition;
}
}
break;
case 'update':
if ($node->type != 'gallery_assist' && variable_get('gallery_assist_' . $node->type, 0) == 1) {
$ui = variable_get('gallery_assist_ui_settings', array());
if (!isset($ui[$node->type]) || $ui[$node->type] == 0) {
gallery_assist_update($node);
}
}
break;
case 'view':
if (variable_get('gallery_assist_' . $node->type, 0) == 1 && count($node->gallconf) > 0) {
$display_extra = variable_get('gallery_assist_lightbox', 'none') == 'none' ? 'none' : 'lightbox';
if (gallery_assist_check_access($node) && gallery_assist_check_public_status($node, $user)) {
if ($teaser) {
if ($node->gallconf[$node->type]['hide_in_teaser'] != 1) {
$node->content['my_gallery_field'] = array(
'#value' => gallery_assist_include_display($node, 'teaser', $user, $display_extra),
'#weight' => $node->gallery_assist_weight,
);
}
}
if ($page) {
// Option to jump directly to the first image (cover) or a random image without to view the page.
if (count($node->gallitems) > 0 && $node->gallconf[$node->type]['gallery_call_type'] > 0) {
switch ($node->gallconf[$node->type]['gallery_call_type']) {
case 1:
$keys = array_keys($node->gallitems);
$image = array_shift($keys);
break;
case 2:
$keys = array_keys($node->gallitems);
shuffle($keys);
$image = array_shift($keys);
break;
}
drupal_goto('node/' . $node->nid . '/' . $image);
}
if ($node->gallconf[$node->type]['show_title'] && $node->gallconf[$node->type]['show_toggle']) {
if (empty($_GET['titles'])) {
$_GET['titles'] = $node->show_title == 1 ? 'on' : 'off';
}
$node->show_title = $_GET['titles'] == 'on' || empty($_GET['titles']) ? 1 : 0;
if ($node->show_title == 1) {
$toggle = t('Hide titles');
$toggle_value = 'off';
}
if ($node->show_title == 0) {
$toggle = t('Show titles');
$toggle_value = 'on';
}
if (count($node->gallitems) > 0 && $node->gallconf[$node->type]['show_toggle'] == 1 && $node->gallconf[$node->type]['show_layout'] == 'grid') {
$titles_toggle_link = l($toggle, 'node/' . $node->nid, array(
'query' => array(
'titles' => $toggle_value,
'page' => $_GET['page'],
),
));
if ($node->gallconf[$node->type]['position_toggle'] == 0) {
$position = $node->gallery_assist_weight - 1;
}
else {
$position = $node->gallery_assist_weight + 5;
}
$node->content['my_title_toggle'] = array(
'#value' => '<span>' . $titles_toggle_link . '<span>',
'#weight' => $position,
);
}
}
$node->content['my_gallery_field'] = array(
'#value' => gallery_assist_include_display($node, 'page', $user, $display_extra),
'#weight' => $node->gallery_assist_weight,
);
}
}
}
break;
case 'delete':
gallery_assist_delete($node);
// Send information to other modules when a image will be deleted.
$node_light = new \stdClass();
$node_light->nid = $node->nid;
$node_light->ref = $node->ref;
$node_light->nodetype = $node->type;
$count = db_result(db_query("SELECT count(*) FROM {gallery_assist} WHERE ref = %d", $node->ref));
if ($count == 1) {
foreach (module_implements('gallery_assist_api') as $name) {
$function = $name . '_gallery_assist_api';
$result = $function('delete', NULL, $node_light);
}
}
break;
}
}