Commit 7449c7ed authored by Nico Schallehn's avatar Nico Schallehn

Cleanup des Quellcodes

parent 1fbef097
......@@ -2,7 +2,7 @@
- Web: Feature: Rechteverwaltung Implementiert
- API: Feature: Rechte aus JSON Datei laden und diese verwenden.
- API: CodeClean: Nicht benutztes Rechtesystem für Filterlisten entfernt
- API: CodeClean: Reduziere Code von 712 Zeilen auf
- API: CodeClean: Reduziere Code von 712 Zeilen auf
2016-02-12 0.05
- Debugarrays werden nur noch ausgegeben wenn für das Rechte level das Recht gesetzt ist
......
......@@ -5,16 +5,14 @@
* @version siehe define API_VERSION
*/
/**
* Konfig:
*/
/* Konfig: */
define(API_KEY_LEN, 10);
define(API_VERSION, 0.06);
define(API_KEY_DB, "/var/www/mediadb.ivaya.de/Key.sqlite");
define(API_Rights, "/var/www/mediadb.ivaya.de/Rights.json");
if (!isset($_GET['Pretty'])) {
error_reporting(0);
error_reporting(0); // PHP Fehler nur ausgeben wenn &Pretty gesetzt ist
}
class MediaDBAPI{
......@@ -26,7 +24,7 @@ class MediaDBAPI{
private $DB_Database;
private $Statistik = array("QueryCounter" => 0);
private $Querys;
private $Tabellen = array("Filme","Serien", "Staffeln", "Episoden"); //TODO Einbauen!!
private $Tabellen = array("Filme","Serien", "Staffeln", "Episoden");
public $SpaltenFilme = array("name", "imdbID", "3d", "year", "fsk", "rating", "youtube", "resolution", "duration", "size", "hdd", "added", "lastView", "lastUpdate",
"Genre", "Schauspieler", "views", "checked", "width", "height", "totalbitrate", "vcodec","acodecger", "abitrateger", "channelsger", "acodeceng", "abitrateeng", "channelseng", "comment",
"md5" , "summary");
......@@ -38,19 +36,14 @@ class MediaDBAPI{
"resolution" => "resolution", "channelsger" => "channelsger", "channelseng" => "channelseng", "hdd" => "hdd");
private $FilterKomplex = array("Jahr" => "year", "Groesse" => "size", "Laufzeit" => "duration", "Hinzugefuegt" => "added", "Gesehen" => "lastView",
"Gesehenzaehler" => "views", "FSK"=>"fsk");
//private $FilterAndere = array("Suche", "3d", "Deutsch", "Englisch", "checked", "Youtube");
//private $StatistikViews =array();
/* Speicher für Rechte Arrays*/
private $SpaltenFil = array();
private $SpaltenEpi = array();
//private $FilterEinf = array();
//private $FilterKomp = array();
//private $FilterAnde = array();
private $StatiViews = array();
private $WebAppSite = array(); //TODO Rechte für WebApp Seiten vergeben
private $Update = FALSE;
private $DebugOutput = FALSE;
public $webapp = FALSE;
public $DB_Objekt;
function APIinit($KEY) {
......@@ -67,7 +60,6 @@ class MediaDBAPI{
$this->API_KEY = $entry['Schuessel'];
$this->DB_Objekt = new mysqli($this->DB_Server, $this->DB_Username,$this->DB_Passwort, $this->DB_Database);
$this->SetKeyRights();
//var_dump($this->DB_Objekt);
if($this->DB_Objekt->connect_error != ""){
$ret = false;
}else{
......@@ -80,8 +72,6 @@ class MediaDBAPI{
return $ret;
}
private function SetKeyRights(){
if(file_exists(API_Rights)){
$Data = json_decode(file_get_contents(API_Rights), true);
foreach ($Data as $value) {
......@@ -102,33 +92,22 @@ class MediaDBAPI{
}
}
}
else{
return false;
}
//TODO überprüfen ob es die spalten auch wirklich gibt!!!
else{ return false;}
//Dafür den Array mit allein Spalten für die Reinfolge verwenden
$tempFilme= array();
foreach ($this->SpaltenFilme as $value) {
if(in_array($value, $this->SpaltenFil)){
//echo $value.PHP_EOL;
//$tempFilme =
array_push($tempFilme, $value);
}
}
$this->SpaltenFil = $tempFilme;
$tempEpisoden= array();
foreach ($this->SpaltenEpisoden as $value) {
if(in_array($value, $this->SpaltenEpi)){
//echo $value.PHP_EOL;
//$tempEpisoden =
array_push($tempEpisoden, $value);
}
}
$this->SpaltenEpi = $tempEpisoden;
//$this->SpaltenFil = array_intersect_key($this->SpaltenFilme,$this->SpaltenFil);
//$this->SpaltenEpi = array_intersect_key($this->SpaltenEpisoden,$this->SpaltenEpi);
}
public function API_GetKeyRights($GET_arr, $POST_arr =""){
$array["SpaltenFilme"] = $this->SpaltenFil;
......@@ -149,31 +128,40 @@ class MediaDBAPI{
}
else{
if(in_array($GET_arr['Tabelle'], $this->Tabellen)){
// Array für istgleich vergleiche
/*$IstgleichArr = array("imdbID" => "imdbID", "acodecger" => "acodecger", "acodeceng" => "acodeceng", "vcodec" => "vcodec",
"resolution" => "resolution", "channelsger" => "channelsger", "channelseng" => "channelseng", "hdd" => "hdd");
// Array für größer Kleiner Vergleich
$GrossKleinerArr = array("Jahr" => "year", "Groesse" => "size", "Laufzeit" => "duration", "Hinzugefuegt" => "added", "Gesehen" => "lastView",
"Gesehenzaehler" => "views" );
*/
$Array = array_merge(array_intersect_key($GET_arr, $this->FilterKomplex),array_intersect_key($GET_arr, $this->FilterEinfach));
// Wenn irgenein filter gesetzt ist Filterung nur für Tablle Filme!!
if( (isset($GET_arr['GenreID']) OR isset($GET_arr['Genre']) OR isset($GET_arr['SchauspielerID']) OR isset($GET_arr['Schauspieler']) OR
isset($GET_arr['Suche']) OR isset($GET_arr['SchauspielerSuche']) OR isset($GET_arr['Englisch']) OR isset($GET_arr['Deutsch']) OR
isset($GET_arr['3d']) OR isset($GET_arr['checked']) OR isset($GET_arr['Youtube']) OR (count($Array)>0)
) AND $GET_arr['Tabelle'] == "Filme" ){ // Filterung nur für Tablle Filme!!
// Wenn irgenein filter gesetzt ist Filterung nur für Tabelle Filme!
if( (isset($GET_arr['GenreID']) OR isset($GET_arr['Genre']) OR isset($GET_arr['SchauspielerID']) OR isset($GET_arr['Schauspieler']) OR
isset($GET_arr['Suche']) OR isset($GET_arr['SchauspielerSuche']) OR isset($GET_arr['Englisch']) OR isset($GET_arr['Deutsch']) OR
isset($GET_arr['3d']) OR isset($GET_arr['checked']) OR isset($GET_arr['Youtube']) OR (count($Array)>0)) AND $GET_arr['Tabelle'] == "Filme" ){
$first = true;
$imdbArrToCompar = 0;
$Where = "WHERE ";
// = Filter:
// istgleich Filter:
foreach ($this->FilterEinfach as $key => $value) {
if(isset($GET_arr[$key]) ){ //AND in_array($key, $this->FilterEinf)){ //TODO Rechte einbauen!!
if(isset($GET_arr[$key]) ){
$Where .= ($first?"":" AND ").$value.' = "'.$GET_arr[$key].'"';
$first = false;
}
}
// größergleich oder kleinergleich Filter:
foreach ($this->FilterKomplex as $key => $value) {
if(isset($GET_arr[$key]) ){
if ((substr($GET_arr[$key],0,1) == "<") OR (substr($GET_arr[$key],0,1) == ">") OR !strpos($GET_arr[$key], ",")) {
// Kleiner oder Größer und kein Komma!
$Number = str_replace(">", "", $GET_arr[$key]);
$Number = str_replace("<", "", $Number);
$Where .= ($first?"":" AND ").$value.' '.((substr($GET_arr[$key],0,1) == ">")?">":"").((substr($GET_arr[$key],0,1) == "<")?"<":"").'="'.$Number.'"';
$first = false;
}else if(strpos($GET_arr[$key], ",")>0){
// Bereich angegeben
$NumberArr = explode(",", $GET_arr[$key]);
$Where .= ($first?"":" AND ").$value.' >="'.$NumberArr[0].'"';
$first = false;
$Where .= ($first?"":" AND ").$value.' <="'.$NumberArr[1].'"';
}
}
}
// Sonstige Filter:
if(isset($GET_arr['3d']) ){
$Where .= ($first?"":" AND ").'3d '.($GET_arr['3d']?"!=":"=").'""';
$first = false;
......@@ -187,24 +175,14 @@ class MediaDBAPI{
$first = false;
}
if(isset($GET_arr['checked']) ){
if($GET_arr['checked'] == "NULL"){
$Where .= ($first?"":" AND ").'checked IS NULL';
}
else{
$Where .= ($first?"":" AND ").'checked = "'.$GET_arr['checked'].'"';
}
if($GET_arr['checked'] == "NULL"){ $Where .= ($first?"":" AND ").'checked IS NULL'; }
else{ $Where .= ($first?"":" AND ").'checked = "'.$GET_arr['checked'].'"'; }
$first = false;
}
if(isset($GET_arr["Youtube"])){
if($GET_arr['Youtube'] == "DE"){
$Where .= ($first?"":" AND ").'youtube LIKE "%DE%"';
}
else if($GET_arr['Youtube'] == "EN"){
$Where .= ($first?"":" AND ").'youtube LIKE "%EN%"';
}
else{
$Where .= ($first?"":" AND ").'youtube '.($GET_arr['Youtube']=="1"?"!=":"=").'""';
}
if($GET_arr['Youtube'] == "DE"){ $Where .= ($first?"":" AND ").'youtube LIKE "%DE%"'; }
else if($GET_arr['Youtube'] == "EN"){ $Where .= ($first?"":" AND ").'youtube LIKE "%EN%"'; }
else{ $Where .= ($first?"":" AND ").'youtube '.($GET_arr['Youtube']=="1"?"!=":"=").'""'; }
}
if(isset($GET_arr['Suche'])){
$SucheWort = $GET_arr['Suche'];
......@@ -214,24 +192,6 @@ class MediaDBAPI{
$Where .= (($first?"":" AND ").$Suche);
$first = false;
}
// größergleich oder kleinergleich Filter:
foreach ($this->FilterKomplex as $key => $value) {
if(isset($GET_arr[$key]) ){
if ((substr($GET_arr[$key],0,1) == "<") OR (substr($GET_arr[$key],0,1) == ">") OR !strpos($GET_arr[$key], ",")) {
// Kleiner oder Größer und kein Komma!
$Number = str_replace(">", "", $GET_arr[$key]);
$Number = str_replace("<", "", $Number);
$Where .= ($first?"":" AND ").$value.' '.((substr($GET_arr[$key],0,1) == ">")?">":"").((substr($GET_arr[$key],0,1) == "<")?"<":"").'="'.$Number.'"';
$first = false;
}else if(strpos($GET_arr[$key], ",")>0){
// Bereich angegeben
$NumberArr = explode(",", $GET_arr[$key]);
$Where .= ($first?"":" AND ").$value.' >="'.$NumberArr[0].'"';
$first = false;
$Where .= ($first?"":" AND ").$value.' <="'.$NumberArr[1].'"';
}
}
}
// In Filter:
// Attribute von Filmen die nur über eine M:N Verbindung vorhanden sind:
if(isset($GET_arr['GenreID']) OR isset($GET_arr['Genre']) OR isset($GET_arr['SchauspielerID']) OR isset($GET_arr['Schauspieler']) OR isset($GET_arr['SchauspielerSuche'])){
......@@ -257,7 +217,6 @@ class MediaDBAPI{
}
// Alle Querys Ausführen und Ergebnis in einen Großen Arry Speichern
foreach ($Querys as $Query) {
//$result = $this->DB_Objekt->query($Query);
$result = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$imdbIDString = $result->fetch_array();
......@@ -300,7 +259,6 @@ class MediaDBAPI{
$first = false;
}
}
// Sonderlösung für nur imdbID (wird für den Coverdownload benötigt)
if($GET_arr['Spalten'] == "imdbID"){
$Group = "GROUP BY imdbID";
......@@ -313,30 +271,23 @@ class MediaDBAPI{
$ListGenre = (in_array("Genre", $SpaltenArr)?true:false);
$ListSchauspieler = (in_array("Schauspieler", $SpaltenArr)?true:false);
$Statistik = (in_array("Statistik", $SpaltenArr)?true:false);
//Spalten entfernen worauf keine Rechte sind...
$first = true;
$Spalten = "";
if($GET_arr["Tabelle"] == "Episoden"){
foreach ($SpaltenArr as $value) {
//var_dump($this->SpaltenEpi);
if(!(in_array($value, $this->SpaltenEpi)==1)){
//echo "Lösche: ".$value.PHP_EOL;
unset($SpaltenArr[$value]);
}else{
//echo "behalte: ".$value.PHP_EOL;
$Spalten .= ($first?"":",").$value;
$first = false;
}
}
}else if( $GET_arr["Tabelle"] == "Filme"){
foreach ($SpaltenArr as $value) {
//var_dump($this->SpaltenEpisoden);
if(!(in_array($value, $this->SpaltenFil)==1)){
//echo "Lösche: ".$value.PHP_EOL;
unset($SpaltenArr[$value]);
}else{
//echo "behalte: ".$value.PHP_EOL;
$Spalten .= ($first?"":",").$value;
$first = false;
}
......@@ -345,7 +296,6 @@ class MediaDBAPI{
else {
$Spalten = $GET_arr['Spalten'];
}
// Lösche Schauspieler und Genre aus der Select Anweisung
$Spalten = str_replace("Genre,", "", $Spalten);
$Spalten = str_replace(",Genre", "", $Spalten);
......@@ -356,8 +306,7 @@ class MediaDBAPI{
$Spalten = str_replace("Statistik,", "", $Spalten);
$Spalten = str_replace(",Statistik", "", $Spalten);
$Spalten = str_replace("Statistik", "", $Spalten);
/* wenn Genre oder Schauspieler gefordert sind, aber die imdbID nicht in der Spaltenliste ist... */
// wenn Genre oder Schauspieler gefordert sind, aber die imdbID nicht in der Spaltenliste ist...
$NoimdbID = false;
if((($ListGenre OR $ListSchauspieler) AND !in_array("imdbID", $SpaltenArr) )){
$Select = "imdbID,".$Spalten;
......@@ -365,16 +314,16 @@ class MediaDBAPI{
}else{
$Select = $Spalten;
}
$Noseries_nr = false;
$Noseries_nr = false;
if((($Statistik) AND !in_array("series_nr", $SpaltenArr) )){
$Select = "series_nr,".$Spalten;
$NoimdbID = true;
}else{
$Select = $Spalten;
}
$Query= "SELECT ".$Select.
" FROM ".$GET_arr['Tabelle']." "
// Zusammenbauen des Auszuführenden Querys:
$Query= "SELECT ".$Select." FROM ".$GET_arr['Tabelle']." "
.(strlen($Where)<=6?"":$Where)
.$this->iset($GET_arr['Sortierung'], " ", " ORDER BY ", " ")
.$this->iset($GET_arr['Anzahl'],"", " Limit "," ")
......@@ -451,7 +400,7 @@ class MediaDBAPI{
}
}
public function API_SetData($GET_arr, $POST_arr =""){
if( ($this->Update)){
if( ($this->Update)){ // Wenn das Recht auf Update gesetzt ist...
if(isset($GET_arr["Tabelle"])){
if((isset($POST_arr["imdbID"]) AND isset($POST_arr["3d"]) AND ($GET_arr["Tabelle"] == "Filme")) OR
(isset($POST_arr["season_nr"]) AND isset($POST_arr["episodenumber"]) AND ($GET_arr["Tabelle"] == "Episoden"))){
......@@ -460,19 +409,17 @@ class MediaDBAPI{
}elseif(($GET_arr["Tabelle"] == "Episoden")){
$Where = "WHERE season_nr = '".$POST_arr["season_nr"]."' AND `episodenumber` = '".$POST_arr["episodenumber"]."'";
}
$Set = "SET ";
$first = true;
if(isset($POST_arr["Gesehen"])){ //AND is_numeric($GET_arr[$key])
if(isset($POST_arr["Gesehen"])){
$Set .= ($first?"":" , ")."views = views+".$POST_arr["Gesehen"];
$first = false;
}
if(isset($POST_arr["checked"])){ //AND is_numeric($GET_arr[$key])
if(isset($POST_arr["checked"])){
$Set .= ($first?"":" , ")."checked = '".$POST_arr["checked"]."'";
$first = false;
}
if(isset($POST_arr["comment"])){ //AND is_numeric($GET_arr[$key])
if(isset($POST_arr["comment"])){
$Set .= ($first?"":" , ")."comment = '".$POST_arr["comment"]."'";
$first = false;
}
......@@ -497,10 +444,8 @@ class MediaDBAPI{
}
}
public function API_GetStatistic($GET_arr, $POST_arr =""){
//var_dump($GET_arr['Statistik']);
if(isset($GET_arr['Statistik']) AND in_array($GET_arr['Statistik'], $this->StatiViews)){
$Query= "SELECT * FROM ".$GET_arr['Statistik'].";";
$entrys = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$TitelArray = array();
......@@ -509,17 +454,15 @@ class MediaDBAPI{
array_push($TitelArray, $val->name);
}
$entryArray = array();
while($entry = $entrys->fetch_array()){
$tempArray = array();
foreach ($finfo as $val) {
if(!(($val->name == "imdbID") AND $NoimdbID)){
$tempArray[$val->name] = ($entry[$val->name]); //utf8_encode
$tempArray[$val->name] = ($entry[$val->name]);
}
}
array_push($entryArray,$tempArray);
}
return array("Spalten"=>$TitelArray, "Data" =>$entryArray);
}
else{
......
<?php
/**
*
* @author Nico Schallehn, Markus Then
*
* @license MIT
*/
$beginn = microtime(true);
header('content-type: application/json; charset=utf-8');
include 'api.class.php';
$API = new MediaDBAPI();
if($API->APIinit($_GET['key'])){
......@@ -19,12 +17,11 @@ if($API->APIinit($_GET['key'])){
else{
$respons = $API->error(1003);
}
}
else {
$respons = $API->error(1002);
}
$Laufzeit = microtime(true) - $beginn;
echo json_encode( $API->APIrespons(sprintf('%.5f', $Laufzeit), $respons),(isset($_GET['Pretty'])?JSON_PRETTY_PRINT:0));//,JSON_PRETTY_PRINT
echo json_encode( $API->APIrespons(sprintf('%.5f', $Laufzeit), $respons),(isset($_GET['Pretty'])?JSON_PRETTY_PRINT:0));
?>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment