summaryrefslogtreecommitdiff
path: root/src/controller/post.php
blob: 89246868a5c69c2a4b6400de61da83ab11ea1083 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
// src/controller/post.php

declare(strict_types=1);

if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true)
{
    /* -- requêtes non AJAX -- */
    // page Menu et chemin
    /*if(isset($_POST['menu_edit_post']) && isset($_POST['id']))
    {
        // <= flèche gauche: le parent devient le grand-parent position = position du parent + 1, recalculer les positions des enfants restants
        if($_POST['menu_edit_post'] == 'move_one_level_up'){
            Director::$menu_data = new Menu($entityManager);
            $page = Director::$menu_data->findPageById((int)$_POST['id']);

            $parent = $page->getParent(); // peut être null
            if($parent === null){
                // 1er niveau: ne rien faire
                header('Location: ' . new URL(['page' => 'menu_chemins']));
                die;
            }
            else{
                $page->setPosition($parent->getPosition() + 1); // nouvelle position

                // 2ème niveau: le parent devient $menu_data, puis null après tri
                if($parent->getParent() === null){
                    // connexion dans les deux sens
                    $page->setParent(Director::$menu_data); // => pour la persistance
                    Director::$menu_data->addChild($page); // => pour sortChildren

                    //Director::$menu_data->sortChildren(true); // positions décaléees des nouveaux petits frères
                    $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères

                    $page->setParent(null);
                }
                // 3ème niveau et plus
                else{
                    $page->setParent($parent->getParent()); // nouveau parent
                    $page->getParent()->sortChildren(true); // positions décaléees des nouveaux petits frères
                }
                //$parent->sortChildren(true); // positions des enfants restants, inutile si la fonction est récursive?
                echo $page->getPosition();
                //die;
            }
            $entityManager->flush();

            header('Location: ' . new URL(['page' => 'menu_chemins']));
            die;
        }
        // => flèche droite: l'élément précédent devient le parent, position = nombre d'éléments de la fraterie + 1
        elseif($_POST['menu_edit_post'] == 'move_one_level_down')
        {
            Director::$menu_data = new Menu($entityManager);
            $page = Director::$menu_data->findPageById((int)$_POST['id']);

            $parent = $page->getParent(); // peut être null
            if($parent == null){
                $parent = Director::$menu_data;
            }

            $parent->sortChildren(true); // trie et réindexe par sécurité: 1, 2, 3...
            if($page->getPosition() > 1){
                foreach($parent->getChildren() as $child){
                    echo $child->getPageName();
                    if($child->getPosition() === $page->getPosition() - 1){
                        $page->setParent($child);
                        break;
                    }
                }
                $page->setPosition(count($page->getParent()->getChildren()) + 1);
            }
            $entityManager->flush();

            header('Location: ' . new URL(['page' => 'menu_chemins']));
            die;
        }
        else{
            // you talking to me?
            die;
        }
    }*/

    /* -- requêtes AJAX -- */
    require '../src/controller/ajax.php';

    // formulaires HTML
    /*if(isset($_POST['from']) // page d'où vient la requête
        && isset($_POST)) // données
    {
        echo "requête envoyée en validant un formulaire";
    }*/
}