plugins->registerEvent('mail_mailinglist_insert','mailman_plugin','insert'); $app->plugins->registerEvent('mail_mailinglist_update','mailman_plugin','update'); $app->plugins->registerEvent('mail_mailinglist_delete','mailman_plugin','delete'); } function insert($event_name,$data) { global $app, $conf; $this->update_config(); exec("/usr/lib/mailman/bin/newlist -u ".$data["new"]["domain"]." -e ".$data["new"]["domain"]." ".$data["new"]["listname"]." ".$data["new"]["email"]." ".$data["new"]["password"].""); exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']); } // The purpose of this plugin is to rewrite the main.cf file function update($event_name,$data) { global $app, $conf; exec("/usr/lib/mailman/bin/change_pw -l ".$data["new"]["listname"]." -p ".$data["new"]["password"].""); exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null'); $app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']); } function delete($event_name,$data) { global $app, $conf; $this->update_config(); exec("/usr/lib/mailman/bin/rmlist -a ".$data["old"]["listname"]); exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null'); } function update_config() { global $app, $conf; copy($this->mailman_config_dir.'mm_cfg.py',$this->mailman_config_dir.'mm_cfg.py'); // load the server configuration options $app->uses('getconf'); $server_config = $app->getconf->get_server_config($conf['server_id'], 'server'); // load files $content = file_get_contents($conf["rootpath"]."/conf/mm_cfg.py.master"); $old_file = file_get_contents($this->mailman_config_dir."/mm_cfg.py"); $old_options = array(); $lines = explode("\n", $old_file); foreach ($lines as $line) { if (strlen($line) && substr($line, 0, 1) != '#') { list($key, $value) = explode("=", $line); if (!empty($value)) { $key = rtrim($key); $old_options[$key] = trim($value); } } } // create virtual_domains list $domainAll = $app->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain"); $virtual_domains = ''; foreach($domainAll as $domain) { if ($domainAll[0]['domain'] == $domain['domain']) $virtual_domains .= "'".$domain['domain']."'"; else $virtual_domains .= ", '".$domain['domain']."'"; } $content = str_replace('{hostname}', $server_config['hostname'], $content); $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content); $content = str_replace('{virtual_domains}', $virtual_domains, $content); file_put_contents($this->mailman_config_dir."/mm_cfg.py", $content); } } // end class ?>