Example #1
0
 /**
  * Verifies that the specified file is valid agains the filters specified in config.
  *
  * @param String $path Path to verify.
  * @param String $action Action to get config options by.
  * @param Array $config Name/Value array of config options.
  * @return int Reason why it was denied.
  */
 function verifyFile($file, $action = false, $config = false)
 {
     $config = $config ? $config : $file->getConfig();
     // Verify filesystem config
     $fileFilter = new Moxiecode_BasicFileFilter();
     $fileFilter->setIncludeDirectoryPattern($config['filesystem.include_directory_pattern']);
     $fileFilter->setExcludeDirectoryPattern($config['filesystem.exclude_directory_pattern']);
     $fileFilter->setIncludeFilePattern($config['filesystem.include_file_pattern']);
     $fileFilter->setExcludeFilePattern($config['filesystem.exclude_file_pattern']);
     $fileFilter->setIncludeExtensions($config['filesystem.extensions']);
     $this->_invalidFileMsg = "{#error.invalid_filename}";
     $status = $fileFilter->accept($file);
     if ($status != BASIC_FILEFILTER_ACCEPTED) {
         if ($status == BASIC_FILEFILTER_INVALID_NAME) {
             if ($file->isFile() && isset($config['filesystem.invalid_file_name_msg'])) {
                 $this->_invalidFileMsg = $config['filesystem.invalid_file_name_msg'];
             } else {
                 if (!$file->isFile() && isset($config['filesystem.invalid_directory_name_msg'])) {
                     $this->_invalidFileMsg = $config['filesystem.invalid_directory_name_msg'];
                 }
             }
             if (!$this->_invalidFileMsg) {
                 $this->_invalidFileMsg = "{#error.invalid_filename}";
             }
         }
         return $status;
     }
     // Verify action specific config
     $fileFilter = new Moxiecode_BasicFileFilter();
     if ($action) {
         if (isset($config[$action . '.include_directory_pattern'])) {
             $fileFilter->setIncludeDirectoryPattern($config[$action . '.include_directory_pattern']);
         }
         if (isset($config[$action . '.exclude_directory_pattern'])) {
             $fileFilter->setExcludeDirectoryPattern($config[$action . '.exclude_directory_pattern']);
         }
         if (isset($config[$action . '.include_file_pattern'])) {
             $fileFilter->setIncludeFilePattern($config[$action . '.include_file_pattern']);
         }
         if (isset($config[$action . '.exclude_file_pattern'])) {
             $fileFilter->setExcludeFilePattern($config[$action . '.exclude_file_pattern']);
         }
         if (isset($config[$action . '.extensions'])) {
             $fileFilter->setIncludeExtensions($config[$action . '.extensions']);
         }
     } else {
         return BASIC_FILEFILTER_ACCEPTED;
     }
     $status = $fileFilter->accept($file);
     if ($status != BASIC_FILEFILTER_ACCEPTED) {
         if ($status == BASIC_FILEFILTER_INVALID_NAME) {
             $this->_invalidFileMsg = "{#error.invalid_filename}";
             if ($file->isFile()) {
                 if (isset($config[$action . '.invalid_file_name_msg'])) {
                     $this->_invalidFileMsg = $config[$action . '.invalid_file_name_msg'];
                 }
             } else {
                 if (isset($config[$action . '.invalid_directory_name_msg'])) {
                     $this->_invalidFileMsg = $config[$action . '.invalid_directory_name_msg'];
                 }
             }
         }
         return $status;
     }
     return BASIC_FILEFILTER_ACCEPTED;
 }
 function _filterFile(&$file, $input)
 {
     $config = $file->getConfig();
     // Setup file filter
     $fileFilter = new Moxiecode_BasicFileFilter();
     //$fileFilter->setDebugMode(true);
     $fileFilter->setIncludeDirectoryPattern($config['filesystem.include_directory_pattern']);
     $fileFilter->setExcludeDirectoryPattern($config['filesystem.exclude_directory_pattern']);
     $fileFilter->setIncludeFilePattern($config['filesystem.include_file_pattern']);
     $fileFilter->setExcludeFilePattern($config['filesystem.exclude_file_pattern']);
     $fileFilter->setIncludeExtensions($config['filesystem.extensions']);
     if (isset($input["only_dirs"]) && checkBool($input["only_dirs"])) {
         $fileFilter->setOnlyDirs(true);
     }
     return $fileFilter->accept($file) > 0;
 }
Example #3
0
 /**
  * Handles a file instance while looping an tree of directories.
  * 
  * @param MCE_File $file File object reference
  * @param int $level Current level of tree parse
  * @return int State of what to do next can be CONTINUE, ABORT or ABORTFOLDER.
  */
 function handle($file, $level)
 {
     if ($file->isDirectory() || !is_array($this->_config)) {
         if ($level == 0) {
             return parent::handle($file, $level);
         } else {
             $parentFile = $file->getParentFile();
         }
         $this->_config = $parentFile->getConfig();
     }
     $filter = new Moxiecode_BasicFileFilter();
     $filter->setIncludeFilePattern($this->_config['filesystem.include_file_pattern']);
     $filter->setExcludeFilePattern($this->_config['filesystem.exclude_file_pattern']);
     $filter->setIncludeDirectoryPattern($this->_config['filesystem.include_directory_pattern']);
     $filter->setExcludeDirectoryPattern($this->_config['filesystem.exclude_directory_pattern']);
     $filter->setOnlyDirs($this->_onlyDirs);
     if (!$filter->accept($file)) {
         return $this->ABORT_FOLDER;
     }
     return parent::handle($file, $level);
 }