You are here

function filedepot_displayFolderListing in filedepot 7

Same name and namespace in other branches
  1. 6 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

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

Code

function filedepot_displayFolderListing($id = 0, $level = 0, $folderprefix = '', $rowid = 1) {
  global $user;
  $filedepot = filedepot_filedepot();
  $file_first_display = variable_get('filedepot_displayorder_filesfirst', 1) == 1 ? TRUE : FALSE;
  $retval = '';
  if ($id > 0 and !in_array($id, $filedepot->allowableViewFolders)) {
    watchdog('filedepot', 'No view access to category @id', array(
      'id' => $id,
    ));
    return;
  }
  if ($id > 0) {
    $folderprefix = db_query("SELECT folderprefix FROM {filedepot_folderindex} WHERE cid=:cid AND uid=:uid", array(
      ':cid' => $id,
      ':uid' => $user->uid,
    ))
      ->fetchField();
  }
  else {
    $folderprefix = '';
  }
  $level++;
  if ($file_first_display == TRUE) {
    if ($level == 1) {
      $retval .= nexdocsrv_generateFileListing($id, $level, $folderprefix);
    }
  }
  $sql = '';
  if (function_exists('filedepot_customReportFoldersSQL')) {
    $reportmode = check_plain($_POST['reportmode']);
    $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
    $override_order = "ORDER BY " . (variable_get('filedepot_override_folderorder', 0) ? 'name ASC,' : '') . ' folderorder';
    $max_orderby = "ORDER BY " . (variable_get('filedepot_override_folderorder', 0) ? 'name DESC,' : '') . ' folderorder DESC';
    if (empty($sql)) {
      $sql = "SELECT DISTINCT cid,pid,name,description,folderorder,last_modified_date FROM {filedepot_categories} WHERE pid=:pid ";
      if (!empty($filedepot->allowableViewFoldersSql)) {
        $sql .= "AND cid in ({$filedepot->allowableViewFoldersSql}) ";
      }
      $sql .= $override_order;
    }
    $qfolders = db_query($sql, array(
      ':pid' => $id,
    ));
    $output = '';
    $i = $rowid;
    $maxfolderorder = db_query_range("SELECT folderorder FROM {filedepot_categories} WHERE pid=:pid " . $max_orderby, 0, 1, array(
      ':pid' => $id,
    ))
      ->fetchField();
    while ($A = $qfolders
      ->fetchAssoc()) {
      $subfolderlisting = '';
      if (empty($folderprefix)) {
        $formatted_foldernumber = $i;
      }
      else {
        $formatted_foldernumber = "{$folderprefix}.{$i}";
      }
      $subfolder_count = db_query("SELECT count(cid) FROM {filedepot_categories} WHERE pid=:pid", array(
        ':pid' => $A['cid'],
      ))
        ->fetchField();
      $tmpsubfolderlisting = '';
      if ($subfolder_count > 0) {

        // Show any sub-subfolders - calling this function again recursively
        $tmpsubfolderlisting = filedepot_displayFolderListing($A['cid'], $level, $formatted_foldernumber, $rowid);
      }
      $tmpfilelisting = nexdocsrv_generateFileListing($A['cid'], $level, $formatted_foldernumber);
      if ($file_first_display == TRUE) {
        $subfolderlisting .= $tmpfilelisting;
        $subfolderlisting .= $tmpsubfolderlisting;
      }
      else {
        $subfolderlisting .= $tmpsubfolderlisting;
        $subfolderlisting .= $tmpfilelisting;
      }
      $retval .= theme('filedepot_folderlisting', array(
        'folderrec' => $A,
        'folderprefix' => $formatted_foldernumber,
        'level' => $level,
        'subfoldercontent' => $subfolderlisting,
        'maxorder' => $maxfolderorder,
      ));
      $i++;
    }
    if (empty($output) and $level == 1) {
      if (isset($filedepot->lastRenderedFiles[0][0])) {
        $retval .= "<div id=\"subfolder{$filedepot->lastRenderedFiles[0][0]}_rec{$filedepot->lastRenderedFiles[0][1]}_bottom\">";
      }
    }
  }
  if ($file_first_display == FALSE) {
    if ($level == 1) {
      $retval .= nexdocsrv_generateFileListing($id, $level - 1, $folderprefix);
    }
  }
  return $retval;
}