1 <?php
3 class webdavAccount extends plugin
4 {
5 /* Definitions */
6 var $plHeadline= "WebDAV";
7 var $plDescription= "This does something";
9 /* attribute list for save action */
10 var $attributes= array();
11 var $objectclasses= array("gosaWebdavAccount");
13 function webdavAccount ($config, $dn= NULL)
14 {
15 plugin::plugin ($config, $dn);
16 }
18 function execute()
19 {
20 /* Call parent execute */
21 // plugin::execute();
23 /* Show tab dialog headers */
24 $display= "";
26 /* Show main page */
27 $smarty= get_smarty();
29 if ($this->is_account){
30 $smarty->assign("webdavState", "checked");
31 } else {
32 $smarty->assign("webdavState", "");
33 $smarty->assign("wstate", "disabled");
34 }
36 if ($this->parent != NULL){
37 $smarty->assign("tabbed", 1);
38 }
40 $smarty->assign('webdavAccountACL', chkacl($this->acl, 'webdavAccount'));
42 $display.= $smarty->fetch (get_template_path('webdav.tpl', TRUE, dirname(__FILE__)));
43 return ($display);
44 }
46 function remove_from_parent()
47 {
48 if(chkacl($this->acl,"webdavAccount")==""){
49 /* Cancel if there's nothing to do here */
50 if (!$this->initially_was_account){
51 return;
52 }
54 plugin::remove_from_parent();
55 $ldap= $this->config->get_ldap_link();
57 $ldap->cd($this->dn);
58 @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,
59 $this->attributes, "Save");
60 $this->cleanup();
61 $ldap->modify ($this->attrs);
63 show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/webDAV account with dn '%s' failed."),$this->dn));
65 /* Optionally execute a command after we're done */
66 $this->handle_post_events('remove');
67 }
68 }
71 /* Save data to object */
72 function save_object()
73 {
74 /* Do we need to flip is_account state? */
75 if (isset($_POST['connectivityTab'])){
76 if (isset($_POST['webdav'])){
77 if (!$this->is_account && $_POST['webdav'] == "B"){
78 $this->is_account= TRUE;
79 }
80 } else {
81 $this->is_account= FALSE;
82 }
83 }
85 plugin::save_object();
86 if (isset($_POST["WEBDAVStatus"])){
87 $this->WEBDAVStatus = "disabled";
88 } else {
89 $this->WEBDAVStatus = "enabled";
90 }
91 }
94 /* Save to LDAP */
95 function save()
96 {
97 if(chkacl($this->acl,"webdavAccount")==""){
98 plugin::save();
100 /* Write back to ldap */
101 $ldap= $this->config->get_ldap_link();
102 $ldap->cd($this->dn);
103 $this->cleanup();
104 $ldap->modify ($this->attrs);
106 show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/webDAV account with dn '%s' failed."),$this->dn));
108 /* Optionally execute a command after we're done */
109 if ($this->initially_was_account == $this->is_account){
110 if ($this->is_modified){
111 $this->handle_post_events("mofify");
112 }
113 } else {
114 $this->handle_post_events("add");
115 }
116 }
117 }
119 /* Return plugin informations for acl handling
120 #FIXME This is only an enable/disable checkbox for this account, there is possibly a better solution available later */
121 function plInfo()
122 {
123 return (array(
124 "plShortName" => _("WebDAV"),
125 "plDescription" => _("WebDAV account"),
126 "plSelfModify" => TRUE,
127 "plDepends" => array("connectivity"),
128 "plPriority" => 9, // Position in tabs
129 "plSection" => "personal", // This belongs to personal
130 "plCategory" => array("gosaAccount"),
131 "plOptions" => array(),
133 "plProvidedAcls" => array(
134 "gosaWebdavAccount" => "!!! FIXME "._("WebDAV account"))
135 ));
136 }
137 }
139 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
140 ?>