classify videoload and Tag requests
This commit is contained in:
parent
fd9a54209d
commit
a2385e8e4c
@ -1,24 +1,41 @@
|
|||||||
<?php
|
<?php
|
||||||
require 'Database.php';
|
require_once 'Database.php';
|
||||||
|
|
||||||
abstract class RequestBase {
|
abstract class RequestBase {
|
||||||
private array $actions = array();
|
private array $actions = array();
|
||||||
protected mysqli $conn;
|
protected mysqli $conn;
|
||||||
|
|
||||||
abstract function initIdentifiers();
|
/**
|
||||||
|
* add the action handlers in this abstract method
|
||||||
|
*/
|
||||||
|
abstract function initHandlers();
|
||||||
|
|
||||||
function addIdentifier($action, $callback) {
|
/**
|
||||||
|
* adds a new action handler to the current api file
|
||||||
|
*
|
||||||
|
* @param $action string name of the action variable
|
||||||
|
* @param $callback Closure callback function to be called
|
||||||
|
*/
|
||||||
|
function addActionHandler($action, $callback) {
|
||||||
$this->actions[$action] = $callback;
|
$this->actions[$action] = $callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* runs the correct handler
|
||||||
|
* should be called once within the api request
|
||||||
|
*/
|
||||||
function handleAction() {
|
function handleAction() {
|
||||||
$this->conn = Database::getInstance()->getConnection();
|
$this->conn = Database::getInstance()->getConnection();
|
||||||
|
|
||||||
if (isset($_POST['action'])) {
|
if (isset($_POST['action'])) {
|
||||||
$this->initIdentifiers();
|
$this->initHandlers();
|
||||||
|
|
||||||
$action = $_POST['action'];
|
$action = $_POST['action'];
|
||||||
call_user_func($this->actions[$action]);
|
|
||||||
|
// call the right handler
|
||||||
|
$this->actions[$action]();
|
||||||
|
} else {
|
||||||
|
echo('{data:"error"}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
require 'RequestBase.php';
|
require 'RequestBase.php';
|
||||||
|
|
||||||
class Settings extends RequestBase {
|
class Settings extends RequestBase {
|
||||||
function initIdentifiers() {
|
function initHandlers() {
|
||||||
$this->addIdentifier("loadGeneralSettings", function () {
|
$this->addActionHandler("loadGeneralSettings", function () {
|
||||||
$query = "SELECT * from settings";
|
$query = "SELECT * from settings";
|
||||||
|
|
||||||
$result = $this->conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
@ -19,7 +19,7 @@ class Settings extends RequestBase {
|
|||||||
echo json_encode($r);
|
echo json_encode($r);
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->addIdentifier("saveGeneralSettings", function () {
|
$this->addActionHandler("saveGeneralSettings", function () {
|
||||||
$mediacentername = $_POST['mediacentername'];
|
$mediacentername = $_POST['mediacentername'];
|
||||||
$password = $_POST['password'];
|
$password = $_POST['password'];
|
||||||
$videopath = $_POST['videopath'];
|
$videopath = $_POST['videopath'];
|
||||||
@ -41,7 +41,7 @@ class Settings extends RequestBase {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$this->addIdentifier("loadInitialData", function () {
|
$this->addActionHandler("loadInitialData", function () {
|
||||||
$query = "SELECT * from settings";
|
$query = "SELECT * from settings";
|
||||||
|
|
||||||
$result = $this->conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
|
27
api/Tags.php
27
api/Tags.php
@ -1,31 +1,30 @@
|
|||||||
<?php
|
<?php
|
||||||
require 'Database.php';
|
require_once 'RequestBase.php';
|
||||||
|
|
||||||
$conn = Database::getInstance()->getConnection();
|
class Tags extends RequestBase {
|
||||||
|
function initHandlers() {
|
||||||
if (isset($_POST['action'])) {
|
$this->addActionHandler("getAllTags", function () {
|
||||||
$action = $_POST['action'];
|
|
||||||
switch ($action) {
|
|
||||||
case "getAllTags":
|
|
||||||
$query = "SELECT tag_name,tag_id from tags";
|
$query = "SELECT tag_name,tag_id from tags";
|
||||||
|
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$rows = array();
|
$rows = array();
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($rows, $r);
|
array_push($rows, $r);
|
||||||
}
|
}
|
||||||
echo json_encode($rows);
|
echo json_encode($rows);
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
$this->addActionHandler("createTag", function (){
|
||||||
|
|
||||||
case "createTag":
|
|
||||||
$query = "INSERT INTO tags (tag_name) VALUES ('" . $_POST['tagname'] . "')";
|
$query = "INSERT INTO tags (tag_name) VALUES ('" . $_POST['tagname'] . "')";
|
||||||
|
|
||||||
if ($conn->query($query) === TRUE) {
|
if ($this->conn->query($query) === TRUE) {
|
||||||
echo('{"result":"success"}');
|
echo('{"result":"success"}');
|
||||||
} else {
|
} else {
|
||||||
echo('{"result":"' . $conn->error . '"}');
|
echo('{"result":"' . $this->conn->error . '"}');
|
||||||
}
|
}
|
||||||
break;
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tags = new Tags();
|
||||||
|
$tags->handleAction();
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
require 'Database.php';
|
require_once 'Database.php';
|
||||||
require 'SSettings.php';
|
require_once 'SSettings.php';
|
||||||
|
require_once 'RequestBase.php';
|
||||||
|
|
||||||
// establish initial db connection
|
class Video extends RequestBase {
|
||||||
$conn = Database::getInstance()->getConnection();
|
private string $videopath;
|
||||||
$settings = new SSettings();
|
|
||||||
|
|
||||||
// load video path from settings
|
public function __construct() {
|
||||||
$videopath = $settings->getVideoPath();
|
$settings = new SSettings();
|
||||||
|
// load video path from settings
|
||||||
|
$this->videopath = $settings->getVideoPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
function initHandlers() {
|
||||||
if (isset($_POST['action'])) {
|
$this->addActionHandler("getMovies", function () {
|
||||||
$action = $_POST['action'];
|
|
||||||
switch ($action) {
|
|
||||||
case "getMovies":
|
|
||||||
$query = "SELECT movie_id,movie_name FROM videos ORDER BY create_date DESC, movie_name ASC";
|
$query = "SELECT movie_id,movie_name FROM videos ORDER BY create_date DESC, movie_name ASC";
|
||||||
if (isset($_POST['tag'])) {
|
if (isset($_POST['tag'])) {
|
||||||
$tag = $_POST['tag'];
|
$tag = $_POST['tag'];
|
||||||
@ -25,18 +25,19 @@ if (isset($_POST['action'])) {
|
|||||||
ORDER BY likes DESC, create_date ASC, movie_name ASC";
|
ORDER BY likes DESC, create_date ASC, movie_name ASC";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$rows = array();
|
$rows = array();
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($rows, $r);
|
array_push($rows, $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo(json_encode($rows));
|
echo(json_encode($rows));
|
||||||
break;
|
});
|
||||||
case "getRandomMovies":
|
|
||||||
|
$this->addActionHandler("getRandomMovies", function () {
|
||||||
$return = new stdClass();
|
$return = new stdClass();
|
||||||
$query = "SELECT movie_id,movie_name FROM videos ORDER BY RAND() LIMIT " . $_POST['number'];
|
$query = "SELECT movie_id,movie_name FROM videos ORDER BY RAND() LIMIT " . $_POST['number'];
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$return->rows = array();
|
$return->rows = array();
|
||||||
|
|
||||||
// get tags of random videos
|
// get tags of random videos
|
||||||
@ -53,32 +54,33 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
||||||
WHERE $idstring
|
WHERE $idstring
|
||||||
GROUP BY t.tag_name";
|
GROUP BY t.tag_name";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($return->tags, $r);
|
array_push($return->tags, $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo(json_encode($return));
|
echo(json_encode($return));
|
||||||
break;
|
});
|
||||||
case "getSearchKeyWord":
|
|
||||||
|
$this->addActionHandler("getSearchKeyWord", function () {
|
||||||
$search = $_POST['keyword'];
|
$search = $_POST['keyword'];
|
||||||
|
|
||||||
$query = "SELECT movie_id,movie_name FROM videos
|
$query = "SELECT movie_id,movie_name FROM videos
|
||||||
WHERE movie_name LIKE '%$search%'
|
WHERE movie_name LIKE '%$search%'
|
||||||
ORDER BY likes DESC, create_date DESC, movie_name ASC";
|
ORDER BY likes DESC, create_date DESC, movie_name ASC";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$rows = array();
|
$rows = array();
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($rows, $r);
|
array_push($rows, $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo(json_encode($rows));
|
echo(json_encode($rows));
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
$this->addActionHandler("loadVideo", function () {
|
||||||
case "loadVideo":
|
|
||||||
$query = "SELECT movie_name,movie_id,movie_url,thumbnail,poster,likes,quality,length FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
|
$query = "SELECT movie_name,movie_id,movie_url,thumbnail,poster,likes,quality,length FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
|
||||||
|
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$row = $result->fetch_assoc();
|
$row = $result->fetch_assoc();
|
||||||
|
|
||||||
$arr = array();
|
$arr = array();
|
||||||
@ -92,7 +94,7 @@ if (isset($_POST['action'])) {
|
|||||||
$arr["movie_name"] = $row["movie_name"];
|
$arr["movie_name"] = $row["movie_name"];
|
||||||
// todo drop video url from db -- maybe one with and one without extension
|
// todo drop video url from db -- maybe one with and one without extension
|
||||||
// extension hardcoded here!!!
|
// extension hardcoded here!!!
|
||||||
$arr["movie_url"] = str_replace("?", "%3F", $videopath . $row["movie_name"] . ".mp4");
|
$arr["movie_url"] = str_replace("?", "%3F", $this->videopath . $row["movie_name"] . ".mp4");
|
||||||
$arr["likes"] = $row["likes"];
|
$arr["likes"] = $row["likes"];
|
||||||
$arr["quality"] = $row["quality"];
|
$arr["quality"] = $row["quality"];
|
||||||
$arr["length"] = $row["length"];
|
$arr["length"] = $row["length"];
|
||||||
@ -103,15 +105,15 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
||||||
WHERE video_tags.video_id=" . $_POST['movieid'] . "
|
WHERE video_tags.video_id=" . $_POST['movieid'] . "
|
||||||
GROUP BY t.tag_name";
|
GROUP BY t.tag_name";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($arr['tags'], $r);
|
array_push($arr['tags'], $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo(json_encode($arr));
|
echo(json_encode($arr));
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
$this->addActionHandler("getDbSize", function () {
|
||||||
case "getDbSize":
|
|
||||||
$dbname = Database::getInstance()->getDatabaseName();
|
$dbname = Database::getInstance()->getDatabaseName();
|
||||||
|
|
||||||
$query = "SELECT table_schema AS \"Database\",
|
$query = "SELECT table_schema AS \"Database\",
|
||||||
@ -119,24 +121,24 @@ if (isset($_POST['action'])) {
|
|||||||
FROM information_schema.TABLES
|
FROM information_schema.TABLES
|
||||||
WHERE TABLE_SCHEMA='$dbname'
|
WHERE TABLE_SCHEMA='$dbname'
|
||||||
GROUP BY table_schema;";
|
GROUP BY table_schema;";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
|
|
||||||
if ($result->num_rows == 1) {
|
if ($result->num_rows == 1) {
|
||||||
$row = $result->fetch_assoc();
|
$row = $result->fetch_assoc();
|
||||||
echo '{"data":"' . $row["Size"] . 'MB"}';
|
echo '{"data":"' . $row["Size"] . 'MB"}';
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
$this->addActionHandler("readThumbnail", function () {
|
||||||
case "readThumbnail":
|
|
||||||
$query = "SELECT thumbnail FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
|
$query = "SELECT thumbnail FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
|
||||||
|
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$row = $result->fetch_assoc();
|
$row = $result->fetch_assoc();
|
||||||
|
|
||||||
echo($row["thumbnail"]);
|
echo($row["thumbnail"]);
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
$this->addActionHandler("getTags", function () {
|
||||||
case "getTags":
|
|
||||||
// todo add this to loadVideo maybe
|
// todo add this to loadVideo maybe
|
||||||
$movieid = $_POST['movieid'];
|
$movieid = $_POST['movieid'];
|
||||||
|
|
||||||
@ -144,7 +146,7 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
||||||
WHERE video_id='$movieid'";
|
WHERE video_id='$movieid'";
|
||||||
|
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
$rows['tags'] = array();
|
$rows['tags'] = array();
|
||||||
@ -153,21 +155,23 @@ if (isset($_POST['action'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo(json_encode($rows));
|
echo(json_encode($rows));
|
||||||
break;
|
});
|
||||||
case "addLike":
|
|
||||||
|
$this->addActionHandler("addLike", function () {
|
||||||
$movieid = $_POST['movieid'];
|
$movieid = $_POST['movieid'];
|
||||||
|
|
||||||
$query = "update videos set likes = likes + 1 where movie_id = '$movieid'";
|
$query = "update videos set likes = likes + 1 where movie_id = '$movieid'";
|
||||||
|
|
||||||
if ($conn->query($query) === TRUE) {
|
if ($this->conn->query($query) === TRUE) {
|
||||||
echo('{"result":"success"}');
|
echo('{"result":"success"}');
|
||||||
} else {
|
} else {
|
||||||
echo('{"result":"' . $conn->error . '"}');
|
echo('{"result":"' . $this->conn->error . '"}');
|
||||||
}
|
}
|
||||||
break;
|
});
|
||||||
case "getStartData":
|
|
||||||
|
$this->addActionHandler("getStartData", function () {
|
||||||
$query = "SELECT COUNT(*) as nr FROM videos";
|
$query = "SELECT COUNT(*) as nr FROM videos";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
|
|
||||||
$arr = array();
|
$arr = array();
|
||||||
@ -176,7 +180,7 @@ if (isset($_POST['action'])) {
|
|||||||
$query = "SELECT COUNT(*) as nr FROM videos
|
$query = "SELECT COUNT(*) as nr FROM videos
|
||||||
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
||||||
INNER JOIN tags t on vt.tag_id = t.tag_id";
|
INNER JOIN tags t on vt.tag_id = t.tag_id";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
$arr['tagged'] = $r['nr'];
|
$arr['tagged'] = $r['nr'];
|
||||||
|
|
||||||
@ -184,7 +188,7 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
||||||
INNER JOIN tags t on vt.tag_id = t.tag_id
|
INNER JOIN tags t on vt.tag_id = t.tag_id
|
||||||
WHERE t.tag_name='hd'";
|
WHERE t.tag_name='hd'";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
$arr['hd'] = $r['nr'];
|
$arr['hd'] = $r['nr'];
|
||||||
|
|
||||||
@ -192,7 +196,7 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
||||||
INNER JOIN tags t on vt.tag_id = t.tag_id
|
INNER JOIN tags t on vt.tag_id = t.tag_id
|
||||||
WHERE t.tag_name='fullhd'";
|
WHERE t.tag_name='fullhd'";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
$arr['fullhd'] = $r['nr'];
|
$arr['fullhd'] = $r['nr'];
|
||||||
|
|
||||||
@ -200,43 +204,43 @@ if (isset($_POST['action'])) {
|
|||||||
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
INNER JOIN video_tags vt on videos.movie_id = vt.video_id
|
||||||
INNER JOIN tags t on vt.tag_id = t.tag_id
|
INNER JOIN tags t on vt.tag_id = t.tag_id
|
||||||
WHERE t.tag_name='lowquality'";
|
WHERE t.tag_name='lowquality'";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
$arr['sd'] = $r['nr'];
|
$arr['sd'] = $r['nr'];
|
||||||
|
|
||||||
$query = "SELECT COUNT(*) as nr FROM tags";
|
$query = "SELECT COUNT(*) as nr FROM tags";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
$r = mysqli_fetch_assoc($result);
|
$r = mysqli_fetch_assoc($result);
|
||||||
$arr['tags'] = $r['nr'];
|
$arr['tags'] = $r['nr'];
|
||||||
|
|
||||||
echo(json_encode($arr));
|
echo(json_encode($arr));
|
||||||
break;
|
});
|
||||||
|
|
||||||
case "getAllTags":
|
$this->addActionHandler("getAllTags", function () {
|
||||||
$query = "SELECT tag_name,tag_id from tags";
|
$query = "SELECT tag_name,tag_id from tags";
|
||||||
$result = $conn->query($query);
|
$result = $this->conn->query($query);
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
while ($r = mysqli_fetch_assoc($result)) {
|
while ($r = mysqli_fetch_assoc($result)) {
|
||||||
array_push($rows, $r);
|
array_push($rows, $r);
|
||||||
}
|
}
|
||||||
echo(json_encode($rows));
|
echo(json_encode($rows));
|
||||||
break;
|
});
|
||||||
case "addTag":
|
|
||||||
|
$this->addActionHandler("addTag", function () {
|
||||||
$movieid = $_POST['movieid'];
|
$movieid = $_POST['movieid'];
|
||||||
$tagid = $_POST['id'];
|
$tagid = $_POST['id'];
|
||||||
|
|
||||||
$query = "INSERT INTO video_tags(tag_id, video_id) VALUES ('$tagid','$movieid')";
|
$query = "INSERT INTO video_tags(tag_id, video_id) VALUES ('$tagid','$movieid')";
|
||||||
|
|
||||||
if ($conn->query($query) === TRUE) {
|
if ($this->conn->query($query) === TRUE) {
|
||||||
echo('{"result":"success"}');
|
echo('{"result":"success"}');
|
||||||
} else {
|
} else {
|
||||||
echo('{"result":"' . $conn->error . '"}');
|
echo('{"result":"' . $this->conn->error . '"}');
|
||||||
}
|
}
|
||||||
break;
|
});
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
echo('{data:"error"}');
|
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
|
|
||||||
|
$video = new Video();
|
||||||
|
$video->handleAction();
|
||||||
|
Loading…
Reference in New Issue
Block a user