- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / content / tipafriend.php
1 <?php
2 //
3 // Created on: <24-Apr-2002 16:06:53 bf>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 require_once( "kernel/common/template.php" );
30
31 $http = eZHTTPTool::instance();
32
33 $NodeID = (int)$Params['NodeID'];
34 $Module = $Params['Module'];
35
36 $tpl = templateInit();
37 $tpl->setVariable( 'action', '' );
38
39 $error_strings = array();
40 $yourName = '';
41 $yourEmail = '';
42 $user = eZUser::currentUser();
43 $ini = eZINI::instance();
44 // Get name and email from current user, unless it is the anonymous user
45 if ( is_object( $user ) && $user->id() != $ini->variable( 'UserSettings', 'AnonymousUserID' ) )
46 {
47     $userObject = $user->attribute( 'contentobject' );
48     $yourName = $userObject->attribute( 'name' );
49     $yourEmail = $user->attribute( 'email' );
50 }
51 $receiversName = '';
52 $receiversEmail = '';
53
54 if ( $http->hasPostVariable( 'NodeID' ) )
55     $NodeID = (int)$http->variable( 'NodeID' );
56
57 $node = eZContentObjectTreeNode::fetch( $NodeID );
58 if ( is_object( $node ) )
59 {
60     $nodeName = $node->getName();
61 }
62 else
63 {
64     return $Module->handleError( eZError::KERNEL_NOT_AVAILABLE, 'kernel' );
65 }
66
67 $object = $node->object();
68 if ( !$object->canRead() )
69 {
70     return $Module->handleError( eZError::KERNEL_ACCESS_DENIED, 'kernel', array( 'AccessList' => $object->accessList( 'read' ) ) );
71 }
72
73 $hostName = eZSys::hostname();
74 $subject = ezpI18n::translate( 'kernel/content', 'Tip from %1: %2', null, array( $hostName, $nodeName ) );
75 $comment = '';
76 $overrideKeysAreSet = false;
77
78 if ( $http->hasPostVariable( 'SendButton' ) )
79 {
80     if ( $http->hasPostVariable( 'YourName' ) )
81         $yourName = $http->variable( 'YourName' );
82
83     if ( $http->hasPostVariable( 'YourEmail' ) )
84         $yourEmail = $http->variable( 'YourEmail' );
85
86     if ( $http->hasPostVariable( 'ReceiversEmail' ) )
87         $receiversEmail = $http->variable( 'ReceiversEmail' );
88
89     $receiversName = $receiversEmail;
90     if ( $http->hasPostVariable( 'ReceiversName' ) )
91         $receiversName = $http->variable( 'ReceiversName' );
92
93     if ( $http->hasPostVariable( 'Subject' ) )
94         $subject = $http->variable( 'Subject' );
95
96     if ( $http->hasPostVariable( 'Comment' ) )
97         $comment = $http->variable( 'Comment' );
98
99     // email validation
100     if ( !eZMail::validate( $yourEmail ) )
101         $error_strings[] = ezpI18n::translate( 'kernel/content', 'The email address of the sender is not valid' );
102     if ( !eZMail::validate( $receiversEmail ) )
103         $error_strings[] = ezpI18n::translate( 'kernel/content', 'The email address of the receiver is not valid' );
104
105     $fromEmail = null;
106
107     if ( $ini->hasVariable( 'TipAFriend', 'FromEmail' ) )
108     {
109         $fromEmail = $ini->variable( 'TipAFriend', 'FromEmail' );
110         if ( $fromEmail != null )
111             if ( !eZMail::validate( $fromEmail ) )
112             {
113                 eZDebug::writeError( "The email < $fromEmail > specified in [TipAFriend].FromEmail setting in site.ini is not valid",'tipafriend' );
114                 $fromEmail = null;
115             }
116     }
117     if ( $fromEmail == null )
118         $fromEmail = $yourEmail;
119         
120     if ( $http->hasSessionVariable('ezpContentTipafriendList') )
121     {
122         if ( strpos( $http->sessionVariable('ezpContentTipafriendList'), $NodeID . '|' . $receiversEmail ) !== false )
123             $error_strings[] = ezpI18n::translate( 'kernel/content', "You have already sent a tipafriend mail to this reciver regarding '$nodeName' content" );
124     }
125
126     if ( !isset( $error_strings[0] ) && !eZTipafriendRequest::checkReceiver( $receiversEmail ) )
127         $error_strings[] = ezpI18n::translate( 'kernel/content', 'The receiver has already received the maximum number of tipafriend mails the last hours' );
128
129     // no validation errors
130     if ( count( $error_strings ) == 0 )
131     {
132         $mail = new eZMail();
133         $mail->setSender( $fromEmail, $yourName );
134         $mail->setReceiver( $receiversEmail, $receiversName );
135         $mail->setSubject( $subject );
136
137         // fetch
138         $res = eZTemplateDesignResource::instance();
139         $res->setKeys( array( array( 'object',           $object->attribute( 'id' ) ),
140                               array( 'remote_id',        $object->attribute( 'remote_id' ) ),
141                               array( 'node_remote_id',   $node->attribute( 'remote_id' ) ),
142                               array( 'class',            $object->attribute( 'contentclass_id' ) ),
143                               array( 'class_identifier', $object->attribute( 'class_identifier' ) ),
144                               array( 'class_group',      $object->attribute( 'match_ingroup_id_list' ) ),
145                               array( 'section',          $object->attribute( 'section_id' ) ),
146                               array( 'node',             $NodeID ),
147                               array( 'parent_node',      $node->attribute( 'parent_node_id' ) ),
148                               array( 'depth',            $node->attribute( 'depth' ) ),
149                               array( 'url_alias',        $node->attribute( 'url_alias' ) )
150                               ) );
151         $overrideKeysAreSet = true;
152
153         // fetch text from mail template
154         $mailtpl = templateInit();
155         $mailtpl->setVariable( 'hostname', $hostName );
156         $mailtpl->setVariable( 'nodename', $nodeName );
157         $mailtpl->setVariable( 'node_id', $NodeID );
158         $mailtpl->setVariable( 'node', $node );
159         $mailtpl->setVariable( 'your_name', $yourName );
160         $mailtpl->setVariable( 'your_email', $yourEmail );
161         $mailtpl->setVariable( 'receivers_name', $receiversName );
162         $mailtpl->setVariable( 'receivers_email', $receiversEmail );
163         $mailtpl->setVariable( 'comment', $comment );
164         $mailtext = $mailtpl->fetch( 'design:content/tipafriendmail.tpl' );
165
166         if ( $mailtpl->hasVariable( 'content_type' ) )
167             $mail->setContentType( $mailtpl->variable( 'content_type' ) );
168
169         $mail->setBody( $mailtext );
170
171         // mail was sent ok
172         if ( eZMailTransport::send( $mail ) )
173         {
174             $tpl->setVariable( 'action', 'confirm' );
175
176             $request = eZTipafriendRequest::create( $receiversEmail );
177             $request->store();
178
179             // Increase tipafriend count for this node
180             $counter = eZTipafriendCounter::create( $NodeID );
181             $counter->store();
182
183             // Prevent user from sending tipafriend mail to same user on same node again for the rest of session
184             $sessionSentTipList = $NodeID . '|' . $receiversEmail;
185             if ( $http->hasSessionVariable('ezpContentTipafriendList') )
186             {
187                 $sessionSentTipList = $http->sessionVariable('ezpContentTipafriendList') . ',' . $sessionSentTipList;
188             }
189             $http->setSessionVariable('ezpContentTipafriendList', $sessionSentTipList );
190         }
191         else // some error occured
192         {
193             $tpl->setVariable( 'action', 'error' );
194         }
195         if ( $http->hasPostVariable( 'RedirectBack' ) && $http->postVariable( 'RedirectBack' ) == 1 )
196         {
197             $Module->redirectTo( $node->attribute( 'url_alias' ) );
198             return;
199         }
200     }
201 }
202 else if ( $http->hasPostVariable( 'CancelButton' ) )
203 {
204     $Module->redirectTo( $node->attribute( 'url_alias' ) );
205 }
206
207 if ( !$overrideKeysAreSet )
208 {
209     $res = eZTemplateDesignResource::instance();
210     $res->setKeys( array( array( 'object',           $object->attribute( 'id' ) ),
211                           array( 'remote_id',        $object->attribute( 'remote_id' ) ),
212                           array( 'node_remote_id',   $node->attribute( 'remote_id' ) ),
213                           array( 'class',            $object->attribute( 'contentclass_id' ) ),
214                           array( 'class_identifier', $object->attribute( 'class_identifier' ) ),
215                           array( 'class_group',      $object->attribute( 'match_ingroup_id_list' ) ),
216                           array( 'section',          $object->attribute( 'section_id' ) ),
217                           array( 'node',             $NodeID ),
218                           array( 'parent_node',      $node->attribute( 'parent_node_id' ) ),
219                           array( 'depth',            $node->attribute( 'depth' ) ),
220                           array( 'url_alias',        $node->attribute( 'url_alias' ) )
221                           ) );
222 }
223
224 $Module->setTitle( 'Tip a friend' );
225
226 $tpl->setVariable( 'node_id', $NodeID );
227 $tpl->setVariable( 'node', $node );
228 $tpl->setVariable( 'error_strings', $error_strings );
229 $tpl->setVariable( 'your_name', $yourName );
230 $tpl->setVariable( 'your_email', $yourEmail );
231 $tpl->setVariable( 'receivers_name', $receiversName );
232 $tpl->setVariable( 'receivers_email', $receiversEmail );
233 $tpl->setVariable( 'subject', $subject );
234 $tpl->setVariable( 'comment', $comment );
235
236 $Result = array();
237 $Result['content'] = $tpl->fetch( 'design:content/tipafriend.tpl' );
238 $Result['path'] = array( array( 'text' => ezpI18n::translate( 'kernel/content', 'Tip a friend' ),
239                                 'url' => false ) );
240
241 ?>