Вход Регистрация
Файл: includes/API.class.php
Строк: 199
<?php 
/**
 * ====================================================================================
 *                           PremiumMediaScript (c) KBRmedia
 * ----------------------------------------------------------------------------------
 * @copyright This software is exclusively sold at CodeCanyon.net. If you have downloaded this
 *            from another site or received it from someone else than me, then you are engaged
 *            in an illegal activity. You must delete this software immediately or buy a proper
 *            license from http://codecanyon.net/user/KBRmedia/portfolio?ref=KBRmedia.
 * ====================================================================================
 *
 *
 * @author KBRmedia (http://gempixel.com)
 * @link http://gempixel.com 
 * @license http://gempixel.com/license
 * @package PremiumMediaScript
 * @subpackage API Handler
 */
class API extends App{
    
/**
     * Allowed actions
     * @var array
     */
    
protected $actions = array("search","view","channel","user");
    
/**
     * Class Constructer 
     */
    
public function __construct($config$db$action){
      
$this->config $config;
      
$this->db $db;
      
$this->do $action[0];
      
$this->id $action[1];
      
// Clean Request
      
if(isset($_GET)) $_GET array_map("Main::clean"$_GET);
        if(isset(
$_GET["page"]) && is_numeric($_GET["page"]) && $_GET["page"]>0$this->page Main::clean($_GET["page"]);
        
$this->http = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://":"http://");        
        
$this->check();    
        
$this->index();
    }
    
/**
     * Index
     * @since  1.5
     */
    
protected function index(){
        
// Check KEY
        
if(empty($_GET["key"]) || $_GET["key"] !== $this->config["api_key"]){
            return 
$this->error("002");
        }
        
// Run Methods
        
if(!empty($this->do)){
            if(
in_array($this->do$this->actions) && method_exists(__CLASS__$this->do)){
                
// Run Method
                
return $this->{$this->do}();
            }                
        }        
        
// Run Error
        
return $this->error("001");
    }
    
/**
     * Media Endpoint
     * @since 1.5
     */
    
protected function view(){
        if(isset(
$this->id)){
            if(
$media $this->db->get(array("custom" => "{$this->config["prefix"]}media.*, {$this->config["prefix"]}user.username as username, {$this->config["prefix"]}user.profile as name FROM `{$this->config["prefix"]}media` INNER JOIN `{$this->config["prefix"]}user` ON {$this->config["prefix"]}user.id = {$this->config["prefix"]}media.userid"),array("uniqueid" => "?"),array("limit" => 1), array($this->id))){
                return 
$this->build(
                                    array(
                                            
"status" => "ok",
                                            
"data" => $this->format($media)
                                        )
                                );
            }
        }
        return 
$this->error("003");
    }
    
/**
     * Search Endpoint
     * @since 1.5
     */
    
protected function search(){
        if(isset(
$this->id) || strlen($this->id) > 3){
            
$limit = isset($_GET["limit"]) && is_numeric($_GET["limit"]) && $_GET["limit"] > && $_GET["limit"] < 25 $_GET["limit"] : 10;
            
$order = isset($_GET["order"]) && in_array($_GET["order"], array("date","votes","views")) ? $_GET["order"] : "date";

            if(
$media $this->db->search("media",array("title" => "?"), array("limit" => $limit"order" => $order"limit" => (($this->page-1)*$limit).", {$limit}""count" => TRUE), array("%{$this->id}%"))){
            if((
$this->db->rowCount%$limit)<>0) {
              
$max floor($this->db->rowCount/$limit)+1;
            } else {
              
$max floor($this->db->rowCount/$limit);
            }                 
                return 
$this->build(
                                    array(
                                            
"status" => "ok",
                                            
"results" => $this->db->rowCount,
                                            
"prev" => ($this->page-1),
                                            
"next" =>  $this->page $max $this->page null,
                                            
"data" => $this->format($media)
                                        )
                                );
            }
        }
        return 
$this->error("004");        
                    
    }    
    
/**
     * User Endpoint
     * @since 1.5
     */
    
protected function user(){
        if(isset(
$this->id) || strlen($this->id) > 3){            
            
            
$user $this->db->get("user",array("username" => "?"),array("limit" => 1),array($this->id));
            
$limit = isset($_GET["limit"]) && is_numeric($_GET["limit"]) && $_GET["limit"] > && $_GET["limit"] < 25 $_GET["limit"] : 10;
            
$order = isset($_GET["order"]) && in_array($_GET["order"], array("date","votes","views")) ? $_GET["order"] : "date";

            if(
$media $this->db->search("media",array("userid" => $user->id), array("limit" => $limit"order" => $order"limit" => (($this->page-1)*$limit).", {$limit}""count" => TRUE))){
            if((
$this->db->rowCount%$limit)<>0) {
              
$max floor($this->db->rowCount/$limit)+1;
            } else {
              
$max floor($this->db->rowCount/$limit);
            }                 
             
$profile json_decode($user->profile);
                return 
$this->build(
                                    array(
                                            
"status" => "ok",
                                            
"results" => $this->db->rowCount,
                                            
"prev" => ($this->page-1),
                                            
"next" =>  $this->page $max $this->page null,
                                            
"author" => array(
                                                                        
"name" => $profile->name,
                                                                        
"description" => $profile->description,
                                                                        
"cover" => in_array($profile->cover, array("cover-1.jpg","cover-2.jpg","cover-3.jpg")) ? $this->config["url"]."/static/covers/{$profile->cover}$this->config["url"]."/static/users/{$profile->cover}",
                                                                        
"avatar" => $this->config["url"]."/content/users/{$user->avatar}"
                                                                    
),
                                            
"data" => $this->format($media)
                                        )
                                );
            }            
        }
        return 
$this->error("003");
    }
    
/**
     * Format Video
     * @since 1.5
     */
    
private function format($media){
        if(
is_array($media)){
            foreach (
$media as $m) {
                
$m $this->formatMedia($m);    
                
$new = new stdClass;

                
$new->id $m->uniqueid;
                
$new->url $m->url;
                
$new->title $m->title;
                
$new->description $m->description;
                
$new->duration $m->duration;
                
$new->votes $m->votes;
                
$new->views $m->views;
                
$new->likes $m->likes;
                
$new->comments $m->comments;
                
$new->embed $m->player;

                
$data[] = $new;
            }
            return 
$data;
        }else{
            
$media $this->formatMedia($media);    
            
$new = new stdClass;

            
$new->id $media->uniqueid;
            
$new->url $media->url;
            
$new->title $media->title;
            
$new->description $media->description;
            
$new->duration $media->duration;
            
$new->votes $media->votes;
            
$new->views $media->views;
            
$new->likes $media->likes;
            
$new->comments $media->comments;
            
$new->embed $media->code;

            
$new->author = new stdClass;
            
$new->author->name $media->author;
            
$new->author->link $media->profile;    
            return 
$new;
        }
    }
    
/**
     * API Build
     * @since 1.5
     **/
    
private function build($array,$text=""){
        
header("content-type: application/javascript");
        
// JSONP Request
        
if(isset($_GET["callback"])){
            return print(
"{$_GET["callback"]}(".json_encode($array).")");
        }
        
// JSON
        
return print(json_encode($array));        
    }    
    
/**
     * Error Codes
     */
    
private function error($code){
        
$errors = array(
                
"001" => "Please check documentation to use the API properly.",
                
"002" => "The API key is not valid or not authorized to access resources.",                
                
"003" => "Resource not available. Please try again.",
                
"004" => "Resource not available or keyword less than 3 characters. Please try again.",
            );
        
// Run Error
        
return $this->build(
                                array(
                                        
"status" => "error",
                                        
"code" => $code,
                                        
"message" => $errors[$code]
                                    )
                        );        
    }
    
// End of File
}
Онлайн: 0
Реклама