annotate .cms/mod/admin.mod.php @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
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"]["admin.mod.php"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 "name" => "admin_module_name",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 "description" => "admin_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/admin.cms/html.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 ".cms/mod/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 ".cms/js/admin.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 ".cms/css/admin.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 ".cms/lang/ru_RU.UTF-8/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 ".cms/lang/en_US.UTF-8/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 ".cms/lang/uk_UA.UTF-8/admin.mod.php",
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
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 // Return if module disabled
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 if ( ! empty( $cms["config"]["admin.mod.php"]["disabled"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 if ( ! empty( $cms["config"]["locale"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 $translit = "{$cms['cms_dir']}/lang/{$cms['config']['locale']}/translit.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 if ( is_file( $translit ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 include_once( $translit );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 // on install admin_url == base_path
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 if ( ! isset( $cms["config"]["admin.mod.php"]["admin_url"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 $cms["config"]["admin.mod.php"]["admin_url"] = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 }
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"]["admin.mod.php"]["api_url"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 $cms["config"]["admin.mod.php"]["api_url"] = "api" . cms_uid();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 //cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 if ( empty( $cms["config"]["admin.mod.php"]["cron_url"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 $cms["config"]["admin.mod.php"]["cron_url"] = "cron" . cms_uid();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 //cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 if ( ! empty( $cms["config"]["admin.mod.php"]["clear_cache"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 hook_add_fn( "template", "cms_admin_clear_cache", 4 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 $cms["urls"]["^{$cms['base_path']}{$cms['config']['admin.mod.php']['admin_url']}$"] = "admin";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 $cms["urls"]["^{$cms['base_path']}{$cms['config']['admin.mod.php']['api_url']}$"] = "api";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 $cms["urls"]["^{$cms['base_path']}{$cms['config']['admin.mod.php']['cron_url']}$"] = "cron";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 // Authorized admin and not authorized admin
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 if ( is_admin() ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 hook_add_fn( "admin_header", "cms_admin_admin_header" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 hook_add_fn( "api", "cms_admin_api" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 hook_add_fn( "admin", "cms_admin_admin", 9999 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 function cms_admin_clear_cache() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 header( "Clear-Site-Data: \"cache\"" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 unset( $cms["config"]["admin.mod.php"]["clear_cache"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 function cms_admin_admin_header() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 echo "<script src='{$cms['base_path']}js/admin.js'></script>";
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
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 function is_admin() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 return isset( $_COOKIE["sess"] ) && isset( $cms["config"]["logged"][ $_COOKIE["sess"] ] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 // Боковое меню в админке
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 function cms_admin_menu() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 // Сохраненные настройки боковой панели: $cms["config"]["admin_sections"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 // Текущее состояние настроек формируемое динамически: $cms["admin_sections"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 if ( ! empty( $cms["config"]["admin_sections"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 $cms["admin_sections"] = $cms["config"]["admin_sections"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 $cms["admin_sections"] = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 // Настройки пунктов сохраняются в настройках модулей, а не в секции,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 // чтобы отключение модуля прятало пункт из боковой панели
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 foreach( $cms["config"] as $mod => $mod_cfg ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 if ( substr( $mod, -8, 8 ) === ".mod.php" && empty( $mod_cfg["disabled"] ) && isset( $mod_cfg["menu"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 foreach( $mod_cfg["menu"] as $menu => $menu_cfg ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 $section = $menu_cfg["section"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 $menu_cfg["module"] = $mod; // для последующей локализации
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 $cms["admin_sections"][$section]["items"][$menu] = $menu_cfg;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 // Локализация заголовка секции
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 $locale = $cms["config"]["locale"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 if ( ! isset( $cms["admin_sections"][$section]["title"] ) && isset( $cms["lang"][$mod][$locale][$section] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 $cms["admin_sections"][$section]["title"] = $cms["lang"][$mod][$locale][$section];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 // default section sort
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 if ( isset( $menu_cfg["section_sort"] ) && ! isset( $cms["admin_sections"][$section]["sort"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 $cms["admin_sections"][$section]["sort"] = $menu_cfg["section_sort"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 }
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 // Затем эти данные используются в .cms/admin.cms/html.php
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 // Sort & Translate
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 $default_sort = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 "content" => 100,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 "settings" => 1000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 foreach( $cms["admin_sections"] as $section => $sec_conf ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 // Сортировка. Установить порядковый номер если не установлен.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 if ( ! isset( $cms["admin_sections"][$section]["sort"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 if ( isset( $default_sort[$section] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 $cms["admin_sections"][$section]["sort"] = $default_sort[$section];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 $cms["admin_sections"][$section]["sort"] = 500;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 // translate
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140 if ( ! isset( $cms["admin_sections"][$section]["title"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 $cms["admin_sections"][$section]["title"] = __( $section );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 // Sort sections
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 cms_asort( $cms["admin_sections"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 // Sort items inside sections
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 foreach( $cms["admin_sections"] as $section_name => $section ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 cms_asort( $cms["admin_sections"][$section_name]["items"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 function cms_admin_admin() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 $cms["template"] = "admin.cms";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157 $cms["status"] = "200";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 $cms["hooks"]["write"]["disabled"] = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 // Not required code if not authorized
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161 if ( ! is_admin() ) return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 $conf = $cms["config"]["admin.mod.php"]["menu"]["auth"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166 // Save settings
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 if ( ! empty( $_POST["change_admin_login"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 $login = trim( $_POST["admin_login"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 $password = trim( $_POST["admin_password"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 $cms["config"]["admin.mod.php"]["admin_login"] = $login;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 $cms["config"]["admin.mod.php"]["admin_password"] = $password;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172 $cms["config"]["admin.mod.php"]["admin_url"] = trim( $_POST["admin_url"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174 header( "Location: {$cms['base_path']}{$cms['config']['admin.mod.php']['admin_url']}" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175 $cms["hooks"]["admin"]["next"] = ""; // Предотвратить выдачу админки
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
179 $rows = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
180 foreach ( $cms["config"]["logged"] as $login => $attr ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
181 if ( $login === $_COOKIE["sess"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
182 $current = "class=current";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
183 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
184 $current = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
185 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
186 $rows .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
187 <div {$current}>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
188 <div class=del-sess data-login='{$login}'></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
189 <div class=date>{$attr['date']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
190 <div class=ip>{$attr['ip']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
191 <div class=agent>{$attr['user_agent']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
192 </div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
193 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
194
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
195 $logouts = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
196 if ( ! empty( $cms["config"]["logouted"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
197 // Перебираем закрытые сессии в прямом порядки
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 foreach ( $cms["config"]["logouted"] as $attr ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
201 $logouts = "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
202 <div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
203 <div></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
204 <div class=date>{$attr['date']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
205 <div class=ip>{$attr['ip']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
206 <div class=agent>{$attr['user_agent']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
207 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
208 {$logouts}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
209 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
210 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
211
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
212 // Display settings
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
213 $tr_login = __( "login_or_password" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
214 $tr_passw = __( "password" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
215 $tr_set = __( "set_password" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
216 $tr_current = __( "current_logins" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
217 $tr_history = __( "logins_history" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
218 $tr_admin_url = __( "admin_url" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
219 $form = "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
220 <form method=post>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
221 <div class=admin-url>{$tr_admin_url}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
222 <input name=admin_url type=text value='{$cms['config']['admin.mod.php']['admin_url']}' autocomplete=off size=10>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
223 <div class=login-title>{$tr_login}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
224 <input name=admin_login type=text value='{$cms['config']['admin.mod.php']['admin_login']}' autocomplete=off size=22>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
225 <div class=passwd-title>{$tr_passw}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
226 <div class=password-widget>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
227 <input name=admin_password type=password value='{$cms['config']['admin.mod.php']['admin_password']}' autocomplete=off size=10>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
228 <div class=password-eye></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
229 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
230 <div></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
231 <button value=save name=change_admin_login>{$tr_set}</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
232 </form>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
233
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
234 <div class=current-sess>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
235 <div class=table-title>{$tr_current}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
236 <div class=sess-table>{$rows}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
237 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
238
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
239 <div class=history-sess>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
240 <div class=table-title>{$tr_history}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
241 <div class=sess-table>{$logouts}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
242 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
243 ";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
244 // Create menu item if not exists
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
245 if ( empty( $cms["config"]["admin.mod.php"]["menu"]["auth"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
246 $cms["config"]["admin.mod.php"]["menu"]["auth"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
247 "title" => "auth",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
248 "sort" => 10,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
249 "section" => "settings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
250 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
251 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
252 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
253 $cms["admin_pages"]["auth"] = $form;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
254
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
255 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
256
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
257
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
258 $conf = $cms["config"]["admin.mod.php"]["menu"]["phpinfo"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
259 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
260
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
261 // PHP Info
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
262 if ( empty( $cms["config"]["admin.mod.php"]["menu"]["phpinfo"]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
263 ob_start();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
264 phpinfo();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
265 preg_match( "/<body>(.+)<\/body>/us", ob_get_clean(), $m );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
266 $page = $m[1];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
267 // Create menu item if not exists
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
268 if ( empty( $cms["config"]["admin.mod.php"]["menu"]["phpinfo"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
269 $cms["config"]["admin.mod.php"]["menu"]["phpinfo"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
270 "title" => "php_info",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
271 "sort" => 30,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
272 "section" => "settings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
273 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
274 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
275 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
276 $cms["admin_pages"]["phpinfo"] = $page;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
277 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
278
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
279 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
280
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
281
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
282 // Modules List
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
283 $conf = $cms["config"]["admin.mod.php"]["menu"]["modules"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
284 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
285
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
286 if ( empty( $cms["config"]["admin.mod.php"]["update"]["last_version"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
287 $last_version = __( "unknown" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
288 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
289 $last_version = $cms["config"]["admin.mod.php"]["update"]["last_version"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
290 if ( $cms["kernel_compat"] !== $cms["config"]["admin.mod.php"]["update"]["compat"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
291 $last_version .= ". " . __( "incompatible_v" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
292 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
293 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
294
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
295 if ( empty( $cms["config"]["admin.mod.php"]["last_check"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
296 $last_check = __( "never" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
297 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
298 $last_check = date( "d.m.Y H:i", $cms["config"]["admin.mod.php"]["last_check"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
299 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
300 if ( file_exists( $cms["cms_dir"] . "/man/" . $cms["config"]["locale"] . "/book.html" ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
301 $book_href = $cms["base_path"] . "man/" . $cms["config"]["locale"] . "/book.html";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
302 $book_link = "<a href={$book_href} target=_blank>" . __( "book" ) . "</a>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
303 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
304 $book_link = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
305 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
306 $admin_menu = "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
307 <div class=header>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
308
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
309 <div class=update-window>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
310 <div>" . __( "update_core" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
311 <div class=check-answer>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
312 <p>" . __( "current_v" ) . " {$cms['kernel_version']}</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
313 <p>" . __( "last_v" ) . " {$last_version}</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
314 <p>" . __( "checked" ) . " {$last_check}</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
315 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
316 <div class=buttons>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
317 <button data-fn=cms_check_update>" . __( "check" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
318 <button data-fn=cms_update>" . __( "update" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
319 {$book_link}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
320 <button data-show-dev>" . __( "for_dev" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
321 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
322 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
323
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
324 <div class='dev-window developers_only'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
325 <div class=buttons>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
326 <button data-fn=cms_check_dev_update>" . __( "check_dev" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
327 <button data-fn=cms_changed_files>" . __( "changed_files" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
328 <button data-fn=create_zip style='display:none'>" . __( "create_zip" ) . "</button>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
329 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
330 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
331
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
332 <div class=changed-files style='display:none'></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
333
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
334 <div class=upload_dnd>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
335 <input id=module-upload type=file name='myfile[]' multiple class=files>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
336 " . __( "mod_install" ) . "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
337 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
338 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
339 <div class=modules-grid>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
340
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
341 // Сортировка модулей
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
342 function modules_sort( $a, $b ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
343 return ( $a["name"] < $b["name"] ) ? -1 : 1;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
344 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
345 uasort( $cms["modules"], "modules_sort" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
346
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
347 $tr_on = __( "mod_on" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
348 $tr_off = __( "mod_off" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
349 $tr_del = __( "mod_del" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
350 foreach( $cms["modules"] as $mod => $mod_cfg ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
351 if ( ! empty( $cms["config"][$mod]["disabled"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
352 $status = "disabled";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
353 $tr_sw = $tr_on;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
354 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
355 $status = "enabled";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
356 $tr_sw = $tr_off;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
357 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
358 if ( empty( $mod_cfg["version"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
359 $mod_version = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
360 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
361 $mod_version = "<div class=module-version>{$mod_cfg['version']}</div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
362 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
363 // переводы имен модулей вынесены сюда чтобы не было варнингов при установке
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
364 $admin_menu .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
365 <div class={$status} data-module={$mod}>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
366 <div class=module-name>" . __( $mod_cfg['name'], $mod ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
367 {$mod_version}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
368 <div class=module-description>" . __( $mod_cfg['description'], $mod ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
369 <a class=module-sw-btn>{$tr_sw}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
370 <a class=module-del-btn>{$tr_del}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
371 </div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
372 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
373 $admin_menu .= "</div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
374
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
375 // Create menu item if not exists
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
376 if ( empty( $cms["config"]["admin.mod.php"]["menu"]["modules"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
377 $cms["config"]["admin.mod.php"]["menu"]["modules"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
378 "title" => "modules",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
379 "sort" => 50,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
380 "section" => "settings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
381 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
382 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
383 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
384 $cms["admin_pages"]["modules"] = $admin_menu;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
385 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
386
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
387
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
388 // Admin
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
389
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
390 // Create menu item if not exists
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
391 if ( empty( $cms["config"]["admin.mod.php"]["menu"]["admin_menu"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
392 $cms["config"]["admin.mod.php"]["menu"]["admin_menu"] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
393 "title" => "admin_module_name",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
394 "sort" => 40,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
395 "section" => "settings",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
396 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
397 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
398 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
399
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
400 cms_admin_menu();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
401
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
402 $conf = $cms["config"]["admin.mod.php"]["menu"]["admin_menu"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
403 if ( empty( $conf["hide"] ) && empty( $cms["config"]["admin_sections"][ $conf["section"] ]["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
404
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
405 $tr_show = __( "show" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
406 $tr_hide = __( "hide" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
407 $tr_save = __( "save" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
408 $tr_del_section = __( "delete" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
409 $tr_reset = __( "reset" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
410
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
411
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
412 $options = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
413 foreach( $cms["admin_sections"] as $section_name => $section ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
414 $options .= "<div class=option value='{$section_name}'>{$section["title"]}</div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
415 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
416
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
417 // Admin Sections
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
418 $admin_menu = "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
419 <div class=main-main>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
420 <div class=am-grid>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
421 foreach( $cms["admin_sections"] as $section_name => $section ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
422 if ( empty( $section["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
423 $status = "showed";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
424 $tr_sw = $tr_hide;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
425 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
426 $status = "hidden";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
427 $tr_sw = $tr_show;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
428 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
429 $admin_menu .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
430 <div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
431
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
432 <div class={$status} data-am-type=section data-am-item='{$section_name}'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
433 <input name=title type=text value='{$section['title']}'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
434 <input name=sort type=text value='{$section['sort']}'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
435 <div class=buttons>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
436 <a data-am-save>{$tr_save}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
437 <a data-am-delete>{$tr_del_section}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
438 <a data-am-sw>{$tr_sw}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
439 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
440 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
441
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
442 <div class=items-grid data-am-childs='{$section_name}'>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
443
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
444 // Admin Items
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
445 if ( ! empty( $cms["admin_sections"][$section_name]["items"] ) )
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
446 foreach( $cms["admin_sections"][$section_name]["items"] as $iname => $item ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
447 if ( empty( $item["hide"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
448 $status = "showed";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
449 $tr_sw = $tr_hide;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
450 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
451 $status = "hidden";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
452 $tr_sw = $tr_show;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
453 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
454
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
455 $admin_menu .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
456 <div class={$status} data-am-type=item data-am-module={$item['module']} data-am-item={$iname}>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
457 <div class=item-name>" . __( $item["title"], $item["module"] ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
458 <input name=sort type=text value='{$item['sort']}'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
459 <div class=section-select-grid>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
460 <div class=field-select data-section='{$section_name}'>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
461 <div class=value>{$cms['admin_sections'][$section_name]['title']}</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
462 <div class=icon></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
463 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
464 <div class=field-options>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
465 {$options}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
466 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
467 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
468 <div class=buttons>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
469 <a data-am-save>{$tr_save}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
470 <a data-am-save data-am-reset>{$tr_reset}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
471 <a data-am-sw>{$tr_sw}</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
472 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
473 </div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
474 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
475
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
476 $admin_menu .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
477 </div> <!-- class=status -->
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
478 </div> <!-- class= -->";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
479 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
480
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
481
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
482 $admin_menu .= "
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
483 </div> <!-- class=am-grid -->
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
484 </div> <!-- class=main-main -->
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
485 <div class=main-footer>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
486 <div class=add-section>" . __( "add_section" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
487 <div class=reset-all>" . __( "reset_all" ) . "</div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
488 </div>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
489
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
490 $cms["admin_pages"]["admin_menu"] = $admin_menu;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
491
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
492 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
493
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
494 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
495
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
496
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
497 function cms_admin_api() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
498 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
499
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
500 // Cookie, Logout, Admin, Modules
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
501 if ( ! empty( $_POST["fn"] ) && is_admin() ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
502 switch ( $_POST["fn"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
503
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
504 case "logout":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
505 $cms["status"] = "200";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
506 if ( empty( $_POST["sess"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
507 if ( PHP_VERSION_ID < 70300 ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
508 setcookie( "sess", "", 365 * 24 * 60 * 60 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
509 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
510 setcookie( "sess", "", array( "SameSite" => "Lax", "expires" => time() + 365 * 24 * 60 * 60 ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
511 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
512 $login = $_COOKIE["sess"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
513 $result = "refresh";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
514 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
515 $login = $_POST["sess"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
516 if ( $_POST["sess"] === $_COOKIE["sess"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
517 $result = "refresh";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
518 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
519 $result = "ok";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
520 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
521 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
522
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
523 if ( ! isset($cms["config"]["logouted"]) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
524 $cms["config"]["logouted"] = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
525 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
526 // Добавляем закрытую сессию в конец массива в историю
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
527 array_push( $cms["config"]["logouted"], $cms["config"]["logged"][$login] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
528 // Оставим только последние 10 выходов в истории
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
529 $cms["config"]["logouted"] = array_slice( $cms["config"]["logouted"], -10 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
530 unset( $cms["config"]["logged"][$login] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
531 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
532
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
533 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
534 "info_text" => __( "logout_completed" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
535 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
536 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
537 "result" => $result,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
538 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
539 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
540 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
541
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
542 case "admin_menu_save":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
543 switch ( $_POST["type"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
544 case "section":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
545 if ( empty( $_POST["title"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
546 unset ( $cms["config"]["admin_sections"][ $_POST["item"] ]["title"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
547 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
548 $cms["config"]["admin_sections"][ $_POST["item"] ]["title"] = $_POST["title"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
549 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
550 $n = (int) $_POST["sort"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
551 if ( $n ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
552 $cms["config"]["admin_sections"][ $_POST["item"] ]["sort"] = $n;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
553 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
554 unset( $cms["config"]["admin_sections"][ $_POST["item"] ]["sort"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
555 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
556 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
557
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
558 // Настройки пунктов сохраняются в настройках модулей, а не в секции
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
559 case "item":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
560 if ( $_POST["reset"] === "true" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
561 unset( $cms["config"][ $_POST["module"] ]["menu"][ $_POST["item"] ] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
562 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
563 $cms["config"][ $_POST["module"] ]["menu"][ $_POST["item"] ]["section"] = $_POST["section"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
564 $cms["config"][ $_POST["module"] ]["menu"][ $_POST["item"] ]["sort"] = (int) $_POST["sort"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
565 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
566 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
567 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
568 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
569 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
570 "ok" => "true",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
571 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
572 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
573 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
574
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
575 case "admin_menu_hide":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
576 $hide = $_POST["hide"] === "true";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
577 switch ( $_POST["type"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
578 case "section":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
579 $cms["config"]["admin_sections"][ $_POST["item"] ]["hide"] = $hide;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
580 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
581 case "item":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
582 $cms["config"][ $_POST["module"] ]["menu"][ $_POST["item"] ]["hide"] = $hide;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
583 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
584 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
585 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
586 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
587 "ok" => "true",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
588 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
589 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
590 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
591
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
592 case "admin_menu_add_section":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
593 $n = 1;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
594 while ( isset( $cms["config"]["admin_sections"]["section_".$n] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
595 $n++;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
596 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
597 $cms["config"]["admin_sections"]["section_".$n] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
598 "title" => __( "add_section" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
599 "sort" => 99,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
600 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
601 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
602 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
603 "info_text" => __( "section_added" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
604 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
605 "info_time" => 3000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
606 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
607 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
608 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
609
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
610 case "admin_menu_del":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
611 $cms["status"] = "200";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
612 unset( $cms["config"]["admin_sections"][ $_POST["item"] ]);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
613 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
614 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
615 "info_text" => __( "deleted" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
616 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
617 "info_time" => 1000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
618 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
619 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
620 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
621
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
622 case "module_disable":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
623 if ( $_POST["module"] == "admin.mod.php" || $_POST["module"] == "template.mod.php" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
624 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
625 "info_text" => __( "not_disabled" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
626 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
627 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
628 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
629 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
630 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
631 if ( $_POST["disable"] === "true" ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
632 $cms["config"][$_POST["module"]]["disabled"] = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
633 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
634 unset( $cms["config"][$_POST["module"]]["disabled"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
635 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
636 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
637 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
638 "ok" => "true",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
639 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
640 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
641 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
642
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
643 case "module_del":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
644 $text = __( "delete_this_files" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
645 foreach( $cms["modules"][$_POST["module"]]["files"] as $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
646 $text .= "<br>{$file}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
647 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
648 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
649 "info_text" => $text,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
650 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
651 "info_time" => 60000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
652 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
653 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
654 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
655
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
656 case "install_module":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
657 $success = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
658 foreach ( $_FILES["myfile"]["name"] as $n => $name ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
659 if ( $_FILES["myfile"]["error"][$n] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
660 $success = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
661 $text = str_replace( "xxx", $name, __( "upload_error_xxx" ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
662 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
663 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
664 // Unpack Module
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
665 // Object Oriented Style for future compability with PHP 8
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
666 $zip = new ZipArchive;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
667 $zip_file = $_FILES["myfile"]["tmp_name"][$n];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
668 if ( $zip->open( $zip_file ) === TRUE ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
669 $ok = $zip->extractTo( $cms["site_dir"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
670 $zip->close();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
671 if ( ! $ok ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
672 $success = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
673 $text = str_replace( "xxx", $name, __( "cant_extract_xxx" ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
674 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
675 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
676 // Load modules
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
677 // В одном zip может быть множество модулей
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
678 foreach( glob( "{$cms['cms_dir']}/mod/*.mod.php" ) as $mod_file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
679 include_once( $mod_file );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
680 $module_name = str_replace( ".mod.php", "", basename( $mod_file ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
681 $sql_file = "{$cms['cms_dir']}/mod/{$module_name}.update.sql";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
682 if ( is_file( $sql_file ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
683 $q = file_get_contents( $sql_file );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
684 $res = mysqli_multi_query( $cms["base"], $q );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
685 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
686 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
687
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
688 do_hook( "create_tables" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
689
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
690 $text = __( "install_success" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
691 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
692 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
693 $success = false;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
694 $text = str_replace( "xxx", $name, __( "cant_open_zip_xxx" ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
695 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
696 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
697 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
698 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
699
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
700 if ( $success ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
701 if ( function_exists( "cms_clear_cache" ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
702 cms_clear_cache();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
703 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
704 $cms["config"]["admin.mod.php"]["clear_cache"] = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
705 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
706 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
707 "info_text" => $text,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
708 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
709 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
710 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
711 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
712 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
713 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
714 "info_text" => $text,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
715 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
716 "info_time" => 10000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
717 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
718 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
719 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
720 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
721
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
722 case "no_translation":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
723 if ( ! empty( $cms["config"]["debug"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
724 $new_debug = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
725 "translate to {$cms["config"]["locale"]}" => array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
726 "{$_POST["module"]}:js" => $_POST["str"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
727 ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
728 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
729 $debug_file = $cms["cms_dir"] . "/debug.log.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
730 if ( $handle = fopen( $debug_file, "r" ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
731 flock( $handle, LOCK_SH );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
732 include( $debug_file );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
733 $cms["debug"] = array_replace_recursive( $cms["debug"], $new_debug );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
734 flock( $handle, LOCK_UN );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
735 file_put_contents( $debug_file, '<?php $cms["debug"] = ' . var_export( $cms["debug"], true) . ";\n", LOCK_EX );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
736 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
737 file_put_contents( $debug_file, '<?php $cms["debug"] = ' . var_export( $cms["debug"], true) . ";\n", LOCK_EX );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
738 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
739 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
740 echo( '{ "result": "ok" }' );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
741 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
742 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
743
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
744 case "reset_admin_menu_items":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
745 reset_admin_menu_items();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
746 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
747 "info_text" => __( "reset_all_ok" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
748 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
749 "info_time" => 3000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
750 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
751 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
752 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
753
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
754 case "create_zip":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
755 cms_update_create_zip();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
756 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
757
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
758 case "cms_check_update":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
759 cms_update_check( "https://coffee-cms.ru/update.json" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
760 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
761
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
762 case "cms_check_dev_update":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
763 cms_update_check( "https://dev.coffee-cms.ru/update_dev.json" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
764 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
765
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
766 case "cms_update":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
767 cms_update_cms_update();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
768 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
769
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
770 case "cms_changed_files":
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
771 cms_changed_files();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
772 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
773 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
774
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
775 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
776 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
777
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
778
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
779 function reset_admin_menu_items() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
780 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
781 unset( $cms["config"]["admin_sections"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
782 foreach( $cms["modules"] as $mod => $val ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
783 if ( isset( $cms["config"][$mod]["menu"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
784 unset( $cms["config"][$mod]["menu"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
785 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
786 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
787 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
788 }//unset( $cms["config"][ $_POST["module"] ]["menu"][ $_POST["item"] ] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
789
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
790
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
791 function cms_update_create_filelist() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
792 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
793
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
794 $logs = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
795
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
796 $queue = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
797 "{$cms['site_dir']}/uploads/.keep",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
798 "{$cms['site_dir']}/.htaccess",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
799 "{$cms['site_dir']}/.nginx.conf",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
800 "{$cms['site_dir']}/.cms/admin.cms",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
801 "{$cms['site_dir']}/.cms/css/base.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
802 "{$cms['site_dir']}/.cms/css/menu.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
803 "{$cms['site_dir']}/.cms/css/pages.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
804 "{$cms['site_dir']}/.cms/css/sitemap.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
805 "{$cms['site_dir']}/.cms/css/rss.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
806 "{$cms['site_dir']}/.cms/css/template.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
807 "{$cms['site_dir']}/.cms/css/admin.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
808 "{$cms['site_dir']}/.cms/filelist.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
809 "{$cms['site_dir']}/.cms/img",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
810 "{$cms['site_dir']}/.cms/js/admin.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
811 "{$cms['site_dir']}/.cms/js/menu.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
812 "{$cms['site_dir']}/.cms/js/pages.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
813 "{$cms['site_dir']}/.cms/js/sitemap.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
814 "{$cms['site_dir']}/.cms/js/rss.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
815 "{$cms['site_dir']}/.cms/js/template.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
816 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
817 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/base.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
818 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/menu.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
819 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/pages.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
820 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/sitemap.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
821 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
822 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/template.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
823 "{$cms['site_dir']}/.cms/lang/ru_RU.UTF-8/translit.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
824 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
825 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/base.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
826 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/menu.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
827 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/pages.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
828 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/sitemap.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
829 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
830 "{$cms['site_dir']}/.cms/lang/en_US.UTF-8/template.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
831 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
832 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/base.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
833 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/menu.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
834 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/pages.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
835 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/sitemap.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
836 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
837 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/template.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
838 "{$cms['site_dir']}/.cms/lang/uk_UA.UTF-8/translit.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
839
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
840 "{$cms['site_dir']}/.cms/lib/codemirror",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
841 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/book.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
842 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/codemirror.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
843 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/example.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
844 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/hint_css.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
845 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/hint_html.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
846 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/hint_php.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
847 "{$cms['site_dir']}/.cms/man/ru_RU.UTF-8/menu.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
848 "{$cms['site_dir']}/.cms/man/css/prism.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
849 "{$cms['site_dir']}/.cms/man/css/styles.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
850 "{$cms['site_dir']}/.cms/man/js/prism.js",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
851
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
852 // Файлы шаблона
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
853 "{$cms['site_dir']}/.cms/mini/html.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
854 "{$cms['site_dir']}/.cms/mini/404.en_US.UTF-8.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
855 "{$cms['site_dir']}/.cms/mini/404.ru_RU.UTF-8.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
856 "{$cms['site_dir']}/.cms/mini/404.uk_UA.UTF-8.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
857 "{$cms['site_dir']}/.cms/mini/banner.jpg",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
858 "{$cms['site_dir']}/.cms/mini/blog.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
859 "{$cms['site_dir']}/.cms/mini/favicon.svg",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
860 "{$cms['site_dir']}/.cms/mini/frontpage.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
861 "{$cms['site_dir']}/.cms/mini/instruction.ru_RU.UTF-8.html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
862 "{$cms['site_dir']}/.cms/mini/page.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
863 "{$cms['site_dir']}/.cms/mini/page.teaser.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
864 "{$cms['site_dir']}/.cms/mini/post.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
865 "{$cms['site_dir']}/.cms/mini/styles.css",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
866 "{$cms['site_dir']}/.cms/mini/template.settings.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
867 "{$cms['site_dir']}/.cms/mini/tpl.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
868
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
869 "{$cms['site_dir']}/.cms/mod/admin.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
870 "{$cms['site_dir']}/.cms/mod/base.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
871 "{$cms['site_dir']}/.cms/mod/menu.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
872 "{$cms['site_dir']}/.cms/mod/pages.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
873 "{$cms['site_dir']}/.cms/mod/sitemap.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
874 "{$cms['site_dir']}/.cms/mod/rss.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
875 "{$cms['site_dir']}/.cms/mod/template.mod.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
876 "{$cms['site_dir']}/.cms/index.fn.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
877 "{$cms['site_dir']}/.cms/index.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
878 "{$cms['site_dir']}/.cms/update.sql",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
879 "{$cms['site_dir']}/.cms/update.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
880 "{$cms['site_dir']}/.cms/.unlicense.txt",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
881 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
882 $no_sha1 = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
883 "{$cms['site_dir']}/.cms/filelist.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
884 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
885
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
886 $list = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
887
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
888 while ( $cur = array_shift( $queue ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
889 if ( is_dir( $cur ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
890 $queue = array_merge( $queue, glob( $cur . "/*" ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
891 } elseif ( is_file( $cur ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
892 if ( in_array( $cur, $no_sha1 ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
893 $sha1 = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
894 $size = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
895 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
896 $sha1 = sha1_file( $cur );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
897 $size = filesize( $cur );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
898 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
899 $file = str_replace( "{$cms['site_dir']}/", "", $cur );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
900 $list[$file] = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
901 "sha1" => $sha1,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
902 "size" => $size,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
903 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
904 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
905 $logs .= "<p>" . __( "file_or_dir_not_exists" ) . " '{$cur}'</p>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
906 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
907 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
908
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
909 // Список файлов которые разрешено редактировать.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
910 // И если они отредактированы, то не будут обновляться.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
911 $allow_change = array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
912 ".htaccess",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
913 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
914
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
915 file_put_contents( "{$cms['cms_dir']}/filelist.php",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
916 "<?php\n\$allow_change = " . var_export( $allow_change, true ) . ";\n" .
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
917 '$list = ' . var_export( $list, true ) . ";\n"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
918 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
919
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
920 $logs .= "<p>".__( "files" )." " . count( $list ) . "</p>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
921
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
922 return $logs;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
923
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
924 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
925
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
926
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
927 function cms_update_check( $url ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
928 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
929
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
930 // prevent warning
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
931 if ( empty( $cms["config"]["admin.mod.php"]["last_check"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
932 $cms["config"]["admin.mod.php"]["last_check"] = 0;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
933 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
934
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
935 $t = time();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
936 $dt = $t - $cms["config"]["admin.mod.php"]["last_check"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
937 $time_min = 1;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
938 if ( $dt < $time_min * 60 ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
939 $n = ceil( ( $time_min * 60 - $dt ) / 60 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
940 $msg = __( "try_later" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
941 $msg = str_replace( "xxx", $n, $msg );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
942 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
943 "info_text" => $msg,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
944 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
945 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
946 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
947 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
948 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
949
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
950 if ( ! $update = file_get_contents( $url ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
951 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
952 "info_text" => __( "cant_get" ) . " " . $url,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
953 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
954 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
955 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
956 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
957 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
958
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
959 if ( ! $update = json_decode( $update, true ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
960 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
961 "info_text" => __( "json_error" ) . " " . $url,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
962 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
963 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
964 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
965 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
966 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
967
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
968 $cms["config"]["admin.mod.php"]["last_check"] = $t;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
969 $cms["config"]["admin.mod.php"]["update"] = $update;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
970 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
971
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
972 $last_check = date( "d.m.Y H:i", $cms["config"]["admin.mod.php"]["last_check"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
973
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
974 $last_version = $cms["config"]["admin.mod.php"]["update"]["last_version"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
975
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
976 if ( $cms["kernel_compat"] !== $cms["config"]["admin.mod.php"]["update"]["compat"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
977 $last_version .= ". " . __( "incompatible_v" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
978 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
979
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
980 $update_info = "<p>" . __( "current_v" ) . " {$cms['kernel_version']}</p>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
981 $update_info .= "<p>" . __( "last_v" ) . " {$last_version}</p>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
982 $update_info .= "<p>" . __( "checked" ) . " {$last_check}</p>";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
983
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
984 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
985 "info_text" => __( "last_v" ) . " {$last_version}",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
986 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
987 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
988 "answer" => $update_info,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
989 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
990 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
991
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
992 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
993
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
994
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
995 function cms_changed_files() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
996 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
997
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
998 $fl = "{$cms['cms_dir']}/filelist.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
999 require( $fl );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1000
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1001 $errors = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1002 $max_errors = 100;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1003
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1004 // Проверка файлов текущей версии
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1005 // по чексуммам и размерам
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1006 foreach( $list as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1007 $f = $cms["site_dir"] . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1008 if ( ! is_file( $f ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1009 if ( count( $errors ) >= $max_errors ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1010 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1011 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1012 array_push( $errors, __( "file_not_exists" ) . " " . $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1013 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1014 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1015 $sha1 = sha1_file( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1016 $size = filesize( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1017 if ( ! empty( $file["sha1"] ) && ! empty( $file["size"] ) && is_file( $f ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1018 if ( $file["sha1"] !== $sha1 || $file["size"] !== $size ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1019 if ( ! in_array( $fn, $allow_change ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1020 if ( count( $errors ) >= $max_errors ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1021 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1022 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1023 array_push( $errors, __( "file_changed" ) . " " . $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1024 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1025 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1026 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1027 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1028 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1029
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1030 // Возвращаем список недочетов
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1031 if ( count( $errors ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1032 $files = implode( "<br>", $errors );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1033 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1034 $files = __( "no_files_changed" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1035 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1036 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1037 "answer" => $files,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1038 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1039 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1040
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1041 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1042
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1043 function cms_update_cms_update() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1044 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1045
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1046 // Не проверялись обновления вообще
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1047 if ( empty( $cms["config"]["admin.mod.php"]["update"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1048 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1049 "info_text" => __( "check_updates" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1050 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1051 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1052 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1053 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1054 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1055
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1056 // Отсутствует файл со списком файлов
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1057 $fl = "{$cms['cms_dir']}/filelist.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1058 if ( ! file_exists( $fl ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1059 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1060 "info_text" => __( "file_list_missing" ) . " " . $fl,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1061 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1062 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1063 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1064 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1065 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1066
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1067 require( $fl );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1068
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1069 $update = $cms["config"]["admin.mod.php"]["update"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1070
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1071 // Может нечего обновлять
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1072 if ( $update["last_version"] <= $cms["kernel_version"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1073 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1074 "info_text" => __( "already_updated" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1075 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1076 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1077 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1078 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1079 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1080
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1081 // Может несовместимая версия
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1082 if ( $update["compat"] !== $cms["kernel_compat"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1083 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1084 "info_text" => __( "impossible" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1085 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1086 "info_time" => 15000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1087 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1088 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1089 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1090
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1091 // Копить по 10 ошибок
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1092 // чтобы не мучить по одной
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1093 $errors = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1094 $max_errors = 10;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1095
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1096 // Проверка файлов текущей версии
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1097 // по чексуммам и размерам
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1098 foreach( $list as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1099 $f = $cms["site_dir"] . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1100 if ( ! is_file( $f ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1101 if ( count( $errors ) >= $max_errors ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1102 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1103 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1104 array_push( $errors, __( "file_not_exists" ) . " " . $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1105 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1106 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1107 $sha1 = sha1_file( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1108 $size = filesize( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1109 if ( ! empty( $file["sha1"] ) && ! empty( $file["size"] ) && is_file( $f ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1110 if ( $file["sha1"] !== $sha1 || $file["size"] !== $size ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1111 if ( ! in_array( $fn, $allow_change ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1112 if ( count( $errors ) >= $max_errors ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1113 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1114 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1115 array_push( $errors, __( "file_changed" ) . " " . $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1116 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1117 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1118 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1119 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1120 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1121
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1122 // Возвращаем список недочетов
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1123 if ( count( $errors ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1124 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1125 "info_text" => implode( "<br>", $errors ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1126 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1127 "info_time" => 50000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1128 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1129 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1130 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1131
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1132 // Check Rights
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1133 $rights = array();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1134 foreach( $list as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1135 $file_path = $cms["site_dir"] . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1136 $e = ! is_file( $file_path ) || ! is_writable( $file_path );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1137 if ( $e ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1138 if ( count( $rights ) >= $max_errors ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1139 break;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1140 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1141 array_push( $rights, $file_path );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1142 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1143 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1144 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1145
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1146 // Возвращаем список недочетов
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1147 if ( count( $rights ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1148 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1149 "info_text" => __( "update_error_rights" ) . "<br>" . implode( "<br>", $rights ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1150 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1151 "info_time" => 50000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1152 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1153 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1154 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1155
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1156 if ( empty( $cms["config"]["admin.mod.php"]["last_update"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1157 $cms["config"]["admin.mod.php"]["last_update"] = 0;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1158 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1159
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1160 $t = time();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1161 $dt = $t - $cms["config"]["admin.mod.php"]["last_update"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1162 $time_min = 1;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1163 if ( $dt < $time_min * 60 ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1164 $n = ceil( ( $time_min * 60 - $dt ) / 60 );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1165 $msg = __( "try_later" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1166 $msg = str_replace( "xxx", $n, $msg );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1167 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1168 "info_text" => $msg,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1169 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1170 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1171 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1172 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1173 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1174
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1175 // Download New Version
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1176 if ( ! $content = file_get_contents( $update["download"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1177 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1178 "info_text" => __( "download_error" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1179 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1180 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1181 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1182 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1183 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1184 $tmp = $cms["site_dir"] . "/.tmp";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1185 if ( is_dir( $tmp ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1186 recurse_rm( $tmp );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1187 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1188 if ( ! mkdir( $tmp ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1189 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1190 "info_text" => __( "cant_create_tmp_dir" ) . " " . $tmp,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1191 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1192 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1193 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1194 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1195 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1196 $fn = preg_replace( "/.*\//u", "", $update["download"] );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1197 $file = $tmp . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1198 if ( ! file_put_contents( $file, $content ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1199 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1200 "info_text" => __( "cant_write_file" ) . " " . $file,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1201 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1202 "info_time" => 50000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1203 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1204 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1205 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1206
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1207 // Unpack New Version
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1208 // Object Oriented Style for future compability with PHP 8
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1209 $zip = new ZipArchive;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1210 if ( $zip->open( $file ) === TRUE ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1211 $ok = $zip->extractTo( $tmp );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1212 $zip->close();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1213 if ( ! $ok ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1214 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1215 "info_text" => __( "cant_extract" ) . " " . $file,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1216 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1217 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1218 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1219 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1220 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1221 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1222 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1223 "info_text" => __( "cant_open_zip" ) . " " . $file,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1224 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1225 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1226 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1227 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1228 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1229
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1230 // Check New Version
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1231 $fl = "{$tmp}/.cms/filelist.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1232 if ( ! is_file( $fl ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1233 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1234 "info_text" => __( "file_list_missing" ) . " " . $fl,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1235 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1236 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1237 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1238 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1239 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1240 $oldlist = $list;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1241 require( $fl );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1242 foreach( $list as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1243 $f = $tmp . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1244 if ( ! is_file( $f ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1245 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1246 "info_text" => __( "file_not_exists" ) . " " . $f,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1247 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1248 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1249 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1250 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1251 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1252 $sha1 = sha1_file( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1253 $size = filesize( $f );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1254 if ( ! empty( $file["sha1"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1255 if ( $file["sha1"] !== $sha1 ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1256 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1257 "info_text" => __( "file_changed" ) . " " . $f,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1258 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1259 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1260 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1261 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1262 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1263 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1264 if ( ! empty( $file["size"] ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1265 if ( $file["size"] !== $size ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1266 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1267 "info_text" => __( "file_changed" ) . " " . $f,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1268 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1269 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1270 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1271 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1272 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1273 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1274 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1275
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1276 // Удаление файлов текущей цмс
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1277 $removed = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1278 foreach( $oldlist as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1279 $from = $cms["site_dir"] . "/" . $fn;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1280
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1281 if ( in_array( $fn, $allow_change ) and
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1282 sha1_file( $from ) !== $oldlist[$fn]["sha1"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1283 // Если файл в списке разрешенных на изменение
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1284 // и sha1 не совпадает, то оставляем его не тронутым
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1285 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1286 $c = unlink( $from );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1287 $removed = $removed && $c;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1288 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1289 // try remove dir
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1290 $rdir = preg_replace( "/\/[^\/]+$/u", "", $from );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1291 if ( is_dir_and_empty( $rdir ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1292 rmdir( $rdir );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1293 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1294 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1295
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1296 if ( ! $removed ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1297 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1298 "info_text" => __( "update_error_remove" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1299 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1300 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1301 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1302 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1303 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1304
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1305 // Перемещение новой версии в текущую
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1306 // Разрешенные измененные файлы не перезаписываются
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1307 $moved = true; // по умолчанию нет ошибок
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1308 foreach( $list as $file_name => $none ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1309 $old_file_path = $cms["site_dir"] . "/" . $file_name;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1310 if (
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1311 is_file( $old_file_path ) and
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1312 in_array( $file_name, $allow_change ) and
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1313 sha1_file( $old_file_path ) !== $oldlist[$file_name]["sha1"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1314 ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1315 // Если файл в списке разрешенных на изменение
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1316 // и sha1 не совпадает, то оставляем его не тронутым
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1317 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1318 $from = $tmp . "/" . $file_name;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1319 $to = $cms["site_dir"] . "/" . $file_name;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1320 $ndir = preg_replace( "/\/[^\/]+$/u", "", $to );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1321 if ( ! is_dir( $ndir ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1322 mkdir( $ndir, 0777, true );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1323 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1324 $c = copy( $from, $to );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1325 $moved = $moved && $c;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1326 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1327 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1328
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1329 if ( ! $moved ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1330 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1331 "info_text" => __( "update_error_move" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1332 "info_class" => "info-error",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1333 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1334 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1335 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1336 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1337
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1338 recurse_rm( $tmp );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1339
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1340 // Выполнить запросы в БД, находящиеся в файле update.sql
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1341 // Не будем обращать внимания на результат запроса,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1342 // ведь если идет многократное обновление из dev-ветки,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1343 // то скорее всего будут ошибки его выполнения.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1344 $update_sql = "{$cms['cms_dir']}/update.sql";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1345 $q = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1346 if ( is_file( $update_sql ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1347 $q = file_get_contents( $update_sql );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1348 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1349 if ( $q ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1350 cms_base_connect();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1351 if ( $cms["base"] ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1352 $res = mysqli_multi_query( $cms["base"], $q );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1353 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1354 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1355
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1356 $cms["config"]["admin.mod.php"]["last_update"] = time();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1357
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1358 // Обновить конфиг
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1359 $update_config = "{$cms['cms_dir']}/update.php";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1360 if ( is_file( $update_config ) ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1361 include( $update_config );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1362 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1363
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1364 $cms["config"]["admin.mod.php"]["clear_cache"] = true;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1365 cms_save_config();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1366
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1367 cms_clear_cache();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1368
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1369 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1370 "info_text" => __( "successfull_update" ),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1371 "info_class" => "info-success",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1372 "info_time" => 5000,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1373 "reload" => true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1374 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1375 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1376
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1377 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1378
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1379
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1380 function cms_update_create_zip() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1381 global $cms;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1382
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1383 // Данная функция сообщит об отсутствующих файлах
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1384 $files = cms_update_create_filelist();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1385
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1386 require( "{$cms['cms_dir']}/filelist.php" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1387 $zip = new ZipArchive();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1388 $v = $cms['kernel_version'] . date( "_Y.m.d_Hi" );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1389 $name = "coffee-cms-{$v}.zip";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1390 $download_url = "{$cms['url']['scheme']}://{$cms['url']['host']}/{$name}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1391 $zipname = "{$cms["site_dir"]}/{$name}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1392
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1393 if ( $zip->open( $zipname, ZipArchive::CREATE ) !== true ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1394 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1395 "answer" => __( "cant_create_zip" ) . " {$zipname}",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1396 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1397 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1398 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1399
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1400 foreach( $list as $fn => $file ) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1401 $from = "{$cms['site_dir']}/{$fn}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1402 $zip->addFile( $from, $fn );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1403 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1404
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1405 $zip->close();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1406
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1407 file_put_contents( "{$cms["site_dir"]}/update_dev.json", json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1408 "last_version" => $v,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1409 "compat" => $cms["kernel_compat"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1410 "download" => $download_url,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1411 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1412
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1413 echo( json_encode( array(
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1414 "answer" => $files . "<p>" . __( "archive_created" ) . ": <a href='{$download_url}'>{$download_url}</a></p>",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1415 ) ) );
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1416 return;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1417 }