init
[garradin.git] / www / admin / wiki / editer.php
1 <?php
2 namespace Garradin;
3
4 require_once __DIR__ . '/_inc.php';
5
6 if ($user['droits']['wiki'] < Membres::DROIT_ECRITURE)
7 {
8 throw new UserException("Vous n'avez pas le droit d'accéder à cette page.");
9 }
10
11 if (!utils::get('id') || !is_numeric(utils::get('id')))
12 {
13 throw new UserException('Numéro de page invalide.');
14 }
15
16 $page = $wiki->getById(utils::get('id'));
17 $error = false;
18
19 if (!$page)
20 {
21 throw new UserException('Page introuvable.');
22 }
23
24 if (!empty($page['contenu']))
25 {
26 $page['chiffrement'] = $page['contenu']['chiffrement'];
27 $page['contenu'] = $page['contenu']['contenu'];
28 }
29
30 if (utils::post('date'))
31 {
32 $date = strtotime(utils::post('date') . ' ' . utils::post('date_h') . ':' . utils::post('date_min'));
33 }
34 else
35 {
36 $date = false;
37 }
38
39 if (!empty($_POST['save']))
40 {
41 if (!utils::CSRF_check('wiki_edit_'.$page['id']))
42 {
43 $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
44 }
45 elseif ($page['date_modification'] > (int) utils::post('debut_edition'))
46 {
47 $error = 'La page a été modifiée par quelqu\'un d\'autre depuis que vous avez commencé l\'édition.';
48 }
49 else
50 {
51 try {
52 $wiki->edit($page['id'], [
53 'titre' => utils::post('titre'),
54 'uri' => utils::post('uri'),
55 'parent' => utils::post('parent'),
56 'droit_lecture' => utils::post('droit_lecture'),
57 'droit_ecriture'=> utils::post('droit_ecriture'),
58 'date_creation' => $date,
59 ]);
60
61 $wiki->editRevision($page['id'], (int) utils::post('revision_edition'), [
62 'contenu' => utils::post('contenu'),
63 'modification' => utils::post('modification'),
64 'id_auteur' => $user['id'],
65 'chiffrement' => utils::post('chiffrement'),
66 ]);
67
68 $page = $wiki->getById($page['id']);
69
70 utils::redirect('/admin/wiki/?'.$page['uri']);
71 }
72 catch (UserException $e)
73 {
74 $error = $e->getMessage();
75 }
76 }
77 }
78
79 $parent = (int) utils::post('parent') ?: (int) $page['parent'];
80 $tpl->assign('parent', $parent ? $wiki->getTitle($parent) : 0);
81
82 $tpl->assign('error', $error);
83 $tpl->assign('page', $page);
84
85 $tpl->assign('time', time());
86 $tpl->assign('date', $date ? $date : $page['date_creation']);
87
88 $tpl->assign('custom_js', ['wikitoolbar.js', 'wiki-encryption.js']);
89
90 $tpl->display('admin/wiki/editer.tpl');
91
92 ?>