Skip to content
Snippets Groups Projects
Commit 89d07cf5 authored by Sulthan Dzaky Alfaro's avatar Sulthan Dzaky Alfaro
Browse files
parents 0195fd64 461a5e72
Branches
Tags
No related merge requests found
......@@ -3,7 +3,7 @@
require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
require_once SRC_ROOT_PATH . "/app/models/GetAnalyticDataModel.php";
class GetFollowsController extends BaseController{
protected static $instance;
......@@ -12,14 +12,15 @@ class GetFollowsController extends BaseController{
}
public static function getInstance(){
if(!isset(self::$instance)){
self::$instance = new static(GetPostModel::getInstance());
self::$instance = new static(GetAnalyticDataModel::getInstance());
}
return self::$instance;
}
public function get($urlParams){
$idowner = $urlParams[0];
$data = $this->srv->getFollows($idowner);
$username = $urlParams[0];
$date = $urlParams[1];
$data = $this->srv->getFollows($username, $date);
if($data!=null){
header('Content-Type: application/json');
return json_encode(array(
......
......@@ -3,23 +3,23 @@
require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
require_once SRC_ROOT_PATH . "/app/models/GetAnalyticDataModel.php";
class GetDataPostController extends BaseController{
class GetPostCountController 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());
self::$instance = new static(GetAnalyticDataModel::getInstance());
}
return self::$instance;
}
public function get($urlParams){
$idowner = $urlParams[0];
$data = $this->srv->getDataPostByOwner($idowner);
$username = $urlParams[0];
$data = $this->srv->getPostCountByOwner($username);
if($data!=null){
header('Content-Type: application/json');
return json_encode(array(
......
......@@ -3,24 +3,25 @@
require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
require_once SRC_ROOT_PATH . "/app/models/GetAnalyticDataModel.php";
class GetDataPostIDController extends BaseController{
class GetPostDataController 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());
self::$instance = new static(GetAnalyticDataModel::getInstance());
}
return self::$instance;
}
public function get($urlParams){
$idowner = $urlParams[0];
$username = $urlParams[0];
$idpost = $urlParams[1];
$data = $this->srv->getDataPostIDByOwner($idowner,$idpost);
$date = $urlParams[2];
$data = $this->srv->getDataPostIDByOwner($username,$idpost,$date);
if($data!=null){
header('Content-Type: application/json');
return json_encode(array(
......
<?php
require_once SRC_ROOT_PATH . "/app/baseclasses/BaseModel.php";
require_once SRC_ROOT_PATH . "/app/core/PDOHandler.php";
class GetAnalyticDataModel
{
protected static $instance;
public static function getInstance()
{
if (!isset(self::$instance)) {
self::$instance = new static();
}
return self::$instance;
}
public function getFollows($username, $date){
try{
$db = PDOHandler::getInstance()->getPDO();
$sql = "SELECT COUNT(*) AS total from follows f INNER JOIN users u ON followed_user_id=id WHERE u.username='$username' AND f.created_at <= '$date'::date";
$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 getPostCountByOwner($username){
try{
$db = PDOHandler::getInstance()->getPDO();
$sql = "SELECT COUNT(*) count FROM posts p LEFT JOIN users u ON owner_id=id WHERE username='$username' 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){
$data = $result->fetchAll(PDO::FETCH_ASSOC);
return $data;
}
else{
return null;
}
}catch(Exception $e){
echo $e->getMessage();
return null;
}
}
public function getDataPostIDByOwner($username, $post_id, $date){
try{
$db = PDOHandler::getInstance()->getPDO();
$sql = "SELECT id FROM users WHERE username='$username'";
$result = $db->query($sql);
if(is_null($result)) return null;
$owner = $result->fetch(PDO::FETCH_ASSOC);
if(!$owner) return null;
$owner = $owner['id'];
$repliesQuery = "SELECT COUNT(*) AS total FROM posts WHERE refer_type='Reply' AND refer_post_owner=$owner AND refer_post=$post_id AND created_at <= '$date'::date";
$repliesResult = $db->query($repliesQuery);
if(is_null($repliesResult)) return null;
$repliescount = $repliesResult->fetch(PDO::FETCH_ASSOC);
$likesQuery = "SELECT COUNT(*) AS total FROM likes WHERE post_owner_id=$owner AND post_id=$post_id AND created_at <= '$date'::date";
$likesResult = $db->query($likesQuery);
if(is_null($likesResult)) return null;
$likescount = $likesResult->fetch(PDO::FETCH_ASSOC);
$viewsResult = "SELECT views AS total FROM posts WHERE owner_id=$owner AND post_id=$post_id";
$viewsResult = $db->query($viewsResult);
if(is_null($viewsResult)) return null;
$viewscount = $viewsResult->fetch(PDO::FETCH_ASSOC);
if(!$viewscount) return null;
// var_dump($repliescount);
// var_dump($likescount);
// var_dump($viewscount);
return array(
'replies' => $repliescount['total'],
'likes' => $likescount['total'],
'views' => $viewscount['total']
);
}catch(Exception $e){
echo $e->getMessage();
return null;
}
}
}
?>
\ No newline at end of file
<?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
......@@ -13,8 +13,8 @@ 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 . "/User/GetPostCountController.php";
require_once CONTROLLER_PATH . "/User/GetPostDataController.php";
require_once CONTROLLER_PATH . "/Admin/AdminController.php";
require_once CONTROLLER_PATH . "/Admin/BanController.php";
require_once CONTROLLER_PATH . "/Admin/UnbanController.php";
......@@ -69,9 +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("/api/getdatafollows/*/*", GetFollowsController::getInstance(), []);
$router->addHandler("/api/getpostcount/*", GetPostCountController::getInstance(), []);
$router->addHandler("/api/getpostdata/*/*/*", GetPostDataController::getInstance(), []);
$router->addHandler("/", HomePage::getInstance(), []);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment