Commit 407513ed authored by Nico Schallehn's avatar Nico Schallehn

test

parent 3f481268
......@@ -37,6 +37,7 @@ class MediaDBAPI{
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();
......@@ -139,290 +140,295 @@ class MediaDBAPI{
return $this->error(1004,"Erwarteter Parameter: Tabelle");
}
else{
// 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 (count($Array)>0)
) AND $GET_arr['Tabelle'] == "Filme" ){ // Filterung nur für Tablle Filme!!
$first = true;
$imdbArrToCompar = 0;
$Where = "WHERE ";
// = Filter:
foreach ($this->FilterEinfach as $key => $value) {
if(isset($GET_arr[$key]) AND in_array($key, $this->FilterEinf)){ //TODO Rechte einbauen!!
$Where .= ($first?"":" AND ").$value.' = "'.$GET_arr[$key].'"';
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 (count($Array)>0)
) AND $GET_arr['Tabelle'] == "Filme" ){ // Filterung nur für Tablle Filme!!
$first = true;
$imdbArrToCompar = 0;
$Where = "WHERE ";
// = Filter:
foreach ($this->FilterEinfach as $key => $value) {
if(isset($GET_arr[$key]) AND in_array($key, $this->FilterEinf)){ //TODO Rechte einbauen!!
$Where .= ($first?"":" AND ").$value.' = "'.$GET_arr[$key].'"';
$first = false;
}
}
if(isset($GET_arr['3d']) ){
$Where .= ($first?"":" AND ").'3d '.($GET_arr['3d']?"!=":"=").'""';
$first = false;
}
}
if(isset($GET_arr['3d']) ){
$Where .= ($first?"":" AND ").'3d '.($GET_arr['3d']?"!=":"=").'""';
$first = false;
}
if(isset($GET_arr['Englisch']) ){
$Where .= ($first?"":" AND ").'acodeceng'.($GET_arr['Englisch']?" IS NOT ":" IS ").'null';
$first = false;
}
if(isset($GET_arr['Deutsch']) ){
$Where .= ($first?"":" AND ").'acodecger'.($GET_arr['Deutsch']?" IS NOT ":" IS ").'null';
$first = false;
}
if(isset($GET_arr['checked']) ){
if($GET_arr['checked'] == "NULL"){
$Where .= ($first?"":" AND ").'checked IS NULL';
if(isset($GET_arr['Englisch']) ){
$Where .= ($first?"":" AND ").'acodeceng'.($GET_arr['Englisch']?" IS NOT ":" IS ").'null';
$first = false;
}
else{
$Where .= ($first?"":" AND ").'checked = "'.$GET_arr['checked'].'"';
if(isset($GET_arr['Deutsch']) ){
$Where .= ($first?"":" AND ").'acodecger'.($GET_arr['Deutsch']?" IS NOT ":" IS ").'null';
$first = false;
}
$first = false;
}
if(isset($GET_arr['Suche'])){ //TODO Rechte einbauen
$SucheWort = $GET_arr['Suche'];
$Suche = " (`name` LIKE '%".$SucheWort."%' OR `md5` LIKE '%".$SucheWort."%' OR `comment` LIKE '%".$SucheWort."%')";
//OR `year` = '".$GET_arr['Suche']."' OR `resolution` LIKE '%".$GET_arr['Suche']."%'
$this->DebugOut($Suche);
$Where .= (($first?"":" AND ").$Suche);
$first = false;
}
//TODO youtube Filter einbauen!!
// größergleich oder kleinergleich Filter:
foreach ($this->FilterKomplex as $key => $value) {
//echo "Ist $key in: FilterKomp?".PHP_EOL;
//var_dump($this->FilterKomp);
//echo (array_key_exists($key, $this->FilterKomp)?"Ja":"Nein").PHP_EOL;
if(isset($GET_arr[$key]) AND array_key_exists($key, $this->FilterKomp)){ //TODO Rechte einbauen!!!
//echo "Inside".PHP_EOL;
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){
$NumberArr = explode(",", $GET_arr[$key]);
//var_dump($NumberArr);
$Where .= ($first?"":" AND ").$value.' >="'.$NumberArr[0].'"';
$first = false;
$Where .= ($first?"":" AND ").$value.' <="'.$NumberArr[1].'"';
if(isset($GET_arr['checked']) ){
if($GET_arr['checked'] == "NULL"){
$Where .= ($first?"":" AND ").'checked IS NULL';
}
}
}
// 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'])){
if(isset($GET_arr['GenreID'])){
foreach (explode(",", $GET_arr['GenreID']) as $value) {
$Querys[] = 'SELECT group_concat(fg.imdbID) AS imdbIDs FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE g.genreID = "'.$value.'" ';
else{
$Where .= ($first?"":" AND ").'checked = "'.$GET_arr['checked'].'"';
}
$first = false;
}
if(isset($GET_arr['Genre'])){
foreach (explode(",", $GET_arr['Genre']) as $value) {
$Querys[] = 'SELECT group_concat(fg.imdbID) AS imdbIDs FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE g.engname LIKE "%'.$value.'%" ';
if(isset($GET_arr['Suche'])){ //TODO Rechte einbauen
$SucheWort = $GET_arr['Suche'];
$Suche = " (`name` LIKE '%".$SucheWort."%' OR `md5` LIKE '%".$SucheWort."%' OR `comment` LIKE '%".$SucheWort."%')";
//OR `year` = '".$GET_arr['Suche']."' OR `resolution` LIKE '%".$GET_arr['Suche']."%'
$this->DebugOut($Suche);
$Where .= (($first?"":" AND ").$Suche);
$first = false;
}
//TODO youtube Filter einbauen!!
// größergleich oder kleinergleich Filter:
foreach ($this->FilterKomplex as $key => $value) {
//echo "Ist $key in: FilterKomp?".PHP_EOL;
//var_dump($this->FilterKomp);
//echo (array_key_exists($key, $this->FilterKomp)?"Ja":"Nein").PHP_EOL;
if(isset($GET_arr[$key]) AND array_key_exists($key, $this->FilterKomp)){ //TODO Rechte einbauen!!!
//echo "Inside".PHP_EOL;
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){
$NumberArr = explode(",", $GET_arr[$key]);
//var_dump($NumberArr);
$Where .= ($first?"":" AND ").$value.' >="'.$NumberArr[0].'"';
$first = false;
$Where .= ($first?"":" AND ").$value.' <="'.$NumberArr[1].'"';
}
}
}
if(isset($GET_arr['SchauspielerID'])){
foreach (explode(",", $GET_arr['SchauspielerID']) as $value) {
$Querys[] = 'SELECT group_concat(fs.imdbID) AS imdbIDs FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE s.schauspielerID = "'.$value.'" ';
// 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'])){
if(isset($GET_arr['GenreID'])){
foreach (explode(",", $GET_arr['GenreID']) as $value) {
$Querys[] = 'SELECT group_concat(fg.imdbID) AS imdbIDs FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE g.genreID = "'.$value.'" ';
}
}
if(isset($GET_arr['Genre'])){
foreach (explode(",", $GET_arr['Genre']) as $value) {
$Querys[] = 'SELECT group_concat(fg.imdbID) AS imdbIDs FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE g.engname LIKE "%'.$value.'%" ';
}
}
if(isset($GET_arr['SchauspielerID'])){
foreach (explode(",", $GET_arr['SchauspielerID']) as $value) {
$Querys[] = 'SELECT group_concat(fs.imdbID) AS imdbIDs FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE s.schauspielerID = "'.$value.'" ';
}
}
if(isset($GET_arr['Schauspieler'])){
foreach (explode(",", $GET_arr['Schauspieler']) as $value) {
$Querys[] = 'SELECT group_concat(fs.imdbID) AS imdbIDs FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE s.name LIKE "%'.$value.'%" ';
}
}
}
if(isset($GET_arr['Schauspieler'])){
foreach (explode(",", $GET_arr['Schauspieler']) as $value) {
$Querys[] = 'SELECT group_concat(fs.imdbID) AS imdbIDs FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE s.name LIKE "%'.$value.'%" ';
// 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();
$imdbArr[$imdbArrToCompar++] = explode(",", $imdbIDString["imdbIDs"]);
}
switch ($imdbArrToCompar){ // Wenn es nur eine imDB Array Liste gibt...
case 1: $imdbStr = implode(",",$imdbArr[0]); break;
case 2: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1])); break;
case 3: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2])); break;
case 4: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3])); break;
case 5: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4])); break;
case 6: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5])); break;
case 7: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6])); break;
case 8: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7])); break;
case 9: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7],$imdbArr[8])); break;
case 10: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7],$imdbArr[8],$imdbArr[9])); break;
}
if ($imdbArrToCompar > 0) {
$Where .= (strlen($imdbStr)>0?($first?"":" AND ").str_replace(",)", ")", 'imdbID in ('.$imdbStr.')'): ($first?" 0 ":""));
$first = false;
}
}
// 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();
$imdbArr[$imdbArrToCompar++] = explode(",", $imdbIDString["imdbIDs"]);
}
// Wenn irgendein filter gesetzt ist Filterung nur für Tabllen Staffeln und Episoden!!
if( (isset($GET_arr['series_nr']) OR isset($GET_arr['season_nr']) OR isset($GET_arr['episodenumber']) OR isset($GET_arr['Checked']) )
AND (($GET_arr['Tabelle'] == "Staffeln") OR (($GET_arr['Tabelle'] == "Episoden"))) ){ // Filterung nur für Tablle Episoden!!
$first = true;
$Where = "WHERE ";
if(isset($GET_arr['series_nr']) ){
$Where .= ($first?"":" AND ").'series_nr = "'.$GET_arr['series_nr'].'"';
$first = false;
}
switch ($imdbArrToCompar){ // Wenn es nur eine imDB Array Liste gibt...
case 1: $imdbStr = implode(",",$imdbArr[0]); break;
case 2: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1])); break;
case 3: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2])); break;
case 4: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3])); break;
case 5: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4])); break;
case 6: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5])); break;
case 7: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6])); break;
case 8: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7])); break;
case 9: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7],$imdbArr[8])); break;
case 10: $imdbStr .=implode(",",array_intersect($imdbArr[0],$imdbArr[1],$imdbArr[2],$imdbArr[3],$imdbArr[4],$imdbArr[5],$imdbArr[6],$imdbArr[7],$imdbArr[8],$imdbArr[9])); break;
if(isset($GET_arr['season_nr']) ){
$Where .= ($first?"":" AND ").'season_nr = "'.$GET_arr['season_nr'].'"';
$first = false;
}
if ($imdbArrToCompar > 0) {
$Where .= (strlen($imdbStr)>0?($first?"":" AND ").str_replace(",)", ")", 'imdbID in ('.$imdbStr.')'): ($first?" 0 ":""));
if(isset($GET_arr['episodenumber']) ){
$Where .= ($first?"":" AND ").'episodenumber = "'.$GET_arr['episodenumber'].'"';
$first = false;
}
}
}
// Wenn irgendein filter gesetzt ist Filterung nur für Tabllen Staffeln und Episoden!!
if( (isset($GET_arr['series_nr']) OR isset($GET_arr['season_nr']) OR isset($GET_arr['episodenumber']) OR isset($GET_arr['Checked']) )
AND (($GET_arr['Tabelle'] == "Staffeln") OR (($GET_arr['Tabelle'] == "Episoden"))) ){ // Filterung nur für Tablle Episoden!!
// Sonderlösung für nur imdbID
if($GET_arr['Spalten'] == "imdbID"){
$Group = "GROUP BY imdbID";
}
if($GET_arr['Spalten'] == "*"){
return $this->error(1007,"Keine Rechte für Spalten= *");
}
// Überprüfen ob Schauspieler oder Genre gefordert wird
$SpaltenArr = explode(",", $GET_arr['Spalten']);
$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;
$Where = "WHERE ";
if(isset($GET_arr['series_nr']) ){
$Where .= ($first?"":" AND ").'series_nr = "'.$GET_arr['series_nr'].'"';
$first = false;
$Spalten = "";
foreach ($SpaltenArr as $value) {
if(!(in_array($value, $this->SpaltenFil) OR in_array($value, array("Genre", "Schauspieler", "Statistik", "*")))){
//echo "Lösche: ".$value.PHP_EOL;
unset($SpaltenArr[$value]);
}else{
//echo "behalte: ".$value.PHP_EOL;
$Spalten .= ($first?"":",").$value;
$first = false;
}
}
if(isset($GET_arr['season_nr']) ){
$Where .= ($first?"":" AND ").'season_nr = "'.$GET_arr['season_nr'].'"';
$first = false;
//echo $Spalten.PHP_EOL;
/*
// Lösche Schauspieler und Genre aus der Select Anweisung
$GET_arr['Spalten'] = str_replace("Genre,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Genre", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Genre", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Schauspieler,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Schauspieler", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Schauspieler", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Statistik,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Statistik", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Statistik", "", $GET_arr['Spalten']);
*/
/* 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) )){ //AND ($this->iset($GET_arr['Spalten'], "*") != "*" )
$Select = "imdbID,".$Spalten;
$NoimdbID = true;
}else{
$Select = $Spalten;
}
if(isset($GET_arr['episodenumber']) ){
$Where .= ($first?"":" AND ").'episodenumber = "'.$GET_arr['episodenumber'].'"';
$first = false;
$Noseries_nr = false;
if((($Statistik) AND !in_array("series_nr", $SpaltenArr) )){ //AND ($this->iset($GET_arr['Spalten'], "*") != "*" )
$Select = "series_nr,".$Spalten;
$NoimdbID = true;
}else{
$Select = $Spalten;
}
}
// Sonderlösung für nur imdbID
if($GET_arr['Spalten'] == "imdbID"){
$Group = "GROUP BY imdbID";
}
if($GET_arr['Spalten'] == "*"){
return $this->error($ErrID);
}
// Überprüfen ob Schauspieler oder Genre gefordert wird
$SpaltenArr = explode(",", $GET_arr['Spalten']);
$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 = "";
foreach ($SpaltenArr as $value) {
if(!(in_array($value, $this->SpaltenFil) OR in_array($value, array("Genre", "Schauspieler", "Statistik", "*")))){
//echo "Lösche: ".$value.PHP_EOL;
unset($SpaltenArr[$value]);
/*
$Noseason_nr = false;
if((($Statistik) AND !in_array("season_nr", $SpaltenArr) AND ($this->iset($GET_arr['Spalten'], "*") != "*" ))){
$Select = "season_nr,".$GET_arr['Spalten'];
$NoimdbID = true;
}else{
//echo "behalte: ".$value.PHP_EOL;
$Spalten .= ($first?"":",").$value;
$first = false;
$Select = $this->iset($GET_arr['Spalten'], "*");
}
}
//echo $Spalten.PHP_EOL;
/*
// Lösche Schauspieler und Genre aus der Select Anweisung
$GET_arr['Spalten'] = str_replace("Genre,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Genre", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Genre", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Schauspieler,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Schauspieler", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Schauspieler", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Statistik,", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace(",Statistik", "", $GET_arr['Spalten']);
$GET_arr['Spalten'] = str_replace("Statistik", "", $GET_arr['Spalten']);
*/
/* 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) )){ //AND ($this->iset($GET_arr['Spalten'], "*") != "*" )
$Select = "imdbID,".$Spalten;
$NoimdbID = true;
}else{
$Select = $Spalten;
}
$Noseries_nr = false;
if((($Statistik) AND !in_array("series_nr", $SpaltenArr) )){ //AND ($this->iset($GET_arr['Spalten'], "*") != "*" )
$Select = "series_nr,".$Spalten;
$NoimdbID = true;
}else{
$Select = $Spalten;
}
/*
$Noseason_nr = false;
if((($Statistik) AND !in_array("season_nr", $SpaltenArr) AND ($this->iset($GET_arr['Spalten'], "*") != "*" ))){
$Select = "season_nr,".$GET_arr['Spalten'];
$NoimdbID = true;
}else{
$Select = $this->iset($GET_arr['Spalten'], "*");
}
*/
$Query= "SELECT ".$Select.
" FROM ".$GET_arr['Tabelle']." "
.(strlen($Where)<=6?"":$Where)
.$this->iset($GET_arr['Sortierung'], " ", " ORDER BY ", " ")
.$this->iset($GET_arr['Anzahl'],"", " Limit "," ")
." ".$Group.";";
$entrys = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$TitelArray = array();
$finfo = $entrys->fetch_fields();
foreach ($finfo as $val) {
array_push($TitelArray, $val->name);
}
$entryArray = array();
while($entry = $entrys->fetch_array()){
$tempArray = array();
*/
$Query= "SELECT ".$Select.
" FROM ".$GET_arr['Tabelle']." "
.(strlen($Where)<=6?"":$Where)
.$this->iset($GET_arr['Sortierung'], " ", " ORDER BY ", " ")
.$this->iset($GET_arr['Anzahl'],"", " Limit "," ")
." ".$Group.";";
$entrys = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$TitelArray = array();
$finfo = $entrys->fetch_fields();
foreach ($finfo as $val) {
if(!(($val->name == "imdbID") AND $NoimdbID)){
//$tempArray[$val->name] = utf8_encode(($entry[$val->name] == NULL?"":$entry[$val->name]));//$entry[$val->name]); //($entry[$val->name] == null?"":$entry[$val->name])
$tempArray[$val->name] = ($entry[$val->name] == NULL?"":$entry[$val->name]);
}
}
// Genre oder Schauspielerblock hinzufügen wenn es gewünscht ist
if($ListGenre){
$Query = 'SELECT group_concat(g.gername ORDER BY g.gername) AS Genre FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE fg.imdbID="'.$entry["imdbID"].'"';
$Genre = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$GenreArr = $Genre->fetch_array();
$tempArray["Genre"] = explode(",", ($GenreArr["Genre"]));
array_push($TitelArray, $val->name);
}
if($ListSchauspieler){
$Query = 'SELECT group_concat(s.name ORDER BY s.name) AS Schauspieler '.
'FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE fs.imdbID="'.$entry["imdbID"].'"';
$Schauspieler = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$SchauspielerArr = $Schauspieler->fetch_array();
$tempArray["Schauspieler"] = explode(",", ($SchauspielerArr["Schauspieler"]));
}
if ($Statistik == true) {
if (($GET_arr['Tabelle'] == "Staffeln")) { //TODO hier ist auch was geändert aber noch nicht getestet!!
$Query = 'SELECT avg(e.checked) AS Checked, '.(in_array("views", $this->SpaltenEpisoden)?'avg(e.views) AS Views,':'').' SUM(e.size) AS Size, SUM(e.duration) AS Duration, COUNT(e.name) AS Count '.
'FROM Staffeln AS s JOIN Episoden AS e ON s.season_nr = e.season_nr '.
'WHERE s.season_nr = '.$entry["season_nr"];
$result = $this->query($Query);
$entryArray = array();
while($entry = $entrys->fetch_array()){
$tempArray = array();
foreach ($finfo as $val) {
if(!(($val->name == "imdbID") AND $NoimdbID)){
//$tempArray[$val->name] = utf8_encode(($entry[$val->name] == NULL?"":$entry[$val->name]));//$entry[$val->name]); //($entry[$val->name] == null?"":$entry[$val->name])
$tempArray[$val->name] = ($entry[$val->name] == NULL?"":$entry[$val->name]);
}
}
// Genre oder Schauspielerblock hinzufügen wenn es gewünscht ist
if($ListGenre){
$Query = 'SELECT group_concat(g.gername ORDER BY g.gername) AS Genre FROM FilmGenre AS fg JOIN Genre AS g ON fg.genreID = g.genreID WHERE fg.imdbID="'.$entry["imdbID"].'"';
$Genre = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$resultArr = $result->fetch_array();
$tempArray["Checked"] = ($resultArr["Checked"]== null?"":$resultArr["Checked"]);
$tempArray["Views"] = ($resultArr["Views"] == null?0:$resultArr["Views"]);
$tempArray["Size"] = ($resultArr["Size"] == null?0:$resultArr["Size"]);
$tempArray["Duration"] = ($resultArr["Duration"] == null?0:$resultArr["Duration"]);
$tempArray["Count"] = ($resultArr["Count"] == null?0:$resultArr["Count"]);
}else if (($GET_arr['Tabelle'] == "Serien")){
$Query = 'SELECT avg(e.checked) AS Checked, avg(e.views) AS Views, SUM(e.size) AS Size, SUM(e.duration) AS Duration, COUNT(e.name) AS Count '.
'FROM Serien AS se JOIN Staffeln AS st ON se.series_nr=st.series_nr JOIN Episoden AS e ON st.season_nr = e.season_nr '.
'WHERE se.series_nr = '.$entry["series_nr"];
$result = $this->query($Query);
$GenreArr = $Genre->fetch_array();
$tempArray["Genre"] = explode(",", ($GenreArr["Genre"]));
}
if($ListSchauspieler){
$Query = 'SELECT group_concat(s.name ORDER BY s.name) AS Schauspieler '.
'FROM FilmSchauspieler AS fs JOIN Schauspieler AS s ON fs.schauspielerID = s.schauspielerID WHERE fs.imdbID="'.$entry["imdbID"].'"';
$Schauspieler = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$resultArr = $result->fetch_array();
$tempArray["Checked"] = ($resultArr["Checked"]== null?"":$resultArr["Checked"]);
$tempArray["Views"] = ($resultArr["Views"] == null?0:$resultArr["Views"]);
$tempArray["Size"] = ($resultArr["Size"] == null?0:$resultArr["Size"]);
$tempArray["Duration"] = ($resultArr["Duration"] == null?0:$resultArr["Duration"]);
$tempArray["Count"] = ($resultArr["Count"] == null?0:$resultArr["Count"]);
$SchauspielerArr = $Schauspieler->fetch_array();
$tempArray["Schauspieler"] = explode(",", ($SchauspielerArr["Schauspieler"]));
}
if ($Statistik == true) {
if (($GET_arr['Tabelle'] == "Staffeln")) { //TODO hier ist auch was geändert aber noch nicht getestet!!
$Query = 'SELECT avg(e.checked) AS Checked, '.(in_array("views", $this->SpaltenEpisoden)?'avg(e.views) AS Views,':'').' SUM(e.size) AS Size, SUM(e.duration) AS Duration, COUNT(e.name) AS Count '.
'FROM Staffeln AS s JOIN Episoden AS e ON s.season_nr = e.season_nr '.
'WHERE s.season_nr = '.$entry["season_nr"];
$result = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$resultArr = $result->fetch_array();
$tempArray["Checked"] = ($resultArr["Checked"]== null?"":$resultArr["Checked"]);
$tempArray["Views"] = ($resultArr["Views"] == null?0:$resultArr["Views"]);
$tempArray["Size"] = ($resultArr["Size"] == null?0:$resultArr["Size"]);
$tempArray["Duration"] = ($resultArr["Duration"] == null?0:$resultArr["Duration"]);
$tempArray["Count"] = ($resultArr["Count"] == null?0:$resultArr["Count"]);
}else if (($GET_arr['Tabelle'] == "Serien")){
$Query = 'SELECT avg(e.checked) AS Checked, avg(e.views) AS Views, SUM(e.size) AS Size, SUM(e.duration) AS Duration, COUNT(e.name) AS Count '.
'FROM Serien AS se JOIN Staffeln AS st ON se.series_nr=st.series_nr JOIN Episoden AS e ON st.season_nr = e.season_nr '.
'WHERE se.series_nr = '.$entry["series_nr"];
$result = $this->query($Query);
if($this->DB_Objekt->error != ""){ return $this->error(1005, $this->DB_Objekt->error);}
$resultArr = $result->fetch_array();
$tempArray["Checked"] = ($resultArr["Checked"]== null?"":$resultArr["Checked"]);
$tempArray["Views"] = ($resultArr["Views"] == null?0:$resultArr["Views"]);
$tempArray["Size"] = ($resultArr["Size"] == null?0:$resultArr["Size"]);
$tempArray["Duration"] = ($resultArr["Duration"] == null?0:$resultArr["Duration"]);
$tempArray["Count"] = ($resultArr["Count"] == null?0:$resultArr["Count"]);
}
}
array_push($entryArray,$tempArray);
}
array_push($entryArray,$tempArray);
return array("Spalten"=>$TitelArray, "Data" =>$entryArray);
}
else{
return $this->error(10007, "Keine Rechte auf die Tabelle!");
}
return array("Spalten"=>$TitelArray, "Data" =>$entryArray);
}
}
public function API_SetData($GET_arr, $POST_arr =""){
......
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