[enh] diagnostic:service:mail
This commit is contained in:
parent
0647a56abb
commit
fc01077346
|
@ -11,8 +11,109 @@ class Alternc_Diagnostic_Service_Mail
|
||||||
{
|
{
|
||||||
|
|
||||||
public $name = "email";
|
public $name = "email";
|
||||||
|
|
||||||
|
protected $mailList = array();
|
||||||
|
|
||||||
|
const SECTION_LIST = "list";
|
||||||
|
const SECTION_STAT_ALIAS = "stat_alias";
|
||||||
|
const SECTION_CHECK_STORAGE = "check_storage";
|
||||||
|
|
||||||
function run(){
|
function run(){
|
||||||
|
|
||||||
|
// Attempts to retrieve all email addresses
|
||||||
|
$this->mailList = $this->getList();
|
||||||
|
|
||||||
|
// Writes the domains list
|
||||||
|
$this->writeSectionData (self::SECTION_LIST,$this->getList());
|
||||||
|
|
||||||
|
// Writes the alias stats
|
||||||
|
$this->writeSectionData (self::SECTION_STAT_ALIAS,$this->getStatAlias());
|
||||||
|
|
||||||
|
// Writes the quota stats
|
||||||
|
$this->writeSectionData (self::SECTION_CHECK_STORAGE,$this->getCheckStorage());
|
||||||
|
|
||||||
|
|
||||||
return $this->data;
|
return $this->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets list from db
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getList(){
|
||||||
|
|
||||||
|
$returnArray = array();
|
||||||
|
// Check the availability
|
||||||
|
$this->db->query('
|
||||||
|
SELECT CONCAT(a.address,"@",d.domaine) as email, a.type, a.enabled, r.recipients, m.path,m.quota,m.bytes/(1024*1024) as size_mo,m.messages
|
||||||
|
FROM address a
|
||||||
|
LEFT JOIN recipient r ON r.address_id = a.id
|
||||||
|
LEFT JOIN mailbox m ON m.address_id = a.id
|
||||||
|
JOIN domaines d ON a.domain_id = d.id;');
|
||||||
|
if ($this->db->num_rows()) {
|
||||||
|
while ($this->db->next_record()) {
|
||||||
|
$email = $this->db->f("email");
|
||||||
|
$returnArray[$email] = array(
|
||||||
|
"enabled" => $this->db->f("enabled"),
|
||||||
|
"type" => $this->db->f("type"),
|
||||||
|
"recipients" => $this->db->f("recipients"),
|
||||||
|
"path" => $this->db->f("path"),
|
||||||
|
"quota" => $this->db->f("quota"),
|
||||||
|
"size_mo" => $this->db->f("size_mo"),
|
||||||
|
"messages" => $this->db->f("messages"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $returnArray;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Searches mails with alias
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getStatAlias() {
|
||||||
|
$returnArray = array();
|
||||||
|
foreach ($this->mailList as $email => $emailInfo) {
|
||||||
|
$is_alias = false;
|
||||||
|
if( !is_null($emailInfo["recipients"])){
|
||||||
|
$is_alias = true;
|
||||||
|
}
|
||||||
|
$returnArray[$email] = $is_alias;
|
||||||
|
}
|
||||||
|
return $returnArray;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the box oversize and effective existence
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getCheckStorage() {
|
||||||
|
$returnArray = array();
|
||||||
|
foreach ($this->mailList as $email => $emailInfo) {
|
||||||
|
// Only account real boxes
|
||||||
|
if( ! $emailInfo["path"]){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$quota_pct = "0";
|
||||||
|
$box_exists = true;
|
||||||
|
$quota = $emailInfo["quota"];
|
||||||
|
$size_mo = $emailInfo["size_mo"] ;
|
||||||
|
if( $quota > 0 ){
|
||||||
|
$quota_pct = $size_mo * 100 / $quota;
|
||||||
|
}
|
||||||
|
if( !is_dir($emailInfo["path"]) ){
|
||||||
|
$box_exists = false;
|
||||||
|
}
|
||||||
|
$returnArray[$email] = array(
|
||||||
|
"percent" => number_format($quota_pct, 2),
|
||||||
|
"box_exists" => $box_exists
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $returnArray;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue