예제 #1
0
    /**
     * Add users for this campaign in DB
     */
    function add_users()
    {
        global $DB;
        // Get user IDs from current filterset of users list
        $new_users_IDs = get_filterset_user_IDs();
        if (count($new_users_IDs)) {
            // Users are found in the filterset
            // Get all active users which accept newsletter email
            $new_users_SQL = get_newsletter_users_sql($new_users_IDs);
            $new_users = $DB->get_col($new_users_SQL->get());
            // Remove the users which didn't accept email before
            $DB->query('DELETE FROM T_email__campaign_send
				WHERE csnd_camp_ID = ' . $DB->quote($this->ID) . '
				 AND csnd_emlog_ID IS NULL');
            // Get users which already accept newsletter email
            $old_users = $this->get_users('accept');
            // Exclude old users from new users (To store value of csnd_emlog_ID)
            $new_users = array_diff($new_users, $old_users);
            if (count($new_users)) {
                // Insert new users for this campaign
                $insert_SQL = 'INSERT INTO T_email__campaign_send ( csnd_camp_ID, csnd_user_ID ) VALUES';
                foreach ($new_users as $user_ID) {
                    $insert_SQL .= "\n" . '( ' . $DB->quote($this->ID) . ', ' . $DB->quote($user_ID) . ' ),';
                }
                $DB->query(substr($insert_SQL, 0, -1));
            }
        }
    }
예제 #2
0
/**
 * Get number of users for newsletter from UserList filterset
 *
 * @return array Numbers of users:
 *     'all' - Currently selected recipients (Accounts which accept newsletter emails)
 *     'active' - Already received (Accounts which have already been sent this newsletter)
 *     'newsletter' - Ready to send (Accounts which have not been sent this newsletter yet)
 */
function get_newsletter_users_numbers()
{
    $numbers = array('all' => 0, 'active' => 0, 'newsletter' => 0);
    $users_IDs = get_filterset_user_IDs();
    if (count($users_IDs)) {
        // Found users in the filterset
        global $DB;
        $numbers['all'] = count($users_IDs);
        // Get number of all active users
        $SQL = new SQL();
        $SQL->SELECT('COUNT( * )');
        $SQL->FROM('T_users');
        $SQL->WHERE('user_ID IN ( ' . implode(', ', $users_IDs) . ' )');
        $SQL->WHERE_and('user_status IN ( \'activated\', \'autoactivated\' )');
        $numbers['active'] = $DB->get_var($SQL->get());
        // Get number of all active users which accept newsletter email
        $SQL = get_newsletter_users_sql($users_IDs);
        $SQL->SELECT('COUNT( * )');
        $numbers['newsletter'] = $DB->get_var($SQL->get());
    }
    return $numbers;
}