commit
ebc2800698
|
@ -16,6 +16,7 @@ require_once 'system/add-api-key.php';
|
||||||
require_once 'system/delete-api-key.php';
|
require_once 'system/delete-api-key.php';
|
||||||
require_once 'system/get-all-keys.php';
|
require_once 'system/get-all-keys.php';
|
||||||
require_once 'system/delete-all-users.php';
|
require_once 'system/delete-all-users.php';
|
||||||
|
require_once 'system/csv-import.php';
|
||||||
require_once 'system/backup-database.php';
|
require_once 'system/backup-database.php';
|
||||||
require_once 'system/download.php';
|
require_once 'system/download.php';
|
||||||
|
|
||||||
|
@ -41,5 +42,6 @@ $systemControllerGroup->addController(new GetAllKeyController);
|
||||||
$systemControllerGroup->addController(new DeleteAllUsersController);
|
$systemControllerGroup->addController(new DeleteAllUsersController);
|
||||||
$systemControllerGroup->addController(new BackupDatabaseController);
|
$systemControllerGroup->addController(new BackupDatabaseController);
|
||||||
$systemControllerGroup->addController(new DownloadController);
|
$systemControllerGroup->addController(new DownloadController);
|
||||||
|
$systemControllerGroup->addController(new CSVImportController);
|
||||||
|
|
||||||
$systemControllerGroup->finalize();
|
$systemControllerGroup->finalize();
|
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class CSVImportController extends Controller {
|
||||||
|
const PATH = '/csv-import';
|
||||||
|
|
||||||
|
public function validations() {
|
||||||
|
return [
|
||||||
|
'permission' => 'staff_3',
|
||||||
|
'requestData' => []
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handler() {
|
||||||
|
$fileUploader = $this->uploadFile();
|
||||||
|
|
||||||
|
if(!$fileUploader instanceof FileUploader) {
|
||||||
|
throw new Exception(ERRORS::INVALID_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = fopen($fileUploader->getFullFilePath(),'r');
|
||||||
|
$errors = [];
|
||||||
|
|
||||||
|
while(!feof($file)) {
|
||||||
|
$userList = fgetcsv($file);
|
||||||
|
|
||||||
|
Controller::setDataRequester(function ($key) use ($userList) {
|
||||||
|
switch ($key) {
|
||||||
|
case 'email':
|
||||||
|
return $userList[0];
|
||||||
|
case 'password':
|
||||||
|
return $userList[1];
|
||||||
|
case 'name':
|
||||||
|
return $userList[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
$signupController = new SignUpController(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$signupController->validate();
|
||||||
|
$signupController->handler();
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
$errors[] = $exception->getMessage() . ' in email ' . $userList[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($file);
|
||||||
|
|
||||||
|
unlink($fileUploader->getFullFilePath());
|
||||||
|
|
||||||
|
Response::respondSuccess($errors);
|
||||||
|
}
|
||||||
|
}
|
|
@ -47,10 +47,12 @@ class CommentController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
private function storeComment() {
|
private function storeComment() {
|
||||||
|
$fileUploader = $this->uploadFile();
|
||||||
|
|
||||||
$comment = Ticketevent::getEvent(Ticketevent::COMMENT);
|
$comment = Ticketevent::getEvent(Ticketevent::COMMENT);
|
||||||
$comment->setProperties(array(
|
$comment->setProperties(array(
|
||||||
'content' => $this->content,
|
'content' => $this->content,
|
||||||
'file' => $this->uploadFile(),
|
'file' => ($fileUploader instanceof FileUploader) ? $fileUploader->getFileName() : null,
|
||||||
'date' => Date::getCurrentDate()
|
'date' => Date::getCurrentDate()
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,8 @@ class CreateController extends Controller {
|
||||||
$department = Department::getDataStore($this->departmentId);
|
$department = Department::getDataStore($this->departmentId);
|
||||||
$author = Controller::getLoggedUser();
|
$author = Controller::getLoggedUser();
|
||||||
|
|
||||||
|
$fileUploader = $this->uploadFile();
|
||||||
|
|
||||||
$ticket = new Ticket();
|
$ticket = new Ticket();
|
||||||
$ticket->setProperties(array(
|
$ticket->setProperties(array(
|
||||||
'title' => $this->title,
|
'title' => $this->title,
|
||||||
|
@ -60,7 +62,7 @@ class CreateController extends Controller {
|
||||||
'language' => $this->language,
|
'language' => $this->language,
|
||||||
'author' => $author,
|
'author' => $author,
|
||||||
'department' => $department,
|
'department' => $department,
|
||||||
'file' => $this->uploadFile(),
|
'file' => ($fileUploader instanceof FileUploader) ? $fileUploader->getFileName() : null,
|
||||||
'date' => Date::getCurrentDate(),
|
'date' => Date::getCurrentDate(),
|
||||||
'unread' => false,
|
'unread' => false,
|
||||||
'unreadStaff' => true,
|
'unreadStaff' => true,
|
||||||
|
|
|
@ -10,9 +10,14 @@ class SignUpController extends Controller {
|
||||||
private $userName;
|
private $userName;
|
||||||
private $userPassword;
|
private $userPassword;
|
||||||
private $verificationToken;
|
private $verificationToken;
|
||||||
|
private $csvImported;
|
||||||
|
|
||||||
|
public function __construct($csvImported = false) {
|
||||||
|
$this->csvImported = $csvImported;
|
||||||
|
}
|
||||||
|
|
||||||
public function validations() {
|
public function validations() {
|
||||||
return [
|
$validations = [
|
||||||
'permission' => 'any',
|
'permission' => 'any',
|
||||||
'requestData' => [
|
'requestData' => [
|
||||||
'name' => [
|
'name' => [
|
||||||
|
@ -26,13 +31,18 @@ class SignUpController extends Controller {
|
||||||
'password' => [
|
'password' => [
|
||||||
'validation' => DataValidator::length(5, 200),
|
'validation' => DataValidator::length(5, 200),
|
||||||
'error' => ERRORS::INVALID_PASSWORD
|
'error' => ERRORS::INVALID_PASSWORD
|
||||||
],
|
|
||||||
'captcha' => [
|
|
||||||
'validation' => DataValidator::captcha(),
|
|
||||||
'error' => ERRORS::INVALID_CAPTCHA
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if(!$this->csvImported) {
|
||||||
|
$validations['requestData']['captcha'] = [
|
||||||
|
'validation' => DataValidator::captcha(),
|
||||||
|
'error' => ERRORS::INVALID_CAPTCHA
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $validations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handler() {
|
public function handler() {
|
||||||
|
@ -42,19 +52,16 @@ class SignUpController extends Controller {
|
||||||
$existentUser = User::getUser($this->userEmail, 'email');
|
$existentUser = User::getUser($this->userEmail, 'email');
|
||||||
|
|
||||||
if (!$existentUser->isNull()) {
|
if (!$existentUser->isNull()) {
|
||||||
Response::respondError(ERRORS::USER_EXISTS);
|
throw new Exception(ERRORS::USER_EXISTS);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
$banRow = Ban::getDataStore($this->userEmail,'email');
|
$banRow = Ban::getDataStore($this->userEmail,'email');
|
||||||
|
|
||||||
if (!$banRow->isNull()) {
|
if (!$banRow->isNull()) {
|
||||||
Response::respondError(ERRORS::ALREADY_BANNED);
|
throw new Exception(ERRORS::ALREADY_BANNED);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Setting::getSetting('registration')->value && $apiKey->isNull() ) {
|
if (!Setting::getSetting('registration')->value && $apiKey->isNull() && !$this->csvImported) {
|
||||||
Response::respondError(ERRORS::NO_PERMISSION);
|
throw new Exception(ERRORS::NO_PERMISSION);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$userId = $this->createNewUserAndRetrieveId();
|
$userId = $this->createNewUserAndRetrieveId();
|
||||||
|
|
|
@ -23,6 +23,8 @@ include_once 'libs/FileManager.php';
|
||||||
include_once 'libs/FileDownloader.php';
|
include_once 'libs/FileDownloader.php';
|
||||||
include_once 'libs/FileUploader.php';
|
include_once 'libs/FileUploader.php';
|
||||||
|
|
||||||
|
Controller::init();
|
||||||
|
|
||||||
// LOAD DATA
|
// LOAD DATA
|
||||||
spl_autoload_register(function ($class) {
|
spl_autoload_register(function ($class) {
|
||||||
$classPath = "data/{$class}.php";
|
$classPath = "data/{$class}.php";
|
||||||
|
|
|
@ -3,6 +3,7 @@ require_once 'libs/Validator.php';
|
||||||
require_once 'models/Session.php';
|
require_once 'models/Session.php';
|
||||||
|
|
||||||
abstract class Controller {
|
abstract class Controller {
|
||||||
|
private static $dataRequester;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instance-related stuff
|
* Instance-related stuff
|
||||||
|
@ -28,10 +29,20 @@ abstract class Controller {
|
||||||
$validator->validate($this->validations());
|
$validator->validate($this->validations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function request($key) {
|
public static function init() {
|
||||||
$app = self::getAppInstance();
|
self::$dataRequester = function ($key) {
|
||||||
|
$app = self::getAppInstance();
|
||||||
|
|
||||||
return $app->request()->post($key);
|
return $app->request()->post($key);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function setDataRequester($dataRequester) {
|
||||||
|
self::$dataRequester = $dataRequester;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function request($key) {
|
||||||
|
return call_user_func(self::$dataRequester, $key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getLoggedUser() {
|
public static function getLoggedUser() {
|
||||||
|
@ -77,7 +88,7 @@ abstract class Controller {
|
||||||
$fileQuantity->value++;
|
$fileQuantity->value++;
|
||||||
$fileQuantity->store();
|
$fileQuantity->store();
|
||||||
|
|
||||||
return $fileUploader->getFileName();
|
return $fileUploader;
|
||||||
} else {
|
} else {
|
||||||
throw new Exception(ERRORS::INVALID_FILE);
|
throw new Exception(ERRORS::INVALID_FILE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,3 +59,4 @@ require './system/add-api-key.rb'
|
||||||
require './system/delete-api-key.rb'
|
require './system/delete-api-key.rb'
|
||||||
require './system/get-all-keys.rb'
|
require './system/get-all-keys.rb'
|
||||||
require './system/file-upload-download.rb'
|
require './system/file-upload-download.rb'
|
||||||
|
require './system/csv-import.rb'
|
||||||
|
|
Loading…
Reference in New Issue