You are here

function _imagepicker_browse_public in Image Picker 7

Same name and namespace in other branches
  1. 5.2 imagepicker.module \_imagepicker_browse_public()
  2. 6.2 imagepicker.functions.inc \_imagepicker_browse_public()
3 calls to _imagepicker_browse_public()
imagepicker_admin_images in ./imagepicker.admin.inc
imagepicker_browse_public in ./imagepicker.functions.inc
imagepicker_user_browse_public in ./imagepicker.user.inc

File

./imagepicker.functions.inc, line 978
@author Bob Hutchinson http://drupal.org/user/52366 @copyright GNU GPL

Code

function _imagepicker_browse_public($src = "iframe", $range = 1, $label = "") {
  global $user;

  // if there are groups
  $gid = 0;
  if (_imagepicker_has_public_groups($user, $src == 'admin' ? TRUE : FALSE)) {
    if ($src == 'admin') {
      $gid = imagepicker_variable_get('imagepicker_public_currentgroup', 0);
    }
    else {

      // get the current users setting
      $gid = imagepicker_variable_get('imagepicker_public_currentgroup', 0, $user->uid);
    }
  }
  $max = imagepicker_variable_get('imagepicker_advanced_browser_page', imagepicker_variable_get('imagepicker_advanced_browser_page', 25), $user->uid);
  $default_order = imagepicker_variable_get('imagepicker_default_browser_order', imagepicker_variable_get('imagepicker_default_browser_order', 'img_id DESC'), $user->uid);
  $order = imagepicker_variable_get('imagepicker_browser_order', $default_order, $user->uid);
  if ($src == 'admin') {
    $searchs = imagepicker_variable_get('imagepicker_browser_search', '');
  }
  else {
    $searchs = imagepicker_variable_get('imagepicker_browser_search', '', $user->uid);
  }
  if ($searchs) {
    $searchs = trim($searchs);
    $searchs = check_plain($searchs);
  }
  $sarr = '';

  // Build sql for public with role restriction matching
  $rarr = array();
  $rolesql = '';
  $rolesarr = array();
  if ($range == 1 || $range == 2) {
    $publicstate = $range == 1 ? 1 : 0;
    $query = db_select('users', 'u')
      ->extend('PagerDefault')
      ->limit($max);
    $query
      ->fields('i', array(
      'img_id',
      'uid',
      'img_name',
      'img_title',
      'img_description',
      'img_date',
    ));
    $query
      ->addField('u', 'name');
    $query
      ->join('imagepicker', 'i');
    $query
      ->leftjoin('imagepicker_group_images', 'g', 'g.img_id = i.img_id');
    $query
      ->leftjoin('imagepicker_user_groups', 'iug', 'iug.gid = g.gid');
    $query
      ->condition('u.uid', 'iug.uid');
    $query
      ->condition('iug.public', $publicstate);
    if ($gid && $publicstate) {
      $query
        ->condition('iug.gid', $gid);
    }
    if ($range == 1) {
      $label = t('List All Public Images');
    }
    else {
      $label = t('List All Private Images');
    }
  }
  else {
    $query = db_select('imagepicker', 'i')
      ->extend('PagerDefault')
      ->limit($max);
    $query
      ->fields('i', array(
      'img_id',
      'uid',
      'img_name',
      'img_title',
      'img_description',
      'img_date',
    ));
    $query
      ->addField('u', 'name');
    $query
      ->join('users', 'u', 'i.uid = u.uid');
    $query
      ->condition('u.status', 1);
  }

  // search
  $searchsql = '';
  if ($searchs) {
    $searchsql = _imagepicker_search_opts($searchs, $src == 'admin' ? TRUE : FALSE);
  }
  if (is_array($searchsql)) {
    $query
      ->condition($searchsql[0], $searchsql[1], $searchsql[2]);
  }
  elseif (is_object($searchsql)) {
    $query
      ->condition($searchsql);
  }

  // roles
  $rolesql = '';
  if ($range == 1 && imagepicker_variable_get('imagepicker_publicroles_enabled', 1) && $src != 'admin') {
    $roles = $user->roles;
    if (count($roles)) {
      $ct = 0;
      foreach ($roles as $role) {
        $role = '%' . db_like($role) . '%';
        if (!$ct) {

          // first time
          $rolesql = db_or()
            ->condition('iug.avail_roles', 'all', '=')
            ->condition('iug.avail_roles', $role, 'LIKE');
        }
        else {
          $rolesql
            ->condition('iug.avail_roles', $role, 'LIKE');
        }
        $ct++;
      }
    }
  }
  if (is_object($rolesql)) {
    $query
      ->condition($rolesql);
  }
  $a = explode(' ', $order);
  $query
    ->orderBy($a[0], isset($a[1]) ? $a[1] : 'DESC');
  $records = $query
    ->execute();
  $content = _imagepicker_thumbs_getrows($records, TRUE, $src);
  $message = "";
  if (!is_array($content)) {
    $ibp = imagepicker_variable_get('imagepicker_browse_public', 0);
    if ($ibp == 1 || $range == 1) {
      $ibpout = "public";
    }
    elseif ($ibp == 2 || $range == 2) {
      $ibpout = "private";
    }
    else {
      $ibpout = "";
    }
    imagepicker_variable_set('imagepicker_browse_public', 0);
    if ($searchs) {
      $message = t('Your search for %searchs found nothing', array(
        '%searchs' => $searchs,
      ));
      if ($src == 'admin') {
        imagepicker_browse_search_form_reset_func(TRUE);
      }
      else {
        imagepicker_browse_search_form_reset_func(FALSE);
      }
    }
    else {
      $message = t('There are no !status images', array(
        '!status' => $ibpout,
      ));
    }
  }
  $forms = array();
  if (imagepicker_variable_get('imagepicker_show_browse_order_form', 1, $user->uid)) {
    $forms['browse_order'] = drupal_get_form('imagepicker_browse_order_form');
  }
  elseif (imagepicker_variable_get('imagepicker_show_browse_order_form', 1)) {
    $forms['browse_order'] = drupal_get_form('imagepicker_browse_order_form');
  }
  if ($src == 'admin' && imagepicker_variable_get('imagepicker_groups_enabled', 1)) {
    $forms['browse_public'] = drupal_get_form('imagepicker_browse_public_form');
  }
  if (imagepicker_variable_get('imagepicker_groups_enabled', 1) && _imagepicker_has_public_groups($user, $src == 'admin' ? TRUE : FALSE)) {

    // add groups select here
    $forms['browse_public_groups'] = drupal_get_form('imagepicker_browse_public_groups_form', $user, $src == 'admin' ? TRUE : FALSE);
  }

  // search form
  if ($src == 'admin') {
    if (imagepicker_variable_get('imagepicker_show_browse_search_form', 1)) {
      $forms['browse_search'] = drupal_get_form('imagepicker_browse_search_form', $user, TRUE);
    }
  }
  elseif (imagepicker_variable_get('imagepicker_show_browse_search_form', imagepicker_variable_get('imagepicker_show_browse_search_form', 1), $user->uid)) {
    $forms['browse_search'] = drupal_get_form('imagepicker_browse_search_form', $user, FALSE);
  }
  if ($src == "account" || $src == 'admin') {
    $help = t('Hold the mouse over an image to view Name, Title and Description, Click on it to view.');
  }
  else {
    $help = t('Hold the mouse over an image to view Name, Title and Description, Click on it to use.');
  }
  return theme('imagepicker_browser', array(
    'content' => $content,
    'forms' => $forms,
    'message' => $message,
    'help' => $help,
    'label' => $label,
  ));
}