You are here

function nexdocsrv_generateFileListing in filedepot 7

Same name and namespace in other branches
  1. 6 lib-ajaxserver.php \nexdocsrv_generateFileListing()
2 calls to nexdocsrv_generateFileListing()
filedepot_dispatcher in ./ajaxserver.php
filedepot_displayFolderListing in ./lib-ajaxserver.php

File

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

Code

function nexdocsrv_generateFileListing($cid, $level = 1, $folderprefix = '') {
  global $user;
  $filedepot = filedepot_filedepot();
  $filedepot->selectedTopLevelFolder = $cid;
  $files = array();
  $limit_start = 0;
  $limit_end = FALSE;
  $sql = filedepot_getFileListingSQL($cid, $limit_start, $limit_end);
  if ($limit_end === FALSE) {
    $file_query = db_query($sql);
  }
  else {
    $file_query = db_query_range($sql, $limit_start, $limit_end);
  }
  $output = '';
  $break = FALSE;
  if (empty($folderprefix)) {
    $folderprefix = db_query("SELECT folderprefix FROM {filedepot_folderindex} WHERE cid=:cid AND uid=:uid", array(
      ':cid' => $cid,
      ':uid' => $user->uid,
    ))
      ->fetchField();
  }

  // Adjust variable used to count displayed files during this pass as well as to create the displayed file index.
  $i = 0;
  if ($filedepot->activeview == 'getmoredata') {
    $i = $filedepot->recordCountPass1;
  }
  elseif ($filedepot->activeview == 'getmorefolderdata') {
    $i = $filedepot->recordCountPass2 + $filedepot->recordCountPass1;
  }
  while ($A = $file_query
    ->fetchAssoc()) {
    if ($filedepot->activeview == 'approvals') {
      $A['fid'] = $A['id'];
    }
    if (empty($fid) or empty($files) or !in_array($fid, $files)) {
      $i++;

      // Existing folders where fileorder has not yet been set
      if ($filedepot->activeview != 'latestfiles' and $A['fileorder'] != $i * 10) {
        $A['fileorder'] = $i * 10;
        db_query("UPDATE {filedepot_files} set fileorder=:order WHERE fid=:fid", array(
          ':order' => $A['fileorder'],
          ':fid' => $A['fid'],
        ));
      }
      $more_records_message = '';
      if ($filedepot->ajaxBackgroundMode == TRUE and $i >= $filedepot->recordCountPass1) {
        $break = TRUE;
        $filedepot->lastRenderedFiles[] = array(
          $cid,
          $A['fid'],
          $folderprefix,
          $level,
        );
        $more_records_message = 'moredata_msg';
      }
      elseif ($filedepot->activeview == 'getmoredata' and $i >= $filedepot->recordCountPass1 + $filedepot->recordCountPass2) {
        $break = TRUE;

        // Check if there are more records - the SQL LIMIT statement allowed for one more record
        // If there are more - show the AJAX link to load more data - pass 2
        if ($file_query
          ->fetchAssoc()) {
          $more_records_message = 'loadfolder_msg';
        }
      }
      if ($break) {
        $output .= theme('filedepot_filelisting', array(
          'listingrec' => $A,
          'foldernumber' => $folderprefix,
          'level' => $level,
          'morerecords' => $more_records_message,
        ));
        break;
      }
      else {
        $output .= theme('filedepot_filelisting', array(
          'listingrec' => $A,
          'foldernumber' => $folderprefix,
          'level' => $level,
        ));
        $files[] = $A['fid'];
      }
    }
  }
  return $output;
}