APISecret=md5($global['systemRootPath']); return $obj; } public function getPluginMenu() { global $global; $fileAPIName = $global['systemRootPath'] . 'plugin/API/pluginMenu.html'; return file_get_contents($fileAPIName); } public function set($parameters) { if (empty($parameters['APIName'])) { $object = new ApiObject("Parameter APIName can not be empty"); } else { if (!empty($parameters['pass'])) { $parameters['password'] = $parameters['pass']; } if(!empty($parameters['encodedPass']) && strtolower($parameters['encodedPass'])==='false'){ $parameters['encodedPass'] = false; } if (!empty($parameters['user']) && !empty($parameters['password'])) { $user = new User("", $parameters['user'], $parameters['password']); $user->login(false, !empty($parameters['encodedPass'])); } $APIName = $parameters['APIName']; if (method_exists($this, "set_api_$APIName")) { $str = "\$object = \$this->set_api_$APIName(\$parameters);"; eval($str); } else { $object = new ApiObject(); } } return $object; } public function get($parameters) { if (empty($parameters['APIName'])) { $object = new ApiObject("Parameter APIName can not be empty"); } else { if (!empty($parameters['pass'])) { $parameters['password'] = $parameters['pass']; } if (!empty($parameters['user']) && !empty($parameters['password'])) { if(!empty($parameters['encodedPass']) && strtolower($parameters['encodedPass'])==='false'){ $parameters['encodedPass'] = false; } $user = new User("", $parameters['user'], $parameters['password']); $user->login(false, !empty($parameters['encodedPass'])); } $APIName = $parameters['APIName']; if (method_exists($this, "get_api_$APIName")) { $str = "\$object = \$this->get_api_$APIName(\$parameters);"; eval($str); } else { $object = new ApiObject(); } } return $object; } private function startResponseObject($parameters) { $obj = new stdClass(); if (empty($parameters['sort']) && !empty($parameters['order'][0]['dir'])) { $index = intval($parameters['order'][0]['column']); $parameters['sort'][$parameters['columns'][$index]['data']] = $_GET['order'][0]['dir']; } $array = array('sort', 'rowCount', 'current', 'searchPhrase'); foreach ($array as $value) { if (!empty($parameters[$value])) { $obj->$value = $parameters[$value]; $_POST[$value] = $parameters[$value]; } } return $obj; } private function getToPost() { foreach ($_GET as $key => $value) { $_POST[$key] = $value; } } /** * @param type $parameters * ['sort' database sort column] * ['rowCount' max numbers of rows] * ['current' current page] * ['searchPhrase' to search on the categories] * ['parentsOnly' will bring only the parents, not children categories] * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&rowCount=3¤t=1&sort[created]=DESC * @return \ApiObject */ public function get_api_category($parameters) { global $global; require_once $global['systemRootPath'] . 'objects/category.php'; $obj = $this->startResponseObject($parameters); $rows = Category::getAllCategories(); $totalRows = Category::getTotalCategories(); $obj->totalRows = $totalRows; $obj->rows = $rows; return new ApiObject("", false, $obj); } /** * @param type $parameters * ['sort' database sort column] * ['videos_id' the video id (will return only 1 or 0 video)] * ['clean_title' the video clean title (will return only 1 or 0 video)] * ['rowCount' max numbers of rows] * ['current' current page] * ['searchPhrase' to search on the categories] * ['tags_id' the ID of the tag you want to filter] * ['catName' the clean_APIName of the category you want to filter] * ['channelName' the channelName of the videos you want to filter] * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&catName=default&rowCount=10 * @return \ApiObject */ public function get_api_video($parameters) { global $global; require_once $global['systemRootPath'] . 'objects/video.php'; $obj = $this->startResponseObject($parameters); $dataObj = $this->getDataObject(); if($dataObj->APISecret===@$_GET['APISecret']){ $rows = Video::getAllVideos("viewable", true, true); $totalRows = Video::getTotalVideos("viewable", true, true); }else if (!empty($parameters['videos_id'])) { $rows = Video::getVideo($parameters['videos_id']); $totalRows = empty($rows) ? 0 : 1; } else if (!empty($parameters['clean_title'])) { $rows = Video::getVideoFromCleanTitle($parameters['clean_title']); $totalRows = empty($rows) ? 0 : 1; } else { $rows = Video::getAllVideos(); $totalRows = Video::getTotalVideos(); } $SubtitleSwitcher = YouPHPTubePlugin::loadPluginIfEnabled("SubtitleSwitcher"); foreach ($rows as $key => $value) { $rows[$key]['images'] = Video::getImageFromFilename($value['filename']); $rows[$key]['videos'] = Video::getVideosPaths($value['filename'], true); if ($SubtitleSwitcher) { $rows[$key]['subtitles'] = getVTTTracks($value['filename'], true); } } $obj->totalRows = $totalRows; $obj->rows = $rows; return new ApiObject("", false, $obj); } /** * @param type $parameters * 'videos_id' the video ID what you want to get the likes * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=1 * @return \ApiObject */ public function get_api_likes($parameters) { global $global; require_once $global['systemRootPath'] . 'objects/like.php'; if (empty($parameters['videos_id'])) { return new ApiObject("Videos ID can not be empty"); } return new ApiObject("", false, Like::getLikes($parameters['videos_id'])); } /** * @param type $parameters (all parameters are mandatories) * 'videos_id' the video ID what you want to send the like * 'user' usename of the user that will like the video * 'pass' password of the user that will like the video * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=1&user=admin&pass=123 * @return \ApiObject */ public function set_api_like($parameters) { return $this->like($parameters, 1); } /** * @param type $parameters (all parameters are mandatories) * 'videos_id' the video ID what you want to send the like * 'user' usename of the user that will like the video * 'pass' password of the user that will like the video * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=1&user=admin&pass=123 * @return \ApiObject */ public function set_api_dislike($parameters) { return $this->like($parameters, -1); } /** * @param type $parameters (all parameters are mandatories) * 'videos_id' the video ID what you want to send the like * 'user' usename of the user that will like the video * 'pass' password of the user that will like the video * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=1&user=admin&pass=123 * @return \ApiObject */ public function set_api_removelike($parameters) { return $this->like($parameters, 0); } /** * * @param type $parameters * 'user' usename of the user * 'pass' password of the user * ['encodedPass' tell the script id the password submited is raw or encrypted] * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&user=admin&pass=f321d14cdeeb7cded7489f504fa8862b&encodedPass=true * @return type */ public function get_api_signIn($parameters) { global $global; $this->getToPost(); require_once $global['systemRootPath'] . 'objects/login.json.php'; exit; } /** * * @param type $parameters * 'user' usename of the user * 'pass' password of the user * 'email' email of the user * 'name' real name of the user * 'APISecret' mandatory for security reasons * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&APISecret={APISecret}&user=admin&pass=123&email=me@mysite.com&name=Yeshua * @return type */ public function set_api_signUp($parameters) { global $global; $this->getToPost(); $obj = $this->getDataObject(); if($obj->APISecret!==@$_GET['APISecret']){ return new ApiObject("APISecret Not valid"); } $ignoreCaptcha = 1; require_once $global['systemRootPath'] . 'objects/userCreate.json.php'; exit; } private function like($parameters, $like) { global $global; require_once $global['systemRootPath'] . 'objects/like.php'; if (empty($parameters['videos_id'])) { return new ApiObject("Videos ID can not be empty"); } if (!User::isLogged()) { return new ApiObject("User must be logged"); } new Like($like, $parameters['videos_id']); return new ApiObject("", false, Like::getLikes($parameters['videos_id'])); } /** * If you do not pass the user and password, it will always show ads, if you pass it the script will check if will display ads or not * @param type $parameters * 'videos_id' the video id to calculate the ads length * ['optionalAdTagUrl' a tag number 1 or 2 or 3 or 4 to use another tag, if do not pass it will use the default tag] * ['user' usename of the user] * ['pass' password of the user] * ['encodedPass' tell the script id the password submited is raw or encrypted] * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=3&user=admin&pass=f321d14cdeeb7cded7489f504fa8862b&encodedPass=true&optionalAdTagUrl=2 * @return type */ public function get_api_vmap($parameters) { global $global; $this->getToPost(); require_once $global['systemRootPath'] . 'plugin/GoogleAds_IMA/VMAP.php'; exit; } /** * Return all favorites from a user * @param type $parameters * 'user' usename of the user * 'pass' password of the user * 'encodedPass' tell the script id the password submited is raw or encrypted * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&user=admin&pass=f321d14cdeeb7cded7489f504fa8862b&encodedPass=true * @return type */ public function get_api_favorite($parameters) { $plugin = YouPHPTubePlugin::loadPluginIfEnabled("PlayLists"); if (empty($plugin)) { return new ApiObject("Plugin disabled"); } if (!User::isLogged()) { return new ApiObject("User must be logged"); } $row = PlayList::getAllFromUser(User::getId(), false, 'favorite'); echo json_encode($row); exit; } /** * add a video into a user favorite play list * @param type $parameters * 'videos_id' the video id that you want to add * 'user' usename of the user * 'pass' password of the user * 'encodedPass' tell the script id the password submited is raw or encrypted * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=3&user=admin&pass=f321d14cdeeb7cded7489f504fa8862b&encodedPass=true * @return type */ public function set_api_favorite($parameters) { $this->favorite($parameters, true); } /** * @param type $parameters * 'videos_id' the video id that you want to remove * 'user' usename of the user * 'pass' password of the user * 'encodedPass' tell the script id the password submited is raw or encrypted * @example {webSiteRootURL}plugin/API/{getOrSet}.json.php?APIName={APIName}&videos_id=3&user=admin&pass=f321d14cdeeb7cded7489f504fa8862b&encodedPass=true * @return type */ public function set_api_removeFavorite($parameters) { $this->favorite($parameters, false); } private function favorite($parameters, $add){ global $global; $plugin = YouPHPTubePlugin::loadPluginIfEnabled("PlayLists"); if (empty($plugin)) { return new ApiObject("Plugin disabled"); } if(!User::isLogged()){ return new ApiObject("Wrong user or password"); } $_POST['videos_id'] = $parameters['videos_id']; $_POST['add'] = $add; $_POST['playlists_id'] = PlayLists::getFavoriteIdFromUser(User::getId()); require_once $global['systemRootPath'] . 'objects/playListAddVideo.json.php'; exit; } } class ApiObject { public $error; public $message; public $response; function __construct($message = "api not started or not found", $error = true, $response = array()) { $this->error = $error; $this->message = $message; $this->response = $response; } }