settings.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief окно системных настроек
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 
10 if (!$user->access()->action('/api/action/settings')) { // скрываем некоторые данные для тех у кого недоступно само действие изменения настроек
11  foreach (Wrong\Start\Env::$e as $key => $value) {
12  if (stripos($key, 'secret') !== false || stripos($key, 'password') !== false) {
13  Wrong\Start\Env::$e->$key = '******';
14  }
15  }
16 }
17 
18 ?>
19 <div class="modal fade" id="<?= $basename ?>" tabindex="-1" data-backdrop="static">
20  <div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable w-100 mw-100 h-100 p-0 m-0 position-fixed" style="max-width: 100%;max-height:100%;" role="document">
21  <div class="modal-content w-100 h-100 rounded-0 border-0">
22  <div class="modal-header">
23  <h5 class="modal-title"><i class="fa fa-cogs mr-2"></i>Настройки системы</h5>
24  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
25  <span aria-hidden="true">&times;</span>
26  </button>
27  </div>
28  <div class="modal-body pt-2">
29  <form id="form-system-settings" action="<?= Wrong\Models\Actions::find(25)->request ?>">
30  <div class="row row-cols-1 row-cols-xl-2">
31  <div class="col">
32  <div class="badge badge-warning px-2">API ключи:</div>
33  <div class="input-group input-group-sm mt-1">
34  <div class="input-group-prepend w-50">
35  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('HCAPTCHA_SITEKEY', 'name', 'settings')->description ?></span>
36  </div>
37  <input type="text" name="HCAPTCHA_SITEKEY" class="form-control" value="<?= Wrong\Start\Env::$e->HCAPTCHA_SITEKEY ?>" placeholder="HCAPTCHA_SITEKEY" autocomplete="off">
38  </div>
39  <div class="input-group input-group-sm mt-2">
40  <div class="input-group-prepend w-50">
41  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('HCAPTCHA_SECRET', 'name', 'settings')->description ?></span>
42  </div>
43  <input type="text" name="HCAPTCHA_SECRET" class="form-control" value="<?= Wrong\Start\Env::$e->HCAPTCHA_SECRET ?>" placeholder="HCAPTCHA_SECRET" autocomplete="off">
44  </div>
45  <div class="input-group input-group-sm mt-2">
46  <div class="input-group-prepend w-50">
47  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('GOOGLE_OAUTH_CLIENT_ID', 'name', 'settings')->description ?></span>
48  </div>
49  <input type="text" name="GOOGLE_OAUTH_CLIENT_ID" class="form-control" value="<?= Wrong\Start\Env::$e->GOOGLE_OAUTH_CLIENT_ID ?>" placeholder="GOOGLE_OAUTH_CLIENT_ID" autocomplete="off">
50  </div>
51  <div class="input-group input-group-sm mt-2">
52  <div class="input-group-prepend w-50">
53  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('GOOGLE_OAUTH_CLIENT_SECRET', 'name', 'settings')->description ?></span>
54  </div>
55  <input type="text" name="GOOGLE_OAUTH_CLIENT_SECRET" class="form-control" value="<?= Wrong\Start\Env::$e->GOOGLE_OAUTH_CLIENT_SECRET ?>" placeholder="GOOGLE_OAUTH_CLIENT_SECRET" autocomplete="off">
56  </div>
57  <div class="input-group input-group-sm mt-2">
58  <div class="input-group-prepend w-50">
59  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('YANDEX_OAUTH_CLIENT_ID', 'name', 'settings')->description ?></span>
60  </div>
61  <input type="text" name="YANDEX_OAUTH_CLIENT_ID" class="form-control" value="<?= Wrong\Start\Env::$e->YANDEX_OAUTH_CLIENT_ID ?>" placeholder="YANDEX_OAUTH_CLIENT_ID" autocomplete="off">
62  </div>
63  <div class="input-group input-group-sm mt-2">
64  <div class="input-group-prepend w-50">
65  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('YANDEX_OAUTH_CLIENT_SECRET', 'name', 'settings')->description ?></span>
66  </div>
67  <input type="text" name="YANDEX_OAUTH_CLIENT_SECRET" class="form-control" value="<?= Wrong\Start\Env::$e->YANDEX_OAUTH_CLIENT_SECRET ?>" placeholder="YANDEX_OAUTH_CLIENT_SECRET" autocomplete="off">
68  </div>
69  <div class="input-group input-group-sm mt-2">
70  <div class="input-group-prepend w-50">
71  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('ANYCOMMENT_SECRET', 'name', 'settings')->description ?></span>
72  </div>
73  <input type="text" name="ANYCOMMENT_SECRET" class="form-control" value="<?= Wrong\Start\Env::$e->ANYCOMMENT_SECRET ?>" placeholder="ANYCOMMENT_SECRET" autocomplete="off">
74  </div>
75  <div class="badge badge-warning px-2 mt-2">Новые пользователи:</div>
76  <div class="input-group input-group-sm mt-1">
77  <div class="input-group-prepend w-50">
78  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('OWNER_GROUP_USERS', 'name', 'settings')->description ?></span>
79  </div>
80  <select name="OWNER_GROUP_USERS" class="custom-select">
81  <?php
82  foreach ($user->subordinate_groups as $id) {
83  $row = Wrong\Rights\Group::row($id);
84  echo '<option value="' . $row->id . '" ' . ($row->id == Wrong\Start\Env::$e->OWNER_GROUP_USERS ? ' selected' : '') . '>' . Wrong\Rights\Group::text($row->id) . '</option>';
85  }
86  ?>
87  </select>
88  </div>
89  <div class="border px-2 py-1 rounded bg-light-info mt-2">
90  <small><?= Wrong\Database\Controller::find('GROUPS_USERS', 'name', 'settings')->description ?> <a onclick="if(~~this.dataset.checked){$(this).html('отметить все');this.dataset.checked=0;$(this).parents('form').find('[name^=GROUPS_USERS]').prop('checked', false);}else{$(this).html('снять все');this.dataset.checked=1;$(this).parents('form').find('[name^=GROUPS_USERS]').prop('checked', true);}return false;" href="#">отметить все</a></small>
91  <?php
92  foreach ($user->subordinate_groups as $id) {
93  $row = Wrong\Rights\Group::row($id);
94  echo '<div class="custom-control custom-checkbox small">
95  <input type="checkbox" name="GROUPS_USERS[' . $row->id . ']" class="custom-control-input" id="check-group-' . $row->id . '" ' . (in_array($row->id, Wrong\Start\Env::$e->GROUPS_USERS) ? 'checked' : '') . '>
96  <label class="custom-control-label" for="check-group-' . $row->id . '">' . Wrong\Rights\Group::text($row->id) . '</label>
97  </div>';
98  }
99  ?>
100  </div>
101  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
102  <div class="custom-control custom-checkbox small">
103  <input type="checkbox" name="USER_ACT" class="custom-control-input" id="USER_ACT" <?= Wrong\Database\Controller::find('USER_ACT', 'name', 'settings')->value ? 'checked' : '' ?>>
104  <label class="custom-control-label" for="USER_ACT"><?= Wrong\Database\Controller::find('USER_ACT', 'name', 'settings')->description ?></label>
105  </div>
106  </div>
107  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
108  <div class="custom-control custom-checkbox small">
109  <input type="checkbox" name="USER_API" class="custom-control-input" id="USER_API" <?= Wrong\Database\Controller::find('USER_API', 'name', 'settings')->value ? 'checked' : '' ?>>
110  <label class="custom-control-label" for="USER_API"><?= Wrong\Database\Controller::find('USER_API', 'name', 'settings')->description ?></label>
111  </div>
112  </div>
113  </div>
114 
115 
116  <div class="col">
117  <div>
118  <div class="badge badge-warning px-2">Система:</div>
119  <a class="badge badge-danger px-2" title="Очистка всего кеша системы" data-action="cache-clean" data-confirm="true" data-header="Очистить кеш?" data-body="Очистить системный кеш полностью?" data-callback="afterCleanCache" href="#" role="button">Очистить кеш <span id="cache-size"><i class="fa fa-circle-o-notch fa-spin small"></i></span></a>
120  </div>
121  <div class="bg-light-info border mt-1 px-2 py-1 rounded">
122  <div class="custom-control custom-checkbox small">
123  <input type="checkbox" name="RETURN_TO_REQUEST" class="custom-control-input" id="RETURN_TO_REQUEST" <?= Wrong\Database\Controller::find('RETURN_TO_REQUEST', 'name', 'settings')->value ? 'checked' : '' ?>>
124  <label class="custom-control-label" for="RETURN_TO_REQUEST"><?= Wrong\Database\Controller::find('RETURN_TO_REQUEST', 'name', 'settings')->description ?></label>
125  </div>
126  </div>
127  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
128  <div class="custom-control custom-checkbox small">
129  <input type="checkbox" name="HIDE_OUT_LINKS" class="custom-control-input" id="HIDE_OUT_LINKS" <?= Wrong\Database\Controller::find('HIDE_OUT_LINKS', 'name', 'settings')->value ? 'checked' : '' ?>>
130  <label class="custom-control-label" for="HIDE_OUT_LINKS"><?= Wrong\Database\Controller::find('HIDE_OUT_LINKS', 'name', 'settings')->description ?></label>
131  </div>
132  </div>
133  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
134  <div class="custom-control custom-checkbox small">
135  <input type="checkbox" name="HIDE_OUT_ACTIONS_MODALS" class="custom-control-input" id="HIDE_OUT_ACTIONS_MODALS" <?= Wrong\Database\Controller::find('HIDE_OUT_ACTIONS_MODALS', 'name', 'settings')->value ? 'checked' : '' ?>>
136  <label class="custom-control-label" for="HIDE_OUT_ACTIONS_MODALS"><?= Wrong\Database\Controller::find('HIDE_OUT_ACTIONS_MODALS', 'name', 'settings')->description ?></label>
137  </div>
138  </div>
139  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
140  <div class="custom-control custom-checkbox small">
141  <input type="checkbox" name="API" class="custom-control-input" id="API" <?= Wrong\Database\Controller::find('API', 'name', 'settings')->value ? 'checked' : '' ?>>
142  <label class="custom-control-label" for="API"><?= Wrong\Database\Controller::find('API', 'name', 'settings')->description ?></label>
143  </div>
144  </div>
145  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
146  <div class="custom-control custom-checkbox small">
147  <input type="checkbox" name="CRON_ACT" class="custom-control-input" id="CRON_ACT" <?= Wrong\Database\Controller::find('CRON_ACT', 'name', 'settings')->value ? 'checked' : '' ?>>
148  <label class="custom-control-label" for="CRON_ACT"><?= Wrong\Database\Controller::find('CRON_ACT', 'name', 'settings')->description ?></label>
149  </div>
150  </div>
151  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
152  <div class="custom-control custom-checkbox small">
153  <input type="checkbox" name="CRON_CLI" class="custom-control-input" id="CRON_CLI" <?= Wrong\Database\Controller::find('CRON_CLI', 'name', 'settings')->value ? 'checked' : '' ?>>
154  <label class="custom-control-label" for="CRON_CLI"><?= Wrong\Database\Controller::find('CRON_CLI', 'name', 'settings')->description ?></label>
155  </div>
156  </div>
157  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
158  <div class="custom-control custom-checkbox small">
159  <input type="checkbox" name="SUBORDINATE_MODELS" class="custom-control-input" id="SUBORDINATE_MODELS" <?= Wrong\Database\Controller::find('SUBORDINATE_MODELS', 'name', 'settings')->value ? 'checked' : '' ?>>
160  <label class="custom-control-label" for="SUBORDINATE_MODELS"><?= Wrong\Database\Controller::find('SUBORDINATE_MODELS', 'name', 'settings')->description ?></label>
161  </div>
162  </div>
163  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
164  <div class="custom-control custom-checkbox small">
165  <input type="checkbox" name="HIDE_NON_ACTIVE_GROUP_MODELS" class="custom-control-input" id="HIDE_NON_ACTIVE_GROUP_MODELS" <?= Wrong\Database\Controller::find('HIDE_NON_ACTIVE_GROUP_MODELS', 'name', 'settings')->value ? 'checked' : '' ?>>
166  <label class="custom-control-label" for="HIDE_NON_ACTIVE_GROUP_MODELS"><?= Wrong\Database\Controller::find('HIDE_NON_ACTIVE_GROUP_MODELS', 'name', 'settings')->description ?></label>
167  </div>
168  </div>
169  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
170  <div class="custom-control custom-checkbox small">
171  <input type="checkbox" name="SYSTEM_CLOSED" class="custom-control-input" id="SYSTEM_CLOSED" <?= Wrong\Database\Controller::find('SYSTEM_CLOSED', 'name', 'settings')->value ? 'checked' : '' ?>>
172  <label class="custom-control-label text-danger" for="SYSTEM_CLOSED"><?= Wrong\Database\Controller::find('SYSTEM_CLOSED', 'name', 'settings')->description ?></label>
173  </div>
174  </div>
175  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
176  <div class="custom-control custom-checkbox small">
177  <input type="checkbox" name="DEVELOPER_MODE" class="custom-control-input" id="DEVELOPER_MODE" <?= Wrong\Database\Controller::find('DEVELOPER_MODE', 'name', 'settings')->value ? 'checked' : '' ?>>
178  <label class="custom-control-label text-danger" for="DEVELOPER_MODE"><?= Wrong\Database\Controller::find('DEVELOPER_MODE', 'name', 'settings')->description ?></label>
179  </div>
180  </div>
181 
182 
183  <div class="badge badge-warning px-2 mt-2">Отправка почты:</div>
184  <div class="bg-light-info border mt-1 px-2 py-1 rounded">
185  <div class="custom-control custom-checkbox small">
186  <input type="checkbox" name="EMAIL" class="custom-control-input" id="EMAIL" <?= Wrong\Database\Controller::find('EMAIL', 'name', 'settings')->value ? 'checked' : '' ?>>
187  <label class="custom-control-label" for="EMAIL"><?= Wrong\Database\Controller::find('EMAIL', 'name', 'settings')->description ?></label>
188  </div>
189  </div>
190  <div class="input-group input-group-sm mt-2">
191  <div class="input-group-prepend w-50">
192  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('MAIL_USERNAME', 'name', 'settings')->description ?></span>
193  </div>
194  <input type="text" name="MAIL_USERNAME" class="form-control" value="<?= Wrong\Start\Env::$e->MAIL_USERNAME ?>" placeholder="MAIL_USERNAME" autocomplete="off">
195  </div>
196  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
197  <div class="custom-control custom-checkbox small">
198  <input type="checkbox" name="EMAIL_CONFIRMATION" class="custom-control-input" id="EMAIL_CONFIRMATION" <?= Wrong\Database\Controller::find('EMAIL_CONFIRMATION', 'name', 'settings')->value ? 'checked' : '' ?>>
199  <label class="custom-control-label" for="EMAIL_CONFIRMATION"><?= Wrong\Database\Controller::find('EMAIL_CONFIRMATION', 'name', 'settings')->description ?></label>
200  </div>
201  </div>
202  <div class="bg-light-info border mt-2 px-2 py-1 rounded">
203  <div class="custom-control custom-checkbox small">
204  <input type="checkbox" name="SMTP" class="custom-control-input" id="SMTP" <?= Wrong\Database\Controller::find('SMTP', 'name', 'settings')->value ? 'checked' : '' ?>>
205  <label class="custom-control-label" for="SMTP"><?= Wrong\Database\Controller::find('SMTP', 'name', 'settings')->description ?></label>
206  </div>
207  </div>
208  <div class="input-group input-group-sm mt-2">
209  <div class="input-group-prepend w-50">
210  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('SMTP_HOST', 'name', 'settings')->description ?></span>
211  </div>
212  <input type="text" name="SMTP_HOST" class="form-control" value="<?= Wrong\Start\Env::$e->SMTP_HOST ?>" placeholder="SMTP_HOST" autocomplete="off">
213  </div>
214  <div class="input-group input-group-sm mt-2">
215  <div class="input-group-prepend w-50">
216  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('SMTP_PORT', 'name', 'settings')->description ?></span>
217  </div>
218  <input type="number" name="SMTP_PORT" class="form-control" value="<?= Wrong\Start\Env::$e->SMTP_PORT ?>" placeholder="SMTP_PORT" autocomplete="off">
219  </div>
220  <div class="input-group input-group-sm mt-2">
221  <div class="input-group-prepend w-50">
222  <span class="input-group-text w-100"><?= Wrong\Database\Controller::find('SMTP_PASSWORD', 'name', 'settings')->description ?></span>
223  </div>
224  <input type="text" name="SMTP_PASSWORD" class="form-control" value="<?= Wrong\Start\Env::$e->SMTP_PASSWORD ?>" placeholder="SMTP_PASSWORD" autocomplete="off">
225  </div>
226  </div>
227  </div>
228  </form>
229  </div>
230  <button form="form-system-settings" type="submit" class="btn btn-sm btn-block btn-success">Сохранить</button>
231  </div>
232  </div>
233  <script>
234  $("#<?= $basename ?> form").submit(function(e) {
235  lockSubmit($("#<?= $basename ?> [type=submit]"));
236  e.preventDefault();
237  $.ajax({
238  type: "POST",
239  url: $(this).attr("action"),
240  data: $(this).serialize(),
241  dataType: "json",
242  statusCode: {
243  404: errorToast,
244  403: errorToast
245  }
246  })
247  .done(response => {
248  if (response.error) {
249  errorToast(response.error);
250  return;
251  }
252  $('.dataTable').DataTable().ajax.reload(null, false);
253  $('.toast').toast('hide');
254  successToast(response.message);
255  $("#<?= $basename ?>").modal("hide");
256  })
257  .always(() => {
258  unlockSubmit($("#<?= $basename ?> [type=submit]"));
259  });
260  });
261 
262  $("#<?= $basename ?> [name=CRON_ACT]").change(function() {
263  if ($(this).is(':checked')) {
264  $('#crontabs-alert').fadeOut();
265  } else {
266  $('#crontabs-alert').fadeIn();
267  }
268  });
269 
270  $("#<?= $basename ?> [name=EMAIL]").change(function() {
271  if (!$(this).is(':checked')) {
272  $("#<?= $basename ?> [name=EMAIL_CONFIRMATION]").prop("checked", false);
273  }
274  });
275 
276  $("#<?= $basename ?> [name=EMAIL_CONFIRMATION]").change(function() {
277  if ($(this).is(':checked')) {
278  $("#<?= $basename ?> [name=EMAIL]").prop("checked", true);
279  }
280  });
281 
282  $('#cache-size').load('/api/select/cache-size');
283 
284  function afterCleanCache(response) {
285  if (response.error) {
286  errorToast(response.error);
287  return;
288  }
289  successToast(response.message);
290  $('#cache-size').html(response.size);
291  }
292  </script>
293 </div>
static find($value, $column='id', $table='')
Definition: Controller.php:31
static row($id)
Definition: Group.php:245
static $e
Definition: Env.php:22
$user
Definition: from-user.php:38
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
Definition: from-user.php:36
href
Definition: main.php:21