Пример #1
0
 protected function _getGroupMimeTypes($group)
 {
     $mime_types = new YArray(YFile::getMimeMapping());
     $mime_types = $mime_types->flattenRecursive();
     $mime_types = array_filter($mime_types, create_function('$a', 'return preg_match("/^' . $group . '\\//i", $a);'));
     return array_map('strtolower', $mime_types);
 }
Пример #2
0
 public function validateSubmission($value, $params)
 {
     // init vars
     $trusted_mode = $params->get('trusted_mode');
     // get old file value
     $element = new ElementDownload();
     $element->identifier = $this->identifier;
     $old_file = $element->setData($this->_item->elements)->getElementData()->get('file');
     $file = '';
     // get file from select list
     if ($trusted_mode && ($file = $value->get('upload'))) {
         if (!$this->_inUploadPath($file) && $file != $old_file) {
             throw new YValidatorException(sprintf('This file is not located in the upload directory.'));
         }
         if (!JFile::exists($file)) {
             throw new YValidatorException(sprintf('This file does not exist.'));
         }
         // get file from upload
     } else {
         try {
             // get the uploaded file information
             $userfile = JRequest::getVar('elements_' . $this->identifier, array(), 'files', 'array');
             // get legal extensions
             $extensions = explode(',', $this->_config->get('upload_extensions', 'png,jpg,doc,mp3,mov,avi,mpg,zip,rar,gz'));
             $extensions = array_map(create_function('$ext', 'return strtolower(trim($ext));'), $extensions);
             //get legal mime types
             $legal_mime_types = new YArray(array_intersect_key(YFile::getMimeMapping(), array_flip($extensions)));
             $legal_mime_types = $legal_mime_types->flattenRecursive();
             // get max upload size
             $max_upload_size = $this->_config->get('max_upload_size', '512') * 1024;
             $max_upload_size = empty($max_upload_size) ? null : $max_upload_size;
             // validate
             $validator = new YValidatorFile(array('mime_types' => $legal_mime_types, 'max_size' => $max_upload_size));
             $file = $validator->addMessage('mime_types', 'Uploaded file is not of a permitted type.')->clean($userfile);
         } catch (YValidatorException $e) {
             if ($e->getCode() != UPLOAD_ERR_NO_FILE) {
                 throw $e;
             }
             if (!$trusted_mode && $old_file && $value->get('upload')) {
                 $file = $old_file;
             }
         }
     }
     if ($params->get('required') && empty($file)) {
         throw new YValidatorException('Please select a file to upload.');
     }
     $validator = new YValidatorInteger(array('required' => false), array('number' => 'The Download Limit needs to be a number.'));
     $download_limit = $validator->clean($value->get('download_limit'));
     $download_limit = empty($download_limit) ? '' : $download_limit;
     return array('file' => $file, 'download_limit' => $download_limit);
 }