summaryrefslogtreecommitdiff
path: root/controller/installation.php
blob: f0d2890a7585a736b46e7f7eb23f18b10c2c1727 (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
// controller/installation.php

// premier démarrage du site
function installation()
{
    // présence du .htaccess
    if(!file_exists(".htaccess"))
    {
        $contenu = "ErrorDocument 404 /erreur404.php";

        echo('<p style="color: orange; text-align:center;" >Le .htaccess est absent.<br/>
            Si vous ne savez pas de quoi il s\'agit, contactez le responsable du site.<br/>
            Sinon, veuillez créer un fichier nommé .htaccess à la racine du site et y copier-coller la ligne suivante:<br/><br/>
            <i>' . $contenu . '</i></p>');

        // Pour le créer
        // laisser commenté, la création risque d'échouer 
        // $fichier = fopen('.htaccess', 'w');
        // fputs($fichier, $contenu);
        // fclose($fichier);
        // chmod('.htaccess', 0666); // mettre 0644 en production
    }

    // extensions de php
    // nécessité de 'dom' à confirmer
    $extensions = ['imagick', 'gd', 'zip', 'mbstring', 'dom'];
    foreach($extensions as $extension)
    {
        if(!extension_loaded($extension))
        {
            echo("l'extension " . $extension . ' est manquante<br>');
        }
    }

    // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" (un fichier .sql),
    // à voir si php est capable d'obtenir ou redonner ce fichier à la BDD
    

    // création des dossiers
    // attention: ne fonctionne pas sans une manipulation préalable
    // - créer le dossier data à la racine du site
    // - lui donner les droits du dossier data pour 777

    // droits en octal
    $droitsDossiers = 0777;
    $droitsFichiers = 0666;

    if(!file_exists('data') && !mkdir('data'))
    {
        $erreur = 'data';
        $title = 'Dossier data absent';
        require('view/backup.php');
        exit();
    }
    if(!touch('data')) // test autorisation en écriture
    {
        $erreur = 'data';
        $title = 'Écriture non autorisée dans le dossier data';
        require('view/backup.php');
        exit();
    }
    if(!file_exists('data/index.php'))
    {
        createIndexPHP('data/index.php', $droitsFichiers);
    }
    
    $listePages = array('menu', 'melaine', 'musique', 'discographie', 'presse', 'livres', 'jaime', 'peinture', 'archives', 'legal');
    $sousDossiers = array('html', 'html-maxi-images', 'images', 'images-mini');
    foreach ($listePages as $page)
    {
        if(!file_exists('data/' . $page))
        {
            mkdir('data/' . $page);
            chmod('data/' . $page, $droitsDossiers);
        }
        if(!file_exists('data/' . $page . '/index.php'))
        {
            createIndexPHP('data/' . $page . '/index.php', $droitsFichiers);
        }
        if(!file_exists('data/' . $page . '/positions.json'))
        {
            // création de fichiers VIDES (gestion par le modèle)
            touch('data/' . $page . '/positions.json');
            chmod('data/' . $page . '/positions.json', $droitsFichiers);
        }
        foreach ($sousDossiers as $sousDossier)
        {
            if(!file_exists('data/' . $page . '/' . $sousDossier))
            {
                mkdir('data/' . $page . '/' . $sousDossier);
                chmod('data/' . $page . '/' . $sousDossier, $droitsDossiers);
            }
            if(!file_exists('data/' . $page . '/' . $sousDossier . '/index.php'))
            {
                createIndexPHP('data/' . $page . '/' . $sousDossier . '/index.php', $droitsFichiers);
            }
        }
        // if(!file_exists('data/' . $page . '/multimedia'))
        // {
        //     mkdir('data/' . $page . '/multimedia');
        //     chmod('data/' . $page . '/multimedia', 0777);
        // }
    }

    // dossier "json" dans discographie
    if(!file_exists('data/discographie/json'))
    {
        mkdir('data/discographie/json');
        chmod('data/discographie/json', $droitsDossiers);
    }
    if(!file_exists('data/discographie/json/index.php'))
    {
        createIndexPHP('data/discographie/json/index.php', $droitsFichiers);
    }

    // fichiers temporaires pour upload des grosses archives
    if(!file_exists('data/tmp'))
    {
        mkdir('data/tmp');
        chmod('data/tmp', $droitsDossiers);
    }
    if(!file_exists('data/tmp/index.php'))
    {
        createIndexPHP('data/tmp/index.php', $droitsFichiers);
    }

    // créer le melainePHP.zip
    if(!file_exists("data/melainePHP.zip"))
    {
        require('controller/backup.php');
        createZipMelainePHP();
    }

    // création d'un mot de passe si password.txt est vide
    existPassword();
}

function createIndexPHP($path, $droitsFichiers)
{
    $content = "<?php\nheader('Location: ../index.php');\nexit();";
    $file = fopen($path, 'w');
    fputs($file, $content);
    fclose($file);
    chmod($path, $droitsFichiers);
}