Alternc  latest
Alternc logiel libre pour l'hébergement
m_roundcube Class Reference

This class handle roundcube's webmail hook the main panel page to add a link to the webmail. More...

Public Member Functions

 hook_admin_webmail ()
 Hook called by the homepage or the /webmail link to redirect the user to a known webmail url. More...
 
 hook_mail_delete_for_real ($mail_id, $fullmail)
 Hook called when an email is REALLY deleted (by the cron, not just in the panel) More...
 

Detailed Description

This class handle roundcube's webmail hook the main panel page to add a link to the webmail.

Definition at line 30 of file m_roundcube.php.

Member Function Documentation

◆ hook_admin_webmail()

m_roundcube::hook_admin_webmail ( )

Hook called by the homepage or the /webmail link to redirect the user to a known webmail url.

the variable 'webmail_redirect' tells which webmail has the priority.

Returns
string the URL of the webmail

Definition at line 38 of file m_roundcube.php.

38  {
39  global $db;
40  // Search for the domain where the panel is hosted, then search for a webmail in it.
41  $i=2;
42  if (!empty($_SERVER["HTTP_HOST"])) {
43  do { // for each domain part (search panel.alternc.org then alternc.org then org, if the current panel is at www.panel.alternc.org)
44  $expl=explode(".",$_SERVER["HTTP_HOST"],$i);
45  if (count($expl)>=2) {
46  list($host,$dompart)=$expl;
47  // We search for a 'squirrelmail' subdomain in that domain
48  $db->query("SELECT * FROM sub_domaines s WHERE s.domaine=? AND s.type='roundcube';",array($dompart));
49  if ($db->next_record()) {
50  $domain=$db->Record;
51  return "http://".$domain["sub"].(($domain["sub"])?".":"").$domain["domaine"];
52  }
53  }
54  $i++;
55  } while (strpos($dompart,'.')!==false);
56  }
57 
58  // not found: search for a webmail in the admin user account
59  $db->query("SELECT * FROM sub_domaines s WHERE s.compte=2000 AND s.type='roundcube';");
60  if ($db->next_record()) {
61  $domain=$db->Record;
62  return "http://".$domain["sub"].(($domain["sub"])?".":"").$domain["domaine"];
63  }
64 
65  }
global $db
Definition: bootstrap.php:26
$host
Definition: config.php:71
$domain
Definition: dom_import.php:36
$i

References $db, $domain, $host, and $i.

◆ hook_mail_delete_for_real()

m_roundcube::hook_mail_delete_for_real (   $mail_id,
  $fullmail 
)

Hook called when an email is REALLY deleted (by the cron, not just in the panel)

Parameters
mail_idinteger the ID of the mail in the AlternC database
fullmailstring the deleted mail himself in the form of john@.nosp@m.doma.nosp@m.in.tl.nosp@m.d
Returns
false|null

Definition at line 74 of file m_roundcube.php.

74  {
75  // Include Roundcube configuration
76  // Delete from the roundcube configuration
77 
78  // Use cleandb.sh filled by roundcube ? http://trac.roundcube.net/browser/github/bin/cleandb.sh
79 
80  include_once("/etc/roundcube/debian-db.php");
81  if (! isset($dbtype)) {
82  global $msg;
83  $msg->raise('Error', "roundcube::hook_mail_delete_for_real",_("Problem: missing var in Debian Roundcube configuration file"));
84  return false;
85  }
86 
87  switch ($dbtype) {
88  case "sqlite":
89  $rcdb = "sqlite:///$basepath/$dbname?mode=0640";
90  $dbh = new PDO("sqlite:/$basepath/$dbname");
91  break;
92  default:
93  if ($dbport != '') $dbport=":$dbport";
94  if ($dbserver == '') $dbserver="localhost";
95  $dbh= new PDO("$dbtype:host=$dbserver;dbname=$dbname;dbport=$dbport", $dbuser, $dbpass);
96  #$rcdb = "$dbtype:$dbuser:$dbpass@$dbserver$dbport/$dbname";
97  break;
98  }
99 
100  $stmt = $dbh->prepare("SELECT user_id FROM users WHERE username = ?;");
101  $req=$stmt->execute(array($fullmail));
102 
103  if ($req) {
104  foreach ( $stmt->fetchAll() as $t ) {
105  if (empty($t['user_id'])) continue ;
106  $rcuser_id=$t['user_id'];
107 
108  $dbh->prepare("DELETE from contactgroupmembers where contactgroup_id in (select contactgroup_id from contactgroups where user_id = ?) ; ")->execute(array($rcuser_id));
109  $dbh->prepare("DELETE from contactgroups where user_id = ? ; ")->execute(array($rcuser_id));
110  $dbh->prepare("DELETE from contacts where user_id = ? ; ")->execute(array($rcuser_id));
111  $dbh->prepare("DELETE from identities where user_id = ? ; ")->execute(array($rcuser_id));
112  $dbh->prepare("DELETE from users where user_id = ? ; ")->execute(array($rcuser_id));
113  } //foreach
114  }
115 
116  }
$msg
Definition: bootstrap.php:75
global $dbh
Definition: bootstrap.php:26
foreach($domaines_user as $domaine) $t

References $dbh, $msg, and $t.


The documentation for this class was generated from the following file: