]> git.mxchange.org Git - mailer.git/blob - beg.php
Removed comment introduced by Profi-Concept, this comment should fine (in a much...
[mailer.git] / beg.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 01/09/2005 *
4  * ===================                          Last change: 01/09/2005 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : beg.php                                          *
8  * -------------------------------------------------------------------- *
9  * Short description : Beg link for members                             *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Bettel-Link fuer Mitglieder                      *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009, 2010 by Mailer Developer Team                    *
20  * For more information visit: http://www.mxchange.org                  *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Load security stuff here
39 require('inc/libs/security_functions.php');
40
41 // Init start time
42 $GLOBALS['startTime'] = microtime(true);
43
44 // Set module
45 $GLOBALS['module'] = 'beg';
46 $GLOBALS['output_mode'] = -1;
47 $errorCode = null;
48
49 // Load the required file(s)
50 require('inc/config-global.php');
51
52 // Set content type
53 setContentType('text/html');
54
55 // Is the 'beg' extension active?
56 redirectOnUninstalledExtension('beg');
57
58 // Check for userid
59 if (isGetRequestParameterSet('userid')) {
60         // Init variables
61         $points = '0';
62
63         // Don't pay is the default...
64         $pay = false;
65
66         // Validate if it is not a number
67         if (isNicknameUsed(getRequestParameter('userid'))) {
68                 // Is the nickname extension there?
69                 if (isExtensionActive('nickname')) {
70                         // Maybe we have found a nickname?
71                         fetchUserData(getRequestParameter('userid'), 'nickname');
72                 } else {
73                         // Nickname entered but nickname is not active
74                         $errorCode = getCode('EXTENSION_PROBLEM');
75                 }
76         } else {
77                 // Direct userid
78                 fetchUserData(getRequestParameter('userid'));
79         }
80
81         // Check if locked in so don't pay points
82         $status = 'failed';
83
84         // Check if account was found
85         if ((isUserDataValid()) && (getUserData('status') == 'CONFIRMED')) {
86                 // Multiply configured values with 100000 and divide with 100000 so we can also handle small values
87                 // If we need more number behind the decimal dot then we just need to increase all these three
88                 // numbers matching to the numbers behind the decimal dot. Simple! ;-)
89                 $points = mt_rand((getConfig('beg_points') * 100000), (getConfig('beg_points_max') * 100000)) / 100000;
90
91                 // Set nickname / userid for template
92                 $content['userid'] = getRequestParameter('userid');
93                 $content['clicks'] = (getUserData('beg_clicks') + 1);
94                 $content['banner'] = loadTemplate('beg_banner', true);
95                 $content['points'] = $points;
96         } // END - if
97
98         // User id valid and not webmaster's id?
99         if ((isValidUserId(getUserData('userid'))) && (getConfig('beg_userid') != getUserData('userid'))) {
100                 // Update counter
101                 SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `beg_clicks`=`beg_clicks`+1 WHERE `userid`=%s LIMIT 1",
102                         array(getUserData('userid')), __FILE__, __LINE__);
103
104                 // Check for last entry for userid w/o IP number
105                 $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (`timeout` > (UNIX_TIMESTAMP() - {?beg_timeout?}) OR (timeout > (UNIX_TIMESTAMP() - {?beg_userid_timeout?}) AND `userid`=%s)) AND (`remote_ip`='%s' OR `sid`='%s') LIMIT 1",
106                         array(getUserData('userid'), detectRemoteAddr(), session_id()), __FILE__, __LINE__);
107
108                 // Entry not found, points set and not logged in?
109                 if (((SQL_HASZERONUMS($result)) || (isAdmin())) && ($points > 0) && (!isMember()) && (getConfig('beg_pay_mode') == 'NONE')) {
110                         // Admin is testing?
111                         if (!isAdmin()) {
112                                 // Remember remote address, userid and timestamp for next click
113                                 // but only when there is no admin begging.
114                                 // Admins shall be able to test it!
115                                 SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_beg_ips` (`userid`, `remote_ip`,`sid`, `timeout`) VALUES ('%s','%s','%s', UNIX_TIMESTAMP())",
116                                         array(getUserData('userid'), detectRemoteAddr(), session_id()), __FILE__, __LINE__);
117
118                                 // Was is successfull?
119                                 $pay (SQL_AFFECTEDROWS() == 1);
120                         } else {
121                                 // Is admin!
122                                 $pay = true;
123                         }
124
125                         // Pay points?
126                         if ($pay === true) {
127                                 // Add points to user or begging rallye account
128                                 if (addPointsBeg(getUserData('userid'), $points)) {
129                                         // Set 'done' message
130                                         $content['message'] = loadTemplate('beg_done', true, $content);
131                                 } else {
132                                         // Error!
133                                         $content['message'] = loadTemplate('beg_failed', true, $content);
134                                 }
135                         } else {
136                                 // Error!
137                                 $content['message'] = loadTemplate('beg_failed', true, $content);
138                         }
139                 } elseif (isMember()) {
140                         // Logged in user found!
141                         $content['message'] = loadTemplate('beg_login', true, $content);
142                 } elseif (getConfig('beg_pay_mode') != 'NONE') { // Other pay-mode active!
143                         // Load message template depending on pay-mode
144                         $content['message'] = loadTemplate('beg_pay_mode_'.strtolower(getConfig('beg_pay_mode')), true, $content);
145                         $pay = true;
146                 } else {
147                         // Clicked received while reload lock is active
148                         $content['message'] = loadTemplate('beg_failed', true, $content);
149                 }
150
151                 // Free memory
152                 SQL_FREERESULT($result);
153
154                 // Include header
155                 loadIncludeOnce('inc/header.php');
156
157                 // Load final template
158                 loadTemplate('beg_link', false, $content);
159
160                 // Tracker code enabled? (We don't track users here!
161                 if ((getConfig('beg_pay_mode') != 'NONE') && ($pay === true)) {
162                         // Prepare content for template
163                         // @TODO Opps, what is missing here???
164                         $content = array(
165                         );
166
167                         // Include config-depending template
168                         loadTemplate('beg_pay_code_'.strtolower(getConfig('beg_pay_mode')), false, $content);
169                 } elseif (($pay === false) && (!isset($content['message']))) {
170                         // Cannot pay! :-(
171                         $content['message'] = loadTemplate('beg_failed', true);
172                 }
173
174                 // Include footer
175                 loadIncludeOnce('inc/footer.php');
176         } elseif ((getUserData('status') != 'CONFIRMED') && (getUserData('status') != 'failed')) {
177                 // Maybe locked/unconfirmed account?
178                 $errorCode = generateErrorCodeFromUserStatus();
179         } elseif ((getUserData('userid') == '0') || (getUserData('status') == 'failed')) {
180                 // Inalid or locked account, so let's find out
181                 if (fetchUserData(getRequestParameter('userid'), 'nickname')) {
182                         // Locked account
183                         $errorCode = getCode('ACCOUNT_LOCKED');
184                 } else {
185                         // Invalid nickname! (404)
186                         $errorCode = getCode('USER_404');
187                 }
188         } elseif (getUserData('userid') == getConfig('beg_userid')) {
189                 // Webmaster's id cannot beg for points!
190                 $errorCode = getCode('BEG_SAME_AS_OWN');
191         }
192
193         // Reload to index module
194         if ((!empty($errorCode)) && (!empty($errorCode))) redirectToUrl('modules.php?module=index&amp;code=' . $errorCode . '&amp;ext=beg');
195 } else {
196         // No userid entered
197         redirectToUrl('modules.php?module=index');
198 }
199
200 // Really all done here... ;-)
201 shutdown();
202
203 // [EOF]
204 ?>