From 1e5ab81afe1bf5de568a62dd8096cdc51cab32c0 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 7 Mar 2015 16:30:46 -0800 Subject: [PATCH] Notifications were failing under some circumstance. 'Email address' option now working again. --- class2.php | 7 ++-- e107_admin/notify.php | 64 ++++++++++++++++++++-------------- e107_handlers/notify_class.php | 52 ++++++++++++++++++--------- 3 files changed, 76 insertions(+), 47 deletions(-) diff --git a/class2.php b/class2.php index 6e560c719..14d444e7e 100644 --- a/class2.php +++ b/class2.php @@ -669,10 +669,9 @@ $override = e107::getSingleton('override', true); //TODO - find & replace $overr $e_userclass = e107::getUserClass(); //TODO - find & replace $e_userclass, $e107->user_class -if(!empty($pref['notify'])) -{ - e107::getNotify()->registerEvents(); -} + +e107::getNotify()->registerEvents(); + // // O: Start user session diff --git a/e107_admin/notify.php b/e107_admin/notify.php index 9419baef9..e02eb1d62 100644 --- a/e107_admin/notify.php +++ b/e107_admin/notify.php @@ -36,8 +36,7 @@ $nc = new notify_config; $uc = new user_class; $mes = e107::getMessage(); -$uc->fixed_classes['email'] = 'Email Address =>'; -$uc->text_class_link['email'] = 'email'; + if (isset($_POST['update'])) { @@ -69,18 +68,14 @@ class notify_config function __construct() { - $ns = e107::getRender(); - $tp = e107::getParser(); $pref = e107::getPref(); - $sql = e107::getDb(); - $this->notify_prefs = e107::getConfig('notify')->getPref(); - - $this->prefCleanup(); - // print_a($this->notify_prefs); + $this->prefCleanup(); + $this->test(); $recalibrate = FALSE; + // load every e_notify.php file. if($pref['e_notify_list']) { @@ -156,7 +151,19 @@ class notify_config } - + + function test() + { + if(!empty($_POST['test'])) + { + $id = key( $_POST['test']); + $exampleData = array('id'=>'Test for '.$id, 'data'=>'example data' ); + e107::getMessage()->addSuccess('Triggering: '.$id); + e107::getEvent()->trigger($id, $exampleData); + } + + + } @@ -389,7 +396,10 @@ class notify_config { $tp = e107::getParser(); $frm = e107::getForm(); - $uc = e107::getUserClass(); + $uc = e107::getUserClass(); + $uc->fixed_classes['email'] = 'Email Address =>'; + $uc->text_class_link['email'] = 'email'; + if(defined($description)) { @@ -401,7 +411,7 @@ class notify_config ".$description.": - ".$uc->uc_dropdown('event['.$id.'][class]', varset($this->notify_prefs['event'][$id]['class'],255), "nobody,main,admin,member,classes,email","onchange=\"mail_field(this.value,'event_".$id."');\" "); + ".$uc->uc_dropdown('event['.$id.'][class]', varset($this->notify_prefs['event'][$id]['class'], e_UC_NOBODY), "nobody,main,admin,member,classes,email","onchange=\"mail_field(this.value,'event_".$id."');\" "); if($this -> notify_prefs['event'][$id]['class'] == 'email') { @@ -419,6 +429,12 @@ class notify_config $text .= $frm->hidden("event[".$id."][include]", $include); $text .= $frm->hidden("event[".$id."][legacy]", $legacy); // function or method + if($this->notify_prefs['event'][$id]['class'] != e_UC_NOBODY) + { + $text .= $frm->button('test['.$id.']', $id, 'confirm', 'Test'); + } + + $text .= " "; return $text; @@ -427,41 +443,35 @@ class notify_config function update() { - global $sql, $pref, $eArrayStorage; $this->changeList = array(); - + + $active = false; + foreach ($_POST['event'] as $key => $value) { if ($this -> update_event($key)) { - $active = TRUE; + $active = true; } } - if ($active) - { - $pref['notify'] = TRUE; - } - else - { - $pref['notify'] = FALSE; - } - // save_prefs(); - + // print_a($this->notify_prefs); /* $s_prefs = $tp -> toDB($this -> notify_prefs); $s_prefs = $eArrayStorage -> WriteArray($s_prefs); if($sql -> db_Update("core", "e107_value='".$s_prefs."' WHERE e107_name='notify_prefs'")!==FALSE) */ + + e107::getConfig()->set('notify',$active)->save(true,true,false); e107::getConfig('notify')->updatePref($this->notify_prefs); if (e107::getConfig('notify')->save(FALSE)) { // e107::getAdminLog()->logArrayAll('NOTIFY_01',$this->changeList); - return TRUE; + return true; } else { - return FALSE; + return false; } } diff --git a/e107_handlers/notify_class.php b/e107_handlers/notify_class.php index 9992f9f1b..0fb78b1d7 100644 --- a/e107_handlers/notify_class.php +++ b/e107_handlers/notify_class.php @@ -24,6 +24,12 @@ class notify function __construct() { include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_notify.php'); + + if(empty($this->notify_prefs)) + { + $this->notify_prefs = e107::getConfig('notify')->getPref(); + } + } @@ -32,9 +38,15 @@ class notify */ public function registerEvents() { - $e_event = e107::getEvent(); + $active = e107::getConfig()->get('notify'); - $this->notify_prefs = e107::getConfig('notify')->getPref(); + if(empty($active)) + { + e107::getMessage()->addDebug('Notify is disabled!'); + return false; + } + + $e_event = e107::getEvent(); if(varset($this->notify_prefs['event'])) { @@ -91,6 +103,7 @@ class notify + /** * Send an email notification following an event. * @@ -106,16 +119,7 @@ class notify */ function send($id, $subject, $message) { - - if(E107_DEBUG_LEVEL > 0) - { - $data = array('id'=>$id, 'subject'=>$subject, 'message'=>$message); - e107::getLog()->add('Notify Debug', $data, E_LOG_INFORMATIVE, "NOTIFY_DBG"); - return; - } - - - $e107 = e107::getInstance(); + $tp = e107::getParser(); $sql = e107::getDb(); @@ -130,8 +134,8 @@ class notify $blockOriginator = FALSE; // TODO: set this using a pref $recipients = array(); - if ($notifyTarget == 'email') - { // Single email address - that can always go immediately + if ($notifyTarget == 'email') // Single email address - that can always go immediately + { if (!$blockOriginator || ($this->notify_prefs['event'][$id]['email'] != USEREMAIL)) { $recipients[] = array( @@ -161,7 +165,7 @@ class notify { $qry .= ' AND `user_id` != '.USERID; } - if (FALSE !== ($count = $sql->gen($qry))) + if (false !== ($count = $sql->gen($qry))) { // Now add email addresses to the list while ($row = $sql->fetch(MYSQL_ASSOC)) @@ -175,8 +179,19 @@ class notify } } } + } + if(E107_DEBUG_LEVEL > 0) + { + $data = array('id'=>$id, 'subject'=>$subject, 'recipients'=> $recipients, 'prefs'=>$this->notify_prefs['event'][$id], 'message'=>$message); + e107::getMessage()->addDebug(print_a($data,true)); + e107::getLog()->add('Notify Debug', $data, E_LOG_INFORMATIVE, "NOTIFY_DBG"); + return; + } + + + if (count($recipients)) { require_once(e_HANDLER.'mail_manager_class.php'); @@ -196,7 +211,12 @@ class notify ); $result = $mailer->sendEmails('NOTIFY_TEMPLATE', $mailData, $recipients); - $e107->admin_log->e_log_event(10,-1,'NOTIFY',$subject,$message,FALSE,LOG_TO_ROLLING); + e107::getLog()->e_log_event(10,-1,'NOTIFY',$subject,$message,FALSE,LOG_TO_ROLLING); + } + else + { + $data = array('qry'=>$qry, 'error'=>'No recipients'); + e107::getLog()->add('Notify Debug', $data, E_LOG_WARNING_, "NOTIFY_DBG"); } }