1 | unit ModuleNews;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils, ModularSystem, ModuleBase, News, HTTPServer, ModuleUser;
|
---|
7 |
|
---|
8 | type
|
---|
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 |
|
---|
26 | implementation
|
---|
27 |
|
---|
28 | uses
|
---|
29 | Core, UserControlPage, SqlDatabase;
|
---|
30 |
|
---|
31 | { TModuleNews }
|
---|
32 |
|
---|
33 | function TModuleNews.Show(HandlerData: THTTPHandlerData): string;
|
---|
34 | begin
|
---|
35 | Result := News.Show(HandlerData);
|
---|
36 | end;
|
---|
37 |
|
---|
38 | constructor TModuleNews.Create(Owner: TComponent);
|
---|
39 | begin
|
---|
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');
|
---|
47 | end;
|
---|
48 |
|
---|
49 | destructor TModuleNews.Destroy;
|
---|
50 | begin
|
---|
51 | inherited;
|
---|
52 | end;
|
---|
53 |
|
---|
54 | procedure TModuleNews.Start;
|
---|
55 | begin
|
---|
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;
|
---|
66 | end;
|
---|
67 |
|
---|
68 | procedure TModuleNews.Stop;
|
---|
69 | begin
|
---|
70 | BeforeStop;
|
---|
71 | FreeAndNil(News);
|
---|
72 | //ModuleBase.Pages.UnregisterPage(UserControlPage);
|
---|
73 | //FreeAndNil(UserControlPage);
|
---|
74 | ModuleBase := nil;
|
---|
75 | AfterStop;
|
---|
76 | end;
|
---|
77 |
|
---|
78 | procedure TModuleNews.Install;
|
---|
79 | var
|
---|
80 | DbRows: TDbRows;
|
---|
81 | begin
|
---|
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;
|
---|
125 | end;
|
---|
126 |
|
---|
127 | procedure TModuleNews.Uninstall;
|
---|
128 | var
|
---|
129 | DbRows: TDbRows;
|
---|
130 | begin
|
---|
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;
|
---|
140 | end;
|
---|
141 |
|
---|
142 | procedure TModuleNews.Upgrade;
|
---|
143 | begin
|
---|
144 | inherited;
|
---|
145 | end;
|
---|
146 |
|
---|
147 | end.
|
---|
148 |
|
---|