Application nettoyé,

Ajout de la lib composer hybridauth/hybridauth
TODO: integrer hybrid auth sur une page simple d'authentification
This commit is contained in:
Emmanuel ROY 2019-09-09 22:37:17 +02:00
parent f503af84f7
commit 8305007317
27 changed files with 61 additions and 138 deletions

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
vendor
cache
application/include/vues/cache/*
/composer.lock

View file

@ -2,9 +2,10 @@
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" />
<sourceFolder url="file://$MODULE_DIR$/../MVC---Objetapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" />
<sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/objets" isTestSource="false" packagePrefix="MVC\Objets\" />
<sourceFolder url="file://$MODULE_DIR$/../MVC-Modular-WindWalkerapplication/class" isTestSource="false" packagePrefix="MVC\Classe\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/hybridauth/hybridauth" />
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/container" />
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/events" />
<excludeFolder url="file://$MODULE_DIR$/vendor/illuminate/filesystem" />

View file

@ -11,6 +11,7 @@
<path value="$PROJECT_DIR$/vendor/illuminate/container" />
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
<path value="$PROJECT_DIR$/vendor/windwalker/structure" />
<path value="$PROJECT_DIR$/vendor/hybridauth/hybridauth" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="7.1" />

View file

@ -1,6 +1,6 @@
# MVC - en Programmation Orienté Objet
# Modular Symfony Application
---
Cette architecture MVC Objet est composée d'un layout HTML5 Standard
Cette architecture MVC Objet est composée d'un layout Blade (Laravel)
Les urls d'accès sont de type www.domain.tld/page/varname1/varvalue1/varname2/varvalue2/ ...
@ -10,7 +10,7 @@ Afin de créer une nouvelle page vous devez instancier trois fichiers contenant
"application > include > controlleurs > mapage.php" contenant:
> les commandes permettant de gérer un formulaire
> un ou plusieurs accès à la base de données
> les variables ainsi instanciées permettent l'affichage dans la vue
> les variables instanciées dans $templateData permettent l'affichage dans la vue blade
"application > include > modeles > mapage.model" contenant
>les variables spécifiques à la page de l'application exemple:
@ -19,10 +19,9 @@ name : le nom de mapage
description : ma description pour les moteur de recherche
params : paramètre(s) supplémentaire(s)
```
"application > include > vues > view > mapage.blade.php contenant
> le layout blade a instancier
"application > include > vues > mapage.phtml" contenant
>les blocs html qui seront affichés dans le layout standard
Je ne peut que vous proposer de regarder dans le dossier layout afin de comprendre comment cela est affiché!
pour le reste, c'est a vous de voir, mais c'est une architecture fonctionnelle à 2.5 vitesses
pour les modules symfony, c'est un peu plus compliqué il faut instancier ces trois précédents fichiers en faisant appel la class Modular,
ne pas oublier de référencer le module dans le dossier modules > setup > registre.model
et faire correspondre le nom du dossier avec le registre, ici l'exemple est syf43.

View file

@ -17,6 +17,7 @@ class Application
public function launch(){
$controlleur = new Controlleur($this);
//si la page n'est un controlleur d'action alors on affiche l'écran
if(!$this->url->page['control']) {
print($controlleur->vue->ecran);
}

View file

@ -18,8 +18,8 @@ class Controlleur{
$url_params = $application->url->page['params'];
require TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $application->url->page['name'] . '.php';
} else {
$this->modele = new modele($application->url->page);
$this->vue = new vue($this);
$this->modele = new Modele($application->url->page);
$this->vue = new Vue($this);
}
}

View file

@ -10,8 +10,10 @@ class Url
public function __construct(){
//on créé le registre des modules symfony
$this->registre = new \MVC\Classe\ModularRegister();
//définition des parametres de base
$page = array();
$page['name'] = 'accueil';
$page['description'] = "";
@ -42,18 +44,19 @@ class Url
}
//vérification du nombre de parametres: s'il n'existe pas autant de clé que
// de valeurs on sort de la fonction et on renvoie une page d'erreur.
//vérification du nombre de parametres:
$numParts = count($urlParts);
//s'il n'existe pas autant de clé que de valeurs, ce peut ^etre un module symfony
if ( $numParts%2 != 0 ) {
//si un module symfony n'est pas reférencé avec le nom de la page, on renvoi un erreur
if( !in_array($page['name'], $this->registre->getIndex()) ){
$page['name'] = 'error';
$page['params'] = array();
$this->page = $page;
return;
}
}else if ( $numParts != 0 ){
//cas d'utilisation normal : il existe autant de clé que de valeurs
} else if ( $numParts != 0 ) {
$values = array();
$keys = array();
foreach( $urlParts as $key => $value ){

View file

@ -15,24 +15,25 @@ class Vue{
$templateData = array();
extract( $baseControlleur->modele->page );
//print_r($name);
ob_start();
//l'inclusion du controlleur doit renvoyer le tableau $templateData
require CONTROLLER_PATH.DIRECTORY_SEPARATOR.$name.'.php';
$paths = new \SplPriorityQueue;
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."system", 100);
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."templating", 200);
//$paths->insert('path/to/theme', 300);
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."layout", 200);
$paths->insert(VIEW_PATH.DIRECTORY_SEPARATOR."view", 300);
$renderer = new \Windwalker\Renderer\BladeRenderer($paths, array('cache_path' => VIEW_PATH.DIRECTORY_SEPARATOR."cache"));
//de base on ajoute les parametres du .model et ceux provenant de l'url
foreach($baseControlleur->modele->page as $key => $value){
$templateData[$key] = $value;
}
echo $renderer->render( $name , $templateData);
/*require VIEW_PATH.DIRECTORY_SEPARATOR.$name.'.phtml';
$this->block_body = ob_get_clean();
ob_start();
require LAYOUT_PATH.DIRECTORY_SEPARATOR."standard.phtml";*/
$this->ecran = ob_get_clean();
}

View file

@ -1,2 +0,0 @@
<h1>Accueil</h1>
<br /><br />

View file

@ -1 +0,0 @@
<h1>ERREUR poo_v1</h1>

View file

@ -0,0 +1,13 @@
@extends('system')
@section('body')
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
@endsection

View file

@ -1 +0,0 @@
<?php $app->load(); ?>

View file

@ -1,14 +0,0 @@
<html>
<head>
<title>App Name</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
</body>
</html>

View file

@ -0,0 +1,9 @@
<html>
<head>
<title>{{$page_title}}</title>
<meta name="description" lang="fr" content="{{$description}}" />
</head>
<body>
@yield('body')
</body>
</html>

View file

@ -1,4 +1,4 @@
@extends('layout')
@extends('body')
@section('sidebar')
@parent

View file

@ -1,4 +0,0 @@
<div>
<?php echo $this->block_body ?>
</div>

View file

@ -1,2 +0,0 @@
<script src="<?php echo PATH_URL; ?>js/script.js"></script>

View file

@ -1,5 +0,0 @@
<div>
<a href="http://github.com/Acksop" >Follow Me on Github</a>
</div>

View file

@ -1,20 +0,0 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title><?php echo $page_title; ?></title>
<meta name="description" content= "<?php echo $description; ?>" >
<!-- Mobile viewport optimized: h5bp.com/viewport -->
<meta name="viewport" content="width=device-width">
<!-- Les favicons -->
<link rel="apple-touch-icon" href="<?php echo PATH_URL; ?>apple-touch-icon.png">
<link rel="icon" href="<?php echo PATH_URL; ?>favicon.png" />
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."top-css.phtml"; ?>
</head>

View file

@ -1,7 +0,0 @@
<div>
<h2>Menu Experiments</h2>
<ul>
<li><a href="<?php echo PATH_URL; ?>accueil">Accueil</a></li>
<li><a href="<?php echo PATH_URL; ?>error">Error</a></li>
</ul>
</div>

View file

@ -1,2 +0,0 @@
<link rel="stylesheet" href="<?php echo PATH_URL; ?>css/style.css">

View file

@ -1,27 +0,0 @@
<?php
define('LAYOUT_TEMPLATE',dirname(__FILE__).DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'standard');
require LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."head.phtml";
?>
<body>
<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6.
chromium.org/developers/how-tos/chrome-frame-getting-started -->
<!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]-->
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."header.phtml"; ?>
<div class="contents">
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."body.phtml"; ?>
</div>
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."footer.phtml"; ?>
<!-- JavaScript at the bottom for fast page loading -->
<?php include LAYOUT_TEMPLATE.DIRECTORY_SEPARATOR."bottom-javascript.phtml"; ?>
</body>
</html>

View file

@ -1,21 +0,0 @@
<?php
namespace MVC\Module\Setup;
class Syf43 {
/**
* @param none
* @return modular_symfony_web
*/
public function load($name) {
ob_start();
require( MODULES_PATH . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "index.php" );
$modularApp = ob_get_clean();
echo $modularApp;
}
public static function twigLoader($name){
require MODULES_PATH . DIRECTORY_SEPARATOR . "setup" . DIRECTORY_SEPARATOR . $name . ".twig.class.php";
}
}

View file

@ -9,6 +9,7 @@
"php": "^7.1.3",
"windwalker/renderer": "3.*",
"illuminate/view": "4.*"
"illuminate/view": "4.*",
"hybridauth/hybridauth": "~3.0"
}
}

View file

@ -9,5 +9,5 @@ define("MODULES_PATH", APPLICATION_PATH.DIRECTORY_SEPARATOR."modules");
require VENDOR_PATH.DIRECTORY_SEPARATOR."autoload.php";
$poo_v1 = new \MVC\Classe\Application();
$poo_v1->launch();
$poo_v5 = new \MVC\Classe\Application();
$poo_v5->launch();