This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/host/classes/controller/task/host.php
2012-01-12 19:55:11 +11:00

124 lines
3.0 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides Host Server functions
*
* @package OSB
* @subpackage HostServer
* @category Controllers/Task
* @author Deon George
* @copyright (c) 2010 Deon George
* @license http://dev.leenooks.net/license.html
*/
class Controller_Task_Host extends Controller_Task {
// Host Server Object
private $hs;
public function __construct(Request $request, Response $response) {
parent::__construct($request,$response);
// To make it easy for some methods, we'll load our service here
switch (Request::current()->action()) {
case 'getclient':
case 'getservice':
case 'provision':
$sid = $this->request->param('id');
$hso = ORM::factory('service',$sid)->plugin()->host_server;
require Kohana::find_file('vendor',$hso->provision_plugin);
$this->hs = new $hso->provision_plugin($hso);
break;
}
}
/**
* Get Client Details from Host Server
*/
public function action_getclient() {
$sid = $this->request->param('id');
print_r((string)$this->hs->get_client(ORM::factory('service',$sid)));
}
/**
* Get Client Details from Host Server
*/
public function action_getservice() {
$sid = $this->request->param('id');
print_r((string)$this->hs->get_service(ORM::factory('service',$sid)));
}
/**
* List services that need to be provisioned
*/
public function action_provisionlist() {
$mode = $this->request->param('id');
$cats = array();
if ($mode)
$cats = ORM::factory('product_category')->list_bylistgroup($mode);
foreach (ORM::Factory('service')->list_provision()->find_all() as $so) {
$pc = array();
// Limit to show only those by the requested category.
if ($cats) {
if (! $so->product->avail_category_id OR ! preg_match('/^a:/',$so->product->avail_category_id))
continue;
$pc = unserialize($so->product->avail_category_id);
if (! array_intersect($pc,array_keys($cats)))
continue;
}
echo $so->id();
switch ($mode) {
case 'host':
printf(' %s %s %s',$so->plugin(),$so->plugin()->host_server->name,$so->service_name());
break;
default:
}
echo "\n";
}
}
/**
* Add a domain for the client
*
* @param int $id Hosting ID (in OSB)
* @return unknown_type
*/
public function action_provision() {
$sid = $this->request->param('id');
$so = ORM::factory('service',$sid);
// Provision Account
// @todo Need a test to see if an account alerady exists.
/*
$result = $this->hs->add_client($so);
print_r((string)$result);
// Next need to get the ID from the account call to set the IP
$result = $this->hs->setip(35); // @todo change this number
print_r((string)$result);
// Provision Domain
$result = $this->hs->add_service($so);
print_r((string)$result);
// Set Limits
$result = $this->hs->setlimits($so);
print_r((string)$result);
// Next need to get the ID for the domain to disable mail
$result = $this->hs->disablemail(43);
print_r((string)$result);
*/
}
}
?>