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

Last change on this file since 19 was 19, checked in by julian, 12 years ago
  • Reintegrated BBCode
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                $topicPicsBox = Functions :: getTopicPicsBox();
200
201                $this->modules['Template']->assign(array(
202                    'show'=>$show,
203                    'error'=>$error,
204                    'smiliesBox'=>$smiliesBox,
205                    'topicPicsBox'=>$topicPicsBox,
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                    $topicPicsBox = Functions :: getTopicPicsBox();
383
384                    $this->modules['Template']->assign(array(
385                        'show'=>$show,
386                        'error'=>$error,
387                        'smiliesBox'=>$smiliesBox,
388                        'p'=>$p,
389                        'c'=>$c
390                    ));
391                }
392
393                $pmData['_pmSendDateTime'] = Functions::toDateTime($pmData['pmSendTimestamp']);
394                $pmData['_pmSender'] = ($pmData['pmType'] == 0) ? sprintf($this->modules['Language']->getString('from_x'),$pmData['pmFromNick']) : sprintf($this->modules['Language']->getString('to_x'),$pmData['PMFromNick']);
395
396                if($pmData['folderID'] == 0) $pmData['pmFolderName'] = $this->modules['Language']->getString('Inbox');
397                elseif($pmData['folderID'] == 1) $pmData['pmFolderName'] = $this->modules['Language']->getString('Outbox');
398
399                $pmData['_pmSubject'] = Functions::HTMLSpecialChars($pmData['pmSubject']);
400                $pmData['_pmMessageText'] = nl2br(Functions::HTMLSpecialChars($pmData['pmMessageText']));
401
402                $this->modules['Template']->assign(array(
403                    'pmID'=>$pmID,
404                    'pmData'=>$pmData
405                ));
406
407                $this->modules['Navbar']->addElements(
408                    array(Functions::HTMLSpecialChars($pmData['pmFolderName']),INDEXFILE.'?action=PrivateMessages&amp;folderID='.$pmData['folderID'].'&amp;'.MYSID),
409                    array($this->modules['Language']->getString('View_private_message'),INDEXFILE.'?action=PrivateMessages&amp;pmID='.$pmID.'&amp;'.MYSID)
410                );
411
412                $this->modules['PageParts']->printPage('PrivateMessagesViewPM.tpl');
413                break;
414
415            case 'ManageFolders':
416                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' ORDER BY folderName ASC");
417                $foldersData = $this->modules['DB']->raw2Array();
418
419                $this->modules['Template']->assign(array(
420                    'foldersData'=>$foldersData
421                ));
422
423                $this->modules['PageParts']->printPage('PrivateMessagesManageFolders.tpl');
424                break;
425
426            case 'AddFolder':
427                $p = Functions::getSGValues($_POST['p'],array('folderName'),'');
428
429                $error = '';
430
431                if(isset($_GET['doit'])) {
432                    if($p['folderName'] == '') $error = $this->modules['Language']->getString('error_invalid_folder_name');
433                    else {
434                        $this->modules['DB']->query("SELECT MAX(folderID) AS maxFolderID FROM ".TBLPFX."pms_folders WHERE userID='".USERID."'");
435                        list($maxFolderID) = $this->modules['DB']->fetchArray();
436
437                        if($maxFolderID < 1) $maxFolderID = 1;
438
439                        $this->modules['DB']->query("
440                            INSERT INTO
441                                ".TBLPFX."pms_folders
442                            SET
443                                folderID='".($maxFolderID+1)."',
444                                userID='".USERID."',
445                                folderName='".$p['folderName']."'
446                        ");
447
448                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
449                    }
450                }
451
452                $this->modules['Template']->assign(array(
453                    'p'=>$p,
454                    'error'=>$error
455                ));
456
457                $this->modules['PageParts']->printPage('PrivateMessagesAddFolder.tpl');
458                break;
459
460            case 'EditFolder':
461                $folderID = isset($_GET['folderID']) ? intval($_GET['folderID']) : 0;
462
463                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
464                ($this->modules['DB']->getAffectedRows() != 1) ? die('Kann Daten nich laden: PM-Ordner') : $folderData = $this->modules['DB']->fetchArray();
465
466                $p = Functions::getSGValues($_POST['p'],array('folderName'),'',Functions::addSlashes($folderData));
467
468                $error = '';
469
470                if(isset($_GET['doit'])) {
471                    if($p['folderName'] == '') $error = $this->modules['Language']->getString('error_invalid_folder_name');
472                    else {
473                        $this->modules['DB']->query("
474                            UPDATE
475                                ".TBLPFX."pms_folders
476                            SET
477                                FolderName='".$p['folderName']."'
478                            WHERE
479                                UserID='".USERID."'
480                                AND FolderID='".$folderID."'
481                        ");
482
483                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
484                    }
485                }
486
487                $this->modules['Template']->assign(array(
488                    'folderID'=>$folderID,
489                    'p'=>$p,
490                    'error'=>$error
491                ));
492
493                $this->modules['PageParts']->printPage('PrivateMessagesEditFolder.tpl');
494                break;
495
496            case 'DeleteFolder':
497                $folderID = isset($_GET['folderID']) ? intval($_GET['folderID']) : 0;
498                $moveFolderID = isset($_POST['moveFolderID']) ? intval($_POST['moveFolderID']) : -1;
499
500                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
501                ($this->modules['DB']->getAffectedRows() != 1) ? die('Kann Daten nich laden: PM-Ordner') : $folderData = $this->modules['DB']->fetchArray();
502
503                $this->modules['DB']->query("SELECT COUNT(*) AS folderPMsCounter FROM ".TBLPFX."pms WHERE pmToID='".USERID."' AND folderID='$folderID'");
504                list($folderPMsCounter) = $this->modules['DB']->fetchArray();
505
506                $foldersData = array($inboxFolderData,$outboxFolderData);
507                $this->modules['DB']->query("SELECT * FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID<>'".$folderID."' ORDER BY folderName ASC");
508                $foldersData = array_merge($foldersData,$this->modules['DB']->raw2Array());
509
510                $error = '';
511
512                if(isset($_GET['doit']) || $folderPMsCounter == 0) {
513                    $validFolder = FALSE;
514                    foreach($foldersData AS $curFolder) {
515                        if($curFolder['folderID'] == $moveFolderID) {
516                            $validFolder = TRUE;
517                            break;
518                        }
519                    }
520
521                    if($moveFolderID != -1 && !$validFolder) $error = $this->modules['Language']->getString('Invalid_selection');
522                    else {
523                        if($moveFolderID == -1) $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms WHERE pmToID='".USERID."' AND folderID='".$folderID."'");
524                        else $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET folderID='".$moveFolderID."' WHERE pmToID='".USERID."' AND folderID='".$folderID."'");
525
526                        $this->modules['DB']->query("DELETE FROM ".TBLPFX."pms_folders WHERE userID='".USERID."' AND folderID='".$folderID."'");
527
528                        // TODO: Richtige Meldung ausgeben
529                        Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ManageFolders&".MYSID);
530                    }
531                }
532
533                while(list($curKey) = each($foldersData))
534                    $foldersData[$curKey]['_moveText'] = sprintf($this->modules['Language']->getString('Move_messages_to'),$foldersData[$curKey]['folderName']);
535
536                $this->modules['Template']->assign(array(
537                    'foldersData'=>$foldersData,
538                    'folderID'=>$folderID
539                ));
540
541                $this->modules['PageParts']->printPage('PrivateMessagesDeleteFolder.tpl');
542                break;
543
544            case 'MovePMs':
545                $pmIDs = (isset($_POST['pmIDs']) && is_array($_POST['pmIDs'])) ? $_POST['pmIDs'] : array();
546                $targetFolderID = isset($_GET['targetFolderID']) ? intval($_GET['targetFolderID']) : 0;
547                $returnFolderID = isset($_GET['returnFolderID']) ? intval($_GET['returnFolderID']) : 0;
548                $returnPage = isset($_GET['returnPage']) ? intval($_GET['returnPage']) : 1;
549
550                /**
551                 * Check if target folder is valid
552                 */
553                if($targetFolderID != 0 && $targetFolderID != 1) {
554                    $this->modules['DB']->query("SELECT folderID FROM ".TBLPFX."pms_folders WHERE folderID='$targetFolderID' AND userID='".USERID."'");
555                    if($this->modules['DB']->getAffectedRows() == 0) Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
556                }
557
558                $this->modules['DB']->query("UPDATE ".TBLPFX."pms SET folderID='$targetFolderID' WHERE pmID IN ('".implode("','",$pmIDs)."') AND pmToID='".USERID."'");
559
560                Functions::myHeader(INDEXFILE."?action=PrivateMessages&mode=ViewFolder&folderID=$returnFolderID&page=$returnPage&".MYSID);
561                break;
562        }
563    }
564}
565
566?>
Note: See TracBrowser for help on using the repository browser.