cache_timeout = 1440; } public function _check_cache( $timeout ) { if ( empty($timeout) ) { $timeout = (int) $this->cache_timeout; } if ( (int) $timeout < 1 ) { $timeout = 1; } $timeout = $timeout * 60; return $timeout; } public function get_attachment_id($file_name) { $m = new \F13\Movies\Models\OMDB(); return $m->get_image_id($file_name); } public function get_cover($file) { $file_name = explode('/', $file); $file_name = end($file_name); $image_id = $this->get_attachment_id($file_name); if ($image_id) { $console = (F13_MOVIES_DEV) ? '' : ''; $file_url = wp_get_attachment_url($image_id); } else { require_once(ABSPATH.'wp-admin/includes/media.php'); require_once(ABSPATH.'wp-admin/includes/file.php'); require_once(ABSPATH.'wp-admin/includes/image.php'); media_sideload_image($file, get_the_ID(), ' - Poster'); $console = (F13_MOVIES_DEV) ? '' : ''; $file_url = wp_get_attachment_url($this->get_attachment_id($file_name)); } return (object) array( 'console' => $console, 'file_url' => $file_url, ); } public function actor_shortcode($atts = array()) { extract(shortcode_atts(array( 'tmdb' => '', 'name' => '', 'credits' => 1, 'cachetime' => '1440', ), $atts)); if ($cachetime > 0) { $cachetime = $this->_check_cache($cachetime); } $cache_key = 'f13-movies-actor-'.sha1(serialize($atts).F13_MOVIES['Version']); $transient = ($cachetime == 0) ? false : get_transient($cache_key); if (!F13_MOVIES_DEV && $transient) { $v = (F13_MOVIES_DEV) ? '' : ''; $v .= $transient; return $v; } if (empty($tmdb) && empty($name)) { return '
'.__('Please provide either a "tmdb" or "name" attribute', 'f13-movies').'
'; } $m = new \F13\Movies\Models\TMDB(); $data = $m->retrieve_actor_data(array( 'id' => $tmdb, 'name' => $name, 'credits' => (int) $credits, )); $cover = $this->get_cover($data->profile_path); $v = new \F13\Movies\Views\Actors(array( 'data' => $data, 'credits' => $credits, 'local_image' => $cover->file_url, )); $console = (F13_MOVIES_DEV) ? '' : ''; $return = $v->actor_shortcode(); set_transient($cache_key, $return, $cachetime); return $cover->console.$console.$return; } public function movie_shortcode($atts = array()) { extract(shortcode_atts(array( 'imdb' => '', 'title' => '', 'type' => '', 'year' => '', 'plot' => 'full', 'cachetime' => '1440', 'information' => '0', 'disable' => '', 'trailer' => '', 'image_size' => '1200', 'api' => '' ), $atts)); if (empty($title) && empty($imdb)) { return '
'.__('Please provide either an "imdb" or "title" attribute', 'f13-movies').'
'; } // Work out which API to use $settings = \F13\Movies\Controllers\Admin::_get_settings(); if (!($api && $settings[$api.'_enable'])) { $api = $settings['preferred_api']; } $disable = explode(',', $disable); if ($cachetime > 0) { $cachetime = $this->_check_cache($cachetime); } $cache_key = 'f13-movies-'.sha1(serialize($atts).$settings['preferred_api'].F13_MOVIES['Version']); $transient = ($cachetime == 0) ? false : get_transient($cache_key); if (!F13_MOVIES_DEV && $transient) { $v = (F13_MOVIES_DEV) ? '' : ''; $v .= $transient; return $v; } if ($plot != 'short') { $plot = 'full'; } // Remove all non alphanumeric chars $imdb = preg_replace("/[^A-Za-z0-9 ]/", '', $imdb); if ($api == 'omdb') { $m = new \F13\Movies\Models\OMDB(); $data = $m->retrieve_movie_data(array( 'i' => $imdb, 't' => $title, 'type' => $type, 'y' => $year, 'plot' => $plot, )); } else if ($api == 'tmdb') { $m = new \F13\Movies\Models\TMDB(); $data = $m->retrieve_movie_data(array( 'imdb' => $imdb, 'title' => $title, 'type' => $type, 'year' => $year, 'plot' => $plot, )); if ($data && property_exists($data, 'poster_path') && $data->poster_path) { $data->poster_path = 'https://www.themoviedb.org/t/p/w600_and_h900_bestv2'.$data->poster_path; } } if (is_wp_error($data)) { return '
'.__('Error', 'f13-movies').': '.$data->get_error_message().'
'; } if (property_exists($data, 'Error')) { return '
'.__('Error', 'f13-movies').': '.$data->Error.'
'; } $cover = $this->get_cover(($api == 'tmdb' ? $data->poster_path : $data->Poster)); $v = new \F13\Movies\Views\Movies(array( 'data' => $data, 'disable' => $disable, 'local_image' => $cover->file_url, 'information' => (int) $information, 'trailer' => $trailer, 'image_size' => $image_size, 'api' => $api, )); $console = (F13_MOVIES_DEV) ? '' : ''; $return = $v->movie_shortcode(); set_transient($cache_key, $return, $cachetime); return $cover->console.$console.$return; } }