annotate .cms/mod/rss.mod.php @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 <?php
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 $cms["modules"]["rss.mod.php"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 "name" => "rss_module_name",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 "description" => "rss_module_description",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 "files" => array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 ".cms/mod/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 ".cms/js/rss.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 ".cms/css/rss.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 ".cms/lang/ru_RU.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 ".cms/lang/en_US.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 ".cms/lang/uk_UA.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 // Return if module disabled
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 if ( ! empty( $cms["config"]["rss.mod.php"]["disabled"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 // Default Settings
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 if ( empty( $cms["config"]["rss.mod.php"]["update_interval"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 $cms["config"]["rss.mod.php"]["update_interval"] = 60;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 if ( empty( $cms["config"]["rss.mod.php"]["exclude"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 $cms["config"]["rss.mod.php"]["exclude"] = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 if ( empty( $cms["config"]["rss.mod.php"]["gen"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 $cms["config"]["rss.mod.php"]["gen"] = "dynamic";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 if ( empty( $cms["config"]["rss.mod.php"]["lastrun"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 $cms["config"]["rss.mod.php"]["lastrun"] = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 if ( is_admin() ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 hook_add_fn( "admin", "cms_rss_admin" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 hook_add_fn( "admin_header", "cms_rss_admin_header" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 if ( $cms["config"]["rss.mod.php"]["gen"] === "static" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 hook_add_fn( "cron", "cms_rss_cron" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 $cms["urls"]["^{$cms['base_path']}rss.xml$"] = "rss.xml";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 hook_add_fn( "rss.xml", "cms_rss_xml" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 // Количество элементов в ленте
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 if ( empty( $cms["config"]["rss.mod.php"]["count"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 $cms["config"]["rss.mod.php"]["count"] = 30;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 function cms_rss_admin_header() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 $conf = $cms["config"]["rss.mod.php"]["menu"]["rss"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 echo "<link rel=stylesheet href='{$cms['base_path']}css/rss.css'>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 echo "<script src='{$cms['base_path']}js/rss.js'></script>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 function cms_rss_cron() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 if ( $cms["config"]["rss.mod.php"]["lastrun"] < date( "Y-m-d H:i:s", time() - $cms["config"]["rss.mod.php"]["update_interval"] * 60) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 unlink( "{$cms['site_dir']}/rss.xml" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 $cms["config"]["rss.mod.php"]["lastrun"] = date( "Y-m-d H:i:s");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 function cms_rss_xml() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 header( "Content-Type: application/xml;charset=UTF-8" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 $rss = cms_rss_generate();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 echo $rss;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 if ( $cms["config"]["rss.mod.php"]["gen"] === "static" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 file_put_contents( "{$cms['site_dir']}/rss.xml", $rss );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 function cms_rss_update() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 // disable remove file
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 if ( ! empty( $cms["config"]["rss.mod.php"]["disabled"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 $file = "{$cms['site_dir']}/rss.xml";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 if ( file_exists( $file ) ) unlink( $file );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 function cms_rss_generate() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 if ( empty( $cms["base"] ) ) cms_base_connect();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 if ( empty( $cms["base"] ) ) return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 if ( mysqli_connect_error() ) return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 $domain = "{$cms['url']['scheme']}://{$cms['url']['host']}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 $cms["rss"] = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 $exclude = explode( "\n", $cms["config"]["rss.mod.php"]["exclude"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 foreach( $exclude as $n => $link ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 $t = trim( $link );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 if ( empty( $t ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 // delete empty lines
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 unset( $exclude[$n] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 $channel_title = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 $channel_link = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 $channel_description = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 $date = date( "Y-m-d H:i:s" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 $n = 0;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 $cms["rss_links"] = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 $q = "SELECT `title`, `seo_title`, `url`, `created`, `modified`, `description`, `text`, `published` FROM `pages` WHERE `created`<='{$date}' AND `published` ORDER BY `created` DESC";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 if ( $res = mysqli_query( $cms["base"], $q ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 while ( $page = mysqli_fetch_assoc( $res ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 if ( $page["url"] === "" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 $channel_title = $page["title"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 $channel_link = $domain . $cms["base_path"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 $channel_description = $page["description"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 if ( ! in_array( $page["url"], $exclude ) && $n < $cms["config"]["rss.mod.php"]["count"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 $sort = max( strtotime( $page["created"] ), (int) $page["modified"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 $link = $domain . $cms["base_path"] . $page["url"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140 if ( ! isset( $cms["rss_links"][$link] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142 // image
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 $enclosure = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 if ( preg_match( '/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/us', $page['text'], $m ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 $img = $m[1];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 $img_file = $cms["site_dir"] . $img;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147 if ( is_file( $img_file ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 $mime = mime_content_type( $img_file );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 if ( substr( $img, 0, 4 ) !== "http" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 if ( substr( $img, 0, 1 ) === "/" ) $img = substr( $img, 1 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 $img = $domain . $cms["base_path"] . $img;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153 $enclosure = "<enclosure url='{$img}' type='{$mime}'/>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157 if ( ! empty( $page["seo_title"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 $page["title"] = $page["seo_title"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 $cms["rss_links"][$link] = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161 $cms["rss"][] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 "title" => $page["title"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 "link" => $link,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164 "description" => $page["description"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165 "guid" => "{$page['modified']}",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166 "sort" => $sort,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 "enclosure" => $enclosure,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 $n++;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175 do_hook( "rss" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177 cms_asort( $cms["rss"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178 $cms["rss"] = array_reverse( $cms["rss"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
179
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
180 $content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
181 <rss version=\"2.0\">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
182
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
183 <channel>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
184 <title>{$channel_title}</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
185 <link>{$channel_link}</link>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
186 <description>{$channel_description}</description>\n";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
187 foreach( $cms["rss"] as $item ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
188 $content .= " <item>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
189 <title>{$item['title']}</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
190 <link>{$item['link']}</link>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
191 <guid>{$item['guid']}</guid>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
192 <description>{$item['description']}</description>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
193 {$item['enclosure']}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
194 </item>\n";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
195 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
196 $content .= " </channel>\n</rss>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
197 return $content;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
198 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
199
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
200
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
201 function cms_rss_admin() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
202 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
203
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
204 $conf = $cms["config"]["rss.mod.php"]["menu"]["rss"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
205 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
206
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
207 // Save settings
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
208 if ( ! empty( $_POST["save_settings_rss"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
209 $list = preg_split( "/\r\n|\n\r|\r|\n/u", $_POST["exclude"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
210 $base_url = "{$cms['url']['scheme']}://{$cms['url']['host']}{$cms['base_path']}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
211 foreach ( $list as $key => $value ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
212 // remove domain
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
213 $list[$key] = trim( str_replace( $base_url, "", $value ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
214 if ( substr( $list[$key], 0, 1 ) === "/" ) $list[$key] = substr( $list[$key], 1 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
215 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
216 $list = implode( "\n", $list );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
217 $cms["config"]["rss.mod.php"]["gen"] = $_POST["gen"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
218 $cms["config"]["rss.mod.php"]["exclude"] = $list;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
219 $cms["config"]["rss.mod.php"]["update_interval"] = (int) $_POST["update_interval"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
220 $cms["config"]["rss.mod.php"]["count"] = (int) $_POST["count"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
221 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
222 if ( $cms["config"]["rss.mod.php"]["gen"] === "dynamic" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
223 unlink( "{$cms['site_dir']}/rss.xml" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
224 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
225 cms_rss_update();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
226 header( "Location: {$cms['base_path']}{$cms['config']['admin.mod.php']['admin_url']}" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
227 $cms["hooks"]["admin"]["next"] = ""; // Предотвратить выдачу админки
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
228 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
229 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
230
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
231 // Create menu item if not exists
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
232 if ( empty( $cms["config"]["rss.mod.php"]["menu"]["rss"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
233 $cms["config"]["rss.mod.php"]["menu"]["rss"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
234 "title" => "rss_module_name",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
235 "sort" => 65,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
236 "section" => "settings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
237 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
238 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
239 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
240
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
241 $ch["static"] = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
242 $ch["dynamic"] = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
243 $ch[ $cms["config"]["rss.mod.php"]["gen"] ] = "checked";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
244
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
245 $rss = "{$cms['url']['scheme']}://{$cms['url']['host']}{$cms['base_path']}rss.xml";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
246
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
247 $page = "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
248 <div class=rss>" . __( "view_rss" ) . " <a href='{$rss}' target=_blank>{$rss}</a></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
249
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
250 <form method=post>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
251
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
252 <div class=xml-wrapper-hidden>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
253 <div>" . __( "excluded_links" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
254 <textarea name=exclude rows=12 autocomplete=off>{$cms['config']['rss.mod.php']['exclude']}</textarea>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
255 <div class=save_2_col>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
256 <button name=save_settings_rss value=save>" . __( "save" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
257 <div class=select-dropdown>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
258 <div class=field-search>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
259 <input class=search-field autocomplete=off placeholder='" . __( "placeholder" ) . "'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
260 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
261 <ul class=list-search>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
262
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
263 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
264 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
265 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
266 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
267
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
268 <div class=xml-static-dynamic>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
269 <div>" . __( "rss_gen" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
270 <label><input name=gen type=radio value=dynamic {$ch['dynamic']}> " . __( "dynamic" ) . "</label>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
271 <label><input name=gen type=radio value=static {$ch['static']}> " . __( "static" ) . "</label>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
272 <p>" . __( "rss_items_count" ) . ": <input type=text name=count value={$cms['config']['rss.mod.php']['count']}></p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
273 <button name=save_settings_rss value=save>" . __( "save" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
274 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
275 <div class=xml-static-cron>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
276 <div>" . __( "update_freq" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
277 <p>" . __( "static_freq" ) . " <input type=text name=update_interval value={$cms['config']['rss.mod.php']['update_interval']}> " . __( "minutes" ) . "</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
278 <p>" . __( "url_for_cron" ) . ": {$cms['url']['scheme']}://{$cms['url']['host']}{$cms['base_path']}{$cms['config']['admin.mod.php']['cron_url']}</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
279 <button name=save_settings_rss value=save>" . __( "save" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
280 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
281 </form>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
282 ";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
283
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
284 $cms["admin_pages"]["rss"] = $page;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
285
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
286 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
287
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
288 }