Merge remote-tracking branch 'origin/pre-master' into vueArticle

# Conflicts:
#	fluxRSS/src/DAL/ArticleGateway.php
#	fluxRSS/src/DAL/FluxGateway.php
#	fluxRSS/src/metier/Article.php
#	fluxRSS/src/metier/Flux.php
#	fluxRSS/src/model/FluxModel.php
#	fluxRSS/src/model/Parser.php
#	fluxRSS/templates/listArticle.html
pull/16/head
maxime.point2 1 year ago
commit 10ee5b9534

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/fluxRSS/DAL/ArticleGateway.php" dialect="PostgreSQL" />
</component>
</project>

@ -2,11 +2,14 @@
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/config" isTestSource="false" packagePrefix="config\" />
<sourceFolder url="file://$MODULE_DIR$/controleur" isTestSource="false" packagePrefix="controleur\" />
<sourceFolder url="file://$MODULE_DIR$/metier" isTestSource="false" packagePrefix="modeles\" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/DAL" isTestSource="false" packagePrefix="DAL\" />
<sourceFolder url="file://$MODULE_DIR$/src/config" isTestSource="false" packagePrefix="config\" />
<sourceFolder url="file://$MODULE_DIR$/src/controleur" isTestSource="false" packagePrefix="controleur\" />
<sourceFolder url="file://$MODULE_DIR$/src/metier" isTestSource="false" packagePrefix="metier\" />
<sourceFolder url="file://$MODULE_DIR$/src/model" isTestSource="false" packagePrefix="model\" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="src\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />

@ -6,11 +6,12 @@
},
"autoload": {
"psr-4": {
"controleur\\": "controleur/",
"config\\": "config/",
"model\\": "model/",
"DAL\\": "DAL/",
"metier\\": "metier/"
"src\\": "src/",
"controleur\\": "src/controleur/",
"config\\": "src/config/",
"model\\": "src/model/",
"DAL\\": "src/DAL/",
"metier\\": "src/metier/"
}
}
}

@ -1,7 +1,7 @@
<?php
//chargement config
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/src/config/config.php';
require __DIR__ . '/vendor/autoload.php';

@ -31,11 +31,10 @@ class ArticleGateway
* @throws Exception
*/
public function addArticle(Article $article){
$query = 'INSERT INTO Article VALUES (:id,:title,to_date(:date,"Dy, DD Mon YYYY"),:description,:guid,:link,:mediaContent,:provenance);';
$this->con->executeQuery($query, array(':id' => array($article->getId(), PDO::PARAM_STR),
':title' => array($article->getTitle(), PDO::PARAM_STR),
':date' => array($article->getDate(), PDO::PARAM_STR),
':datePub' => array($article->getDate(), PDO::PARAM_STR),
':description' => array($article->getDescription(), PDO::PARAM_STR),
':guid' => array($article->getGuid(), PDO::PARAM_STR),
':link' => array($article->getLink(), PDO::PARAM_STR),

@ -42,10 +42,17 @@ class Connection extends PDO
foreach ($parameters as $name => $value) {
$this->stmt->bindValue($name, $value[0], $value[1]);
}
if($this->stmt->execute()){
return true;
} else {
$error = $this->stmt->errorInfo();
throw new Exception("PDO error: ".$error[2]);
}
return $this->stmt->execute();
}catch (\PDOException $e){
throw new Exception("PDO error");
throw new Exception("PDO error: ".$e->getMessage());
}catch (\Error $r){
throw new Error("executionQuery not possible : ".$r->getMessage());
}
}

@ -13,9 +13,24 @@ class FluxGateway
$this->con = $con;
}
public function addFlux(Flux $flux){
public function addFlux(Flux $flux)
{
$query = 'INSERT INTO Flux VALUES (:flux);';
$this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR)));
}
public function getId(): int
{
return $this->id;
}
public function addFlux($flux){
try{
$query = 'INSERT INTO Flux VALUES (:flux);';
$this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR)));
}catch (\PDOException $e){
throw new \Exception("PDO error");
}
public function removeFlux(Flux $flux){

@ -0,0 +1,86 @@
<?php
namespace controleur;
use model\ArticleModel;
class UserControleur
{
public function __construct()
{
global $twig; // nécessaire pour utiliser variables globales
session_start();
//debut
//on initialise un tableau d'erreur
$dVueEreur = [];
try {
$action = $_REQUEST['action'] ?? null;
switch($action) {
//pas d'action, on réinitialise 1er appel
case null:
$this->Reinit();
break;
case 'validationFormulaire':
$this->ValidationFormulaire($dVueEreur);
break;
//mauvaise action
default:
$tabArticle[] = ArticleModel::getArticles();
$dVueEreur[] = "Erreur d'appel php";
$dataview = ['Article'=> $tabArticle];
echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]);
break;
}
} catch (\PDOException $e) {
//si erreur BD, pas le cas ici
$dVueEreur[] = 'Erreur PDO : ' . $e->getMessage();
echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]);
} catch (\Exception $e2) {
$dVueEreur[] = 'Erreur : ' . $e2->getMessage();
echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]);
}
//fin
exit(0);
}//fin constructeur
public function Reinit()
{
global $twig; // nécessaire pour utiliser variables globales
$dVue = [
'nom' => '',
'age' => 0,
'data' => ArticleModel::getArticles()
];
echo $twig->render('listArticle.html', [
'dVue' => $dVue
]);
}
public function ValidationFormulaire(array $dVueEreur)
{
global $twig; // nécessaire pour utiliser variables globales
//si exception, ca remonte !!!
$nom = $_POST['txtNom']; // txtNom = nom du champ texte dans le formulaire
$age = $_POST['txtAge'];
\config\Validation::val_form($nom, $age, $dVueEreur);
/*
$model = new \metier\Simplemodel();
$data = $model->get_data();
*/
$dVue = [
'nom' => $nom,
'age' => $age,
//'data' => $data,
];
echo $twig->render('Connection.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]);
}
}//fin class

@ -11,6 +11,9 @@ require 'AltoRouter.php';
class FrontControleur
{
public function __construct(){
$routeur = new AltoRouter();
global $twig;
$router = new AltoRouter();
@ -50,4 +53,6 @@ class FrontControleur
}
}
}
}

@ -23,7 +23,15 @@ class Article
* @param string $mediaContent
* @param int $provenance
*/
public function __construct(int $id, string $title, string $date, string $description, string $guid, string $link, string $mediaContent, int $provenance)
public function __construct(
?int $id,
string $title,
string $date,
string $description,
string $guid,
string $link,
string $mediaContent,
int $provenance)
{
$this->id = $id;
$this->title = $title;

@ -57,6 +57,7 @@ class FluxModel
public function findFluxBySrc(string $flux){
$gateway = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$data = array();
$result = $gateway->findFluxBySrc($flux);
foreach ($result as $row){

@ -23,24 +23,29 @@ class Parser
{
$dom = new DOMDocument();
$tabArticle = array();
if ($dom->load($flux->getFlux())){
$items = $dom->getElementsByTagName('item');
foreach ($items as $item) {
$title = $item->getElementsByTagName('title')[0]->nodeValue;
$date = $item->getElementsByTagName('pubDate')[0]->nodeValue;
$guid = $item->getElementsByTagName('guid')[0]->nodeValue;
$link = $item->getElementsByTagName('link')[0]->nodeValue;
$description = $item->getElementsByTagName('description')[0]->nodeValue;
$media = $item->getElementsByTagName('media:content');
$mediaUrl = null;
if ($media->length > 0){
$mediaUrl = $media->item(0)->getAttribute('url');
}
$tabArticle[] = new Article((int)null, $title, $date, $description, $guid, $link, $mediaUrl, $flux->getId());
$tabArticle[] = new Article(
(int)null,
$title,
$date,
$description,
$guid,
$link,
($mediaUrl !== null) ? (string)$mediaUrl : '',
$flux->getId());
}
return $tabArticle;
} else {
@ -54,8 +59,11 @@ class Parser
* @throws Exception
*/
public function parseAll($fluxes){
$tabArticles = [];
foreach ($fluxes as $flux){
$tabArticles[] =$this->parseArticles($flux);
$fluxx = new Flux($flux[0],$flux[1]);
$tabArticles[] = $this->parseArticles($fluxx);
}
return $tabArticles;
}
@ -65,20 +73,27 @@ class Parser
*/
public function addAllArticles()
{
$tabFluxes = [];
$this->articleGateway->removeAllArticleForParser();
$allFlux = $this->fluxGateway->findAllFlux();
$allArticles = $this->parseAll($allFlux);
foreach ($allArticles as $article) {
$this->articleGateway->addArticle($article);
$allItemFlux = $this->fluxGateway->findAllFlux();
foreach ($allItemFlux as $ItemFlux){
$tabFluxes[] = $ItemFlux[1];
}
return $allArticles;
$allTabArticles = $this->parseAll($allItemFlux);
foreach ($allTabArticles as $tabArticle) {
foreach ($tabArticle as $item) {
$this->articleGateway->addArticle($item);
}
}
$gwArt = new ArticleGateway(new Connection($base, $login, $mdpBd));
$gwFl = new FluxGateway(new Connection($base, $login, $mdpBd));
$pars = new Parser( $gwFl,$gwArt);
}
}

@ -0,0 +1,13 @@
<?php
namespace test;
use DAL\ArticleGateway;
use DAL\Connection;
use DAL\FluxGateway;
use model\Parser;
require '../../vendor/autoload.php';
$gwArt = new ArticleGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp'));
$gwFl = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto', 'rorossetto', 'tpphp'));
$pars = new Parser( $gwFl,$gwArt);

@ -6,12 +6,13 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'model\\' => array($baseDir . '/model'),
'metier\\' => array($baseDir . '/metier'),
'controleur\\' => array($baseDir . '/controleur'),
'config\\' => array($baseDir . '/config'),
'src\\' => array($baseDir . '/src'),
'model\\' => array($baseDir . '/src/model'),
'metier\\' => array($baseDir . '/src/metier'),
'controleur\\' => array($baseDir . '/src/controleur'),
'config\\' => array($baseDir . '/src/config'),
'Twig\\' => array($vendorDir . '/twig/twig/src'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'DAL\\' => array($baseDir . '/DAL'),
'DAL\\' => array($baseDir . '/src/DAL'),
);

@ -12,6 +12,10 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
);
public static $prefixLengthsPsr4 = array (
's' =>
array (
'src\\' => 4,
),
'm' =>
array (
'model\\' => 6,
@ -38,21 +42,25 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
);
public static $prefixDirsPsr4 = array (
'src\\' =>
array (
0 => __DIR__ . '/../..' . '/src',
),
'model\\' =>
array (
0 => __DIR__ . '/../..' . '/model',
0 => __DIR__ . '/../..' . '/src/model',
),
'metier\\' =>
array (
0 => __DIR__ . '/../..' . '/metier',
0 => __DIR__ . '/../..' . '/src/metier',
),
'controleur\\' =>
array (
0 => __DIR__ . '/../..' . '/controleur',
0 => __DIR__ . '/../..' . '/src/controleur',
),
'config\\' =>
array (
0 => __DIR__ . '/../..' . '/config',
0 => __DIR__ . '/../..' . '/src/config',
),
'Twig\\' =>
array (
@ -68,7 +76,7 @@ class ComposerStaticInita6287a55fe354aae4af95d1e4395c915
),
'DAL\\' =>
array (
0 => __DIR__ . '/../..' . '/DAL',
0 => __DIR__ . '/../..' . '/src/DAL',
),
);

@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '74b55bc18906a4639884ce8f33bd06d1657149b3',
'reference' => 'c00c0a1c491c44a1666572f040f9b9df34933d25',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '74b55bc18906a4639884ce8f33bd06d1657149b3',
'reference' => 'c00c0a1c491c44a1666572f040f9b9df34933d25',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),

Loading…
Cancel
Save