diff --git a/src/app/controllers/User/GetDataPostController.php b/src/app/controllers/User/GetDataPostController.php new file mode 100644 index 0000000000000000000000000000000000000000..068f463e6ff22a5e1b086114ac9866c40f1b81c1 --- /dev/null +++ b/src/app/controllers/User/GetDataPostController.php @@ -0,0 +1,45 @@ +<?php + + + +require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php"; +require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php"; + +class GetDataPostController extends BaseController{ + protected static $instance; + private function __construct($srv){ + parent::__construct($srv); + } + public static function getInstance(){ + if(!isset(self::$instance)){ + self::$instance = new static(GetPostModel::getInstance()); + } + return self::$instance; + } + + public function get($urlParams){ + $idowner = $urlParams[0]; + $data = $this->srv->getDataPostByOwner($idowner); + if($data!=null){ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'success', + 'message' => 'Success to get data post', + 'data' => $data + )); + } + else{ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'failed', + 'message' => 'Failed to get data post', + )); + } + } + +} + + + + +?> \ No newline at end of file diff --git a/src/app/controllers/User/GetDataPostIDController.php b/src/app/controllers/User/GetDataPostIDController.php new file mode 100644 index 0000000000000000000000000000000000000000..66252ead470f16f6d21226b5d48c04e580c9f460 --- /dev/null +++ b/src/app/controllers/User/GetDataPostIDController.php @@ -0,0 +1,46 @@ +<?php + + + +require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php"; +require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php"; + +class GetDataPostIDController extends BaseController{ + protected static $instance; + private function __construct($srv){ + parent::__construct($srv); + } + public static function getInstance(){ + if(!isset(self::$instance)){ + self::$instance = new static(GetPostModel::getInstance()); + } + return self::$instance; + } + + public function get($urlParams){ + $idowner = $urlParams[0]; + $idpost = $urlParams[1]; + $data = $this->srv->getDataPostIDByOwner($idowner,$idpost); + if($data!=null){ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'success', + 'message' => 'Success to get data post', + 'data' => $data + )); + } + else{ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'failed', + 'message' => 'Failed to get data post', + )); + } + } + +} + + + + +?> \ No newline at end of file diff --git a/src/app/controllers/User/GetFollowsController.php b/src/app/controllers/User/GetFollowsController.php new file mode 100644 index 0000000000000000000000000000000000000000..89f9e7c6612c18fdac84a7eb824ed88a998997af --- /dev/null +++ b/src/app/controllers/User/GetFollowsController.php @@ -0,0 +1,45 @@ +<?php + + + +require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php"; +require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php"; + +class GetFollowsController extends BaseController{ + protected static $instance; + private function __construct($srv){ + parent::__construct($srv); + } + public static function getInstance(){ + if(!isset(self::$instance)){ + self::$instance = new static(GetPostModel::getInstance()); + } + return self::$instance; + } + + public function get($urlParams){ + $idowner = $urlParams[0]; + $data = $this->srv->getFollows($idowner); + if($data!=null){ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'success', + 'message' => 'Success to get data follows', + 'data' => $data + )); + } + else{ + header('Content-Type: application/json'); + return json_encode(array( + 'status' => 'failed', + 'message' => 'Failed to get data follows', + )); + } + } + +} + + + + +?> \ No newline at end of file diff --git a/src/app/models/GetPostModel.php b/src/app/models/GetPostModel.php new file mode 100644 index 0000000000000000000000000000000000000000..f28ed02f6ff2266ab867436eeeeca0ad647a9bb3 --- /dev/null +++ b/src/app/models/GetPostModel.php @@ -0,0 +1,130 @@ +<?php + +require_once SRC_ROOT_PATH . "/app/baseclasses/BaseModel.php"; +require_once SRC_ROOT_PATH . "/app/core/PDOHandler.php"; + +class GetPostModel +{ + protected static $instance; + + + public static function getInstance() + { + if (!isset(self::$instance)) { + self::$instance = new static(); + } + return self::$instance; + } + + public function getFollows($id){ + try{ + $db = PDOHandler::getInstance()->getPDO(); + $sql = "SELECT DATE(created_at) as day, COUNT(followed_user_id) as total from follows WHERE followed_user_id=$id GROUP BY day ORDER BY day DESC LIMIT 7;"; + $result = $db->query($sql); + if($result){ + $data = $result->fetchAll(PDO::FETCH_ASSOC); + return $data; + } + else{ + return null; + } + }catch(Exception $e){ + echo $e->getMessage(); + return null; + } + } + public function getDataPostByOwner($owner){ + try{ + $db = PDOHandler::getInstance()->getPDO(); + $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,p.body,pr.path,p.created_at FROM posts as p LEFT JOIN post_resources as pr ON p.post_id=pr.post_id AND p.owner_id=pr.post_owner_id JOIN users as u ON p.owner_id=u.id WHERE p.owner_id=$owner AND p.refer_type IS NULL "; + $result = $db->query($sql); + $sql2 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from posts WHERE refer_post_owner=$owner AND refer_type='Reply' GROUP BY day ORDER BY day DESC LIMIT 7"; + $result2 = $db->query($sql2); + $sql3 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from likes WHERE post_owner_id=$owner GROUP BY day ORDER BY day DESC LIMIT 7"; + $result3 = $db->query($sql3); + $sql4 = "SELECT DATE(created_at) as day, SUM(views) as total from posts WHERE owner_id=$owner GROUP BY day ORDER BY day DESC LIMIT 7"; + $result4 = $db->query($sql4); + if($result){ + if($result2){ + if($result3){ + if($result4){ + $data = $result->fetchAll(PDO::FETCH_ASSOC); + $data2 = $result2->fetchAll(PDO::FETCH_ASSOC); + $data3 = $result3->fetchAll(PDO::FETCH_ASSOC); + $data4 = $result4->fetchAll(PDO::FETCH_ASSOC); + return array( + 'post' => $data, + 'reply' => $data2, + 'likes' => $data3, + 'view' => $data4 + ); + } + else{ + return null; + } + } + else{ + return null; + } + } + else{ + return null; + } + } + else{ + return null; + } + }catch(Exception $e){ + echo $e->getMessage(); + return null; + } + } + public function getDataPostIDByOwner($owner,$post_id){ + try{ + $db = PDOHandler::getInstance()->getPDO(); + $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,p.body,pr.path,p.created_at FROM posts as p LEFT JOIN post_resources as pr ON p.post_id=pr.post_id AND p.owner_id=pr.post_owner_id JOIN users as u ON p.owner_id=u.id WHERE p.owner_id=$owner AND p.post_id=$post_id AND p.refer_type IS NULL "; + $result = $db->query($sql); + $sql2 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from posts WHERE refer_post_owner=$owner AND refer_post=$post_id AND refer_type='Reply' GROUP BY day ORDER BY day DESC LIMIT 7"; + $result2 = $db->query($sql2); + $sql3 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from likes WHERE post_owner_id=$owner AND post_id=$post_id GROUP BY day ORDER BY day DESC LIMIT 7"; + $result3 = $db->query($sql3); + $sql4 = "SELECT DATE(created_at) as day, views as total from posts WHERE owner_id=$owner AND post_id=$post_id"; + $result4 = $db->query($sql4); + if($result){ + if($result2){ + if($result3){ + if($result4){ + $data = $result->fetch(PDO::FETCH_ASSOC); + $data2 = $result2->fetchAll(PDO::FETCH_ASSOC); + $data3 = $result3->fetchAll(PDO::FETCH_ASSOC); + $data4 = $result4->fetch(PDO::FETCH_ASSOC); + return array( + 'post' => $data, + 'reply' => $data2, + 'likes' => $data3, + 'view' => $data4 + ); + } + else{ + return null; + } + } + else{ + return null; + } + } + else{ + return null; + } + } + else{ + return null; + } + }catch(Exception $e){ + echo $e->getMessage(); + return null; + } + } +} + +?> \ No newline at end of file diff --git a/src/index.php b/src/index.php index 99b4e95047791c3e6c2b55e8afdd4ada4ddab573..1dc6492697f943e56deb24df1467b3b5033dbc4a 100644 --- a/src/index.php +++ b/src/index.php @@ -12,6 +12,9 @@ require_once CONTROLLER_PATH . "/User/LoginController.php"; require_once CONTROLLER_PATH . "/User/LogoutController.php"; require_once CONTROLLER_PATH . "/User/RegisterController.php"; require_once CONTROLLER_PATH . "/User/GetAllUserController.php"; +require_once CONTROLLER_PATH . "/User/GetFollowsController.php"; +require_once CONTROLLER_PATH . "/User/GetDataPostController.php"; +require_once CONTROLLER_PATH . "/User/GetDataPostIDController.php"; require_once CONTROLLER_PATH . "/Admin/AdminController.php"; require_once CONTROLLER_PATH . "/Admin/BanController.php"; require_once CONTROLLER_PATH . "/Admin/UnbanController.php"; @@ -66,6 +69,9 @@ $router->addHandler("/api/profileuser/*", ProfileUserController::getInstance(), $router->addHandler("/api/follow", FollowController::getInstance(), []); $router->addHandler("/api/unfollow", UnfollowController::getInstance(), []); $router->addHandler("/api/getalluser", GetAllUserController::getInstance(), []); +$router->addHandler("/api/getdatafollows/*", GetFollowsController::getInstance(), []); +$router->addHandler("/api/getdatapost/*", GetDataPostController::getInstance(), []); +$router->addHandler("/api/getdatapostid/*/*", GetDataPostIDController::getInstance(), []); $router->addHandler("/", HomePage::getInstance(), []);