示例#1
0
function myinviter_sendEmails($id = null, $force = false)
{
    global $xoopsConfig;
    $errors = array();
    $sent = 0;
    $emailsperpack = intval($GLOBALS['myinviter']->getConfig('emailsperpack'));
    if ($emailsperpack == 0 && $id == null) {
        $errors[] = 'No id or no pack number';
        return $errors;
    }
    $timebpacks = intval($GLOBALS['myinviter']->getConfig('timebpacks'));
    $now = time();
    $last = myinviter_getLastTime();
    if ($now - $last <= $timebpacks && !$force) {
        $errors[] = 'Not enough time';
        return $errors;
    }
    $from = $GLOBALS['myinviter']->getConfig('from');
    //custom, system, user
    $html = $GLOBALS['myinviter']->getConfig('html');
    $sandbox = $GLOBALS['myinviter']->getConfig('sandbox');
    $sandboxemail = trim($GLOBALS['myinviter']->getConfig('sandboxemail'));
    $defaultuid = intval($GLOBALS['myinviter']->getConfig('defaultuid'));
    if (empty($sandboxemail)) {
        $sandboxemail = $xoopsConfig['adminmail'];
    }
    if ($from == 'custom') {
        $fromname = trim($GLOBALS['myinviter']->getConfig('fromname'));
        $fromemail = trim($GLOBALS['myinviter']->getConfig('fromemail'));
        if (empty($fromname) || empty($fromemail)) {
            $from = 'system';
        }
    }
    if ($from == 'system') {
        $fromname = $xoopsConfig['sitename'];
        $fromemail = $xoopsConfig['adminmail'];
    }
    $this_handler = $GLOBALS['myinviter']->getHandler('item');
    $objs = $this_handler->getWaitingObjects($id, 0, $emailsperpack);
    if (count($objs) == 0) {
        myinviter_setLastTime($now);
        $errors[] = 'No waiting emails';
        return $errors;
    }
    $member_handler = xoops_gethandler('member');
    foreach ($objs as $obj) {
        $thisUser = $member_handler->getUser($obj->getVar('userid'));
        //Was this user removed? Then get the default one!
        if (!is_object($thisUser)) {
            $thisUser = $member_handler->getUser($defaultuid);
        }
        if (!is_object($thisUser)) {
            $errors[] = 'No default user';
            return $errors;
        }
        $xoopsMailer = xoops_getMailer();
        $xoopsMailer->useMail();
        $xoopsMailer->setTemplateDir(XOOPS_ROOT_PATH . '/modules/myinviter/language/');
        if ($html == 1) {
            $xoopsMailer->multimailer->ContentType = "text/html";
            $xoopsMailer->setTemplate('myinviter_invitation_html.tpl');
            $avatar = $thisUser->getVar('user_avatar');
            if ($avatar == 'blank.gif' || $avatar == '') {
                $avatar = XOOPS_URL . '/modules/myinviter/images/noavatar.gif';
            } else {
                $avatar = XOOPS_URL . '/uploads/' . $avatar;
            }
            $xoopsMailer->assign("USER_AVATAR", $avatar);
        } else {
            $xoopsMailer->setTemplate('myinviter_invitation.tpl');
        }
        if ($sandbox == 1) {
            $xoopsMailer->setToEmails(array($sandboxemail));
        } else {
            $xoopsMailer->setToEmails(array($obj->getVar('email', 'n')));
        }
        if ($from == 'user') {
            $fromname = $thisUser->getVar('uname', 'n');
            $fromemail = $thisUser->getVar('email', 'n');
        }
        $xoopsMailer->setFromEmail($fromemail);
        $xoopsMailer->setFromName($fromname);
        xoops_loadLanguage('main', 'myinviter');
        $xoopsMailer->setSubject(sprintf($GLOBALS['myinviter']->getConfig('subject'), $thisUser->getVar('uname')));
        $xoopsMailer->assign("ADMINMAIL", $xoopsConfig['adminmail']);
        $xoopsMailer->assign("USER_UNAME", $thisUser->getVar('uname'));
        $xoopsMailer->assign("USER_UID", $thisUser->getVar('uid'));
        $xoopsMailer->assign("INVITED_NAME", $obj->getVar('name'));
        $key = md5($obj->getVar('email') . XOOPS_ROOT_PATH);
        $xoopsMailer->assign("BLACKLIST_URL", MYINVITER_URL . '/blacklist.php?email=' . $obj->getVar('email') . '&key=' . $key);
        if (!$xoopsMailer->send(true)) {
            $errors[] = $xoopsMailer->getErrors(false);
            // do not use html in error message
            $this_handler->insertError($obj);
        } else {
            $this_handler->insertSent($obj);
            $sent++;
            //All Ok? Set log
            /* $log_handler =& xoops_getmodulehandler('log', 'myinviter');
               $log = $log_handler->create();
               $log->setVar('log_userid',$thisUser->getVar('uid'));
               $log->setVar('log_date', time());
               $log_handler->insert($log);  */
        }
        unset($xoopsMailer);
    }
    myinviter_setLastTime($now);
    $lastcount = myinviter_getEmailsSent();
    myinviter_setEmailsSent($lastcount + $sent);
    if (xoops_isActiveModule('log')) {
        Xmf_Module_Helper::getInstance('log')->getHandler('item')->addItem('myinviter', 'emailssent', $sent);
    }
    return $errors;
}
示例#2
0
function index_index($start = 0)
{
    global $xoopsTpl, $limit;
    include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
    include_once XOOPS_ROOT_PATH . '/modules/myinviter/include/functions.php';
    $this_handler = $GLOBALS['myinviter']->getHandler('item');
    $session = $GLOBALS['myinviter']->getHelper('session');
    $count = $this_handler->getCountByStatus($session->get('status'));
    $xoopsTpl->assign('count', $count);
    $xoopsTpl->assign('sent', myinviter_getEmailsSent());
    $xoopsTpl->assign('status', $session->get('status'));
    if ($count > 0) {
        if ($count > $limit) {
            include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
            $nav = new XoopsPageNav($count, $limit, $start, 'start', 'op=list');
            $xoopsTpl->assign('pag', '<div style="float:left; padding-top:2px;" align="center">' . $nav->renderNav() . '</div>');
        } else {
            $xoopsTpl->assign('pag', '');
        }
        $objs = $this_handler->getItems(null, $start, $limit, $session->get('status'));
        $xoopsTpl->assign('objs', $this_handler->toArray($objs));
        unset($objs);
    } else {
        $xoopsTpl->assign('pag', '');
    }
    $select = new XoopsFormSelect('', 'status', $session->get('status'));
    $select->addOption(MYINVITER_STATUS_WAITING, _AM_MYINVITER_STATUS_WAITING);
    $select->addOption(MYINVITER_STATUS_ERROR, _AM_MYINVITER_STATUS_ERROR);
    $select->addOption(MYINVITER_STATUS_BLACKLIST, _AM_MYINVITER_STATUS_BLACKLIST);
    $select->addOption(MYINVITER_STATUS_SENT, _AM_MYINVITER_STATUS_SENT);
    $select->addOption(MYINVITER_STATUS_NOTSENT, _AM_MYINVITER_STATUS_NOTSENT);
    $select->setExtra('onChange="document.form.submit()"');
    $xoopsTpl->assign('selectform', $select->render());
    $grabdomain = new XoopsFormText('', 'grabdomain', 50, 50, $session->get('domain'));
    $xoopsTpl->assign('domainform', $grabdomain->render());
    $grabprovider = new XoopsFormSelect('', 'grabprovider', $session->get('provider'));
    $providers = explode('|', $GLOBALS['myinviter']->getConfig('providers'));
    foreach ($providers as $provider) {
        $options[$provider] = $provider;
    }
    $grabprovider->addOptionArray($options);
    $xoopsTpl->assign('providerform', $grabprovider->render());
    $grabstart = new XoopsFormText('', 'grabstart', 3, 30, $session->get('start'));
    $xoopsTpl->assign('startform', $grabstart->render());
    $grablimit = new XoopsFormText('', 'grablimit', 3, 30, $session->get('limit'));
    $xoopsTpl->assign('limitform', $grablimit->render());
    return $xoopsTpl->fetch(XOOPS_ROOT_PATH . '/modules/myinviter/templates/myinviter_admin_index.html');
}