source: trunk/modules/PrivateMessages.class.php @ 22

Last change on this file since 22 was 22, checked in by julian, 12 years ago
  • topics.topicStatus => topics.topicIsClosed (also removed useless constants)
  • Creating pms works again
  • Continued refactoring (EditTopic?)
File size: 23.4 KB
Line 
1<?php
2
3class PrivateMessages extends ModuleTemplate {
4    protected $requiredModules = array(
5        'Auth',
6        'BBCode',
7        'Cache',
8        'Config',
9        'Constants',
10        'DB',
11        'Language',
12        'Navbar',
13        'PageParts',
14        'Template'
15    );
16
17    function executeMe() {
18        if($this->modules['Auth']->isLoggedIn() != 1) die('Kein Zugriff: Nicht eingeloggt');
19        elseif($this->modules['Config']->getValue('enable_pms') != 1) {
20            $this->modules['Navbar']->addElement($this->modules['Language']->getString('Function_deactivated'),'');
21            $this->modules['PageParts']->printMessage('function_deactivated');
22            exit;
23        }
24
25        $this->modules['PageParts']->setInPrivateMessages(TRUE);
26        $this->modules['Language']->addFile('PrivateMessages');
27        $this->modules['Navbar']->addElement($this->modules['Language']->getString('Private_messages'),INDEXFILE.'?action=PrivateMessages&amp;'.MYSID);
28
29        $inboxFolderData = array('folderID'=>0,'folderName'=>$this->modules['Language']->getString('Inbox'));
30        $outboxFolderData = array('folderID'=>1,'folderName'=>$this->modules['Language']->getString('Outbox'));
31
32        switch(@$_GET['mode']) {
33            default:
34                $folderID = isset($_GET['folderID']) ? intval($_GET['folderID']) : 0;
35                $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
36
37                if($folderID == 0) $folderData = $inboxFolderData;
38                elseif($folderID == 1) $folderData = $outboxFolderData;
39                else {
40                    $this->modules['DB']->query("SELECT folderID, folderName FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='$folderID'");
41                    if($this->modules['DB']->getAffectedRows() == 0) {
42                        $folderData = $inboxFolderData;
43                        $folderID = 0;
44                    }
45                    else $folderData = $this->modules['DB']->fetchArray();
46                }
47
48                $this->modules['DB']->query("SELECT COUNT(*) FROM ".TBLPFX."pms WHERE PMToID='".USERID."' AND FolderID='$folderID'");
49                list($pmsCounter) = $this->modules['DB']->fetchArray();
50
51                $pmsPerPage = 20;
52                //$this->modules['Config']->getValue('pms_per_page') = 10;
53
54                $pageListing = Functions::createPageListing($pmsCounter,$pmsPerPage,$page,"<a href=\"".INDEXFILE."?action=PrivateMessages&amp;mode=ViewFolder&amp;folderID=$folderID&amp;page=%1\$s&amp;".MYSID."\">%2\$s</a>");
55                $start = $page*$this->modules['Config']->getValue('pms_per_page')-$this->modules['Config']->getValue('pms_per_page');
56
57
58                // PM-Daten laden
59                $this->modules['DB']->query("
60                    SELECT
61                        t1.pmID,
62                        t1.pmSubject,
63                        t1.pmMessageText,
64                        t1.pmSendTimestamp,
65                        t1.pmFromID,
66                        t1.pmType,
67                        t1.pmIsRead,
68                        t1.pmIsReplied,
69                        t1.pmGuestNick,
70                        t2.userNick AS pmFromNick
71                    FROM
72                        ".TBLPFX."pms AS t1
73                    LEFT JOIN ".TBLPFX."users AS t2 ON t1.pmFromID=t2.userID
74                    WHERE
75                        pmToID='".USERID."'
76                        AND folderID='$folderID'
77                    ORDER BY
78                        pmSendTimestamp DESC
79                    LIMIT $start,$pmsPerPage
80                ");
81
82                $pmsData = array();
83                while($curPM = $this->modules['DB']->fetchArray()) {
84                    $curSenderNick = ($curPM['pmFromID'] == 0) ? $curPM['pmGuestNick'] : $curPM['pmFromNick'];
85                    $curPM['_pmSender'] = ($curPM['pmType'] == 0) ? sprintf($this->modules['Language']->getString('from_x'),$curSenderNick) : sprintf($this->modules['Language']->getString('to_x'),$curSenderNick);
86                    $curPM['_pmSendDateTime'] = Functions::toDateTime($curPM['pmSendTimestamp']);
87
88                    $curPM['_pmMessageTextShort'] = (strlen($curPM['pmMessageText']) > 100) ? Functions::HTMLSpecialChars(substr($curPM['pmMessageText'],0,100)).'...' : Functions::HTMLSpecialChars($curPM['pmMessageText']);
89
90                    $pmsData[] = $curPM;
91                }
92
93                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' ORDER BY folderName ASC");
94                $foldersData = array_merge(array($inboxFolderData,$outboxFolderData),$this->modules['DB']->raw2Array());
95
96                while(list($curKey) = each($foldersData))
97                    $foldersData[$curKey]['_moveText'] = sprintf($this->modules['Language']->getString('Move_messages_to'),$foldersData[$curKey]['folderName']);
98
99                $this->modules['Navbar']->addElement(Functions::HTMLSpecialChars($folderData['folderName']),INDEXFILE.'?action=PrivateMessages&amp;folderID='.$folderID.'&amp;'.MYSID);
100
101                $this->modules['Template']->assign(array(
102                    'pageListing'=>$pageListing,
103                    'pmsData'=>$pmsData,
104                    'folderID'=>$folderID,
105                    'page'=>$page,
106                    'foldersData'=>$foldersData
107                ));
108
109                $this->modules['PageParts']->printPage('PrivateMessagesViewFolder.tpl');
110            break;
111
112            case 'NewPM':
113                $this->modules['Navbar']->addElement($this->modules['Language']->getString('New_private_message'),INDEXFILE.'?action=PrivateMessages&amp;Mode=NewPM&amp;'.MYSID);
114
115                $p = Functions::getSGValues($_POST['p'],array('recipients','pmSubject','pmMessageText'),'');
116
117                $c = array();
118                $c['enableSmilies'] = $c['enableBBCode'] = $c['showSignature'] = $c['saveOutbox'] = 1;
119                $c['enableHtmlCode'] = $c['requestReadReceipt'] = 0;
120
121                $error = '';
122
123                if(isset($_GET['doit'])) {
124                    $c['enableSmilies'] = (isset($_POST['c']['enableSmilies']) && $this->modules['Config']->getValue('allow_pms_smilies') == 1) ? 1 : 0;
125                    $c['showSignature'] = (isset($_POST['c']['showSignature']) && $this->modules['Config']->getValue('enable_sig') == 1) ? 1 : 0;
126                    $c['enableBBCode'] = (isset($_POST['c']['enableBBCode']) && $this->modules['Config']->getValue('allow_pms_bbcode') == 1) ? 1 : 0;
127                    $c['saveOutbox'] = (isset($_POST['c']['saveOutbox']) && $this->modules['Config']->getValue('enable_outbox') == 1) ? 1 : 0;
128                    $c['requestReadReceipt'] = (isset($_POST['c']['requestReadReceipt']) && $this->modules['Config']->getValue('allow_pms_rconfirmation') == 1) ? 1 : 0;
129
130                    $recipients = explode(',',$p['recipients']);
131                    while(list($curKey) = each($recipients)) {
132                        $recipients[$curKey] = trim($recipients[$curKey]);
133                        if(!$recipients[$curKey] = Functions::getUserID($recipients[$curKey])) unset($recipients[$curKey]);
134                    }
135                    reset($recipients);
136
137                    if(count($recipients) == 0) $error = $this->modules['Language']->getString('error_no_recipient');
138                    elseif(trim($p['pmSubject']) == '') $error = $this->modules['Language']->getString('error_no_subject');
139                    elseif(trim($p['pmMessageText']) == '') $error = $this->modules['Language']->getString('error_no_message');
140                    else {
141                        foreach($recipients AS $curRecipient) {
142                            $this->modules['DB']->query("
143                                INSERT INTO
144                                    ".TBLPFX."pms
145                                SET
146                                    folderID='0',
147                                    pmFromID='".USERID."',
148                                    pmToID='".$curRecipient."',
149                                    pmIsRead='0',
150                                    pmType='0',
151                                    pmSubject='".$p['pmSubject']."',
152                                    pmMessageText='".$p['pmMessageText']."',
153                                    pmSendTimestamp='".time()."',
154                                    pmEnableBBCode='".$c['enableBBCode']."',
155                                    pmEnableSmilies='".$c['enableSmilies']."',
156                                    pmEnableHtmlCode='".$c['enableHtmlCode']."',
157                                    pmShowSignature='".$c['showSignature']."',
158                                    pmRequestReadReceipt='".$c['requestReadReceipt']."'
159                            ");
160
161                            if($c['saveOutbox'] == 1) {
162                                $this->modules['DB']->query("
163                                    INSERT INTO
164                                        ".TBLPFX."pms
165                                    SET
166                                        folderID='1',
167                                        pmFromID='".$curRecipient."',
168                                        pmToID='".USERID."',
169                                        pmIsRead='1',
170                                        pmType='1',
171                                        pmSubject='".$p['pmSubject']."',
172                                        pmMessageText='".$p['pmMessageText']."',
173                                        pmSendTimestamp='".time()."',
174                                        pmEnableBBCode='".$c['enableBBCode']."',
175                                        pmEnableSmilies='".$c['enableSmilies']."',
176                                        pmEnableHtmlCode='".$c['enableHtmlCode']."',
177                                        pmShowSignature='".$c['showSignature']."',
178                                        pmRequestReadReceipt='".$c['requestReadReceipt']."'
179                                ");
180                            }
181                        }
182                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&".MYSID);
183                    }
184                }
185
186                $show = array();
187                $show['enableSmilies'] = $this->modules['Config']->getValue('allow_pms_smilies') == 1;
188                $show['showSignature'] = $this->modules['Config']->getValue('enable_sig') == 1 && $this->modules['Config']->getValue('allow_pms_signature') == 1;
189                $show['enableBBCode'] = $this->modules['Config']->getValue('allow_pms_bbcode') == 1;
190                $show['enableHtmlCode'] = $this->modules['Config']->getValue('allow_pms_htmlcode') == 1;
191                $show['saveOutbox'] = $this->modules['Config']->getValue('enable_outbox') == 1;
192                $show['requestReadReceipt'] = $this->modules['Config']->getValue('allow_pms_rconfirmation') == 1;
193
194                $smilies = array(); $smiliesBox = '';
195                if($show['enableSmilies']) {
196                    $smilies = $this->modules['Cache']->getSmiliesData('write');
197                    $smiliesBox = Functions::getSmiliesBox();
198                }
199                $postPicsBox = Functions :: getPostPicsBox();
200
201                $this->modules['Template']->assign(array(
202                    'show'=>$show,
203                    'error'=>$error,
204                    'smiliesBox'=>$smiliesBox,
205                    'postPicsBox'=>$postPicsBox,
206                    'p'=>$p,
207                    'c'=>$c
208                ));
209
210                $this->modules['PageParts']->printPage('PrivateMessagesNewPM.tpl');
211            break;
212
213            case 'popNewPMReceived':
214                // TODO: Alles
215                include_once('pop_pheader.php');
216                $pms_tpl->parseCode(TRUE);
217                include_once('pop_ptail.php');
218            break;
219
220            case 'MarkPMsRead':
221                $pmIDs = (isset($_POST['pmIDs']) && is_array($_POST['pmIDs'])) ? $_POST['pmIDs'] : array();
222
223                $returnFolderID = isset($_GET['returnFolderID']) ? intval($_GET['returnFolderID']) : 0;
224                $returnPage = isset($_GET['returnPage']) ? intval($_GET['returnPage']) : 1;
225
226                if(count($pmIDs) != 0) {
227                    $pmIDs = implode("','",$pmIDs);
228                    $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET pmIsRead='1' WHERE pmID IN ('$pmIDs') AND pmToID='".USERID."' AND pmRequestReadReceipt<>'1'");
229                }
230
231                Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
232            break;
233
234            case 'DeletePMs':
235                $pmID = isset($_GET['pmID']) ? intval($_GET['pmID']) : 0;
236                $pmIDs = (isset($_POST['pmIDs']) && is_array($_POST['pmIDs'])) ? $_POST['pmIDs'] : array();
237
238                $returnFolderID = isset($_GET['returnFolderID']) ? intval($_GET['returnFolderID']) : 0;
239                $returnPage = isset($_GET['returnPage']) ? intval($_GET['returnPage']) : 1;
240
241                if($pmID != 0)
242                    $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms WHERE pmID='$pmID' AND pmToID='".USERID."'");
243
244                if(count($pmIDs) != 0) {
245                    $pmIDs = implode("','",$pmIDs);
246                    $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms WHERE pmID IN ('$pmIDs') AND pmToID='".USERID."'");
247                }
248
249                Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
250            break;
251
252            case 'ViewPM':
253                $pmID = isset($_GET['pmID']) ? intval($_GET['pmID']) : 0;
254                $returnPage = isset($_GET['returnPage']) ? intval($_GET['returnPage']) : 1;
255
256                // PM-Daten laden
257                $this->modules['DB']->query("
258                    SELECT
259                        t1.pmSubject,
260                        t1.pmRequestReadReceipt,
261                        t1.pmSendTimestamp,
262                        t1.folderID,
263                        t1.pmType,
264                        t1.pmToID,
265                        t1.pmFromID,
266                        t1.pmIsRead,
267                        t1.pmIsReplied,
268                        t1.pmMessageText,
269                        t2.userNick AS pmFromNick,
270                        t4.folderName AS pmFolderName
271                    FROM ".TBLPFX."pms AS t1
272                    LEFT JOIN ".TBLPFX."users AS t2 ON t1.PMFromID=t2.UserID
273                    LEFT JOIN ".TBLPFX."pms_folders AS t4 ON (t4.FolderID=t1.FolderID AND t4.UserID='".USERID."')
274                    WHERE t1.pmID='$pmID'
275                ");
276                if($this->modules['DB']->getAffectedRows() == 0) die('Kann PM-Daten nicht laden!');
277                $pmData = $this->modules['DB']->fetchArray();
278
279                if($pmData['pmToID'] != USERID) die('Kein Zugriff auf diese Nachricht!'); // ...User Zugriff auf PM hat...
280                if($pmData['pmIsRead'] != 1) {  // ...die PM schon gelesen ist...
281                    $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET pmIsRead='1' WHERE pmID='$pmID'");
282                    if($pmData['pmRequestReadReceipt'] == 1 && $this->modules['Config']->getValue('allow_pms_rconfirmation') == 1 && $pmData['pmFromID'] != 0) // ...und eine Lesebestaetigung angefordert wurde
283                        // TODO: Betreff und Nachricht in der Sprache des Empfaengers
284                        $this->modules['DB']->query("
285                            INSERT INTO
286                                ".TBLPFX."pms
287                            SET
288                                folderID='0',
289                                pmFromID='".USERID."',
290                                pmToID='".$pmData['pmFromID']."',
291                                pmIsRead='0',
292                                pmType='0',
293                                pmSubject='".Functions::addSlashes($this->modules['Language']->getString('read_confirmation_subject'))."',
294                                pmSendTimestamp='".time()."',
295                                pmEnableBBcode='0',
296                                pmEnableSmilies='0',
297                                pmEnableHtmlCode='0',
298                                pmShowSignature='0',
299                                pmRequestReadReceipt='0',
300                                pmMessageText='".Functions::addSlashes(sprintf($this->modules['Language']->getString('read_confirmation_message',$pmData['pmFromNick'],$pmData['pmSubject'])))."'
301                        ");
302                }
303
304                $p = array();
305                $p['pmSubject'] = isset($_POST['p']['pmSubject']) ? $_POST['p']['pmSubject'] : $pmData['pmSubject'];
306                $p['pmMessageText'] = isset($_POST['p']['pmMessageText']) ? $_POST['p']['pmMessageText'] : '';
307
308                if(!isset($_GET['doit']) && strtolower(substr($p['pmSubject'],0,3)) != 're:') $p['pmSubject'] = 'Re: '.$p['pmSubject']; // Falls noch kein Re: da ist, anfuegen
309
310                $c = array();
311                $c['enableSmilies'] = $c['enableBBCode'] = $c['showSignature'] = $c['saveOutbox'] = 1;
312                $c['enableHtmlCode'] = $c['requestReadReceipt'] = 0;
313
314                $error = '';
315
316                if(isset($_GET['doit']) && $pmData['pmType'] == 0 && $pmData['pmFromID'] != 0) {
317                    $c['enableSmilies'] = (isset($_POST['c']['EnableSmilies']) && $this->modules['Config']->getValue('allow_pms_smilies') == 1) ? 1 : 0;
318                    $c['showSignature'] = (isset($_POST['c']['ShowSignature']) && $this->modules['Config']->getValue('enable_sig') == 1) ? 1 : 0;
319                    $c['enableBBCode'] = (isset($_POST['c']['EnableBBCode']) && $this->modules['Config']->getValue('allow_pms_bbcode') == 1) ? 1 : 0;
320                    $c['saveOutbox'] = (isset($_POST['c']['SaveOutbox']) && $this->modules['Config']->getValue('enable_outbox') == 1) ? 1 : 0;
321                    $c['requestReadReceipt'] = (isset($_POST['c']['RequestReadReceipt']) && $this->modules['Config']->getValue('allow_pms_rconfirmation') == 1) ? 1 : 0;
322
323                    if(trim($p['pmSubject']) == '') $error = $this->modules['Language']->getString('error_no_subject');
324                    elseif(trim($p['pmMessageText']) == '') $error = $this->modules['Language']->getString('error_no_message');
325                    else {
326                        $this->modules['DB']->query("INSERT INTO ".TBLPFX."pms SET
327                            folderID='0',
328                            pmFromID='".USERID."',
329                            pmToID='".$pmData['pmFromID']."',
330                            pmIsRead='0',
331                            pmType='0',
332                            pmSubject='".$p['pmSubject']."',
333                            pmMessageText='".$p['pmMessageText']."',
334                            pmSendTimestamp='".time()."',
335                            pmEnableBBCode='".$c['enableBBCode']."',
336                            pmEnableSmilies='".$c['enableSmilies']."',
337                            pmEnableHtmlCode='".$c['enableHtmlCode']."',
338                            pmShowSignature='".$c['showSignature']."',
339                            pmRequestReadReceipt='".$c['requestReadReceipt']."'
340                        ");
341
342                        if($c['saveOutbox'] == 1) {
343                            $this->modules['DB']->query("INSERT INTO ".TBLPFX."pms SET
344                                folderID='1',
345                                pmFromID='".$pmData['pmFromID']."',
346                                pmToID='".USERID."',
347                                pmIsRead='1',
348                                pmType='1',
349                                pmSubject='".$p['pmSubject']."',
350                                pmMessageText='".$p['pmMessageText']."',
351                                pmSendTimestamp='".time()."',
352                                pmEnableBBCode='".$c['enableBBCode']."',
353                                pmEnableSmilies='".$c['enableSmilies']."',
354                                pmEnableHtmlCode='".$c['enableHtmlCode']."',
355                                pmShowSignature='".$c['showSignature']."',
356                                pmRequestReadReceipt='".$c['requestReadReceipt']."'
357                            ");
358                        }
359
360                        if($pmData['pmIsReplied'] != 1)
361                            $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET pmIsReplied='1' WHERE pmID='$pmID'");
362
363                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&".MYSID);
364                    }
365                }
366
367
368                if($pmData['pmType'] == 0) {
369                    $show = array();
370                    $show['enableSmilies'] = $this->modules['Config']->getValue('allow_pms_smilies') == 1;
371                    $show['showSignature'] = $this->modules['Config']->getValue('enable_sig') == 1 && $this->modules['Config']->getValue('allow_pms_signature') == 1;
372                    $show['enableBBCode'] = $this->modules['Config']->getValue('allow_pms_bbcode') == 1;
373                    $show['enableHtmlCode'] = $this->modules['Config']->getValue('allow_pms_htmlcode') == 1;
374                    $show['saveOutbox'] = $this->modules['Config']->getValue('enable_outbox') == 1;
375                    $show['requestReadReceipt'] = $this->modules['Config']->getValue('allow_pms_rconfirmation') == 1;
376
377                    $smilies = array(); $smiliesBox = '';
378                    if($show['enableSmilies']) {
379                        $smilies = $this->modules['Cache']->getSmiliesData('write');
380                        $smiliesBox = Functions::getSmiliesBox();
381                    }
382                    $postPicsBox = Functions::getPostPicsBox();
383
384                    $this->modules['Template']->assign(array(
385                        'show'=>$show,
386                        'error'=>$error,
387                        'smiliesBox'=>$smiliesBox,
388                        'p'=>$p,
389                        'c'=>$c,
390                        'postPicsBox'=>$postPicsBox
391                    ));
392                }
393
394                $pmData['_pmSendDateTime'] = Functions::toDateTime($pmData['pmSendTimestamp']);
395                $pmData['_pmSender'] = ($pmData['pmType'] == 0) ? sprintf($this->modules['Language']->getString('from_x'),$pmData['pmFromNick']) : sprintf($this->modules['Language']->getString('to_x'),$pmData['PMFromNick']);
396
397                if($pmData['folderID'] == 0) $pmData['pmFolderName'] = $this->modules['Language']->getString('Inbox');
398                elseif($pmData['folderID'] == 1) $pmData['pmFolderName'] = $this->modules['Language']->getString('Outbox');
399
400                $pmData['_pmSubject'] = Functions::HTMLSpecialChars($pmData['pmSubject']);
401                $pmData['_pmMessageText'] = nl2br(Functions::HTMLSpecialChars($pmData['pmMessageText']));
402
403                $this->modules['Template']->assign(array(
404                    'pmID'=>$pmID,
405                    'pmData'=>$pmData
406                ));
407
408                $this->modules['Navbar']->addElements(
409                    array(Functions::HTMLSpecialChars($pmData['pmFolderName']),INDEXFILE.'?action=PrivateMessages&amp;folderID='.$pmData['folderID'].'&amp;'.MYSID),
410                    array($this->modules['Language']->getString('View_private_message'),INDEXFILE.'?action=PrivateMessages&amp;pmID='.$pmID.'&amp;'.MYSID)
411                );
412
413                $this->modules['PageParts']->printPage('PrivateMessagesViewPM.tpl');
414                break;
415
416            case 'ManageFolders':
417                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' ORDER BY folderName ASC");
418                $foldersData = $this->modules['DB']->raw2Array();
419
420                $this->modules['Template']->assign(array(
421                    'foldersData'=>$foldersData
422                ));
423
424                $this->modules['PageParts']->printPage('PrivateMessagesManageFolders.tpl');
425                break;
426
427            case 'AddFolder':
428                $p = Functions::getSGValues($_POST['p'],array('folderName'),'');
429
430                $error = '';
431
432                if(isset($_GET['doit'])) {
433                    if($p['folderName'] == '') $error = $this->modules['Language']->getString('error_invalid_folder_name');
434                    else {
435                        $this->modules['DB']->query("SELECT MAX(folderID) AS maxFolderID FROM ".TBLPFX."pms_folders WHERE userID='".USERID."'");
436                        list($maxFolderID) = $this->modules['DB']->fetchArray();
437
438                        if($maxFolderID < 1) $maxFolderID = 1;
439
440                        $this->modules['DB']->query("
441                            INSERT INTO
442                                ".TBLPFX."pms_folders
443                            SET
444                                folderID='".($maxFolderID+1)."',
445                                userID='".USERID."',
446                                folderName='".$p['folderName']."'
447                        ");
448
449                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
450                    }
451                }
452
453                $this->modules['Template']->assign(array(
454                    'p'=>$p,
455                    'error'=>$error
456                ));
457
458                $this->modules['PageParts']->printPage('PrivateMessagesAddFolder.tpl');
459                break;
460
461            case 'EditFolder':
462                $folderID = isset($_GET['folderID']) ? intval($_GET['folderID']) : 0;
463
464                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
465                ($this->modules['DB']->getAffectedRows() != 1) ? die('Kann Daten nich laden: PM-Ordner') : $folderData = $this->modules['DB']->fetchArray();
466
467                $p = Functions::getSGValues($_POST['p'],array('folderName'),'',Functions::addSlashes($folderData));
468
469                $error = '';
470
471                if(isset($_GET['doit'])) {
472                    if($p['folderName'] == '') $error = $this->modules['Language']->getString('error_invalid_folder_name');
473                    else {
474                        $this->modules['DB']->query("
475                            UPDATE
476                                ".TBLPFX."pms_folders
477                            SET
478                                FolderName='".$p['folderName']."'
479                            WHERE
480                                UserID='".USERID."'
481                                AND FolderID='".$folderID."'
482                        ");
483
484                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
485                    }
486                }
487
488                $this->modules['Template']->assign(array(
489                    'folderID'=>$folderID,
490                    'p'=>$p,
491                    'error'=>$error
492                ));
493
494                $this->modules['PageParts']->printPage('PrivateMessagesEditFolder.tpl');
495                break;
496
497            case 'DeleteFolder':
498                $folderID = isset($_GET['folderID']) ? intval($_GET['folderID']) : 0;
499                $moveFolderID = isset($_POST['moveFolderID']) ? intval($_POST['moveFolderID']) : -1;
500
501                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
502                ($this->modules['DB']->getAffectedRows() != 1) ? die('Kann Daten nich laden: PM-Ordner') : $folderData = $this->modules['DB']->fetchArray();
503
504                $this->modules['DB']->query("SELECT COUNT(*) AS folderPMsCounter FROM ".TBLPFX."pms WHERE pmToID='".USERID."' AND folderID='$folderID'");
505                list($folderPMsCounter) = $this->modules['DB']->fetchArray();
506
507                $foldersData = array($inboxFolderData,$outboxFolderData);
508                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID<>'".$folderID."' ORDER BY folderName ASC");
509                $foldersData = array_merge($foldersData,$this->modules['DB']->raw2Array());
510
511                $error = '';
512
513                if(isset($_GET['doit']) || $folderPMsCounter == 0) {
514                    $validFolder = FALSE;
515                    foreach($foldersData AS $curFolder) {
516                        if($curFolder['folderID'] == $moveFolderID) {
517                            $validFolder = TRUE;
518                            break;
519                        }
520                    }
521
522                    if($moveFolderID != -1 && !$validFolder) $error = $this->modules['Language']->getString('Invalid_selection');
523                    else {
524                        if($moveFolderID == -1) $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms WHERE pmToID='".USERID."' AND folderID='".$folderID."'");
525                        else $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET folderID='".$moveFolderID."' WHERE pmToID='".USERID."' AND folderID='".$folderID."'");
526
527                        $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
528
529                        // TODO: Richtige Meldung ausgeben
530                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
531                    }
532                }
533
534                while(list($curKey) = each($foldersData))
535                    $foldersData[$curKey]['_moveText'] = sprintf($this->modules['Language']->getString('Move_messages_to'),$foldersData[$curKey]['folderName']);
536
537                $this->modules['Template']->assign(array(
538                    'foldersData'=>$foldersData,
539                    'folderID'=>$folderID
540                ));
541
542                $this->modules['PageParts']->printPage('PrivateMessagesDeleteFolder.tpl');
543                break;
544
545            case 'MovePMs':
546                $pmIDs = (isset($_POST['pmIDs']) && is_array($_POST['pmIDs'])) ? $_POST['pmIDs'] : array();
547                $targetFolderID = isset($_GET['targetFolderID']) ? intval($_GET['targetFolderID']) : 0;
548                $returnFolderID = isset($_GET['returnFolderID']) ? intval($_GET['returnFolderID']) : 0;
549                $returnPage = isset($_GET['returnPage']) ? intval($_GET['returnPage']) : 1;
550
551                /**
552                 * Check if target folder is valid
553                 */
554                if($targetFolderID != 0 && $targetFolderID != 1) {
555                    $this->modules['DB']->query("SELECT folderID FROM ".TBLPFX."pms_folders WHERE folderID='$targetFolderID' AND userID='".USERID."'");
556                    if($this->modules['DB']->getAffectedRows() == 0) Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
557                }
558
559                $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET folderID='$targetFolderID' WHERE pmID IN ('".implode("','",$pmIDs)."') AND pmToID='".USERID."'");
560
561                Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
562                break;
563        }
564    }
565}
566
567?>
Note: See TracBrowser for help on using the repository browser.