diff --git a/docker-compose.yml b/docker-compose.yml index 5b5ded32b6d76dbdbb956b197345a5ffc3e3d19a..85350a9a139c684fc2a0284bbd4b07f1b367dac2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,6 @@ services: php-postgres: image: postgres:16-alpine container_name: ${MONOLITHIC_POSTGRES_HOST} - restart: always environment: POSTGRES_USER: ${MONOLITHIC_POSTGRES_USER} POSTGRES_PASSWORD: ${MONOLITHIC_POSTGRES_PASSWORD} diff --git a/src/app/controllers/Home/GetPostController.php b/src/app/controllers/Home/GetPostController.php index bdc856a11990069b759b29089b70cbd44435d5a0..f45cf1ac577d2b99b19ad3193ffeae7e1ee7917d 100644 --- a/src/app/controllers/Home/GetPostController.php +++ b/src/app/controllers/Home/GetPostController.php @@ -12,7 +12,13 @@ class GetPostController extends BaseController{ } public function get($urlParams){ $page = $urlParams[0]; - $data = $this->srv->getPostPage($page); + if(array_key_exists('owner_id', $_GET)) { + $ownerId = $_GET['owner_id']; + } + else { + $ownerId = null; + } + $data = $this->srv->getPostPage($page, $ownerId); if($data!=null){ $hasiljson = array( 'status' => 'sukses', diff --git a/src/app/controllers/Page/ProfilePage.php b/src/app/controllers/Page/ProfilePage.php index 8ce3ca7ac2c04986af3eae789f7090c8d9113a5c..7c9539b63643febb90215211ad76bd5091351406 100644 --- a/src/app/controllers/Page/ProfilePage.php +++ b/src/app/controllers/Page/ProfilePage.php @@ -13,6 +13,9 @@ class ProfilePage extends BaseController{ return self::$instance; } public function get($urlParams){ + if(!isset($_SESSION['user_id'])) { + header("Location: /login"); + } require PAGE_PATH . "/profile.php"; exit(); } diff --git a/src/app/models/HomeModel.php b/src/app/models/HomeModel.php index 2ba3ec71636ffd3dd808a7460a8e71ee8f6d41ea..e342130127538e8f5c0c5faa08da2c59afe78c59 100644 --- a/src/app/models/HomeModel.php +++ b/src/app/models/HomeModel.php @@ -15,12 +15,19 @@ class HomeModel } return self::$instance; } - public function getPostPage($page){ + public function getPostPage($page, $ownerId=null){ try{ + if(!is_null($ownerId)){ + $and_owner_id = " AND p.owner_id=$ownerId "; + } + else { + $and_owner_id = ""; + } + $db = PDOHandler::getInstance()->getPDO(); $page = $page * 10; - $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,u.profile_picture_path,p.body,pr.path 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.refer_type IS NULL ORDER BY p.created_at DESC LIMIT 10 OFFSET $page"; - $count = "SELECT COUNT(*) as count 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.refer_type IS NULL"; + $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,u.profile_picture_path,p.body,pr.path 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.refer_type IS NULL $and_owner_id ORDER BY p.created_at DESC LIMIT 10 OFFSET $page"; + $count = "SELECT COUNT(*) as count 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.refer_type IS NULL $and_owner_id"; $result = $db->query($sql); $result2 = $db->query($count); if($result){ diff --git a/src/app/view/profile.php b/src/app/view/profile.php index de89ddbc436a72965bf8eda50ec28a376eb11def..c20ab4d00bbcf0530c4069e7db23623dbcbb928e 100644 --- a/src/app/view/profile.php +++ b/src/app/view/profile.php @@ -8,6 +8,7 @@ require_once PAGE_PATH . "/templates/navbar.php"; <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Profile</title> + <link rel="stylesheet" href="/public/css/home.css" /> <link rel="stylesheet" href="/public/css/shared.css" /> <link rel="stylesheet" href="/public/css/profile.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"> @@ -18,16 +19,21 @@ require_once PAGE_PATH . "/templates/navbar.php"; <?php echo Navbar(); ?> - <div class="box" id="box"> - <div class="iden"> - <img src="/public/assets/kajuha.jpg" alt="" class="fotoprofil"> - <div class="kolom"> - <p id="namaprofile"></p> - <p id="username"></p> - </div> - </div> - </div> + <div> + <div class="box" id="box"> + <div class="iden"> + <img src="/public/assets/kajuha.jpg" alt="" class="fotoprofil"> + <div class="kolom"> + <p id="namaprofile"></p> + <p id="username"></p> + </div> + </div> + </div> + <div id="list-post"> + </div> </div> + </div> <script src="/public/js/profile.js"></script> + <script src="/public/js/home.js"></script> </body> </html> \ No newline at end of file diff --git a/src/public/js/home.js b/src/public/js/home.js index 6a56902cc4f7e7888b86d9374aadb38bee5432d8..b8f2f5cb435c53669b144b21d34379d0d0820308 100644 --- a/src/public/js/home.js +++ b/src/public/js/home.js @@ -1,5 +1,30 @@ +const xhr = new XMLHttpRequest(); +const url = '/api/getpost/0'; + +xhr.open('GET', url, true); +xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + +xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + const response = JSON.parse(xhr.responseText); + if(response.status==="error"){ + alert(response.message); + } + else if(response.status==="sukses"){ + console.log(response); + var totalpost = response.data.count; + var totalPage = Math.ceil(totalpost/10); + createPost(response.data.data,totalPage,1); + } + } else { + console.error('Gagal melakukan permintaan'); + } + } +}; +xhr.send(); -function createPost(data,totalsemuapage,pagenow){ +function createPost(data,totalsemuapage,pagenow,owner_id=null){ const post = document.getElementById('list-post'); data.forEach(element => { const username = document.createElement('p'); @@ -137,32 +162,8 @@ function likeId(postid,userid){ }; xhr.send(`post_id=${encodeURIComponent(postid)}&owner=${encodeURIComponent(userid)}`); } -const xhr = new XMLHttpRequest(); -const url = '/api/getpost/0'; - -xhr.open('GET', url, true); -xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); -xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - const response = JSON.parse(xhr.responseText); - if(response.status==="error"){ - alert(response.message); - } - else if(response.status==="sukses"){ - console.log(response); - var totalpost = response.data.count; - var totalPage = Math.ceil(totalpost/10); - createPost(response.data.data,totalPage,1); - } - } else { - console.error('Gagal melakukan permintaan'); - } - } -}; -xhr.send(); -function makePagination(totalPages,page){ +function makePagination(totalPages,page,owner_id=null){ console.log(page); const ulTag = document.querySelector('ul'); let liTag = ''; @@ -216,10 +217,11 @@ function klikPagination(totalPages,page){ changePage(page); } -function changePage(page){ +function changePage(page,owner_id=null){ const xhr = new XMLHttpRequest(); var getpage = (page-1); - const url = '/api/getpost/'+getpage.toString(); + var url = '/api/getpost/'+getpage.toString(); + if(owner_id !== null) url.concat("?", owner_id) xhr.open('GET', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');