Changeset 6848
- Timestamp:
- 07/23/12 14:28:41 (11 years ago)
- Location:
- trunk/expressoMail1_2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.functions.inc.php
r6714 r6848 18 18 19 19 $zones = $this->getTimezones(); 20 $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone'] = $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone']? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] : sprintf("%s", array_search("America/Sao_Paulo", $zones));20 $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone'] = isset($GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone']) ? $GLOBALS['phpgw_info']['user']['preferences']['expressoMail']['timezone'] : sprintf("%s", array_search("America/Sao_Paulo", $zones)); 21 21 22 22 $timezone_index = $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['timezone']; -
trunk/expressoMail1_2/inc/class.imap_functions.inc.php
r6818 r6848 4281 4281 { 4282 4282 $this->ldap = new ldap_functions(); 4283 4284 $return = array();4285 4283 $mbox_stream = $this->open_mbox(); 4286 4284 $mbox_acl = imap_getacl($mbox_stream, 'INBOX'); 4287 4285 4288 $i = 0; 4286 $oldAcls = array('d' , 'c' , 'a'); 4287 $newAcls = array('xte','ik', ''); 4288 4289 $return = array(); 4289 4290 foreach ($mbox_acl as $user => $acl) 4290 4291 { 4291 if ($user != $this->username) 4292 if($user == $this->username) 4293 continue; 4294 4295 //Compatibiliza acls no padrão antigo para o novo 4296 $acl = str_replace($oldAcls, $oldAcls, $acl); 4297 4298 $return[$user] = array( 4299 'cn' => $this->ldap->uid2cn($user) , 4300 'acls' => $acl 4301 ); 4302 } 4303 return $return; 4304 } 4305 4306 function setacl($params) 4307 { 4308 $old_users = $this->getacl(); 4309 $new_users = unserialize($params['acls']); 4310 4311 $mbox_stream = $this->open_mbox(); 4312 $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}"; 4313 $mailboxes_list = imap_getmailboxes($mbox_stream, $serverString, "user".$this->imap_delimiter.$this->username."*"); 4314 4315 foreach ($new_users as $user => $value) { 4316 if(isset($old_users[$user]) && $value['acls'] == $old_users[$user]['acls']) 4292 4317 { 4293 $return[$i]['uid'] = $user; 4294 $return[$i]['cn'] = $this->ldap->uid2cn($user); 4295 } 4296 $i++; 4297 } 4298 return $return; 4299 } 4300 4301 function setacl($params) 4302 { 4303 $old_users = $this->getacl(); 4304 if (!count($old_users)) 4305 $old_users = array(); 4306 4307 $tmp_array = array(); 4308 foreach ($old_users as $index => $user_info) 4318 unset($old_users[$user]); 4319 unset($new_users[$user]); 4320 } 4321 } 4322 4323 foreach ($new_users as $user => $value) 4309 4324 { 4310 $tmp_array[$index] = $user_info['uid']; 4311 } 4312 $old_users = $tmp_array; 4313 4314 $users = unserialize($params['users']); 4315 if (!count($users)) 4316 $users = array(); 4317 4318 //$add_share = array_diff($users, $old_users); 4319 $remove_share = array_diff($old_users, $users); 4320 4321 $mbox_stream = $this->open_mbox(); 4322 4323 $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}"; 4324 $mailboxes_list = imap_getmailboxes($mbox_stream, $serverString, "user".$this->imap_delimiter.$this->username."*"); 4325 4326 /*if (count($add_share)) 4325 if (is_array($mailboxes_list)) 4326 { 4327 foreach ($mailboxes_list as $key => $val) 4328 { 4329 $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 4330 $folder = str_replace("&-", "&", $folder); 4331 imap_setacl ($mbox_stream, $folder, "$user", $value['acls']); 4332 4333 } 4334 } 4335 if(isset($old_users[$user])) 4336 unset($old_users[$user]); 4337 } 4338 4339 foreach ($old_users as $user => $value) 4327 4340 { 4328 foreach ($add_share as $index=>$uid) 4329 { 4330 if (is_array($mailboxes_list)) 4331 { 4332 foreach ($mailboxes_list as $key => $val) 4333 { 4334 $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 4335 imap_setacl ($mbox_stream, $folder, "$uid", "lrswipcda"); 4336 } 4337 } 4338 } 4339 }*/ 4340 4341 if (count($remove_share)) 4342 { 4343 foreach ($remove_share as $index=>$uid) 4344 { 4345 if (is_array($mailboxes_list)) 4346 { 4347 foreach ($mailboxes_list as $key => $val) 4348 { 4349 $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 4350 $folder = str_replace("&-", "&", $folder); 4351 imap_setacl ($mbox_stream, $folder, "$uid", ""); 4352 } 4353 } 4354 } 4355 } 4341 if (is_array($mailboxes_list)) 4342 { 4343 foreach ($mailboxes_list as $key => $val) 4344 { 4345 $folder = str_replace($serverString, "", imap_utf7_decode($val->name)); 4346 $folder = str_replace("&-", "&", $folder); 4347 imap_setacl ($mbox_stream, $folder, "$user", ""); 4348 4349 } 4350 } 4351 } 4352 4356 4353 4357 4354 return true; 4358 4355 } 4359 4356 4360 function getaclfromuser($params)4361 {4362 $useracl = $params['user'];4363 $return = array();4364 $mbox_stream = $this->open_mbox();4365 if($params['getShared']){4366 $mbox_acl = imap_getacl($mbox_stream, 'user'.$this->imap_delimiter.$useracl);4367 foreach ($mbox_acl as $user => $acl)4368 {4369 if (($user == $this->username) && ($user != $useracl))4370 {4371 $return[$useracl] = $acl;4372 }4373 }4374 }else {4375 $mbox_acl = imap_getacl($mbox_stream, 'INBOX');4376 foreach ($mbox_acl as $user => $acl)4377 {4378 if (($user != $this->username) && ($user == $useracl))4379 {4380 $return[$user] = $acl;4381 }4382 }4383 }4384 if(count($return) == 0)4385 $return[$useracl] = 'false';4386 4387 return $return;4388 }4389 4357 4390 4358 function getacltouser($user, $decode = false) … … 4408 4376 else 4409 4377 return ''; 4410 }4411 4412 4413 function setaclfromuser($params)4414 {4415 $user = $params['user'];4416 $acl = $params['acl'];4417 4418 $mbox_stream = $this->open_mbox();4419 4420 $serverString = "{".$this->imap_server.":".$this->imap_port.$this->imap_options."}";4421 $mailboxes_list = imap_getmailboxes($mbox_stream, $serverString, "user".$this->imap_delimiter.$this->username."*");4422 4423 if (is_array($mailboxes_list))4424 {4425 foreach ($mailboxes_list as $key => $val)4426 {4427 $folder = str_replace($serverString, "", imap_utf7_encode($val->name));4428 $folder = str_replace("&-", "&", $folder);4429 if (!imap_setacl ($mbox_stream, $folder, $user, $acl))4430 {4431 $return = imap_last_error();4432 }4433 }4434 }4435 if (isset($return))4436 return $return;4437 else4438 return true;4439 4378 } 4440 4379 -
trunk/expressoMail1_2/inc/class.ldap_functions.inc.php
r6528 r6848 88 88 $this->ldap_context = $_SESSION['phpgw_info']['expressomail']['server']['ldap_context']; 89 89 90 if($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 90 if( isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host']) && 91 isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn']) && 92 isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) && 93 $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 91 94 $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn'] && 92 95 $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) { -
trunk/expressoMail1_2/js/sharemailbox.js
r6551 r6848 2 2 { 3 3 this.xtools = new xtools('../expressoMail1_2/templates/'); 4 5 var users; 4 6 } 5 7 … … 33 35 cShareMailbox.prototype.getaclfromuser = function(user) 34 36 { 35 var handler_getaclfromuser = function(data) 36 {37 Element('em_input_readAcl').checked= false;38 Element('em_input_deleteAcl').checked = false;39 Element('em_input_writeAcl').checked= false;40 Element('em_input_sendAcl').checked = false;41 42 Element('em_input_deleteAcl').disabled = true;43 Element('em_input_writeAcl').disabled = true; 44 45 if (data[user].indexOf('lrs',0) >= 0)46 {47 Element('em_input_sendAcl').disabled = false;48 Element('em_input_deleteAcl').disabled = false;49 Element('em_input_writeAcl').disabled = false;50 Element('em_input_readAcl').checked = true;51 }52 else53 {54 55 }56 57 if (data[user].indexOf('d',0) >= 0)58 {59 Element('em_input_deleteAcl').checked = true;60 Element('em_input_deleteAcl').disabled = false;61 }62 63 if (data[user].indexOf('w',0) >= 0)64 {65 Element('em_input_writeAcl').checked = true;66 Element('em_input_writeAcl').disabled = false 67 }68 69 if (data[user] != "false" && data[user].indexOf('p',0) >= 0)70 {71 Element('em_input_sendAcl').disabled = false;72 Element('em_input_sendAcl').checked = true;73 }74 75 }76 77 cExecute ("$this.imap_functions.getaclfromuser&user="+user, handler_getaclfromuser);37 38 Element('em_input_readAcl').checked = false; 39 Element('em_input_deleteAcl').checked = false; 40 Element('em_input_writeAcl').checked = false; 41 Element('em_input_sendAcl').checked = false; 42 43 Element('em_input_deleteAcl').disabled = true; 44 Element('em_input_writeAcl').disabled = true; 45 46 if ((this.users[user].acls.indexOf('l',0) >= 0) && 47 (this.users[user].acls.indexOf('r',0) >= 0) && 48 (this.users[user].acls.indexOf('s',0) >= 0) ) 49 { 50 Element('em_input_sendAcl').disabled = false; 51 Element('em_input_deleteAcl').disabled = false; 52 Element('em_input_writeAcl').disabled = false ; 53 Element('em_input_readAcl').checked = true; 54 } 55 else 56 Element('em_input_sendAcl').disabled = true; 57 58 59 if ((this.users[user].acls.indexOf('x',0) >= 0) && 60 (this.users[user].acls.indexOf('t',0) >= 0) && 61 (this.users[user].acls.indexOf('e',0) >= 0) ) 62 { 63 Element('em_input_deleteAcl').checked = true; 64 Element('em_input_deleteAcl').disabled = false; 65 } 66 67 if ((this.users[user].acls.indexOf('w',0) >= 0) && 68 (this.users[user].acls.indexOf('i',0) >= 0) && 69 (this.users[user].acls.indexOf('k',0) >= 0) ) 70 { 71 Element('em_input_writeAcl').checked = true; 72 Element('em_input_writeAcl').disabled = false 73 } 74 75 if (this.users[user].acls != "false" && this.users[user].acls.indexOf('p',0) >= 0) 76 { 77 Element('em_input_sendAcl').disabled = false; 78 Element('em_input_sendAcl').checked = true; 79 } 78 80 } 79 81 … … 106 108 Element('em_input_writeAcl').disabled = true; 107 109 Element('em_input_writeAcl').checked = false; 108 109 110 } 110 111 111 112 if (Element('em_input_deleteAcl').checked) 112 acl += ' ida';113 acl += 'xte'; 113 114 114 115 if (Element('em_input_writeAcl').checked) { 115 acl += 'w c';116 acl += 'wik'; 116 117 } 117 118 if (Element('em_input_sendAcl').checked){ 118 acl += 'pa'; 119 } 120 121 var handler_setaclfromuser = function(data) { 122 if (!data) 123 alert(data); 124 return true; 125 } 126 cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser); 119 acl += 'p'; 120 } 121 122 this.users[user].acls = acl; 127 123 } 128 124 … … 172 168 click: function() 173 169 { 174 $(this).dialog("destroy"); 175 div.removeChild(div.firstChild); 170 $(div).dialog("close"); 176 171 }, 177 172 style: "margin-top: -2.1em" … … 180 175 text: get_lang("Save"), 181 176 click: function() 182 { 183 // Needed select all options from select 184 var users_setacl = new Array(); 185 var select_users = Element('em_select_sharefolders_users'); 186 187 for(var i = 0; i < select_users.options.length; i++) 188 { 189 users_setacl[i] = select_users.options[i].value; 190 } 191 var attributes = connector.serialize(users_setacl); 192 193 var handler_save = function(data) 194 { 195 if (data) 196 { 197 var sharedFoldersUsers = document.getElementById('em_select_sharefolders_users'); 198 199 for( var i = 0;i < sharedFoldersUsers.options.length; i++ ) 200 { 201 if( sharedFoldersUsers.options[i].selected ) 202 { 203 var value = sharedFoldersUsers.options[i].value; 204 var text = sharedFoldersUsers.options[i].text; 205 sharedFoldersUsers.options[i].parentNode.removeChild(sharedFoldersUsers.options[i]); 206 sharedFoldersUsers.options[sharedFoldersUsers.options.length] = new Option( text, value, false, false); 207 } 208 } 209 210 Element('em_input_readAcl').checked = false; 211 Element('em_input_deleteAcl').checked = false; 212 Element('em_input_writeAcl').checked = false; 213 Element('em_input_sendAcl').checked = false; 214 215 Element('em_input_deleteAcl').disabled = true; 216 Element('em_input_writeAcl').disabled = true; 217 Element('em_input_sendAcl').disabled = true; 218 219 //$("#sharemailbox").empty(); 220 //$("#sharemailbox").dialog("destroy"); 221 $("#sharemailbox").parents().find(".ui-icon-closethick").trigger("click"); 222 223 write_msg(get_lang('Shared options saved with success')); 224 225 } 226 } 227 228 cExecute ("$this.imap_functions.setacl", handler_save, 'users='+attributes); 229 177 { 178 $.ajax({ 179 url: 'controller.php?' + $.param( { 180 action: '$this.imap_functions.setacl', 181 acls: connector.serialize(sharemailbox.users)} 182 ), 183 success: function( data ){ 184 data = connector.unserialize( data ); 185 186 if( data ) 187 { 188 write_msg(get_lang('Shared options saved with success')); 189 $(div).dialog("close"); 190 191 } 192 }, 193 beforeSend: function( jqXHR, settings ){ 194 connector.showProgressBar(); 195 }, 196 complete: function( jqXHR, settings ){ 197 connector.hideProgressBar(); 198 } 199 200 }); 201 230 202 }, 231 203 style: "margin-top: -2.1em" … … 267 239 268 240 var selectSharedFolders = Element('em_select_sharefolders_users'); 269 270 for( var i in optionsData ) 271 { 272 selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, optionsData[i].uid, false, false); 273 } 241 this.users = optionsData; 242 for( var i in optionsData ) 243 selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, i, false, false); 244 274 245 } 275 246 … … 331 302 } 332 303 } 304 var newobject = new Object; 305 newobject.cn = select_available_users.options[i].text; 306 newobject.acls = ""; 307 this.users[select_available_users.options[i].value] = newobject; 333 308 } 334 309 } … … 339 314 select_users.outerHTML = select_users.outerHTML; 340 315 } 316 317 318 341 319 } 342 320 … … 349 327 var user = select.options[select.selectedIndex].value; 350 328 351 var handler_setaclfromuser = function(data) { 352 if (!data) 353 alert(data); 354 return true; 355 } 356 357 cExecute ("$this.imap_functions.setaclfromuser&user="+user+"&acl="+acl, handler_setaclfromuser); 358 359 360 for( var i = 0 ; i < select_users.options.length; i++ ) 361 { 362 if( select_users.options[i].selected ) 363 { 364 select_users.options[i--] = null; 365 } 366 } 367 329 delete this.users[user]; 330 331 select.options[select.selectedIndex] = null; 332 368 333 Element('em_input_readAcl').checked = false; 369 334 Element('em_input_deleteAcl').checked = false; 370 335 Element('em_input_writeAcl').checked = false; 371 336 Element('em_input_sendAcl').checked = false; 337 372 338 373 339 }
Note: See TracChangeset
for help on using the changeset viewer.