source: trunk/Modules/News/ModuleNews.pas

Last change on this file was 151, checked in by chronos, 5 months ago
File size: 4.0 KB
Line 
1unit ModuleNews;
2
3interface
4
5uses
6 Classes, SysUtils, ModularSystem, ModuleBase, News, HTTPServer, ModuleUser;
7
8type
9 { TModuleNews }
10
11 TModuleNews = class(TModule)
12 public
13 ModuleBase: TModuleBase;
14 News: TNews;
15 function Show(HandlerData: THTTPHandlerData): string;
16 constructor Create(Owner: TComponent); override;
17 destructor Destroy; override;
18 procedure Start; override;
19 procedure Stop; override;
20 procedure Install; override;
21 procedure Uninstall; override;
22 procedure Upgrade; override;
23 end;
24
25
26implementation
27
28uses
29 Core, UserControlPage, SqlDatabase;
30
31{ TModuleNews }
32
33function TModuleNews.Show(HandlerData: THTTPHandlerData): string;
34begin
35 Result := News.Show(HandlerData);
36end;
37
38constructor TModuleNews.Create(Owner: TComponent);
39begin
40 inherited;
41 Identification := 'News';
42 Title := 'News and news groups';
43 Version := '1.0';
44 License := 'GNU/LGPL v3';
45 Author := 'Chronosoft';
46 Dependencies.Add('User');
47end;
48
49destructor TModuleNews.Destroy;
50begin
51 inherited;
52end;
53
54procedure TModuleNews.Start;
55begin
56 BeforeStart;
57 ModuleBase := TModuleBase(Manager.FindModuleByName('Base'));
58 //UserControlPage := TUserControlPage.Create(nil);
59 //ModuleBase.Pages.RegisterPage(UserControlPage, 'uzivatel');
60 //RegisterPage(TUserControlPage, UserControlPage, '');
61 News := TNews.Create;
62 News.ModuleUser := TModuleUser(Manager.FindModuleByName('User'));
63 News.Database := ModuleBase.Session.Database;
64 News.ModuleBase := ModuleBase;
65 AfterStart;
66end;
67
68procedure TModuleNews.Stop;
69begin
70 BeforeStop;
71 FreeAndNil(News);
72 //ModuleBase.Pages.UnregisterPage(UserControlPage);
73 //FreeAndNil(UserControlPage);
74 ModuleBase := nil;
75 AfterStop;
76end;
77
78procedure TModuleNews.Install;
79var
80 DbRows: TDbRows;
81begin
82 try
83 DbRows := TDbRows.Create;
84
85 Core.Core.CommonDatabase.Query(DbRows,
86 'CREATE TABLE IF NOT EXISTS `News` (' +
87 ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
88 ' `Title` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
89 ' `Content` text COLLATE utf8_czech_ci NOT NULL,' +
90 ' `Date` datetime NOT NULL DEFAULT "0000-00-00 00:00:00",' +
91 ' `TargetDate` datetime NOT NULL DEFAULT "0000-00-00 00:00:00",' +
92 ' `Author` varchar(32) COLLATE utf8_czech_ci NOT NULL,' +
93 ' `IP` varchar(16) COLLATE utf8_czech_ci NOT NULL,' +
94 ' `Category` int(11) DEFAULT "0",' +
95 ' `Enclosure` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
96 ' `User` int(11) NOT NULL DEFAULT "0",' +
97 ' `Link` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
98 ' PRIMARY KEY (`Id`),' +
99 ' KEY `category` (`Category`),' +
100 ' KEY `date` (`Date`),' +
101 ' KEY `Title` (`Title`),' +
102 ' KEY `Link` (`Link`)' +
103 ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;');
104
105 Core.Core.CommonDatabase.Query(DbRows,
106 'CREATE TABLE IF NOT EXISTS `NewsCategory` (' +
107 ' `Id` int(11) NOT NULL AUTO_INCREMENT,' +
108 ' `Caption` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
109 ' `Permission` int(11) NOT NULL DEFAULT "0",' +
110 ' `Sequence` int(11) NOT NULL,' +
111 ' `Group` int(11) NOT NULL DEFAULT "1",' +
112 ' `RSS` varchar(255) COLLATE utf8_czech_ci NOT NULL,' +
113 ' PRIMARY KEY (`Id`),' +
114 ' KEY `Sequence` (`Sequence`),' +
115 ' KEY `Group` (`Group`)' +
116 ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1; ');
117
118 Core.Core.CommonDatabase.Query(DbRows,
119 'ALTER TABLE `News`' +
120 ' ADD CONSTRAINT `News_ibfk_1` FOREIGN KEY (`Category`) REFERENCES `NewsCategory` (`Id`);');
121 finally
122 DbRows.Free;
123 end;
124 inherited;
125end;
126
127procedure TModuleNews.Uninstall;
128var
129 DbRows: TDbRows;
130begin
131 inherited;
132 try
133 DbRows := TDbRows.Create;
134
135 Core.Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `News`');
136 Core.Core.CommonDatabase.Query(DbRows, 'DROP TABLE IF EXISTS `NewsGroup`');
137 finally
138 DbRows.Free;
139 end;
140end;
141
142procedure TModuleNews.Upgrade;
143begin
144 inherited;
145end;
146
147end.
148
Note: See TracBrowser for help on using the repository browser.