예제 #1
0
<?php

global $gBitSystem;
define('LIBERTY_SERVICE_NEWSLETTERS', 'newsletters');
$registerHash = array('package_name' => 'newsletters', 'package_path' => dirname(__FILE__) . '/', 'homeable' => TRUE);
$gBitSystem->registerPackage($registerHash);
if ($gBitSystem->isPackageActive(NEWSLETTERS_PKG_NAME)) {
    $menuHash = array('package_name' => NEWSLETTERS_PKG_NAME, 'index_url' => NEWSLETTERS_PKG_URL . 'index.php', 'menu_template' => 'bitpackage:newsletters/menu_newsletters.tpl');
    $gBitSystem->registerAppMenu($menuHash);
    if (isset($_GET['ct']) && strlen($_GET['ct']) == 32) {
        require_once NEWSLETTERS_PKG_PATH . 'BitNewsletterMailer.php';
        BitNewsletterMailer::storeClickthrough($_GET['ct']);
    }
    $gLibertySystem->registerService(LIBERTY_SERVICE_NEWSLETTERS, NEWSLETTERS_PKG_NAME, array('users_expunge_function' => 'newsletters_user_expunge', 'users_register_function' => 'newsletters_user_register'));
    // make sure all mail_queue messages from a deleted user are nuked
    function newsletters_user_expunge(&$pObject)
    {
        if (is_a($pObject, 'BitUser') && !empty($pObject->mUserId)) {
            $pObject->mDb->StartTrans();
            $pObject->mDb->query("DELETE FROM `" . BIT_DB_PREFIX . "mail_queue` WHERE user_id=?", array($pObject->mUserId));
            $pObject->mDb->query("DELETE FROM `" . BIT_DB_PREFIX . "mail_subscriptions` WHERE user_id=?", array($pObject->mUserId));
            $pObject->mDb->CompleteTrans();
        }
    }
    function newsletters_user_register(&$pObject)
    {
        if (!empty($_REQUEST['newsletter_optin'])) {
            // hidden flag to indicate at least one newsletter was displayed
            require_once NEWSLETTERS_PKG_PATH . 'BitNewsletter.php';
            require_once NEWSLETTERS_PKG_PATH . 'BitNewsletterMailer.php';
            if (!empty($_REQUEST['unsub_all'])) {