TF Learn (Tech Fry) + techfry library 1.3.4; login-gated, no repo -> deployed files. Signed-off-by: LÁZÁR Imre <imre@illusion.hu> Assisted-by: claude-code@claude-opus-4-8
64 lines
1.3 KiB
PHP
64 lines
1.3 KiB
PHP
<?php
|
|
/*
|
|
* @package Tech Fry Library
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
*/
|
|
|
|
namespace TechFry\Library;
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Image\Image;
|
|
use Joomla\CMS\Filter\OutputFilter;
|
|
use Joomla\CMS\Filesystem\File;
|
|
use Joomla\CMS\Filesystem\Folder;
|
|
|
|
class TfFile
|
|
{
|
|
|
|
// Handle uploaded file
|
|
public static function handle_file($file, $options = array())
|
|
{
|
|
// $file array - name, type, tmp_name, error, size
|
|
// $options - allow_ext, max_size, save_folder, new_name
|
|
|
|
// 1. Check for valid file extension
|
|
$ext = File::getExt($file['name']);
|
|
if (!in_array(strtolower($ext), $options['allow_ext']))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// 2. Check for file size
|
|
if ($file['size'] > $options['max_size'])
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// 3. Rename file
|
|
|
|
if (isset($options['new_name']))
|
|
{
|
|
$new_name = $options['new_name'] . '.' . $ext;
|
|
}
|
|
else
|
|
{
|
|
$name = File::stripExt($file['name']);
|
|
$new_name = $name . '_' . mt_rand(100,999) . '.' . $ext;
|
|
}
|
|
|
|
// 4. Upload file
|
|
$src = $file['tmp_name'];
|
|
$dest = $options['save_folder'] . '/' . $new_name;
|
|
|
|
if (File::upload($src, $dest))
|
|
{
|
|
return $new_name;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
} |