new folder structure for php scripts
renamed api nodes php braces on same line
This commit is contained in:
30
api/Tags.php
30
api/Tags.php
@ -1,30 +0,0 @@
|
||||
<?php
|
||||
require_once 'RequestBase.php';
|
||||
|
||||
class Tags extends RequestBase {
|
||||
function initHandlers() {
|
||||
$this->addActionHandler("getAllTags", function () {
|
||||
$query = "SELECT tag_name,tag_id from tags";
|
||||
|
||||
$result = $this->conn->query($query);
|
||||
$rows = array();
|
||||
while ($r = mysqli_fetch_assoc($result)) {
|
||||
array_push($rows, $r);
|
||||
}
|
||||
echo json_encode($rows);
|
||||
});
|
||||
|
||||
$this->addActionHandler("createTag", function (){
|
||||
$query = "INSERT INTO tags (tag_name) VALUES ('" . $_POST['tagname'] . "')";
|
||||
|
||||
if ($this->conn->query($query) === TRUE) {
|
||||
echo('{"result":"success"}');
|
||||
} else {
|
||||
echo('{"result":"' . $this->conn->error . '"}');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$tags = new Tags();
|
||||
$tags->handleAction();
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
require 'Database.php';
|
||||
require 'TMDBMovie.php';
|
||||
require 'SSettings.php';
|
||||
require_once './src/Database.php';
|
||||
require_once './src/TMDBMovie.php';
|
||||
require_once './src/SSettings.php';
|
||||
|
||||
// allow UTF8 characters
|
||||
setlocale(LC_ALL, 'en_US.UTF-8');
|
||||
@ -226,8 +226,7 @@ writeLog("-42"); // terminating characters to stop webui requesting infos
|
||||
* @param $video string name including extension
|
||||
* @return object all infos as object
|
||||
*/
|
||||
function _get_video_attributes($video)
|
||||
{
|
||||
function _get_video_attributes($video) {
|
||||
$command = "mediainfo \"../videos/prn/$video\" --Output=JSON";
|
||||
$output = shell_exec($command);
|
||||
return json_decode($output);
|
||||
@ -238,8 +237,7 @@ function _get_video_attributes($video)
|
||||
*
|
||||
* @param string $message message to write
|
||||
*/
|
||||
function writeLog(string $message)
|
||||
{
|
||||
function writeLog(string $message) {
|
||||
file_put_contents("/tmp/output.log", $message, FILE_APPEND);
|
||||
flush();
|
||||
}
|
||||
@ -249,8 +247,7 @@ function writeLog(string $message)
|
||||
* @param string $tagname the name of the tag
|
||||
* @return integer the id of the inserted tag
|
||||
*/
|
||||
function tagExists(string $tagname)
|
||||
{
|
||||
function tagExists(string $tagname) {
|
||||
global $conn;
|
||||
|
||||
$query = "SELECT * FROM tags WHERE tag_name='$tagname'";
|
||||
|
5
api/settings.php
Normal file
5
api/settings.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
require_once './src/handlers/Settings.php';
|
||||
|
||||
$sett = new Settings();
|
||||
$sett->handleAction();
|
@ -5,8 +5,7 @@
|
||||
*
|
||||
* Class with all neccessary stuff for the Database connections.
|
||||
*/
|
||||
class Database
|
||||
{
|
||||
class Database {
|
||||
private static ?Database $instance = null;
|
||||
private mysqli $conn;
|
||||
|
||||
@ -16,8 +15,7 @@ class Database
|
||||
private string $dbname = "mediacenter";
|
||||
|
||||
// The db connection is established in the private constructor.
|
||||
private function __construct()
|
||||
{
|
||||
private function __construct() {
|
||||
// Create connection
|
||||
$this->conn = new mysqli($this->servername, $this->username, $this->password, $this->dbname);
|
||||
|
||||
@ -32,8 +30,7 @@ class Database
|
||||
*
|
||||
* @return Database dbobject
|
||||
*/
|
||||
public static function getInstance()
|
||||
{
|
||||
public static function getInstance() {
|
||||
if (!self::$instance) {
|
||||
self::$instance = new Database();
|
||||
}
|
||||
@ -46,8 +43,7 @@ class Database
|
||||
*
|
||||
* @return mysqli mysqli instance
|
||||
*/
|
||||
public function getConnection()
|
||||
{
|
||||
public function getConnection() {
|
||||
return $this->conn;
|
||||
}
|
||||
|
||||
@ -55,7 +51,7 @@ class Database
|
||||
* get name of current active database
|
||||
* @return string name
|
||||
*/
|
||||
public function getDatabaseName(){
|
||||
public function getDatabaseName() {
|
||||
return $this->dbname;
|
||||
}
|
||||
}
|
@ -1,7 +1,10 @@
|
||||
<?php
|
||||
|
||||
class SSettings
|
||||
{
|
||||
/**
|
||||
* Class SSettings
|
||||
* class handling all Settings used by php scripts
|
||||
*/
|
||||
class SSettings {
|
||||
private ?Database $database;
|
||||
|
||||
/**
|
||||
@ -11,6 +14,10 @@ class SSettings
|
||||
$this->database = Database::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* get the videopath saved in db
|
||||
* @return string videopath
|
||||
*/
|
||||
public function getVideoPath() {
|
||||
$query = "SELECT video_path from settings";
|
||||
|
||||
@ -24,16 +31,15 @@ class SSettings
|
||||
* check if TMDB is enableds
|
||||
* @return bool isenabled?
|
||||
*/
|
||||
public function isTMDBGrabbingEnabled(): bool
|
||||
{
|
||||
public function isTMDBGrabbingEnabled(): bool {
|
||||
$query = "SELECT TMDB_grabbing from settings";
|
||||
|
||||
$result = $this->database->getConnection()->query($query);
|
||||
if(!$result){
|
||||
if (!$result) {
|
||||
return true; // if undefined in db --> default true
|
||||
}else{
|
||||
} else {
|
||||
$r = mysqli_fetch_assoc($result);
|
||||
return $r['TMDB_grabbing'] == '1';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
<?php
|
||||
|
||||
class TMDBMovie
|
||||
{
|
||||
/**
|
||||
* Class TMDBMovie
|
||||
* class to handle all interactions with the tmdb api
|
||||
*/
|
||||
class TMDBMovie {
|
||||
public $picturebase = "https://image.tmdb.org/t/p/w500";
|
||||
private $apikey = "9fd90530b11447f5646f8e6fb4733fb4";
|
||||
private $baseurl = "https://api.themoviedb.org/3/";
|
||||
public $picturebase = "https://image.tmdb.org/t/p/w500";
|
||||
|
||||
/**
|
||||
* search for a specific movie
|
||||
@ -12,8 +15,7 @@ class TMDBMovie
|
||||
* @param string $moviename moviename
|
||||
* @return object movie object or null if not found
|
||||
*/
|
||||
public function searchMovie(string $moviename)
|
||||
{
|
||||
public function searchMovie(string $moviename) {
|
||||
$reply = json_decode(file_get_contents($this->baseurl . "search/movie?api_key=" . $this->apikey . "&query=" . urlencode($moviename)));
|
||||
if ($reply->total_results == 0) {
|
||||
// no results found
|
||||
@ -29,8 +31,7 @@ class TMDBMovie
|
||||
*
|
||||
* @return array of all available genres
|
||||
*/
|
||||
public function getAllGenres()
|
||||
{
|
||||
public function getAllGenres() {
|
||||
$reply = json_decode(file_get_contents($this->baseurl . "genre/movie/list?api_key=" . $this->apikey));
|
||||
return $reply->genres;
|
||||
}
|
@ -1,14 +1,9 @@
|
||||
<?php
|
||||
require_once 'Database.php';
|
||||
require_once 'src/Database.php';
|
||||
|
||||
abstract class RequestBase {
|
||||
private array $actions = array();
|
||||
protected mysqli $conn;
|
||||
|
||||
/**
|
||||
* add the action handlers in this abstract method
|
||||
*/
|
||||
abstract function initHandlers();
|
||||
private array $actions = array();
|
||||
|
||||
/**
|
||||
* adds a new action handler to the current api file
|
||||
@ -38,4 +33,18 @@ abstract class RequestBase {
|
||||
echo('{data:"error"}');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send response message and exit script
|
||||
* @param $message string the response message
|
||||
*/
|
||||
function commitMessage($message){
|
||||
echo $message;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* add the action handlers in this abstract method
|
||||
*/
|
||||
abstract function initHandlers();
|
||||
}
|
@ -1,8 +1,23 @@
|
||||
<?php
|
||||
require 'RequestBase.php';
|
||||
require_once 'RequestBase.php';
|
||||
|
||||
/**
|
||||
* Class Settings
|
||||
* Backend for the Settings page
|
||||
*/
|
||||
class Settings extends RequestBase {
|
||||
function initHandlers() {
|
||||
$this->getFromDB();
|
||||
$this->saveToDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* handle settings stuff to load from db
|
||||
*/
|
||||
private function getFromDB(){
|
||||
/**
|
||||
* load currently set settings form db for init of settings page
|
||||
*/
|
||||
$this->addActionHandler("loadGeneralSettings", function () {
|
||||
$query = "SELECT * from settings";
|
||||
|
||||
@ -16,6 +31,30 @@ class Settings extends RequestBase {
|
||||
echo json_encode($r);
|
||||
});
|
||||
|
||||
/**
|
||||
* load initial data for home page load to check if pwd is set
|
||||
*/
|
||||
$this->addActionHandler("loadInitialData", function () {
|
||||
$query = "SELECT * from settings";
|
||||
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
$r = mysqli_fetch_assoc($result);
|
||||
|
||||
$r['passwordEnabled'] = $r['password'] != "-1";
|
||||
unset($r['password']);
|
||||
$r['DarkMode'] = (bool)($r['DarkMode'] != '0');
|
||||
$this->commitMessage(json_encode($r));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* handle setting stuff to save to db
|
||||
*/
|
||||
private function saveToDB(){
|
||||
/**
|
||||
* save changed settings to db
|
||||
*/
|
||||
$this->addActionHandler("saveGeneralSettings", function () {
|
||||
$mediacentername = $_POST['mediacentername'];
|
||||
$password = $_POST['password'];
|
||||
@ -34,26 +73,10 @@ class Settings extends RequestBase {
|
||||
WHERE 1";
|
||||
|
||||
if ($this->conn->query($query) === true) {
|
||||
echo '{"success": true}';
|
||||
$this->commitMessage('{"success": true}');
|
||||
} else {
|
||||
echo '{"success": true}';
|
||||
$this->commitMessage('{"success": true}');
|
||||
}
|
||||
});
|
||||
|
||||
$this->addActionHandler("loadInitialData", function () {
|
||||
$query = "SELECT * from settings";
|
||||
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
$r = mysqli_fetch_assoc($result);
|
||||
|
||||
$r['passwordEnabled'] = $r['password'] != "-1";
|
||||
unset($r['password']);
|
||||
$r['DarkMode'] = (bool)($r['DarkMode'] != '0');
|
||||
echo json_encode($r);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$sett = new Settings();
|
||||
$sett->handleAction();
|
66
api/src/handlers/Tags.php
Normal file
66
api/src/handlers/Tags.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
require_once 'RequestBase.php';
|
||||
|
||||
/**
|
||||
* Class Tags
|
||||
* backend to handle Tag database interactions
|
||||
*/
|
||||
class Tags extends RequestBase {
|
||||
function initHandlers() {
|
||||
$this->addToDB();
|
||||
$this->getFromDB();
|
||||
}
|
||||
|
||||
private function getFromDB(){
|
||||
/**
|
||||
* returns all available tags from database
|
||||
*/
|
||||
$this->addActionHandler("getAllTags", function () {
|
||||
$query = "SELECT tag_name,tag_id from tags";
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
$rows = array();
|
||||
while ($r = mysqli_fetch_assoc($result)) {
|
||||
array_push($rows, $r);
|
||||
}
|
||||
$this->commitMessage(json_encode($rows));
|
||||
});
|
||||
}
|
||||
|
||||
private function addToDB(){
|
||||
/**
|
||||
* creates a new tag
|
||||
* query requirements:
|
||||
* * tagname -- name of the new tag
|
||||
*/
|
||||
$this->addActionHandler("createTag", function () {
|
||||
$query = "INSERT INTO tags (tag_name) VALUES ('" . $_POST['tagname'] . "')";
|
||||
|
||||
if ($this->conn->query($query) === TRUE) {
|
||||
$this->commitMessage('{"result":"success"}');
|
||||
} else {
|
||||
$this->commitMessage('{"result":"' . $this->conn->error . '"}');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* adds a new tag to an existing video
|
||||
*
|
||||
* query requirements:
|
||||
* * movieid -- the id of the video to add the tag to
|
||||
* * id -- the tag id which tag to add
|
||||
*/
|
||||
$this->addActionHandler("addTag", function () {
|
||||
$movieid = $_POST['movieid'];
|
||||
$tagid = $_POST['id'];
|
||||
|
||||
$query = "INSERT INTO video_tags(tag_id, video_id) VALUES ('$tagid','$movieid')";
|
||||
|
||||
if ($this->conn->query($query) === TRUE) {
|
||||
$this->commitMessage('{"result":"success"}');
|
||||
} else {
|
||||
$this->commitMessage('{"result":"' . $this->conn->error . '"}');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,8 +1,11 @@
|
||||
<?php
|
||||
require_once 'Database.php';
|
||||
require_once 'SSettings.php';
|
||||
require_once 'src/SSettings.php';
|
||||
require_once 'RequestBase.php';
|
||||
|
||||
/**
|
||||
* Class Video
|
||||
* backend for all interactions with videoloads and receiving of video infos
|
||||
*/
|
||||
class Video extends RequestBase {
|
||||
private string $videopath;
|
||||
|
||||
@ -13,6 +16,15 @@ class Video extends RequestBase {
|
||||
}
|
||||
|
||||
function initHandlers() {
|
||||
$this->getVideos();
|
||||
$this->loadVideos();
|
||||
$this->addToVideo();
|
||||
}
|
||||
|
||||
/**
|
||||
* function handles load of all videos and search for videos
|
||||
*/
|
||||
private function getVideos() {
|
||||
$this->addActionHandler("getMovies", function () {
|
||||
$query = "SELECT movie_id,movie_name FROM videos ORDER BY create_date DESC, movie_name";
|
||||
if (isset($_POST['tag'])) {
|
||||
@ -31,7 +43,7 @@ class Video extends RequestBase {
|
||||
array_push($rows, $r);
|
||||
}
|
||||
|
||||
echo(json_encode($rows));
|
||||
$this->commitMessage(json_encode($rows));
|
||||
});
|
||||
|
||||
$this->addActionHandler("getRandomMovies", function () {
|
||||
@ -59,7 +71,7 @@ class Video extends RequestBase {
|
||||
array_push($return->tags, $r);
|
||||
}
|
||||
|
||||
echo(json_encode($return));
|
||||
$this->commitMessage(json_encode($return));
|
||||
});
|
||||
|
||||
$this->addActionHandler("getSearchKeyWord", function () {
|
||||
@ -74,9 +86,14 @@ class Video extends RequestBase {
|
||||
array_push($rows, $r);
|
||||
}
|
||||
|
||||
echo(json_encode($rows));
|
||||
$this->commitMessage(json_encode($rows));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* function to handle stuff for loading specific videos and startdata
|
||||
*/
|
||||
private function loadVideos() {
|
||||
$this->addActionHandler("loadVideo", function () {
|
||||
$query = "SELECT movie_name,movie_id,movie_url,thumbnail,poster,likes,quality,length FROM videos WHERE movie_id='" . $_POST['movieid'] . "'";
|
||||
|
||||
@ -110,23 +127,7 @@ class Video extends RequestBase {
|
||||
array_push($arr['tags'], $r);
|
||||
}
|
||||
|
||||
echo(json_encode($arr));
|
||||
});
|
||||
|
||||
$this->addActionHandler("getDbSize", function () {
|
||||
$dbname = Database::getInstance()->getDatabaseName();
|
||||
|
||||
$query = "SELECT table_schema AS \"Database\",
|
||||
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS \"Size\"
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA='$dbname'
|
||||
GROUP BY table_schema;";
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
if ($result->num_rows == 1) {
|
||||
$row = $result->fetch_assoc();
|
||||
echo '{"data":"' . $row["Size"] . 'MB"}';
|
||||
}
|
||||
$this->commitMessage(json_encode($arr));
|
||||
});
|
||||
|
||||
$this->addActionHandler("readThumbnail", function () {
|
||||
@ -135,38 +136,7 @@ class Video extends RequestBase {
|
||||
$result = $this->conn->query($query);
|
||||
$row = $result->fetch_assoc();
|
||||
|
||||
echo($row["thumbnail"]);
|
||||
});
|
||||
|
||||
$this->addActionHandler("getTags", function () {
|
||||
// todo add this to loadVideo maybe
|
||||
$movieid = $_POST['movieid'];
|
||||
|
||||
$query = "SELECT tag_name FROM video_tags
|
||||
INNER JOIN tags t on video_tags.tag_id = t.tag_id
|
||||
WHERE video_id='$movieid'";
|
||||
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
$rows = array();
|
||||
$rows['tags'] = array();
|
||||
while ($r = mysqli_fetch_assoc($result)) {
|
||||
array_push($rows['tags'], $r['tag_name']);
|
||||
}
|
||||
|
||||
echo(json_encode($rows));
|
||||
});
|
||||
|
||||
$this->addActionHandler("addLike", function () {
|
||||
$movieid = $_POST['movieid'];
|
||||
|
||||
$query = "update videos set likes = likes + 1 where movie_id = '$movieid'";
|
||||
|
||||
if ($this->conn->query($query) === TRUE) {
|
||||
echo('{"result":"success"}');
|
||||
} else {
|
||||
echo('{"result":"' . $this->conn->error . '"}');
|
||||
}
|
||||
$this->commitMessage($row["thumbnail"]);
|
||||
});
|
||||
|
||||
$this->addActionHandler("getStartData", function () {
|
||||
@ -213,34 +183,24 @@ class Video extends RequestBase {
|
||||
$r = mysqli_fetch_assoc($result);
|
||||
$arr['tags'] = $r['nr'];
|
||||
|
||||
echo(json_encode($arr));
|
||||
$this->commitMessage(json_encode($arr));
|
||||
});
|
||||
}
|
||||
|
||||
$this->addActionHandler("getAllTags", function () {
|
||||
$query = "SELECT tag_name,tag_id from tags";
|
||||
$result = $this->conn->query($query);
|
||||
|
||||
$rows = array();
|
||||
while ($r = mysqli_fetch_assoc($result)) {
|
||||
array_push($rows, $r);
|
||||
}
|
||||
echo(json_encode($rows));
|
||||
});
|
||||
|
||||
$this->addActionHandler("addTag", function () {
|
||||
/**
|
||||
* function to handle api handlers for stuff to add to video or database
|
||||
*/
|
||||
private function addToVideo() {
|
||||
$this->addActionHandler("addLike", function () {
|
||||
$movieid = $_POST['movieid'];
|
||||
$tagid = $_POST['id'];
|
||||
|
||||
$query = "INSERT INTO video_tags(tag_id, video_id) VALUES ('$tagid','$movieid')";
|
||||
$query = "update videos set likes = likes + 1 where movie_id = '$movieid'";
|
||||
|
||||
if ($this->conn->query($query) === TRUE) {
|
||||
echo('{"result":"success"}');
|
||||
$this->commitMessage('{"result":"success"}');
|
||||
} else {
|
||||
echo('{"result":"' . $this->conn->error . '"}');
|
||||
$this->commitMessage('{"result":"' . $this->conn->error . '"}');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$video = new Video();
|
||||
$video->handleAction();
|
5
api/tags.php
Normal file
5
api/tags.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
include_once './src/handlers/Tags.php';
|
||||
|
||||
$tags = new Tags();
|
||||
$tags->handleAction();
|
5
api/video.php
Normal file
5
api/video.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
include_once './src/handlers/Video.php';
|
||||
|
||||
$video = new Video();
|
||||
$video->handleAction();
|
Reference in New Issue
Block a user