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

/**
 * This class provides Admin SSL functions
 *
 * @package    SSL
 * @category   Controllers/Admin
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Controller_Admin_SSL extends Controller_TemplateDefault_Admin {
	protected $secure_actions = array(
		'add'=>TRUE,
		'list'=>TRUE,
		'view'=>TRUE,
	);

	public function action_list() {
		Block::add(array(
			'title'=>_('SSL CA Certificates'),
			'body'=>Table::display(
				ORM::factory('SSL_CA')->find_all(),
				25,
				array(
					'id'=>array('label'=>'ID','url'=>URL::link('admin','ssl/view/')),
					'sign_cert'=>array('label'=>'Cert'),
					'issuer()'=>array('label'=>'Issuer'),
					'valid_to(TRUE)'=>array('label'=>'Expires'),
				),
				array(
					'page'=>TRUE,
					'type'=>'select',
					'form'=>URL::link('admin','ssl/view'),
				)),
			));
	}

	private function add_view($id=NULL,$output='') {
		$so = ORM::factory('SSL_CA',$id);

		if ($_POST) {
			if ($so->values($_POST)->changed()) {
				try {
					$so->save();
					SystemMessage::add(array(
						'title'=>'SSL Certificate Saved',
						'type'=>'info',
						'body'=>'SSL Certificate successfully recorded.',
					));

				} catch (ORM_Validation_Exception $e) {
					$errors = $e->errors('models');

					SystemMessage::add(array(
						'title'=>'SSL Certificate NOT saved',
						'type'=>'error',
						'body'=>join("\n",array_values($errors)),
					));

					$so->reload();
				}
			}
		}

		$output .= Form::open();
		$output .= View::factory('ssl/admin/add_view')
			->set('o',$so);
		$output .= Form::submit('submit','submit',array('class'=>'form_button'));
		$output .= Form::close();

		return $output;
	}

	public function action_add() {
		Block::add(array(
			'title'=>_('Add SSL CA Certificate'),
			'body'=>$this->add_view(),
		));
	}

	public function action_view() {
		list($id,$output) = Table::page(__METHOD__);

		Block::add(array(
			'title'=>sprintf('%s: %s (%s)',_('View SSL CA Certificate'),$id,ORM::factory('SSL_CA',$id)->display('sign_cert')),
			'body'=>$this->add_view($id,$output),
		));

		Block::add(array(
			'title'=>_('Services using this Certificate'),
			'body'=>Table::display(
				ORM::factory('SSL_CA',$id)->list_issued(),
				25,
				array(
					'id'=>array('label'=>'ID','url'=>URL::link('admin','service/view/')),
					'plugin()->dn()'=>array('label'=>'Cert'),
					'plugin()->valid_to(TRUE)'=>array('label'=>'Expires'),
				),
				array(
					'page'=>TRUE,
					'type'=>'select',
					'form'=>URL::link('admin','service/view'),
				)),
		));

	}
}
?>