[ Index ]

PHP Cross Reference of zeList

title

Body

[close]

/includes/ -> api.php (source)

   1  <?php
   2  
   3  define('ZELISTAPI_VERSION', '0.6.1' );
   4  define('ZELISTAPI_XMLRPC_SERVER', 'http://api.zelist.net/xmlrpc.php' );
   5  
   6  /**
   7   * Generic function to get zeList API key
   8   * @return false or api key
   9   */
  10  function zelist_api_get_key() {
  11    return get_option('zelistapi_api_key');
  12  }
  13  
  14  function zelist_api_get_site_id() {
  15    return get_option('zelistapi_site_id');
  16  }
  17  
  18  /**
  19   * API Admin Page load
  20   * @return unknown_type
  21   */
  22  function zelist_api_load() {
  23    //wp_enqueue_script('zelist_settings',ZELIST_URL.'/js/settings.js',array('jquery-form'),ZELIST_CURRENT_VERSION);
  24  
  25    global $messages;
  26  
  27    if(isset($_GET['action'])) {
  28  
  29      $action = trim($_GET['action']);
  30      check_admin_referer($action);
  31  
  32      switch ($action) {
  33        case 'deactivate' : case 'activate' :
  34          $actives = get_option('zelistapi_features_active');
  35          $features = get_option('zelistapi_features');
  36          $call = trim($_GET['feature']);
  37          if(isset($features[$call])) {
  38            if($action == 'activate') $actives[$call] = 1;
  39            else $actives[$call] = 0;
  40            if($action == 'activate') $messages['success'][] = sprintf(__('%s activated','zelist'),$features[$call]['name']);
  41            else $messages['success'][] = sprintf(__('%s deactivated','zelist'),$features[$call]['name']);
  42            update_option('zelistapi_features_active',$actives);
  43          }
  44          else $messages['error'][] = __('Feature unknown','zelist');
  45          break;
  46        default:
  47          break;
  48      }
  49    }
  50  
  51    if(!$_POST || !$_POST['method']) return;
  52  
  53  
  54  
  55    $method = trim($_POST['method']);
  56    check_admin_referer('zelist-api');
  57    $zeListAPI = new zeListAPI();
  58  
  59    if($zeListAPI->is_method($method)) {
  60      if($method == 'CheckKey') $args = 'api_key='.trim($_POST['api_key']);
  61      $methodname = 'zeListAPI.'.$method;
  62      $request = $zeListAPI->call($methodname,$args);
  63      if(!$request) {
  64        $messages['error'][] = $zeListAPI->error;
  65      }
  66      else {
  67        $response = $zeListAPI->response;
  68        $messages['success'][] = $response['message'];
  69  
  70        if($method == 'CheckKey') {
  71          // update API key
  72          if(get_option('zelistapi_api_key') !== false) update_option('zelistapi_api_key',trim($_POST['api_key']));
  73          else add_option('zelistapi_api_key',trim($_POST['api_key']));
  74  
  75          // update site_id
  76          if(get_option('zelistapi_site_id') !== false) update_option('zelistapi_site_id',$response['site_id']);
  77          else add_option('zelistapi_site_id',$response['site_id']);
  78  
  79          // update site info
  80          if(get_option('zelistapi_site_info') !== false) update_option('zelistapi_site_info',$response['site_info']);
  81          else add_option('zelistapi_site_info',$response['site_info']);
  82        }
  83        elseif($method == 'GetFeatures') {
  84          // update features
  85          if(get_option('zelistapi_features') !== false) update_option('zelistapi_features',$response['features']);
  86          else add_option('zelistapi_features',$response['features']);
  87        }
  88  
  89      }
  90      //echo '<pre>'.print_r($messages,1).'</pre>'; echo '<pre>'.print_r($zeListAPI,1).'</pre>';    die();
  91    }
  92  }
  93  add_action('load-zelist/admin/api.php','zelist_api_load');
  94  
  95  class zelistAPI {
  96    function zeListAPI() {
  97      return __construct();
  98    }
  99  
 100    function __construct() {
 101      $this->api_server = ZELISTAPI_XMLRPC_SERVER;
 102      $this->api_version = ZELISTAPI_VERSION;
 103      $this->error = false;
 104      $this->error_message = '';
 105  
 106      $this->site_id = get_option('zelistapi_site_id');
 107      $this->api_key = get_option('zelistapi_api_key');
 108      if(!$this->site_id || !$this->api_key) {
 109        $this->error = true;
 110        $this->error_message = sprintf(__('<a href="%s">Please register your API first</a>','zelist'),admin_url('admin.php?page=zelist/admin/api.php'));
 111      }
 112      $this->methods = array('CheckKey','GetFeatures','Parse');
 113      $this->site_name = get_option('blogname');
 114      $this->site_description = get_option('blogdescription');
 115      $this->site_rss = get_bloginfo('rss2_url');
 116      $this->auth_key = $this->site_id . ':' . md5($this->api_key.date('Y-m-d'));
 117      $this->site_url = get_option('home');
 118      $this->locale = get_locale();
 119    }
 120  
 121  
 122    function is_method($method = '') {
 123      if(in_array($method,$this->methods)) return true;
 124      return false;
 125    }
 126  
 127    function call($method,$args = '') {
 128      $defaults = array(
 129      'api_version' => $this->api_version,
 130      'site_id' => $this->site_id,
 131      'auth_key' => $this->auth_key,
 132      'locale' => $this->locale,
 133      );
 134  
 135      if($method == 'zeListAPI.CheckKey') {
 136        $defaults['site_url'] = $this->site_url;
 137        $defaults['site_name'] = $this->site_name;
 138        $defaults['site_description'] = $this->site_description;
 139        $defaults['site_rss'] = $this->site_rss;
 140      }
 141      elseif($this->error) {
 142        return false;
 143      }
 144  
 145      $args = wp_parse_args($args,$defaults);
 146  
 147      //$debug = true;
 148      require_once( ABSPATH . WPINC . '/class-IXR.php' );
 149      $this->client = new IXR_Client( $this->api_server );
 150      if($debug) $this->client->debug = true;
 151  
 152      $this->client->query( $method, $args);
 153  
 154      if ( $this->client->isError() ) {
 155  
 156        if ( $this->client->getErrorCode() == -32300 )
 157        $this->error = __('Connection to zeList API failed','zelist'). $this->client->getErrorMessage();
 158        else
 159        $this->error = $this->client->getErrorMessage();
 160        return false;
 161      } else {
 162        $this->error = false;
 163      }
 164      $this->response = $this->client->getResponse();
 165      return true;
 166    }
 167  
 168  }
 169  
 170  
 171  
 172  
 173  function zelist_api_get_features() {
 174    $features = get_option('zelistapi_features');
 175    $actives = get_option('zelistapi_features_active');
 176    if($actives) foreach($actives as $call => $active) {
 177      if(isset($features[$call])) $features[$call]['active'] = $active;
 178    }
 179    return $features;
 180  }
 181  


Generated: Sat May 30 23:51:06 2009 Cross-referenced by PHPXref 0.7