* Invision Power Services * IP.Board v3.4.6 * ACP bulk mail skin file * Last Updated: $Date: 2013-02-07 11:03:55 -0500 (Thu, 07 Feb 2013) $ * * * @author $Author: mark $ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license http://www.invisionpower.com/company/standards.php#license * @package IP.Board * @subpackage Members * @link http://www.invisionpower.com * @since 20th February 2002 * @version $Rev: 11954 $ * */ class cp_skin_bulkmail { /** * Registry Object Shortcuts * * @var $registry * @var $DB * @var $settings * @var $request * @var $lang * @var $member * @var $memberData * @var $cache * @var $caches */ protected $registry; protected $DB; protected $settings; protected $request; protected $lang; protected $member; protected $memberData; protected $cache; protected $caches; /** * Constructor * * @param object $registry Registry object * @return @e void */ public function __construct( ipsRegistry $registry ) { $this->registry = $registry; $this->DB = $this->registry->DB(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); $this->member = $this->registry->member(); $this->memberData =& $this->registry->member()->fetchMemberData(); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); $this->lang = $this->registry->class_localization; } /** * Bulk mail start * * @param array Mail data * @param int Members to send to * @return string HTML */ public function mailSendStart( $mail, $members, $countmembers ) { $action = $this->settings['mandrill_api_key'] ? 'mail_send_mandrill' : 'mail_send_complete'; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<

{$this->lang->words['b_title']}

form_code}&do={$action}' method='post'> _admin_auth_key}' />

{$this->lang->words['b_title']}

  • {$this->lang->words['bulkmail_preview']}
  • {$this->lang->words['bulkmail_list']} ({$countmembers})
{$this->lang->words['b_maildetails']}
{$mail['mail_subject']}


{$this->lang->words['b_preview_desc']}
HTML; $IPBHTML .= $this->mss_recipients( 1, $countmembers, $members ); $IPBHTML .= << HTML; if ( !$this->settings['mandrill_api_key'] ) { $IPBHTML .= <<
{$this->lang->words['b_sending']}
{$this->lang->words['b_sending_info']}
HTML; } $IPBHTML .= << HTML; if ( $this->settings['mandrill_api_key'] ) { $IPBHTML .= << HTML; } else { $IPBHTML .= <<lang->words['b_percycle']}   HTML; } $IPBHTML .= <<lang->words['or']} {$this->lang->words['b_edit']}
HTML; //--endhtml--// return $IPBHTML; } function mss_recipients( $currentPage, $countmembers, $members ) { $IPBHTML = ""; //--starthtml--// if ( $countmembers > 10000 ) { $pages = ceil( $countmembers / 10000 ); $nextPage = $currentPage + 1; $nextPageLink = ( $currentPage == $pages ) ? '' : "Next →"; $prevPage = $currentPage - 1; $prevPageLink = ( $currentPage == 1 ) ? '' : "← Previous"; $IPBHTML .= "{$prevPageLink} Page {$currentPage} of {$pages} {$nextPageLink}"; } $count = 0; $sofar = 0; foreach ( $members as $member ) { $sofar++; if ( $count == 0 ) { $IPBHTML .= ""; } $IPBHTML .= << {$member['members_display_name']} ({$member['email']}) HTML; if ( $count == 3 ) { $IPBHTML .= ""; $count = 0; } else { $count++; } if ( $sofar >= 10000 ) { break; } } while ( $count != 0 and $count < 4 ) { $IPBHTML .= ""; $count++; } //--endhtml--// return $IPBHTML; } /** * Bulk mail form * * @param string Type (add|edit) * @param array Mail data * @param string Mail content * @param array Filter classes * @param array Error messages * @return string HTML */ public function mailForm( $type, $mail, $mail_content, $filters, $errors ) { $dd_ltmt = array( 0 => array( 'lt' , $this->lang->words['b_lessthan'] ), 1 => array( 'mt' , $this->lang->words['b_morethan'] ) ); if ( $type == 'add' ) { $title = $this->lang->words['b_create']; $button = $this->lang->words['b_proceed']; $html_checked = 0; } else { $title = $this->lang->words['b_editstored']; $button = $this->lang->words['b_edit']; //----------------------------------------- // Unpack more.. //----------------------------------------- $tmp = unserialize( stripslashes( $mail['mail_opts'] ) ); if ( is_array( $tmp ) and count ( $tmp ) ) { foreach( $tmp as $k => $v ) { if ( ! $mail[ $k ] ) { $mail[ $k ] = $v; } } } $html_checked = $mail['mail_html_on']; } $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' ); $editor = new $classToLoad(); $editor->setContent( $mail_content ); $form = array(); $form['groups'] = ''; $form['mail_subject'] = $this->registry->output->formInput( 'mail_subject', htmlspecialchars( IPSText::stripslashes( $_POST['mail_subject'] ? $_POST['mail_subject'] : $mail['mail_subject'] ), ENT_QUOTES ) ); $form['mail_content'] = $editor->show('mail_content'); $form['mail_content_plain'] = $this->registry->output->formTextarea( 'mail_content_plain', $mail_content, 60, 14, '', 'mail_content_plain', "' style='width: 100%'" ); // Hacky CSS thing, but eh $form['mail_post_ltmt'] = $this->registry->output->formDropdown( 'mail_post_ltmt', $dd_ltmt, $_POST['mail_post_ltml'] ? $_POST['mail_post_ltml'] : $mail['mail_post_ltmt'] ); $form['mail_filter_post'] = $this->registry->output->formSimpleInput( "mail_filter_post", $_POST['mail_filter_post'] ? $_POST['mail_filter_post'] : $mail['mail_filter_post'], 7 ); $form['mail_visit_ltmt'] = $this->registry->output->formDropdown( 'mail_visit_ltmt', $dd_ltmt, $_POST['mail_visit_ltml'] ? $_POST['mail_visit_ltml'] : $mail['mail_visit_ltmt'] ); $form['mail_filter_visit'] = $this->registry->output->formSimpleInput( "mail_filter_visit", $_POST['mail_filter_visit'] ? $_POST['mail_filter_visit'] : $mail['mail_filter_visit'], 7 ); $form['mail_joined_ltmt'] = $this->registry->output->formDropdown( 'mail_joined_ltmt', $dd_ltmt, $_POST['mail_joined_ltml'] ? $_POST['mail_joined_ltml'] : $mail['mail_joined_ltmt'] ); $form['mail_filter_joined'] = $this->registry->output->formSimpleInput( "mail_filter_joined", $_POST['mail_filter_joined'] ? $_POST['mail_filter_joined'] : $mail['mail_filter_joined'], 7 ); $form['tags'] = $this->registry->output->formInput( 'mandrill_tags', $_POST['mandrill_tags'] ? $_POST['mandrill_tags'] : is_array( $mail['mandrill_tags'] ) ? implode( ',', $mail['mandrill_tags'] ) : '' ); foreach( $this->cache->getCache('group_cache') as $g ) { if ( $g['g_id'] == $this->settings['guest_group'] ) { continue; } $checked = 0; if ( $mail['mail_groups'] ) { if ( strstr( ',' . $mail['mail_groups'] . ',', ',' . $g['g_id'] . ',' ) ) { $checked = 1; } } $form['groups'] .= $this->registry->output->formCheckbox( 'sg_' . $g['g_id'], $checked ) . "  {$g['g_title']}
"; } $standardStyle = ''; $plainStyle = 'display:none'; $htmlOn = 0; if ( $mail['mail_html_on'] or $this->request['mail_html_on'] or !$this->settings['email_use_html'] ) { $standardStyle = 'display:none'; $plainStyle = ''; $htmlOn = 1; } $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<

{$title}

HTML; if ( !empty( $errors ) ) { $errors = implode( '
', $errors ); $IPBHTML .= << {$errors}
HTML; } $IPBHTML .= <<form_code}&do=mail_save' method='post'> _admin_auth_key}' />

{$title}

HTML; if ( $this->settings['mandrill_api_key'] ) { $IPBHTML .= << HTML; } $IPBHTML .= <<
{$this->lang->words['b_step1_title']}
{$this->lang->words['b_subject']} {$form['mail_subject']}
{$this->lang->words['b_content']}
{$form['mail_content']}

{$this->lang->words['b_var_link']} {$this->lang->words['b_html']}

{$form['mail_content_plain']}

{$this->lang->words['b_var_link']} HTML; if ( $this->settings['email_use_html'] ) { $IPBHTML .= <<{$this->lang->words['b_standard']} HTML; } $IPBHTML .= <<

{$this->lang->words['mandrill_tags']} {$form['tags']}
{$this->lang->words['mandrill_tags_desc']}
{$this->lang->words['b_step2']}
{$this->lang->words['bulkmail_notes_override']}
« «
HTML; foreach ( $filters as $id => $data ) { $IPBHTML .= << HTML; foreach ( $data['filters'] as $f ) { $IPBHTML .= << HTML; } $IPBHTML .= << HTML; } $IPBHTML .= <<
{$f['title']} {$f['field']}
{$this->lang->words['b_qtag_info']}
{member_id} {$this->lang->words['b_qid']} {member_name} {$this->lang->words['b_qmname']}
{member_joined} {$this->lang->words['b_qjoin']} {member_last_visit} {$this->lang->words['b_lastactive']}
{member_posts} {$this->lang->words['b_qposts']} {reg_total} {$this->lang->words['b_qmtotal']}
{board_name} {$this->lang->words['b_qbname']} {board_url} {$this->lang->words['b_qboardurl']}
{busy_count} {$this->lang->words['b_qonline']} {busy_time} {$this->lang->words['b_qonlinetime']}
{total_posts} {$this->lang->words['b_qptotal']}
HTML; //--endhtml--// return $IPBHTML; } /** * HTML to show in popup * * @return string HTML */ public function mailPopupContent() { $IPBHTML = ""; //--starthtml--// $IPS_DOC_CHAR_SET = IPS_DOC_CHAR_SET; $IPBHTML .= <<
HTML; //--endhtml--// return $IPBHTML; } /** * Saved bulk mails overview * * @param string Content * @return string HTML */ public function mailOverviewWrapper( $content, $pages ) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<

{$this->lang->words['b_title']}