diff options
| author | Antonio Gallo <tonicucoz@gmail.com> | 2011-01-26 03:05:35 +0000 | 
|---|---|---|
| committer | Antonio Gallo <tonicucoz@gmail.com> | 2011-01-26 03:05:35 +0000 | 
| commit | f51c3d89d5118e45914a1de7f6bdb03dd559e32e (patch) | |
| tree | c76ee67ddb62723503711175e406442b72c55103 /h-source/Application/Models | |
| parent | 1ddc3583a205edd248a53fcf65e3fbad3664f85f (diff) | |
added mail notifications for talk messages
Diffstat (limited to 'h-source/Application/Models')
| -rw-r--r-- | h-source/Application/Models/HardwareModel.php | 5 | ||||
| -rw-r--r-- | h-source/Application/Models/NorepeatModel.php | 35 | ||||
| -rw-r--r-- | h-source/Application/Models/ProfileModel.php | 8 | ||||
| -rw-r--r-- | h-source/Application/Models/TalkModel.php | 57 | 
4 files changed, 65 insertions, 40 deletions
diff --git a/h-source/Application/Models/HardwareModel.php b/h-source/Application/Models/HardwareModel.php index fb41fa3..d4c9a47 100644 --- a/h-source/Application/Models/HardwareModel.php +++ b/h-source/Application/Models/HardwareModel.php @@ -39,8 +39,9 @@ class HardwareModel extends Model_Map {  		$this->_tables='hardware,regusers,hardware_users';  		$this->_idFields='id_hard,id_user';  		$this->_where=array( -			'type'		=>	'hardware', -			'username'	=>	'regusers', +			'type'				=>	'hardware', +			'username'			=>	'regusers', +			'id_user'			=>	'regusers',  			'has_confirmed'		=>	'regusers',  			'deleted'			=>	'regusers',  			'-deleted'			=>	'hardware' diff --git a/h-source/Application/Models/NorepeatModel.php b/h-source/Application/Models/NorepeatModel.php deleted file mode 100644 index 39938b6..0000000 --- a/h-source/Application/Models/NorepeatModel.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -// h-source, a web software to build a community of people that want to share their hardware information. -// Copyright (C) 2010  Antonio Gallo (h-source-copyright.txt) -// -// This file is part of h-source -// -// h-source is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -//  -// h-source is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -// GNU General Public License for more details. -//  -// You should have received a copy of the GNU General Public License -// along with h-source.  If not, see <http://www.gnu.org/licenses/>. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NorepeatModel extends Model_Tree { - -	public function insert() -	{ -		parent::insert(); -		if ($this->queryResult) -		{ -			header('Refresh: 0;url=http://'.DOMAIN_NAME.$_SERVER['REQUEST_URI']); -			exit; -		} -	} - -}
\ No newline at end of file diff --git a/h-source/Application/Models/ProfileModel.php b/h-source/Application/Models/ProfileModel.php index 6c0071f..c8818b4 100644 --- a/h-source/Application/Models/ProfileModel.php +++ b/h-source/Application/Models/ProfileModel.php @@ -35,7 +35,8 @@ class ProfileModel extends Model_Tree {  		$this->softConditions['update'] = array(  			"checkLength|90"	=>	"real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters",  			"checkLength|1000"	=>	"projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters", -			"checkIsStrings|no,yes"	=>	"publish_mail" +			"checkIsStrings|no,yes"	=>	"publish_mail", +			"+checkIsStrings|no,yes"	=>	"send_notification"  		);  		parent::__construct(); @@ -58,6 +59,11 @@ class ProfileModel extends Model_Tree {  				'options'	=>	'no,yes',  				'labelString'=>	'Would you like to publish your e-mail address?'  			), +			'send_notification'		=>	array( +				'type'		=>	'Select', +				'options'	=>	'yes,no', +				'labelString'=>	'Would you like to receive mail notifications?' +			),  			'description'	=>	array(  				'type'		=>	'Textarea',  				'labelString'=>	'Your description' 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(),  | 
