diff --git a/.gitignore b/.gitignore
index d03e4a7ee..760271230 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
+lib/minz
log/application.log
cache
diff --git a/README b/README
index 7afefc386..265b519ca 100644
--- a/README
+++ b/README
@@ -23,6 +23,7 @@ PRE-REQUIS
==========
- Serveur Apache (pas testé sur aucun autre)
- PHP 5.3 (il me faudrait des retours sur d'autres versions)
+- libxml pour PHP
- MySQL
INSTALLATION
diff --git a/app/configuration/application.ini b/app/configuration/application.ini
index 149bc6c5b..2beb60324 100644
--- a/app/configuration/application.ini
+++ b/app/configuration/application.ini
@@ -1,6 +1,6 @@
[general]
environment = "development"
-use_url_rewriting = true
+use_url_rewriting = false
sel_application = "flux rss lalala ~~~"
base_url = "/~marien/rss/public" ; pas de slash à la fin /!\
diff --git a/app/configuration/routes.php b/app/configuration/routes.php
deleted file mode 100644
index d32dca3ee..000000000
--- a/app/configuration/routes.php
+++ /dev/null
@@ -1,136 +0,0 @@
- '/\?q=([\w\d\-_]+)&p=([\d]+)',
- 'controller' => 'index',
- 'action' => 'index',
- 'params' => array ('get', 'page')
- ),
- array (
- 'route' => '/\?q=([\w\d\-_]+)',
- 'controller' => 'index',
- 'action' => 'index',
- 'params' => array ('get')
- ),
- array (
- 'route' => '/\?p=([\d]+)',
- 'controller' => 'index',
- 'action' => 'index',
- 'params' => array ('page')
- ),
- array (
- 'route' => '/login.php',
- 'controller' => 'index',
- 'action' => 'login'
- ),
- array (
- 'route' => '/logout.php',
- 'controller' => 'index',
- 'action' => 'logout'
- ),
- array (
- 'route' => '/mode.php\?m=([\w_]+)',
- 'controller' => 'index',
- 'action' => 'changeMode',
- 'params' => array ('mode')
- ),
-
- // Scripts
- array (
- 'route' => '/scripts/main.js',
- 'controller' => 'javascript',
- 'action' => 'main'
- ),
-
- // API
- array (
- 'route' => '/api/get_favorites',
- 'controller' => 'api',
- 'action' => 'getFavorites'
- ),
- array (
- 'route' => '/api/get_nb_not_read',
- 'controller' => 'api',
- 'action' => 'getNbNotRead'
- ),
-
- // Entry
- array (
- 'route' => '/articles/marquer.php\?id=([\w\d\-_]{6})&lu=([\d]{1})',
- 'controller' => 'entry',
- 'action' => 'read',
- 'params' => array ('id', 'is_read')
- ),
- array (
- 'route' => '/articles/marquer.php\?lu=([\d]{1})',
- 'controller' => 'entry',
- 'action' => 'read',
- 'params' => array ('is_read')
- ),
- array (
- 'route' => '/articles/marquer.php\?id=([\w\d\-_]{6})&favori=([\d]{1})',
- 'controller' => 'entry',
- 'action' => 'bookmark',
- 'params' => array ('id', 'is_favorite')
- ),
-
-
- // Feed
- array (
- 'route' => '/flux/ajouter.php',
- 'controller' => 'feed',
- 'action' => 'add'
- ),
- array (
- 'route' => '/flux/actualiser.php',
- 'controller' => 'feed',
- 'action' => 'actualize'
- ),
- array (
- 'route' => '/flux/supprimer.php\?id=([\w\d\-_]{6})',
- 'controller' => 'feed',
- 'action' => 'delete',
- 'params' => array ('id')
- ),
-
- // Configure
- array (
- 'route' => '/configuration/flux.php',
- 'controller' => 'configure',
- 'action' => 'feed'
- ),
- array (
- 'route' => '/configuration/flux.php\?id=([\w\d\-_]{6})',
- 'controller' => 'configure',
- 'action' => 'feed',
- 'params' => array ('id')
- ),
- array (
- 'route' => '/configuration/categories.php',
- 'controller' => 'configure',
- 'action' => 'categorize'
- ),
- array (
- 'route' => '/configuration/global.php',
- 'controller' => 'configure',
- 'action' => 'display'
- ),
- array (
- 'route' => '/configuration/import_export.php',
- 'controller' => 'configure',
- 'action' => 'importExport'
- ),
- array (
- 'route' => '/configuration/import_export.php\?q=([\w]{6})',
- 'controller' => 'configure',
- 'action' => 'importExport',
- 'params' => array ('q')
- ),
- array (
- 'route' => '/configuration/raccourcis.php',
- 'controller' => 'configure',
- 'action' => 'shortcut'
- ),
-);
diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php
index 9a56e97cf..585405ee7 100755
--- a/app/controllers/feedController.php
+++ b/app/controllers/feedController.php
@@ -10,11 +10,11 @@ class feedController extends ActionController {
} else {
if (Request::isPost ()) {
$url = Request::param ('url_rss');
-
+
try {
$feed = new Feed ($url);
$feed->load ();
-
+
$feedDAO = new FeedDAO ();
$values = array (
'id' => $feed->id (),
@@ -26,7 +26,7 @@ class feedController extends ActionController {
'lastUpdate' => time ()
);
$feedDAO->addFeed ($values);
-
+
$entryDAO = new EntryDAO ();
$entries = $feed->entries ();
foreach ($entries as $entry) {
@@ -44,13 +44,21 @@ class feedController extends ActionController {
);
$entryDAO->addEntry ($values);
}
-
+
// notif
$notif = array (
'type' => 'good',
'content' => 'Le flux ' . $feed->url () . ' a bien été ajouté'
);
Session::_param ('notification', $notif);
+ } catch (FileNotExistException $e) {
+ Log::record ($e->getMessage (), Log::ERROR);
+ // notif
+ $notif = array (
+ 'type' => 'bad',
+ 'content' => 'Un problème de configuration a empêché l\'ajout du flux. Voir les logs pour plus d\'informations'
+ );
+ Session::_param ('notification', $notif);
} catch (Exception $e) {
// notif
$notif = array (
@@ -59,7 +67,7 @@ class feedController extends ActionController {
);
Session::_param ('notification', $notif);
}
-
+
Request::forward (array (), true);
}
}
diff --git a/app/models/Feed.php b/app/models/Feed.php
index 2db9af40d..67874925f 100644
--- a/app/models/Feed.php
+++ b/app/models/Feed.php
@@ -84,16 +84,23 @@ class Feed extends Model {
public function load () {
if (!is_null ($this->url)) {
- $feed = new SimplePie ();
- $feed->set_feed_url ($this->url);
- $feed->set_cache_location (CACHE_PATH);
- $feed->init ();
-
- $title = $feed->get_title ();
- $this->_name (!is_null ($title) ? $title : $this->url);
- $this->_website ($feed->get_link ());
- $this->_description ($feed->get_description ());
- $this->loadEntries ($feed);
+ if (CACHE_PATH === false) {
+ throw new FileNotExistException (
+ 'CACHE_PATH',
+ MinzException::ERROR
+ );
+ } else {
+ $feed = new SimplePie ();
+ $feed->set_feed_url ($this->url);
+ $feed->set_cache_location (CACHE_PATH);
+ $feed->init ();
+
+ $title = $feed->get_title ();
+ $this->_name (!is_null ($title) ? $title : $this->url);
+ $this->_website ($feed->get_link ());
+ $this->_description ($feed->get_description ());
+ $this->loadEntries ($feed);
+ }
}
}
private function loadEntries ($feed) {
diff --git a/app/views/configure/feed.phtml b/app/views/configure/feed.phtml
index 54867ba9a..0acec1872 100644
--- a/app/views/configure/feed.phtml
+++ b/app/views/configure/feed.phtml
@@ -38,9 +38,9 @@
+
-
Aucun flux sélectionné
diff --git a/build.sh b/build.sh
new file mode 100755
index 000000000..e6c563b83
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+MINZ_REPO_URL="https://github.com/marienfressinaud/MINZ.git"
+MINZ_CLONE_PATH="./minz_tmp"
+LIB_MINZ_PATH="./minz_tmp/lib/*"
+LIB_PATH="./lib/minz"
+LOG_PATH="./log"
+CACHE_PATH="./cache"
+
+git_check() {
+ printf "Vérification de la présence de git... "
+
+ EXE_PATH=$(which "git" 2>/dev/null)
+ if [ $? -ne 0 ]; then
+ printf "git n'est pas présent sur votre système. Veuillez l'installer avant de continuer\n";
+ exit 1
+ else
+ printf "git a été trouvé\n"
+ fi
+}
+
+dir_check() {
+ test -d $LOG_PATH
+ if [ $? -ne 0 ]; then
+ mkdir $LOG_PATH
+ fi
+
+ test -d $CACHE_PATH
+ if [ $? -ne 0 ]; then
+ mkdir $CACHE_PATH
+ fi
+}
+
+clone_minz() {
+ printf "Récupération de Minz...\n"
+
+ git clone $MINZ_REPO_URL $MINZ_CLONE_PATH
+ test -d $LIB_PATH
+ if [ $? -ne 0 ]; then
+ mkdir -p $LIB_PATH
+ fi
+ mv $LIB_MINZ_PATH $LIB_PATH
+ rm -rf $MINZ_CLONE_PATH
+
+ printf "Récupération de Minz terminée...\n"
+}
+
+git_check
+dir_check
+clone_minz
diff --git a/freshrss.sql b/freshrss.sql
index 5be4da1c6..34ef29aa4 100644
--- a/freshrss.sql
+++ b/freshrss.sql
@@ -1,11 +1,11 @@
-- phpMyAdmin SQL Dump
--- version 3.5.3
+-- version 3.5.5
-- http://www.phpmyadmin.net
--
-- Client: localhost
--- Généré le: Dim 28 Octobre 2012 à 10:58
--- Version du serveur: 5.5.28-log
--- Version de PHP: 5.4.8
+-- Généré le: Sam 02 Mars 2013 à 00:09
+-- Version du serveur: 5.1.68-cll
+-- Version de PHP: 5.3.17
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
@@ -67,6 +67,7 @@ CREATE TABLE IF NOT EXISTS `feed` (
`name` varchar(255) NOT NULL,
`website` text NOT NULL,
`description` text NOT NULL,
+ `lastUpdate` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `category` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -86,3 +87,7 @@ ALTER TABLE `entry`
--
ALTER TABLE `feed`
ADD CONSTRAINT `feed_ibfk_4` FOREIGN KEY (`category`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/lib/ActionController.php b/lib/ActionController.php
deleted file mode 100755
index ab9389dbd..000000000
--- a/lib/ActionController.php
+++ /dev/null
@@ -1,42 +0,0 @@
-
-*/
-
-/**
- * La classe ActionController représente le contrôleur de l'application
- */
-class ActionController {
- protected $router;
- protected $view;
-
- /**
- * Constructeur
- * @param $controller nom du controller
- * @param $action nom de l'action à lancer
- */
- public function __construct ($router) {
- $this->router = $router;
- $this->view = new View ();
- $this->view->attributeParams ();
- }
-
- /**
- * Getteur
- */
- public function view () {
- return $this->view;
- }
-
- /**
- * Méthodes à redéfinir (ou non) par héritage
- * firstAction est la première méthode exécutée par le Dispatcher
- * lastAction est la dernière
- */
- public function init () { }
- public function firstAction () { }
- public function lastAction () { }
-}
-
-
diff --git a/lib/Cache.php b/lib/Cache.php
deleted file mode 100644
index 2fe0693d8..000000000
--- a/lib/Cache.php
+++ /dev/null
@@ -1,116 +0,0 @@
-
-*/
-
-/**
- * La classe Cache permet de gérer facilement les pages en cache
- */
-class Cache {
- /**
- * $expire timestamp auquel expire le cache de $url
- */
- private $expire = 0;
-
- /**
- * $file est le nom du fichier de cache
- */
- private $file = '';
-
- /**
- * $enabled permet de déterminer si le cache est activé
- */
- private static $enabled = true;
-
- /**
- * Constructeur
- */
- public function __construct () {
- $this->_fileName ();
- $this->_expire ();
- }
-
- /**
- * Setteurs
- */
- public function _fileName () {
- $file = md5 (Request::getURI ());
-
- $this->file = CACHE_PATH . '/'.$file;
- }
-
- public function _expire () {
- if ($this->exist ()) {
- $this->expire = filemtime ($this->file)
- + Configuration::delayCache ();
- }
- }
-
- /**
- * Permet de savoir si le cache est activé
- * @return true si activé, false sinon
- */
- public static function isEnabled () {
- return Configuration::cacheEnabled () && self::$enabled;
- }
-
- /**
- * Active / désactive le cache
- */
- public static function switchOn () {
- self::$enabled = true;
- }
- public static function switchOff () {
- self::$enabled = false;
- }
-
- /**
- * Détermine si le cache de $url a expiré ou non
- * @return true si il a expiré, false sinon
- */
- public function expired () {
- return time () > $this->expire;
- }
-
- /**
- * Affiche le contenu du cache
- * @print le code html du cache
- */
- public function render () {
- if ($this->exist ()) {
- include ($this->file);
- }
- }
-
- /**
- * Enregistre $html en cache
- * @param $html le html à mettre en cache
- */
- public function cache ($html) {
- file_put_contents ($this->file, $html);
- }
-
- /**
- * Permet de savoir si le cache existence
- * @return true si il existe, false sinon
- */
- public function exist () {
- return file_exists ($this->file);
- }
-
- /**
- * Nettoie le cache en supprimant tous les fichiers
- */
- public static function clean () {
- $files = opendir (CACHE_PATH);
-
- while ($fic = readdir ($files)) {
- if ($fic != '.' && $fic != '..') {
- unlink (CACHE_PATH.'/'.$fic);
- }
- }
-
- closedir ($files);
- }
-}
diff --git a/lib/Configuration.php b/lib/Configuration.php
deleted file mode 100755
index 90caa26b5..000000000
--- a/lib/Configuration.php
+++ /dev/null
@@ -1,219 +0,0 @@
-
-*/
-
-/**
- * La classe Configuration permet de gérer la configuration de l'application
- */
-class Configuration {
- const CONF_PATH_NAME = '/configuration/application.ini';
-
- /**
- * VERSION est la version actuelle de MINZ
- */
- const VERSION = '1.1.0';
-
- /**
- * valeurs possibles pour l'"environment"
- * SILENT rend l'application muette (pas de log)
- * PRODUCTION est recommandée pour une appli en production
- * (log les erreurs critiques)
- * DEVELOPMENT log toutes les erreurs
- */
- const SILENT = 0;
- const PRODUCTION = 1;
- const DEVELOPMENT = 2;
-
- /**
- * définition des variables de configuration
- * $sel_application une chaîne de caractères aléatoires (obligatoire)
- * $environment gère le niveau d'affichage pour log et erreurs
- * $use_url_rewriting indique si on utilise l'url_rewriting
- * $base_url le chemin de base pour accéder à l'application
- * $title le nom de l'application
- * $language la langue par défaut de l'application
- * $cacheEnabled permet de savoir si le cache doit être activé
- * $delayCache la limite de cache
- * $db paramètres pour la base de données (tableau)
- * - host le serveur de la base
- * - user nom d'utilisateur
- * - password mot de passe de l'utilisateur
- * - base le nom de la base de données
- */
- private static $sel_application = '';
- private static $environment = Configuration::PRODUCTION;
- private static $base_url = '';
- private static $use_url_rewriting = false;
- private static $title = '';
- private static $language = 'en';
- private static $cache_enabled = true;
- private static $delay_cache = 3600;
-
- private static $db = array (
- 'host' => false,
- 'user' => false,
- 'password' => false,
- 'base' => false
- );
-
- /*
- * Getteurs
- */
- public static function selApplication () {
- return self::$sel_application;
- }
- public static function environment () {
- return self::$environment;
- }
- public static function baseUrl () {
- return self::$base_url;
- }
- public static function useUrlRewriting () {
- return self::$use_url_rewriting;
- }
- public static function title () {
- return self::$title;
- }
- public static function language () {
- return self::$language;
- }
- public static function cacheEnabled () {
- return self::$cache_enabled;
- }
- public static function delayCache () {
- return self::$delay_cache;
- }
- public static function dataBase () {
- return self::$db;
- }
-
- /**
- * Initialise les variables de configuration
- * @exception FileNotExistException si le CONF_PATH_NAME n'existe pas
- * @exception BadConfigurationException si CONF_PATH_NAME mal formaté
- */
- public static function init () {
- try {
- self::parseFile ();
- } catch (BadConfigurationException $e) {
- throw $e;
- } catch (FileNotExistException $e) {
- throw $e;
- }
- }
-
- /**
- * Parse un fichier de configuration de type ".ini"
- * @exception FileNotExistException si le CONF_PATH_NAME n'existe pas
- * @exception BadConfigurationException si CONF_PATH_NAME mal formaté
- */
- private static function parseFile () {
- if (!file_exists (APP_PATH . self::CONF_PATH_NAME)) {
- throw new FileNotExistException (
- APP_PATH . self::CONF_PATH_NAME,
- MinzException::ERROR
- );
- }
- $ini_array = parse_ini_file (
- APP_PATH . self::CONF_PATH_NAME,
- true
- );
-
- // [general] est obligatoire
- if (!isset ($ini_array['general'])) {
- throw new BadConfigurationException (
- '[general]',
- MinzException::ERROR
- );
- }
- $general = $ini_array['general'];
-
-
- // sel_application est obligatoire
- if (!isset ($general['sel_application'])) {
- throw new BadConfigurationException (
- 'sel_application',
- MinzException::ERROR
- );
- }
- self::$sel_application = $general['sel_application'];
-
- if (isset ($general['environment'])) {
- switch ($general['environment']) {
- case 'silent':
- self::$environment = Configuration::SILENT;
- break;
- case 'development':
- self::$environment = Configuration::DEVELOPMENT;
- break;
- case 'production':
- self::$environment = Configuration::PRODUCTION;
- break;
- default:
- throw new BadConfigurationException (
- 'environment',
- MinzException::ERROR
- );
- }
-
- }
- if (isset ($general['base_url'])) {
- self::$base_url = $general['base_url'];
- }
- if (isset ($general['use_url_rewriting'])) {
- self::$use_url_rewriting = $general['use_url_rewriting'];
- }
-
- if (isset ($general['title'])) {
- self::$title = $general['title'];
- }
- if (isset ($general['language'])) {
- self::$language = $general['language'];
- }
- if (isset ($general['cache_enabled'])) {
- self::$cache_enabled = $general['cache_enabled'];
- }
- if (isset ($general['delay_cache'])) {
- self::$delay_cache = $general['delay_cache'];
- }
-
- // Base de données
- $db = false;
- if (isset ($ini_array['db'])) {
- $db = $ini_array['db'];
- }
- if ($db) {
- if (!isset ($db['host'])) {
- throw new BadConfigurationException (
- 'host',
- MinzException::ERROR
- );
- }
- if (!isset ($db['user'])) {
- throw new BadConfigurationException (
- 'user',
- MinzException::ERROR
- );
- }
- if (!isset ($db['password'])) {
- throw new BadConfigurationException (
- 'password',
- MinzException::ERROR
- );
- }
- if (!isset ($db['base'])) {
- throw new BadConfigurationException (
- 'base',
- MinzException::ERROR
- );
- }
-
- self::$db['host'] = $db['host'];
- self::$db['user'] = $db['user'];
- self::$db['password'] = $db['password'];
- self::$db['base'] = $db['base'];
- }
- }
-}
diff --git a/lib/Dispatcher.php b/lib/Dispatcher.php
deleted file mode 100644
index 6b87be3a9..000000000
--- a/lib/Dispatcher.php
+++ /dev/null
@@ -1,144 +0,0 @@
-
-*/
-
-/**
- * Le Dispatcher s'occupe d'initialiser le Controller et d'executer l'action
- * déterminée dans la Request
- * C'est un singleton
- */
-class Dispatcher {
- const CONTROLLERS_PATH_NAME = '/controllers';
-
- /* singleton */
- private static $instance = null;
-
- private $router;
- private $controller;
-
- /**
- * Récupère l'instance du Dispatcher
- */
- public static function getInstance ($router) {
- if (is_null (self::$instance)) {
- self::$instance = new Dispatcher ($router);
- }
- return self::$instance;
- }
-
- /**
- * Constructeur
- */
- private function __construct ($router) {
- $this->router = $router;
- }
-
- /**
- * Lance le controller indiqué dans Request
- * Remplit le body de Response à partir de la Vue
- * @exception MinzException
- */
- public function run () {
- $cache = new Cache();
-
- if (Cache::isEnabled () && !$cache->expired ()) {
- ob_start ();
- $cache->render ();
- $text = ob_get_clean();
- } else {
- while (Request::$reseted) {
- Request::$reseted = false;
-
- try {
- $this->createController (
- Request::controllerName ()
- . 'Controller'
- );
-
- $this->controller->init ();
- $this->controller->firstAction ();
- $this->launchAction (
- Request::actionName ()
- . 'Action'
- );
- $this->controller->lastAction ();
-
- if (!Request::$reseted) {
- ob_start ();
- $this->controller->view ()->build ();
- $text = ob_get_clean();
- }
- } catch (MinzException $e) {
- throw $e;
- }
- }
- }
-
- Response::setBody ($text);
- }
-
-
- /**
- * Instancie le Controller
- * @param $controller_name le nom du controller à instancier
- * @exception FileNotExistException le fichier correspondant au
- * > controller n'existe pas
- * @exception ControllerNotExistException le controller n'existe pas
- * @exception ControllerNotActionControllerException controller n'est
- * > pas une instance de ActionController
- */
- private function createController ($controller_name) {
- $filename = APP_PATH . self::CONTROLLERS_PATH_NAME . '/'
- . $controller_name . '.php';
-
- if (!file_exists ($filename)) {
- throw new FileNotExistException (
- $filename,
- MinzException::ERROR
- );
- }
- require_once ($filename);
-
- if (!class_exists ($controller_name)) {
- throw new ControllerNotExistException (
- $controller_name,
- MinzException::ERROR
- );
- }
- $this->controller = new $controller_name ($this->router);
-
- if (! ($this->controller instanceof ActionController)) {
- throw new ControllerNotActionControllerException (
- $controller_name,
- MinzException::ERROR
- );
- }
- }
-
- /**
- * Lance l'action sur le controller du dispatcher
- * @param $action_name le nom de l'action
- * @exception ActionException si on ne peut pas exécuter l'action sur
- * > le controller
- */
- private function launchAction ($action_name) {
- if (!Request::$reseted) {
- if (!is_callable (array (
- $this->controller,
- $action_name
- ))) {
- throw new ActionException (
- get_class ($this->controller),
- $action_name,
- MinzException::ERROR
- );
- }
- call_user_func (array (
- $this->controller,
- $action_name
- ));
- }
- }
-}
diff --git a/lib/Error.php b/lib/Error.php
deleted file mode 100755
index d7c163872..000000000
--- a/lib/Error.php
+++ /dev/null
@@ -1,87 +0,0 @@
-
-*/
-
-/**
- * La classe Error permet de lancer des erreurs HTTP
- */
-class Error {
- public function __construct () { }
-
- /**
- * Permet de lancer une erreur
- * @param $code le type de l'erreur, par défaut 404 (page not found)
- * @param $logs logs d'erreurs découpés de la forme
- * > $logs['error']
- * > $logs['warning']
- * > $logs['notice']
- */
- public static function error ($code = 404, $logs = array ()) {
- $logs = self::processLogs ($logs);
- $error_filename = APP_PATH . '/controllers/errorController.php';
-
- if (file_exists ($error_filename)) {
- $params = array (
- 'code' => $code,
- 'logs' => $logs
- );
-
- Response::setHeader ($code);
- Request::forward (array (
- 'c' => 'error',
- 'params' => $params
- ));
- } else {
- $text = 'An error occured
'."\n";
-
- if (!empty ($logs)) {
- $text .= ''."\n";
- foreach ($logs as $log) {
- $text .= '- ' . $log . '
'."\n";
- }
- $text .= '
'."\n";
- }
-
- Response::setHeader ($code);
- Response::setBody ($text);
- Response::send ();
- exit ();
- }
- }
-
- /**
- * Permet de retourner les logs de façon à n'avoir que
- * ceux que l'on veut réellement
- * @param $logs les logs rangés par catégories (error, warning, notice)
- * @return la liste des logs, sans catégorie,
- * > en fonction de l'environment
- */
- private static function processLogs ($logs) {
- $env = Configuration::environment ();
- $logs_ok = array ();
- $error = array ();
- $warning = array ();
- $notice = array ();
-
- if (isset ($logs['error'])) {
- $error = $logs['error'];
- }
- if (isset ($logs['warning'])) {
- $warning = $logs['warning'];
- }
- if (isset ($logs['notice'])) {
- $notice = $logs['notice'];
- }
-
- if ($env == Configuration::PRODUCTION) {
- $logs_ok = $error;
- }
- if ($env == Configuration::DEVELOPMENT) {
- $logs_ok = array_merge ($error, $warning, $notice);
- }
-
- return $logs_ok;
- }
-}
diff --git a/lib/FrontController.php b/lib/FrontController.php
deleted file mode 100755
index e424c6714..000000000
--- a/lib/FrontController.php
+++ /dev/null
@@ -1,104 +0,0 @@
-.
-#
-# ***** END LICENSE BLOCK *****
-
-/**
- * La classe FrontController est le noyau du framework, elle lance l'application
- * Elle est appelée en général dans le fichier index.php à la racine du serveur
- */
-class FrontController {
- protected $dispatcher;
- protected $router;
-
- /**
- * Constructeur
- * Initialise le router et le dispatcher
- */
- public function __construct () {
- $this->loadLib ();
-
- try {
- Configuration::init ();
- Request::init ();
-
- $this->router = new Router ();
- $this->router->init ();
- } catch (RouteNotFoundException $e) {
- Log::record ($e->getMessage (), Log::ERROR);
- Error::error (
- 404,
- array ('error' => array ($e->getMessage ()))
- );
- } catch (MinzException $e) {
- Log::record ($e->getMessage (), Log::ERROR);
- $this->killApp ();
- }
-
- $this->dispatcher = Dispatcher::getInstance ($this->router);
- }
-
- /**
- * Inclue les fichiers de la librairie
- */
- private function loadLib () {
- require ('ActionController.php');
- require ('Cache.php');
- require ('Configuration.php');
- require ('Dispatcher.php');
- require ('Error.php');
- require ('Helper.php');
- require ('Log.php');
- require ('Model.php');
- require ('Paginator.php');
- require ('Request.php');
- require ('Response.php');
- require ('Router.php');
- require ('Session.php');
- require ('Translate.php');
- require ('Url.php');
- require ('View.php');
-
- require ('dao/Model_pdo.php');
- require ('dao/Model_txt.php');
- require ('dao/Model_array.php');
-
- require ('exceptions/MinzException.php');
- }
-
- /**
- * Démarre l'application (lance le dispatcher et renvoie la réponse
- */
- public function run () {
- try {
- $this->dispatcher->run ();
- Response::send ();
- } catch (MinzException $e) {
- Log::record ($e->getMessage (), Log::ERROR);
- $this->killApp ();
- }
- }
-
- /**
- * Permet d'arrêter le programme en urgence
- */
- private function killApp () {
- exit ('###Â Application problem ###'."\n".
- 'See logs files');
- }
-}
diff --git a/lib/Helper.php b/lib/Helper.php
deleted file mode 100755
index 4f64ba218..000000000
--- a/lib/Helper.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
-*/
-
-/**
- * La classe Helper représente une aide pour des tâches récurrentes
- */
-class Helper {
- /**
- * Annule les effets des magic_quotes pour une variable donnée
- * @param $var variable à traiter (tableau ou simple variable)
- */
- public static function stripslashes_r ($var) {
- if (is_array ($var)){
- return array_map (array ('Helper', 'stripslashes_r'), $var);
- } else {
- return stripslashes($var);
- }
- }
-}
diff --git a/lib/Log.php b/lib/Log.php
deleted file mode 100755
index 7fb3f9dcf..000000000
--- a/lib/Log.php
+++ /dev/null
@@ -1,78 +0,0 @@
-
-*/
-
-/**
- * La classe Log permet de logger des erreurs
- */
-class Log {
- /**
- * Les différents niveau de log
- * ERROR erreurs bloquantes de l'application
- * WARNING erreurs pouvant géner le bon fonctionnement, mais non bloquantes
- * NOTICE messages d'informations, affichés pour le déboggage
- */
- const ERROR = 0;
- const WARNING = 10;
- const NOTICE = 20;
-
- /**
- * Enregistre un message dans un fichier de log spécifique
- * Message non loggué si
- * - environment = SILENT
- * - level = WARNING et environment = PRODUCTION
- * - level = NOTICE et environment = PRODUCTION
- * @param $information message d'erreur / information à enregistrer
- * @param $level niveau d'erreur
- * @param $file_name fichier de log, par défaut LOG_PATH/application.log
- */
- public static function record ($information, $level, $file_name = null) {
- $env = Configuration::environment ();
-
- if (! ($env == Configuration::SILENT
- || ($env == Configuration::PRODUCTION
- && ($level == Log::WARNING || $level == Log::NOTICE)))) {
- if (is_null ($file_name)) {
- $file_name = LOG_PATH . '/application.log';
- }
-
- switch ($level) {
- case Log::ERROR :
- $level_label = 'error';
- break;
- case Log::WARNING :
- $level_label = 'warning';
- break;
- case Log::NOTICE :
- $level_label = 'notice';
- break;
- default :
- $level_label = 'unknown';
- }
-
- if ($env == Configuration::PRODUCTION) {
- $file = fopen ($file_name, 'a');
- } else {
- $file = @fopen ($file_name, 'a');
- }
-
- if ($file !== false) {
- $log = '[' . date('r') . ']';
- $log .= ' [' . $level_label . ']';
- $log .= ' ' . $information . "\n";
- fwrite ($file, $log);
- fclose ($file);
- } else {
- Error::error (
- 500,
- array ('error' => array (
- 'Permission is denied for `'
- . $file_name . '`')
- )
- );
- }
- }
- }
-}
diff --git a/lib/Model.php b/lib/Model.php
deleted file mode 100755
index 37fc19ed1..000000000
--- a/lib/Model.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
-*/
-
-/**
- * La classe Model représente un modèle de l'application (représentation MVC)
- */
-class Model {
-
-}
diff --git a/lib/Paginator.php b/lib/Paginator.php
deleted file mode 100755
index 1a8376e75..000000000
--- a/lib/Paginator.php
+++ /dev/null
@@ -1,196 +0,0 @@
-
-*/
-
-/**
- * La classe Paginator permet de gérer la pagination de l'application facilement
- */
-class Paginator {
- /**
- * $items tableau des éléments à afficher/gérer
- */
- private $items = array ();
-
- /**
- * $nbItemsPerPage le nombre d'éléments par page
- */
- private $nbItemsPerPage = 10;
-
- /**
- * $currentPage page actuelle à gérer
- */
- private $currentPage = 1;
-
- /**
- * $nbPage le nombre de pages de pagination
- */
- private $nbPage = 1;
-
- /**
- * $nbItems le nombre d'éléments
- */
- private $nbItems = 0;
-
- /**
- * Constructeur
- * @param $items les éléments à gérer
- */
- public function __construct ($items) {
- $this->_items ($items);
- $this->_nbItems (count ($this->items (true)));
- $this->_nbItemsPerPage ($this->nbItemsPerPage);
- $this->_currentPage ($this->currentPage);
- }
-
- /**
- * Permet d'afficher la pagination
- * @param $view nom du fichier de vue situé dans /app/views/helpers/
- * @param $getteur variable de type $_GET[] permettant de retrouver la page
- */
- public function render ($view, $getteur) {
- $view = APP_PATH . '/views/helpers/'.$view;
-
- if (file_exists ($view)) {
- include ($view);
- }
- }
-
- /**
- * Permet de retrouver la page d'un élément donné
- * @param $item l'élément à retrouver
- * @return la page à laquelle se trouve l'élément (false si non trouvé)
- */
- public function pageByItem ($item) {
- $page = false;
- $i = 0;
-
- do {
- if ($item == $this->items[$i]) {
- $page = ceil (($i + 1) / $this->nbItemsPerPage);
- }
-
- $i++;
- } while (!$page && $i < $this->nbItems ());
-
- return $page;
- }
-
- /**
- * Permet de retrouver la position d'un élément donné (à partir de 0)
- * @param $item l'élément à retrouver
- * @return la position à laquelle se trouve l'élément (false si non trouvé)
- */
- public function positionByItem ($item) {
- $find = false;
- $i = 0;
-
- do {
- if ($item == $this->items[$i]) {
- $find = true;
- } else {
- $i++;
- }
- } while (!$find && $i < $this->nbItems ());
-
- return $i;
- }
-
- /**
- * Permet de récupérer un item par sa position
- * @param $pos la position de l'élément
- * @return l'item situé à $pos (dernier item si $pos<0, 1er si $pos>=count($items))
- */
- public function itemByPosition ($pos) {
- if ($pos < 0) {
- $pos = $this->nbItems () - 1;
- }
- if ($pos >= count($this->items)) {
- $pos = 0;
- }
-
- return $this->items[$pos];
- }
-
- /**
- * GETTEURS
- */
- /**
- * @param $all si à true, retourne tous les éléments sans prendre en compte la pagination
- */
- public function items ($all = false) {
- $array = array ();
- $nbItems = $this->nbItems ();
-
- if ($nbItems <= $this->nbItemsPerPage || $all) {
- $array = $this->items;
- } else {
- $begin = ($this->currentPage - 1) * $this->nbItemsPerPage;
- $counter = 0;
- $i = 0;
-
- foreach ($this->items as $key => $item) {
- if ($i >= $begin) {
- $array[$key] = $item;
- $counter++;
- }
- if ($counter >= $this->nbItemsPerPage) {
- break;
- }
- $i++;
- }
- }
-
- return $array;
- }
- public function nbItemsPerPage () {
- return $this->nbItemsPerPage;
- }
- public function currentPage () {
- return $this->currentPage;
- }
- public function nbPage () {
- return $this->nbPage;
- }
- public function nbItems () {
- return $this->nbItems;
- }
-
- /**
- * SETTEURS
- */
- public function _items ($items) {
- if (is_array ($items)) {
- $this->items = $items;
- }
-
- $this->_nbPage ();
- }
- public function _nbItemsPerPage ($nbItemsPerPage) {
- if ($nbItemsPerPage > $this->nbItems ()) {
- $nbItemsPerPage = $this->nbItems ();
- }
- if ($nbItemsPerPage < 0) {
- $nbItemsPerPage = 0;
- }
-
- $this->nbItemsPerPage = $nbItemsPerPage;
- $this->_nbPage ();
- }
- public function _currentPage ($page) {
- if($page < 1 || ($page > $this->nbPage && $this->nbPage > 0)) {
- throw new CurrentPagePaginationException ($page);
- }
-
- $this->currentPage = $page;
- }
- private function _nbPage () {
- if ($this->nbItemsPerPage > 0) {
- $this->nbPage = ceil ($this->nbItems () / $this->nbItemsPerPage);
- }
- }
- public function _nbItems ($value) {
- $this->nbItems = $value;
- }
-}
diff --git a/lib/Request.php b/lib/Request.php
deleted file mode 100644
index fe168b05f..000000000
--- a/lib/Request.php
+++ /dev/null
@@ -1,189 +0,0 @@
-
-*/
-
-/**
- * Request représente la requête http
- */
-class Request {
- private static $controller_name = '';
- private static $action_name = '';
- private static $params = array ();
-
- private static $default_controller_name = 'index';
- private static $default_action_name = 'index';
-
- public static $reseted = true;
-
- /**
- * Getteurs
- */
- public static function controllerName () {
- return self::$controller_name;
- }
- public static function actionName () {
- return self::$action_name;
- }
- public static function params () {
- return self::$params;
- }
- public static function param ($key, $default = false) {
- if (isset (self::$params[$key])) {
- return self::$params[$key];
- } else {
- return $default;
- }
- }
- public static function defaultControllerName () {
- return self::$default_controller_name;
- }
- public static function defaultActionName () {
- return self::$default_action_name;
- }
-
- /**
- * Setteurs
- */
- public static function _controllerName ($controller_name) {
- self::$controller_name = $controller_name;
- }
- public static function _actionName ($action_name) {
- self::$action_name = $action_name;
- }
- public static function _params ($params) {
- if (!is_array($params)) {
- $params = array ($params);
- }
-
- self::$params = $params;
- }
- public static function _param ($key, $value = false) {
- if ($value === false) {
- unset (self::$params[$key]);
- } else {
- self::$params[$key] = $value;
- }
- }
-
- /**
- * Initialise la Request
- */
- public static function init () {
- self::magicQuotesOff ();
- }
-
- /**
- * Retourn le nom de domaine du site
- */
- public static function getDomainName () {
- return $_SERVER['HTTP_HOST'];
- }
-
- /**
- * Détermine la base de l'url
- * @return la base de l'url
- */
- public static function getBaseUrl () {
- return Configuration::baseUrl ();
- }
-
- /**
- * Récupère l'URI de la requête
- * @return l'URI
- */
- public static function getURI () {
- if (isset ($_SERVER['REQUEST_URI'])) {
- $base_url = self::getBaseUrl ();
- $uri = $_SERVER['REQUEST_URI'];
-
- $len_base_url = strlen ($base_url);
- $real_uri = substr ($uri, $len_base_url);
- } else {
- $real_uri = '';
- }
-
- return $real_uri;
- }
-
- /**
- * Relance une requête
- * @param $url l'url vers laquelle est relancée la requête
- * @param $redirect si vrai, force la redirection http
- * > sinon, le dispatcher recharge en interne
- */
- public static function forward ($url = array (), $redirect = false) {
- $url = Url::checkUrl ($url);
-
- if ($redirect) {
- header ('Location: ' . Url::display ($url));
- exit ();
- } else {
- self::$reseted = true;
-
- self::_controllerName ($url['c']);
- self::_actionName ($url['a']);
- self::_params (array_merge (
- self::$params,
- $url['params']
- ));
- }
- }
-
- /**
- * Permet de récupérer une variable de type $_GET
- * @param $param nom de la variable
- * @param $default valeur par défaut à attribuer à la variable
- * @return $_GET[$param]
- * $_GET si $param = false
- * $default si $_GET[$param] n'existe pas
- */
- public static function fetchGET ($param = false, $default = false) {
- if ($param === false) {
- return $_GET;
- } elseif (isset ($_GET[$param])) {
- return $_GET[$param];
- } else {
- return $default;
- }
- }
-
- /**
- * Permet de récupérer une variable de type $_POST
- * @param $param nom de la variable
- * @param $default valeur par défaut à attribuer à la variable
- * @return $_POST[$param]
- * $_POST si $param = false
- * $default si $_POST[$param] n'existe pas
- */
- public static function fetchPOST ($param = false, $default = false) {
- if ($param === false) {
- return $_POST;
- } elseif (isset ($_POST[$param])) {
- return $_POST[$param];
- } else {
- return $default;
- }
- }
-
- /**
- * Méthode désactivant les magic_quotes pour les variables
- * $_GET
- * $_POST
- * $_COOKIE
- */
- private static function magicQuotesOff () {
- if (get_magic_quotes_gpc ()) {
- $_GET = Helper::stripslashes_r ($_GET);
- $_POST = Helper::stripslashes_r ($_POST);
- $_COOKIE = Helper::stripslashes_r ($_COOKIE);
- }
- }
-
- public static function isPost () {
- return !empty ($_POST) || !empty ($_FILES);
- }
-}
-
-
diff --git a/lib/Response.php b/lib/Response.php
deleted file mode 100644
index fcf53c5b1..000000000
--- a/lib/Response.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
-*/
-
-/**
- * Response représente la requête http renvoyée à l'utilisateur
- */
-class Response {
- private static $header = 'HTTP/1.0 200 OK';
- private static $body = '';
-
- /**
- * Mets à jour le body de la Response
- * @param $text le texte à incorporer dans le body
- */
- public static function setBody ($text) {
- self::$body = $text;
- }
-
- /**
- * Mets à jour le header de la Response
- * @param $code le code HTTP, valeurs possibles
- * - 200 (OK)
- * - 403 (Forbidden)
- * - 404 (Forbidden)
- * - 500 (Forbidden) -> par défaut si $code erroné
- * - 503 (Forbidden)
- */
- public static function setHeader ($code) {
- switch ($code) {
- case 200 :
- self::$header = 'HTTP/1.0 200 OK';
- break;
- case 403 :
- self::$header = 'HTTP/1.0 403 Forbidden';
- break;
- case 404 :
- self::$header = 'HTTP/1.0 404 Not Found';
- break;
- case 500 :
- self::$header = 'HTTP/1.0 500 Internal Server Error';
- break;
- case 503 :
- self::$header = 'HTTP/1.0 503 Service Unavailable';
- break;
- default :
- self::$header = 'HTTP/1.0 500 Internal Server Error';
- }
- }
-
- /**
- * Envoie la Response à l'utilisateur
- */
- public static function send () {
- header (self::$header);
- echo self::$body;
- }
-}
diff --git a/lib/Router.php b/lib/Router.php
deleted file mode 100755
index 1dcc5afbb..000000000
--- a/lib/Router.php
+++ /dev/null
@@ -1,244 +0,0 @@
-
-*/
-
-/**
- * La classe Router gère le routage de l'application
- * Les routes sont définies dans APP_PATH.'/configuration/routes.php'
- */
-class Router {
- const ROUTES_PATH_NAME = '/configuration/routes.php';
-
- private $routes = array ();
-
- /**
- * Constructeur
- * @exception FileNotExistException si ROUTES_PATH_NAME n'existe pas
- * et que l'on utilise l'url rewriting
- */
- public function __construct () {
- if (Configuration::useUrlRewriting ()) {
- if (file_exists (APP_PATH . self::ROUTES_PATH_NAME)) {
- $routes = include (
- APP_PATH . self::ROUTES_PATH_NAME
- );
-
- if (!is_array ($routes)) {
- $routes = array ();
- }
-
- $this->routes = array_map (
- array ('Url', 'checkUrl'),
- $routes
- );
- } else {
- throw new FileNotExistException (
- self::ROUTES_PATH_NAME,
- MinzException::ERROR
- );
- }
- }
- }
-
- /**
- * Initialise le Router en déterminant le couple Controller / Action
- * Mets à jour la Request
- * @exception RouteNotFoundException si l'uri n'est pas présente dans
- * > la table de routage
- */
- public function init () {
- $url = array ();
-
- if (Configuration::useUrlRewriting ()) {
- try {
- $url = $this->buildWithRewriting ();
- } catch (RouteNotFoundException $e) {
- throw $e;
- }
- } else {
- $url = $this->buildWithoutRewriting ();
- }
-
- $url['params'] = array_merge (
- $url['params'],
- Request::fetchPOST ()
- );
-
- Request::forward ($url);
- }
-
- /**
- * Retourne un tableau représentant l'url passée par la barre d'adresses
- * Ne se base PAS sur la table de routage
- * @return tableau représentant l'url
- */
- public function buildWithoutRewriting () {
- $url = array ();
-
- $url['c'] = Request::fetchGET (
- 'c',
- Request::defaultControllerName ()
- );
- $url['a'] = Request::fetchGET (
- 'a',
- Request::defaultActionName ()
- );
- $url['params'] = Request::fetchGET ();
-
- // post-traitement
- unset ($url['params']['c']);
- unset ($url['params']['a']);
-
- return $url;
- }
-
- /**
- * Retourne un tableau représentant l'url passée par la barre d'adresses
- * Se base sur la table de routage
- * @return tableau représentant l'url
- * @exception RouteNotFoundException si l'uri n'est pas présente dans
- * > la table de routage
- */
- public function buildWithRewriting () {
- $url = array ();
- $uri = Request::getURI ();
- $find = false;
-
- foreach ($this->routes as $route) {
- $regex = '*^' . $route['route'] . '$*';
- if (preg_match ($regex, $uri, $matches)) {
- $url['c'] = $route['controller'];
- $url['a'] = $route['action'];
- $url['params'] = $this->getParams (
- $route['params'],
- $matches
- );
- $find = true;
- break;
- }
- }
-
- if (!$find && $uri != '/') {
- throw new RouteNotFoundException (
- $uri,
- MinzException::ERROR
- );
- }
-
- // post-traitement
- $url = Url::checkUrl ($url);
-
- return $url;
- }
-
- /**
- * Retourne l'uri d'une url en se basant sur la table de routage
- * @param l'url sous forme de tableau
- * @return l'uri formatée (string) selon une route trouvée
- */
- public function printUriRewrited ($url) {
- $route = $this->searchRoute ($url);
-
- if ($route !== false) {
- return $this->replaceParams ($route, $url);
- }
-
- return '';
- }
-
- /**
- * Recherche la route correspondante à une url
- * @param l'url sous forme de tableau
- * @return la route telle que spécifiée dans la table de routage,
- * false si pas trouvée
- */
- public function searchRoute ($url) {
- foreach ($this->routes as $route) {
- if ($route['controller'] == $url['c']
- && $route['action'] == $url['a']) {
- // calcule la différence des tableaux de params
- $params = array_flip ($route['params']);
- $difference_params = array_diff_key (
- $params,
- $url['params']
- );
-
- // vérifie que pas de différence
- // et le cas où $params est vide et pas $url['params']
- if (empty ($difference_params)
- && (!empty ($params) || empty ($url['params']))) {
- return $route;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Récupère un tableau dont
- * - les clés sont définies dans $params_route
- * - les valeurs sont situées dans $matches
- * Le tableau $matches est décalé de +1 par rapport à $params_route
- */
- private function getParams($params_route, $matches) {
- $params = array ();
-
- for ($i = 0; $i < count ($params_route); $i++) {
- $param = $params_route[$i];
- $params[$param] = $matches[$i + 1];
- }
-
- return $params;
- }
-
- /**
- * Remplace les éléments de la route par les valeurs contenues dans $url
- * TODO Fonction très sale ! À revoir (preg_replace ?)
- */
- private function replaceParams ($route, $url) {
- $uri = '';
- $in_brackets = false;
- $backslash = false;
- $num_param = 0;
-
- // parcourt caractère par caractère
- for ($i = 0; $i < strlen ($route['route']); $i++) {
- // on détecte qu'on rentre dans des parenthèses
- // on va devoir changer par la valeur d'un paramètre
- if ($route['route'][$i] == '(' && !$backslash) {
- $in_brackets = true;
- }
- // on sort des parenthèses
- // ok, on change le paramètre maintenant
- if ($route['route'][$i] == ')' && !$backslash) {
- $in_brackets = false;
- $param = $route['params'][$num_param];
- $uri .= $url['params'][$param];
- $num_param++;
- }
-
- if (!$in_brackets
- && ($route['route'][$i] != '\\' || $backslash)
- && ($route['route'][$i] != '(' || $backslash)
- && ($route['route'][$i] != ')' || $backslash)
- && ($route['route'][$i] != '?' || $backslash)) {
- // on est pas dans les parenthèses
- // on recopie simplement le caractère
- $uri .= $route['route'][$i];
- }
-
- // on détecte un backslash, on n'en veut pas
- // sauf si on en avait déjà un juste avant
- if ($route['route'][$i] == '\\' && !$backslash) {
- $backslash = true;
- } else {
- $backslash = false;
- }
- }
-
- return str_replace ('&', '&', $uri);
- }
-}
diff --git a/lib/Session.php b/lib/Session.php
deleted file mode 100755
index f2ec04aef..000000000
--- a/lib/Session.php
+++ /dev/null
@@ -1,73 +0,0 @@
-
- */
-
-/**
- * La classe Translate se charge de la traduction
- * Utilise les fichiers du répertoire /app/i18n/
- */
-class Translate {
- /**
- * $language est la langue à afficher
- */
- private static $language;
-
- /**
- * $translates est le tableau de correspondance
- * $key => $traduction
- */
- private static $translates = array ();
-
- /**
- * Inclus le fichier de langue qui va bien
- * l'enregistre dans $translates
- */
- public static function init () {
- $l = Configuration::language ();
- self::$language = Session::param ('language', $l);
-
- $l_path = APP_PATH . '/i18n/' . self::$language . '.php';
-
- if (file_exists ($l_path)) {
- self::$translates = include ($l_path);
- }
- }
-
- /**
- * Alias de init
- */
- public static function reset () {
- self::init ();
- }
-
- /**
- * Traduit une clé en sa valeur du tableau $translates
- * @param $key la clé à traduire
- * @return la valeur correspondante à la clé
- * > si non présente dans le tableau, on retourne la clé elle-même
- */
- public static function t ($key) {
- $translate = $key;
-
- if (isset (self::$translates[$key])) {
- $translate = self::$translates[$key];
- }
-
- return $translate;
- }
-
- /**
- * Retourne la langue utilisée actuellement
- * @return la langue
- */
- public static function language () {
- return self::$language;
- }
-}
diff --git a/lib/Url.php b/lib/Url.php
deleted file mode 100755
index f8d75a07f..000000000
--- a/lib/Url.php
+++ /dev/null
@@ -1,102 +0,0 @@
-printUriRewrited ($url);
- } else {
- $url_string .= self::printUri ($url);
- }
- } else {
- $url_string .= $url;
- }
-
- return $url_string;
- }
-
- /**
- * Construit l'URI d'une URL sans url rewriting
- * @param l'url sous forme de tableau
- * @return l'uri sous la forme ?key=value&key2=value2
- */
- private static function printUri ($url) {
- $uri = '';
- $separator = '/?';
-
- if (isset ($url['c'])
- && $url['c'] != Request::defaultControllerName ()) {
- $uri .= $separator . 'c=' . $url['c'];
- $separator = '&';
- }
-
- if (isset ($url['a'])
- && $url['a'] != Request::defaultActionName ()) {
- $uri .= $separator . 'a=' . $url['a'];
- $separator = '&';
- }
-
- if (isset ($url['params'])) {
- foreach ($url['params'] as $key => $param) {
- $uri .= $separator . $key . '=' . $param;
- $separator = '&';
- }
- }
-
- return $uri;
- }
-
- /**
- * Vérifie que les éléments du tableau représentant une url soit ok
- * @param l'url sous forme de tableau (sinon renverra directement $url)
- * @return l'url vérifié
- */
- public static function checkUrl ($url) {
- $url_checked = $url;
-
- if (is_array ($url)) {
- if (!isset ($url['c'])) {
- $url_checked['c'] = Request::defaultControllerName ();
- }
- if (!isset ($url['a'])) {
- $url_checked['a'] = Request::defaultActionName ();
- }
- if (!isset ($url['params'])) {
- $url_checked['params'] = array ();
- }
- }
-
- return $url_checked;
- }
-}
diff --git a/lib/View.php b/lib/View.php
deleted file mode 100755
index 333772aa3..000000000
--- a/lib/View.php
+++ /dev/null
@@ -1,188 +0,0 @@
-
-*/
-
-/**
- * La classe View représente la vue de l'application
- */
-class View {
- const VIEWS_PATH_NAME = '/views';
- const LAYOUT_PATH_NAME = '/layout';
- const LAYOUT_FILENAME = '/layout.phtml';
-
- private $view_filename = '';
- private $use_layout = false;
-
- private static $title = '';
- private static $styles = array ();
- private static $scripts = array ();
-
- private static $params = array ();
-
- /**
- * Constructeur
- * Détermine si on utilise un layout ou non
- */
- public function __construct () {
- $this->view_filename = APP_PATH
- . self::VIEWS_PATH_NAME . '/'
- . Request::controllerName () . '/'
- . Request::actionName () . '.phtml';
-
- if (file_exists (APP_PATH
- . self::LAYOUT_PATH_NAME
- . self::LAYOUT_FILENAME)) {
- $this->use_layout = true;
- }
-
- self::$title = Configuration::title ();
- }
-
- /**
- * Construit la vue
- */
- public function build () {
- if ($this->use_layout) {
- $this->buildLayout ();
- } else {
- $this->render ();
- }
- }
-
- /**
- * Construit le layout
- */
- public function buildLayout () {
- include (
- APP_PATH
- . self::LAYOUT_PATH_NAME
- . self::LAYOUT_FILENAME
- );
- }
-
- /**
- * Affiche la Vue en elle-même
- */
- public function render () {
- if (file_exists ($this->view_filename)) {
- include ($this->view_filename);
- } else {
- Log::record ('File doesn\'t exist : `'
- . $this->view_filename . '`',
- Log::WARNING);
- }
- }
-
- /**
- * Ajoute un élément du layout
- * @param $part l'élément partial à ajouter
- */
- public function partial ($part) {
- $fic_partial = APP_PATH
- . self::LAYOUT_PATH_NAME . '/'
- . $part . '.phtml';
-
- if (file_exists ($fic_partial)) {
- include ($fic_partial);
- } else {
- Log::record ('File doesn\'t exist : `'
- . $fic_partial . '`',
- Log::WARNING);
- }
- }
-
- /**
- * Permet de choisir si on souhaite utiliser le layout
- * @param $use true si on souhaite utiliser le layout, false sinon
- */
- public function _useLayout ($use) {
- $this->use_layout = $use;
- }
-
- /**
- * Gestion du titre
- */
- public static function title () {
- return self::$title;
- }
- public static function headTitle () {
- return '' . self::$title . '' . "\n";
- }
- public static function _title ($title) {
- self::$title = $title;
- }
- public static function prependTitle ($title) {
- self::$title = $title . self::$title;
- }
- public static function appendTitle ($title) {
- self::$title = self::$title . $title;
- }
-
- /**
- * Gestion des feuilles de style
- */
- public static function headStyle () {
- $styles = '';
-
- foreach(self::$styles as $style) {
- $styles .= '' . "\n";
- }
-
- return $styles;
- }
- public static function prependStyle ($url, $media = 'all') {
- array_unshift (self::$styles, array (
- 'url' => $url,
- 'media' => $media
- ));
- }
- public static function appendStyle ($url, $media = 'all') {
- self::$styles[] = array (
- 'url' => $url,
- 'media' => $media
- );
- }
-
- /**
- * Gestion des scripts JS
- */
- public static function headScript () {
- $scripts = '';
-
- foreach (self::$scripts as $script) {
- $scripts .= '' . "\n";
- }
-
- return $scripts;
- }
- public static function prependScript ($url) {
- array_unshift(self::$scripts, array (
- 'url' => $url
- ));
- }
- public static function appendScript ($url) {
- self::$scripts[] = array (
- 'url' => $url
- );
- }
-
- /**
- * Gestion des paramètres ajoutés à la vue
- */
- public static function _param ($key, $value) {
- self::$params[$key] = $value;
- }
- public function attributeParams () {
- foreach (View::$params as $key => $value) {
- $this->$key = $value;
- }
- }
-}
-
-
diff --git a/lib/dao/Model_array.php b/lib/dao/Model_array.php
deleted file mode 100755
index 0b9ccf071..000000000
--- a/lib/dao/Model_array.php
+++ /dev/null
@@ -1,122 +0,0 @@
-
-*/
-
-/**
- * La classe Model_array représente le modèle interragissant avec les fichiers de type texte gérant des tableaux php
- */
-class Model_array extends Model_txt {
- /**
- * $array Le tableau php contenu dans le fichier $nameFile
- */
- protected $array = array ();
-
- /**
- * Ouvre le fichier indiqué, charge le tableau dans $array et le $nameFile
- * @param $nameFile le nom du fichier à ouvrir contenant un tableau
- * Remarque : $array sera obligatoirement un tableau
- */
- public function __construct ($nameFile) {
- parent::__construct ($nameFile);
-
- if (!$this->getLock ('read')) {
- throw new PermissionDeniedException ($this->filename);
- } else {
- $this->array = include ($this->filename);
- $this->releaseLock ();
-
- if (!is_array ($this->array)) {
- $this->array = array ();
- }
-
- $this->array = $this->decodeArray ($this->array);
- }
- }
-
- /**
- * Écrit un tableau dans le fichier $nameFile
- * @param $array le tableau php à enregistrer
- **/
- public function writeFile ($array) {
- if (!$this->getLock ('write')) {
- throw new PermissionDeniedException ($this->namefile);
- } else {
- $this->erase ();
-
- $this->writeLine ('writeLine ('return ', false);
- $this->writeArray ($array);
- $this->writeLine (';');
-
- $this->releaseLock ();
- }
- }
-
- private function writeArray ($array, $profondeur = 0) {
- $tab = '';
- for ($i = 0; $i < $profondeur; $i++) {
- $tab .= "\t";
- }
- $this->writeLine ('array (');
-
- foreach ($array as $key => $value) {
- if (is_int ($key)) {
- $this->writeLine ($tab . "\t" . $key . ' => ', false);
- } else {
- $this->writeLine ($tab . "\t" . '\'' . $key . '\'' . ' => ', false);
- }
-
- if (is_array ($value)) {
- $this->writeArray ($value, $profondeur + 1);
- $this->writeLine (',');
- } else {
- if (is_numeric ($value)) {
- $this->writeLine ($value . ',');
- } else {
- $this->writeLine ('\'' . addslashes ($value) . '\',');
- }
- }
- }
-
- $this->writeLine ($tab . ')', false);
- }
-
- private function decodeArray ($array) {
- $new_array = array ();
-
- foreach ($array as $key => $value) {
- if (is_array ($value)) {
- $new_array[$key] = $this->decodeArray ($value);
- } else {
- $new_array[$key] = stripslashes ($value);
- }
- }
-
- return $new_array;
- }
-
- private function getLock ($type) {
- if ($type == 'write') {
- $lock = LOCK_EX;
- } else {
- $lock = LOCK_SH;
- }
-
- $count = 1;
- while (!flock ($this->file, $lock) && $count <= 50) {
- $count++;
- }
-
- if ($count >= 50) {
- return false;
- } else {
- return true;
- }
- }
-
- private function releaseLock () {
- flock ($this->file, LOCK_UN);
- }
-}
diff --git a/lib/dao/Model_pdo.php b/lib/dao/Model_pdo.php
deleted file mode 100755
index 6114de127..000000000
--- a/lib/dao/Model_pdo.php
+++ /dev/null
@@ -1,39 +0,0 @@
-
-*/
-
-/**
- * La classe Model_sql représente le modèle interragissant avec les bases de données
- * Seul la connexion MySQL est prise en charge pour le moment
- */
-class Model_pdo {
- /**
- * $bd variable représentant la base de données
- */
- protected $bd;
-
- /**
- * Créé la connexion à la base de données à l'aide des variables
- * HOST, BASE, USER et PASS définies dans le fichier de configuration
- */
- public function __construct ($type = 'mysql') {
- $db = Configuration::dataBase ();
- try {
- $string = $type
- . ':host=' . $db['host']
- . ';dbname=' . $db['base'];
- $this->bd = new PDO (
- $string,
- $db['user'],
- $db['password']
- );
- } catch (Exception $e) {
- throw new PDOConnectionException (
- $string,
- $db['user'], MinzException::WARNING
- );
- }
- }
-}
diff --git a/lib/dao/Model_txt.php b/lib/dao/Model_txt.php
deleted file mode 100755
index ad15c8b36..000000000
--- a/lib/dao/Model_txt.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
-*/
-
-/**
- * La classe Model_txt représente le modèle interragissant avec les fichiers de type texte
- */
-class Model_txt {
- /**
- * $file représente le fichier à ouvrir
- */
- protected $file;
-
- /**
- * $filename est le nom du fichier
- */
- protected $filename;
-
- /**
- * Ouvre un fichier dans $file
- * @param $nameFile nom du fichier à ouvrir
- * @param $mode mode d'ouverture du fichier ('a+' par défaut)
- * @exception FileNotExistException si le fichier n'existe pas
- * > ou ne peux pas être ouvert
- */
- public function __construct ($nameFile, $mode = 'a+') {
- $this->filename = $nameFile;
- $this->file = fopen ($this->filename, $mode);
-
- if (!$this->file) {
- throw new FileNotExistException (
- $this->filename,
- MinzException::WARNING
- );
- }
- }
-
- /**
- * Lit une ligne de $file
- * @return une ligne du fichier
- */
- public function readLine () {
- return fgets ($this->file);
- }
-
- /**
- * Écrit une ligne dans $file
- * @param $line la ligne à écrire
- */
- public function writeLine ($line, $newLine = true) {
- $char = '';
- if ($newLine) {
- $char = "\n";
- }
-
- fwrite ($this->file, $line . $char);
- }
-
- /**
- * Efface le fichier $file
- * @return true en cas de succès, false sinon
- */
- public function erase () {
- return ftruncate ($this->file, 0);
- }
-
- /**
- * Ferme $file
- */
- public function __destruct () {
- if (isset ($this->file)) {
- fclose ($this->file);
- }
- }
-}
diff --git a/lib/exceptions/MinzException.php b/lib/exceptions/MinzException.php
deleted file mode 100644
index 8fca5ec16..000000000
--- a/lib/exceptions/MinzException.php
+++ /dev/null
@@ -1,94 +0,0 @@
-route = $route;
-
- $message = 'Route `' . $route . '` not found';
-
- parent::__construct ($message, $code);
- }
-
- public function route () {
- return $this->route;
- }
-}
-class PDOConnectionException extends MinzException {
- public function __construct ($string_connection, $user, $code = self::ERROR) {
- $message = 'Access to database is denied for `' . $user . '`'
- . ' (`' . $string_connection . '`)';
-
- parent::__construct ($message, $code);
- }
-}
-class CurrentPagePaginationException extends MinzException {
- public function __construct ($page) {
- $message = 'Page number `' . $page . '` doesn\'t exist';
-
- parent::__construct ($message, self::ERROR);
- }
-}
diff --git a/public/.htaccess b/public/.htaccess
deleted file mode 100644
index 7a9766d5e..000000000
--- a/public/.htaccess
+++ /dev/null
@@ -1,6 +0,0 @@
-RewriteEngine On
-RewriteCond %{REQUEST_FILENAME} -s [OR]
-RewriteCond %{REQUEST_FILENAME} -l [OR]
-RewriteCond %{REQUEST_FILENAME} -d
-RewriteRule ^.*$ - [NC,L]
-RewriteRule ^.*$ index.php [NC,L]
diff --git a/public/index.php b/public/index.php
index 91146dc14..330843719 100755
--- a/public/index.php
+++ b/public/index.php
@@ -29,6 +29,8 @@ set_include_path (get_include_path ()
. PATH_SEPARATOR
. LIB_PATH
. PATH_SEPARATOR
+ . LIB_PATH . '/minz'
+ . PATH_SEPARATOR
. APP_PATH);
require (APP_PATH . '/App_FrontController.php');