Newer
Older
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Handler_RequestsProcessing extends Controller_Handler
const requestUpdateStatusOk = 0;
public function action_imageUpload() {
$data['success'] = false;
$requestID = $this->sendEmptyRequestWithImg($this->user->ID);
$uploadFileName = $_FILES['imageFile']['tmp_name'];
$saver = new SupportImageSaver($uploadFileName, $requestID);
if ($saver->saveImage() == SupportImageSaver::savingStatusOk) {
$data['success'] = true;
$data['requestID'] = $requestID;
$data['previewBase64'] = $saver->getPreviewBase64();
$data['error'] = 'Failed to load this file!';
$this->response->body(json_encode($data));
}
$this->user->checkAccess(User::RIGHTS_STUDENT | User::RIGHTS_TEACHER);
$requestID = $_POST['requestID'];
if ($requestID <= 0) {
$ticket = $this->sendNewRequest($this->user->ID, $title, $text);
} else {
$updateStatus = $this->updateExistedRequest($requestID, $title, $text);
if ($updateStatus == self::requestUpdateStatusOk) {
$subject = "Request {$ticket}: rating system report";
$message = Twig::factory('handler/report', [
'Title' => $title,
'Text' => $text,
'User' => $this->user,
])->render();
$headers = [
'From: RatingSystem@no-reply.mmcs.sfedu.ru',
'Reply-To: ' . $this->user->EMail,
// 'Content-Type: text/html; charset=UTF-8',
];
mail($to, $subject, $message, implode("\n", $headers));
VladimirCherkasov
committed
public function action_setStatus() {
$this->user->checkAccess(User::RIGHTS_ADMIN);
$requestID = $_POST['requestID'];
$status = $_POST['status'];
$setStatusResult = -1;
if ($status == 'closed' ||
$status == 'opened' ||
$status == 'processed' ) {
$setStatusResult = Model_Support::setStatus($requestID, $status);
}
$data['success'] = ($setStatusResult == 0);
$this->response->body(json_encode($data));
}
$filename = DOCROOT . SupportImageSaver::directoryToSave .
$this->request->param('id') . SupportImageSaver::imageExtension;
$this->responseImage($filename);
}
public function action_preview() {
$filename = DOCROOT . SupportImageSaver::directoryToSave .
SupportImageSaver::thumbPref . $this->request->param('id') . SupportImageSaver::imageExtension;
$this->responseImage($filename);
}
private function responseImage($filename) {
if (!file_exists($filename) OR !is_file($filename)) {
throw new HTTP_Exception_404('Picture not found');
}
$image = file_get_contents($filename);
$info = getimagesize($filename);
$mime = $info['mime'];
$this->response->headers('Content-Type', $mime)
->body($image);
}
VladimirCherkasov
committed
/** return int number of created ticket */
private function sendNewRequest($accountID, $title, $description) {
return Model_Support::createRequest($accountID, $title, $description, false);
/** return int number of created ticket */
private function sendEmptyRequestWithImg($accountID) {
return Model_Support::createRequest($accountID, NULL, NULL, true);
}
/** return int number status code */
private function updateExistedRequest($requestID, $title, $description) {
return Model_Support::updateRequest($requestID, $title, $description);