/** * @brief Accion que se encarga de manipular el proceso de guardar * un archivo en el servidor * @param array $allowedExtensions Arreglo de extensiones validas para el archivo * @param int $sizeLimit Tamaño maximo permitido del fichero que se sube */ function upload($allowedExtensions, $sizeLimit = 10485760) { jimport('Amadeus.Util.Uploader'); $media =& JComponentHelper::getParams('com_media'); $postSize = $this->toBytes(ini_get('post_max_size')); $uploadSize = $this->toBytes(ini_get('upload_max_filesize')); $mediaSize = (int) $media->get('upload_maxsize'); // Se selecciona el minimo tamaño válido para un fichero, de acuerdo // a los valores configurados en el php, el joomla y el componente. $sizeLimit = min($postSize, $uploadSize, $mediaSize, $sizeLimit); // Se alamacena la imagen en la ruta especificada $uploader = new qqFileUploader($allowedExtensions, $sizeLimit); $result = $uploader->handleUpload(JPATH_SITE . '/tmp/', true); if (!isset($result['error'])) { jimport('Amadeus.Util.Validation'); $file = $uploader->getName(); $result = AmadeusUtilValidation::isValidFile($file, $only_image); if (isset($result['error'])) { jimport('joomla.filesystem.file'); if (!JFile::delete($file)) { $result = array('error' => JText::_('DELETEERROR')); } } else { $this->_file = $file; } } return $result; }
/** * @brief Accion ecargada de manipular el archivo que se esta cargando. * * Las validaciones se hacen con respecto a las configuraciones provistas * por el Joomla en su seccion "Configuracion Multimedia". Si la variable * \a only_image se encuentra con un valor verdadero, solo se permitira subir * archivos de tipo imagen, en caso contraro, archivos validos. */ function upload() { $media =& JComponentHelper::getParams('com_media'); $only_image = JRequest::getVar('only_image', ''); if ($only_image == true) { $allowedExtensions = explode(',', $media->get('image_extensions')); } else { $allowedExtensions = explode(',', $media->get('upload_extensions')); } /// Se selecciona el menor valor para subir archivos, ya sea el configurado por el /// servidor o el configurado en el Joomla $postSize = $this->toBytes(ini_get('post_max_size')); $uploadSize = $this->toBytes(ini_get('upload_max_filesize')); $sizeLimit = (int) $media->get('upload_maxsize') * 1048576; $sizeLimit = min($postSize, $uploadSize, $sizeLimit); require_once JPATH_COMPONENT . DS . 'uploader.php'; $uploader = new qqFileUploader($allowedExtensions, $sizeLimit); $result = $uploader->handleUpload(JPATH_SITE . '/tmp/', true); if (!isset($result['error'])) { jimport('Amadeus.Util.Validation'); $file = $uploader->getName(); $result = AmadeusUtilValidation::isValidFile($file, $only_image); if (isset($result['error'])) { jimport('joomla.filesystem.file'); if (!JFile::delete($file)) { $result = array('error' => JText::_('DELETEERROR')); } } } echo htmlspecialchars($this->encodeJSON($result), ENT_NOQUOTES); }