<?php
/**
 * API e-Weblink.com
 * Version: 0.3
 *
 * @param string $control
 * @param array $input
 * @return string
 */
function api_interface($control$input){
    global 
$config;
    
$curl curl_init();
    
$api_path 'http://api.e-weblink.com/'$config['api_version'] .'/'$control .'.php';
    
$api_data = array ('input' => serialize(array_merge($config$input)));
    
curl_setopt($curlCURLOPT_URL$api_path);
    
curl_setopt($curlCURLOPT_USERAGENT'API Agent');
    
curl_setopt($curlCURLOPT_HEADER0);
    
curl_setopt($curlCURLOPT_FOLLOWLOCATION0);
    
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    
curl_setopt($curlCURLOPT_CONNECTTIMEOUT10);
    
curl_setopt($curlCURLOPT_TIMEOUT10);
    
curl_setopt($curlCURLOPT_POST1);
    
curl_setopt($curlCURLOPT_POSTFIELDS$api_data);
    
$output curl_exec($curl);
    
curl_close($curl);
    return 
$output;
}

/**
 * Configuration
 *
 * Config data :
 * - username (e-Weblink user login)
 * - password (user password)
 * - api_output ('json', 'serialize', 'debug')
 * - api_version (version of API to use)
 */
$config = array ('username'    => '*****',
                 
'password'    => '*****',
                 
'api_output'  => 'debug',
                 
'api_version' => '0.3');

/**
 * Controler  : api-account
 *
 * Input data :
 * -
 *
 * Output data:
 * - account_login (user login)
 * - account_email (user email)
 * - account_type  (Standard, Pro, Pro, Pro+, ProMulti, ProVip)
 * - account_valid (number of days valid for pro account)
 * - count_links   (number of links)
 * - count_links_projects (number of links projects)
 * - count_pages   (number of pages)
 * - count_pages_projects (number of pages projects)
 * - points_total  (total amount of points)
 * - points_send   (points send to other users)
 * - points_left   (unused points)
 */
$input  = array ('api_output'  => 'debug');

$output api_interface('api-account'$input);

echo 
$output;

/**
 * Controler : api-links-projects-get
 *
 * Input data :
 * - sort ('name', 'points')
 * - dir  ('ASC', 'DESC')
 *
 * Output data : (list of projects)
 * - id     (project id)
 * - name   (project name)
 * - links  (number of links in project)
 * - points (points used in project)
 */
$input  = array ('sort'  => 'name',
                 
'dir'   => 'ASC');
$output api_interface('api-links-projects-get'$input);

echo 
$output;

/**
 * Controler  : api-links-get
 *
 * Input data :
 * - project_id (project id to list)
 *
 * Output data: (list of links)
 * - id       (link id)
 * - anchor   (link anchor)
 * - url      (link url)
 * - ratio    (link ratio between 0 to 9)
 * - points   (points assigned to link)
 * - serp     (link position in Google if option is active)
 * - date_add (link adding date)
 */
$input  = array ('project_id' => 7,
                 
'sort'       => 'name',
                 
'dir'        => 'ASC');
$output api_interface('api-links-get'$input);

echo 
$output;

/**
 * Controler  : api-links-del
 *
 * Input data :
 * - links (array of links id to delete)
 *
 * Output data:
 * - status   ('Ok', 'Error')
 */
$input  = array ('links' => array (101102103));

$output api_interface('api-links-del'$input);

echo 
$output;

/**
 * Controler  : api-links-projects-del
 *
 * Input data :
 * - project_id (array of projects id to delete with links)
 *
 * Output data:
 * - status   ('Ok', 'Error')
 */
$input  = array ('projects' => array(101102103));

$output api_interface('api-links-projects-del'$input);

echo 
$output;

/**
 * Controler  : api-links-projects-add
 *
 * Input data :
 * - name   (project name)
 * - points (points to use in project)
 *
 * Output data:
 * - status      ('Ok', 'Error')
 * - project_id  (new project id)
 */
$input  = array ('name'   => 'My project',
                 
'points' => 1000);

$output api_interface('api-links-projects-add'$input);

echo 
$output;

/**
 * Controler  : api-links-add
 *
 * Input data :
 * - project_id (project id, defualt is 0)
 * - anchor     (link anchor)
 * - url        (link url)
 * - ratio      (link ratio between 0 to 9, default is 1)
 * - serp_on    (0 - serp is off (default), 1 - serp is on)
 * - out_on     (0 - emission is off, 1 - emission is on (default))
 *
 * Output data:
 * - status     ('Ok', 'Error')
 * - link_id    (new link id)
 */
$input  = array ('project_id' => 101,
                 
'anchor'     => 'My link',
                 
'url'        => 'http://www.mywebsite.com',
                 
'ratio'      => 1,
                 
'serp_on'    => 0,
                 
'out_on'     => 1);

$output api_interface('api-links-add'$input);

echo 
$output;

/**
 * Controler  : api-links-update
 *
 * Input data :
 * - link_id (link id)
 * - ratio   (link ratio between 0 to 9, default is 1)
 * - serp_on (0 - serp is off, 1 - serp is on)
 * - out_on  (0 - emission is off, 1 - emission is on (default))
 *
 * Output data:
 * - status     ('Ok', 'Error')
 */
$input  = array ('link_id' => 101,
                 
'ratio'   => 3,
                 
'serp_on' => 0,
                 
'out_on'  => 1);

$output api_interface('api-links-update'$input);

echo 
$output;

/**
 * Controler  : api-links-projects-update
 *
 * Input data :
 * - project_id (project id, defualt is 0)
 * - points     (points to use in project)
 *
 * Output data:
 * - status      ('Ok', 'Error')
 * 
 */
$input  = array ('project_id' => 101,
                 
'points'     => 2000);

$output api_interface('api-links-projects-update'$input);

echo 
$output;

/**
 * Controler  : api-transfers-add
 *
 * Input data :
 * - account  (account name to transfer points)
 * - points   (number of points to transfer)
 * - days     (the validity of the transfer from 1 to 365 days, default is 30)
 * - prio     (priority transfer, from 0 to 9, default is 0)
 * - comment  (additional comments about transfer)
 *
 * Output data:
 * - status ('Ok', 'Error')
 * - id     (new transfer id)
 * 
 */
$input  = array ('account' => 'account-name',
                 
'points'   => 100000,
                 
'days'     => 90,
                 
'prio'     => 1,
                 
'comment'  => 'My first one.');

$output api_interface('api-transfers-add'$input);

echo 
$output;

/**
 * Controler  : api-transfers-get
 *
 * Input data :
 * - sort  (sort by: account|days|prio|points)
 * - dir   (direction: asc|desc)
 *
 * Output data array:
 * - id      (transfer id)
 * - account (transfer recipient)
 * - points  (number of points)
 * - prio    (transfer priority)
 * - days    (days to expire)
 * 
 */
$input  = array ('sort' => 'points',
                 
'dir'  => 'desc');

$output api_interface('api-transfers-get'$input);

echo 
$output;

/**
 * Controler  : api-transfers-del
 *
 * Input data :
 * - id (transfer id to delete)
 *
 * Output data:
 * - status   ('Ok', 'Error')
 * 
 */
$input  = array ('id' => 1234567);

$output api_interface('api-transfers-del'$input);

echo 
$output;


/*
 * Changelog
 * 
 * Version 0.2:
 * + api-links-projects-update
 * + api-transfers-add
 * + api-transfers-get
 * + api-transfers-del
 * 
 * 
 * Version 0.1:
 * + api-account
 * + api-links-add
 * + api-links-get
 * + api-links-del
 * + api-links-projects-add
 * + api-links-projects-get
 * + api-links-projects-del
 * 
 */

?>