removing old classes, now merge into m_mail

This commit is contained in:
Benjamin Sonntag 2012-08-25 15:39:22 +00:00
parent 9e40d8d62d
commit 5c6f4071a3
6 changed files with 0 additions and 646 deletions

5
.gitattributes vendored
View File

@ -348,11 +348,6 @@ bureau/class/m_hooks.php -text
bureau/class/m_hta.php -text
bureau/class/m_log.php -text
bureau/class/m_mail.php -text
bureau/class/m_mail_alias.php -text
bureau/class/m_mail_jabber.php -text
bureau/class/m_mail_localbox.php -text
bureau/class/m_mail_redirection.php -text
bureau/class/m_mail_squirrelmail.php -text
bureau/class/m_mem.php -text
bureau/class/m_mysql.php -text
bureau/class/m_piwik.php -text

View File

@ -1,151 +0,0 @@
<?php
/*
$Id: m_mail_alias.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 aliases
*
* Copyleft {@link http://alternc.net/ AlternC Team}
*
* @copyright AlternC-Team 2002-11-01 http://alternc.net/
*
*/
Class m_mail_alias{
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_alias(){
$this->enabled=variable_get('mail_alias_enabled',null);
if (is_null($this->enabled)) { // if not configuration var, setup one (with a default value)
variable_set('mail_alias_enabled',true,'To enable or disable the alias module in the mail edit page');
$this->enabled=true;
}
$this->advanced=variable_get('mail_alias_advanced',null);
if (is_null($this->advanced)) { // if not configuration var, setup one (with a default value)
variable_set('mail_alias_advanced',true,'To place the alias option in the advanced area');
$this->advanced=true;
}
}
/*
* function used to list every aliases ( aka local redirections ) of a given mail address
* param: mail address aliased.
* return : an array containing every alias of a given mail on every domain related to the current user.
*
*/
function list_alias($mail_address) {
global $db, $mail, $cuid,$err;
$err->log("mail_alias","list_alias");
$db->query("SELECT r.id as id, r.address_id from recipient r,address a, domaines d where r.recipients REGEXP '^[[:space:]]*".mysql_real_escape_string($mail_address)."[[:space:]]*$'and r.address_id=a.id and a.domain_id=d.id and d.compte = $cuid;");
$rcp = Array();
while ($db->next_record()) {
$rcp[$db->f("id")] = $db->f("address_id");
}
foreach ($rcp as $k => $v) {
$rcp[$k] = $mail->mail_get_details($v, false);
}
return $rcp;
}
function form($mail_id, $edit_id) {
global $mail,$err;
if ($edit_id) {
//echo "<a href='mail_redirection_edit.inc.php?mail_id=$edit_id'>";__("Edit");echo "</a>";
echo "<a href='mail_properties.php?mail_id=$edit_id'>";__("Edit");echo "</a>";
} else {
include('mail_alias_create.inc.php');
}
}
/**
*hooks called to list a given mail properties
*@param: the id of the mail in question
*@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, $mail, $err;
$err->log("mail","mail_properties_list");
$val = array (
"label" => "alias",
"short_desc" => _("Alias"),
"human_desc" => _("To add an alias to this mail address.<br/><i>You must have the domain's alias setup in your AlternC account.</i>"),
"url" => "mail_alias_create.php?mail_id=$mail_id",
"class" => "mail_alias",
"form_param" => Array($mail_id,false),
"advanced" => $this->advanced,
"pass_required" => false
);
if (!$details = $mail->mail_get_details($mail_id, true)) return Array();
$return=Array();
$return[]=$val; // To be able to add a new alias
foreach ($details['alias'] as $k => $v ) {
$tmp = $val;
$tmp['url'] = "mail_redirection_edit.php?mail_id=".$v['address_id'];
$tmp["form_param"] = Array($mail_id,$v['address_id']);
$tmp['short_desc'] = sprintf(_("Alias of %s"),$v['address_full']);
$tmp['human_desc'] = sprintf(_("All the mails sent to %s will be received here."),$v['address_full']);
$return[] = $tmp;
}
return $return;
}
/*
* Function inserting an alias in the recipient table
* @param integer alias_id : unique id of the alias just inserted in address table.
* @param string mail_arg : the mail being aliased.
* @return true if the alias was inserted ,false if there is an error or if alias al* ready in the base
*/
function setalias($alias_id,$mail_arg){
global $db, $err;
$err->log("mail","setalias");
$compare=$this->list_alias($mail_arg);
$db->query("select address from address where id=$alias_id;");
$db->next_record();
$mail_left=$db->f('address');
foreach($compare as $k => $v){
if($v['address'] === $mail_left)
return false;
}
$db->query("INSERT INTO recipient (address_id, recipients) VALUES ($alias_id,'$mail_arg');");
return true;
}
}
?>

View File

@ -1,88 +0,0 @@
<?php
/*
* Proof of concept of what a new feature look like with the new mail interface
*
**/
Class m_mail_jabber{
var $advanced;
var $enabled;
function m_mail_jabber(){
// Get configuration var
$this->enabled=variable_get('mail_jabber_enabled',null);
$this->advanced=variable_get('mail_jabber_advanced',null);
// Setup the vars if there aren't any
if (is_null($this->enabled)) {
variable_set('mail_jabber_enabled',true,'To enable or disable the Jabber module in the mail edit page');
$this->enabled=true;
}
if (is_null($this->advanced)) {
variable_set('mail_jabber_advanced',true,'To choose the category of Jabber in the mail edit page');
$this->advanced=true;
}
}
/**
* Hooks called by the mail class, it's
* used to verify that a given mail is
* allowed to be created by all the class friends of mail
*
* @param dom_id integer domain id of the target mail
* @param mail_arg string left part of '@' of the target mail
* @return array a hashtable contening the statei (boolean) and an error message
*
*/
function hooks_mail_cancreate($dom_id, $mail_arg){
global $db, $err, $cuid;
$err->log("m_mail_jabber","hooks_mail_cancreate");
$return = array (
"state" => true, // Do we allow this creation ?
"error" => ""); // Error message (txt)
// Return our informations
return $return;
}
/**
* Hooks called to list a given mail properties
* @param mail_id the id of the mail being processed
* @return false, or an hashtable of the usefull information
*
**/
function hooks_mail_properties_list($mail_id){
global $db, $err;
$err->log("mail_jabber","mail_properties_list");
// Return if this feature isn't enabled
if (!$this->enabled) return false;
// Setup the object
$return = array (
"label" => "jabberdemo", // an internal label
"short_desc" => _("Jabber Demo"), // A human short description
"class" => "mail_jabber",
"human_desc" => _("This is just a demo.<br/>Look at m_mail_jabber.php"), // A human long description
"form_param" => Array($mail_id),
"url" => "javascript:alert('Ici un renvoie vers le formulaire adequat de cette entrée.');", // The URL to go
"pass_required" => true, // This feature require the mail to have a global password ?
"advanced" => $this->advanced, // Is this an advanced feature ?
);
/* We can return many array merged to have many
* entry (with different informations, for example
* different description or target URL), to list many
* action directly in the page
**/
// To view an example, uncomment next line
// $return=Array($return,$return,$return);
return $return;
}
}
?>

View File

@ -1,183 +0,0 @@
<?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;
}
}
?>

View File

@ -1,161 +0,0 @@
<?php
/*
$Id: m_mail_redirection.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 redirections
*
* Copyleft {@link http://alternc.net/ AlternC Team}
*
* @copyright AlternC-Team 2002-11-01 http://alternc.net/
*
*/
Class m_mail_redirection{
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_redirection(){
$this->enabled=variable_get('mail_redirection_enabled',null);
if (is_null($this->enabled)) { // if not configuration var, setup one (with a default value)
variable_set('mail_redirection_enabled',true,'To enable or disable the alias module in the mail edit page');
$this->enabled=true;
}
$this->advanced=variable_get('mail_redirection_advanced',null);
if (is_null($this->advanced)) { // if not configuration var, setup one (with a default value)
variable_set('mail_redirection_advanced',true,'To place the redirection option in the advanced area');
$this->advanced=true;
}
}
/**
* function listing each redirections associated with a mail on th ecurrent domain
* @param integer mail_id
* @return ani indexed array of all the recipients of a mail address
*/
function list_recipients($mail_id) {
global $db,$err;
$err->log("mail_redirection","list_recipient");
$db->query("SELECT r.id, r.recipients from recipient r where address_id = ".intval($mail_id)." order by r.recipients ;");
$recipients = Array();
while ($db->next_record()) {
$recipients[$db->f("id")] = $db->f("recipients");
}
return $recipients;
}
/**
* Fonction used to insert the redirections specified by te panel
* @param integer $mail_id
* @param array $recipients : an array contening each and every domain specific mail redirection for a given mail.
* @return: true if everything went ok, false if one are more recipients could not be added
*/
function setredirection($mail_id, $recipients){
global $db,$err;
$err->log("mail_redirection","setredirection");
$all_correct=true;
$recipients=array_unique($recipients);
foreach($recipients as $k => $v){
if(checkmail($recipients[$k]) != 0){
unset($recipients[$k]);
$all_correct=false;
}
}
$recip_clean=array_values($recipients);
$rec_tmp=implode("\n",$recip_clean);
$db->query("INSERT INTO recipient (address_id,recipients) values ($mail_id,'$rec_tmp') ON DUPLICATE KEY UPDATE recipients='$rec_tmp' ;");
if($all_correct == false){
return false;
}else{
return true;
}
}
/*
* Function using list_recipient() to get the list of recipient of a mail and turning it into an array
* @param integer $mail_id : mail unique identifier.
* @return array
*/
function recipients_get_array($mail_id) {
global $mail,$err;
$err->log("mail_redirection","recipient_get_array");
$r = $this->list_recipients($mail_id);
foreach ($r as $b) {$v = explode("\n", $b);} // Only one pass, this array is a 1 row array
if (empty($v)) $v=Array();
foreach ($v as $k => $f) { if (empty($f)) unset($v[$k]); } // clear empty entry
sort($v);
return $v;
}
function recipients_set_array($mail_id, $recipients){
global $db,$err,$mail;
}
function form($mail_id) {
global $mail, $err, $mail_redirection;
include('mail_redirection_edit.inc.php');
}
/*
* hooks called to list a given mail properties
* @param: the id of the mail in question
* @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, $mail, $err;
$err->log("mail_redirection","mail_properties_list");
$return = array (
"label" => "redirection",
"short_desc" => _("Redirection"),
"human_desc" => _("Send a copy of incoming emails to another mail address"),
"url" => "mail_redirection_edit.php?mail_id=$mail_id",
"form_param" => Array($mail_id),
"class" => "mail_redirection",
"advanced" => $this->advanced,
"pass_required" => false
);
return $return;
}
//FIXME fonction de suppresion.
}
?>

View File

@ -1,58 +0,0 @@
<?php
/*
* Proof of concept of what a new feature look like with the new mail interface
*
**/
Class m_mail_squirrelmail{
var $advanced;
var $enabled;
function m_mail_squirrelmail(){
// Get configuration var
}
function hooks_squirrelmail_init($mail,$dom){
global $err,$cuid,$db;
$err->log("mail_squirrelmail","squirrelmail_init",$mail."@".$dom);
$m=substr($mail,0,1);
$gecos=$mail;
if (!$mail) {
// Cas du CATCH-ALL
$gecos="Catch-All";
$m="_";
}
$f=fopen("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","wb");
$g=0; $g=@fopen("/etc/squirrelmail/default_pref","rb");
fputs($f,"email_address=$mail@$dom\nchosen_theme=default_theme.php\n");
if ($g) {
while ($s=fgets($g,1024)) {
if (substr($s,0,14)!="email_address=" && substr($s,0,13)!="chosen_theme=") {
fputs($f,$s);
}
}
fclose($g);
}
fclose($f);
@copy("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","/var/lib/squirrelmail/data/".$mail."@".$dom.".pref");
return true;
}
function hooks_squirrelmail_delete($mail,$dom){
global $err,$cuid,$db;
$err->log("mail_squirrelmail","squirrelmail_delete",$mail."@".$dom);
@unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref");
@unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".abook");
@unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".pref");
@unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".abook");
return true;
}
}
?>