You are here

function filedepot_displayFolderListing in filedepot 6

Same name and namespace in other branches
  1. 7 lib-ajaxserver.php \filedepot_displayFolderListing()
5 calls to filedepot_displayFolderListing()
filedepotAjaxServer_deleteCheckedFiles in ./lib-ajaxserver.php
filedepotAjaxServer_deleteFile in ./lib-ajaxserver.php
filedepotAjaxServer_getfilelisting in ./lib-ajaxserver.php
@file lib-ajaxserver.php Library functions for the ajax_server
filedepotAjaxServer_moveCheckedFiles in ./lib-ajaxserver.php
filedepot_dispatcher in ./ajaxserver.php
@file ajaxserver.php Implementation of filedepot_ajax() - main ajax handler for the module

File

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

Code

function filedepot_displayFolderListing($id = 0, $level = 0, $folderprefix = '', $rowid = 1) {
  $filedepot = filedepot_filedepot();
  $retval = '';
  if ($id > 0 and !in_array($id, $filedepot->allowableViewFolders)) {
    watchdog('filedepot', 'No view access to category @id', array(
      'id' => $id,
    ));
    return;
  }
  if (empty($folderprefix)) {
    $q1 = db_query("SELECT cid,pid,folderorder FROM {filedepot_categories} WHERE cid=%d", $id);
    $rec = db_fetch_object($q1);
    if ($rec->pid != 0) {
      $folderprefix = $rec->folderorder / 10;
      while ($rec->pid != 0) {
        $q2 = db_query("SELECT cid,pid,folderorder FROM {filedepot_categories} WHERE cid=%d", $rec->pid);
        $rec = db_fetch_object($q2);
        if ($rec->pid == 0) {
          break;
        }
        $folderprefix = $rec->folderorder / 10 . '.' . $folderprefix;
      }
    }
  }
  if (empty($folderprefix)) {
    $folderprefix = 0;
  }
  $level++;
  if ($level == 1) {
    $retval .= nexdocsrv_generateFileListing($id, $level, $folderprefix);
  }
  $sql = '';
  if (function_exists('filedepot_customReportFoldersSQL')) {
    $sql = trim(filedepot_customReportFoldersSQL($id, $reportmode));
  }
  if ($id > 0 or !empty($sql)) {

    // Show any subfolders and check and see if this is a custom report
    if (empty($sql)) {
      $sql = "SELECT DISTINCT cid,pid,name,description,folderorder,last_modified_date FROM {filedepot_categories} WHERE pid=%d ";
      if (!empty($filedepot->allowableViewFoldersSql)) {
        $sql .= "AND cid in ({$filedepot->allowableViewFoldersSql}) ";
      }
      $sql .= "ORDER BY folderorder";
    }
    $qfolders = db_query($sql, $id);
    $output = '';
    $i = $rowid;
    $maxfolderorder = db_result(db_query_range("SELECT folderorder FROM {filedepot_categories} WHERE pid=%d ORDER BY folderorder DESC", array(
      $id,
    ), 0, 1));
    while ($A = db_fetch_array($qfolders)) {
      if (empty($folderprefix)) {
        $formatted_foldernumber = $i;
      }
      else {
        $formatted_foldernumber = "{$folderprefix}.{$i}";
      }
      $subfolderlisting = nexdocsrv_generateFileListing($A['cid'], $level, $formatted_foldernumber);
      $subfolder_count = db_result(db_query("SELECT count(cid) FROM {filedepot_categories} WHERE pid=%d", $A['cid']));
      if ($subfolder_count > 0) {

        // Show any sub-subfolders - calling this function again recursively
        $subfolderlisting .= filedepot_displayFolderListing($A['cid'], $level, $formatted_foldernumber, $rowid);
      }
      $retval .= theme('filedepot_folderlisting', $A, $formatted_foldernumber, $level, $subfolderlisting, $maxfolderorder);
      $i++;
    }
    if (empty($output) and $level == 1) {
      $retval .= "<div id=\"subfolder{$GLOBALS['lastRenderedFiles'][0][0]}_rec{$GLOBALS['lastRenderedFiles'][0][1]}_bottom\">";
    }
  }
  return $retval;
}