<?php
class Api_SubadminController extends Zend_Controller_Action 
{
	
	public function init()
	{

		//TODO: extend authentication to support multiple user levels/roles/groups 
		require_once 'application/models/api.php';
		$this->api = new api();
		
		$this->view->baseUrl = $this->_request->getBaseUrl();
		$this->view->appBaseUrl = $this->_request->getBaseUrl() . (strpos($this->_request->getBaseUrl(),'index.php')?'':'/index.php');
		$this->view->siteBaseUrl = Zend_Registry::get('siteBaseUrl');
		$this->view->moduleBaseUrl = $this->view->appBaseUrl . ($this->_request->module == 'default'?'':'/' . $this->_request->module);
		
		$this->_helper->viewRenderer->setNoRender();
		
		$this->restserver = new Zend_Rest_Server();
		$this->restserver->setClass('api');
		
		if( !Atmail_HttpAuth::authenticated(3, null, 'admin', null) )
			$this->_forward('authenticationfailed');
		
		$this->APIArgs = $this->getRequest()->getParams();
		
		//check and convert rest call args
		if( 
			count($this->APIArgs) == 5 && 
			array_key_exists('rest', $this->APIArgs) && 
			$this->APIArgs['rest'] == 1 && 
			array_key_exists('module', $this->APIArgs) && 
			array_key_exists('controller', $this->APIArgs) && 
			array_key_exists('action', $this->APIArgs)  
		)
			$this->APIArgs = $this->APIArgs[0];
			
		unset($this->APIArgs['action']);
		unset($this->APIArgs['module']);
		unset($this->APIArgs['controller']);
		
		//$this->log = Zend_Registry::get('log');

	} 

	public function authenticationfailedAction() {

		//just an empty deadend so failed XML responses are uniform
		$this->restserver->handle( array('method' => 'authenticationFailed') ); 

	}
	
	public function authenticateAction() {

		$this->restserver->handle( array('method' => 'authenticate', 'username' => $_SERVER["PHP_AUTH_USER"], 'password' => $_SERVER["PHP_AUTH_PW"]) );

	}
	
	public function indexAction() {

        $this->restserver->handle( array('method' => 'index') );

	}
	
	public function createAction() {
	
		$this->restserver->handle( array('method' => 'subadminCreate', 'args' => $this->APIArgs) );
	
	}
	
	public function viewAction() {
	
		$this->restserver->handle( array('method' => 'subadminView', 'args' => $this->APIArgs) ); 
		
	}	
	
	public function listAction() {
			
		$this->restserver->handle( array('method' => 'subadminList', 'args' => $this->APIArgs) );
		
	}   
	
	public function updateAction() {
	
		$this->restserver->handle( array('method' => 'subadminUpdate', 'args' => $this->APIArgs) );
		 
	}   
	
	public function deleteAction() {
		
		$this->restserver->handle( array('method' => 'subadminDelete', 'args' => $this->APIArgs) ); 
		
	}
	
	public function getcurrentquotaAction()
	{

		$this->restserver->handle( array('method' => 'getCurrentQuota', 'args' => $this->APIArgs) );

	}
	
}