<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class will take care of Domain Registrars.
 *
 * @package    Domain
 * @category   Service
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
abstract class Service_Domain {
	protected $so;
	protected $fetchresult = NULL;
	// @todo These options should be centrally defined
	protected $curlopts = array(
		CURLOPT_CONNECTTIMEOUT => 60,
		CURLOPT_FAILONERROR => TRUE,
		CURLOPT_FOLLOWLOCATION => FALSE,
		CURLOPT_HEADER => FALSE,
		CURLOPT_HTTPPROXYTUNNEL => FALSE,
		CURLOPT_RETURNTRANSFER => TRUE,
		CURLOPT_TIMEOUT => 30,
		CURLOPT_SSL_VERIFYHOST => FALSE,
		CURLOPT_SSL_VERIFYPEER => FALSE,
		CURLOPT_VERBOSE => FALSE,
	);

	/**
	 * Setup this class. We need to get our supplier details out of the database.
	 */
	public function __construct($sid) {
		$this->so = ORM::factory('Domain_Registrar',$sid);
	}

	/**
	 * Our HTML button that will enable us to manage this domain.
	 */
	abstract public function manage_button(Model_Service_Plugin_Domain $spdo,$t);

	/**
	 * Return an instance of this class
	 */
	public static function instance($supplier) {
		$sc = sprintf('%s_%s',get_called_class(),$supplier);

		if (! class_exists($sc))
			throw new Kohana_Exception('Class doesnt exist for :supplier',array(':supplier'=>$supplier));
		else
			return new $sc;
	}
}
?>
