Can update user page like status

This commit is contained in:
Pierre 2017-12-29 09:49:44 +01:00
parent a902a44927
commit 41f6e94c19
2 changed files with 101 additions and 0 deletions

View File

@ -0,0 +1,59 @@
<?php
/**
* API likes controller
*
* @author Pierre HUBERT
*/
class likesController {
/**
* Update a specific component like
*
* @url POST /likes/update
*/
public function update_like(){
user_login_required(); //Need login
//Get component kind
if(!isset($_POST["type"]))
Rest_fatal_error(401, "Please specify like type !");
$type = $_POST["type"];
//Check new status for the like
if(!isset($_POST['like']))
Rest_fatal_error(400, "Please specify the new like status with the request !");
$like = $_POST['like'] == "true";
//Find the right component type for checks
switch($type){
//In case of user
case "user":
//Extract informations
$id = getPostUserId("id");
$componentType = Likes::LIKE_USER;
//Check if user can access page
if(!CS::get()->components->user->userAllowed(userID, $id))
Rest_fatal_error(401, "You can not access this user information !");
break;
//Default case : error
default:
Rest_fatal_error(404, "Didn't find specified component type !");
}
//Update like status
CS::get()->components->likes->update(userID, $like, $id, $componentType);
//Success
return array("success" => "Like status updated.");
}
}

View File

@ -69,6 +69,48 @@ class Likes {
}
/**
* Update like status
*
* @param int $userID The ID of the user
* @param bool $like New like status
* @param int $id The ID of the component element to update
* @param string $kind The kind of component
*/
public function update(int $userID, bool $like, int $id, string $kind){
//Check if the request is not to like anymore
if(!$like){
//Delete on the database
$conditions = "ID_personne = ? AND ID_type = ? AND type = ?";
$values = array($userID, $id, $this::KINDS_DB[$kind]);
CS::get()->db->deleteEntry($this::LIKES_TABLE, $conditions, $values);
}
//We have to like component
else {
//Check if user is already liking component
if($this->is_liking($userID, $id, $kind))
return; //Nothing to be done
//Insert in the database
$values = array(
"ID_type" => $id,
"ID_personne" => $userID,
"Date_envoi" => mysql_date(),
"type" => $this::KINDS_DB[$kind]
);
//Insert in the database
CS::get()->db->addLine($this::LIKES_TABLE, $values);
}
}
}
//Register class