184 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php 
 | |
| 
 | |
| /*
 | |
|  $Id: m_mail_localbox.php author: squidly 
 | |
|  ----------------------------------------------------------------------
 | |
|  LICENSE
 | |
| 
 | |
|  This program is free software; you can redistribute it and/or
 | |
|  modify it under the terms of the GNU General Public License (GPL)
 | |
|  as published by the Free Software Foundation; either version 2
 | |
|  of the License, or (at your option) any later version.
 | |
| 
 | |
|  This program is distributed in the hope that it will be useful,
 | |
|  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  GNU General Public License for more details.
 | |
| 
 | |
|  To read the license please visit http://www.gnu.org/copyleft/gpl.html
 | |
|  ----------------------------------------------------------------------
 | |
|  Original Author of file: Benjamin Sonntag, Franck Missoum
 | |
|  Purpose of file: Manage Email accounts and aliases.
 | |
|  ----------------------------------------------------------------------
 | |
| */
 | |
| 
 | |
| /**
 | |
| * This class handle emails local mailboxes
 | |
| *
 | |
| * Copyleft {@link http://alternc.net/ AlternC Team}
 | |
| *
 | |
| * @copyright    AlternC-Team 2002-11-01 http://alternc.net/
 | |
| *
 | |
| */
 | |
| 
 | |
| Class m_mail_localbox{
 | |
|   var $enabled;
 | |
|   var $advanced;
 | |
| 
 | |
| 
 | |
| 
 | |
| /**
 | |
| * Function used to set the "visibility" of the property: meaning wheter the option is enabled (hence visible) and if it is part of the advanced options.
 | |
| */
 | |
|   function m_mail_localbox(){
 | |
|     $this->enabled=variable_get('mail_localbox_enabled',null);
 | |
|       if (is_null($this->enabled)) { // if not configuration var, setup one (with a default value)
 | |
|         variable_set('mail_localbox_enabled',true,'To enable or disable the alias module in the mail edit page');
 | |
|         $this->enabled=true;
 | |
|       }
 | |
| 
 | |
|     $this->advanced=variable_get('mail_localbox_advanced',null);
 | |
|       if (is_null($this->advanced)) { // if not configuration var, setup one (with a default value)
 | |
|         variable_set('mail_localbox_advanced',false,'To place the alias option in the advanced area');
 | |
|         $this->advanced=false;
 | |
|       }
 | |
|   }
 | |
| 
 | |
|   /*
 | |
|    * Set a localbox
 | |
|    * @param integer $mail_id
 | |
|    */
 | |
|   function set_localbox($mail_id){
 | |
|     global $db, $err, $hooks;
 | |
|     $err->log("localbox","set_localbox!!!!!!!!");
 | |
|     $path="mail/";
 | |
|     if(!$db->query("select distinct left(ad.address,1) as letter,ad.address ,d.domaine from address ad, domaines d where ad.domain_id = d.id  and ad.id = $mail_id order by letter;"));
 | |
| 
 | |
|     if(! $db->next_record()){
 | |
|         return null;
 | |
|     }
 | |
|     //FIXME passer par un hooks pour squirel
 | |
| 		$hooks->invoke('hooks_squirrelmail_init',(array($db->f('address'),$db->f('domaine') )));   
 | |
|     $path="/var/alternc/mail/".$db->f('letter')."/".$db->f('address')."_".$db->f('domaine');
 | |
|     if(!$db->query("INSERT into mailbox (address_id,path,quota) values ($mail_id,'$path',50);"));     
 | |
| 	
 | |
|   }
 | |
| 
 | |
|   /*
 | |
|    * Unset a localbox
 | |
|    * @param integer $mail_id
 | |
|    */
 | |
|   function unset_localbox($mail_id){
 | |
|     global $db, $err,$hooks;
 | |
|     $err->log("localbox","unset_localbox");
 | |
|     if(!$db->query("select address,domaine from address,domaines where address.domain_id=domaines.id and address.id=$mail_id   ;"));
 | |
| 
 | |
|     if(! $db->next_record()){
 | |
|         return null;
 | |
|     }
 | |
| 		$hooks->invoke('hooks_squirrelmail_delete',(array($db->f('address'),$db->f('domaine') )));   
 | |
|     if(!$db->query("DELETE from  mailbox where address_id=$mail_id;"));     
 | |
| 
 | |
|   }
 | |
| 
 | |
| 
 | |
|   /*
 | |
|      hooks called by the mail class, it is used to verify that a given mail is not already in the adress table
 | |
|      in wich case we can create it so the 
 | |
|      @param: dom_id=domain in use, mail_arg= mail address waiting to be created
 | |
|      @result: an hashtable contening the state ( success /failure, un case of success) the id of the created mail, and an error message if something went wrong.
 | |
|    */
 | |
|   function hooks_mail_cancreate($dom_id, $mail_arg){
 | |
|     global $db, $err, $cuid;  
 | |
|     $err->log("m_mail_localbox","hooks_mail_cancreate");    
 | |
|     $return = array ( 
 | |
|             "state" => true,
 | |
|             "mail_id" => null,
 | |
|             "error" => "");
 | |
| 
 | |
|    return $return;
 | |
|   }  
 | |
| 
 | |
| 
 | |
|   function form($mail_id) {
 | |
|     global $mail, $err;
 | |
|     include('mail_localbox_edit.inc.php');
 | |
|   }
 | |
| 
 | |
|   /* hooks called to list a given mail properties
 | |
|    * @param: the id of the mail being processed
 | |
|    * @return: an hashtable of every information usefull to edit the mail if it is part of the class 
 | |
|    * including a url to the edition page of the propertie in question ( here local hosting of a mail)
 | |
|    * if the mail cannot be a localbox because of some of it's properties the return is NULL, thus not       displayed in the properties listing page.
 | |
|    */ 
 | |
|   function hooks_mail_properties_list($mail_id){    
 | |
|     global $db, $err;
 | |
|     $err->log("mail_localbox","mail_properties_list");
 | |
|     $return = array (
 | |
|         "label"       => "localbox",
 | |
|         "short_desc"  => _("Local mailbox"),
 | |
|         "human_desc"  => _("Actually disabled.<br/>To have your mail stored on the server.<br/><i>You can access them remotely with the webmail, IMAP or POP</i>"),
 | |
|         "url"         => "mail_localbox_edit.php",
 | |
|         "form_param"  => Array($mail_id),
 | |
|         "class"       => 'mail_localbox',
 | |
|         "pass_required" => true,
 | |
|         "advanced" => $this->advanced
 | |
|         );
 | |
| 
 | |
| 
 | |
|     // on recherche si la boite est deja presente en tant que boite locale
 | |
|     $db->query("select address_id from mailbox where address_id=$mail_id;");
 | |
| 
 | |
|     // Si pas d'entrée dans mailbox, on retourne directement le Array
 | |
|     if(! $db->next_record()){
 | |
|       $return['url'] .= "?mail_id=$mail_id";
 | |
|       return $return;
 | |
|     }
 | |
|     // Sinon, on le met à jour avant
 | |
|     $return["is_local"]= true;
 | |
|     $return["object_id"]= $db->f('address_id');
 | |
|     $return["human_desc"] = _("Actually enabled.<br/>Your mails are stored on the server.<br/><i>You can access them remotely with the webmail, IMAP or POP</i>");
 | |
| 
 | |
|     // On met à jour l'URL
 | |
|     $return['url'] .= "?mail_id=$mail_id";
 | |
| 
 | |
|     return $return;
 | |
|   }
 | |
| 
 | |
|  
 | |
|   /* Function testing if a given mail id is hosted as a localbox on the domain or not
 | |
|   *  @param: mail_id
 | |
|   *  @return: an indexed array of localbox usefull informations
 | |
|   */
 | |
|   function details($mail_id){
 | |
|   global $db,$err;
 | |
|   $err->log("mail_localbox","details");
 | |
|   $mail_local = array (
 | |
|         "path" => "",
 | |
|         "quota" => null,
 | |
|         "delivery" => "");
 | |
| 
 | |
|   $db->query("select path, quota, delivery from mailbox where address_id=$mail_id;");
 | |
|   if (! $db->next_record()) return false;
 | |
| 
 | |
|   $mail_local["path"]=$db->f("path");  
 | |
|   $mail_local["quota"]=$db->f("quota");  
 | |
|   $mail_local["delivery"]=$db->f("delivery");  
 | |
|   return $mail_local;
 | |
|   }
 | |
| 
 | |
|  
 | |
| }
 | |
| 
 | |
| ?>
 |