From f51c3d89d5118e45914a1de7f6bdb03dd559e32e Mon Sep 17 00:00:00 2001 From: Antonio Gallo Date: Wed, 26 Jan 2011 03:05:35 +0000 Subject: added mail notifications for talk messages --- h-source/Application/Models/TalkModel.php | 57 +++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'h-source/Application/Models/TalkModel.php') diff --git a/h-source/Application/Models/TalkModel.php b/h-source/Application/Models/TalkModel.php index d6d935b..e29e073 100644 --- a/h-source/Application/Models/TalkModel.php +++ b/h-source/Application/Models/TalkModel.php @@ -20,14 +20,16 @@ if (!defined('EG')) die('Direct access not allowed!'); -class TalkModel extends NorepeatModel { +class TalkModel extends Model_Tree { public function __construct() { $this->_tables = 'talk'; $this->_idFields = 'id_talk'; $this->_where=array( - 'id_hard' => 'talk' + 'id_hard' => 'talk', + 'has_confirmed' => 'regusers', + '-deleted' => 'regusers', ); $this->orderBy = 'talk.id_talk desc'; @@ -41,6 +43,57 @@ class TalkModel extends NorepeatModel { parent::__construct(); } + public function insert() + { + if (parent::insert()) + { + if (strcmp($this->values['id_hard'],0) !== 0) + { + $clean['id_hard'] = (int)$this->values['id_hard']; + $clean['created_by'] = (int)$this->values['created_by']; + + $hard = new HardwareModel(); + $users = $hard->select('username,e_mail') + ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send('Boxes'); + + $talkUsers = $this->select('username,e_mail') + ->from('talk inner join regusers') + ->on('talk.created_by = regusers.id_user') + ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'-deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $allUsers = array_merge($users,$talkUsers); + + $userObj = new UsersModel(); + $myName = $userObj->getUser($clean['created_by']); + + $arrayE = new ArrayExt(); + $fusers = $arrayE->subsetComplementary($allUsers,$myName); + + //remove users that do not want the email notification + $inString = "'".implode("','",array_keys($fusers))."'"; + $profile = new ProfileModel(); + $ffusers = $profile->select('username,e_mail') + ->from('regusers inner join profile') + ->on('regusers.id_user = profile.created_by') + ->where(array('send_notification'=>'yes','username'=>"in($inString)")) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $ffusers = array_flip($ffusers); + + //send the notice + Account::sendTalkNotice($myName,$ffusers,$clean['id_hard']); + + header('Refresh: 0;url=http://'.DOMAIN_NAME.$_SERVER['REQUEST_URI']); + exit; + } + } + } + public $formStruct = array( 'entries' => array( 'title' => array(), -- cgit v1.2.3