diff --git a/plugins/admin/applications/class_applicationGeneric.inc b/plugins/admin/applications/class_applicationGeneric.inc
index 2b5e5a645a9053fe48a138493570d2c62e3eea51..746dbd117f842d47d44b3d5e20098cbe8af7dfde 100644 (file)
var $isReleaseApplikation = false;
- function application ($config, $dn= NULL)
+ function application ($config, $dn= NULL, $parent= NULL)
{
- plugin::plugin ($config, $dn);
+ plugin::plugin ($config, $dn, $parent);
$tmp = search_config($this->config->data,"faiManagement","CLASS");
if(!empty($tmp)) {
$this->is_account= TRUE;
if ($this->dn == "new"){
- if(isset($_SESSION['appfilter']['depselect'])){
- $this->base=$_SESSION['appfilter']['depselect'];
+ if(isset($_SESSION['CurrentMainBase'])){
+ $this->base= $_SESSION['CurrentMainBase'];
}else{
$ui= get_userinfo();
$this->base= dn2base($ui->dn);
$smarty= get_smarty();
+ if(isset($_POST['download'])){
+ header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+ header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
+ header("Cache-Control: no-cache");
+ header("Pragma: no-cache");
+ header("Cache-Control: post-check=0, pre-check=0");
+ header("Content-type: application/octet-stream");
+ header( "Content-disposition: attachment; filename=".$this->cn.".gotoLogonScript" );
+ echo $this->gotoLogonScript;
+ exit();
+ }
+
/* Do we represent a valid group? */
if (!$this->is_account && $this->parent == NULL){
$display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\"> <b>".
$head = $this->generateTemplate();
$this->gotoLogonScript= $this->generateTemplate().preg_replace('/.*### END HEADER ###/s', '', $this->gotoLogonScript);
- if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile']))){
+ if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile'])) && chkacl($this->acl,"gotoLogonScript") == ""){
$str = file_get_contents($_FILES['ScriptFile']['tmp_name']);
$this->gotoLogonScript = $str;
}
$smarty->assign("namemode", "readonly");
$smarty->assign("selectmode", "disabled");
}
+
+ /* Base select dialog */
+ $once = true;
+ foreach($_POST as $name => $value){
+ if(preg_match("/^chooseBase/",$name) && $once && chkacl($this->acl,"base") == ""){
+ $once = false;
+ $this->dialog = new baseSelectDialog($this->config);
+ $this->dialog->setCurrentBase($this->base);
+ }
+ }
+
+ /* Dialog handling */
+ if(is_object($this->dialog)){
+ /* Must be called before save_object */
+ $this->dialog->save_object();
+
+ if($this->dialog->isClosed()){
+ $this->dialog = false;
+ }elseif($this->dialog->isSelected()){
+ $this->base = $this->dialog->isSelected();
+ $this->dialog= false;
+ }else{
+ return($this->dialog->execute());
+ }
+ }
/* Get random number for pictures */
srand((double)microtime()*1000000);
$smarty->assign("rand", rand(0, 10000));
/* Variables */
- foreach(array("description", "gosaApplicationExecute", "gosaApplicationName","cn") as $val){
+ foreach(array("description", "gosaApplicationExecute", "gosaApplicationName","cn","gotoLogonScript","gosaApplicationIcon") as $val){
$smarty->assign($val, $this->$val);
$smarty->assign($val."ACL", chkacl($this->acl, $val));
}
+ $smarty->assign("baseACL", chkacl($this->acl,"base"));
/* Checkboxes */
foreach (array("G" => "exec_for_groupmembers", "O" => "overwrite_config",
{
$ldap= $this->config->get_ldap_link();
$ldap->rmDir($this->dn);
+ show_ldap_error($ldap->get_error(), _("Removing application failed"));
/* Optionally execute a command after we're done */
$this->handle_post_events("remove");
$og= new ogroup($this->config, $ldap->getDN());
unset($og->member[$this->dn]);
$og->save ();
+ show_ldap_error($ldap->get_error(), sprintf(_("Removing application from objectgroup '%s' failed"), $og->dn));
}
$ldap->search ("(&(objectClass=posixGroup)(gosaMemberApplication=".$this->cn."))", array("cn"));
while ($attrs= $ldap->fetch()){
$ag= new appgroup($this->config, $ldap->getDN());
$ag->removeApp($this->cn);
$ag->save ();
+ show_ldap_error($ldap->get_error(), sprintf(_("Removing application from group '%s' failed"), $ag->dn));
}
}
}
/* Check for picture upload */
- if (isset($_FILES['picture_file']['name']) && $_FILES['picture_file']['name'] != ""){
+ if (isset($_FILES['picture_file']['name']) && $_FILES['picture_file']['name'] != "" && chkacl($this->acl,"gosaApplicationIcon") == ""){
if (!is_uploaded_file($_FILES['picture_file']['tmp_name'])) {
print_red (_("The specified picture has not been uploaded correctly."));
}
/* Save to LDAP */
function save()
{
+ /* Get application script without header part, to check if we must save the script itself */
+ $script = preg_replace('/.*### END HEADER ###/s', '', $this->gotoLogonScript);
+
plugin::save();
$this->attrs["gosaApplicationIcon"]= $this->gosaApplicationIcon;
/* Write back to ldap */
$ldap= $this->config->get_ldap_link();
- $ldap->cat($this->dn);
+ $ldap->cat($this->dn, array('dn'));
$a= $ldap->fetch();
if (count($a)){
+
+ /* Remove gotoLogonScript if it is empty */
+ if(empty($script)) {
+ $this->attrs['gotoLogonScript'] = array();
+ }
+
$ldap->cd($this->dn);
$this->cleanup();
$ldap->modify ($this->attrs);
$this->handle_post_events("modify");
} else {
+
+ /* Remove gotoLogonScript if it is empty */
+ if(empty($script)) {
+ unset($this->attrs['gotoLogonScript']);
+ }
+
$ldap->cd($this->config->current['BASE']);
$ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
$ldap->cd($this->dn);
$ldap->add($this->attrs);
$this->handle_post_events("add");
}
- show_ldap_error($ldap->get_error());
+ show_ldap_error($ldap->get_error(), _("Saving application failed"));
}
function set_picture($filename)