diff --git a/gosa-core/plugins/addons/gotomasses/class_goto_task.inc b/gosa-core/plugins/addons/gotomasses/class_goto_task.inc
index 1fa84d1cb1c88b2cb8e26a8fb28a381debb6901b..74663a13d442eb8fec582d3944ab39888ac16ed9 100644 (file)
var $plDescription = "This does something";
var $parent = NULL;
var $plDescription = "This does something";
var $parent = NULL;
-
- var $Minute = "*";
- var $Hour = "*";
- var $Day = "*";
- var $Month = "*";
- var $Weekday = "*";
- var $Action = "install";
-
- var $Zone = "";
- var $Section = "";
-
- var $Zones = array();
- var $Sections = array();
-
- var $Comment = "";
- var $OGroup = "keep_current";
- var $OGroups = array();
- var $Target = array();
- var $Initial_Target = array();
- var $Actions = array();
- var $new = FALSE;
- var $ID = 0;
- var $TASK_ID =0;
- var $attributes = array("ID","TASK_ID","Zone","Section","OGroup","Minute","Hour","Day",
- "Month","Weekday","Action","Comment","Target","Initial_Target");
-
- var $configure_dhcp = FALSE;
- var $configure_dns = FALSE;
+ var $data = array();
+ var $attributes = array("MACADDRESS","ID","STATUS","HEADERTAG");
function goto_task(&$config, &$parent, $data = array())
{
/* Set parent object */
$this->parent = &$parent;
function goto_task(&$config, &$parent, $data = array())
{
/* Set parent object */
$this->parent = &$parent;
+ $this->data = $data;
/* Intialize plugin */
$this->config = &$config;
/* Intialize plugin */
$this->config = &$config;
- if(count($data)){
- $tmp = $this->get_array_values();
- foreach($this->attributes as $attr){
- if(!isset($data[$attr])){
- trigger_error("Missing parameter: '".$attr."' for goto_task contruction.");
- }else{
- $this->$attr = $data[$attr];
- }
- }
- }else{
- $this->new = TRUE;
- }
-
- if(!empty($this->Zone) && !preg_match("/^\"\"$/",$this->Zone)){
- $this->configure_dns = TRUE;
- }
- if(!empty($this->Section) && !preg_match("/^\"\"$/",$this->Section)){
- $this->configure_dhcp = TRUE;
- }
-
- /* Set dns and dhcp attributes */
- foreach(getAvailableZones($this->config) as $zone){
- $name = preg_replace("#^[^/]+/#","",$zone);
- $this->Zones[$name] = $zone;
- }
- $this->Sections = $this->get_dhcp_sections();
-
- /* Create ogroup select list */
- $this->OGroups = array("\"\"" => "["._("Keep current")."]");
- $this->OGroups = array_merge($this->OGroups,$this->parent->get_object_groups());
-
- /* Prepare list of available actions */
- $this->Actions = $this->parent->get_actions();
}
function execute()
{
}
function execute()
{
- /********
- * Handle Posts
- ********/
-
- /* Handle Target options */
- foreach($_POST as $name => $value){
- if(preg_match("/^remove_/",$name)){
- $value = preg_replace("/^remove_([0-9]*)_(x|y)$/i","\\1",$name);
- if(isset($this->Target[$value]) && $this->Action != "initial_install"){
- unset($this->Target[$value]);
- }elseif(isset($this->Initial_Target[$value]) && $this->Action == "initial_install"){
- unset($this->Initial_Target[$value]);
- }
- }
- }
-
- if($this->Action != "initial_install"){
-
- /* Add target */
- if($this->ID == 0 && isset($_POST['add_target']) && !empty($_POST['target_text'])){
- $target = get_post("target_text");
- if($this->is_valid_target($target) && !in_array($target,$this->Target)){
- $this->Target[] = $target;
- }else{
- print_red(_("You must specify a valid MAC address or host name."));
- }
- }
- }else{
-
- /* Add target */
- if($this->ID ==0 && isset($_POST['add_target']) && !empty($_POST['task_MAC'])){
- $MAC = $_POST['task_MAC'];
- $NAME= "";
- $IP = "";
- $DNS = "";
- $DHCP = "";
- if(isset($_POST['task_Name'])){
- $NAME = $_POST['task_Name'];
- }
- if(isset($_POST['task_IP']) && tests::is_ip($_POST['task_IP'])){
- $IP = $_POST['task_IP'];
- }
- if(isset($_POST['configure_dns']) && isset($_POST['Zone']) && isset($this->Zones[$_POST['Zone']])){
- $DNS = $_POST['Zone'];
- }
- if(isset($_POST['configure_dhcp']) && isset($_POST['Section']) && isset($this->Sections[$_POST['Section']])){
- $DHCP = $_POST['Section'];
- }
- if(tests::is_mac($MAC)){
- $this->Initial_Target[] = array("MAC"=>$MAC,"IP"=>$IP,"NAME"=>$NAME);
- }
- }
- }
-
- /* Add via csv */
- if($this->ID == 0 && isset($_FILES['import_file'])){
- $file = $_FILES['import_file']['tmp_name'];
- if(file_exists($file) && is_readable($file)){
- $str ="";
- $fp = fopen($file,"r");
- while(!feof($fp)){
- $line = fgets($fp,512);
- $tmp = preg_split("/(,|;)/",$line);
-
- $MAC = $IP = $NAME;
- if(isset($tmp[0])){
- $MAC = trim($tmp[0]);
- }
- if(isset($tmp[1])){
- $IP = trim($tmp[1]);
- }
- if(isset($tmp[2])){
- $NAME = trim($tmp[2]);
- }
- if(tests::is_mac($MAC)){
- $this->Initial_Target[] = array("MAC"=>$MAC,"IP"=>$IP,"NAME"=>$NAME);
- }
- }
- }
- }
-
- /********
- * Add target from list
- ********/
-
- /* If add from list is was requsted, display this list */
- if(isset($_POST['add_from_list'])){
- $this->dialog = new target_list($this->config,$this->Target);
- }
-
- /* Save selected objects as target */
- if(isset($_POST['SaveMultiSelectWindow']) && is_object($this->dialog)){
- $this->dialog->save_object();
- $ret = $this->dialog->save();
- foreach($ret as $entry){
- $this->Target[] = $entry['cn'][0];
- }
- $this->dialog = FALSE;
- }
-
- /* Cancel object listing */
- if(isset($_POST['CloseMultiSelectWindow'])){
- $this->dialog = FALSE;
- }
-
- /* Display object Listing */
- if(is_object($this->dialog)){
- $this->dialog->save_object();
- return($this->dialog->execute());
- }
-
- /********
- * Display this plugin
- ********/
-
- $divlist = new divlist("goto_task");
-# $divlist->SetPluginMode();
- $divlist->setHeight(200);
- $divlist->SetWidth("100%");
- $divlist->SetEntriesPerPage(0);
-
- $acl_target = $this->parent->getacl("Target");
- if(preg_match("/w/i",$acl_target)){
- $field_del = array("string" => "<input type='image' src='images/edittrash.png' name='remove_%KEY%'>" ,
- "attach" => "style='width:44px;border-right:0px;'");
- }else{
- $field_del = array("string" => "",
- "attach" => "style='width:44px;border-right:0px;'");
- }
-
- /* Add entries to divlist */
- if($this->Action == "initial_install"){
- $divlist->SetHeader(array(
- array("string" => _("Target systems") ,"attach" => "style='width:120px;'"),
- array("string" => _("IP") , "attach" => "style='width:90px;'"),
- array("string" => _("Name") , "attach" => "style='width:150px;'"),
- array("string" => _("Actions") , "attach" => "style='width:44px;border-right:0px;text-align:right;'")));
- foreach($this->Initial_Target as $key => $target){
- $field1 = array("string" => $target['MAC'] ,"attach" => "style='width:120px;'");
- $field2 = array("string" => $target['IP'] ,"attach" => "style='width:90px;'");
- $field3 = array("string" => $target['NAME'] ,"attach" => "style='width:150px;'");
- $divlist->AddEntry(array($field1,$field2,$field3,preg_replace("/%KEY%/",$key,$field_del)));
- }
- }else{
- $divlist->SetHeader(array(
- array("string" => "Target", "attach" => "style=''"),
- array("string" => "Actions" , "attach" => "style='width:44px;border-right:0px;text-align:right;'")));
- foreach($this->Target as $key => $target){
- $field1 = array("string" => $target);
- $divlist->AddEntry(array($field1,preg_replace("/%KEY%/",$key,$field_del)));
- }
- }
-
$smarty = get_smarty();
$smarty = get_smarty();
+ $smarty->assign("Actions",$this->parent->get_actions());
foreach($this->attributes as $attr){
foreach($this->attributes as $attr){
- $smarty->assign($attr."ACL", $this->parent->getacl($attr));
- $smarty->assign($attr,$this->$attr);
- }
-
- $smarty->assign("Zones", $this->Zones);
- $smarty->assign("Sections", $this->Sections);
-
- $smarty->assign("ID",$this->ID);
-
- $smarty->assign("Zone", $this->Zone);
- $smarty->assign("Section", $this->Section);
-
- $smarty->assign("configure_dhcp", $this->configure_dhcp);
- $smarty->assign("configure_dns", $this->configure_dns);
-
- $tmp = $this->get_array_values();
- $smarty->assign("JS" , session::get('js'));
- $smarty->assign("Minutes" , $tmp['Minute']);
- $smarty->assign("Hours" , $tmp['Hour']);
- $smarty->assign("Days" , $tmp['Day']);
- $smarty->assign("Months" , $tmp['Month']);
- $smarty->assign("Weekdays", $tmp['Weekday']);
- $smarty->assign("OGroups" , $this->OGroups);
- $smarty->assign("Actions" , $this->Actions);
- $smarty->assign("Target_list" , $divlist->DrawList());
- $smarty->assign("new" , $this->new);
- return ($smarty->fetch (get_template_path('goto_task.tpl', TRUE)));
- }
-
-
- function create_tree($arr,$base,$current = "")
- {
- $ret = array();
- foreach($arr as $r => $name){
- $base_part = str_replace($base,"",$r);
- if(preg_match("/^[a-z]*=".normalizePreg($name)."(|,)$/i",$base_part)){
- $ret[$r] = $current.$name;
- $tmp = $this->create_tree($arr,$r,$current.". ");
- foreach($tmp as $sub_key => $sub_name){
- $ret[$sub_key] = $sub_name;
- }
- }
- }
- return($ret);
- }
-
-
-
- function get_dhcp_sections()
- {
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->config->current['BASE']);
- $ldap->search("(objectClass=dhcpService)",array("dhcpPrimaryDN"));
-
- $tmp = array();
- $tmp2 = array();
-
- $dhcp_dns = array();
- while($attr = $ldap->fetch()){
- $dhcp_dns[$attr['dn']] = $attr['dhcpPrimaryDN'][0];
- }
-
- foreach($dhcp_dns as $key => $pri_dns){
- $ldap->cat($pri_dns,array("cn"));
- $tmp = $ldap->fetch();
- $dhcp_dns[$key] = $tmp['cn'][0];
- }
-
- foreach($dhcp_dns as $dn => $cn){
- $ldap->cd($dn);
- $ldap->search("(|(objectClass=dhcpService)(objectClass=dhcpGroup)".
- "(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork))",array("cn"));
- $tmp = array();
- while($attr = $ldap->fetch()){
- $tmp[$attr['dn']] = $attr['cn'][0];
- }
- $tmp2 = $this->create_tree($tmp,preg_replace("/^[^,]+,/i","",$dn),"(".$cn.") ");
- }
- $ret = array();
- foreach($tmp2 as $key => $label){
- $ret[$tmp[$key]] = $label;
- }
- return($ret);
- }
-
-
- /* check given values */
- function check()
- {
- $message = plugin::check();
- $tmp = array(
- "OGroup" => _("Object group") ,"Minute" => _("Minute"),
- "Hour" => _("Hour") ,"Day" => _("Day"),
- "Month" => _("Month") ,"Weekday"=> _("Week day"),
- "Action" => _("Action") ,"Comment"=> _("Description"));
-
- foreach($tmp as $name => $desc){
- if(empty($this->$name) && $this->$name != 0){
- $message[] = sprintf(_("The given value for attribute '%s' is invalid."),$desc);
+ if(isset($this->data[$attr])){
+ $smarty->assign($attr,$this->data[$attr]);
+ }else{
+ $smarty->assign($attr,"");
}
}
}
}
- if(count($this->Target) == 0 && $this->Action != "initial_install"){
- $message[] = sprintf(_("You must specify at least one target"));
- }
- if(count($this->Initial_Target) == 0 && $this->Action == "initial_install"){
- $message[] = sprintf(_("You must specify at least one target"));
- }
- return($message);
- }
-
-
- /* Map acl function, to be able to use plugin::save_object() */
- function acl_is_writeable($attribute,$skip_write = FALSE)
- {
- return($this->parent->acl_is_writeable($attribute,$skip_write));
+ return ($smarty->fetch (get_template_path('goto_task.tpl', TRUE)));
}
function save_object()
{
}
function save_object()
{
- if(isset($_POST['goto_task_posted'])){
-
- if($this->Action == "initial_install"){
- if(isset($_POST['configure_dns'])){
- $this->configure_dns = TRUE;
- if(isset($_POST['Zone'])){
- $this->Zone = get_post("Zone");
- }
- }else{
- $this->Zone = "\"\"";
- $this->configure_dns = FALSE;
- }
-
- if(isset($_POST['configure_dhcp'])){
- $this->configure_dhcp = TRUE;
- if(isset($_POST['Section'])){
- $this->Section = get_post("Section");
- }
- }else{
- $this->configure_dhcp = FALSE;
- $this->Section = "\"\"";
- }
+ if(isset($_POST['HeaderTag'])){
+ $possible_tags = $this->parent->get_actions();
+ $tag = $_POST['HeaderTag'];
+ if(isset($possible_tags[$tag])){
+ $this->data['HEADERTAG'] = $tag;
}
}
- plugin::save_object();
}
}
- }
-
-
- /* Check if given target is vald.
- * It must either be a valid MAC address or an existing object group
- */
- function is_valid_target($str)
- {
- if(tests::is_mac($str)){
- return(TRUE);
- }else{
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->config->current['BASE']);
- $ldap->search("(&(objectClassgosaGroupOfNames)(cn=".$str."))",array("cn"));
- if($ldap->count()){
- return(TRUE);
+ foreach(array("status","macaddress") as $attr){
+ if(isset($_POST[$attr])){
+ $this->data[strtoupper($attr)] = $_POST[$attr];
}
}
}
function save()
{
}
}
}
function save()
{
- $tmp = array();
- foreach($this->attributes as $attr){
- $tmp[$attr] = $this->$attr;
- }
-
- if($this->Action != "initial_install" || !$this->configure_dns){
- $tmp['Zone'] = "\"\"";
- }
- if($this->Action != "initial_install" || !$this->configure_dhcp){
- $tmp['Section'] = "\"\"";
+ $tmp = array();
+ foreach(array("STATUS","MACADDRESS","HEADERTAG") as $attr){
+ if(isset($this->data[$attr])){
+ $tmp[$attr] = $this->data[$attr];
+ }
}
return($tmp);
}
}
return($tmp);
}
-
-
- /* Return values for listboxes.
- */
- function get_array_values()
- {
- $ret = array();
-
- /* Create minute array */
- $Minute = array( "*" => "*",
- "*/1" => "*/1",
- "*/3" => "*/3",
- "*/5" => "*/5",
- "*/10" => "*/10",
- "*/15" => "*/15",
- "*/30" => "*/30",
- "*/45" => "*/45",
- "*/60" => "*/60");
- for($i = 0; $i < 60 ; $i ++){
- $Minute[$i] = $i;
- }
-
- /* Create hour array */
- $Hour = array( "*" => "*");
- for($i = 1 ; $i < 24 ; $i ++ ){
- $Hour["*/".$i] = "*/".$i;
- }
- for($i = 0 ; $i < 24 ; $i ++ ){
- $Hour[$i] = $i;
- }
-
- /* Create hour array */
- $Day = array( "*" => "*");
- for($i = 1 ; $i < 32 ; $i ++ ){
- $Day["*/".$i] = "*/".$i;
- }
- for($i = 1 ; $i < 32 ; $i ++ ){
- $Day[$i] = $i;
- }
-
- /* Create month array */
- $Month = array( "*" => "*");
- for($i = 1 ; $i <= 12 ; $i ++ ){
- $Month["*/".$i] = "*/".$i;
- }
- for($i = 1 ; $i <= 12 ; $i ++ ){
- $Month[$i] = $i;
- }
-
- /* Create week day array */
- $Weekday = array( "*" => "*");
- for($i = 1 ; $i <= 7 ; $i ++ ){
- $Weekday["*/".$i] = "*/".$i;
- }
- for($i = 0 ; $i <= 7 ; $i ++ ){
- $Weekday[$i] = $i;
- }
-
- foreach(array("Minute","Weekday","Hour","Day","Month") as $var){
- $ret[$var] = $$var;
- }
- return($ret);
- }
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>