You are here

function filedepotAjaxServer_getfilelisting in filedepot 7

Same name and namespace in other branches
  1. 6 lib-ajaxserver.php \filedepotAjaxServer_getfilelisting()

@file lib-ajaxserver.php Library functions for the ajax_server

1 call to filedepotAjaxServer_getfilelisting()
filedepot_dispatcher in ./ajaxserver.php

File

./lib-ajaxserver.php, line 9
lib-ajaxserver.php Library functions for the ajax_server

Code

function filedepotAjaxServer_getfilelisting() {
  global $user;
  $filedepot = filedepot_filedepot();
  if (empty($filedepot->activeview)) {
    $filedepot->ajaxBackgroundMode = TRUE;
  }
  elseif ($filedepot->cid == 0 and !in_array($filedepot->activeview, $filedepot->validReportingModes)) {
    $filedepot->activeview = 'latestfiles';
    $filedepot->ajaxBackgroundMode = FALSE;
  }
  if (db_query("SELECT COUNT(*) FROM {filedepot_categories} WHERE cid=:cid", array(
    ':cid' => $filedepot->cid,
  ))
    ->fetchField() == 0) {
    $filedepot->cid = 0;
  }
  if ($filedepot->activeview == 'notifications') {
    $data['cid'] = $filedepot->cid;
    $data['retcode'] = 200;
    $data['cid'] = $filedepot->cid;
    $data['activefolder'] = theme('filedepot_activefolder');
    $data['displayhtml'] = theme('filedepot_notifications');
    $data['header'] = theme('filedepot_header');
    $data['moreactions'] = filedepotAjaxServer_getMoreActions($filedepot->activeview);
  }
  elseif ($filedepot->cid > 0 and $filedepot
    ->checkPermission($filedepot->cid, 'view')) {
    $data['retcode'] = 200;
    $data['cid'] = $filedepot->cid;
    $foldercount = db_query("SELECT count(cid) FROM {filedepot_categories} WHERE cid=:cid", array(
      ':cid' => $filedepot->cid,
    ))
      ->fetchField();
    if (user_is_logged_in() and $filedepot->cid > 0 and $foldercount == 1) {
      $pid = db_query("SELECT pid FROM {filedepot_categories} WHERE cid=:cid", array(
        ':cid' => $filedepot->cid,
      ))
        ->fetchField();
      if ($pid > 0) {
        $count1 = db_query("SELECT count(cid) FROM {filedepot_recentfolders} WHERE uid=:uid", array(
          ':uid' => $user->uid,
        ))
          ->fetchField();
        if ($count1 > 4) {

          // Note DELETE not allowed in db_query_range - PDO issue with Postgres support
          $oldest = db_query_range("SELECT id FROM {filedepot_recentfolders} WHERE uid=:uid ORDER BY id ASC", 0, 1, array(
            ':uid' => $user->uid,
          ))
            ->fetchField();
          db_query("DELETE FROM {filedepot_recentfolders} WHERE id=:id ", array(
            ':id' => $oldest,
          ));
        }
        $count2 = db_query("SELECT count(cid) FROM {filedepot_recentfolders} WHERE uid=:uid AND cid=:cid", array(
          ':uid' => $user->uid,
          ':cid' => $filedepot->cid,
        ))
          ->fetchField();
        if ($count2 == 0) {
          db_query("INSERT INTO {filedepot_recentfolders} (uid,cid) VALUES (:uid,:cid)", array(
            ':uid' => $user->uid,
            ':cid' => $filedepot->cid,
          ));
        }
      }
    }
    $data['displayhtml'] = filedepot_displayFolderListing($filedepot->cid);
    if (is_array($filedepot->lastRenderedFiles) and count($filedepot->lastRenderedFiles) > 0) {
      $data['lastrenderedfiles'] = json_encode($filedepot->lastRenderedFiles);
    }
    firelogmsg("Completed generating FileListing");
    $data['activefolder'] = theme('filedepot_activefolder', array(
      'token' => drupal_get_token(FILEDEPOT_TOKEN_FOLDERMGMT),
    ));
    $data['moreactions'] = filedepotAjaxServer_getMoreActions($filedepot->activeview);
    $data['header'] = theme('filedepot_header', array(
      'token' => drupal_get_token(FILEDEPOT_TOKEN_LISTING),
    ));
  }
  elseif ($filedepot->cid == 0) {
    $data['retcode'] = 200;
    $data['cid'] = $filedepot->cid;
    $data['displayhtml'] = filedepot_displayFolderListing($filedepot->cid);
    $data['activefolder'] = theme('filedepot_activefolder', array(
      'token' => drupal_get_token(FILEDEPOT_TOKEN_FOLDERMGMT),
    ));
    $data['moreactions'] = filedepotAjaxServer_getMoreActions($filedepot->activeview);
    $data['header'] = theme('filedepot_header', array(
      'token' => drupal_get_token(FILEDEPOT_TOKEN_LISTING),
    ));
  }
  else {
    $data['retcode'] = 401;
    $data['error'] = 'Error: No Access to Folder';
    db_query("DELETE FROM {filedepot_recentfolders} WHERE uid=:uid AND cid=:cid ", array(
      ':uid' => $user->uid,
      ':cid' => $filedepot->cid,
    ));
  }

  //firelogmsg("Completed generating Header return data");
  return $data;
}