PageRenderTime 57ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/core/model/modx/processors/browser/directory/chmod.php

https://github.com/MartinGoeg/revolution
PHP | 50 lines | 31 code | 7 blank | 12 comment | 12 complexity | cd9ddc08ca9d52df9595b5e6f3389bf2 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0, AGPL-1.0, LGPL-2.1, GPL-2.0
  1. <?php
  2. /**
  3. * Chmod a directory
  4. *
  5. * @param string $mode The mode to chmod to
  6. * @param string $dir The absolute path of the dir
  7. * @param boolean $prependPath (optional) If true, will prepend rb_base_dir to
  8. * the final path
  9. * @package modx
  10. * @subpackage processors.browser.directory
  11. */
  12. if (!$modx->hasPermission('directory_chmod')) return $modx->error->failure($modx->lexicon('permission_denied'));
  13. $modx->lexicon->load('file');
  14. if (empty($scriptProperties['mode'])) return $modx->error->failure($modx->lexicon('file_err_chmod_ns'));
  15. if (empty($scriptProperties['dir'])) return $modx->error->failure($modx->lexicon('file_folder_err_ns'));
  16. /* get working context */
  17. $wctx = isset($scriptProperties['wctx']) && !empty($scriptProperties['wctx']) ? $scriptProperties['wctx'] : '';
  18. if (!empty($wctx)) {
  19. $workingContext = $modx->getContext($wctx);
  20. if (!$workingContext) {
  21. return $modx->error->failure($modx->error->failure($modx->lexicon('permission_denied')));
  22. }
  23. } else {
  24. $workingContext =& $modx->context;
  25. }
  26. $modx->getService('fileHandler','modFileHandler', '', array('context' => $workingContext->get('key')));
  27. /* get base paths and sanitize incoming paths */
  28. $root = $modx->fileHandler->getBasePath(false);
  29. $directoryPath = $modx->fileHandler->sanitizePath($scriptProperties['dir']);
  30. $directoryPath = $modx->fileHandler->postfixSlash($directoryPath);
  31. $directoryPath = $root.$directoryPath;
  32. if (!is_dir($directoryPath)) return $modx->error->failure($modx->lexicon('file_folder_err_invalid'));
  33. $directory = $modx->fileHandler->make($directoryPath);
  34. if (!($directory instanceof modDirectory)) return $modx->error->failure($modx->lexicon('file_folder_err_invalid'));
  35. if (!$directory->isReadable() || !$directory->isWritable()) {
  36. return $modx->error->failure($modx->lexicon('file_folder_err_perms'));
  37. }
  38. $octalPerms = $scriptProperties['mode'];
  39. if (!$directory->chmod($octalPerms)) {
  40. return $modx->error->failure($modx->lexicon('file_err_chmod'));
  41. }
  42. $modx->logManagerAction('directory_chmod','',$directoryPath);
  43. return $modx->error->success();