*/ class LSattr_html_maildir extends LSattr_html { var $LSformElement_type = 'maildir'; var $_toDo = array(); public function __construct($name, $config, &$attribute) { $attribute -> addObjectEvent('before_delete',$this,'beforeDelete'); $attribute -> addObjectEvent('after_delete',$this,'deleteMaildirByFTP'); parent :: __construct($name, $config, $attribute); } public function doOnModify($action,$cur,$new) { $this -> _toDo = array ( 'action' => $action, 'old' => $cur, 'new' => $new ); $this -> attribute -> addObjectEvent('after_modify',$this,'toDo'); } public function toDo() { if (is_array($this -> _toDo)) { switch($this -> _toDo['action']) { case 'delete': return $this -> deleteMaildirByFTP(); break; case 'modify': if (renameMaildirByFTP($this -> _toDo['old'],$this -> _toDo['new'])) { LSsession :: addInfo(_("The mailbox has been moved.")); return true; } return; break; case 'create': if (createMaildirByFTP(null,$this -> _toDo['new'])) { LSsession :: addInfo(_("The mailbox has been created.")); return true; } return; break; default: LSdebug($this -> name.' - LSformElement_maildir->toDo() : Unknown action.'); } } LSdebug($this -> name.' - LSformElement_maildir->toDo() : Nothing to do.'); return true; } public function deleteMaildirByFTP() { $archiveNameFormat = $this -> getConfig('html_options.archiveNameFormat'); if ($archiveNameFormat) { LSdebug('LSformElement_maildir : archive'); $newname = getFData($archiveNameFormat, $this -> _toDo['old']); if ($newname) { if (renameMaildirByFTP($this -> _toDo['old'],$newname)) { LSsession :: addInfo(_("The mailbox has been archived successfully.")); return true; } return; } LSdebug($this -> name." - LSformElement_maildir->toDo() : Incorrect archive name."); return; } else { LSdebug('LSformElement_maildir : delete'); if (removeMaildirByFTP(null,$this -> _toDo['old'])) { LSsession :: addInfo(_("The mailbox has been deleted.")); return true; } return; } } public function beforeDelete() { $this -> _toDo = array ( 'action' => 'delete', 'old' => $this -> getRemoteRootPathRegex(), 'new' => '' ); } public function getRemoteRootPathRegex($val='LS') { if ($val=='LS') { $val = $this -> attribute -> getValue(); $val=$val[0]; } $remoteRootPathRegex = $this -> getConfig('html_options.remoteRootPathRegex'); if ($remoteRootPathRegex) { if ( preg_match($remoteRootPathRegex, $val, $r) || empty($val) ) { $val = $r[1]; } else { LSdebug('Pbl remoteRootPathRegex'); } } return $val; } }