139 lines
3.8 KiB
PHP
139 lines
3.8 KiB
PHP
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
/**
|
|
* This class provides MODULE management
|
|
*
|
|
* @package lnApp
|
|
* @subpackage Page/Module
|
|
* @category Controllers
|
|
* @author Deon George
|
|
* @copyright (c) 2010 Deon George
|
|
* @license http://dev.leenooks.net/license.html
|
|
*/
|
|
class Controller_Admin_Module_Method extends Controller_Admin_Module {
|
|
/**
|
|
* Add a method to the database
|
|
*/
|
|
public function action_add() {
|
|
$id = $this->request->param('id');
|
|
$method = $this->request->param('sid');
|
|
|
|
$mo = ORM::factory('Module',$id);
|
|
$mmo = ORM::factory('Module_Method');
|
|
|
|
if (! $mo->loaded() OR ! in_array($method,$this->_methods($mo->name)))
|
|
throw new Kohana_Exception('Method (:method) does not exist in :class',array(':method'=>$method,':class'=>$mo->name));
|
|
|
|
$mmo->name = $method;
|
|
$mmo->module_id = $mo->id;
|
|
$mmo->values($_POST);
|
|
|
|
$output = '';
|
|
|
|
if ($_POST AND $mmo->values($_POST)->check()) {
|
|
$mmo->save();
|
|
|
|
if ($mmo->saved()) {
|
|
SystemMessage::add(array(
|
|
'title'=>_('Method Added'),
|
|
'type'=>'info',
|
|
'body'=>sprintf(_('Method %s defined to database'),$mmo->name),
|
|
));
|
|
|
|
HTTP::redirect(URL::link('admin','/module/edit/'.$mo->id));
|
|
|
|
} else {
|
|
SystemMessage::add(array(
|
|
'title'=>_('Method Not Saved'),
|
|
'type'=>'error',
|
|
'body'=>sprintf(_('Unable to define Method %s to database?'),$mmo->name),
|
|
));
|
|
}
|
|
}
|
|
|
|
$output .= View::factory('module/admin/method_add')
|
|
->set('module',$mo)
|
|
->set('method',$mmo);
|
|
|
|
Block::add(array(
|
|
'title'=>sprintf(_('Add Method (%s) to Database for (%s)'),strtoupper($mmo->name),strtoupper($mo->name)),
|
|
'body'=>$output,
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Edit a Module Configuration
|
|
*
|
|
* @param int $mid Module ID
|
|
*/
|
|
public function action_edit() {
|
|
$mid = $this->request->param('id');
|
|
$mmo = ORM::factory('Module_Method',$mid);
|
|
|
|
if (! $mmo->loaded()) {
|
|
SystemMessage::add(array(
|
|
'title'=>_('Invalid Method ID'),
|
|
'type'=>'error',
|
|
'body'=>sprintf(_('Method with ID %s doesnt appear to exist?'),$mid),
|
|
));
|
|
|
|
return;
|
|
}
|
|
|
|
$output = '';
|
|
|
|
// The groups that can run this method.
|
|
$groups = ORM::factory('Group');
|
|
|
|
if ($_POST) {
|
|
foreach ($groups->find_all() as $go) {
|
|
// If the group was defined and no longer
|
|
if ($mmo->has('group',$go) AND (! isset($_POST['groups']) OR ! in_array($go->id,$_POST['groups']))) {
|
|
$gm = ORM::factory('Group_Method',array('method_id'=>$mmo->id,'group_id'=>$go->id));
|
|
|
|
if (! $gm->delete())
|
|
SystemMessage::add(array(
|
|
'title'=>_('Unable to DELETE Group Method'),
|
|
'type'=>'error',
|
|
'body'=>sprintf(_('Unable to delete Group Method for method %s and group %s'),$mmo->name,$go->name),
|
|
));
|
|
|
|
// If the group was not defined and now is
|
|
} elseif (! $mmo->has('group',$go) AND isset($_POST['groups']) AND in_array($go->id,$_POST['groups'])) {
|
|
$gm = ORM::factory('Group_Method')
|
|
->values(array(
|
|
'method_id'=>$mmo->id,
|
|
'group_id'=>$go->id,
|
|
));
|
|
|
|
if (! $gm->check() OR ! $gm->save())
|
|
SystemMessage::add(array(
|
|
'title'=>_('Unable to SAVE Group Method'),
|
|
'type'=>'error',
|
|
'body'=>sprintf(_('Unable to save Group Method for method %s and group %s'),$mmo->name,$go->name),
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
$output .= Form::open();
|
|
|
|
$output .= View::factory('module/admin/method_detail_head');
|
|
foreach ($groups->find_all() as $go) {
|
|
$output .= View::factory('module/admin/method_detail_body')
|
|
->set('group',$go)
|
|
->set('defined',$mmo->has('group',$go));
|
|
}
|
|
$output .= View::factory('module/admin/method_detail_foot');
|
|
|
|
$output .= '<div>'.Form::submit('submit',_('Update'),array('class'=>'form_button')).'</div>';
|
|
$output .= Form::close();
|
|
|
|
Block::add(array(
|
|
'title'=>sprintf(_('%s->%s Method'),strtoupper($mmo->module->name),strtoupper($mmo->name)),
|
|
'body'=>$output,
|
|
));
|
|
}
|
|
}
|
|
?>
|