mirror of
https://github.com/opensupports/opensupports.git
synced 2025-07-28 16:24:42 +02:00
Ivan - Fix file uploader issues, add file upload in ticket creation [skip ci]
This commit is contained in:
parent
134540fed9
commit
f2401dcec7
@ -38,12 +38,13 @@ class InitSettingsController extends Controller {
|
|||||||
'maintenance-mode' => 0,
|
'maintenance-mode' => 0,
|
||||||
'layout' => 'boxed',
|
'layout' => 'boxed',
|
||||||
'allow-attachments' => 0,
|
'allow-attachments' => 0,
|
||||||
'max-size' => 0,
|
'max-size' => 1024,
|
||||||
'title' => 'Support Center',
|
'title' => 'Support Center',
|
||||||
'url' => 'http://www.opensupports.com/support',
|
'url' => 'http://www.opensupports.com/support',
|
||||||
'ticket-gap' => Hashing::generateRandomPrime(100000, 999999),
|
'ticket-gap' => Hashing::generateRandomPrime(100000, 999999),
|
||||||
'file-gap' => Hashing::generateRandomPrime(100000, 999999),
|
'file-gap' => Hashing::generateRandomPrime(100000, 999999),
|
||||||
'file-first-number' => Hashing::generateRandomNumber(100000, 999999),
|
'file-first-number' => Hashing::generateRandomNumber(100000, 999999),
|
||||||
|
'file-quantity' => 0
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ class CreateController extends Controller {
|
|||||||
'language' => $this->language,
|
'language' => $this->language,
|
||||||
'author' => $author,
|
'author' => $author,
|
||||||
'department' => $department,
|
'department' => $department,
|
||||||
'file' => '',
|
'file' => $this->uploadFile(),
|
||||||
'date' => Date::getCurrentDate(),
|
'date' => Date::getCurrentDate(),
|
||||||
'unread' => false,
|
'unread' => false,
|
||||||
'unreadStaff' => true,
|
'unreadStaff' => true,
|
||||||
@ -75,4 +75,26 @@ class CreateController extends Controller {
|
|||||||
|
|
||||||
$this->ticketNumber = $ticket->ticketNumber;
|
$this->ticketNumber = $ticket->ticketNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function uploadFile() {
|
||||||
|
if(!isset($_FILES['file'])) return '';
|
||||||
|
|
||||||
|
$maxSize = Setting::getSetting('max-size')->getValue();
|
||||||
|
$fileGap = Setting::getSetting('file-gap')->getValue();
|
||||||
|
$fileFirst = Setting::getSetting('file-first-number')->getValue();
|
||||||
|
$fileQuantity = Setting::getSetting('file-quantity');
|
||||||
|
|
||||||
|
$fileUploader = FileUploader::getInstance();
|
||||||
|
$fileUploader->setMaxSize($maxSize);
|
||||||
|
$fileUploader->setGeneratorValues($fileGap, $fileFirst, $fileQuantity->getValue());
|
||||||
|
|
||||||
|
if($fileUploader->upload($_FILES['file'])) {
|
||||||
|
$fileQuantity->value++;
|
||||||
|
$fileQuantity->store();
|
||||||
|
|
||||||
|
return $fileUploader->getFileName();
|
||||||
|
} else {
|
||||||
|
throw new Exception(ERRORS::INVALID_FILE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ class FileUploader extends FileManager {
|
|||||||
private $maxSize = 1024;
|
private $maxSize = 1024;
|
||||||
private $linearCongruentialGenerator;
|
private $linearCongruentialGenerator;
|
||||||
private $linearCongruentialGeneratorOffset;
|
private $linearCongruentialGeneratorOffset;
|
||||||
|
private $fileName;
|
||||||
|
|
||||||
private static $instance = null;
|
private static $instance = null;
|
||||||
|
|
||||||
@ -18,18 +19,18 @@ class FileUploader extends FileManager {
|
|||||||
private function __construct() {}
|
private function __construct() {}
|
||||||
|
|
||||||
public function upload($file) {
|
public function upload($file) {
|
||||||
$newFileName = $this->generateNewName($file['name']);
|
$this->setNewName($file['name']);
|
||||||
|
|
||||||
if($file['size'] > (1024 * $this->maxSize)) {
|
if($file['size'] > (1024 * $this->maxSize)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
move_uploaded_file($file['tmp_name'], $this->getLocalPath() . $newFileName);
|
move_uploaded_file($file['tmp_name'], $this->getLocalPath() . $this->getFileName());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateNewName($fileName) {
|
private function setNewName($fileName) {
|
||||||
$newName = $fileName;
|
$newName = $fileName;
|
||||||
$newName = strtolower($newName);
|
$newName = strtolower($newName);
|
||||||
$newName = preg_replace('/\s+/', '_', $newName);
|
$newName = preg_replace('/\s+/', '_', $newName);
|
||||||
@ -38,7 +39,7 @@ class FileUploader extends FileManager {
|
|||||||
$newName = $this->linearCongruentialGenerator->generate($this->linearCongruentialGeneratorOffset) . '_' . $newName;
|
$newName = $this->linearCongruentialGenerator->generate($this->linearCongruentialGeneratorOffset) . '_' . $newName;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $newName;
|
$this->fileName = $newName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setGeneratorValues($gap, $first, $offset) {
|
public function setGeneratorValues($gap, $first, $offset) {
|
||||||
@ -53,4 +54,8 @@ class FileUploader extends FileManager {
|
|||||||
$this->maxSize = $maxSize;
|
$this->maxSize = $maxSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getFileName() {
|
||||||
|
return $this->fileName;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -21,7 +21,8 @@ class LinearCongruentialGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function generate($offset) {
|
public function generate($offset) {
|
||||||
return ($this->first - $this->min + $offset * $this->gap) % ($this->max - $this->min + 1) + $this->min;
|
if($offset) return ($this->first - $this->min + $offset * $this->gap) % ($this->max - $this->min + 1) + $this->min;
|
||||||
|
else return $this->generateFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateFirst() {
|
public function generateFirst() {
|
||||||
|
@ -10,7 +10,7 @@ describe'system/edit-settings' do
|
|||||||
"time-zone" => -3,
|
"time-zone" => -3,
|
||||||
"layout" => 'full-width',
|
"layout" => 'full-width',
|
||||||
"allow-attachments" => 1,
|
"allow-attachments" => 1,
|
||||||
"max-size" => 2,
|
"max-size" => 2048,
|
||||||
"language" => 'en',
|
"language" => 'en',
|
||||||
"no-reply-email" => 'testemail@hotmail.com'
|
"no-reply-email" => 'testemail@hotmail.com'
|
||||||
})
|
})
|
||||||
@ -27,7 +27,7 @@ describe'system/edit-settings' do
|
|||||||
(row['value']).should.equal('full-width')
|
(row['value']).should.equal('full-width')
|
||||||
|
|
||||||
row = $database.getRow('setting', 'max-size', 'name')
|
row = $database.getRow('setting', 'max-size', 'name')
|
||||||
(row['value']).should.equal('2')
|
(row['value']).should.equal('2048')
|
||||||
|
|
||||||
row = $database.getRow('setting', 'language', 'name')
|
row = $database.getRow('setting', 'language', 'name')
|
||||||
(row['value']).should.equal('en')
|
(row['value']).should.equal('en')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user