You are here

function imagepicker_browse_admin_form in Image Picker 7

Same name and namespace in other branches
  1. 6.2 imagepicker.functions.inc \imagepicker_browse_admin_form()
1 string reference to 'imagepicker_browse_admin_form'
_imagepicker_browse_admin in ./imagepicker.functions.inc

File

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

Code

function imagepicker_browse_admin_form($form, &$form_state, $src = "iframe", $account = FALSE, $public = FALSE, $range = 1) {
  if ($account) {
    $user = $account;
  }
  else {
    global $user;
  }

  // paths
  if ($src == 'iframe') {
    $path = '';
    $editpath = "imagepicker/edit/";
    $deletepath = "imagepicker/delete/";
    $imgpath = 'imagepicker/browse/';
  }
  elseif ($src == 'admin') {
    $path = IMAGEPICKER_ADMIN_PATH;
    $editpath = IMAGEPICKER_ADMIN_PATH . '/images/user/' . $user->uid . '/edit/';
    $deletepath = IMAGEPICKER_ADMIN_PATH . '/images/user/' . $user->uid . '/delete/';
    $imgpath = IMAGEPICKER_ADMIN_PATH . '/images/user/' . $user->uid . '/browse/';
    $returnpath = 'a-' . $user->uid;
  }
  else {
    $path = 'user/' . $user->uid . '/imagepicker';
    $editpath = 'user/' . $user->uid . '/imagepicker/images/edit/';
    $deletepath = 'user/' . $user->uid . '/imagepicker/images/delete/';
    $imgpath = 'user/' . $user->uid . '/imagepicker/images/browse/';
    $returnpath = 'u-' . $user->uid;
  }

  // if there are groups
  if (imagepicker_variable_get('imagepicker_groups_enabled', 1)) {
    $gid = 0;
    if (!$public) {
      if (_imagepicker_has_groups($src == 'admin' ? $user : FALSE) && imagepicker_has_grouplist($src == 'admin' ? $user : FALSE)) {
        $gids = imagepicker_get_user_group_state(1, $src == 'admin' ? $user : FALSE);
        $gid = $gids[0];
        if ($account) {
          $gid = imagepicker_variable_get('imagepicker_currentgroup', 0);
        }
      }
    }
    elseif ($src == 'admin' && _imagepicker_has_public_groups($user, TRUE)) {
      $gid = imagepicker_variable_get('imagepicker_public_currentgroup', 0);
    }
  }

  // table header
  if ($public && $src == 'admin') {
    $header = array(
      'img_name' => array(
        'data' => t('Name'),
        'field' => 'i.img_name',
        'sort' => 'desc',
      ),
      'img_title' => array(
        'data' => t('Title'),
        'field' => 'i.img_title',
      ),
      'img_desc' => t('Description'),
      'img_list' => array(
        'data' => t('User'),
        'field' => 'n.name',
      ),
      'img_date' => array(
        'data' => t('Date'),
        'field' => 'i.img_date',
      ),
      'img_actions' => array(
        'data' => t('Actions'),
      ),
    );
    $cols = 7;
  }
  else {
    $header = array(
      'img_name' => array(
        'data' => t('Name'),
        'field' => 'i.img_name',
        'sort' => 'desc',
      ),
      'img_title' => array(
        'data' => t('Title'),
        'field' => 'i.img_title',
      ),
      'img_desc' => t('Description'),
      'img_date' => array(
        'data' => t('Date'),
        'field' => 'i.img_date',
      ),
      'img_actions' => array(
        'data' => t('Actions'),
      ),
    );
    $cols = 6;
  }
  $use_icons = imagepicker_variable_get('imagepicker_use_icons', 1);
  if ($src == 'admin') {
    $max = imagepicker_variable_get('imagepicker_rows_per_page', 25);
    $searchs = imagepicker_variable_get('imagepicker_browser_search', '');
  }
  else {
    $max = imagepicker_variable_get('imagepicker_rows_per_page', imagepicker_variable_get('imagepicker_rows_per_page', 25), $user->uid);
    $searchs = imagepicker_variable_get('imagepicker_browser_search', '', $user->uid);
  }
  if ($searchs) {
    $searchs = trim($searchs);
    $searchs = check_plain($searchs);
  }
  if ($public && $src == 'admin') {
    if ($range == 1 || $range == 2) {
      $publicstate = $range == 1 ? 1 : 0;
      $query = db_select('users', 'u')
        ->extend('PagerDefault')
        ->limit($max)
        ->extend('TableSort')
        ->orderByHeader($header);
      $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')
        ->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)
        ->extend('TableSort')
        ->orderByHeader($header);
      $query
        ->fields('i', array(
        'img_id',
        'uid',
        'img_name',
        'img_title',
        'img_description',
        'img_date',
      ));
      $query
        ->join('users', 'u', 'i.uid = u.uid');
      $query
        ->addField('u', 'name');
      $query
        ->condition('u.status', 1);
    }
  }
  else {

    // filter by selected group
    if ($gid) {
      $query = db_select('imagepicker', 'i')
        ->extend('PagerDefault')
        ->limit($max)
        ->extend('TableSort')
        ->orderByHeader($header);
      $query
        ->fields('i', array(
        'img_id',
        'uid',
        'img_name',
        'img_title',
        'img_description',
        'img_date',
      ));
      $query
        ->addField('u', 'name');
      $query
        ->join('imagepicker_group_images', 'g', 'i.img_id = g.img_id');
      $query
        ->join('users', 'u', 'i.uid = u.uid');
      $query
        ->condition('u.uid', $user->uid)
        ->condition('u.status', 1)
        ->condition('gid', $gid);
    }
    else {
      $query = db_select('imagepicker', 'i')
        ->extend('PagerDefault')
        ->limit($max)
        ->extend('TableSort')
        ->orderByHeader($header);
      $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.uid', $user->uid)
        ->condition('u.status', 1);
    }
  }

  // do search
  $searchsql = '';
  if ($searchs) {
    $searchsql = _imagepicker_search_opts($searchs, $account);
  }
  if (is_array($searchsql)) {
    $query
      ->condition($searchsql[0], $searchsql[1], $searchsql[2]);
  }
  elseif (is_object($searchsql)) {
    $query
      ->condition($searchsql);
  }
  $records = $query
    ->execute();

  // bulk ops form
  $form['options'] = array(
    '#type' => 'fieldset',
    '#title' => t('Bulk operations'),
  );
  if ($src == 'admin' && !$account) {
    $op_opts = array(
      'delete' => t('Delete'),
    );
  }
  else {
    $op_opts = array(
      'delete' => t('Delete'),
      'groups' => t('Groups'),
    );
  }
  $form['options']['operation'] = array(
    '#type' => 'select',
    '#options' => $op_opts,
    '#default_value' => 'delete',
  );
  $form['options']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Update'),
  );
  $form['options']['src'] = array(
    '#type' => 'value',
    '#value' => $src,
  );
  $form['options']['public'] = array(
    '#type' => 'value',
    '#value' => $public,
  );
  $form['options']['path'] = array(
    '#type' => 'value',
    '#value' => $path,
  );
  $fmt = imagepicker_variable_get('imagepicker_dateformat_default', 'medium');
  $rowct = 0;
  $options = array();

  // iterate
  foreach ($records as $row) {
    $img_name = $row->img_name;
    $img_id = $row->img_id;
    $description = $row->img_description;
    $img_date = format_date($row->img_date, $fmt);
    if (drupal_strlen($description) > IMAGEPICKER_DESC_LEN) {
      $description = drupal_substr($description, 0, IMAGEPICKER_DESC_LEN) . '...';
    }
    if ($public && $src == 'admin') {
      $editpath = $path . '/images/user/' . $row->uid . '/edit/';
      $deletepath = $path . '/images/user/' . $row->uid . '/delete/';
      $imgpath = $path . '/images/user/' . $row->uid . '/browse/';
      $listpath = $path . '/images/user/' . $row->uid . '/browseadmin';
      $returnpath = 'a';
      $editlink = $use_icons ? _imagepicker_get_icon('edit', $editpath . $img_id, array(
        'title' => t('Edit'),
      )) : l(t('Edit'), $editpath . $img_id);
      $deletelink = $use_icons ? _imagepicker_get_icon('delete', $deletepath . $img_id, array(
        'title' => t('Delete'),
      )) : l(t('Delete'), $deletepath . $img_id);
      $imglink = l($img_name, $imgpath . $img_id);
      $listlink = l($row->name, $listpath);
      $options[$img_id] = array(
        'img_name' => $imglink,
        'img_title' => $row->img_title,
        'img_desc' => $description,
        'img_list' => $listlink,
        'img_date' => $img_date,
        'img_actions' => "{$editlink} {$deletelink}",
      );
      $cols = 7;
    }
    else {
      $imglink = l($img_name, $imgpath . $img_id);
      $editlink = $use_icons ? _imagepicker_get_icon('edit', $editpath . $img_id, array(
        'title' => t('Edit'),
      )) : l(t('Edit'), $editpath . $img_id);
      $deletelink = $use_icons ? _imagepicker_get_icon('delete', $deletepath . $img_id, array(
        'title' => t('Delete'),
      )) : l(t('Delete'), $deletepath . $img_id);
      $options[$img_id] = array(
        'img_name' => $imglink,
        'img_title' => $row->img_title,
        'img_desc' => $description,
        'img_date' => $img_date,
        'img_actions' => "{$editlink} {$deletelink}",
      );
      $cols = 6;
    }
    $rowct++;
  }

  // end of foreach loop
  $form['options']['cols'] = array(
    '#type' => 'value',
    '#value' => $cols,
  );
  $form['options']['returnpath'] = array(
    '#type' => 'value',
    '#value' => $returnpath,
  );
  $message = '';
  if ($rowct == 0) {
    $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,
      ));
    }
  }

  // tableselect
  $form['images'] = array(
    '#type' => 'tableselect',
    '#header' => $header,
    '#options' => $options,
    '#empty' => $message,
  );
  $form['pager'] = array(
    '#markup' => theme('pager', array(
      'tags' => NULL,
    )),
  );
  return $form;
}