/core/model/modx/processors/browser/directory/chmod.class.php
PHP | 78 lines | 47 code | 7 blank | 24 comment | 6 complexity | aed195ec5cf33e88a2531a8171a0ff2b MD5 | raw file
Possible License(s): GPL-2.0, Apache-2.0, BSD-3-Clause, LGPL-2.1
- <?php
- /*
- * This file is part of MODX Revolution.
- *
- * Copyright (c) MODX, LLC. All Rights Reserved.
- *
- * For complete copyright and license information, see the COPYRIGHT and LICENSE
- * files found in the top-level directory of this distribution.
- */
- /**
- * Chmod a directory
- *
- * @param string $mode The mode to chmod to
- * @param string $dir The absolute path of the dir
- * @param boolean $prependPath (optional) If true, will prepend rb_base_dir to
- * the final path
- *
- * @package modx
- * @subpackage processors.browser.directory
- */
- class modBrowserFolderChmodProcessor extends modProcessor {
- /** @var modMediaSource|modFileMediaSource $source */
- public $source;
- public function checkPermissions() {
- return $this->modx->hasPermission('directory_chmod');
- }
- public function getLanguageTopics() {
- return array('file');
- }
- public function initialize() {
- $this->setDefaultProperties(array(
- 'mode' => false,
- 'dir' => false,
- ));
- if (!$this->getProperty('mode')) return $this->modx->lexicon('file_err_chmod_ns');
- if (!$this->getProperty('dir')) return $this->modx->lexicon('file_folder_err_ns');
- return true;
- }
- public function process() {
- if (!$this->getSource()) {
- return $this->failure($this->modx->lexicon('permission_denied'));
- }
- $this->source->setRequestProperties($this->getProperties());
- $this->source->initialize();
- $dir = $this->getProperty('dir');
- $dir = preg_replace('/[\.]{2,}/', '', htmlspecialchars($dir));
- $success = $this->source->chmodContainer($dir, $this->getProperty('mode'));
- if (empty($success)) {
- $msg = '';
- $errors = $this->source->getErrors();
- foreach ($errors as $k => $msg) {
- $this->modx->error->addField($k,$msg);
- }
- return $this->failure($msg);
- }
- return $this->success();
- }
- /**
- * Get the active Source
- * @return modMediaSource|boolean
- */
- public function getSource() {
- $this->modx->loadClass('sources.modMediaSource');
- $this->source = modMediaSource::getDefaultSource($this->modx,$this->getProperty('source'));
- if (empty($this->source) || !$this->source->getWorkingContext()) {
- return false;
- }
- return $this->source;
- }
- }
- return 'modBrowserFolderChmodProcessor';