[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";
|
||||
|
||||
protected $mailList = array();
|
||||
|
||||
const SECTION_LIST = "list";
|
||||
const SECTION_STAT_ALIAS = "stat_alias";
|
||||
const SECTION_CHECK_STORAGE = "check_storage";
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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