$instance = $this;
    }
    static function getInstance()
    {
        if (!isset($instance)) {
            $instance = new MailNotification();
        }
        return $instance;
    }
    function createTableIfNotExists()
    {
        $sql = "CREATE TABLE IF NOT EXISTS wiki_dailychanges (\r\n\t\t\t  dc_timestamp varchar(14) binary NOT NULL default '',\r\n\t\t\t  dc_title varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_summary varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_url varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_user varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_real_name varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_mail varchar(255) binary NOT NULL default '',\r\n\t\t\t  dc_minor tinyint(3) unsigned NOT NULL default '0'\r\n) TYPE=MyISAM PACK_KEYS=1;";
        wfQuery($sql, DB_MASTER);
    }
    function onArticleSaveComplete($article, $user, $text, $summary, $isminor, $iswatch, $section)
    {
        $this->createTableIfNotExists();
        $titleObject = $article->getTitle();
        $url = $titleObject->getFullURL();
        $title = $titleObject->getText();
        $userName = $user->getName();
        $realName = $user->getRealName();
        $email = $user->getEmail();
        $now = wfTimestampNow();
        $sql = "INSERT INTO wiki_dailychanges (dc_timestamp, dc_title, dc_summary, dc_url, dc_user, " . "dc_real_name, dc_mail, dc_minor) values ('" . mysql_real_escape_string($now) . "', '" . mysql_real_escape_string($title) . "', '" . mysql_real_escape_string($summary) . "', '" . mysql_real_escape_string($url) . "', '" . mysql_real_escape_string($userName) . "', '" . mysql_real_escape_string($realName) . "', '" . mysql_real_escape_string($email) . "', '" . mysql_real_escape_string($isminor) . "')";
        wfQuery($sql, DB_MASTER);
        return true;
    }
}
$wgHooks['ArticleSaveComplete'][] = MailNotification::getInstance();