From c11a9b3e013b51655d9c5bd92a927f0c22af12db Mon Sep 17 00:00:00 2001 From: Malishev Dima Date: Mon, 20 Jun 2011 18:26:03 +0300 Subject: [PATCH] PHP code formatted + made more readable --- web/dispatch.php | 49 +- web/vesta/api/AjaxHandler.php | 72 +- web/vesta/api/CRON.class.php | 436 ++++--- web/vesta/api/DB.class.php | 377 +++--- web/vesta/api/DNS.class.php | 560 ++++---- web/vesta/api/IP.class.php | 279 ++-- web/vesta/api/MAIN.class.php | 187 +-- web/vesta/api/PARAMS.class.php | 165 +-- web/vesta/api/USER.class.php | 381 +++--- web/vesta/api/WEB_DOMAIN.class.php | 1147 ++++++++++------- web/vesta/app.init.php | 3 +- web/vesta/config/Config.class.php | 44 +- web/vesta/core/Request.class.php | 77 +- web/vesta/core/Vesta.class.php | 347 +++-- .../exceptions/ProtectionException.class.php | 18 +- .../core/exceptions/SystemException.class.php | 3 +- web/vesta/core/utils/Message.class.php | 27 +- web/vesta/core/utils/error_logger.php | 47 + 18 files changed, 2328 insertions(+), 1891 deletions(-) create mode 100644 web/vesta/core/utils/error_logger.php diff --git a/web/dispatch.php b/web/dispatch.php index 76338d65e..e6a31cebd 100644 --- a/web/dispatch.php +++ b/web/dispatch.php @@ -1,49 +1,6 @@ \ No newline at end of file +?> diff --git a/web/vesta/api/AjaxHandler.php b/web/vesta/api/AjaxHandler.php index 16fe4c7bf..f1eab6ff6 100644 --- a/web/vesta/api/AjaxHandler.php +++ b/web/vesta/api/AjaxHandler.php @@ -1,12 +1,12 @@ + * @return AjaxHandler */ - static function getInstance($request=null) { + static function getInstance($request=null) + { return null == self::$instance ? self::$instance = new self() : self::$instance; } @@ -26,13 +27,15 @@ class AjaxHandler { * Called functions should reply in the following way * return $this->reply($result, $data, $msg, $extra); * - * @param type $request - * @return type + * @param Request $request + * @return mixed */ - function dispatch($request) { + function dispatch($request) + { $method = Request::parseAjaxMethod($request); $inc_file = V_ROOT_DIR . 'api' . DIRECTORY_SEPARATOR . $method['namespace'] . '.class.php'; - if (!is_readable($inc_file)) { + if (!is_readable($inc_file)) + { throw new SystemException(Message::INVALID_METHOD); } @@ -41,14 +44,24 @@ class AjaxHandler { $space = new $method['namespace']; $method = $method['function'] . 'Execute'; - if (!method_exists($space, $method)) { + if (!method_exists($space, $method)) + { throw new SystemException(Message::INVALID_METHOD); } return $space->$method($request); } - function reply($result, $data, $message = '', $extra = array()) { + /** + * Prepare the result of method execution into ajax-readable format + * + * @param boolean $result - result of method execution + * @param array $data - data to be replied + * @param string $message - replied message + * @param array $extra - extra data + */ + function reply($result, $data, $message = '', $extra = array()) + { return json_encode(array('result' => $result, 'data' => $data, 'message' => $message, @@ -57,7 +70,12 @@ class AjaxHandler { )); } - static function makeReply($reply) { + /** + * TODO: delete this method + * @deprecated + */ + static function makeReply($reply) + { print $reply; } @@ -65,22 +83,42 @@ class AjaxHandler { // Error handlers // - static function generalError($error) { + /** + * Generate general error + * @param Exception $error + */ + static function generalError($error) + { self::renderGlobalError(Message::ERROR, Message::GENERAL_ERROR, $error); } - static function protectionError($error) { + /** + * Generate protection error + * @param Exception $error + */ + static function protectionError($error) + { self::renderGlobalError(Message::ERROR, Message::PROTECTION_ERROR, $error); } - static function systemError($error) { + /** + * Generate system error + * @param Exception $error + */ + static function systemError($error) + { self::renderGlobalError(Message::ERROR, Message::SYSTEM_ERROR, $error); } - static function renderGlobalError($type, $message, $error) { + /** + * Prepare and render the error + * @param Exception $error + */ + static function renderGlobalError($type, $message, $error) + { $trace = $error->getTrace(); AjaxHandler::makeReply( - AjaxHandler::getInstance()->reply(false, $type, $message . ': ' . $error->getMessage(), $trace[0]['file'] . ' / ' . $trace[0]['line']) + AjaxHandler::getInstance()->reply(false, $type, $message . ': ' . $error->getMessage(), $trace[0]['file'] . ' / ' . $trace[0]['line']) ); } diff --git a/web/vesta/api/CRON.class.php b/web/vesta/api/CRON.class.php index a670f8d6b..f4d5e983e 100644 --- a/web/vesta/api/CRON.class.php +++ b/web/vesta/api/CRON.class.php @@ -1,221 +1,271 @@ + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 + * @copyright vesta 2010-2011 */ -class CRON extends AjaxHandler { - function getListExecute($request) - { - $_user = 'vesta'; - $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_CRON_JOBS, array($_user, Config::get('response_type'))); - - // echo '
';
-    //	print_r($result);
-
-    foreach($result['data'] as $id => $record)
-      {
-	$reply[$id] = array(
-			    'CMD' => $record['CMD'],
-			    'MIN' => $record['MIN'],
-			    'HOUR' => $record['HOUR'],
-			    'DAY' => $record['DAY'],
-			    'MONTH' => $record['MONTH'],
-			    'WDAY' => $record['WDAY'],
-			    'SUSPEND' => $record['SUSPEND'],
-			    'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
-			    );
-      }
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $reply);
-  }
-
-
-    
-  function addExecute($request) 
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'MIN' => $_s['MIN'],
-		    'HOUR' => $_s['HOUR'],
-		    'DAY' => $_s['DAY'],
-		    'MONTH' => $_s['MONTH'],
-		    'WDAY' => $_s['WDAY'],
-		    'CMD' => $_s['CMD']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_ADD_CRON_JOB, $params);
-
-
-    if($_s['REPORTS'])
-      {
-	$result = array();
-	$result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_user));
-	if(!$result['status'])
-	  {
-	    $this->status = FALSE;
-	    $this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']);
-	  }
-      }
-
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+class CRON extends AjaxHandler 
+{
   
+	/**
+	 * List cron entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function getListExecute($request) 
+	{
+		$_user = 'vesta';
+		$reply = array();
+
+		$result = Vesta::execute(Vesta::V_LIST_CRON_JOBS, 
+								array($_user, Config::get('response_type')));
+
+		foreach ($result['data'] as $id => $record) 
+		{
+			$reply[$id] = array(
+				'CMD' => $record['CMD'],
+				'MIN' => $record['MIN'],
+				'HOUR' => $record['HOUR'],
+				'DAY' => $record['DAY'],
+				'MONTH' => $record['MONTH'],
+				'WDAY' => $record['WDAY'],
+				'SUSPEND' => $record['SUSPEND'],
+				'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
+			);
+		}
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $reply);
+	}
+
+	/**
+	 * Add cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function addExecute($request) 
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
+
+		$params = array(
+			'USER' => $_user,
+			'MIN' => $_s['MIN'],
+			'HOUR' => $_s['HOUR'],
+			'DAY' => $_s['DAY'],
+			'MONTH' => $_s['MONTH'],
+			'WDAY' => $_s['WDAY'],
+			'CMD' => $_s['CMD']
+		);
+
+		$result = Vesta::execute(Vesta::V_ADD_CRON_JOB, $params);
+
+		if ($_s['REPORTS'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, 
+									 array('USER' => $_user));
+			if (!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
+      
+    /**
+	 * Delete cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */  
+	function delExecute($request) 
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
+
+		$params = array(
+				'USER' => $_user,
+				'JOB' => $_s['JOB']
+		);
+		$result = Vesta::execute(Vesta::V_DEL_CRON_JOB, $params);
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
   
-    
-  function delExecute($request) 
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'JOB' => $_s['JOB']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_DEL_CRON_JOB, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-  
-    
-  
-  function changeExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_old = $_s['old'];
-    $_new = $_s['new'];
+	/**
+	 * Change cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	function changeExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_old = $_s['old'];
+		$_new = $_s['new'];
 
-    $_user = 'vesta';
-    $_JOB = $_new['JOB'];
-    
-    $result = array();
-    $params = array(
-		    'USER' => $_user,
-		    'JOB' => $_JOB,
-		    'MIN' => $_new['MIN'],
-		    'HOUR' => $_new['HOUR'],
-		    'DAY' => $_new['DAY'],
-		    'MONTH' => $_new['MONTH'],
-		    'WDAY' => $_new['WDAY'],
-		    'CMD' => $_new['CMD']
-		    );
+		$_user = 'vesta';
+		$_JOB = $_new['JOB'];
 
-    $result = Vesta::execute(Vesta::V_CHANGE_CRON_JOB, $params);
+		$result = array();
+		$params = array(
+			'USER' => $_user,
+			'JOB' => $_JOB,
+			'MIN' => $_new['MIN'],
+			'HOUR' => $_new['HOUR'],
+			'DAY' => $_new['DAY'],
+			'MONTH' => $_new['MONTH'],
+			'WDAY' => $_new['WDAY'],
+			'CMD' => $_new['CMD']
+		);
+
+		$result = Vesta::execute(Vesta::V_CHANGE_CRON_JOB, $params);
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
+
+	/**
+	 * Suspend cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	function suspendExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+
+		$_user = 'vesta';
+		$_JOB = $_s['JOB'];
+
+		$params = array(
+			'USER' => $_user,
+			'JOB' => $_JOB
+		);
+
+		$result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, $params);
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
 
 
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+	/**
+	 * Unsuspend cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	function unsuspendExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
+		$_user = 'vesta';
+		$_JOB = $_s['JOB'];
 
+		$params = array(
+			'USER' => $_user,
+			'JOB' => $_JOB
+		);
 
-  function suspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		$result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, $params);
 
-    $_user = 'vesta';
-    $_JOB = $_s['JOB'];
-    
-    $params = array(
-		    'USER' => $_user,
-		    'JOB' => $_JOB
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
+		return $this->reply($result['status'], $result['data']);
+	}
 
+	/**
+	 * Batch suspend cron entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	function suspendAllExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
-  function unsuspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		$_user = 'vesta';
+		$_JOB = $_s['JOB'];
 
-    $_user = 'vesta';
-    $_JOB = $_s['JOB'];
-    
-    $params = array(
-		    'USER' => $_user,
-		    'JOB' => $_JOB
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		$params = array(
+			'USER' => $_user
+		);
 
+		$result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOBS, $params);
 
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
-  function suspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		return $this->reply($result['status'], $result['data']);
+	}
+	
+	/**
+	 * Batch suspend cron entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	function unsuspendAllExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
-    $_user = 'vesta';
-    $_JOB = $_s['JOB'];
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOBS, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		$_user = 'vesta';
 
+		$params = array(
+			'USER' => $_user
+		);
 
+		$result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOBS, $params);
 
-  function unsuspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOBS, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		return $this->reply($result['status'], $result['data']);
+	}
    
 }
diff --git a/web/vesta/api/DB.class.php b/web/vesta/api/DB.class.php
index dcc130bf9..1954cf14f 100644
--- a/web/vesta/api/DB.class.php
+++ b/web/vesta/api/DB.class.php
@@ -3,194 +3,247 @@
 /**
  * DB 
  * 
+ * @author Naumov-Socolov 
+ * @author Malishev Dima 
  * @author vesta, http://vestacp.com/
  * @copyright vesta 2011
  */
-class DB extends AjaxHandler {
-    function getListExecute($request) 
+class DB extends AjaxHandler 
+{
+	
+	/**
+	 * List entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+    public function getListExecute($request) 
     {
-    $_user = 'vesta';
-    $reply = array();
-    
-    $result = Vesta::execute(Vesta::V_LIST_DB_BASES, array($_user, Config::get('response_type')));
-    
-    //    echo '
';
-    //    print_r($result);
+		$_user = 'vesta';
+		$reply = array();		
+		$result = Vesta::execute(Vesta::V_LIST_DB_BASES, array($_user, Config::get('response_type')));
 
-    foreach($result['data'] as $db => $record)
-      {
-	$reply[$db] = array(
-			    'DB' => $db,
-			    'USER' => $record['USER'],
-			    'HOST' => $record['HOST'],
-			    'TYPE' => $record['TYPE'],
-			    'U_DISK' => $record['U_DISK'],
-			    'SUSPEND' => $record['SUSPEND'],
-			    'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
-			    );
-      }
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $reply);
-  }
+		foreach ($result['data'] as $db => $record)
+		{
+			$reply[$db] = array(
+				'DB' => $db,
+				'USER' => $record['USER'],
+				'HOST' => $record['HOST'],
+				'TYPE' => $record['TYPE'],
+				'U_DISK' => $record['U_DISK'],
+				'SUSPEND' => $record['SUSPEND'],
+				'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
+			);
+		}
+		
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+		
+		return $this->reply($result['status'], $reply);
+	}
 
-  function addExecute($request) 
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_user = 'vesta';
+	/**
+	 * Add entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function addExecute($request) 
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
 
-    $params = array(
-		    'USER' => $_user,
-		    'DB' => $_s['DB'],
-		    'DB_USER' => $_s['DB_USER'],
-		    'DB_PASSWORD' => $_s['DB_PASSWORD'],
-		    'TYPE' => $_s['TYPE']
-		    );
-    if($_s['HOST'])
-      $params['HOST'] = $_s['HOST'];
-    
-    $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params);
+		$params = array(
+			'USER' => $_user,
+			'DB' => $_s['DB'],
+			'DB_USER' => $_s['DB_USER'],
+			'DB_PASSWORD' => $_s['DB_PASSWORD'],
+			'TYPE' => $_s['TYPE']
+		);
+		if ($_s['HOST']) 
+		{
+			$params['HOST'] = $_s['HOST'];
+		}
 
+		$result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params);
 
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-  
-  
-    
-  function delExecute($request) 
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'DB' => $_user.'_'.$_s['DB']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_DEL_DB_BASE, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-  
-    
-  
-  function changePasswordExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
-    $_user = 'vesta';
-    
-    $result = array();
-    $params = array(
-		    'USER' => $_user,
-		    'DB' => $_user.'_'.$_s['DB'],
-		    'PASSWORD' => $_s['DB_PASSWORD']
-		    );
+		return $this->reply($result['status'], $result['data']);
+	}
+      
+	/**
+	 * Delete entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function delExecute($request) 
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
 
-    $result = Vesta::execute(Vesta::V_CHANGE_DB_PASSWORD, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		$params = array(
+			'USER' => $_user,
+			'DB' => $_user.'_'.$_s['DB']
+		);
 
+		$result = Vesta::execute(Vesta::V_DEL_DB_BASE, $params);
 
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
-  function suspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		return $this->reply($result['status'], $result['data']);
+	}
 
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'DB' => $_user.'_'.$_s['DB']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+	/**
+	 * Change password
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function changePasswordExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
+		$_user = 'vesta';
 
+		$result = array();
+		$params = array(
+			'USER' => $_user,
+			'DB' => $_user.'_'.$_s['DB'],
+			'PASSWORD' => $_s['DB_PASSWORD']
+		);
 
-  function unsuspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		$result = Vesta::execute(Vesta::V_CHANGE_DB_PASSWORD, $params);
 
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'DB' => $_user.'_'.$_s['DB']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
+		return $this->reply($result['status'], $result['data']);
+	}
+	
+	/**
+	 * suspend user
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function suspendExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
+		$_user = 'vesta';
 
-  function suspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+		$params = array(
+			'USER' => $_user,
+			'DB' => $_user.'_'.$_s['DB']
+		);
 
-    $_user = 'vesta';
-    $_JOB = $_s['JOB'];
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASES, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		$result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, $params);
 
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
+		return $this->reply($result['status'], $result['data']);
+	}
 
-  function unsuspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
+	/**
+	 * unsuspend entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function unsuspendExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
 
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASES, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
+		$_user = 'vesta';
+
+		$params = array(
+			'USER' => $_user,
+			'DB' => $_user.'_'.$_s['DB']
+		);
+
+		$result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, $params);
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
+
+	/**
+	 * Batch suspend entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function suspendAllExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+
+		$_user = 'vesta';
+		$_JOB = $_s['JOB'];
+
+		$params = array(
+			'USER' => $_user
+		);
+
+		$result = Vesta::execute(Vesta::V_SUSPEND_DB_BASES, $params);
+
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
+
+	/**
+	 * Batch unsuspend entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function unsuspendAllExecute($request)
+	{
+		$r = new Request();
+		$_s = $r->getSpell();
+
+		$_user = 'vesta';
+
+		$params = array(
+			'USER' => $_user
+		);
+
+		$result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASES, $params);
+
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
     
 }
diff --git a/web/vesta/api/DNS.class.php b/web/vesta/api/DNS.class.php
index 741eb1ad8..5ba8bd199 100644
--- a/web/vesta/api/DNS.class.php
+++ b/web/vesta/api/DNS.class.php
@@ -3,308 +3,358 @@
 /**
  * DNS 
  * 
+ * @author Naumov-Socolov 
+ * @author Malishev Dima 
  * @author vesta, http://vestacp.com/
- * @copyright vesta 2010 
+ * @copyright vesta 2010-2011
  */
+class DNS extends AjaxHandler 
+{
+ 
+	/**
+	 * list entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function getListExecute($request) {
+		$_user = 'vesta';
+		$reply = array();
 
-class DNS extends AjaxHandler {
-    function getListExecute($request) {
-        $_user = 'vesta';
-        $reply = array();
-       
-        $result = Vesta::execute(Vesta::V_LIST_DNS_DOMAINS, array($_user, Config::get('response_type')));
-        foreach($result['data'] as $dns_domain => $details){
-            $reply[] = array(
-			     'DNS_DOMAIN' => $dns_domain,
-			     'IP' => $details['IP'],
-			     'TPL' => $details['TPL'],
-			     'TTL' => $details['TTL'],
-			     'EXP' => $details['EXP'],
-			     'SOA' => $details['SOA'],
-			     'SUSPEND' => $details['SUSPEND'],
-			     //			     'OWNER' => $details['OWNER'],
-			     'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE'])))
-			     );
-        }
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
-     
-	return $this->reply($result['status'], $reply);
-    }
+		$result = Vesta::execute(Vesta::V_LIST_DNS_DOMAINS, array($_user, Config::get('response_type')));
+		foreach ($result['data'] as $dns_domain => $details)
+		{
+			$reply[] = array(
+				 'DNS_DOMAIN' => $dns_domain,
+				 'IP' => $details['IP'],
+				 'TPL' => $details['TPL'],
+				 'TTL' => $details['TTL'],
+				 'EXP' => $details['EXP'],
+				 'SOA' => $details['SOA'],
+				 'SUSPEND' => $details['SUSPEND'],				
+				 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE'])))
+			);
+		}
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
 
-    function getListRecordsExecute($request) {
-	$r = new Request();
-	$_s = $r->getSpell();
-	$_user = 'vesta';
+		return $this->reply($result['status'], $reply);
+	}
 
-        $reply = array();
-       
-        $result = Vesta::execute(Vesta::V_LIST_DNS_DOMAIN_RECORDS, array($_user, $_s['DNS_DOMAIN'], Config::get('response_type')));
-        foreach($result['data'] as $record_id => $details){
-            $reply[$record_id] = array(
-			     'RECORD_ID' => $record_id,
-			     'RECORD' => $details['RECORD'],
-			     'RECORD_TYPE' => $details['TYPE'],
-			     'RECORD_VALUE' => $details['VALUE'],
-			     'SUSPEND' => $details['SUSPEND'],
-			     'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE'])))
-			     );
-        }
-
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
-     
-	return $this->reply($result['status'], $reply);
-    }
-
-    // v_add_dns_domain user domain ip [template] [exp] [soa] [ttl]
-    // http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.add&USER=vesta&DOMAIN=dev.vestacp.com&IP_ADDRESS=95.163.16.160&TEMPLATE=default&EXP=01-01-12&SOA=ns1.vestacp.com&TTL=3600
-    function addExecute($_spell = false) 
+	/**
+	 * List records of entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+    public function getListRecordsExecute($request) 
     {
-      $r = new Request();
-      if($_spell)
-	$_s = $_spell;
-      else
-	$_s = $r->getSpell();
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
 
-      $_user = 'vesta';
-	
-	$params = array(
-			'USER' => $_user,  /// OWNER ???
-			'DNS_DOMAIN' => $_s['DNS_DOMAIN'],
-			'IP' => $_s['IP']);
-	if($_s['TPL']) $params['TPL'] = $_s['TPL'];
-	if($_s['EXP']) $params['EXP'] = $_s['EXP'];
-	if($_s['SOA']) $params['SOA'] = $_s['SOA'];
-	if($_s['TTL']) $params['TTL'] = $_s['TTL'];
-	
-        $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params);
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
+		$reply = array();
+	   
+		$result = Vesta::execute(Vesta::V_LIST_DNS_DOMAIN_RECORDS, array($_user, $_s['DNS_DOMAIN'], Config::get('response_type')));
+		foreach ($result['data'] as $record_id => $details)
+		{
+			$reply[$record_id] = array(
+				 'RECORD_ID' => $record_id,
+				 'RECORD' => $details['RECORD'],
+				 'RECORD_TYPE' => $details['TYPE'],
+				 'RECORD_VALUE' => $details['VALUE'],
+				 'SUSPEND' => $details['SUSPEND'],
+				 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE'])))
+			);
+		}
 
-        return $this->reply($result['status'], $result['data']);
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+		 
+		return $this->reply($result['status'], $reply);
     }
 
-    // v_add_dns_domain_record user domain record type value [id]
-    // http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.addRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD=ftp&TYPE=a&VALUE=87.248.190.222
-    function addRecordExecute($request) {
-	$r = new Request();
-	$_s = $r->getSpell();
-	$_user = 'vesta';
+	/**
+	 * Add entry
+	 * 
+	 * v_add_dns_domain user domain ip [template] [exp] [soa] [ttl]
+	 * http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.add&USER=vesta&DOMAIN=dev.vestacp.com&IP_ADDRESS=95.163.16.160&TEMPLATE=default&EXP=01-01-12&SOA=ns1.vestacp.com&TTL=3600
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function addExecute($_spell = false) 
+	{
+		$r = new Request();
+		if ($_spell) 
+		{
+			$_s = $_spell;
+		}
+		else
+		{
+			$_s = $r->getSpell();
+		}
 
-	$params = array(
-			'USER' => $_s['USER'],  /// OWNER ???
+		$_user = 'vesta';
+		$params = array(
+			'USER' => $_user,  // TODO: examine if OWNER ???
+			'DNS_DOMAIN' => $_s['DNS_DOMAIN'],
+			'IP' => $_s['IP']
+		);
+		($_s['TPL']) ? $params['TPL'] = $_s['TPL'] : -1;
+		($_s['EXP']) ? $params['EXP'] = $_s['EXP'] : -1;
+		($_s['SOA']) ? $params['SOA'] = $_s['SOA'] : -1;
+		($_s['TTL']) ? $params['TTL'] = $_s['TTL'] : -1;
+
+		$result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params);
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
+	}
+
+	/**
+	 * Add record
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+    public function addRecordExecute($request) 
+    {
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
+
+		$params = array(
+			'USER' => $_s['USER'],  // TODO: find out if it's OWNER ???
 			'DOMAIN' => $_s['DOMAIN'],
 			'RECORD' => $_s['RECORD'],
 			'RECORD_TYPE' => $_s['TYPE'],
 			'RECORD_VALUE' => $_s['VALUE'],
 			'RECORD_ID' => $_s['RECORD_ID']
-			);
-	
-	// print_r($params);
-        
-        $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, $params);
- 	
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
+		);
 
-        return $this->reply($result['status'], $result['data']);
+		$result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, $params);
+
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
     }
 
 
-    // v_del_dns_domain user domain
-    // http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.del&USER=vesta&DOMAIN=dev.vestacp.com
-    function delExecute($_spell = false) 
+    /**
+	 * Delete entry
+	 * 
+	 * @param mixed $_spell
+	 * @return
+	 */
+    public function delExecute($_spell = false) 
     {
-      $r = new Request();
-      if($_spell)
-	$_s = $_spell;
-      else
-	$_s = $r->getSpell();
-      
-      $_user = 'vesta';
-	
-	$params = array(
-			'USER' => $_user,  /// OWNER ???
+		$r = new Request();
+		if ($_spell)
+		{
+			$_s = $_spell;
+		}
+		else
+		{
+			$_s = $r->getSpell();
+		}
+
+		$_user = 'vesta';
+		$params = array(
+			'USER' => $_user,  // TODO: find out -> OWNER ???
 			'DOMAIN' => $_s['DNS_DOMAIN'],
-			);
-	
-        $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN, $params);
+		);
 
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
+		$result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN, $params);
 
-        return $this->reply($result['status'], $result['data']);
+		if (!$result['status']) 
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
     }
 
 
 
-    // v_del_dns_domain_record user domain id 
-    // http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.delRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD_ID=9
-    function delRecordExecute($request) {
-	$r = new Request();
-	$_s = $r->getSpell();
-        $_user = 'vesta';
-	
-	$params = array(
-			'USER' => $_user,  /// OWNER ???
+    /**
+	 * Delete record
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+    function delRecordExecute($request) 
+    {
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_user = 'vesta';
+
+		$params = array(
+			'USER' => $_user,  // TODO: find out if -> OWNER ???
 			'DOMAIN' => $_s['DOMAIN'],
 			'RECORD_ID' => $_s['RECORD_ID']
-			);
-	
-        $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN_RECORD, $params);
- 	
-        if(!$result['status'])
-	  $this->errors[] = array($result['error_code'] => $result['error_message']);
+		);
 
-        return $this->reply($result['status'], $result['data']);
+		$result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN_RECORD, $params);
+
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $result['data']);
     }
-
-
-
-    // DNS.change&spell={"old":{"DNS_DOMAIN": "dev.vestacp.com","IP": "95.163.16.160","TPL": "default","TTL": "3377","EXP": "12-12-12","SOA": "ns2.vestacp.com"},"new":{"DNS_DOMAIN": "dev.vestacp.com","IP": "95.163.16.160","TPL": "default","TTL": "3600","EXP": "02-02-12","SOA": "ns1.vestacp.com"}}
-
-    function changeExecute($request)
+	
+	/**
+	 * Change entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+    public function changeExecute($request)
     {
-	$r = new Request();
-	$_s = $r->getSpell();
-	$_old = $_s['old'];
-	$_new = $_s['new'];
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_old = $_s['old'];
+		$_new = $_s['new'];
 
-	$_user = 'vesta';
+		$_user = 'vesta';
 
-        $_DNS_DOMAIN = $_new['DNS_DOMAIN'];
+		$_DNS_DOMAIN = $_new['DNS_DOMAIN'];
 
-	 
-	if($_old['IP'] != $_new['IP'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['IP']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-	
-	if($_old['TPL'] != $_new['TPL'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TPL']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
- 		$this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-	
-	if($_old['TTL'] != $_new['TTL'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TTL']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['TTL'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
 
-	if($_old['EXP'] != $_new['EXP'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['EXP']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['EXP'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-	
-	if($_old['SOA'] != $_new['SOA'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $_user, 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_new['SOA']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['SOA'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
+		if ($_old['IP'] != $_new['IP'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['IP']));
+			if(!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
 
-	    if(!$this->status)
-	      {
-		Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['IP']));
-		Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TPL']));
-		Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL']));
-		Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP']));
-		Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $_user, 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_old['SOA']));
-	      }
+		if ($_old['TPL'] != $_new['TPL'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TPL']));
+			if(!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
 
-        return $this->reply($this->status, '');
+		if ($_old['TTL'] != $_new['TTL'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TTL']));
+			if(!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['TTL'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
+
+		if ($_old['EXP'] != $_new['EXP'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['EXP']));
+			if (!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['EXP'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
+
+		if ($_old['SOA'] != $_new['SOA'])
+		{
+			$result = array();
+			$result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $_user, 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_new['SOA']));
+			if (!$result['status'])
+			{
+				$this->status = FALSE;
+				$this->errors['SOA'] = array($result['error_code'] => $result['error_message']);
+			}
+		}
+
+		if (!$this->status)
+		{
+			Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_IP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['IP']));
+			Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TPL']));
+			Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL']));
+			Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP']));
+			Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $_user, 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_old['SOA']));
+		}
+
+		return $this->reply($this->status, '');
     }
 
-
-
-    function changeRecordsExecute($request)
+	/**
+	 * Change record
+	 * 
+	 * @param Request $request
+	 * @return
+	 */
+	public function changeRecordsExecute($request)
     {
-	$r = new Request();
-	$_s = $r->getSpell();
-	$_old = $_s['old'];
-	$_new = $_s['new'];
+		$r = new Request();
+		$_s = $r->getSpell();
+		$_old = $_s['old'];
+		$_new = $_s['new'];
+		$_user = 'vesta';
+		$_DNS_DOMAIN = $_s['DNS_DOMAIN'];
 
-	//	echo '
';
-	//	print_r($_new);
-	//	print_r($_old);
+		foreach ($_new as $record_id => $record_data)
+		{
+			// checking if record existed - update
+			if(is_array($_old[$record_id]))
+			{
+				// TODO: Remove this. is it necessary??!
+				echo '
updating'.$record_id; - $_user = 'vesta'; + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'ID' => $record_id, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'])); + if(!$result['status']) + { + $this->status = FALSE; + $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); + } + } + else + { + // record is new - add + // TODO: Remove this. is it necessary??! + echo '
adding'.$record_id; - $_DNS_DOMAIN = $_s['DNS_DOMAIN']; + $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'], 'ID' => $record_id)); + if(!$result['status']) + { + $this->status = FALSE; + $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); + } + } - foreach($_new as $record_id => $record_data) - { - // checking if record existed - update - if(is_array($_old[$record_id])) - { - echo '
updating'.$record_id; - - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'ID' => $record_id, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); - } - } - else - { - // record is new - add - echo '
adding'.$record_id; + unset($_old[$record_id]); + } - $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'RECORD' => $record_data['RECORD'], 'TYPE' => $record_data['RECORD_TYPE'], 'VALUE' => $record_data['RECORD_VALUE'], 'ID' => $record_id)); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); - } - } + // in $_old have remained only record that do not present in new - so they have to be deleted + foreach ($_old as $record_id => $record_data) + { + echo '
deleting'.$record_id; + } - - unset($_old[$record_id]); - } - - // in $_old have remained only record that do not present in new - so they have to be deleted - foreach($_old as $record_id => $record_data) - { - echo '
deleting'.$record_id; - /* - $result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN_RECORD, array('USER' => $_user, 'DNS_DOMAIN' => $_DNS_DOMAIN, 'ID' => $record_id,)); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors[$record_id] = array($result['error_code'] => $result['error_message']); - } - */ - } - - return $this->reply($this->status, ''); + return $this->reply($this->status, ''); } + + } diff --git a/web/vesta/api/IP.class.php b/web/vesta/api/IP.class.php index 83e32f6bf..541e7e0e5 100644 --- a/web/vesta/api/IP.class.php +++ b/web/vesta/api/IP.class.php @@ -2,160 +2,205 @@ /** * IP * + * @author Naumov-Socolov + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 - * + * @copyright vesta 2010-2011 */ class IP extends AjaxHandler { - function getListExecute($request) + /** + * List entries + * + * @param Request $request + * @return + */ + public function getListExecute($request) { $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); - foreach ($result['data'] as $ip => $details) { - $reply[] = array_merge( - array( - 'IP_ADDRESS' => $ip, - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ), $details); + foreach ($result['data'] as $ip => $details) + { + $reply[] = array_merge(array( + 'IP_ADDRESS' => $ip, + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ), $details); } - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } - return $this->reply($result['status'], $reply); + return $this->reply($result['status'], $reply); } - - function getListUserIpsExecute($request) + /** + * List user ips entries + * + * @param Request $request + * @return + */ + public function getListUserIpsExecute($request) { $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); - foreach ($result['data'] as $ip => $details) { - $reply[] = array_merge( - array( - 'IP_ADDRESS' => $ip, - 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - ), $details); + foreach ($result['data'] as $ip => $details) + { + $reply[] = array_merge(array( + 'IP_ADDRESS' => $ip, + 'DATE' => date(Config::get('ui_date_format', strtotime($details['DATE']))) + ), $details); } - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } - return $this->reply($result['status'], $reply); + return $this->reply($result['status'], $reply); } - - function addExecute($request) + /** + * Add entry + * + * @param Request $request + * @return + */ + public function addExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - - $params = array( - 'IP_ADDRESS' => $_s['IP_ADDRESS'], - 'MASK' => $_s['MASK'], - 'INTERFACE' => $_s['INTERFACE'], - 'OWNER' => $_s['OWNER'], - 'IP_STATUS' => $_s['IP_STATUS'], - 'IP_NAME' => $_s['IP_NAME'] - ); - - $result = Vesta::execute(Vesta::V_ADD_SYS_IP, $params); - + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $result['data']); + $params = array( + 'IP_ADDRESS' => $_s['IP_ADDRESS'], + 'MASK' => $_s['MASK'], + 'INTERFACE' => $_s['INTERFACE'], + 'OWNER' => $_s['OWNER'], + 'IP_STATUS' => $_s['IP_STATUS'], + 'IP_NAME' => $_s['IP_NAME'] + ); + + $result = Vesta::execute(Vesta::V_ADD_SYS_IP, $params); + + + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); } - function delExecute($request) + /** + * Delete entry + * + * @param Request $request + * @return + */ + public function delExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_user = 'vesta'; - - $params = array( - 'IP_ADDRESS' => $_s['IP_ADDRESS'] - ); - - $result = Vesta::execute(Vesta::V_DEL_SYS_IP, $params); - - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $result['data']); + $r = new Request(); + $_s = $r->getSpell(); + $_user = 'vesta'; + + $params = array( + 'IP_ADDRESS' => $_s['IP_ADDRESS'] + ); + + $result = Vesta::execute(Vesta::V_DEL_SYS_IP, $params); + + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); } - - - function changeExecute($request) + /** + * Change entry + * + * @param Request $request + * @return + */ + public function changeExecute($request) { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; - - $_user = 'vesta'; + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; - - if($_old['OWNER'] != $_new['OWNER']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_OWNER, array('OWNER' => $_new['OWNER'], 'IP' => $_new['IP_ADDRESS'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['OWNER'] = array($result['error_code'] => $result['error_message']); - } - } + $_user = 'vesta'; - if($_old['NAME'] != $_new['NAME']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_NAME, array('IP' => $_new['IP_ADDRESS'], 'NAME' => $_new['NAME'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['NAME'] = array($result['error_code'] => $result['error_message']); - } - } + if ($_old['OWNER'] != $_new['OWNER']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_OWNER, array('OWNER' => $_new['OWNER'], 'IP' => $_new['IP_ADDRESS'])); + if(!$result['status']) + { + $this->status = FALSE; + $this->errors['OWNER'] = array($result['error_code'] => $result['error_message']); + } + } - if($_old['IP_STATUS'] != $_new['IP_STATUS']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_STATUS, array('IP' => $_new['IP_ADDRESS'], 'IP_STATUS' => $_new['IP_STATUS'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['IP_STATUS'] = array($result['error_code'] => $result['error_message']); - } - } + if ($_old['NAME'] != $_new['NAME']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_NAME, array('IP' => $_new['IP_ADDRESS'], 'NAME' => $_new['NAME'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['NAME'] = array($result['error_code'] => $result['error_message']); + } + } + + if ($_old['IP_STATUS'] != $_new['IP_STATUS']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_IP_STATUS, array('IP' => $_new['IP_ADDRESS'], 'IP_STATUS' => $_new['IP_STATUS'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['IP_STATUS'] = array($result['error_code'] => $result['error_message']); + } + } - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $result['data']); + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $result['data']); } - - - function getSysInterfacesExecute($request) + + /** + * Get sys interfaces + * + * @param Request $request + * @return + */ + public function getSysInterfacesExecute($request) { - $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_SYS_INTERFACES, array(Config::get('response_type'))); + $reply = array(); - foreach ($result['data'] as $iface) - $reply[$iface] = $iface; - - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $reply); + $result = Vesta::execute(Vesta::V_LIST_SYS_INTERFACES, array(Config::get('response_type'))); + + foreach ($result['data'] as $iface) + { + $reply[$iface] = $iface; + } + + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + return $this->reply($result['status'], $reply); } -} \ No newline at end of file +} diff --git a/web/vesta/api/MAIN.class.php b/web/vesta/api/MAIN.class.php index f2700a42c..b6cdd2483 100644 --- a/web/vesta/api/MAIN.class.php +++ b/web/vesta/api/MAIN.class.php @@ -9,102 +9,123 @@ * - methods, used for ajax executions must be postfixed with execute keyword * Eg.: getDnsInformationExecute() * + * @author Naumov-Socolov + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 + * @copyright vesta 2010-2011 */ -class MAIN extends AjaxHandler { - - function versionExecute($request) { - $result = array('version' => '1.0', - 'author' => 'http://vestacp.com/', - 'docs' => 'http://vestacp.com/docs'); +class MAIN extends AjaxHandler +{ + + /** + * Get version + * + * @param Request $request + * @return + */ + public function versionExecute($request) + { + $result = array( + 'version' => '1.0', + 'author' => 'http://vestacp.com/', + 'docs' => 'http://vestacp.com/docs' + ); return $this->reply(true, $result); } - function getInitialExecute($request) + /** + * Get initial params + * + * @param Request $request + * @return + */ + public function getInitialExecute($request) { - require_once V_ROOT_DIR . 'api/IP.class.php'; - $ip_obj = new IP(); - $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); - foreach($user_ips['data'] as $ip) - $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; + require_once V_ROOT_DIR . 'api/IP.class.php'; + require_once V_ROOT_DIR . 'api/USER.class.php'; + + $ip_obj = new IP(); + $user_obj = new USER(); + + $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); + foreach ($user_ips['data'] as $ip) + { + $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; + } - require_once V_ROOT_DIR . 'api/USER.class.php'; - $user_obj = new USER(); - $users = json_decode($user_obj->getListExecute(), TRUE); - $user_names = array_keys($users['data']['data']); + $users = json_decode($user_obj->getListExecute(), TRUE); + $user_names = array_keys($users['data']['data']); + $db_types = array( + 'mysql' => 'mysql', + 'postgress' => 'postgress' + ); - $db_types = array('mysql' => 'mysql', 'postgress' => 'postgress'); - - $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); - $interfaces = $interfaces_arr['data']; + $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); + $interfaces = $interfaces_arr['data']; $reply = array( 'WEB_DOMAIN' => array( - 'TPL' => array('default' => 'default'), - 'ALIAS' => array(), - 'STAT' => array( - 'webalizer' => 'webalizer', - 'awstats' => 'awstats'), - 'IP' => $ips - ), - - 'CRON' => array(), - - 'IP' => array( - 'SYS_USERS' => $user_names, - 'STATUSES' => array( - 'shared' => 'shared', - 'exclusive' => 'exclusive' - ), - 'INTERFACES' => $interfaces, - 'MASK' => array( - '255.255.255.0' => '255.255.255.0', - '255.255.255.128' => '255.255.255.128', - '255.255.255.192' => '255.255.255.192', - '255.255.255.224' => '255.255.255.224', - '255.255.255.240' => '255.255.255.240', - '255.255.255.248' => '255.255.255.248', - '255.255.255.252' => '255.255.255.252', - '255.255.255.255' => '255.255.255.255' - ), - 'OWNER' => array() - ), - - 'DNS' => array( - 'IP' => $ips, - 'TPL' => array('default' => 'default'), - 'EXP' => array(), - 'SOA' => array(), - 'TTL' => array(), - 'record' => array( - 'RECORD' => array(), - 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), - 'RECORD_VALUE' => array() - ) - ), - - 'DB' => array( - 'TYPE' => $db_types - ), - - 'USERS' => array( - 'ROLE' => array('user' => 'user'), - 'OWNER' => $user_names, - 'PACKAGE' => array('default' => 'default'), - 'NS1' => array('' => ''), - 'NS2' => array('' => ''), - 'SHELL' => array( - '/bin/sh' => '/bin/sh', - '/bin/bash' => '/bin/bash', - '/sbin/nologin' => '/sbin/nologin', - '/bin/tcsh' => '/bin/tcsh', - '/bin/csh' => '/bin/csh') - ) - ); - + 'TPL' => array('default' => 'default'), + 'ALIAS' => array(), + 'STAT' => array( + 'webalizer' => 'webalizer', + 'awstats' => 'awstats'), + 'IP' => $ips + ), + 'CRON' => array(), + 'IP' => array( + 'SYS_USERS' => $user_names, + 'STATUSES' => array( + 'shared' => 'shared', + 'exclusive' => 'exclusive' + ), + 'INTERFACES' => $interfaces, + 'MASK' => array( + '255.255.255.0' => '255.255.255.0', + '255.255.255.128' => '255.255.255.128', + '255.255.255.192' => '255.255.255.192', + '255.255.255.224' => '255.255.255.224', + '255.255.255.240' => '255.255.255.240', + '255.255.255.248' => '255.255.255.248', + '255.255.255.252' => '255.255.255.252', + '255.255.255.255' => '255.255.255.255' + ), + 'OWNER' => array() + ), + 'DNS' => array( + 'IP' => $ips, + 'TPL' => array( + 'default' => 'default' + ), + 'EXP' => array(), + 'SOA' => array(), + 'TTL' => array(), + 'record' => array( + 'RECORD' => array(), + 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), + 'RECORD_VALUE' => array() + ) + ), + 'DB' => array( + 'TYPE' => $db_types + ), + 'USERS' => array( + 'ROLE' => array('user' => 'user'), + 'OWNER' => $user_names, + 'PACKAGE' => array('default' => 'default'), + 'NS1' => array('' => ''), + 'NS2' => array('' => ''), + 'SHELL' => array( + '/bin/sh' => '/bin/sh', + '/bin/bash' => '/bin/bash', + '/sbin/nologin' => '/sbin/nologin', + '/bin/tcsh' => '/bin/tcsh', + '/bin/csh' => '/bin/csh') + ) + ); + return $this->reply(true, $reply); } } diff --git a/web/vesta/api/PARAMS.class.php b/web/vesta/api/PARAMS.class.php index 644c48c80..e89438094 100644 --- a/web/vesta/api/PARAMS.class.php +++ b/web/vesta/api/PARAMS.class.php @@ -1,94 +1,107 @@ + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2011 + * @copyright vesta 2010-2011 */ -class PARAMS extends AjaxHandler { - function getInitialExecute($request) +class PARAMS extends AjaxHandler +{ + /** + * Get initial params + * + * @param Request $request + * @return + */ + public function getInitialExecute($request) { - require_once V_ROOT_DIR . 'api/IP.class.php'; + require_once V_ROOT_DIR . 'api/IP.class.php'; + require_once V_ROOT_DIR . 'api/USER.class.php'; + $ip_obj = new IP(); - $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); - foreach($user_ips['data'] as $ip) - $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; - - require_once V_ROOT_DIR . 'api/USER.class.php'; $user_obj = new USER(); + + $user_ips = json_decode($ip_obj->getListUserIpsExecute(), TRUE); + foreach ($user_ips['data'] as $ip) + { + $ips[$ip['IP_ADDRESS']] = $ip['IP_ADDRESS']; + } + $users = json_decode($user_obj->getListExecute(), TRUE); - $user_names = array_keys($users['data']['data']); + $user_names = array_keys($users['data']['data']); - $db_types = array('mysql' => 'mysql', 'postgress' => 'postgress'); - - $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); - $interfaces = $interfaces_arr['data']; + $db_types = array( + 'mysql' => 'mysql', + 'postgress' => 'postgress' + ); + $interfaces_arr = json_decode($ip_obj->getSysInterfacesExecute(), TRUE); + $interfaces = $interfaces_arr['data']; $reply = array( 'WEB_DOMAIN' => array( - 'TPL' => array('default' => 'default'), - 'ALIAS' => array(), - 'STAT' => array( - 'webalizer' => 'webalizer', - 'awstats' => 'awstats'), - 'IP' => $ips - ), - - 'CRON' => array(), - - 'IP' => array( - 'SYS_USERS' => $user_names, - 'STATUSES' => array( - 'shared' => 'shared', - 'exclusive' => 'exclusive' - ), - 'INTERFACES' => $interfaces, - 'MASK' => array( - '255.255.255.0' => '255.255.255.0', - '255.255.255.128' => '255.255.255.128', - '255.255.255.192' => '255.255.255.192', - '255.255.255.224' => '255.255.255.224', - '255.255.255.240' => '255.255.255.240', - '255.255.255.248' => '255.255.255.248', - '255.255.255.252' => '255.255.255.252', - '255.255.255.255' => '255.255.255.255' - ), - 'OWNER' => array() - ), - - 'DNS' => array( - 'IP' => $ips, - 'TPL' => array('default' => 'default'), - 'EXP' => array(), - 'SOA' => array(), - 'TTL' => array(), - 'record' => array( - 'RECORD' => array(), - 'RECORD_TYPE' => array('a' => 'a', 'reverce' => 'reverce'), - 'RECORD_VALUE' => array() - ) - ), - - 'DB' => array( - 'TYPE' => $db_types - ), - - 'USERS' => array( - 'ROLE' => array('user' => 'user'), - 'OWNER' => $user_names, - 'PACKAGE' => array('default' => 'default'), - 'NS1' => array('' => ''), - 'NS2' => array('' => ''), - 'SHELL' => array( - '/bin/sh' => '/bin/sh', - '/bin/bash' => '/bin/bash', - '/sbin/nologin' => '/sbin/nologin', - '/bin/tcsh' => '/bin/tcsh', - '/bin/csh' => '/bin/csh') - ) - ); + 'TPL' => array('default' => 'default'), + 'ALIAS' => array(), + 'STAT' => array( + 'webalizer' => 'webalizer', + 'awstats' => 'awstats'), + 'IP' => $ips + ), + 'CRON' => array(), + 'IP' => array( + 'SYS_USERS' => $user_names, + 'STATUSES' => array( + 'shared' => 'shared', + 'exclusive' => 'exclusive' + ), + 'INTERFACES' => $interfaces, + 'MASK' => array( + '255.255.255.0' => '255.255.255.0', + '255.255.255.128' => '255.255.255.128', + '255.255.255.192' => '255.255.255.192', + '255.255.255.224' => '255.255.255.224', + '255.255.255.240' => '255.255.255.240', + '255.255.255.248' => '255.255.255.248', + '255.255.255.252' => '255.255.255.252', + '255.255.255.255' => '255.255.255.255' + ), + 'OWNER' => array() + ), + 'DNS' => array( + 'IP' => $ips, + 'TPL' => array( + 'default' => 'default' + ), + 'EXP' => array(), + 'SOA' => array(), + 'TTL' => array(), + 'record' => array( + 'RECORD' => array(), + 'RECORD_TYPE' => array('a' => 'a', 'reverse' => 'reverse'), + 'RECORD_VALUE' => array() + ) + ), + 'DB' => array( + 'TYPE' => $db_types + ), + 'USERS' => array( + 'ROLE' => array('user' => 'user'), + 'OWNER' => $user_names, + 'PACKAGE' => array('default' => 'default'), + 'NS1' => array('' => ''), + 'NS2' => array('' => ''), + 'SHELL' => array( + '/bin/sh' => '/bin/sh', + '/bin/bash' => '/bin/bash', + '/sbin/nologin' => '/sbin/nologin', + '/bin/tcsh' => '/bin/tcsh', + '/bin/csh' => '/bin/csh') + ) + ); return $this->reply(true, $reply); } -} \ No newline at end of file +} diff --git a/web/vesta/api/USER.class.php b/web/vesta/api/USER.class.php index df86710f8..99be15093 100644 --- a/web/vesta/api/USER.class.php +++ b/web/vesta/api/USER.class.php @@ -2,17 +2,27 @@ /** * USERS * + * @author Naumov-Socolov + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 - * + * @copyright vesta 2010-2011 */ -class USER extends AjaxHandler { - function getListExecute($request) { - $reply = array(); - +class USER extends AjaxHandler +{ + + /** + * Get list + * + * @param Request $request + * @return + */ + public function getListExecute($request) + { + $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type'))); - foreach($result as $ip => $details){ + foreach ($result as $ip => $details) + { $reply[] = array( 'interface' => $details['INTERFACE'], 'sys_users' => $details['U_SYS_USERS'], @@ -23,222 +33,183 @@ class USER extends AjaxHandler { 'name' => $details['NAME'], 'owner' => $details['OWNER'], 'created_at' => date(Config::get('ui_date_format', strtotime($details['DATE']))) - - - /* - - "PACKAGE": "default", - "WEB_DOMAINS": "10", - "WEB_SSL": "10", - "WEB_ALIASES": "10", - "DATABASES": "10", - "MAIL_DOMAINS": "10", - "MAIL_BOXES": "30", - "MAIL_FORWARDERS": "30", - "DNS_DOMAINS": "10", - "DISK_QUOTA": "10000", - "BANDWIDTH": "10000", - "NS1": "ns1.localhost", - "NS2": "ns2.localhost", - "SHELL": "bash", - "BACKUPS": "3", - "TEMPLATES": "default, phpcgi, unlim", - "MAX_CHILDS": "300", - "SUSPENDED": "no", - "OWNER": "vesta", - "ROLE": "admin", - "IP_OWNED": "1", - "U_CHILDS": "0", - "U_DISK": "1", - "U_BANDWIDTH": "0", - "U_WEB_DOMAINS": "1", - "U_WEB_SSL": "0", - "U_DNS_DOMAINS": "3", - "U_DATABASES": "0", - "U_MAIL_DOMAINS": "0", - "CONTACT": "vesta@localhost", - "DATE": "01-04-11" - - */ - ); + ); } return $this->reply(true, $result); } + /** + * Add action + * + * @param Request $request + * @return + */ + public function addExecute($_spell = false) + { + $r = new Request(); + if ($_spell) + { + $_s = $_spell; + } + else + { + $_s = $r->getSpell(); + } + $_user = 'vesta'; + $params = array( + 'USER' => $_s['USER'], + 'PASSWORD' => $_s['PASSWORD'], + 'EMAIL' => $_s['EMAIL'], + 'ROLE' => $_s['ROLE'], + 'OWNER' => $_user, + 'PACKAGE' => $_s['PACKAGE'], + 'NS1' => $_s['NS1'], + 'NS2' => $_s['NS2'] + ); + $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params); + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } - function addExecute($_spell = false) - { - $r = new Request(); - if($_spell) - $_s = $_spell; - else - $_s = $r->getSpell(); + return $this->reply($result['status'], $result['data']); + } + /** + * Delete action + * + * @param Request $request + * @return + */ + public function delExecute($_spell = false) + { + $r = new Request(); + if ($_spell) + { + $_s = $_spell; + } + else + { + $_s = $r->getSpell(); + } + $_user = 'vesta'; + $params = array( + 'USER' => $_s['USER'] + ); + $result = Vesta::execute(Vesta::V_DEL_SYS_USER, $params); - $_user = 'vesta'; - - // $_s['ROLE'] = 'user'; - // reseller - // admin + if (!$result['status']) + { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } - // package: default + return $this->reply($result['status'], $result['data']); + } - $params = array( - 'USER' => $_s['USER'], - 'PASSWORD' => $_s['PASSWORD'], - 'EMAIL' => $_s['EMAIL'], - 'ROLE' => $_s['ROLE'], - 'OWNER' => $_user, - 'PACKAGE' => $_s['PACKAGE'], - 'NS1' => $_s['NS1'], - 'NS2' => $_s['NS2'] - ); - - $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params); - - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $result['data']); - } - - - - function delExecute($_spell = false) - { - $r = new Request(); - if($_spell) - $_s = $_spell; - else - $_s = $r->getSpell(); + /** + * Change action + * + * @param Request $request + * @return + */ + public function changeExecute($request) + { + $r = new Request(); + $_s = $r->getSpell(); + $_old = $_s['old']; + $_new = $_s['new']; - $_user = 'vesta'; - - $params = array( - 'USER' => $_s['USER'] - ); - - $result = Vesta::execute(Vesta::V_DEL_SYS_USER, $params); - - if(!$result['status']) - $this->errors[] = array($result['error_code'] => $result['error_message']); - - return $this->reply($result['status'], $result['data']); - } + $_USER = $_new['USER']; + + if($_old['USER'] != $_new['USER']) + { + $result = array(); + // creating new user + $result = $this->addExecute($_new); + // deleting old + if ($result['status']) + { + $result = array(); + + $result = $this->delExecute($_old); + return $this->reply($this->status, ''); + } + } + if ($_old['PASSWORD'] != $_new['PASSWORD']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, + array('USER' => $_USER, 'PASSWORD' => $_new['PASSWORD'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['PASSWORD'] = array($result['error_code'] => $result['error_message']); + } + } - function changeExecute($request) - { - $r = new Request(); - $_s = $r->getSpell(); - $_old = $_s['old']; - $_new = $_s['new']; + if ($_old['PACKAGE'] != $_new['PACKAGE']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, + array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['PACKAGE'] = array($result['error_code'] => $result['error_message']); + } + } - $_USER = $_new['USER']; - - if($_old['USER'] != $_new['USER']) - { - - $result = array(); - // creating new user - $result = $this->addExecute($_new); - - // deleting old - if($result['status']) - { - $result = array(); - - $result = $this->delExecute($_old); - return $this->reply($this->status, ''); - } - } + if ($_old['EMAIL'] != $_new['EMAIL']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, + array('USER' => $_USER, 'EMAIL' => $_new['EMAIL'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['EMAIL'] = array($result['error_code'] => $result['error_message']); + } + } - if($_old['PASSWORD'] != $_new['PASSWORD']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_new['PASSWORD'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['PASSWORD'] = array($result['error_code'] => $result['error_message']); - } - } + if ($_old['NS1'] != $_new['NS1'] || $_old['NS2'] != $_new['NS2']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, + array('USER' => $_USER, 'NS1' => $_new['NS1'], 'NS2' => $_new['NS2'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['NS'] = array($result['error_code'] => $result['error_message']); + } + } - if($_old['PACKAGE'] != $_new['PACKAGE']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['PACKAGE'] = array($result['error_code'] => $result['error_message']); - } - } - - /* - if($_old['ROLE'] != $_new['ROLE']) - { - echo '
role'; + if ($_old['SHELL'] != $_new['SHELL']) + { + $result = array(); + $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, + array('USER' => $_USER, 'SHELL' => $_new['SHELL'])); + if (!$result['status']) + { + $this->status = FALSE; + $this->errors['SHELL'] = array($result['error_code'] => $result['error_message']); + } + } - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_ROLE, array('USER' => $_USER, 'ROLE' => $_new['ROLE'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['ROLE'] = array($result['error_code'] => $result['error_message']); - } - } - */ + if (!$this->status) + { + Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); + // change role // $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); + Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); + } - if($_old['EMAIL'] != $_new['EMAIL']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_new['EMAIL'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['EMAIL'] = array($result['error_code'] => $result['error_message']); - } - } + return $this->reply($this->status, ''); + } - if($_old['NS1'] != $_new['NS1'] || $_old['NS2'] != $_new['NS2']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_new['NS1'], 'NS2' => $_new['NS2'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['NS'] = array($result['error_code'] => $result['error_message']); - } - } - - if($_old['SHELL'] != $_new['SHELL']) - { - $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_new['SHELL'])); - if(!$result['status']) - { - $this->status = FALSE; - $this->errors['SHELL'] = array($result['error_code'] => $result['error_message']); - } - } - - if(!$this->status) - { - Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); - // change role // $result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_new['PACKAGE'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); - Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); - } - - return $this->reply($this->status, ''); - } - - - -} \ No newline at end of file +} diff --git a/web/vesta/api/WEB_DOMAIN.class.php b/web/vesta/api/WEB_DOMAIN.class.php index 36c8423b4..58fa48fc6 100644 --- a/web/vesta/api/WEB_DOMAIN.class.php +++ b/web/vesta/api/WEB_DOMAIN.class.php @@ -1,510 +1,671 @@ + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2011 + * @copyright vesta 2010-2011 */ -class WEB_DOMAIN extends AjaxHandler { - function getListExecute($request) - { - $_user = 'vesta'; - $reply = array(); - - $result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array($_user, Config::get('response_type'))); - - // echo '
';
-      //    print_r($result);
-      
-      foreach($result['data'] as $web_domain => $data)
-	{
-	  $reply[$web_domain] = array(
-				      'IP' => $record['IP'],
-				      'U_DISK' => $record['U_DISK'],
-				      'U_BANDWIDTH' => $record['U_BANDWIDTH'],
-				      'TPL' => $record['TPL'],
-				      'ALIAS' => $record['ALIAS'],
-				      'PHP' => $record['PHP'],
-				      'CGI' => $record['CGI'],
-				      'ELOG' => $record['ELOG'],
-				      'STATS' => $record['STATS'],
-				      'STATS_AUTH' => $record['STATS_AUTH'],
-				      'SSL' => $record['SSL'],
-				      'SSL_HOME' => $record['SSL_HOME'],
-				      'SSL_CERT' => $record['SSL_CERT'],
-				      'NGINX' => $record['NGINX'],
-				      'NGINX_EXT' => $record['NGINX_EXT'],
-				      'SUSPEND' => $record['SUSPEND'],
-				      'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
-				      );
-	}
-      
-      if(!$result['status'])
-	$this->errors[] = array($result['error_code'] => $result['error_message']);
-      
-      return $this->reply($result['status'], $reply);
-    }
-    
-    
-    
-    function addExecute($request) 
-    {
-      $r = new Request();
-      $_s = $r->getSpell();
-      $_user = 'vesta';
-
-      $params = array(
-		      'USER' => $_user,
-		      'DOMAIN' => $_s['DOMAIN'],
-		      'IP' => $_s['IP']
-		      );
-      
-      $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN, $params);
-      
-      if(!$result['status'])
-	$this->errors[] = array($result['error_code'] => $result['error_message']);
-      
-      
-      
-      //    if(0)
-      if($_s['TPL'])
-	{
-	  $params = array('USER' => $_user,
-			'DOMAIN' => $_s['DOMAIN'],
-			  'TPL' => $_s['TPL']);
-	  $result = 0;
-	  $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, $params);
-	  
-	  if(!$result['status'])
-	    $this->errors['CHANGE_TPL'] = array($result['error_code'] => $result['error_message']);
-	}
-      
-      //    if(0)
-      if($_s['ALIAS'])
-	{
-	$alias_arr = explode(',', $_s['ALIAS']);
+class WEB_DOMAIN extends AjaxHandler 
+{
 	
-	foreach($alias_arr as $alias)
-	  {
-	    $params = array('USER' => $_user,
-			    'DOMAIN' => $_s['DOMAIN'],
-			    'ALIAS' => trim($alias));
-	    $result = 0;
-	    
-	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
-	    
-	    if(!$result['status'])
-	      $this->errors['ALIAS'] = array($result['error_code'] => $result['error_message']);
-	  }
-	}
-      
-      //    if(0)
-      if($_s['STAT'])
-	{
-	  $params = array('USER' => $_user,
-			  'DOMAIN' => $_s['DOMAIN'],
-			  'STAT' => $_s['STAT']);
-	  $result = 0;
-	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
-	  
-	  if(!$result['status'])
-	    $this->errors['STATS'] = array($result['error_code'] => $result['error_message']);
-	}
-      
-      //    if(0)
-      if($_s['STAT_AUTH'])
-	{
-	  $params = array('USER' => $_user,
-			  'DOMAIN' => $_s['DOMAIN'],
-			  'STAT_USER' => $_s['STAT_USER'],
-			  'STAT_PASSWORS' => $_s['STAT_PASSWORD']);
-	  $result = 0;
-	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
-	  
-	  if(!$result['status'])
-	    $this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
-	}
+	/**
+	 * Get list
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function getListExecute($request) 
+    {
+		$_user = 'vesta';
+		$reply = array();
 
-      if(0)
-	if($_s['SSL'])
-	  {
-	    $params = array('USER' => $_user,
-			    'DOMAIN' => $_s['DOMAIN'],
-			    'SSL_CERT' => $_s['SSL_CERT']);
-	    
-	    if($_s['SSL_HOME'])
-	      $params['SSL_HOME'] = $_s['SSL_HOME'];
-	    
-	    if($_s['SSL_TEXT'])
-	      {}
-	    //	if($_FILES['SSL_CERT'])
-	    // $ssl_text = file_get_contents($_FILES...);
-	    
-	    
-	    $result = 0;
-	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
-	    
-	    if(!$result['status'])
-	      $this->errors['SSL'] = array($result['error_code'] => $result['error_message']);
-	  }
-      
-    //    if(0)
-      if($_s['CREATE_DNS_DOMAIN'])
-	{
-	  $params = array('USER' => $_user,
-			  'DNS_DOMAIN' => $_s['DOMAIN'],
-			  'IP' => $_s['IP']);
-	  
-	  require_once V_ROOT_DIR . 'api/DNS.class.php';
-	  
-	  $dns = new DNS();
-	  $result = 0;
-	  $result = $dns->addExecute($params);
-	  if(!$result['status'])
-	    $this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']);
-	}
-      
-      if(0)
-	if($_s['CREATE_MAIL_DOMAIN'])
-	  {
-	    $params = array('USER' => $_user,
-			    'MAIL_DOMAIN' => $_s['DOMAIN'],
-			    'IP' => $_s['IP']);
-	    
-	    
-	    require_once V_ROOT_DIR . 'api/MAIL.class.php';
-	    
-	    $mail = new MAIL();
-	    $result = 0;
-	    $result = $mail->addExecute($params);
-	    if(!$result['status'])
-	      $this->errors['MAIL_DOMAIN'] = array($result['error_code'] => $result['error_message']);
-	  }
-      
-      return $this->reply($result['status'], $result['data']);
+		$result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array($_user, Config::get('response_type')));
+		foreach ($result['data'] as $web_domain => $data)
+		{
+			$reply[$web_domain] = array(
+					  'IP' => $record['IP'],
+					  'U_DISK' => $record['U_DISK'],
+					  'U_BANDWIDTH' => $record['U_BANDWIDTH'],
+					  'TPL' => $record['TPL'],
+					  'ALIAS' => $record['ALIAS'],
+					  'PHP' => $record['PHP'],
+					  'CGI' => $record['CGI'],
+					  'ELOG' => $record['ELOG'],
+					  'STATS' => $record['STATS'],
+					  'STATS_AUTH' => $record['STATS_AUTH'],
+					  'SSL' => $record['SSL'],
+					  'SSL_HOME' => $record['SSL_HOME'],
+					  'SSL_CERT' => $record['SSL_CERT'],
+					  'NGINX' => $record['NGINX'],
+					  'NGINX_EXT' => $record['NGINX_EXT'],
+					  'SUSPEND' => $record['SUSPEND'],
+					  'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
+			);
+		}
+
+		if (!$result['status'])
+		{
+			$this->errors[] = array($result['error_code'] => $result['error_message']);
+		}
+
+		return $this->reply($result['status'], $reply);
+    }
+        
+    /**
+	 * Add entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function addExecute($request)
+    {
+        $r     = new Request();
+        $_s    = $r->getSpell();
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user,
+            'DOMAIN' => $_s['DOMAIN'],
+            'IP' => $_s['IP']
+        );
+        
+        $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN, $params);
+        
+        if (!$result['status'])
+        {
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+            
+        if ($_s['TPL']) 
+        {
+            $params = array(
+                'USER' => $_user,
+                'DOMAIN' => $_s['DOMAIN'],
+                'TPL' => $_s['TPL']
+            );
+            $result = 0;
+            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, $params);
+            
+            if (!$result['status'])
+			{
+                $this->errors['CHANGE_TPL'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+
+        if ($_s['ALIAS']) 
+        {
+            $alias_arr = explode(',', $_s['ALIAS']);
+            
+            foreach ($alias_arr as $alias) 
+            {
+                $params = array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_s['DOMAIN'],
+                    'ALIAS' => trim($alias)
+                );
+                $result = 0;
+                
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params);
+                
+                if (!$result['status'])
+				{
+                    $this->errors['ALIAS'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+        }
+    
+        if ($_s['STAT']) 
+        {
+            $params = array(
+                'USER' => $_user,
+                'DOMAIN' => $_s['DOMAIN'],
+                'STAT' => $_s['STAT']
+            );
+            $result = 0;
+            $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, $params);
+            
+            if (!$result['status'])
+			{
+                $this->errors['STATS'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+        
+        if ($_s['STAT_AUTH']) 
+        {
+            $params = array(
+                'USER' => $_user,
+                'DOMAIN' => $_s['DOMAIN'],
+                'STAT_USER' => $_s['STAT_USER'],
+                'STAT_PASSWORS' => $_s['STAT_PASSWORD']
+            );
+            $result = 0;
+            $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT_AUTH, $params);
+            
+            if (!$result['status'])
+			{
+                $this->errors['STAT_AUTH'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+        
+        
+		if ($_s['SSL']) 
+		{
+			$params = array(
+				'USER' => $_user,
+				'DOMAIN' => $_s['DOMAIN'],
+				'SSL_CERT' => $_s['SSL_CERT']
+			);
+			
+			if ($_s['SSL_HOME'])
+			{
+				$params['SSL_HOME'] = $_s['SSL_HOME'];
+			}
+			
+			if ($_s['SSL_TEXT']) 
+			{
+				// TODO: write it up
+			}
+								
+			$result = 0;
+			$result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params);
+			
+			if (!$result['status'])
+			{
+				$this->errors['SSL'] = array(
+					$result['error_code'] => $result['error_message']
+				);
+			}
+		}
+                
+        if ($_s['CREATE_DNS_DOMAIN']) 
+        {
+            $params = array(
+                'USER' => $_user,
+                'DNS_DOMAIN' => $_s['DOMAIN'],
+                'IP' => $_s['IP']
+            );
+            
+            require_once V_ROOT_DIR . 'api/DNS.class.php';
+            
+            $dns    = new DNS();
+            $result = 0;
+            $result = $dns->addExecute($params);
+            if (!$result['status'])
+            {
+                $this->errors['DNS_DOMAIN'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+                
+		if ($_s['CREATE_MAIL_DOMAIN']) 
+		{
+			$params = array(
+				'USER' => $_user,
+				'MAIL_DOMAIN' => $_s['DOMAIN'],
+				'IP' => $_s['IP']
+			);
+						
+			require_once V_ROOT_DIR . 'api/MAIL.class.php';
+			
+			$mail   = new MAIL();
+			$result = 0;
+			$result = $mail->addExecute($params);
+			if (!$result['status'])
+			{
+				$this->errors['MAIL_DOMAIN'] = array(
+					$result['error_code'] => $result['error_message']
+				);
+			}
+		}
+        
+        return $this->reply($result['status'], $result['data']);
     }
     
-    function delExecute($request) 
+    /**
+	 * Delete entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function delExecute($request)
     {
-      $r = new Request();
-      $_s = $r->getSpell();
-      $_user = 'vesta';
-      
-      $params = array(
-		      'USER' => $_user,
-		      'DOMAIN' => $_s['DOMAIN']
-		      );
-      
-      $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, $params);
-      
-      if(!$result['status'])
-	$this->errors[] = array($result['error_code'] => $result['error_message']);
+        $r     = new Request();
+        $_s    = $r->getSpell();
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user,
+            'DOMAIN' => $_s['DOMAIN']
+        );
+        
+        $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, $params);
+        
+        if (!$result['status'])
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+                
+        $params = array(
+            'USER' => $_user,
+            'DNS_DOMAIN' => $_s['DOMAIN']
+        );
+        
+        require_once V_ROOT_DIR . 'api/DNS.class.php';
+        $dns    = new DNS();
+        $result = $dns->delExecute($params);
+        
+        if (!$result['status'] && $result['error_code'] != 31) // domain not found
+        {
+			$this->errors['DNS'] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+        
+        require_once V_ROOT_DIR . 'api/DNS.class.php';
+        
+        $params = array(
+            'USER' => $_user,
+            'MAIL_DOMAIN' => $_s['DOMAIN']
+        );
+        
+        return $this->reply($result['status'], $result['data']);
+    }
+          
+    /**
+	 * Change entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */          
+    public function changeExecute($request)
+    {
+        $r    = new Request();
+        $_s   = $r->getSpell();
+        $_old = $_s['old'];
+        $_new = $_s['new'];
+        
+        $_user   = 'vesta';
+        $_DOMAIN = $_new['DOMAIN'];
+        
+        if ($_old['IP'] != $_new['IP']) 
+        {
+            $result = array();
+            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array(
+                'USER' => $_user,
+                'DOMAIN' => $_DOMAIN,
+                'IP' => $_new['IP']
+            ));
+            if (!$result['status']) 
+            {
+                $this->status               = FALSE;
+                $this->errors['IP_ADDRESS'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+                
+        if ($_old['TPL'] != $_new['TPL']) 
+        {
+            $result = array();
+            $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, array(
+                'USER' => $_user,
+                'DOMAIN' => $_DOMAIN,
+                'TPL' => $_new['TPL']
+            ));
+            if (!$result['status']) 
+            {
+                $this->status        = FALSE;
+                $this->errors['TPL'] = array(
+                    $result['error_code'] => $result['error_message']
+                );
+            }
+        }
+        
+        if ($_old['ALIAS'] != $_new['ALIAS']) 
+        {
+            $result = array();
+            
+            $old_arr = explode(',', $_old['ALIAS']);
+            $new_arr = explode(',', $_new['ALIAS']);
+            
+            $added   = array_diff($new_arr, $old_arr);
+            $deleted = array_diff($old_arr, $new_arr);
+            
+            foreach ($added as $alias) 
+            {
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN,
+                    'ALIAS' => $alias
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status              = FALSE;
+                    $this->errors['ADD_ALIAS'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+            foreach ($deleted as $alias) 
+            {
+                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ALIAS, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN,
+                    'ALIAS' => $alias
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status              = FALSE;
+                    $this->errors['DEL_ALIAS'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+        }
+        
+        
+        if ($_old['STAT'] != $_new['STAT']) 
+        {
+            if ($_new['STAT'] == true) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN,
+                    'STAT' => $_new['STAT']
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status             = FALSE;
+                    $this->errors['ADD_STAT'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+            
+            if ($_new['STAT'] == false) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status             = FALSE;
+                    $this->errors['DEL_STAT'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+                $result = array();
+                
+                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT_AUTH, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN,
+                    'STAT_USER' => $_new['STAT_USER']
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status                  = FALSE;
+                    $this->errors['DEL_STAT_AUTH'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+        }
 
-
-
-    $params = array(
-		    'USER' => $_user,
-		    'DNS_DOMAIN' => $_s['DOMAIN']
-		    );
-   
-    require_once V_ROOT_DIR . 'api/DNS.class.php';
-    $dns = new DNS();
-    $result = $dns->delExecute($params);
+		if ($_old['SSL'] != $_new['SSL']) 
+		{
+			if ($_new['SSL'] == true) 
+			{
+				// TODO: write it
+			}
+			if ($_new['SSL'] == false) 
+			{
+				// TODO: write it
+			}
+		} 
+		else 
+		{
+			if ($_old['SSL_CERT'] != $_new['SSL_CERT']) 
+			{
+				$result    = array();
+				$_SSL_CERT = $_new['SSL_CERT'];
+				// or read uploaded tmp file
+				
+				$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_CERT, array(
+					'USER' => $_user,
+					'DOMAIN' => $_DOMAIN,
+					'SSL_CERT' => $_SSL_CERT
+				));
+				if (!$result['status']) 
+				{
+					$this->status             = FALSE;
+					$this->errors['SSL_CERT'] = array(
+						$result['error_code'] => $result['error_message']
+					);
+				}
+			}
+			if ($_old['SSL_HOME'] != $_new['SSL_HOME']) 
+			{
+				$result = array();
+				$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, array(
+					'USER' => $_user,
+					'DOMAIN' => $_DOMAIN,
+					'SSL_HOME' => $_new['SSL_HOME']
+				));
+				if (!$result['status']) 
+				{
+					$this->status             = FALSE;
+					$this->errors['SSL_HOME'] = array(
+						$result['error_code'] => $result['error_message']
+					);
+				}
+			}
+		}
+        
+        if ($_old['CGI'] != $_new['CGI']) 
+        {
+            if ($_new['CGI'] == true) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status            = FALSE;
+                    $this->errors['ADD_CGI'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+            if ($_new['CGI'] == false) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status            = FALSE;
+                    $this->errors['DEL_CGI'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+        }
+        
+        if ($_old['ELOG'] != $_new['ELOG']) 
+        {
+            if ($_new['ELOG'] == true) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status             = FALSE;
+                    $this->errors['ADD_ELOG'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+            if ($_new['ELOG'] == false) 
+            {
+                $result = array();
+                $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array(
+                    'USER' => $_user,
+                    'DOMAIN' => $_DOMAIN
+                ));
+                if (!$result['status']) 
+                {
+                    $this->status             = FALSE;
+                    $this->errors['DEL_ELOG'] = array(
+                        $result['error_code'] => $result['error_message']
+                    );
+                }
+            }
+        }
+        
+        
+        return $this->reply($result['status'], $result['data']);
+    }
     
-    if(!$result['status'] && $result['error_code'] != 31) // domain not found
-      $this->errors['DNS'] = array($result['error_code'] => $result['error_message']);
-   
-    require_once V_ROOT_DIR . 'api/DNS.class.php';
-
-    $params = array(
-		    'USER' => $_user,
-		    'MAIL_DOMAIN' => $_s['DOMAIN']
-		    );
-
-    /*
-    require_once V_ROOT_DIR . 'api/MAIL.class.php';
-    $mail = new MAIL();
-    $result = $mail->delExecute($params);
+    /**
+	 * Suspend entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function suspendExecute($request)
+    {
+        $r  = new Request();
+        $_s = $r->getSpell();
+        
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user,
+            'DOMAIN' => $_s['DOMAIN']
+        );
+        
+        $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, $params);
+        
+        if (!$result['status'])
+		{
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+        
+        return $this->reply($result['status'], $result['data']);
+    }
     
-    if(!$result['status'] && $result['error_code'] != 31) // domain not found
-      $this->errors['MAIL'] = array($result['error_code'] => $result['error_message']);
-    */
-    return $this->reply($result['status'], $result['data']);
-  }
-  
+    /**
+	 * Unsuspend entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function unsuspendExecute($request)
+    {
+        $r  = new Request();
+        $_s = $r->getSpell();
+        
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user,
+            'DOMAIN' => $_s['DOMAIN']
+        );
+        
+        $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, $params);
+        
+        if (!$result['status'])
+		{
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+        
+        return $this->reply($result['status'], $result['data']);
+    }
     
-  
-  function changeExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-    $_old = $_s['old'];
-    $_new = $_s['new'];
-
-    $_user = 'vesta';
-    $_DOMAIN = $_new['DOMAIN'];
+    /**
+	 * Batch suspend entries
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function suspendAllExecute($request)
+    {
+        $r  = new Request();
+        $_s = $r->getSpell();
+        
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user
+        );
+        
+        $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAINS, $params);
+        
+        if (!$result['status'])
+        {
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+        
+        return $this->reply($result['status'], $result['data']);
+    }
     
-    if($_old['IP'] != $_new['IP'])
-      {
-	$result = array();
-	$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP']));
-	if(!$result['status'])
-	  {
-	    $this->status = FALSE;
-	    $this->errors['IP_ADDRESS'] = array($result['error_code'] => $result['error_message']);
-	  }
-      }
-
-
-    if($_old['TPL'] != $_new['TPL'])
-      {
-	$result = array();
-	$result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_TPL, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'TPL' => $_new['TPL']));
-	if(!$result['status'])
-	  {
-	    $this->status = FALSE;
-	    $this->errors['TPL'] = array($result['error_code'] => $result['error_message']);
-	  }
-      }
-
-    if($_old['ALIAS'] != $_new['ALIAS'])
-      {
-	$result = array();
-
-	$old_arr = explode(',', $_old['ALIAS']);
-	$new_arr = explode(',', $_new['ALIAS']);
-
-	$added = array_diff($new_arr, $old_arr);
-	$deleted = array_diff($old_arr, $new_arr);
-
-	foreach($added as $alias)
-	  {
-	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['ADD_ALIAS'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-	foreach($deleted as $alias)
-	  {
-	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ALIAS, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'ALIAS' => $alias));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['DEL_ALIAS'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-      }
-
-
-    if($_old['STAT'] != $_new['STAT'])
-      {
-	if($_new['STAT'] == true)
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT' => $_new['STAT']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['ADD_STAT'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-
-	if($_new['STAT'] == false)
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['DEL_STAT'] = array($result['error_code'] => $result['error_message']);
-	      }
-	    $result = array();
-
-	    $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_STAT_AUTH, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'STAT_USER' => $_new['STAT_USER']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['DEL_STAT_AUTH'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-      }
-
-    if(0)
-    // ssl
-    if($_old['SSL'] != $_new['SSL'])
-      {
-	if($_new['SSL'] == true)
-	  {
-
-
-	  }
-	if($_new['SSL'] == false)
-	  {
-
-
-	  }
-      }
-    else
-      {
-	if($_old['SSL_CERT'] != $_new['SSL_CERT'])
-	  {
-	    $result = array();
-	    $_SSL_CERT = $_new['SSL_CERT'];
-	    // or read uploaded tmp file
-
-	    $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_CERT, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_CERT' => $_SSL_CERT ));
-	    if(!$result['status'])
-	    {
-	      $this->status = FALSE;
-	      $this->errors['SSL_CERT'] = array($result['error_code'] => $result['error_message']);
-	    }
-	  }
-	if($_old['SSL_HOME'] != $_new['SSL_HOME'])
-	  {
-	    $result = array();
-	    $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, array('USER' => $_user, 'DOMAIN' => $_DOMAIN, 'SSL_HOME' => $_new['SSL_HOME']));
-	    if(!$result['status'])
-	      {
-		$this->status = FALSE;
-		$this->errors['SSL_HOME'] = array($result['error_code'] => $result['error_message']);
-	      }
-	  }
-      }
-
-    if($_old['CGI'] != $_new['CGI'])
-      {
-	if($_new['CGI'] == true)
-	{
-	  $result = array();
-	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
-	  if(!$result['status'])
-	    {
-	      $this->status = FALSE;
-	      $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']);
-	    }
-	}
-	if($_new['CGI'] == false)
-	{
-	  $result = array();
-	  $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
-	  if(!$result['status'])
-	    {
-	      $this->status = FALSE;
-	      $this->errors['DEL_CGI'] = array($result['error_code'] => $result['error_message']);
-	    }
-	}
-      }
-
-    if($_old['ELOG'] != $_new['ELOG'])
-      {
-	if($_new['ELOG'] == true)
-	{
-	  $result = array();
-	  $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
-	  if(!$result['status'])
-	    {
-	      $this->status = FALSE;
-	      $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']);
-	    }
-	}
-	if($_new['ELOG'] == false)
-	{
-	  $result = array();
-	  $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_ELOG, array('USER' => $_user, 'DOMAIN' => $_DOMAIN));
-	  if(!$result['status'])
-	    {
-	      $this->status = FALSE;
-	      $this->errors['DEL_ELOG'] = array($result['error_code'] => $result['error_message']);
-	    }
-	}
-      }
-
-
-    return $this->reply($result['status'], $result['data']);
-  }
-
-
-
-  function suspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-
-    $_user = 'vesta';
+    /**
+	 * Batch unsuspend entry
+	 * 
+	 * @param Request $request
+	 * @return
+	 */    
+    public function unsuspendAllExecute($request)
+    {
+        $r  = new Request();
+        $_s = $r->getSpell();
+        
+        $_user = 'vesta';
+        
+        $params = array(
+            'USER' => $_user
+        );
+        
+        $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAINS, $params);
+        
+        if (!$result['status'])
+        {
+            $this->errors[] = array(
+                $result['error_code'] => $result['error_message']
+            );
+        }
+        
+        return $this->reply($result['status'], $result['data']);
+    }
     
-    $params = array(
-		    'USER' => $_user,
-		    'DOMAIN' => $_s['DOMAIN']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-
-
-  function unsuspendExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user,
-		    'DOMAIN' => $_s['DOMAIN']
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-
-
-
-  function suspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAINS, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-
-  function unsuspendAllExecute($request)
-  {
-    $r = new Request();
-    $_s = $r->getSpell();
-
-    $_user = 'vesta';
-    
-    $params = array(
-		    'USER' => $_user
-		    );
-    
-    $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAINS, $params);
-    
-    if(!$result['status'])
-      $this->errors[] = array($result['error_code'] => $result['error_message']);
-    
-    return $this->reply($result['status'], $result['data']);
-  }
-}
\ No newline at end of file
+}
diff --git a/web/vesta/app.init.php b/web/vesta/app.init.php
index e405e7785..835d44cac 100644
--- a/web/vesta/app.init.php
+++ b/web/vesta/app.init.php
@@ -13,8 +13,9 @@ require_once V_ROOT_DIR . 'api/AjaxHandler.php';
 /**
  * App execution 
  * 
+ * @author Malishev Dima 
  * @author vesta, http://vestacp.com/
- * @copyright vesta 2010
+ * @copyright vesta 2010-2011
  */
 try {
     // Execution
diff --git a/web/vesta/config/Config.class.php b/web/vesta/config/Config.class.php
index b416ac876..765f59e82 100644
--- a/web/vesta/config/Config.class.php
+++ b/web/vesta/config/Config.class.php
@@ -1,31 +1,61 @@
 
+ * @author vesta, http://vestacp.com/
+ * @copyright vesta 2010-2011
+ */
+class Config 
+{
     
     protected $_config = array();   
     static public $instance = null;
     
-    public function __construct() {
+    /**
+	 * Config constructor
+	 * 
+	 */
+    public function __construct() 
+    {
         $this->_config = parse_ini_file(V_ROOT_DIR.'config'.DIRECTORY_SEPARATOR.'vesta_config.ini');
     }
 
-    public function getParameter($key){
+	/**
+	 * get config parameter
+	 * 
+	 * @param string $key
+	 * @return mixed
+	 */
+    public function getParameter($key)
+    {
         return isset($this->_config[$key]) ? $this->_config[$key] : false;
     }
     
     /**
      * Grab current instance or create it
      *
-     * @return 
+     * @return Config
      */
-    static function getInstance($request=null) {
+    static public function getInstance($request = null) 
+    {
         return null == self::$instance ? self::$instance = new self() : self::$instance;
     }
     
-    static function get($key){
+    /**
+     * Shortcut method: get config parameter
+     *
+     * @param string $key
+     * @return mixed
+     */
+    static public function get($key)
+    {
         $ref = self::getInstance();
         
         return $ref->getParameter($key);
     }
     
-}
\ No newline at end of file
+}
diff --git a/web/vesta/core/Request.class.php b/web/vesta/core/Request.class.php
index c40488537..5d9f3374b 100644
--- a/web/vesta/core/Request.class.php
+++ b/web/vesta/core/Request.class.php
@@ -5,10 +5,12 @@
  *
  * Holds parameters, decorating them and providing easy access
  *
+ * @author Malishev Dima 
  * @author vesta, http://vestacp.com/
- * @copyright vesta 2010
+ * @copyright vesta 2010-2011
  */
-class Request {
+class Request 
+{
 
     protected $server = array();
     protected $post = array();
@@ -20,7 +22,8 @@ class Request {
     /**
      *
      */
-    public function __construct() {
+    public function __construct() 
+    {
         $this->post = $_POST;
         $this->get = $_GET;
         $this->server = $_SERVER;
@@ -31,29 +34,47 @@ class Request {
     /**
      * Merge holders into single holder
      */
-    function mergeContainers() {
-        $this->_merged = array_merge($this->server, $this->post, $this->get, $this->global);
-	$this->_spell = json_decode($this->_merged['spell'], true);
+    public function mergeContainers() 
+    {
+        $this->_merged = array_merge($this->server, 
+									 $this->post, 
+									 $this->get, 
+									 $this->global);
+		$this->_spell = json_decode($this->_merged['spell'], true);
     }
 
     /**
      * Get parameter
      *
-     * @param  $key
-     * @param  $default
-     * @return 
-     * 
+     * @param string $key
+     * @param mixed $default
+     * @return mixed
      */
-    function getParameter($key, $default=false) {
-      return isset($this->_merged[$key]) ? $this->_merged[$key] : $default;
-      //        return isset($this->_spell[$key]) ? $this->_spell[$key] : $default;
+    public function getParameter($key, $default=false) 
+    {
+      return isset($this->_merged[$key]) ? $this->_merged[$key] : $default;      
     }
 
-    function getSpell() {
+	/**
+     * Get spell variable from parameters
+     *     
+     * @return array
+     */
+    public function getSpell() 
+    {
       return $this->_spell;
     }
 
-    function hasParameter($key, $default=false) {
+	/**
+     * Check if parameter is set
+     *
+     * @param string $key
+     * @param mixed $default
+     * @return mixed
+     * 
+     */
+    public function hasParameter($key, $default=false) 
+    {
         return isset($this->_merged[$key]);
     }
 
@@ -62,20 +83,32 @@ class Request {
      * 
      * TODO: write the method
      *
-     * @return 
+     * @return boolean
      */
-    function isPost() {
+    public function isPost() 
+    {
         return true;
     }
 
-    static function parseAjaxMethod($request) {
-        if (!$request->hasParameter('jedi_method')) {
+	/**
+     * Dissassemble ajax method
+     * Breaks ajax requested method param into "ENTITY"."ACTION"
+     * for instance DNS.getList into "namespase" => DNS, "function" => "getList" 
+     * for triggering ($DNS->getListExecuty();)
+     * 
+     * TODO: write the method
+     *
+     * @return array
+     */
+    static public function parseAjaxMethod($request) 
+    {
+        if (!$request->hasParameter('jedi_method')) 
+        {
             throw new ProtectionException(Message::INVALID_METHOD);
         }
-
         $method = explode('.', $request->getParameter('jedi_method'));
-
-        if (count($method) != 2) {
+        if (count($method) != 2) 
+        {
             throw new ProtectionException(Message::INVALID_METHOD);
         }
 
diff --git a/web/vesta/core/Vesta.class.php b/web/vesta/core/Vesta.class.php
index 44802f8ec..ac99cb990 100644
--- a/web/vesta/core/Vesta.class.php
+++ b/web/vesta/core/Vesta.class.php
@@ -1,220 +1,173 @@
 
+ * @author Naumov-Socolov 
  * @author vesta, http://vestacp.com/
- * @copyright vesta 2010
+ * @copyright vesta 2010-2011
  */
-class Vesta {
-    // ====================== IP ===========================
-    const V_LIST_SYS_IPS = 'v_list_sys_ips';
-
-    // adding
-    const V_ADD_SYS_IP = 'v_add_sys_ip';
-    const V_ADD_SYS_USER_IP = 'v_add_sys_user_ip'; 
-
-    // changing
-    const V_CHANGE_SYS_IP_OWNER = 'v_change_sys_ip_owner';
-    const V_CHANGE_SYS_IP_NAME = 'v_change_sys_ip_name';
-    const V_CHANGE_SYS_IP_STATUS = 'v_change_sys_ip_status';
-    // deleting 
-    const V_DEL_SYS_IP = 'v_del_sys_ip';
-
-    // service 
-    const V_UPD_SYS_IP = 'v_upd_sys_ip';
-    const V_LIST_SYS_INTERFACES = 'v_list_sys_interfaces';
-
-    // ======================= DNS =========================
-    const V_LIST_DNS_DOMAINS = 'v_list_dns_domains';
-    const V_LIST_DNS_DOMAIN_RECORDS = 'v_list_dns_domain';
-
-    // adding
-    const V_ADD_DNS_DOMAIN = 'v_add_dns_domain';
-    const V_ADD_DNS_DOMAIN_RECORD = 'v_add_dns_domain_record';
-
-    // changing
-    const V_CHANGE_DNS_DOMAIN_IP = 'v_change_dns_domain_ip';
-    const V_CHANGE_DNS_DOMAIN_SOA = 'v_change_dns_domain_soa';
-    const V_CHANGE_DNS_DOMAIN_TPL = 'v_change_dns_domain_tpl';
-    const V_CHANGE_DNS_DOMAIN_TTL = 'v_change_dns_domain_ttl';
-    const V_CHANGE_DNS_DOMAIN_EXP = 'v_change_dns_domain_exp';
-    const V_CHANGE_DNS_DOMAIN_RECORD = 'v_change_dns_domain_record';
-
-    // deleting
-    const V_DEL_DNS_DOMAIN = 'v_del_dns_domain';
-    const V_DEL_DNS_DOMAIN_RECORD = 'v_del_dns_domain_record';
-
-
-
-    // ======================= CRON =========================
-    const V_LIST_CRON_JOBS = 'v_list_sys_cron';
-
-    // adding 
-    const V_ADD_CRON_JOB = 'v_add_sys_cron';
-    const V_ADD_SYS_USER_REPORTS = 'v_add_sys_user_reports';
-
-    // changing
-    const V_CHANGE_CRON_JOB = 'v_change_sys_cron_job';
-    const V_SUSPEND_CRON_JOB = 'v_suspend_sys_cron_job';
-    const V_SUSPEND_CRON_JOBS = 'v_suspend_sys_cron_jobs';
-    const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_sys_cron_job';
-    const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_sys_cron_jobs';
-
-    // deleting 
-    const V_DEL_CRON_JOB = 'v_del_sys_cron';
-    const V_DEL_SYS_USER_REPORTS = 'v_del_sys_user_reports';
-
-
-
-    // ======================= USER =========================
-    const V_LIST_SYS_USERS = 'v_list_sys_users';
-
-    // adding 
-    const V_ADD_SYS_USER = 'v_add_sys_user';
-
-    // changing
-    const V_CHANGE_SYS_USER_CONTACT = 'v_change_sys_user_contact';
-    const V_CHANGE_SYS_USER_NS = 'v_change_sys_user_ns';
-    const V_CHANGE_SYS_USER_PACKAGE = 'v_change_sys_user_package';
-    const V_CHANGE_SYS_USER_PASSWORD = 'v_change_sys_user_password';
-    const V_CHANGE_SYS_USER_SHELL = 'v_change_sys_user_shell';
-    const V_CHANGE_SYS_USER_ROLE = 'v_change_sys_user_role';
-
-    // deleting 
-    const V_DEL_SYS_USER = 'v_del_sys_user';
-
-
-    // ======================= WEB_DOMAIN =========================
-    const V_LIST_WEB_DOMAINS = 'v_list_web_domains';
-
-    const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias';
-    const V_LIST_WEB_DOMAINS_ELOG = 'v_list_web_domains_elog';
-    const V_LIST_WEB_DOMAINS_PROXY = 'v_list_web_domains_proxy';
-    const V_LIST_WEB_DOMAINS_SSL = 'v_list_web_domains_ssl';
-    const V_LIST_WEB_DOMAINS_STATS = 'v_list_web_domains_stats';
-    const V_LIST_WEB_TEMPLATES = 'v_list_web_templates';
-
-    // adding 
-    const V_ADD_WEB_DOMAIN = 'v_add_web_domain';
-    const V_ADD_WEB_DOMAIN_ALIAS = 'v_add_web_domain_alias';
-
-    // changing
-    const V_ADD_WEB_DOMAIN_STAT = 'v_add_web_domain_stat';
-    const V_ADD_WEB_DOMAIN_STAT_AUTH = 'v_add_web_domain_stat_auth';
-    const V_ADD_WEB_DOMAIN_SSL = 'v_add_web_domain_ssl';
-    const V_ADD_WEB_DOMAIN_ELOG = 'v_add_web_domain_elog';
-    const V_ADD_WEB_DOMAIN_CGI = 'v_add_web_domain_cgi';
-
-    const V_CHANGE_WEB_DOMAIN_IP = 'v_change_web_domain_ip';
-    const V_CHANGE_WEB_DOMAIN_SSLCERT = 'v_change_web_domain_sslcert';
-    const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome';
-    const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl';
-
-    const V_DEL_WEB_DOMAIN_CGI = 'v_del_web_domain_cgi';
-    const V_DEL_WEB_DOMAIN_ELOG = 'v_del_web_domain_elog';
-    const V_DEL_WEB_DOMAIN_SSL = 'v_del_web_domain_ssl';
-    const V_DEL_WEB_DOMAIN_STAT = 'v_del_web_domain_stat';
-    const V_DEL_WEB_DOMAIN_STAT_AUTH = 'v_del_web_domain_stat_auth';
-    const V_DEL_WEB_DOMAIN_ALIAS = 'v_del_web_domain_alias';
-
-    const V_SUSPEND_WEB_DOMAIN = 'v_suspend_web_domain';
-    const V_SUSPEND_WEB_DOMAINS = 'v_suspend_web_domains';
-    const V_UNSUSPEND_WEB_DOMAIN = 'v_unsuspend_web_domain';
-    const V_UNSUSPEND_WEB_DOMAINS = 'v_unsuspend_web_domains';
-    const V_UPD_WEB_DOMAIN_DISK = 'v_upd_web_domain_disk';
-    const V_UPD_WEB_DOMAINS_DISK = 'v_upd_web_domains_disk';
-    const V_UPD_WEB_DOMAIN_TRAFF = 'v_upd_web_domain_traff';
-    const V_UPD_WEB_DOMAINS_TRAFF = 'v_upd_web_domains_traff';
-
-    // deleting 
-    const V_DEL_WEB_DOMAIN = 'v_del_web_domain';
-
-
-    // ======================= DB =========================
-    // list
-    const V_LIST_DB_BASES = 'v_list_db_bases';
-    const V_LIST_DB_HOSTS = 'v_list_db_hosts';
-
-    // adding 
-    const V_ADD_DB_BASE = 'v_add_db_base';
-    const V_ADD_DB_HOST = 'v_add_db_host';
-
-    // changing 
-    const V_SUSPEND_DB_BASE = 'v_suspend_db_base';
-    const V_SUSPEND_DB_BASES = 'v_suspend_db_bases';
-    const V_UNSUSPEND_DB_BASE = 'v_unsuspend_db_base';
-    const V_UNSUSPEND_DB_BASES = 'v_unsuspend_db_bases';
-    const V_CHANGE_DB_PASSWORD = 'v_change_db_password';
-
-    // deleting
-    const V_DEL_DB_BASE = 'v_del_db_base';
-    const V_DEL_DB_HOST = 'v_del_db_host';
-
-    // service
-    const V_UPD_DB_BASE_DISK = 'v_upd_db_base_disk';
-    const V_UPD_DB_BASES_DISK = 'v_upd_db_bases_disk';
-
-
-    // ======================================================
-
-    const PARAM_DELIMETER = ' ';
+class Vesta 
+{
+    // IP
+    const V_LIST_SYS_IPS 				= 'v_list_sys_ips';
+    const V_ADD_SYS_IP 					= 'v_add_sys_ip';
+    const V_ADD_SYS_USER_IP 			= 'v_add_sys_user_ip'; 
+    const V_CHANGE_SYS_IP_OWNER 		= 'v_change_sys_ip_owner';
+    const V_CHANGE_SYS_IP_NAME 			= 'v_change_sys_ip_name';
+    const V_CHANGE_SYS_IP_STATUS 		= 'v_change_sys_ip_status';    
+    const V_DEL_SYS_IP 					= 'v_del_sys_ip';    
+    const V_UPD_SYS_IP 					= 'v_upd_sys_ip';
+    const V_LIST_SYS_INTERFACES 		= 'v_list_sys_interfaces';
+    // DNS
+    const V_LIST_DNS_DOMAINS 			= 'v_list_dns_domains';
+    const V_LIST_DNS_DOMAIN_RECORDS 	= 'v_list_dns_domain';
+    const V_ADD_DNS_DOMAIN 				= 'v_add_dns_domain';
+    const V_ADD_DNS_DOMAIN_RECORD 		= 'v_add_dns_domain_record';
+    const V_CHANGE_DNS_DOMAIN_IP 		= 'v_change_dns_domain_ip';
+    const V_CHANGE_DNS_DOMAIN_SOA 		= 'v_change_dns_domain_soa';
+    const V_CHANGE_DNS_DOMAIN_TPL 		= 'v_change_dns_domain_tpl';
+    const V_CHANGE_DNS_DOMAIN_TTL		= 'v_change_dns_domain_ttl';
+    const V_CHANGE_DNS_DOMAIN_EXP 		= 'v_change_dns_domain_exp';
+    const V_CHANGE_DNS_DOMAIN_RECORD 	= 'v_change_dns_domain_record';
+    const V_DEL_DNS_DOMAIN 				= 'v_del_dns_domain';
+    const V_DEL_DNS_DOMAIN_RECORD 		= 'v_del_dns_domain_record';
+    // CRON
+    const V_LIST_CRON_JOBS 				= 'v_list_sys_cron';
+    const V_ADD_CRON_JOB 				= 'v_add_sys_cron';
+    const V_ADD_SYS_USER_REPORTS 		= 'v_add_sys_user_reports';
+    const V_CHANGE_CRON_JOB 			= 'v_change_sys_cron_job';
+    const V_SUSPEND_CRON_JOB 			= 'v_suspend_sys_cron_job';
+    const V_SUSPEND_CRON_JOBS 			= 'v_suspend_sys_cron_jobs';
+    const V_UNSUSPEND_CRON_JOB 			= 'v_unsuspend_sys_cron_job';
+    const V_UNSUSPEND_CRON_JOBS 		= 'v_unsuspend_sys_cron_jobs';
+    const V_DEL_CRON_JOB 				= 'v_del_sys_cron';
+    const V_DEL_SYS_USER_REPORTS 		= 'v_del_sys_user_reports';
+	// USER
+    const V_LIST_SYS_USERS 				= 'v_list_sys_users';
+    const V_ADD_SYS_USER 				= 'v_add_sys_user';
+    const V_CHANGE_SYS_USER_CONTACT		= 'v_change_sys_user_contact';
+    const V_CHANGE_SYS_USER_NS 			= 'v_change_sys_user_ns';
+    const V_CHANGE_SYS_USER_PACKAGE 	= 'v_change_sys_user_package';
+    const V_CHANGE_SYS_USER_PASSWORD 	= 'v_change_sys_user_password';
+    const V_CHANGE_SYS_USER_SHELL 		= 'v_change_sys_user_shell';
+    const V_CHANGE_SYS_USER_ROLE 		= 'v_change_sys_user_role';
+    const V_DEL_SYS_USER 				= 'v_del_sys_user';
+    // WEB_DOMAIN
+    const V_LIST_WEB_DOMAINS 			= 'v_list_web_domains';
+    const V_LIST_WEB_DOMAINS_ALIAS 		= 'v_list_web_domains_alias';
+    const V_LIST_WEB_DOMAINS_ELOG 		= 'v_list_web_domains_elog';
+    const V_LIST_WEB_DOMAINS_PROXY 		= 'v_list_web_domains_proxy';
+    const V_LIST_WEB_DOMAINS_SSL 		= 'v_list_web_domains_ssl';
+    const V_LIST_WEB_DOMAINS_STATS 		= 'v_list_web_domains_stats';
+    const V_LIST_WEB_TEMPLATES 			= 'v_list_web_templates';
+    const V_ADD_WEB_DOMAIN 				= 'v_add_web_domain';
+    const V_ADD_WEB_DOMAIN_ALIAS 		= 'v_add_web_domain_alias';
+    const V_ADD_WEB_DOMAIN_STAT 		= 'v_add_web_domain_stat';
+    const V_ADD_WEB_DOMAIN_STAT_AUTH 	= 'v_add_web_domain_stat_auth';
+    const V_ADD_WEB_DOMAIN_SSL 			= 'v_add_web_domain_ssl';
+    const V_ADD_WEB_DOMAIN_ELOG 		= 'v_add_web_domain_elog';
+    const V_ADD_WEB_DOMAIN_CGI 			= 'v_add_web_domain_cgi';
+    const V_CHANGE_WEB_DOMAIN_IP 		= 'v_change_web_domain_ip';
+    const V_CHANGE_WEB_DOMAIN_SSLCERT 	= 'v_change_web_domain_sslcert';
+    const V_CHANGE_WEB_DOMAIN_SSLHOME 	= 'v_change_web_domain_sslhome';
+    const V_CHANGE_WEB_DOMAIN_TPL 		= 'v_change_web_domain_tpl';
+    const V_DEL_WEB_DOMAIN_CGI 			= 'v_del_web_domain_cgi';
+    const V_DEL_WEB_DOMAIN_ELOG 		= 'v_del_web_domain_elog';
+    const V_DEL_WEB_DOMAIN_SSL 			= 'v_del_web_domain_ssl';
+    const V_DEL_WEB_DOMAIN_STAT 		= 'v_del_web_domain_stat';
+    const V_DEL_WEB_DOMAIN_STAT_AUTH 	= 'v_del_web_domain_stat_auth';
+    const V_DEL_WEB_DOMAIN_ALIAS 		= 'v_del_web_domain_alias';
+    const V_SUSPEND_WEB_DOMAIN 			= 'v_suspend_web_domain';
+    const V_SUSPEND_WEB_DOMAINS 		= 'v_suspend_web_domains';
+    const V_UNSUSPEND_WEB_DOMAIN 		= 'v_unsuspend_web_domain';
+    const V_UNSUSPEND_WEB_DOMAINS 		= 'v_unsuspend_web_domains';
+    const V_UPD_WEB_DOMAIN_DISK 		= 'v_upd_web_domain_disk';
+    const V_UPD_WEB_DOMAINS_DISK 		= 'v_upd_web_domains_disk';
+    const V_UPD_WEB_DOMAIN_TRAFF 		= 'v_upd_web_domain_traff';
+    const V_UPD_WEB_DOMAINS_TRAFF 		= 'v_upd_web_domains_traff';
+    const V_DEL_WEB_DOMAIN 				= 'v_del_web_domain';
+    // DB    
+    const V_LIST_DB_BASES 				= 'v_list_db_bases';
+    const V_LIST_DB_HOSTS 				= 'v_list_db_hosts';
+    const V_ADD_DB_BASE 				= 'v_add_db_base';
+    const V_ADD_DB_HOST 				= 'v_add_db_host';
+    const V_SUSPEND_DB_BASE 			= 'v_suspend_db_base';
+    const V_SUSPEND_DB_BASES 			= 'v_suspend_db_bases';
+    const V_UNSUSPEND_DB_BASE 			= 'v_unsuspend_db_base';
+    const V_UNSUSPEND_DB_BASES 			= 'v_unsuspend_db_bases';
+    const V_CHANGE_DB_PASSWORD 			= 'v_change_db_password';
+    const V_DEL_DB_BASE 				= 'v_del_db_base';
+    const V_DEL_DB_HOST 				= 'v_del_db_host';
+    const V_UPD_DB_BASE_DISK 			= 'v_upd_db_base_disk';
+    const V_UPD_DB_BASES_DISK 			= 'v_upd_db_bases_disk';
+    const PARAM_DELIMETER 				= ' ';
 
     /**
+     * Execute vesta command
      * 
+     * @param string $cms_command
+     * @param array $parameters
+     * @return string
      */
-    static function execute($cmd_command, $parameters=array()) {
-	$r = new Request();
-	$debug = $r->getParameter("debug", FALSE);
+    static function execute($cmd_command, $parameters=array()) 
+    {
+		$r = new Request();
+		$_DEBUG = $r->getParameter("debug", FALSE);
 
-        if (!isset($cmd_command)) {
+        if (!isset($cmd_command)) 
+        {
             throw new ProtectionException('No function name passed into Vesta::execute'); // TODO: move msg to Messages::
         }
 
         $params = array(
-            'sudo' => Config::get('sudo_path'),
-            'functions' => Config::get('vesta_functions_path'),
-	    'parameters' => implode("' '", $parameters),  
-	    //            'reply' => Config::get('response_type')
+            'sudo' 		 => Config::get('sudo_path'),
+            'functions'  => Config::get('vesta_functions_path'),
+			'parameters' => implode("' '", $parameters),  	    
         );
-
-
+	
+		// e.g.: /usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users vesta json 
         $cmd = "{$params['sudo']} {$params['functions']}{$cmd_command} '{$params['parameters']}' {$params['reply']}";
-	// /usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users vesta json 
+	
         exec($cmd, $output, $return);
 
-	$result = 0;
-	$result = array('status' => TRUE,
-			'data' => '',
-			'error_code' => '',
-			'error_message' => ''
-			);
+		$result = 0;
+		$result = array('status' => TRUE,
+						'data' => '',
+						'error_code' => '',
+						'error_message' => ''
+		);
 
-	if($debug)
-	  {
-	    $result['debug'] = array(
-				     "cmd" => $cmd,
-				     "output" => $output,
-				     "return" => $return
-				     );
-	    if($debug == 2)
-	      {
-		echo '

'.$cmd; - echo '
output: '; print_r($output); - echo '
return: '.$return; - echo '

'; - } - } + // TODO: please remove this later :) + if ($_DEBUG) + { + $result['debug'] = array( + "cmd" => $cmd, + "output" => $output, + "return" => $return + ); + if ($debug == 2) + { + echo '

'.$cmd; + echo '
output: '; print_r($output); + echo '
return: '.$return; + echo '

'; + } + } - if(!!(int)$return) - { - $result['status'] = FALSE; - $result['error_code'] = (int)$return; - $result['error_message'] = implode('', $output); - } - else - { - $result['data'] = json_decode(implode('', $output), true); - } + if (!!(int)$return) + { + $result['status'] = FALSE; + $result['error_code'] = (int)$return; + $result['error_message'] = implode('', $output); + } + else + { + $result['data'] = json_decode(implode('', $output), true); + } - return $result; + return $result; } } diff --git a/web/vesta/core/exceptions/ProtectionException.class.php b/web/vesta/core/exceptions/ProtectionException.class.php index 0fce89b86..cb4da129d 100644 --- a/web/vesta/core/exceptions/ProtectionException.class.php +++ b/web/vesta/core/exceptions/ProtectionException.class.php @@ -5,17 +5,27 @@ * * Thrown if unexpected action or behaviour detected * + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 + * @copyright vesta 2010-2011 */ -class ProtectionException extends Exception { +class ProtectionException extends Exception +{ const CODE_GENERAL = 0; - public function __construct($message, $code=self::CODE_GENERAL, $previous=null) { + /** + * Protection exception + */ + public function __construct($message, $code=self::CODE_GENERAL, $previous=null) + { parent::__construct($message, $code, $previous); } - public function __toString() { + /** + * Renders error message + */ + public function __toString() + { print $this->message; } diff --git a/web/vesta/core/exceptions/SystemException.class.php b/web/vesta/core/exceptions/SystemException.class.php index 5a2306ad4..6db36cdc6 100644 --- a/web/vesta/core/exceptions/SystemException.class.php +++ b/web/vesta/core/exceptions/SystemException.class.php @@ -7,8 +7,9 @@ * - system error occured * - unpredictable scenarios * + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 + * @copyright vesta 2010-2011 */ class SystemException extends Exception { const CODE_GENERAL = 0; diff --git a/web/vesta/core/utils/Message.class.php b/web/vesta/core/utils/Message.class.php index 0e5fdcc91..5695b4e26 100644 --- a/web/vesta/core/utils/Message.class.php +++ b/web/vesta/core/utils/Message.class.php @@ -4,20 +4,23 @@ * Messages container * * Contains messages, that are used in the code. - * + * + * @author Malishev Dima * @author vesta, http://vestacp.com/ - * @copyright vesta 2010 + * @copyright vesta 2010-2011 */ -class Message { - const REQUEST_INVALID = 'Malformed request'; - const GENERAL_ERROR = 'General protection fault'; - const REQUEST_IS_NOT_POST = 'Request is not POST'; - const METHOD_NOT_EXIST = 'Message not exist'; - const INVALID_METHOD = 'Method Invalid'; - const SYSTEM_ERROR = 'System Error'; - const PROTECTION_ERROR = 'Protection error'; - - const ERROR = 'error'; +class Message +{ + + const ERROR = 'error'; + const REQUEST_INVALID = 'Malformed request'; + const REQUEST_IS_NOT_POST = 'Request is not POST'; + const GENERAL_ERROR = 'General protection fault'; + const METHOD_NOT_EXIST = 'Message not exist'; + const INVALID_METHOD = 'Method Invalid'; + const SYSTEM_ERROR = 'System Error'; + const PROTECTION_ERROR = 'Protection error'; + } ?> diff --git a/web/vesta/core/utils/error_logger.php b/web/vesta/core/utils/error_logger.php new file mode 100644 index 000000000..73234ef9a --- /dev/null +++ b/web/vesta/core/utils/error_logger.php @@ -0,0 +1,47 @@ +