PageRenderTime 54ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/app/webroot/js/ckfinder/core/connector/php/php4/CommandHandler/GetFiles.php

https://bitbucket.org/webpolis/liiv
PHP | 128 lines | 75 code | 13 blank | 40 comment | 25 complexity | 205f5de67af9b9bbae8e33276cdb173c MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. <?php
  2. /*
  3. * CKFinder
  4. * ========
  5. * http://ckfinder.com
  6. * Copyright (C) 2007-2009, CKSource - Frederico Knabben. All rights reserved.
  7. *
  8. * The software, this file and its contents are subject to the CKFinder
  9. * License. Please read the license.txt file before using, installing, copying,
  10. * modifying or distribute this file or part of its contents. The contents of
  11. * this file is part of the Source Code of CKFinder.
  12. */
  13. /**
  14. * @package CKFinder
  15. * @subpackage CommandHandlers
  16. * @copyright CKSource - Frederico Knabben
  17. */
  18. /**
  19. * Include base XML command handler
  20. */
  21. require_once CKFINDER_CONNECTOR_LIB_DIR . "/CommandHandler/XmlCommandHandlerBase.php";
  22. /**
  23. * Handle GetFiles command
  24. *
  25. * @package CKFinder
  26. * @subpackage CommandHandlers
  27. * @copyright CKSource - Frederico Knabben
  28. */
  29. class CKFinder_Connector_CommandHandler_GetFiles extends CKFinder_Connector_CommandHandler_XmlCommandHandlerBase
  30. {
  31. /**
  32. * Command name
  33. *
  34. * @access private
  35. * @var string
  36. */
  37. var $command = "GetFiles";
  38. /**
  39. * build XML
  40. * @access protected
  41. *
  42. */
  43. function buildXml()
  44. {
  45. $_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");
  46. if (!$this->_currentFolder->checkAcl(CKFINDER_CONNECTOR_ACL_FILE_VIEW)) {
  47. $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_UNAUTHORIZED);
  48. }
  49. // Map the virtual path to the local server path.
  50. $_sServerDir = $this->_currentFolder->getServerPath();
  51. // Create the "Files" node.
  52. $oFilesNode = new Ckfinder_Connector_Utils_XmlNode("Files");
  53. $this->_connectorNode->addChild($oFilesNode);
  54. if (!is_dir($_sServerDir)) {
  55. $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_FOLDER_NOT_FOUND);
  56. }
  57. $files = array();
  58. $thumbFiles = array();
  59. if ($dh = @opendir($_sServerDir)) {
  60. while (($file = readdir($dh)) !== false) {
  61. if ($file != "." && $file != ".." && !is_dir($_sServerDir . $file)) {
  62. $files[] = $file;
  63. }
  64. }
  65. closedir($dh);
  66. } else {
  67. $this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
  68. }
  69. $resourceTypeInfo = $this->_currentFolder->getResourceTypeConfig();
  70. if (sizeof($files)>0) {
  71. $_thumbnailsConfig = $_config->getThumbnailsConfig();
  72. $_thumbServerPath = '';
  73. $_showThumbs = (!empty($_GET['showThumbs']) && $_GET['showThumbs'] == 1);
  74. if ($_thumbnailsConfig->getIsEnabled() && ($_thumbnailsConfig->getDirectAccess() || $_showThumbs)) {
  75. $_thumbServerPath = $this->_currentFolder->getThumbsServerPath();
  76. }
  77. natcasesort($files);
  78. $i=0;
  79. foreach ($files as $file) {
  80. $filemtime = @filemtime($_sServerDir . $file);
  81. //otherwise file doesn't exist or we can't get it's filename properly
  82. if ($filemtime !== false) {
  83. $filename = CKFinder_Connector_Utils_Misc::mbBasename($file);
  84. if (!$resourceTypeInfo->checkExtension($filename, false)) {
  85. continue;
  86. }
  87. if ($resourceTypeInfo->checkIsHiddenFile($filename)) {
  88. continue;
  89. }
  90. $oFileNode[$i] = new Ckfinder_Connector_Utils_XmlNode("File");
  91. $oFilesNode->addChild($oFileNode[$i]);
  92. $oFileNode[$i]->addAttribute("name", CKFinder_Connector_Utils_FileSystem::convertToConnectorEncoding(CKFinder_Connector_Utils_Misc::mbBasename($file)));
  93. $oFileNode[$i]->addAttribute("date", date("YmdHi", $filemtime));
  94. if (!empty($_thumbServerPath) && preg_match(CKFINDER_REGEX_IMAGES_EXT, $filename)) {
  95. if (file_exists($_thumbServerPath . $filename)) {
  96. $oFileNode[$i]->addAttribute("thumb", $filename);
  97. }
  98. elseif ($_showThumbs) {
  99. $oFileNode[$i]->addAttribute("thumb", "?" . $filename);
  100. }
  101. }
  102. $size = filesize($_sServerDir . $file);
  103. if ($size && $size<1024) {
  104. $size = 1;
  105. }
  106. else {
  107. $size = (int)round($size / 1024);
  108. }
  109. $oFileNode[$i]->addAttribute("size", $size);
  110. $i++;
  111. }
  112. }
  113. }
  114. }
  115. }