X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fgofon%2Fconference%2Fclass_phoneConferenceManagment.inc;h=ee70b9fa4b15aeceefc5180869cb059102827f0b;hb=603ec2c00fb894306234558af3df22dff11f7b85;hp=3ffdbd874f11d0b6fdb6cee59e8e2bc526e5bf45;hpb=4f3071d123be4d4e9831b78e12098f649fbeedce;p=gosa.git diff --git a/plugins/gofon/conference/class_phoneConferenceManagment.inc b/plugins/gofon/conference/class_phoneConferenceManagment.inc index 3ffdbd874..ee70b9fa4 100644 --- a/plugins/gofon/conference/class_phoneConferenceManagment.inc +++ b/plugins/gofon/conference/class_phoneConferenceManagment.inc @@ -21,32 +21,32 @@ require "tabs_conference.inc"; class phoneConferenceManagment extends plugin { - /* Definitions */ - var $plHeadline = "Phone conference"; - var $plDescription = "Management"; + /* Definitions */ + var $plHeadline = "Phone conferences"; + var $plDescription = "Management"; - /* CLI vars */ - var $cli_summary = "Handling of LDAP subtrees"; - var $cli_description = "Some longer text\nfor help"; - var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); + /* CLI vars */ + var $cli_summary = "Handling of LDAP subtrees"; + var $cli_description = "Some longer text\nfor help"; + var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); - /* Headpage attributes */ - var $conferences = array(); + /* Headpage attributes */ + var $conferences = array(); - /* attribute list for save action */ - var $attributes = array(); - var $objectclasses = array(); + /* attribute list for save action */ + var $attributes = array(); + var $objectclasses = array(); var $conftab = false; var $departments =array(); - /* Initialise Class */ - function phoneConferenceManagment ($config, $ui) - { - $this->ui = $ui; - $this->dn = ""; - $this->config = $config; - + /* Initialise Class */ + function phoneConferenceManagment ($config, $ui) + { + $this->ui = $ui; + $this->dn = ""; + $this->config = $config; + /* Get global filter config */ if (!isset($_SESSION["conferencefilter"])){ $base= get_base_from_people($ui->dn); @@ -55,21 +55,33 @@ class phoneConferenceManagment extends plugin "regex" => "*"); $_SESSION["conferencefilter"] = $conferencefilter; } + } + + /* Execute class and display something */ + function execute() + { + /* Reload departments */ + $this->config->departments = get_departments(); + $smarty = get_smarty(); + $display = ""; + $s_action = ""; // Will contain an action, like del or edit + $s_entry = ""; // The entry name for edit delete -... + $conferencefilter = $_SESSION["conferencefilter"]; + + if(isset($_POST['regexit'])){ + $conferencefilter['regex']=$_POST['regexit']; + } + + if(isset($_GET['search'])){ + if($_GET['search']=="*"){ + $conferencefilter['regex']=$_GET['search']; + }else{ + $conferencefilter['regex']=$_GET['search']."*"; + } + } + + $smarty->assign("regex",$conferencefilter['regex']); - - } - - /* Execute class and display something */ - function execute() - { - /* Reload departments */ - $this->config->departments = get_departments(); - $smarty = get_smarty(); - $display = ""; - $s_action = ""; // Will contain an action, like del or edit - $s_entry = ""; // The entry name for edit delete -... - $conferencefilter = $_SESSION["conferencefilter"]; - /* Start for New List Managment */ if(isset($_GET['act'])&&($_GET['act']=="dep_open")){ $s_action="open"; @@ -80,7 +92,7 @@ class phoneConferenceManagment extends plugin foreach($_POST as $key => $post){ if(preg_match("/.*new.*/i",$key)){ $s_action = "new"; - // Post for delete + // Post for delete }elseif(preg_match("/conf_del.*/",$key)){ $s_action = "del"; $s_entry = preg_replace("/conf_".$s_action."_/i","",$key); @@ -99,6 +111,7 @@ class phoneConferenceManagment extends plugin } } + /* Edit Entry */ if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ $s_action = "edit"; $s_entry = $_GET['id']; @@ -108,13 +121,14 @@ class phoneConferenceManagment extends plugin if(isset($_POST['depselect']) && $_POST['depselect']){ $conferencefilter['depselect']= $_POST['depselect']; } - + /* Homebutton is posted */ if($s_action=="home"){ $conferencefilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn)); $conferencefilter['depselect']=(preg_replace("/^[^,]+,/","",$conferencefilter['depselect'])); } - + + /* back to root */ if($s_action=="root"){ $conferencefilter['depselect']=($this->config->current['BASE']); } @@ -198,18 +212,25 @@ class phoneConferenceManagment extends plugin /* Register conftab to trigger edit dialog */ $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn); - $this->conftab->set_acl(array(":all")); + $this->conftab->set_acl($this->acl); $_SESSION['objectinfo']= $this->dn; } + /* Insert new entry*/ if($s_action == "new"){ + $this->dn= "new"; + /* Set up the users ACL's for this 'dn' */ + $this->acl= get_permissions ($this->dn, $this->ui->subtreeACL); $this->dn= "new"; $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn); + $this->acl= get_permissions ($this->conftab->dn, $this->ui->subtreeACL); + $this->conftab->set_acl($this->acl); $this->conftab->set_acl(array(':all')); + $_SESSION['objectinfo']= $this->dn; } + /* Edit finished, check and save changes */ if (isset($_POST['edit_finish'])){ - /* Check tabs, will feed message array */ $this->conftab->last= $this->conftab->current; $this->conftab->save_object(); @@ -227,16 +248,19 @@ class phoneConferenceManagment extends plugin } $this->conftab->save (); + del_lock ($this->conftab->dn);; unset ($this->conftab); $this->conftab= NULL; unset ($_SESSION['objectinfo']); } else { show_errors($message); } + + $this->reload(); } - + /* if edit or new, show dialog */ - if($this->conftab){ + if($this->conftab){ $display= $this->conftab->execute(); /* Don't show buttons if tab dialog requests this */ @@ -250,15 +274,8 @@ class phoneConferenceManagment extends plugin return ($display); } - $this->reload(); - $listhead = "
-   -
"; - - - - $options= ""; + /* Header + Departmentlist*/ + $options= ""; foreach ($this->config->idepartments as $key => $value){ if ($conferencefilter['depselect'] == $key){ $options.= ""; @@ -267,34 +284,38 @@ class phoneConferenceManagment extends plugin } } - $listhead = "
". + $listhead = "
". "  ". "  ". "  ". "  ". - "  ". + "  ". "  ". _("Current base")." ". "  ". "
"; - + /* Images for delete / edit */ $actions = ""; - $actions.= ""; - $linkopen= "%s"; + $actions.= ""; + + $actions2= ""; + /* open an entry */ + $linkopen= "%s"; /* Set Header */ - $divlist = new divlist("conferenceTabs"); - $divlist->SetSummary(_("This table displays all available conference rooms.")); - $divlist->SetEntriesPerPage(20); - $divlist->SetHeader(array( + $divlist = new divlist("conferenceTabs"); + $divlist->SetSummary(_("This table displays all available conference rooms.")); + $divlist->SetEntriesPerPage(20); + $divlist->SetHeader(array( array("string" => " "), - array("string" =>_("Name / nummer")), - array("string" =>_("Actions"), "attach" => "style='text-align: right;border:none'"))); + array("string" =>_("Name - Number")), + array("string" => _("Owner")), + array("string" => _("PIN")), + array("string" =>_("Actions"), "attach" => "style='text-align: right;border:none'"))); - /* Insert departments in divlist*/ + /* Insert departments in divlist*/ foreach($this->departments as $key=> $val){ - if(!isset($this->config->departments[trim($key)])){ $this->config->departments[trim($key)]=""; } @@ -307,55 +328,96 @@ class phoneConferenceManagment extends plugin } } - $field1 = array("string" => "department","attach"=>"style='width:22px;'"); - $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val)); - $field3 = array("string" => " ", "attach" => "style='border:none;width:60px;'"); - + /* Prepare and insert fields*/ + $a_field1 = array("string" => "department","attach"=>"style='width:22px;'"); + $a_field2 = array("string" => sprintf($linkopen,base64_encode($key),$val)); + $a_field3 = array("string" => " "); + $a_field4 = array("string" => " "); + $a_field5 = array("string" => " ", "attach" => "style='text-align: right;border:none'"); - $divlist->AddEntry(array($field1,$field2,$field3)); + /* Add entries */ + $divlist->AddEntry(array($a_field1,$a_field2,$a_field3,$a_field4,$a_field5)); } - + + /* Image shown in divlist */ $userimg = "User"; + + /* Edit entry link*/ $editlink = "%s"; + /* Insert conferneces*/ foreach($this->conferences as $conferencekey => $conference ){ - $field1 = array("string"=>sprintf($userimg,_("Conference"))); - $field2 = array("string"=>sprintf($editlink,$conferencekey,$conference['cn'][0])); - $field3 = array("string"=>preg_replace("/%KEY%/",$conferencekey,$actions)); - $divlist->AddEntry(array($field1,$field2,$field3)); + + if((isset($conference['goFonPIN'][0]))&&($this->ui->dn==$conference['goFonConferenceOwner'][0])){ + $pin = "PIN"; + }else{ + $pin = " "; + } + + if(isset($conference['telephoneNumber'][0])){ + $number = " - ".$conference['telephoneNumber'][0]; + }else{ + $number = "  - ?"; + } + + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($conference['goFonConferenceOwner'][0]); + $data = $ldap->fetch($ldap->cat($conference['goFonConferenceOwner'][0])); + $cn = $data['cn'][0]; + + $a_field1 = array("string"=>sprintf($userimg,_("Conference"))); + + $acl= get_permissions ($conference['dn'], $this->ui->subtreeACL); + $this->acl = get_module_permission($acl, "goFonConference", $conference['dn']); + + if(($this->ui->dn==$conference['goFonConferenceOwner'][0])&&(chkacl($this->acl,"goFonConferenceOwner")=="")){ + $a_field2 = array("string"=>sprintf($editlink,$conferencekey,$conference['cn'][0].$number)); + }else{ + $a_field2 = array("string"=>$conference['cn'][0].$number); + } + $a_field3 = array("string"=> $cn); + $a_field4 = array("string"=> $pin); + + if(($this->ui->dn==$conference['goFonConferenceOwner'][0])&&(chkacl($this->acl,"goFonConferenceOwner")=="")){ + $a_field5 = array("string"=>preg_replace("/%KEY%/",$conferencekey,$actions), "attach" => "style='text-align: right;border:none'"); + }elseif(chkacl($this->acl,"goFonConferenceOwner")==""){ + $a_field5 = array("string"=>preg_replace("/%KEY%/",$conferencekey,$actions2), "attach" => "style='text-align: right;border:none'"); + }else{ + $a_field5 = array("string"=>" ", "attach" => "style='text-align: right;border:none'"); + } + + $divlist->AddEntry(array($a_field1,$a_field2,$a_field3,$a_field4,$a_field5)); } - $smarty->assign("search_image", get_template_path('images/search.png')); - $smarty->assign("tree_image", get_template_path('images/tree.png')); - $smarty->assign("infoimage", get_template_path('images/info.png')); - $smarty->assign("launchimage", get_template_path('images/launch.png')); + $smarty->assign("search_image", get_template_path('images/search.png')); + $smarty->assign("tree_image", get_template_path('images/tree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/launch.png')); $smarty->assign("conferences", $divlist->DrawList()); $smarty->assign("conferencehead", $listhead); - $smarty->assign("deplist", $this->config->idepartments); - $smarty->assign("apply", apply_filter()); - $smarty->assign("alphabet", generate_alphabet()); - $smarty->assign("hint", print_sizelimit_warning()); + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("hint", print_sizelimit_warning()); - $display= $smarty->fetch(get_template_path('headpage.tpl', TRUE)); - return($display); - } + $display= $smarty->fetch(get_template_path('headpage.tpl', TRUE)); + return($display); + } - function reload() - { + /* Reload entries for divlist. + * First, reload all conferences for the current base, with the given regex + * Second, get all departments for the given base and regex + * Convert departments dn + */ + function reload() + { $conferencefilter = $_SESSION["conferencefilter"]; $base = $conferencefilter['depselect']; $regex = $conferencefilter['regex']; - $this->conferences= get_list2($this->ui->subtreeACL, "(objectClass=goFonConference)",TRUE, $base, array("*"), FALSE); - - /* NEW LIST MANAGMENT - * We also need to search for the departments - * So we are able to navigate like in konquerer - */ - - $res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))", - TRUE, $base, array("ou", "description"), TRUE); + $this->conferences=get_list($this->ui->subtreeACL, "(&(|(cn=$regex)(description=$regex))(objectClass=goFonConference))",FALSE, $base, array("*"), TRUE); + $res3=get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",TRUE, $base, array("ou", "description"), TRUE); $this->departments= array(); @@ -371,39 +433,36 @@ class phoneConferenceManagment extends plugin $this->departments[$value['dn']]=$value["description"][0]; } } - /* END NEW LIST MANAGMENT - */ + } + function remove_from_parent() + { + $cfg = new conference($this->config, $this->dn); + $cfg->remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $ldap->recursive_remove(); + + /* Optionally execute a command after we're done */ + $this->postremove(); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".$this->dn."))", array("cn")); + while ($ldap->fetch()){ + $og= new conftab($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } - } - function remove_from_parent() - { - $ldap= $this->config->get_ldap_link(); - $ldap->cd ($this->dn); - $ldap->recursive_remove(); - - /* Optionally execute a command after we're done */ - $this->postremove(); - - /* Delete references to object groups */ - $ldap->cd ($this->config->current['BASE']); - $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".$this->dn."))", array("cn")); - while ($ldap->fetch()){ - $og= new conftab($this->config, $ldap->getDN()); - unset($og->member[$this->dn]); - $og->save (); - } - - } - - function remove_lock() - { - if (isset($this->dn)){ - del_lock ($this->dn); - } - } + function remove_lock() + { + if (isset($this->dn)){ + del_lock ($this->dn); + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: