Webservices
This commit is contained in:
128
services/www/api/objects/gallery_item.php
Normal file
128
services/www/api/objects/gallery_item.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
class GalleryItem {
|
||||
|
||||
private const table_name = "gallery";
|
||||
private const select = "
|
||||
SELECT
|
||||
g.*,
|
||||
(select count(id) from gallery_like where gallery_id = g.id) as likes,
|
||||
|
||||
lu.id as lu_id,
|
||||
lu.name as lu_name,
|
||||
lu.surname as lu_surname,
|
||||
lu.code as lu_code,
|
||||
lu.picture as lu_picture,
|
||||
lu.admin as lu_admin,
|
||||
lu.table as lu_table,
|
||||
lu.witness as lu_witness,
|
||||
lu.invited_by as lu_invited_by,
|
||||
|
||||
au.id as au_id,
|
||||
au.name as au_name,
|
||||
au.surname as au_surname,
|
||||
au.code as au_code,
|
||||
au.picture as au_picture,
|
||||
au.admin as au_admin,
|
||||
au.table as au_table,
|
||||
au.witness as au_witness,
|
||||
au.invited_by as au_invited_by,
|
||||
|
||||
glcu.id as glcu_id,
|
||||
glcu.gallery_id as glcu_gallery_id,
|
||||
glcu.user_id as glcu_user_id,
|
||||
glcu.created as glcu_created
|
||||
|
||||
FROM " . self::table_name . " g
|
||||
-- Author
|
||||
LEFT JOIN `user` au
|
||||
ON au.id = g.author
|
||||
-- First liked user
|
||||
LEFT JOIN gallery_like gl
|
||||
ON gl.gallery_id = g.id
|
||||
LEFT JOIN `user` lu
|
||||
ON lu.id = gl.user_id
|
||||
-- Like from current user
|
||||
LEFT JOIN gallery_like glcu
|
||||
ON glcu.gallery_id = g.id
|
||||
AND glcu.user_id = :uid
|
||||
";
|
||||
|
||||
static function read($db, $uid, $page, $elemPerPage){
|
||||
$start = $page * $elemPerPage;
|
||||
$limit = $elemPerPage + 1; // Retrieve one more item to know if there are elements and compute "more" value
|
||||
$query = self::select . "
|
||||
GROUP BY g.id
|
||||
ORDER BY created DESC
|
||||
LIMIT :start,:limit";
|
||||
|
||||
// prepare query statement
|
||||
$stmt = $db->prepare($query);
|
||||
$stmt->bindParam(":uid", $uid);
|
||||
$stmt->bindParam(":start", $start, PDO::PARAM_INT);
|
||||
$stmt->bindParam(":limit", $limit, PDO::PARAM_INT);
|
||||
|
||||
// execute query
|
||||
$stmt->execute();
|
||||
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
static function readById($db, $uid, $id){
|
||||
$query = self::select . "
|
||||
WHERE g.id = :id
|
||||
GROUP BY g.id
|
||||
ORDER BY created DESC
|
||||
";
|
||||
// prepare query statement
|
||||
$stmt = $db->prepare($query);
|
||||
$stmt->bindParam(":id", $id);
|
||||
$stmt->bindParam(":uid", $uid);
|
||||
|
||||
// execute query
|
||||
$stmt->execute();
|
||||
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
static function create($db, $item){
|
||||
$query = "INSERT INTO " . self::table_name . "
|
||||
SET image_url=:imageUrl, image_thumb_url=:imageThumbUrl, description=:description, author=:author";
|
||||
|
||||
// prepare query
|
||||
$stmt = $db->prepare($query);
|
||||
|
||||
// sanitize
|
||||
$imageUrl=htmlspecialchars(strip_tags($item['imageUrl']));
|
||||
$imageThumbUrl=htmlspecialchars(strip_tags($item['imageThumbUrl']));
|
||||
$description=htmlspecialchars(strip_tags($item['description']));
|
||||
$author=htmlspecialchars(strip_tags($item['author']));
|
||||
|
||||
// bind values
|
||||
$stmt->bindParam(":imageUrl", $imageUrl);
|
||||
$stmt->bindParam(":imageThumbUrl", $imageThumbUrl);
|
||||
$stmt->bindParam(":description", $description);
|
||||
$stmt->bindParam(":author", $author);
|
||||
|
||||
// execute query
|
||||
if($stmt->execute()){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static function fromRow($row) {
|
||||
return array(
|
||||
"id" => $row['id'],
|
||||
"imageUrl" => $row['image_url'],
|
||||
"imageThumbUrl" => $row['image_thumb_url'],
|
||||
"likes" => $row['likes'],
|
||||
"firstUserLiked" => User::createFromRow($row, 'lu'),
|
||||
"description" => $row['description'],
|
||||
"author" => User::createFromRow($row, 'au'),
|
||||
"created" => $row['created'],
|
||||
"currentUserLike" => Like::createFromRow($row, 'glcu'),
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user