public function publish() { $this->viewModel->set('pageTitle', TITLE . ''); include 'class/arraytools.php'; $title = trim($_POST['title']); $imdb = trim($_POST['imdbid']); $sql = "DELETE FROM queue WHERE imdb = :imdb"; $param = array(':imdb' => $imdb); $this->db->select_query($sql, $param); $sql = "SELECT * FROM movies WHERE title = :title"; $param = array(':title' => $title); $count = $this->db->select_query($sql, $param); if (sizeof($count) == 0) { $ar = new ArrayTools(); $directors = $ar->pickvalues_to_array($_POST, 1, $_POST['NoDirectors']); $actors = $ar->pickvalues_to_array($_POST, 100, $_POST['NoActors']); $genres = $ar->pickvalues_to_array($_POST, 1000, $_POST['NoGenres']); //Hämta hem postern -- http://www.phpriot.com/articles/download-with-curl-and-php $path = $_POST['poster']; /* $fp = fopen('public/img/posters/' . $path, 'w'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_FILE, $fp); $data = curl_exec($ch); curl_close($ch); fclose($fp); * */ $sql = "INSERT INTO movies (imdbid, title, plot, year, poster, type, sub, runtime, date, youtube)\n \t\t\t\t\tVALUES(:imdbid, :title, :plot, :year, :path, :type, :sub, :runtime, now(), :youtube)"; $param = array(':imdbid' => $_POST['imdbid'], ':title' => strip_tags($_POST['title']), ':plot' => strip_tags($_POST['plot']), ':year' => strip_tags($_POST['year']), ':path' => $path, ':type' => strip_tags($_POST['type']), ':sub' => strip_tags($_POST['sub']), ':runtime' => strip_tags($_POST['runtime']), ':youtube' => strip_tags($_POST['youtube'])); $this->db->select_query($sql, $param); $mid = $this->db->lastInsertId('id'); $genreparam = array(); foreach ($genres as $value) { $genreparam[] = array(':genre' => strip_tags($value)); } $actorparam = array(); foreach ($actors as $value) { $actorparam[] = array(':actor' => strip_tags($value)); } $directorparam = array(); foreach ($directors as $value) { $directorparam[] = array(':director' => strip_tags($value)); } ######################################################## # Genres hanteras här # # Ser till att mata in all data i databasen # ######################################################## $sql = "SELECT * FROM genres\n\t\t\t\t\tWHERE genre = :genre"; $genreids = $this->db->multi_query($sql, $genreparam); $genrenotindb = array_diff($ar->flatten_array($genreparam), $ar->flatten_array($genreids)); $paraminsert = array(); foreach ($genrenotindb as $value) { $paraminsert[] = array(':genre' => strip_tags($value)); } $sql = "INSERT INTO genres (genre)\n\t\t\t\t\tVALUES(:genre)"; $result = $this->db->multi_query($sql, $paraminsert); $genrefromdbid = $this->db->lastInsertId(); $genreidstomovie = array(); for ($i = $genrefromdbid - sizeof($result) + 1; $i <= $genrefromdbid; $i++) { $genresinmovies[] = array(':genreid' => (int) $i, ':movieid' => $mid); } $genreindb = $ar->unique_flat_array(array_diff($ar->flatten_array($genreids), $ar->flatten_array($genreparam))); foreach ($genreindb as $value) { $genresinmovies[] = array(':genreid' => (int) $value, ':movieid' => $mid); } $sql = "INSERT INTO genresinmovies (movie_id, genre_id)\n\t\t\t\t\tVALUES (:movieid,:genreid)"; $this->db->multi_query($sql, $genresinmovies); ######################################################## # Actors hanteras här # # Ser till att mata in all data i databasen # ######################################################## $sql = "SELECT * FROM actors\n\t\t\t\t\tWHERE actor = :actor"; $actorsinmovie = $this->db->multi_query($sql, $actorparam); $actorsinmovienotdb = array_diff($ar->flatten_array($actorparam), $ar->flatten_array($actorsinmovie)); $actorinsertparam = array(); foreach ($actorsinmovienotdb as $value) { $actorinsertparam[] = array(':actor' => strip_tags($value)); } $sql = "INSERT INTO actors (actor)\n\t\t\t\t\tVALUES (:actor)"; $this->db->multi_query($sql, $actorinsertparam); $actorid = $this->db->lastInsertId(); $actorsparam = array(); for ($i = $actorid - sizeof($actorinsertparam) + 1; $i <= $actorid; $i++) { $actorsparam[] = array(':actor' => (int) $i, ':movieid' => $mid); } $actorsinmoviedb = $ar->unique_flat_array(array_diff($ar->flatten_array($actorsinmovie), $ar->flatten_array($actorparam))); foreach ($actorsinmoviedb as $value) { $actorsparam[] = array(':actor' => (int) $value, ':movieid' => $mid); } $sql = "INSERT INTO actorsinmovies (movie_id,actor_id)\n\t\t\t\t\tVALUES (:movieid,:actor)"; $this->db->multi_query($sql, $actorsparam); ######################################################## # Directors hanteras här # # Ser till att mata in all data i databasen # ######################################################## $sql = "SELECT * FROM directors\n\t\t\t\t\tWHERE director = :director"; $directorsindb = $this->db->multi_query($sql, $directorparam); $directorsnotindb = array_diff($ar->flatten_array($directorparam), $ar->flatten_array($directorsindb)); $directorsinsertdb = array(); foreach ($directorsnotindb as $value) { $directorsinsertdb[] = array(':director' => strip_tags($value)); } $sql = "INSERT INTO directors (director)\n\t\t\t\t\tVALUES (:director)"; $this->db->multi_query($sql, $directorsinsertdb); $dib = $this->db->lastInsertId(); $directorsparam = array(); for ($i = $dib - sizeof($directorsinsertdb) + 1; $i <= $dib; $i++) { $directorsparam[] = array(':directorid' => (int) $i, ':movieid' => $mid); } $directorsindb = $ar->unique_flat_array(array_diff($ar->flatten_array($directorsindb), $ar->flatten_array($directorparam))); foreach ($directorsindb as $value) { $directorsparam[] = array(':directorid' => (int) $value, ':movieid' => $mid); } $sql = "INSERT INTO directorsinmovies (movie_id,director_id)\n\t\t\t\t\tVALUES (:movieid,:directorid)"; $res = $this->db->multi_query($sql, $directorsparam); header('Location:' . URL . 'movie/display/' . $mid); } else { header('Location:' . URL . 'movie/display/' . $count[0][id]); break; } return $this->viewModel; }