You are here

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