Merge branch 'pre-master' into feature/afficheRox

# Conflicts:
#	fluxRSS/src/DAL/ArticleGateway.php
#	fluxRSS/src/controleur/AdminControleur.php
#	fluxRSS/src/metier/Flux.php
#	fluxRSS/src/model/ArticleModel.php
#	fluxRSS/src/test/test.php
#	fluxRSS/templates/listArticleAdmin.html
feature/afficheRox
Roxane ROSSETTO 1 year ago
commit 9d0935ccbd

@ -5,7 +5,6 @@ use Exception;
use metier\Article;
use metier\Flux;
use PDO;
use DateTime;
class ArticleGateway
{
private $con;
@ -23,24 +22,17 @@ class ArticleGateway
*/
public function getAllArticles():array
{
try {
$query = 'SELECT * FROM Article;';
$this->con->executeQuery($query, array());
return $this->con->getResults();
}catch (\PDOException $e){
throw new Exception("PDO error");
}
}
/**
* @throws Exception
*/
public function addArticle(Article $article){
try {
$query = 'INSERT INTO Article VALUES (:id,:title,:datePub,:description,:guid,:link,:mediaContent,:provenance);';
$this->con->executeQuery($query, array(':id' => array($article->getId(), PDO::PARAM_INT),
$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),
':datePub' => array($article->getDate(), PDO::PARAM_STR),
':description' => array($article->getDescription(), PDO::PARAM_STR),
@ -48,23 +40,22 @@ class ArticleGateway
':link' => array($article->getLink(), PDO::PARAM_STR),
':mediaContent' => array($article->getMediaContent(), PDO::PARAM_STR),
':provenance' => array($article->getProvenance(), PDO::PARAM_INT)));
}catch (\PDOException $e){
throw new Exception("PDO error");
}
}
public function removeAllArticleForParser(){
try{
$query = 'DELETE FROM Article;';
$this->con->executeQuery($query);
}
public function removeAllArticleFromFlux(int $idFlux){
try {
$query = 'DELETE FROM Article WHERE Provenance = :idFlux;';
$this->con->executeQuery($query, array(':idFlux' => array($idFlux, PDO::PARAM_INT)));
}catch(\PDOException $p){
throw new Exception("Data is not delete.");
throw new Exception("Data of flux is not delete.");
}
}
public function findArticleByFlux(int $flux){
$query = 'SELECT * FROM Article WHERE provenance = :flux;';
$this->con->executeQuery($query, array(':flux' => array($flux, PDO::PARAM_INT)));

@ -15,23 +15,30 @@ class FluxGateway
public function addFlux(Flux $flux)
{
$query = 'INSERT INTO Flux VALUES (:flux);';
$this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR)));
$this->addFluxBySrc($flux->getFlux());
}
public function getId(): int
public function addFluxBySrc(string $flux)
{
return $this->id;
$query = 'INSERT INTO Flux VALUES (null,:flux);';
$this->con->executeQuery($query, array(':flux' => array($flux, PDO::PARAM_STR)));
}
public function removeFlux(Flux $flux){
$this->removeFluxBySrc($flux->getFlux());
}
public function removeFluxBySrc(string $flux){
$query = 'DELETE FROM Flux WHERE flux = :flux;';
$this->con->executeQuery($query, array(':flux' => array($flux->getFlux(), PDO::PARAM_STR)));
$this->con->executeQuery($query, array(':flux' => array($flux, PDO::PARAM_STR)));
}
public function findAllFlux(){
public function removeFluxById(int $id){
$query = 'DELETE FROM Flux WHERE id = :id;';
$this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT)));
}
public function findAllFlux(){
$query = 'SELECT * FROM Flux;';
$this->con->executeQuery($query);
return $this->con->getResults();

@ -2,13 +2,24 @@
namespace controleur;
use DAL\ArticleGateway;
use DAL\Connection;
use DAL\FluxGateway;
use http\Exception;
use metier\Flux;
use model\AdminModel;
use model\ArticleModel;
use model\FluxModel;
use model\Parser;
class AdminControleur
{
public function __construct(){
/*public function __construct()
{
$this->init();
}*/
public function init(){
global $twig; // nécessaire pour utiliser variables globales
//debut
@ -37,6 +48,18 @@ class AdminControleur
$this->ValidationFormulaire($dVueEreur);
break;
case 'listFlux':
$this->listFlux();
break;
case 'ajoutFlux':
$this->ajoutFlux();
break;
case 'changeNbArticle':
$this->changeNbArticle();
break;
//mauvaise action
default:
$dVueEreur[] = "Erreur d'appel php";
@ -60,10 +83,12 @@ class AdminControleur
{
global $twig;
$articleModel = new ArticleModel();
$nbArticle = isset($_SESSION['nbArticle']) ? intval($_SESSION['nbArticle']) : 5;
$allArticles = $articleModel->getArticles();
$articles = array_slice($allArticles, 0, $nbArticle);
if (AdminModel::isAdmin()) {
$data = $articleModel->getArticles();
$dVue = [
'data' => $data
'data' => $articles
];
echo $twig->render('listArticleAdmin.html', [
'dVue' => $dVue,
@ -75,11 +100,29 @@ class AdminControleur
}
}
public function listFlux(){
global $twig;
$fluxModel = new FluxModel();
if (AdminModel::isAdmin()) {
$dVue = [
'data' => $fluxModel->findAllFlux()
];
echo $twig->render('listFlux.html', [
'dVue' => $dVue,
'isAdmin' => AdminModel::isAdmin()
]);
}
else {
$this->connection();
}
}
public function connection(){
global $twig; // nécessaire pour utiliser variables globales
$renderTemplate = true;
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['username'])){
$_REQUEST['action'] = null;
$this->login();
$renderTemplate = false;
}
@ -90,9 +133,35 @@ class AdminControleur
public function deleteFlux(){
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['flux'])){
$articleModel = new ArticleModel();
$fluxModel = new FluxModel();
$fluxModel->removeFlux($_POST['flux']);
$this->listArticle();
$articleModel->removeArticleIdFlux(intval($_POST['flux']));
$fluxModel->removeFluxById(intval($_POST['flux']));
$_REQUEST['action'] = 'listFlux';
$this->init();
}
else{
$_REQUEST['action'] = 'listFlux';
$this->init();
}
}
public function ajoutFlux(){
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fluxAdd'])){
$con = new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp');
$gwArticle = new ArticleGateway($con);
$gwFlux = new FluxGateway($con);
$parser = new Parser($gwFlux,$gwArticle);
$fluxModel = new FluxModel();
$fluxModel->addFluxBySrc($_POST['fluxAdd']);
$parser->addAllArticles();
$_REQUEST['action'] = 'listFlux';
unset($_POST['fluxAdd']);
$this->init();
}
else{
$_REQUEST['action'] = 'listFlux';
$this->init();
}
}
@ -103,7 +172,7 @@ class AdminControleur
$adminModel = new AdminModel();
$admin = $adminModel->connection($username, $password);
if($admin != null) {
$this->listArticle();
$this->init();
}
else{
unset($_POST['username']);
@ -111,4 +180,13 @@ class AdminControleur
$this->connection();
}
}
public function changeNbArticle()
{
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['nbArticle'])) {
$_SESSION['nbArticle'] = $_POST['nbArticle'];
unset($_POST['action']);
}
$this->init();
}
}

@ -30,7 +30,7 @@ class FrontControleur
else {
session_start();
$controller=$match['target'] ?? null;
$action=$match['params']['action'] ?? null;
$action=$match['params']['action'] ?? "init";
try {
if($controller == "AdminControleur"){
if (!AdminModel::isAdmin()){

@ -3,11 +3,10 @@ namespace controleur;
use model\AdminModel;
use model\ArticleModel;
use model\Parser;
class UserControleur
{
public function __construct()
public function init()
{
global $twig; // nécessaire pour utiliser variables globales
//debut
@ -59,8 +58,11 @@ class UserControleur
{
global $twig;
$articleModel = new ArticleModel();
$nbArticle = isset($_SESSION['nbArticle']) ? intval($_SESSION['nbArticle']) : 5;
$allArticles = $articleModel->getArticles();
$articles = array_slice($allArticles, 0, $nbArticle);
$dVue = [
'data' => $articleModel->findAllArticleByAllFlux()
'data' => $articles
];
echo $twig->render('listArticle.html', [
'dVue' => $dVue,

@ -2,6 +2,8 @@
namespace metier;
use DateTime;
class Article
{
private int $id;
@ -128,4 +130,8 @@ class Article
return $this->title . $this->date . $this->description;
}
public function dateStr(): string{
$dateTime = new DateTime($this->date);
return $dateTime->format('d/m/y à H:i') . '';
}
}

@ -4,20 +4,13 @@ namespace metier;
class Flux
{
private int $id;
private ?int $id;
private string $flux;
/**
* @param int $id
* @param string $flux
*/
public function __construct(int $id, string $flux)
{
$this->id = $id;
public function __construct(string $flux, int $id=null){
$this->id =$id;
$this->flux = $flux;
}
/**
* @return string
*/

@ -36,7 +36,7 @@ class ArticleModel
foreach ($res as $row){
$tabArticle[] = new Article($row['id'], $row['title'],$row['datePub'],$row['description'],$row['guid'],$row['link'],$row['mediaContent'],$row['provenance'] );
}
$dicoFluxArticle = [$flux,$tabArticle];
$dicoFluxArticle[] = [$flux,$tabArticle];
return $dicoFluxArticle;
}
@ -47,8 +47,8 @@ class ArticleModel
$res = $gwFlux->findAllFlux();
foreach ($res as $row) {
$flux = new Flux((int)($row['id']), $row['flux']);
$tabFluxArticle[] = $this->findArticleByFlux($flux);
$flux = new Flux((int)($row['id']),$row['flux']);
$tabFluxArticle[] = $this->findArticleByFluxAsStr($flux);
}
return $tabFluxArticle;
}
@ -66,4 +66,10 @@ class ArticleModel
$dicoFluxArticle = [$flux,$tabArticle];
return $dicoFluxArticle;
}
public static function removeArticleIdFlux(int $idFlux)
{
$gwArticle = new ArticleGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$gwArticle->removeAllArticleFromFlux($idFlux);
}
}

@ -8,13 +8,13 @@ use metier\Flux;
class FluxModel
{
public function FindAllFlux(){
public function findAllFlux(){
$gateway = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$data = array();
$result = $gateway->findAllFlux();
foreach ($result as $row){
$data[] = new Flux((int)$row['id'],$row['$flux']);
$data[] = new Flux((int)$row['id'],$row['flux']);
}
return $data;
}
@ -29,7 +29,7 @@ class FluxModel
public function addFluxBySrc(string $flux): Flux {
$gateway = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$newFlux = new Flux($flux);
$newFlux = new Flux(null,$flux);
$gateway->addFlux($newFlux);
return $newFlux;
}
@ -39,9 +39,14 @@ class FluxModel
$gateway->removeFlux($flux);
}
public function removeFluxById(int $id){
$gateway = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$gateway->removeFluxById($id);
}
public function removeFluxBySrc(string $flux) {
$gateway = new FluxGateway(new Connection('mysql:host=londres.uca.local;dbname=dbrorossetto','rorossetto','tpphp'));
$gateway->removeFlux($flux);
$gateway->removeFluxBySrc($flux);
}
public function findFlux(Flux $flux){
@ -50,7 +55,7 @@ class FluxModel
$result = $gateway->findFlux($flux);
foreach ($result as $row){
$data[] = new Flux($row['$flux'],(int)$row['id']);
$data[] = new Flux((int)$row['id'],$row['$flux']);
}
return $data;
}
@ -61,7 +66,7 @@ class FluxModel
$result = $gateway->findFluxBySrc($flux);
foreach ($result as $row){
$data[] = new Flux($row['$flux'],(int)$row['id']);
$data[] = new Flux((int)$row['id'],$row['$flux']);
}
return $data;
}

@ -10,5 +10,4 @@ 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);
var_dump($pars);
$pars->addAllArticles();

@ -5,22 +5,16 @@
<title>All Articles</title>
</head>
<body>
{% for value in dVue.data %}
<p>
{{ value.0.getFlux() }}
{% for article in value.1 %}
<p>
{{article}}
</p>
{% endfor %}
</br>
</br>
</p>
{% for article in dVue.data %}
<p>
{{article.dateStr()}}
<a href="{{ article.getLink() }}" target="_blank">{{ article.getTitle() }}</a>
{{ article.getDescription() }}
</p>
{% endfor %}
{% if not isAdmin %}
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/admin/connection">Connect</a>
{% else %}
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/admin/">Vue admin</a>
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/user/deconnection">Déconnection</a>
{% endif %}
</body>

@ -5,25 +5,16 @@
<title>All Articles</title>
</head>
<body>
admin
{% for value in dVue.data %}
<p>
{{value}}
</p>
<!--
<div>
{{ value.0.getFlux() }}
<form method="post" action="deleteFlux">
<input type="hidden" name="flux" value="{{ value.0 }}">
<button type="submit">Delete Flux</button>
</form>
{% for article in value.1 %}
<form method="POST" action="changeNbArticle">
<input name="nbArticle" type="number" min="0">
<button type="submit">Change number of articles</button>
</form>
{% for article in dVue.data %}
<p>
{{article}}
{{article.dateStr()}}
<a href="{{ article.getLink() }}" target="_blank">{{ article.getTitle() }}</a>
{{ article.getDescription() }}
</p>
{% endfor %}
</div>
-->
{% endfor %}
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/">Vue user</a>
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/admin/deconnection">Déconnection</a>

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>All Flux</title>
</head>
<body>
{% for value in dVue.data %}
<div>
{{ value.getFlux() }}
<form method="post" action="deleteFlux">
<input type="hidden" name="flux" value="{{ value.getId() }}">
<button type="submit">Delete Flux</button>
</form>
</div>
{% endfor %}
<form method="POST" action="ajoutFlux">
<input name="fluxAdd" type="text">
<button type="submit">Ajouter Flux</button>
</form>
<a href="/~mapoint2/SAE/Php_RSS/fluxRSS/admin/">Vue article</a>
</body>
</html>
Loading…
Cancel
Save