source: trunk/Modules/Chat/Chat.php

Last change on this file was 912, checked in by chronos, 3 years ago
  • Modified: Updated Common package.
File size: 4.6 KB
Line 
1<?php
2
3class PageChatHistory extends Page
4{
5 function __construct(System $System)
6 {
7 parent::__construct($System);
8 $this->Title = 'Historie chatu';
9 $this->Description = 'Výpis historie chatu';
10 $this->ParentClass = 'PagePortal';
11 }
12
13 function dechexr($Num)
14 {
15 $Num = dechex($Num);
16 return substr($Num, 4, 2).substr($Num, 2, 2).substr($Num, 0, 2);
17 }
18
19 function Show(): string
20 {
21 global $MonthNames;
22
23 if (!ModuleUser::Cast($this->System->GetModule('User'))->User->CheckPermission('Chat', 'Display')) return 'Nemáte oprávnění';
24
25 if (array_key_exists('date', $_GET)) $Date = $_GET['date'];
26 else $Date = date('Y-m-d');
27 $DateParts = explode('-', $Date);
28
29 $DbResult = $this->Database->select('ChatHistory', 'MAX(Time), MIN(Time)');
30 $RowTotal = $DbResult->fetch_array();
31
32 $StartDateTimeParts = explode(' ', $RowTotal['MIN(Time)']);
33 $StartDateParts = explode('-', $StartDateTimeParts[0]);
34 $EndDateTimeParts = explode(' ', $RowTotal['MAX(Time)']);
35 $EndDateParts = explode('-', $EndDateTimeParts[0]);
36
37 if (!array_key_exists('year', $_SESSION)) $_SESSION['year'] = date('Y', time());
38 if (array_key_exists('year', $_GET)) $_SESSION['year'] = addslashes($_GET['year']);
39
40 if (!array_key_exists('month', $_SESSION)) $_SESSION['month'] = date('n', time());
41 if (array_key_exists('month', $_GET)) $_SESSION['month'] = addslashes($_GET['month']);
42
43 $Output = '<div class="ChatHistory">';
44 for ($Year = $EndDateParts[0]; $Year >= $StartDateParts[0]; $Year--)
45 {
46 if ($_SESSION['year'] == $Year)
47 {
48 $Output .= '<div class="Year">'.$Year.'<div class="YearContent">';
49 if ($Year == $StartDateParts[0]) $StartMonth = ($StartDateParts[1] + 0); else $StartMonth = 1;
50 if ($Year == $EndDateParts[0]) $EndMonth = ($EndDateParts[1] + 0); else $EndMonth = 12;
51 for ($Month = $EndMonth; $Month >= $StartMonth; $Month--)
52 {
53 if ($_SESSION['month'] == $Month)
54 {
55 $Output .= '<div class="Months">'.$MonthNames[$Month].'<span>';
56 if (($Year == $StartDateParts[0]) and ($Month == $StartDateParts[1])) $StartDay = ($StartDateParts[2]+0); else $StartDay = 1;
57 if (($Year == $EndDateParts[0]) and ($Month == $EndDateParts[1])) $EndDay = ($EndDateParts[2]+0); else $EndDay = date('t',mktime(0,0,0,$Month,0,$Year));
58 for ($Day = $StartDay; $Day <= $EndDay; $Day++)
59 {
60 $Text = '<a href="?date='.$Year.'-'.$Month.'-'.$Day.'">'.$Day.'</a> ';
61 if (($DateParts[0] == $Year) and ($DateParts[1] == $Month) and ($DateParts[2] == $Day)) $Text = '<strong>'.$Text.'</strong>';
62 $Output .= $Text;
63 }
64 $Output .= '</span></div>';
65 } else $Output .= '<span><a href="?month='.$Month.'">'.$MonthNames[$Month].'</a></span> ';
66 }
67 $Output .='</div></div>';
68 } else $Output .= '<div class="Year"><a href="?year='.$Year.'">'.$Year.'</a></div>';
69 }
70 $Output .= '</div><div></div>';
71
72 $DbResult = $this->Database->select('ChatHistory', 'Nick, Color, Text, UNIX_TIMESTAMP(Time)', "RoomType = 0 AND Time > '".$Date." 00:00:00' AND Time < '".$Date." 23:59:59' ORDER BY Time DESC");
73 $Output .= '<div class="ChatHistoryText">';
74 if ($DbResult->num_rows > 0)
75 while ($Row = $DbResult->fetch_array())
76 {
77 $Text = $Row['Text'];;
78 // StrTr($Row['text'], "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE");
79 $Output .= '['.date('d.m.Y H:i:s',$Row['UNIX_TIMESTAMP(Time)']).'] <span style="color: #'.$this->dechexr($Row['Color']).'"><strong>&lt;'.$Row['Nick'].'&gt;</strong> '.(htmlspecialchars($Text)).'</span><br>';
80 }
81 else $Output .= 'V daném dni nebyly zaznamenány žádné zprávy.';
82 $Output .= '</div>';
83 return $Output;
84 }
85}
86
87class ModuleChat extends Module
88{
89 function __construct(System $System)
90 {
91 parent::__construct($System);
92 $this->Name = 'Chat';
93 $this->Version = '1.0';
94 $this->Creator = 'Chronos';
95 $this->License = 'GNU/GPLv3';
96 $this->Description = 'Show history of IRC chat and previous SunriseChat';
97 $this->Models = array(ChatHistory::GetClassName());
98 }
99
100 function DoStart(): void
101 {
102 $this->System->Pages['chat'] = 'PageChatHistory';
103 }
104}
105
106class ChatHistory extends Model
107{
108 static function GetModelDesc(): ModelDesc
109 {
110 $Desc = new ModelDesc(self::GetClassName());
111 $Desc->AddString('Nick');
112 $Desc->AddText('Text');
113 $Desc->AddDateTime('Time');
114 $Desc->AddInteger('Color');
115 $Desc->AddString('RoomName');
116 $Desc->AddInteger('RoomType');
117 $Desc->AddString('Host');
118 return $Desc;
119 }
120}
Note: See TracBrowser for help on using the repository browser.