aboutsummaryrefslogtreecommitdiff
path: root/h-source/Application/Models
diff options
context:
space:
mode:
authorAntonio Gallo <tonicucoz@gmail.com>2011-01-26 03:05:35 +0000
committerAntonio Gallo <tonicucoz@gmail.com>2011-01-26 03:05:35 +0000
commitf51c3d89d5118e45914a1de7f6bdb03dd559e32e (patch)
treec76ee67ddb62723503711175e406442b72c55103 /h-source/Application/Models
parent1ddc3583a205edd248a53fcf65e3fbad3664f85f (diff)
added mail notifications for talk messages
Diffstat (limited to 'h-source/Application/Models')
-rw-r--r--h-source/Application/Models/HardwareModel.php5
-rw-r--r--h-source/Application/Models/NorepeatModel.php35
-rw-r--r--h-source/Application/Models/ProfileModel.php8
-rw-r--r--h-source/Application/Models/TalkModel.php57
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(),