diff --git a/plugins/admin/systems/class_servRepository.inc b/plugins/admin/systems/class_servRepository.inc
index d92998b7e419d310392907e95ed17a34863b76bf..aa370c1ab7b6e7081f738be256c1b85e3949ab9e 100644 (file)
<?php
-class servrepository extends plugin
+require_once("class_goService.inc");
+
+class servrepository extends goService
{
/* CLI vars */
var $cli_summary = "Manage server basic objects";
/* Repositories */
var $repositories = array();
var $FAIrepository = array();
-
-
var $conflicts = array("FAIrepositoryServer");
var $DisplayName = "";
var $StatusFlag = "";
+
+ var $view_logged = FALSE;
+ var $fai_activated = FALSE;
-
- function servrepository ($config, $dn= NULL)
+ function servrepository (&$config, $dn= NULL, $parent= NULL)
{
- plugin::plugin ($config, $dn);
+ plugin::plugin ($config, $dn, $parent);
+
+ /* Skip this if fai is deactivated */
+ $tmp = search_config($this->config->data,"faiManagement","CLASS");
+ if(!empty($tmp)){
+ $this->fai_activated = TRUE;
+ }else{
+ return;
+ }
$this->DisplayName = _("Repository service");
/* Call parent execute */
plugin::execute();
+ if($this->is_account && !$this->view_logged){
+ $this->view_logged = TRUE;
+ new log("view","server/".get_class($this),$this->dn);
+ }
+
+ if(!$this->fai_activated){
+ $str = "<h2>"._("You can't use this plugin until FAI is activated.")."</h2>";
+ return $str;
+ }
+
/* Fill templating stuff */
$smarty= get_smarty();
+ $smarty->assign("is_createable",$this->acl_is_createable());
$display= "";
/* Smarty vars*/
if(isset($_POST['servRepository'])){
foreach($_POST as $name => $value){
- if(preg_match("/AddRepository/",$name)){
+ if(preg_match("/AddRepository/",$name) && $this->acl_is_createable()){
$once = true;
$this->dialog = new servRepositorySetup($this->config,$this->dn);
- $this->dialog->acl = $this->acl;
+ $this->dialog->parent = $this;
}
- if((preg_match("/^delete_/",$name))&&(!$once)){
+ if((preg_match("/^delete_/",$name)) && (!$once) && $this->acl_is_removeable()){
$once = true;
$value = preg_replace("/delete_/","",$name);
$value = base64_decode(preg_replace("/_.*$/","",$value));
/* to be able to detect if this was renamed */
$obj['initialy_was'] = $obj['Release'];
$this->dialog = new servRepositorySetup($this->config,$this->dn,$obj);
- $this->dialog->acl = $this->acl;
+ $this->dialog->parent = $this;
}
}
}
$obj = $this->repositories[base64_decode($_GET['id'])];
$obj['initialy_was'] = $obj['Release'];
$this->dialog = new servRepositorySetup($this->config,$this->dn,$obj);
- $this->dialog->acl = $this->acl;
- }
-
- /*
- if(isset($_POST['AddRepository'])){
- $this->dialog = new servRepositorySetup($this->config,$this->dn);
- $this->dialog->acl = $this->acl;
+ $this->dialog->parent = $this;
}
- */
if(isset($_POST['repository_setup_save'])){
$this->dialog->save_object();
$divlist = new divList("repositories");
$divlist->SetEntriesPerPage(0);
$divlist->setHeight(400);
+ $divlist->SetPluginMode();
$divlist->setHeader(array(array("string"=>_("Release"),"attach"=>"style='width:80px;'"),
array("string"=>_("Sections")),
$link = "<a href='?plug=".$_GET['plug']."&act=open&id=%s'>%s</a>";
$edit = "<input type='image' value='%s' name='edit_%s' src='images/edit.png'> ";
- $delete = "<input type='image' value='%s' name='delete_%s' src='images/edittrash.png'>";
+
+ /* Hide delete icon, if delete is not allowed */
+ if($this->acl_is_removeable()){
+ $delete = "<input type='image' value='%s' name='delete_%s' src='images/edittrash.png'>";
+ }else{
+ $delete = "<img src='images/empty.png' alt=' '>";
+ }
foreach($this->repositories as $name => $reps){
$str = " ";
-
if(preg_match("/".str_replace("*",".*",$this->regex)."/",$reps['Release'])){
-
-
foreach($reps['Sections'] as $sec){
$str.=$sec." ";
}
-
$divlist->AddEntry(array(
- array("string"=>sprintf($link,base64_encode($name),$name),"attach"=>"style='width:80px;'"),
- array("string"=>sprintf($link,base64_encode($name),_("Sections")." :".$str)),
- array("string"=>preg_replace("/%s/",base64_encode($name),$edit.$delete),"attach"=>"style='border-right:0px;width:55px;text-align:right;'")
+ array("string"=>sprintf($link,base64_encode($name),$name),"attach"=>"style='width:80px;'"),
+ array("string"=>sprintf($link,base64_encode($name),_("Sections")." :".$str)),
+ array("string"=>preg_replace("/%s/",base64_encode($name),$edit.$delete),"attach"=>"style='border-right:0px;width:55px;text-align:right;'")
));
}
}
return($display);
}
- function remove_from_parent()
- {
- plugin::remove_from_parent();
-
- /* Remove status flag, it is not a memeber of
- this->attributes, so ensure that it is deleted too */
- if(!empty($this->StatusFlag)){
- $this->attrs[$this->StatusFlag] = array();
- }
-
- $ldap= $this->config->get_ldap_link();
- $ldap->cd ($this->config->current['BASE']);
-
- $ldap->cat($this->dn, array('dn'));
-
- if($ldap->count()){
- $ldap->cd($this->dn);
- $this->cleanup();
- $ldap->modify ($this->attrs);
-
- $this->handle_post_events("modify");
- }
- }
-
/* Save data to object */
function save_object()
{
/* Call common method to give check the hook */
$message= plugin::check();
-
return ($message);
}
/* Save to LDAP */
function save()
{
+ if(!$this->fai_activated) return;
+
plugin::save();
$arr = array();
$ldap->add($this->attrs);
$this->handle_post_events("add");
}
- }
-
- /* Get updates for status flag */
- function updateStatusState()
- {
- if(empty($this->StatusFlag)) return;
- $attrs = array();
- $flag = $this->StatusFlag;
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->cn);
- $ldap->cat($this->dn,array($flag));
- if($ldap->count()){
- $attrs = $ldap->fetch();
- }
- if(isset($attrs[$flag][0])){
- $this->$flag = $attrs[$flag][0];
+ if($this->initially_was_account){
+ new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
+ }else{
+ new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
}
}
function getListEntry()
{
- $this->updateStatusState();
- $flag = $this->StatusFlag;
- if(empty($flag)){
- $fields['Status'] = "";
- }else{
- $fields['Status'] = $this->$flag;
- }
+ $fields = goService::getListEntry();
$fields['Message'] = _("Repository service");
- $fields['AllowStart'] = true;
- $fields['AllowStop'] = true;
- $fields['AllowRestart'] = true;
- $fields['AllowRemove']= true;
$fields['AllowEdit'] = true;
+ $fields['AllowStart'] = $fields['AllowStop'] = $fields['AllowRestart'] = false;
return($fields);
}
-
- /* Directly save new status flag */
- function setStatus($value)
+ /* Return plugin informations for acl handling */
+ function plInfo()
{
- if($value == "none") return;
- if(!$this->initially_was_account) return;
- if(empty($this->StatusFlag)) return;
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->dn);
- $ldap->cat($this->dn,array("objectClass"));
- if($ldap->count()){
-
- $tmp = $ldap->fetch();
- for($i = 0; $i < $tmp['objectClass']['count']; $i ++){
- $attrs['objectClass'][] = $tmp['objectClass'][$i];
- }
- $flag = $this->StatusFlag;
- $attrs[$flag] = $value;
- $this->$flag = $value;
- $ldap->modify($attrs);
- show_ldap_error($ldap->get_error(), sprintf(_("Set status flag for server services/repository with dn '%s' failed."),$this->dn));
- $this->action_hook();
- }
+ return (array(
+ "plShortName" => _("Repository"),
+ "plDescription" => _("Repository service")." ("._("Services").")",
+ "plSelfModify" => FALSE,
+ "plDepends" => array(),
+ "plPriority" => 84,
+ "plSection" => array("administration"),
+ "plCategory" => array("server"),
+
+ "plProvidedAcls"=> array(
+ "cn" => _("Name"),
+ "start" => _("Start"),
+ "stop" => _("Stop"),
+ "restart" => _("Restart"),
+ "Release" => _("Releases"),
+ "Section" => _("Sections"),
+ "ParentServer" => _("Parent server"),
+ "Url" => _("Url"))
+ ));
}
-
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: