Ejemplo n.º 1
0
                            $('#change_status_buttons').hide();
                        }
                        function do_manual_send(){
                            if(!run_manual_send){
                                return;
                            }
                            // do an ajax call to the newsletter_queue_manual.php script
                            // parse the result and update the corresponding recipient in the listing
                            $('#manual_send_status').prepend('<li><?php 
_e('Telling server to send in batches of %s, please wait...', module_config::c('newsletter_send_burst_count', 40));
?>
</li>');
                            $.ajax({
                                type: 'POST',
                                url: '<?php 
echo module_newsletter::link_queue_manual($newsletter_id, $send_id);
?>
',
                                data: 'retry_failures=<?php 
echo $retry_failures ? 'yes' : '';
?>
&retry_pending=<?php 
echo $retry_pending ? 'yes' : '';
?>
',
                                dataType: 'json',
                                success: function(d){
                                    for(var x in d){
                                        if(x=='timeout'){
                                            if(d[x] > 0){
                                                setTimeout(function(){
Ejemplo n.º 2
0
        "name"=>"Campaigns",
        'm' => 'newsletter',
        'p' => 'newsletter_campaign',
        'order' => $menu_position++,
        'menu_include_parent' => 1,
        'allow_nesting' => 1,
        'args' => array('newsletter_id'=>false),
    ));
}
array_unshift($links,array(
    "name"=>"Members",
    'm' => 'newsletter',
    'p' => 'newsletter_member',
    'order' => $menu_position++,
    'menu_include_parent' => 1,
    'allow_nesting' => 1,
    'args' => array('newsletter_id'=>false),
));*/
if (module_newsletter::can_i('view', 'Newsletter Templates')) {
    array_unshift($links, array("name" => "Templates", 'm' => 'newsletter', 'p' => 'newsletter_template', 'order' => $menu_position++, 'menu_include_parent' => 0, 'allow_nesting' => 1, 'args' => array('newsletter_id' => false, 'newsletter_template_id' => false)));
}
/*array_unshift($links,array(
    "name"=>"Settings",
    'm' => 'newsletter',
    'p' => 'newsletter_setting',
    'order' => $menu_position++,
    'menu_include_parent' => 1,
    'allow_nesting' => 1,
    'args' => array('newsletter_id'=>false),
));*/
$module->page_title = _l('Newsletter');
/** 
 * Copyright: dtbaker 2012
 * Licence: Please check CodeCanyon.net for licence details. 
 * More licence clarification available here:  http://codecanyon.net/wiki/support/legal-terms/licensing-terms/ 
 * Deploy: 9809 f200f46c2a19bb98d112f2d32a8de0c4
 * Envato: 4ffca17e-861e-4921-86c3-8931978c40ca
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
if (isset($_REQUEST['go'])) {
    ob_end_clean();
    echo '<pre>';
    _e("Checking for bounces, please wait...");
    echo "\n\n";
    module_newsletter::check_bounces(true);
    echo "\n\n";
    _e("done.");
    echo '</pre>';
    exit;
}
$module->page_title = _l('Newsletter Bounce Checking');
print_heading('Newsletter Bounce Checking');
?>
<p><?php 
_e('Bounces are checked automatically using the CRON job, however if you want to check for bounces manually (ie: to see any error) please click the button below.');
?>
</p>
<form action="" method="post">
<input type="submit" name="go" value="<?php 
_e('Check for bounces');
Ejemplo n.º 4
0
            // load up the receipt template.
            $template = module_template::get_template_by_key('newsletter_unsubscribe');
            $data = $member;
            $data['email'] = htmlspecialchars($data['email']);
            // to be sure to be sure
            $template->page_title = htmlspecialchars(_l('Unsubscribe'));
            $template->assign_values($data);
            echo $template->render('pretty_html');
            exit;
        }
    }
} else {
    // show normal unsubscribe form. asking for their email address.
    if (isset($_REQUEST['email']) && trim($_REQUEST['email'])) {
        $email = htmlspecialchars(strtolower(trim($_REQUEST['email'])));
        if (!module_newsletter::unsubscribe_member_via_email($email)) {
            echo 'Unsubscribe failed... Please enter a valid email address.';
            exit;
        }
        // is the newsletter module giving us a subscription redirection?
        if (module_config::c('newsletter_unsubscribe_redirect', '')) {
            redirect_browser(module_config::c('newsletter_unsubscribe_redirect', ''));
        }
        // or display a message.
        $template = module_template::get_template_by_key('newsletter_unsubscribe_done');
        $data['email'] = $email;
        $template->page_title = htmlspecialchars(_l('Unsubscribe'));
        $template->assign_values($data);
        echo $template->render('pretty_html');
        exit;
    }

        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" name="butt_save" id="butt_save" value="<?php 
echo _l('Save');
?>
" class="submit_button save_button" />
            <input type="button" name="cancel" value="<?php 
echo _l('Cancel');
?>
"
                   onclick="window.location.href='<?php 
echo module_newsletter::link_list(false);
?>
';" class="submit_button" />
            <?php 
if ((int) $newsletter_template_id > 0) {
    ?>
                <input type="submit" name="butt_del" id="butt_del" value="<?php 
    echo _l('Delete');
    ?>
" class="submit_button delete_button" />
            <?php 
}
?>

        </td>
    </tr>
Ejemplo n.º 6
0
 public static function run_cron($debug = false)
 {
     // send any scheduled newsletters via cron job
     $pending = self::get_newsletters(array('pending' => 1));
     if (mysql_num_rows($pending) > 0) {
         while ($send = mysql_fetch_assoc($pending)) {
             if ($debug) {
                 echo "Attempting to send: ";
             }
             if ($debug) {
                 print_r($send['send_id']);
             }
             if ($send['send_id']) {
                 $send = module_newsletter::get_send($send['send_id']);
                 $start_time = $send['start_time'];
                 if ($start_time > time()) {
                     if ($debug) {
                         echo 'not sending this one yet due to start time';
                     }
                 } else {
                     if ($send['status'] == _NEWSLETTER_STATUS_PENDING) {
                         $newsletter_send_burst_count = module_config::c('newsletter_send_burst_count', 40);
                         $newsletter_send_burst_break = module_config::c('newsletter_send_burst_break', 2);
                         for ($x = 0; $x < 10; $x++) {
                             // todo: find a better way to run the cron job, eg: a timeout in configuration, or a max sends per cron run.
                             $send_result = module_newsletter::process_send($send['newsletter_id'], $send['send_id'], $newsletter_send_burst_count, false, false);
                             if (!isset($send_result['send_members']) || !count($send_result['send_members'])) {
                                 //$output_messages[] = _l('All done');
                             } else {
                                 foreach ($send_result['send_members'] as $send_member_result) {
                                     $update_members[$send_member_result['newsletter_member_id']] = array();
                                     switch ($send_member_result['status']) {
                                         case _MAIL_STATUS_SENT:
                                             $update_members[$send_member_result['newsletter_member_id']]['.sent_time'] = print_date(time(), true);
                                             $update_members[$send_member_result['newsletter_member_id']]['.status'] = _l('sent');
                                             $output_messages[] = _l('Sent successfully: %s', $send_member_result['email']);
                                             break;
                                         case _MAIL_STATUS_OVER_QUOTA:
                                             $output_messages[] = _l('Over quota, please wait: %s', $send_member_result['email']);
                                             $update_members[$send_member_result['newsletter_member_id']]['.status'] = _l('pending');
                                             // todo - update the main newsletter status to over quota? nah..
                                             break 2;
                                         case _MAIL_STATUS_FAILED:
                                         default:
                                             $output_messages[] = _l('FAILED: %s Reason: %s', $send_member_result['email'], $send_member_result['error']);
                                             $update_members[$send_member_result['newsletter_member_id']]['.status'] = _l('failed');
                                             break;
                                     }
                                 }
                             }
                             // get an update:
                             $send = module_newsletter::get_send($send['send_id']);
                             $remain = (int) $send['total_member_count'] - (int) $send['total_sent_count'];
                             if ($remain > 0) {
                                 if ($debug) {
                                     echo " Finished sending, {$remain} people remain\n";
                                 }
                             } else {
                                 if ($debug) {
                                     echo " Everyone sent!\n";
                                 }
                                 if (!$send['finish_time']) {
                                     // just to make sure we set the finish time.
                                     module_newsletter::process_send($send['newsletter_id'], $send['send_id']);
                                 }
                                 break;
                                 //exit for loop.
                             }
                         }
                     } else {
                         if ($debug) {
                             echo 'not sending due to status of ' . $send['status'];
                         }
                     }
                 }
             }
         }
     }
     if (!function_exists('imap_open')) {
         set_error('Please contact hosting provider and enable IMAP for PHP');
         echo 'Imap extension not available for php';
         return false;
     }
     self::check_bounces();
 }
 * More licence clarification available here:  http://codecanyon.net/wiki/support/legal-terms/licensing-terms/ 
 * Deploy: 9809 f200f46c2a19bb98d112f2d32a8de0c4
 * Envato: 4ffca17e-861e-4921-86c3-8931978c40ca
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
$search = isset($_REQUEST['search']) && is_array($_REQUEST['search']) ? $_REQUEST['search'] : array();
$newsletter_templates = module_newsletter::get_templates($search);
$header = array('title' => _l('Newsletter Templates'), 'type' => 'h2', 'main' => true, 'button' => array());
$header['button'] = array('url' => module_newsletter::link_open_template('new'), 'title' => _l('Add New Template'), 'type' => 'add');
print_heading($header);
$table_manager = module_theme::new_table_manager();
$columns = array();
$columns['newsletter_template_name'] = array('title' => 'Template Name', 'callback' => function ($newsletter_template) {
    echo module_newsletter::link_open_template($newsletter_template['newsletter_template_id'], true);
}, 'cell_class' => 'row_action');
$columns['newsletter_template_action'] = array('title' => 'Action', 'callback' => function ($newsletter_template) {
    ?>
 <a href="<?php 
    echo module_newsletter::link_open_template($newsletter_template['newsletter_template_id']);
    ?>
">Edit</a> <?php 
});
$table_manager->set_columns($columns);
$table_manager->set_rows($newsletter_templates);
$table_manager->pagination = false;
$table_manager->print_table();
?>


Ejemplo n.º 8
0
    echo _l('Duplicate');
    ?>
" class="submit_button" />
            <?php 
}
?>
            <input type="button" name="cancel" value="<?php 
echo _l('Cancel');
?>
"
                   onclick="window.location.href='<?php 
echo module_newsletter::link_list(false);
?>
';" class="submit_button" />
            <?php 
if ((int) $newsletter_id > 0 && module_newsletter::can_i('delete', 'Newsletters')) {
    ?>
                <input type="submit" name="butt_del" id="butt_del" value="<?php 
    echo _l('Delete');
    ?>
" class="submit_button delete_button" />
            <?php 
}
?>
</div>


    </form>


<script language="javascript" type="text/javascript">
Ejemplo n.º 9
0
                $output_messages[] = _l('Waiting %s seconds before next batch of %s emails', $newsletter_send_burst_break, $newsletter_send_burst_count);
                if (!isset($result['timeout'])) {
                    $result['timeout'] = $newsletter_send_burst_break;
                }
            } else {
                //$output_messages[] = _l('Finished sending, %s people remain',$remain);
                //$output_messages[] = _l('Please <a href="%s">click here</a> to refresh the page.',module_newsletter::link_queue_watch($newsletter_id,$send_id));
                $output_messages[] = _l('Done');
                if (!isset($result['timeout'])) {
                    $result['timeout'] = -1;
                }
                if (!isset($result['done'])) {
                    $result['done'] = 1;
                }
                if (!$send['finish_time']) {
                    // just to make sure we set the finish time.
                    $send_result = module_newsletter::process_send($newsletter_id, $send_id);
                }
            }
        }
    }
}
$result['messages'] = $output_messages;
$result['update_members'] = $update_members;
// put at end of array. bad js hack
if (isset($result['done'])) {
    unset($result['done']);
    $result['done'] = 1;
}
echo json_encode($result);
exit;
Ejemplo n.º 10
0
 public static function handle_bulk_delete_double_optin($rows)
 {
     $delete = array();
     foreach ($rows as $member_to_delete) {
         $newsletter_member_id = module_newsletter::member_from_email($member_to_delete, false);
         if ($newsletter_member_id) {
             if ($res = module_newsletter::is_member_unsubscribed($newsletter_member_id, $member_to_delete)) {
                 if (class_exists('module_subscription', false)) {
                     // check this isn't a member from a subscription or something.
                     $sub = module_subscription::get_subscriptions_by('member', $member_to_delete['member_id']);
                     if (count($sub)) {
                         continue;
                     }
                 }
                 if (isset($res['reason']) && $res['reason'] == 'doubleoptin') {
                     //delete this onee!
                     $delete[] = array('member_id' => $member_to_delete['member_id']);
                 }
             }
         }
     }
     if (module_form::confirm_delete('bulk_optin_array', "Really delete all " . count($delete) . " failed double-opt-in members?", $_SERVER['REQUEST_URI'])) {
         foreach ($delete as $member_to_delete) {
             self::delete_member($member_to_delete['member_id']);
         }
         set_message("Selected members deleted successfully");
         redirect_browser(self::link_open(false));
     }
 }
Ejemplo n.º 11
0
                        </td>
                    </tr>
                    <tr>
                        <th><?php 
    _e('Member Unsubscribed');
    ?>
</th>
                        <td>
                            <?php 
    $newsletter_member_id = module_newsletter::member_from_email($member, false);
    if ($newsletter_member_id) {
        if ($res = module_newsletter::is_member_unsubscribed($newsletter_member_id, $member)) {
            if (isset($res['unsubscribe_send_id']) && $res['unsubscribe_send_id']) {
                // they unsubscribed from a send.
                $send_data = module_newsletter::get_send($res['unsubscribe_send_id']);
                _e('Unsubscribed on %s from newsletter %s', print_date($res['time']), module_newsletter::link_statistics($send_data['newsletter_id'], $send_data['send_id'], true));
            } else {
                if (isset($res['reason']) && $res['reason'] == 'no_email') {
                    _e('Manually marked as no receive email');
                } else {
                    if (isset($res['reason']) && $res['reason'] == 'doubleoptin') {
                        _e('Waiting for double opt in confirmation, sent at %s', print_date($res['time']));
                    } else {
                        _e('Unsubscribed on %s', print_date($res['time']));
                    }
                }
            }
        }
    }
    /*$unsub = module_newsletter::email_blacklisted($member['email']); echo print_date($unsub['time']);
      echo $unsub['reason'];*/
Ejemplo n.º 12
0
                        </td>
                    </tr>
                    <?php 
}
?>
                    </tbody>
                </table>

                <?php 
print_heading(array('type' => 'h3', 'title' => 'Preview Dynamic Fields:'));
?>
                <table width="100%" border="0" cellspacing="0" cellpadding="2" class="tableclass tableclass_form tbl_fixed">
                <tbody>
                    <?php 
$x = 0;
$fields = module_newsletter::get_replace_fields($newsletter_id, $send_id, $first_newsletter_member_id);
foreach ($fields as $key => $val) {
    ?>
                    <tr>
                        <td width="30">
                            <?php 
    if ($x > 4) {
        foreach (array_keys($extra_fields) as $extra_field) {
            if (strtoupper($extra_field) == $key) {
                ?>
                                           <input type="checkbox" name="f[]" value="<?php 
                echo htmlspecialchars($key);
                ?>
" <?php 
                echo isset($display_extra_fields[$key]) ? 'checked' : '';
                ?>
Ejemplo n.º 13
0
    ?>
</option>
                            </select>
                        </td>
                    </tr>
                    <?php 
}
?>
                    </tbody>
                </table>
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="button" name="cancel" value="<?php 
_e('Cancel');
?>
" class="submit_button" onclick="window.location.href='<?php 
echo module_newsletter::link_open($newsletter_id);
?>
';">
                <input type="submit" name="send" value="<?php 
_e('Next Step');
?>
" class="save_button submit_button">
            </td>
        </tr>
        </tbody>
    </table>

    </form>
Ejemplo n.º 14
0
    <?php 
print_heading('Un-Subscription Form');
?>
<p><?php 
_e('Here is a link to the newsletter un-subscription form. People can click this and enter their email to be manually removed from receiving emails:');
?>
 <a href="<?php 
echo module_newsletter::unsubscribe_url();
?>
" target="_blank"><?php 
echo module_newsletter::unsubscribe_url();
?>
</a> <?php 
_e('(this form can be edited from Settings > Templates)');
?>
</p>
<?php 
print_heading('Other Forms');
?>
<p><?php 
_e('Please see the other forms/messages under Settings > Templates. Look for the "newsletter" ones.');
?>
</p>

<?php 
print_heading('Bounce Checking');
?>
<p><?php 
_e('Please <a href="%s">click here</a> to check bounce emails manually.', module_newsletter::link_generate(false, array('page' => 'newsletter_settings_bounces')));
?>
</p>
Ejemplo n.º 15
0
                echo module_newsletter::link_open($newsletter['newsletter_id']);
                ?>
"><?php 
                _e('Edit');
                ?>
</a>
                        <?php 
                break;
        }
    }
});
$table_manager->set_columns($columns);
$table_manager->row_callback = function ($newsletter) {
    $newsletter['send_data'] = false;
    if ($newsletter['send_id']) {
        $newsletter['send_data'] = module_newsletter::get_send($newsletter['send_id']);
        // special cache for old newsletter subject.
        if (isset($newsletter['send_data']['cache']) && strlen($newsletter['send_data']['cache']) > 1) {
            $cache = unserialize($newsletter['send_data']['cache']);
            if ($cache) {
                $newsletter = array_merge($newsletter, $cache);
            }
        }
    }
    return $newsletter;
};
$table_manager->set_rows($newsletters);
$table_manager->pagination = true;
$table_manager->print_table();
?>
Ejemplo n.º 16
0
 if (class_exists('module_newsletter', false)) {
     $columns['member_newsletter'] = array('title' => 'Newsletter', 'callback' => function ($member) {
         // find the groups for this member.
         $g = array();
         $groups = module_group::get_groups_search(array('owner_table' => 'newsletter_subscription', 'owner_id' => $member['member_id']));
         foreach ($groups as $group) {
             $g[] = $group['name'];
         }
         echo implode(', ', $g);
         echo ' ';
         $newsletter_member_id = module_newsletter::member_from_email($member, false);
         if ($newsletter_member_id) {
             if ($res = module_newsletter::is_member_unsubscribed($newsletter_member_id, $member)) {
                 if (isset($res['unsubscribe_send_id']) && $res['unsubscribe_send_id']) {
                     // they unsubscribed from a send.
                     $send_data = module_newsletter::get_send($res['unsubscribe_send_id']);
                     _e('(unsubscribed %s)', print_date($res['time']));
                 } else {
                     if (isset($res['reason']) && $res['reason'] == 'no_email') {
                         _e('(do not send)');
                     } else {
                         if (isset($res['reason']) && $res['reason'] == 'doubleoptin') {
                             _e('(double opt-in incomplete)', print_date($res['time']));
                         } else {
                             _e('(unsubscribed %s)', print_date($res['time']));
                         }
                     }
                 }
             }
         }
     });
        /*display: inline-block;*/
    }
    span.newsletter-click-span:hover{
        filter:alpha(opacity=10);
        -moz-opacity:0.1;
        -khtml-opacity: 0.1;
        opacity: 0.1;
    }
</style>
    <?php 
    $style_tag = ob_get_clean();
    if (preg_match('#<head>#i', $content)) {
        $content = preg_replace('#<head>#i', '<head>' . $style_tag, $content);
    } else {
        echo $style_tag;
    }
    echo $content;
    exit;
}
print_heading(array('type' => 'h2', 'title' => 'Newsletter Link Clicks', 'button' => array('url' => module_newsletter::link_statistics($newsletter_id, $send_id), 'id' => 'refresh', 'title' => 'Back to Statistics')));
?>



<iframe src="<?php 
echo module_newsletter::link_statistics_link_clicks($newsletter_id, $send_id);
?>
&show=true" frameborder="0" style="width:100%; height:700px; border:0;" background="transparent"></iframe>


Ejemplo n.º 18
0
$module->page_title = _l('Preview');
//print_heading('Newsletter Editor');
$newsletter_id = isset($_REQUEST['newsletter_id']) ? (int) $_REQUEST['newsletter_id'] : false;
if (!$newsletter_id) {
    redirect_browser(module_newsletter::link_list(false));
}
//$newsletter = module_newsletter::get_newsletter($newsletter_id);
if (isset($_REQUEST['show'])) {
    // render the newsletter and display it on screen with nothing else.
    echo module_newsletter::render($newsletter_id, false, false, 'preview');
    exit;
}
?>


<table width="100%" cellpadding="5">
    <tbody>
    <tr>
        <td width="50%" valign="top">

            <?php 
print_heading(array('type' => 'h2', 'title' => 'Preview Newsletter', 'button' => array('url' => module_newsletter::link_open($newsletter_id), 'title' => 'Return to Editor')));
?>

<iframe src="<?php 
echo module_newsletter::link_preview($newsletter_id);
?>
&show=true" frameborder="0" style="width:100%; height:700px; border:0;" background="transparent"></iframe>


    </td></tr></tbody></table>