summaryrefslogtreecommitdiff
path: root/model/Image.php
blob: 8ebcd1623718d379f29b289baa8f09d83d719ae9 (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
<?php
// model/Image.php

class Image
{
	private const MAX_WEIGHT = 2000000; // à adapter au php.ini
	private $page;
	private $ajax = false; // vaut true avec le ckeditor
	public $erreur;

	public function __construct($ajax)
	{
		// get envoyé avec le javascript
		$this->page = $_GET['page'];
		$this->ajax = $ajax;
	}

	// GET
	
	// SET

	// miniatures des photos

	public function upload()
    {
		// traitement et enregistrement de l'image
		if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
		{
		    if ($_FILES['upload']['size'] <= self::MAX_WEIGHT)
		    {
		        $infos = pathinfo($_FILES['upload']['name']);
		        $extension = $infos['extension'];
		        $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff');
		        // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
		        if (in_array($extension, $extautorisées))
		        {
		            move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']);
		            chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666);
		        }
		        else{$this->erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff<br />le format svg n\'est pas supporté';}
		    }
		    else
		    {
		    	$this->erreur = 'erreur du serveur: le fichier téléchargé est trop lourd, poids max = ' . self::MAX_WEIGHT . ' octets';
		    }
		}
		else
		{
		    $this->erreur = 'erreur du serveur: le fichier téléchargé est trop lourd, poids max = ' . self::MAX_WEIGHT . ' octets';
		}

		// retour des rêquetes AJAX
		if($this->ajax && empty($Image->erreur))
		{
			// nouveau chemin à renvoyer en format json
			$chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}';
			echo $chemin;
		}
    }
}