site-proximo/classes/postHandler.php
2020-02-14 12:05:21 +01:00

189 lines
5.5 KiB
PHP

<?php
require_once 'dao.php';
class PostHandler
{
private $valid_types = ["article", "category", "article_categories", 'image'];
private $valid_actions = ["create", "update", "remove", "get"];
private $action;
private $type;
private $postData;
private $filesData;
private $data;
private $dao;
private $uploadBaseDir = '../uploaded_images/';
private $responseArray = array(
"status" => 0,
"message" => "Success",
"data" => "",
);
public function __construct($post, $files)
{
$this->filesData = $files;
$this->action = $this->get_action($post);
$this->type = $this->get_type($post);
$this->data = $this->get_data($post);
$this->postData = $post;
$this->dao = new Dao();
}
public function do_action()
{
$result = -1;
if ($this->type == "image") {
$result = $this->save_image();
} else if (count($this->data) > 0) {
if ($this->action == "create")
$result = $this->create();
else if ($this->action == "update")
$result = $this->update();
else if ($this->action == "remove")
$result = $this->remove();
else
$this->setUnknownActionResponse();
} else if ($this->action == "get")
$result = $this->get();
else
$this->setUnknownDataResponse();
if ($this->responseArray["status"] == 0 && $result < 0) {
$this->setProcessingErrorResponse();
$result = -1;
}
$this->responseArray["data"] = $result;
return $this->responseArray;
}
private function save_image()
{
$success = true;
if ($this->filesData["image"]["size"] > 0 && $this->data != null) {
$uploadPath = $this->uploadBaseDir.$this->data.".jpg";
if (move_uploaded_file($this->filesData["image"]["tmp_name"], $uploadPath)) {
$this->responseArray["message"] = "Image upload success";
} else {
$this->responseArray["message"] = "Image upload failure: ". $uploadPath;
$this->responseArray["status"] = 1;
$success = false;
}
} else {
$this->responseArray["message"] = "No valid file to send";
$this->responseArray["status"] = 1;
$success = false;
}
if ($success)
return 0;
else
return json_encode($this->filesData)."id: ".$this->data;
}
function create()
{
$result = -1;
if ($this->type == "article") {
$result = $this->dao->create_article($this->data);
} else if ($this->type == "category") {
$result = $this->dao->create_category($this->data);
} else if ($this->type == "article_categories") {
$result = $this->dao->remove_article_categories_of_article($this->data['id']);
if ($result)
$result = $this->dao->save_article_categories($this->data['id'], $this->data['categories']);
} else
$this->setUnknownTypeResponse();
return $result;
}
function update()
{
$result = -1;
if ($this->type == "article") {
$result = $this->dao->update_article($this->data);
} else if ($this->type == "category") {
$result = $this->dao->update_category($this->data);
} else
$this->setUnknownTypeResponse();
return $result;
}
function remove()
{
$result = -1;
if ($this->type == "article") {
$result = $this->dao->remove_article($this->data);
} else if ($this->type == "category") {
$result = $this->dao->remove_category($this->data);
} else
$this->setUnknownTypeResponse();
if ($result == 0)
return -1;
else
return 1;
}
function get()
{
$result = -1;
if ($this->type == "article") {
$result = $this->dao->get_articles();
} else if ($this->type == "category") {
$result = $this->dao->get_categories();
} else if ($this->type == "article_categories") {
$result = $this->dao->get_article_categories();
} else
$this->setUnknownTypeResponse();
return $result;
}
function setUnknownTypeResponse()
{
$this->responseArray["status"] = 1;
$this->responseArray["message"] = "Error: Unknown type";
}
function setUnknownActionResponse()
{
$this->responseArray["status"] = 2;
$this->responseArray["message"] = "Error: Unknown action";
}
function setUnknownDataResponse()
{
$this->responseArray["status"] = 3;
$this->responseArray["message"] = "Error: Unknown data";
}
function setProcessingErrorResponse()
{
$this->responseArray["status"] = 4;
$this->responseArray["message"] = "Error: Data processing error";
}
private function get_action($inputData)
{
if (!in_array($inputData["action"], $this->valid_actions))
return "";
else
return $inputData["action"];
}
private function get_type($inputData)
{
if (!in_array($inputData["type"], $this->valid_types))
return "";
else
return $inputData["type"];
}
private function get_data($inputData)
{
if ($inputData["data"] == null)
return [];
else
return $inputData["data"];
}
}