Changeset 6859 for branches/2.4
- Timestamp:
- 07/24/12 10:24:52 (12 years ago)
- Location:
- branches/2.4/expressoMail1_2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4/expressoMail1_2/inc/class.functions.inc.php
r6754 r6859 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']; -
branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php
r6840 r6859 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 { 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) 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']) 4317 { 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 -
branches/2.4/expressoMail1_2/inc/class.ldap_functions.inc.php
r6754 r6859 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']) { -
branches/2.4/expressoMail1_2/js/sharemailbox.js
r6754 r6859 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 else 53 { 54 Element('em_input_sendAcl').disabled = true; 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 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 ((this.users[user].acls.indexOf('l',0) >= 0) && 46 (this.users[user].acls.indexOf('r',0) >= 0) && 47 (this.users[user].acls.indexOf('s',0) >= 0) ) 48 { 49 Element('em_input_sendAcl').disabled = false; 50 Element('em_input_deleteAcl').disabled = false; 51 Element('em_input_writeAcl').disabled = false ; 52 Element('em_input_readAcl').checked = true; 53 } 54 else 55 Element('em_input_sendAcl').disabled = true; 56 57 58 if ((this.users[user].acls.indexOf('x',0) >= 0) && 59 (this.users[user].acls.indexOf('t',0) >= 0) && 60 (this.users[user].acls.indexOf('e',0) >= 0) ) 61 { 62 Element('em_input_deleteAcl').checked = true; 63 Element('em_input_deleteAcl').disabled = false; 64 } 65 66 if ((this.users[user].acls.indexOf('w',0) >= 0) && 67 (this.users[user].acls.indexOf('i',0) >= 0) && 68 (this.users[user].acls.indexOf('k',0) >= 0) ) 69 { 70 Element('em_input_writeAcl').checked = true; 71 Element('em_input_writeAcl').disabled = false 72 } 73 74 if (this.users[user].acls != "false" && this.users[user].acls.indexOf('p',0) >= 0) 75 { 76 Element('em_input_sendAcl').disabled = false; 77 Element('em_input_sendAcl').checked = true; 78 } 78 79 } 79 80 … … 105 106 Element('em_input_deleteAcl').checked = false; 106 107 Element('em_input_writeAcl').disabled = true; 107 Element('em_input_writeAcl').checked = false; 108 108 Element('em_input_writeAcl').checked = false; 109 109 } 110 110 111 111 if (Element('em_input_deleteAcl').checked) 112 acl += ' ida';112 acl += 'xte'; 113 113 114 114 if (Element('em_input_writeAcl').checked) { 115 acl += 'w c';115 acl += 'wik'; 116 116 } 117 117 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); 118 acl += 'p'; 119 } 120 121 this.users[user].acls = acl; 127 122 } 128 123 … … 172 167 click: function() 173 168 { 174 $(this).dialog("destroy"); 175 div.removeChild(div.firstChild); 169 $(div).dialog("close"); 176 170 }, 177 171 style: "margin-top: -2.1em" … … 180 174 text: get_lang("Save"), 181 175 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); 176 { 177 $.ajax({ 178 url: 'controller.php?' + $.param( { 179 action: '$this.imap_functions.setacl', 180 acls: connector.serialize(sharemailbox.users)} 181 ), 182 success: function( data ){ 183 data = connector.unserialize( data ); 184 185 if( data ) 186 { 187 write_msg(get_lang('Shared options saved with success')); 188 $(div).dialog("close"); 189 190 } 191 }, 192 beforeSend: function( jqXHR, settings ){ 193 connector.showProgressBar(); 194 }, 195 complete: function( jqXHR, settings ){ 196 connector.hideProgressBar(); 197 } 198 199 }); 229 200 230 201 }, … … 267 238 268 239 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 } 240 this.users = optionsData; 241 for( var i in optionsData ) 242 selectSharedFolders.options[selectSharedFolders.options.length] = new Option(optionsData[i].cn, i, false, false); 274 243 } 275 244 … … 331 300 } 332 301 } 302 var newobject = new Object; 303 newobject.cn = select_available_users.options[i].text; 304 newobject.acls = ""; 305 this.users[select_available_users.options[i].value] = newobject; 306 333 307 } 334 308 } … … 339 313 select_users.outerHTML = select_users.outerHTML; 340 314 } 315 316 317 341 318 } 342 319 … … 349 326 var user = select.options[select.selectedIndex].value; 350 327 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 } 328 delete this.users[user]; 329 330 select.options[select.selectedIndex] = null; 367 331 368 332 Element('em_input_readAcl').checked = false; … … 371 335 Element('em_input_sendAcl').checked = false; 372 336 337 373 338 } 374 339
Note: See TracChangeset
for help on using the changeset viewer.