<?php
   
class ZeroLink
{
    private $API_DOMAIN = 'http://api.0l.ro';
    public $AGENT = "API TEST CLASS";
       
    public function __construct( )
    {        
        if ( ! $this->testCurl( ) ) {
            exit( 'cURL extension is not avaible' );
        }
    }

    public function testCurl( )
    {
        if ( in_array( 'curl', get_loaded_extensions( ) ) )
            return true;
        return false;
    }

    public function xml_to_arr( $xml )
    {
        $tmp = ( array )$xml;
       
        foreach ( $tmp as & $t ) {
            if( is_a( $t, 'SimpleXMLElement' ) )
                $t = $this->xml_to_arr( $t );
        }
       
        return $tmp;
    }

    public function sendRequest( $query )
    {
        $ch = curl_init( );
       
        curl_setopt( $ch, CURLOPT_URL, $query );
        curl_setopt( $ch, CURLOPT_FAILONERROR, 1 );
        curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $ch, CURLOPT_TIMEOUT, 30 );
        curl_setopt( $ch, CURLOPT_USERAGENT, $this->AGENT );
       
        $result = curl_exec( $ch );

        curl_close( $ch );

        return $result;
    }

    public function shorten( $url )
    {
        $url = urlencode( $url );

        $query  = $this->API_DOMAIN . '/v1/shorten.php?url=' . $url;
        $result = $this->sendRequest( $query );

        if ( $result === false || strlen( $result ) == 0 ) {
            return false;
        }

        $xml = new SimpleXMLElement( $result );            
        $result = $this->xml_to_arr( $xml );

        return $result;
    }

    public function expand( $hash )
    {
        $query  = $this->API_DOMAIN . '/v1/expand.php?hash=' . $hash;
        $result = $this->sendRequest( $query );

        if ( $result === false || strlen( $result ) == 0 ) {
            return false;
        }
       
        $xml = new SimpleXMLElement( $result );
        $result = $this->xml_to_arr( $xml );
       
        return $result;
    }
   
}

////////////////////////////////////////////////////////////////////////////
//                           USING ZEROLINK API
////////////////////////////////////////////////////////////////////////////

    echo "<pre>";
   
    $zl = new ZeroLink( );
    print_r( $zl->shorten( 'http://example.com/' ) );
   
    print "<hr>";
   
    print_r( $zl->expand( 'WH' ) );
   
    echo "</pre>";