Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Raphael LACOTE | ae8667063d | 1 year ago |
@ -1,441 +0,0 @@
|
|||||||
##### Windows
|
|
||||||
# Windows thumbnail cache files
|
|
||||||
Thumbs.db
|
|
||||||
Thumbs.db:encryptable
|
|
||||||
ehthumbs.db
|
|
||||||
ehthumbs_vista.db
|
|
||||||
|
|
||||||
# Dump file
|
|
||||||
*.stackdump
|
|
||||||
|
|
||||||
# Recycle Bin used on file shares
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
|
|
||||||
# Windows Installer files
|
|
||||||
*.cab
|
|
||||||
*.msi
|
|
||||||
*.msix
|
|
||||||
*.msm
|
|
||||||
*.msp
|
|
||||||
|
|
||||||
# Windows shortcuts
|
|
||||||
*.lnk
|
|
||||||
|
|
||||||
##### Linux
|
|
||||||
*~
|
|
||||||
|
|
||||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
|
||||||
.fuse_hidden*
|
|
||||||
|
|
||||||
# KDE directory preferences
|
|
||||||
.directory
|
|
||||||
|
|
||||||
# Linux trash folder which might appear on any partition or disk
|
|
||||||
.Trash-*
|
|
||||||
|
|
||||||
# .nfs files are created when an open file is removed but is still being accessed
|
|
||||||
.nfs*
|
|
||||||
|
|
||||||
##### MacOS
|
|
||||||
# General
|
|
||||||
.DS_Store
|
|
||||||
.AppleDouble
|
|
||||||
.LSOverride
|
|
||||||
|
|
||||||
# Icon must end with two \r
|
|
||||||
Icon
|
|
||||||
|
|
||||||
# Thumbnails
|
|
||||||
._*
|
|
||||||
|
|
||||||
# Files that might appear in the root of a volume
|
|
||||||
.DocumentRevisions-V100
|
|
||||||
.fseventsd
|
|
||||||
.Spotlight-V100
|
|
||||||
.TemporaryItems
|
|
||||||
.Trashes
|
|
||||||
.VolumeIcon.icns
|
|
||||||
.com.apple.timemachine.donotpresent
|
|
||||||
|
|
||||||
# Directories potentially created on remote AFP share
|
|
||||||
.AppleDB
|
|
||||||
.AppleDesktop
|
|
||||||
Network Trash Folder
|
|
||||||
Temporary Items
|
|
||||||
.apdisk
|
|
||||||
|
|
||||||
##### Backup
|
|
||||||
*.bak
|
|
||||||
*.gho
|
|
||||||
*.ori
|
|
||||||
*.orig
|
|
||||||
*.tmp
|
|
||||||
|
|
||||||
##### GPG
|
|
||||||
secring.*
|
|
||||||
|
|
||||||
##### SynopsysVCS
|
|
||||||
# Waveform formats
|
|
||||||
*.vcd
|
|
||||||
*.vpd
|
|
||||||
*.evcd
|
|
||||||
*.fsdb
|
|
||||||
|
|
||||||
# Default name of the simulation executable. A different name can be
|
|
||||||
# specified with this switch (the associated daidir database name is
|
|
||||||
# also taken from here): -o <path>/<filename>
|
|
||||||
simv
|
|
||||||
|
|
||||||
# Generated for Verilog and VHDL top configs
|
|
||||||
simv.daidir/
|
|
||||||
simv.db.dir/
|
|
||||||
|
|
||||||
# Infrastructure necessary to co-simulate SystemC models with
|
|
||||||
# Verilog/VHDL models. An alternate directory may be specified with this
|
|
||||||
# switch: -Mdir=<directory_path>
|
|
||||||
csrc/
|
|
||||||
|
|
||||||
# Log file - the following switch allows to specify the file that will be
|
|
||||||
# used to write all messages from simulation: -l <filename>
|
|
||||||
*.log
|
|
||||||
|
|
||||||
# Coverage results (generated with urg) and database location. The
|
|
||||||
# following switch can also be used: urg -dir <coverage_directory>.vdb
|
|
||||||
simv.vdb/
|
|
||||||
urgReport/
|
|
||||||
|
|
||||||
# DVE and UCLI related files.
|
|
||||||
DVEfiles/
|
|
||||||
ucli.key
|
|
||||||
|
|
||||||
# When the design is elaborated for DirectC, the following file is created
|
|
||||||
# with declarations for C/C++ functions.
|
|
||||||
vc_hdrs.h
|
|
||||||
|
|
||||||
##### SVN
|
|
||||||
.svn/
|
|
||||||
|
|
||||||
##### Mercurial
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.hgsigs
|
|
||||||
.hgsub
|
|
||||||
.hgsubstate
|
|
||||||
.hgtags
|
|
||||||
|
|
||||||
##### Bazaar
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
|
|
||||||
##### CVS
|
|
||||||
/CVS/*
|
|
||||||
**/CVS/*
|
|
||||||
.cvsignore
|
|
||||||
*/.cvsignore
|
|
||||||
|
|
||||||
##### TortoiseGit
|
|
||||||
# Project-level settings
|
|
||||||
/.tgitconfig
|
|
||||||
|
|
||||||
##### PuTTY
|
|
||||||
# Private key
|
|
||||||
*.ppk
|
|
||||||
|
|
||||||
##### Vim
|
|
||||||
# Swap
|
|
||||||
[._]*.s[a-v][a-z]
|
|
||||||
!*.svg # comment out if you don't need vector files
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
[._]s[a-rt-v][a-z]
|
|
||||||
[._]ss[a-gi-z]
|
|
||||||
[._]sw[a-p]
|
|
||||||
|
|
||||||
# Session
|
|
||||||
Session.vim
|
|
||||||
Sessionx.vim
|
|
||||||
|
|
||||||
# Temporary
|
|
||||||
.netrwhist
|
|
||||||
# Auto-generated tag files
|
|
||||||
tags
|
|
||||||
# Persistent undo
|
|
||||||
[._]*.un~
|
|
||||||
|
|
||||||
# Org-mode
|
|
||||||
.org-id-locations
|
|
||||||
*_archive
|
|
||||||
|
|
||||||
# flymake-mode
|
|
||||||
*_flymake.*
|
|
||||||
|
|
||||||
# eshell files
|
|
||||||
/eshell/history
|
|
||||||
/eshell/lastdir
|
|
||||||
|
|
||||||
# elpa packages
|
|
||||||
/elpa/
|
|
||||||
|
|
||||||
# reftex files
|
|
||||||
*.rel
|
|
||||||
|
|
||||||
# AUCTeX auto folder
|
|
||||||
/auto/
|
|
||||||
|
|
||||||
# cask packages
|
|
||||||
.cask/
|
|
||||||
dist/
|
|
||||||
|
|
||||||
# Flycheck
|
|
||||||
flycheck_*.el
|
|
||||||
|
|
||||||
# server auth directory
|
|
||||||
/server/
|
|
||||||
|
|
||||||
# projectiles files
|
|
||||||
.projectile
|
|
||||||
|
|
||||||
# directory configuration
|
|
||||||
.dir-locals.el
|
|
||||||
|
|
||||||
# network security
|
|
||||||
/network-security.data
|
|
||||||
|
|
||||||
##### SublimeText
|
|
||||||
# Cache files for Sublime Text
|
|
||||||
*.tmlanguage.cache
|
|
||||||
*.tmPreferences.cache
|
|
||||||
*.stTheme.cache
|
|
||||||
|
|
||||||
# Workspace files are user-specific
|
|
||||||
*.sublime-workspace
|
|
||||||
|
|
||||||
# Project files should be checked into the repository, unless a significant
|
|
||||||
# proportion of contributors will probably not be using Sublime Text
|
|
||||||
# *.sublime-project
|
|
||||||
|
|
||||||
# SFTP configuration file
|
|
||||||
sftp-config.json
|
|
||||||
sftp-config-alt*.json
|
|
||||||
|
|
||||||
# Package control specific files
|
|
||||||
Package Control.last-run
|
|
||||||
Package Control.ca-list
|
|
||||||
Package Control.ca-bundle
|
|
||||||
Package Control.system-ca-bundle
|
|
||||||
Package Control.cache/
|
|
||||||
Package Control.ca-certs/
|
|
||||||
Package Control.merged-ca-bundle
|
|
||||||
Package Control.user-ca-bundle
|
|
||||||
oscrypto-ca-bundle.crt
|
|
||||||
bh_unicode_properties.cache
|
|
||||||
|
|
||||||
# Sublime-github package stores a github token in this file
|
|
||||||
# https://packagecontrol.io/packages/sublime-github
|
|
||||||
GitHub.sublime-settings
|
|
||||||
|
|
||||||
##### TextMate
|
|
||||||
*.tmproj
|
|
||||||
*.tmproject
|
|
||||||
tmtags
|
|
||||||
|
|
||||||
##### VisualStudioCode
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
*.code-workspace
|
|
||||||
|
|
||||||
# Local History for Visual Studio Code
|
|
||||||
.history/
|
|
||||||
|
|
||||||
##### NetBeans
|
|
||||||
**/nbproject/private/
|
|
||||||
**/nbproject/Makefile-*.mk
|
|
||||||
**/nbproject/Package-*.bash
|
|
||||||
build/
|
|
||||||
nbbuild/
|
|
||||||
nbdist/
|
|
||||||
.nb-gradle/
|
|
||||||
|
|
||||||
##### JetBrains
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
php/.idea/**/workspace.xml
|
|
||||||
php/.idea/**/tasks.xml
|
|
||||||
php/.idea/**/usage.statistics.xml
|
|
||||||
php/.idea/**/dictionaries
|
|
||||||
php/.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
php/.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
php/.idea/**/dataSources/
|
|
||||||
php/.idea/**/dataSources.ids
|
|
||||||
php/.idea/**/dataSources.local.xml
|
|
||||||
php/.idea/**/sqlDataSources.xml
|
|
||||||
php/.idea/**/dynamic.xml
|
|
||||||
php/.idea/**/uiDesigner.xml
|
|
||||||
php/.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
php/.idea/**/gradle.xml
|
|
||||||
php/.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
php/.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
php/.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
php/.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
php/.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
##### Eclipse
|
|
||||||
.metadata
|
|
||||||
bin/
|
|
||||||
tmp/
|
|
||||||
*.swp
|
|
||||||
*~.nib
|
|
||||||
local.properties
|
|
||||||
.settings/
|
|
||||||
.loadpath
|
|
||||||
.recommenders
|
|
||||||
|
|
||||||
# External tool builders
|
|
||||||
.externalToolBuilders/
|
|
||||||
|
|
||||||
# Locally stored "Eclipse launch configurations"
|
|
||||||
*.launch
|
|
||||||
|
|
||||||
# CDT- autotools
|
|
||||||
.autotools
|
|
||||||
|
|
||||||
# Java annotation processor (APT)
|
|
||||||
.factorypath
|
|
||||||
|
|
||||||
# PDT-specific (PHP Development Tools)
|
|
||||||
.buildpath
|
|
||||||
|
|
||||||
# sbteclipse plugin
|
|
||||||
.target
|
|
||||||
|
|
||||||
# Tern plugin
|
|
||||||
.tern-project
|
|
||||||
|
|
||||||
# TeXlipse plugin
|
|
||||||
.texlipse
|
|
||||||
|
|
||||||
# STS (Spring Tool Suite)
|
|
||||||
.springBeans
|
|
||||||
|
|
||||||
# Code Recommenders
|
|
||||||
.recommenders/
|
|
||||||
|
|
||||||
# Annotation Processing
|
|
||||||
.apt_generated/
|
|
||||||
.apt_generated_test/
|
|
||||||
|
|
||||||
# Uncomment this line if you wish to ignore the project description file.
|
|
||||||
# Typically, this file would be tracked if it contains build/dependency configurations:
|
|
||||||
#.project
|
|
||||||
|
|
||||||
##### Dreamweaver
|
|
||||||
# DW Dreamweaver added files
|
|
||||||
_notes
|
|
||||||
_compareTemp
|
|
||||||
configs/
|
|
||||||
dwsync.xml
|
|
||||||
dw_php_codehinting.config
|
|
||||||
*.mno
|
|
||||||
|
|
||||||
##### CodeKit
|
|
||||||
# General CodeKit files to ignore
|
|
||||||
config.codekit
|
|
||||||
config.codekit3
|
|
||||||
/min
|
|
||||||
|
|
||||||
##### Gradle
|
|
||||||
.gradle
|
|
||||||
**/build/
|
|
||||||
!src/**/build/
|
|
||||||
|
|
||||||
# Ignore Gradle GUI config
|
|
||||||
gradle-app.setting
|
|
||||||
|
|
||||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
|
||||||
!gradle-wrapper.jar
|
|
||||||
|
|
||||||
# Cache of project
|
|
||||||
.gradletasknamecache
|
|
||||||
|
|
||||||
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
|
|
||||||
# gradle/wrapper/gradle-wrapper.properties
|
|
||||||
|
|
||||||
##### Composer
|
|
||||||
php/composer.phar
|
|
||||||
php/composer
|
|
||||||
php/vendor/
|
|
||||||
|
|
||||||
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
|
|
||||||
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
|
|
||||||
php/composer.lock
|
|
||||||
|
|
||||||
##### PHP CodeSniffer
|
|
||||||
# gitignore for the PHP Codesniffer framework
|
|
||||||
# website: https://github.com/squizlabs/PHP_CodeSniffer
|
|
||||||
#
|
|
||||||
# Recommended template: PHP.gitignore
|
|
||||||
|
|
||||||
/wpcs/*
|
|
||||||
|
|
||||||
##### SASS
|
|
||||||
.sass-cache/
|
|
||||||
*.css.map
|
|
||||||
*.sass.map
|
|
||||||
*.scss.map
|
|
||||||
|
|
||||||
php/.idea/
|
|
||||||
|
|
||||||
##### Images :
|
|
||||||
###php/public/uploads/
|
|
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="SqlDialectMappings">
|
|
||||||
<file url="file://$PROJECT_DIR$/php/src/gateway/AlumniGateway.php" dialect="GenericSQL" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
Before Width: | Height: | Size: 100 KiB |
@ -1,11 +0,0 @@
|
|||||||
#RewriteEngine On
|
|
||||||
#
|
|
||||||
#RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
#RewriteCond %{REQUEST_FILENAME} !-d
|
|
||||||
#RewriteRule ^(.*)$ index.php/$1 [L]
|
|
||||||
|
|
||||||
|
|
||||||
RewriteEngine on
|
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
|
||||||
RewriteRule . index.php [L]
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/php.iml" filepath="$PROJECT_DIR$/.idea/php.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="WEB_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" />
|
|
||||||
<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" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="MessDetectorOptionsConfiguration">
|
|
||||||
<option name="transferred" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PHPCSFixerOptionsConfiguration">
|
|
||||||
<option name="transferred" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PHPCodeSnifferOptionsConfiguration">
|
|
||||||
<option name="highlightLevel" value="WARNING" />
|
|
||||||
<option name="transferred" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PhpIncludePathManager">
|
|
||||||
<include_path>
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/twig/twig" />
|
|
||||||
</include_path>
|
|
||||||
</component>
|
|
||||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1">
|
|
||||||
<option name="suggestChangeDefaultLanguageLevel" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="PhpStanOptionsConfiguration">
|
|
||||||
<option name="transferred" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PsalmOptionsConfiguration">
|
|
||||||
<option name="transferred" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"twig/twig": "^3.0",
|
"twig/twig": "^3.0"
|
||||||
"twig/extensions": "^1.5",
|
|
||||||
"ext-pdo": "*",
|
|
||||||
"ext-fileinfo": "*"
|
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"App\\": "src/"
|
"controleur\\": "controleur/",
|
||||||
|
"config\\": "config/",
|
||||||
|
"modeles\\": "modeles/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
namespace config;
|
||||||
|
|
||||||
|
class Validation
|
||||||
|
{
|
||||||
|
public static function val_action($action)
|
||||||
|
{
|
||||||
|
if (!isset($action)) {
|
||||||
|
throw new \Exception('pas d\'action');
|
||||||
|
//on pourrait aussi utiliser
|
||||||
|
//$action = $_GET['action'] ?? 'no';
|
||||||
|
// This is equivalent to:
|
||||||
|
//$action = if (isset($_GET['action'])) $action=$_GET['action'] else $action='no';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function val_form(string &$nom, string &$age, &$dVueEreur)
|
||||||
|
{
|
||||||
|
if (!isset($nom) || $nom == '') {
|
||||||
|
$dVueEreur[] = 'pas de nom';
|
||||||
|
$nom = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen(htmlspecialchars($nom, ENT_QUOTES) === 0)) {
|
||||||
|
$dVueEreur[] = "testative d'injection de code (attaque sécurité)";
|
||||||
|
$nom = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($age) || $age == '' || !filter_var($age, FILTER_VALIDATE_INT)) {
|
||||||
|
$dVueEreur[] = "pas d'age ";
|
||||||
|
$age = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction qui nettoie une chaine de caractères
|
||||||
|
* @param string $str
|
||||||
|
* @return string Chaine valide
|
||||||
|
*/
|
||||||
|
public static function nettoyerString(string $str) : string{
|
||||||
|
$newstr = preg_replace('/\x00|<[^>]*>?/', '', $str);
|
||||||
|
return str_replace(["'", '"'], [''', '"'], $newstr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction qui valide si un entier est positif
|
||||||
|
* @param $int
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function validerIntPossitif($int){
|
||||||
|
return filter_var($int, FILTER_VALIDATE_INT, array("min_range"=>1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction qui verifie si un email est correct
|
||||||
|
* @param string $str
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function verifierEmail(string $str):bool{
|
||||||
|
return filter_var($str, FILTER_VALIDATE_EMAIL);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
//gen
|
||||||
|
$rep = __DIR__ . '/../';
|
||||||
|
|
||||||
|
// liste des modules à inclure
|
||||||
|
$dConfig['includes']= array('controleur/Validation.php');
|
||||||
|
|
||||||
|
//BD
|
||||||
|
$base = 'mysql:host=localhost;dbname=sae_test';
|
||||||
|
$login = 'root';
|
||||||
|
$mdp = '';
|
@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace controleur;
|
||||||
|
|
||||||
|
use config\Validation;
|
||||||
|
|
||||||
|
class AdminControleur extends ModerateurControleur
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
if (!isset($_REQUEST["action"])) {
|
||||||
|
$action = NULL;
|
||||||
|
} else {
|
||||||
|
$action = Validation::nettoyerString($_REQUEST["action"]);
|
||||||
|
}
|
||||||
|
switch ($action) {
|
||||||
|
case "supprimerCompte":
|
||||||
|
$this->supprimerCompte();
|
||||||
|
break;
|
||||||
|
case "consulterSignalement":
|
||||||
|
$this->consulterSignalement();
|
||||||
|
break;
|
||||||
|
case "creerEvenement":
|
||||||
|
$this->creerEvenement();
|
||||||
|
break;
|
||||||
|
case "supprimerEvenement":
|
||||||
|
$this->supprimerEvenement();
|
||||||
|
break;
|
||||||
|
case "supprimerOffre":
|
||||||
|
$this->supprimerOffre();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function supprimerCompte()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function consulterSignalement()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function creerEvenement()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function supprimerEvenement()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function supprimerOffre()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace controleur;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use config\Validation;
|
||||||
|
|
||||||
|
|
||||||
|
class FrontControleur
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
session_start();
|
||||||
|
$dVueErreur = [];
|
||||||
|
$actions = array(
|
||||||
|
"Admin" => [
|
||||||
|
"supprimerCompte", "consulterSignalement", "creerEvenement", "supprimerEvenement","supprimerOffre"
|
||||||
|
],
|
||||||
|
"Moderateur" => [
|
||||||
|
//TODO
|
||||||
|
],
|
||||||
|
"Membre" => [
|
||||||
|
"deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler"
|
||||||
|
],
|
||||||
|
"Utilisateur" => [
|
||||||
|
"connection", "inscription", "accueil","consulterProfilLimite"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
include 'modeles/TestGateway.php';
|
||||||
|
|
||||||
|
|
||||||
|
$action = Validation::nettoyerString($_GET["action"] ?? "");
|
||||||
|
if(in_array($action,$actions['Admin'])) {
|
||||||
|
if (!isset($_SESSION["role"]) || $_SESSION["role"]!="admin") {
|
||||||
|
$dVueErreur[] = 'Veuillez vous connecter';
|
||||||
|
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
|
||||||
|
} else{
|
||||||
|
new AdminControleur();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(in_array($action,$actions['Moderateur'])) {
|
||||||
|
if (!isset($_SESSION["role"]) || ($_SESSION["role"]!="moderateur" && $_SESSION["role"]!="admin")) {
|
||||||
|
$dVueErreur[] = 'Veuillez vous connecter';
|
||||||
|
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
|
||||||
|
} else{
|
||||||
|
new ModerateurControleur();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(in_array($action,$actions['Membre'])) {
|
||||||
|
if (!isset($_SESSION["login"])) {
|
||||||
|
$dVueErreur[] = 'Veuillez vous connecter';
|
||||||
|
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
|
||||||
|
} else{
|
||||||
|
new MembreControleur();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
new UtilisateurControleur();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace controleur;
|
||||||
|
|
||||||
|
use config\Validation;
|
||||||
|
|
||||||
|
class MembreControleur extends UtilisateurControleur
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
if (!isset($_REQUEST["action"])) {
|
||||||
|
$action = NULL;
|
||||||
|
} else {
|
||||||
|
$action = Validation::nettoyerString($_REQUEST["action"]);
|
||||||
|
}
|
||||||
|
switch ($action) {
|
||||||
|
case "deconnexion":
|
||||||
|
$this->deconnexion();
|
||||||
|
break;
|
||||||
|
case "proposerOffre":
|
||||||
|
$this->proposerOffre();
|
||||||
|
break;
|
||||||
|
case "consulterProfil":
|
||||||
|
$this->consulterProfil();
|
||||||
|
break;
|
||||||
|
case "modifierProfil":
|
||||||
|
$this->modifierProfil();
|
||||||
|
break;
|
||||||
|
case "signaler":
|
||||||
|
$this->signaler();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function deconnexion()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function proposerOffre()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function consulterProfil()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function modifierProfil()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function signaler()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace controleur;
|
||||||
|
|
||||||
|
use config\Validation;
|
||||||
|
|
||||||
|
class UtilisateurControleur
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
if (!isset($_REQUEST["action"])) {
|
||||||
|
$action = NULL;
|
||||||
|
} else {
|
||||||
|
$action = Validation::nettoyerString($_REQUEST["action"]);
|
||||||
|
}
|
||||||
|
switch ($action) {
|
||||||
|
case NULL:
|
||||||
|
case "accueil":
|
||||||
|
$this->accueil();
|
||||||
|
break;
|
||||||
|
case "connection":
|
||||||
|
$this->connection();
|
||||||
|
break;
|
||||||
|
case "inscription":
|
||||||
|
$this->inscription();
|
||||||
|
break;
|
||||||
|
case "consulterProfilLimite":
|
||||||
|
$this->consulterProfilLimite();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$dVueErreur[] ="Action inconnue ou non autorisée";
|
||||||
|
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function connection()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
echo $twig->render('connexion.html', []);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function inscription()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
echo $twig->render('inscription.html', []);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function accueil()
|
||||||
|
{
|
||||||
|
global $twig;
|
||||||
|
echo $twig->render('accueil.html', []);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function consulterProfilLimite()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,140 @@
|
|||||||
|
@import url(https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono&display=swap);
|
||||||
|
*{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: 'Poppins', sans-serif;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: #2f363e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container{
|
||||||
|
position: relative;
|
||||||
|
width: 350px;
|
||||||
|
min-height: 500px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: #2f363e;
|
||||||
|
box-shadow: 25px 25px 75px rgba(0,0,0,0.25),
|
||||||
|
10px 10px 70px rgba(0,0,0,0.25),
|
||||||
|
inset 5px 5px 10px rgba(0, 0, 0, 0.5),
|
||||||
|
inset 5px 5px 10px rgba(255, 255, 255, 0.2),
|
||||||
|
inset -5px -5px 15px rgba(0, 0, 0, 0.75);
|
||||||
|
border-radius: 30px;
|
||||||
|
padding: 50px;
|
||||||
|
}
|
||||||
|
form{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.container h3{
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 2em;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.container a:link {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.container a:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.container a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.container a:active {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.CadreInput
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.CadreInput span{
|
||||||
|
display: inline-block;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.75em;
|
||||||
|
border-left: 4px solid #fff;
|
||||||
|
padding-left: 4px;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
|
.CadreInput .box{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.CadreInput .box .icon{
|
||||||
|
position: relative;
|
||||||
|
min-width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #a50b12;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 1.15em;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.CadreInput .box input{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
padding: 10px 20px;
|
||||||
|
border-radius: 30px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.CadreInput .box input[type="submit"]{
|
||||||
|
background-color: #04070a;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
label{
|
||||||
|
color: #fff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
label input{
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.forgot{
|
||||||
|
color: #fff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
@import url(https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono&display=swap);
|
||||||
|
*{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: 'Poppins', sans-serif;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: #2f363e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container{
|
||||||
|
position: relative;
|
||||||
|
width: 350px;
|
||||||
|
min-height: 500px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: #2f363e;
|
||||||
|
box-shadow: 25px 25px 75px rgba(0,0,0,0.25),
|
||||||
|
10px 10px 70px rgba(0,0,0,0.25),
|
||||||
|
inset 5px 5px 10px rgba(0, 0, 0, 0.5),
|
||||||
|
inset 5px 5px 10px rgba(255, 255, 255, 0.2),
|
||||||
|
inset -5px -5px 15px rgba(0, 0, 0, 0.75);
|
||||||
|
border-radius: 30px;
|
||||||
|
padding: 50px;
|
||||||
|
}
|
||||||
|
form{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.container h3{
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 2em;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.CadreInput
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.CadreInput span{
|
||||||
|
display: inline-block;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.75em;
|
||||||
|
border-left: 4px solid #fff;
|
||||||
|
padding-left: 4px;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
|
.CadreInput .box{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.CadreInput .box .icon{
|
||||||
|
position: relative;
|
||||||
|
min-width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #a50b12;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 1.15em;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.CadreInput .box input{
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
padding: 10px 20px;
|
||||||
|
border-radius: 30px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.CadreInput .box input[type="submit"]{
|
||||||
|
background-color: #04070a;
|
||||||
|
box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.25),
|
||||||
|
inset 2px 2px 5px rgba(255, 255, 255, 0.25),
|
||||||
|
inset -3px -3px 5px rgba(0, 0, 0, 0.5);
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
label{
|
||||||
|
color: #fff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
label input{
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.forgot{
|
||||||
|
color: #fff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 0.85em;
|
||||||
|
}
|
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\gateway;
|
|
||||||
use PDO;
|
|
||||||
|
|
||||||
class Connection extends \PDO {
|
class Connection extends PDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Statement
|
* @var Statement
|
@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include 'dal/Gateway/GatewayAbstrait.php';
|
||||||
|
|
||||||
|
include 'metier/Alumni.php';
|
||||||
|
|
||||||
|
|
||||||
|
class AlumniGateway extends GatewayAbstrait{
|
||||||
|
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
parent::__construct($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertAlumni(string $mail, string $mdp, string $role){
|
||||||
|
try{
|
||||||
|
$query='INSERT INTO Alumni(mail,mdp,role) VALUES (:mail, :mdp, :role)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':mail' => array($mail, PDO::PARAM_STR),
|
||||||
|
':mdp' => array($mdp, PDO::PARAM_STR),
|
||||||
|
':role' => array($role, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function supprimeAlumni(string $id){
|
||||||
|
try{
|
||||||
|
$query='DELETE FROM Alumni WHERE id = (:id)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function modifieMdp(string $id,string $newMdp){
|
||||||
|
try{
|
||||||
|
$query='UPDATE ALumni SET mdp=(:mdp) WHERE id=(:id)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
':mdp' => array($newMdp, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function recupereAlumni(string $id){
|
||||||
|
try{
|
||||||
|
$query='SELECT * FROM Alumni WHERE id=(:id)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
$res = $this->con->getResults();
|
||||||
|
$a=new Alumni($res['id'],$res['mail'],$res['mdp'],$res['role']);
|
||||||
|
return $a;
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function recupereDataAlumni(){
|
||||||
|
try{
|
||||||
|
$query='SELECT * FROM Alumni';
|
||||||
|
$this->con->executeQuery($query);
|
||||||
|
$res = $this->con->getResults();
|
||||||
|
$AlumniArray = array();
|
||||||
|
foreach($res as $v){
|
||||||
|
$a=new Alumni($v['id'],$v['mail'],$v['mdp'],$v['role']);
|
||||||
|
array_push($AlumniArray,$a);
|
||||||
|
}
|
||||||
|
return $AlumniArray;
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class CompteGateway
|
||||||
|
{
|
||||||
|
private Connection $con;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $con
|
||||||
|
*/
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
$this->con = $con;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insert(string $email, string $pseudo, string $motDePasse){
|
||||||
|
$query='INSERT INTO Compte VALUES (:e, :p, :m)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR),
|
||||||
|
':p' => array($pseudo, PDO::PARAM_STR),
|
||||||
|
':m' => array($motDePasse, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateEmail(string $email, string $newEmail){
|
||||||
|
$query='UPDATE Compte SET email=:new WHERE email=:e';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR),
|
||||||
|
':new' => array($newEmail, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updatePseudo(string $email, string $pseudo){
|
||||||
|
$query='UPDATE Compte SET pseudo=:new WHERE email=:e';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR),
|
||||||
|
':new' => array($pseudo, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateMotDePasse(string $email, string $password){
|
||||||
|
$query='UPDATE Compte SET motDePasse=:new WHERE email=:e';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR),
|
||||||
|
':new' => array($password, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function delete(string $email){
|
||||||
|
$query='DELETE FROM Compte WHERE email=:e';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findByPseudo(string $pseudo){
|
||||||
|
$query = 'SELECT * FROM Compte WHERE pseudo=:p';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':p' => array($pseudo, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
$res=$this->con->getResults();
|
||||||
|
return new Compte($res[0]['email'],$res[0]['pseudo'],$res[0]['motDePasse']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findByEmail(string $email){
|
||||||
|
$query='SELECT * FROM Compte WHERE email=:e';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':e' => array($email, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
$res=$this->con->getResults();
|
||||||
|
return new Compte($res[0]['email'],$res[0]['pseudo'],$res[0]['motDePasse']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAll(){
|
||||||
|
$query='SELECT * FROM Compte';
|
||||||
|
$this->con->executeQuery($query);
|
||||||
|
$res=$this->con->getResults();
|
||||||
|
$array=[];
|
||||||
|
foreach($res as $r){
|
||||||
|
$array[]=new Compte($r['email'],$r['pseudo'],$r['motDePasse']);
|
||||||
|
}
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class EvenementGateway
|
||||||
|
{
|
||||||
|
private Connection $con;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $con
|
||||||
|
*/
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
$this->con = $con;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insert(){
|
||||||
|
$query='INSERT INTO Evenement VALUES ()';
|
||||||
|
$this->con->executeQuery($query, array());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
abstract class GatewayAbstrait{
|
||||||
|
protected Connection $con;
|
||||||
|
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
$this->con = $con;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class OffreGateway
|
||||||
|
{
|
||||||
|
private Connection $con;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $con
|
||||||
|
*/
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
$this->con = $con;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insert(){
|
||||||
|
$query='INSERT INTO Offre VALUES ()';
|
||||||
|
$this->con->executeQuery($query, array());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include 'dal/Gateway/GatewayAbstrait.php';
|
||||||
|
|
||||||
|
class ProfilGateway extends GatewayAbstrait{
|
||||||
|
|
||||||
|
public function __construct(Connection $con){
|
||||||
|
$this->con = $con;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insererProfil(string $email,string $alumni,string $cv, string $nom,string $prenom,string $linkedin,string $github,string $portfolio){
|
||||||
|
try{
|
||||||
|
$query='INSERT INTO Profil(id,alumni,email,cv,nom,prenom,linkedin_url,github_url,portfolio_url) VALUES (:id,:alumni,:email,:cv,:nom,:prenom,:linkedin_url,github_url,portfolio_url)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
':alumni' => array($alumni, PDO::PARAM_STR),
|
||||||
|
':cv' => array($cv, PDO::PARAM_STR),
|
||||||
|
':nom' => array($nom, PDO::PARAM_STR),
|
||||||
|
':prenom' => array($prenom, PDO::PARAM_STR),
|
||||||
|
':linkedin_url' => array($linkedin, PDO::PARAM_STR),
|
||||||
|
':github_url' => array($github, PDO::PARAM_STR),
|
||||||
|
':portfolio_url' => array($portfolio, PDO::PARAM_STR),
|
||||||
|
':email' => array($email, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function supprimeAlumni(string $id){
|
||||||
|
try{
|
||||||
|
$query='DELETE FROM Profil WHERE id = (:id)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function editAlumni(string $id,string $email,string $alumni,string $cv, string $nom,string $prenom,string $linkedin,string $github,string $portfolio){
|
||||||
|
try{
|
||||||
|
supprimeAlumni($id);
|
||||||
|
insererProfil($email,$alumni,$cv,$nom,$prenom,$linkedin,$github,$portfolio);
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function recupereProfil(string $id){
|
||||||
|
try{
|
||||||
|
$query='SELECT * FROM Profil WHERE id=(:id)';
|
||||||
|
$this->con->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_STR),
|
||||||
|
));
|
||||||
|
$res = $this->con->getResults();
|
||||||
|
return new Profil($res['id'],$res['alumni'],$res['email'],$res['cv'],$res['nom'],$res['prenom'],$res['linkedin_url'],$res['github_url'],$res['portfolio_url']);
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function recupereDataProfil(){
|
||||||
|
try{
|
||||||
|
$query='SELECT * FROM Alumni';
|
||||||
|
$this->con->executeQuery($query);
|
||||||
|
$res = $this->con->getResults();
|
||||||
|
$AlumniArray = array();
|
||||||
|
foreach($res as $v){
|
||||||
|
$a=new Profil($v['id'],$v['alumni'],$v['email'],$v['cv'],$v['nom'],$v['prenom'],$v['linkedin_url'],$v['github_url'],$v['portfolio_url']);
|
||||||
|
array_push($AlumniArray,$a);
|
||||||
|
}
|
||||||
|
return $AlumniArray;
|
||||||
|
} catch(PDOException $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
} catch (Exception $Exception){
|
||||||
|
require 'vues/erreur.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -1,22 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
/** PC IUT - PHP 8.1 */
|
/** PC IUT - PHP 8.1 */
|
||||||
|
|
||||||
/** Chargement config */
|
/** Chargement config */
|
||||||
|
require_once __DIR__ . '/config/config.php';
|
||||||
require_once __DIR__ . '/src/config/config.php';
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
require __DIR__ . '/vendor/autoload.php';
|
use controleur\FrontControleur;
|
||||||
|
|
||||||
|
/** Configuration twig */
|
||||||
/** Configuration twig */
|
$loader = new \Twig\Loader\FilesystemLoader('vues');
|
||||||
$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/templates');
|
$twig = new \Twig\Environment($loader, [
|
||||||
$twig = new \Twig\Environment($loader, [
|
'cache' => false,
|
||||||
'cache' => false,
|
'debug' => true
|
||||||
'debug' => true
|
]);
|
||||||
]);
|
|
||||||
$twig->addExtension(new \Twig\Extension\DebugExtension());
|
$cont = new \controleur\FrontControleur();
|
||||||
$twig->addGlobal('dir', '/SAE_2A_FA-Reseau_ALICA/php');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$cont = new \App\controleur\FrontControleur();
|
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Alumni{
|
||||||
|
|
||||||
|
private string $id;
|
||||||
|
private string $mail;
|
||||||
|
private string $mdp;
|
||||||
|
private string $role;
|
||||||
|
|
||||||
|
public function __construct($id,$mail,$mdp,$role){
|
||||||
|
$this->id=$id;
|
||||||
|
$this->mail=$mail;
|
||||||
|
$this->mdp=$mdp;
|
||||||
|
$this->role=$role;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Compte{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Pseudo
|
||||||
|
*/
|
||||||
|
private string $pseudo;
|
||||||
|
/**
|
||||||
|
* @var string Email
|
||||||
|
*/
|
||||||
|
private string $email;
|
||||||
|
/**
|
||||||
|
* @var string Mot de passe
|
||||||
|
*/
|
||||||
|
private string $motDePasse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $pseudo
|
||||||
|
* @param string $email
|
||||||
|
* @param string $motDePasse
|
||||||
|
*/
|
||||||
|
public function __construct(string $pseudo, string $email, string $motDePasse)
|
||||||
|
{
|
||||||
|
$this->pseudo = $pseudo;
|
||||||
|
$this->email = $email;
|
||||||
|
$this->motDePasse = $motDePasse;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPseudonyme() : string
|
||||||
|
{
|
||||||
|
return $this->pseudo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEmail() : string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMotDePasse(): string
|
||||||
|
{
|
||||||
|
return $this->motDePasse;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Evenement
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string Nom Evènement
|
||||||
|
*/
|
||||||
|
private string $nameEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string date Evenement
|
||||||
|
*/
|
||||||
|
private string $date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Compte Organisateur
|
||||||
|
*/
|
||||||
|
private Compte $organisator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array Liste des Participants
|
||||||
|
*/
|
||||||
|
private array $participants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $nameEvent
|
||||||
|
* @param string $date
|
||||||
|
* @param Compte $organisator
|
||||||
|
* @param array $participants
|
||||||
|
*/
|
||||||
|
public function __construct(string $nameEvent,string $date,Compte $organisator,
|
||||||
|
array $participants)
|
||||||
|
{
|
||||||
|
$this->nameEvent = $nameEvent;
|
||||||
|
$this->date = $date;
|
||||||
|
$this->organisator = $organisator;
|
||||||
|
$this->participants = $participants;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNameEvent() : string
|
||||||
|
{
|
||||||
|
return $this->nameEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDateEvent() : string
|
||||||
|
{
|
||||||
|
return $this->date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getParticipants() : array
|
||||||
|
{
|
||||||
|
return $this->participants;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Offre
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string intitulé de l'offre
|
||||||
|
*/
|
||||||
|
private string $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string Entreprise de l'offre
|
||||||
|
*/
|
||||||
|
private string $company;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Compte recruteur
|
||||||
|
*/
|
||||||
|
private Compte $recruiter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string description de l'offre
|
||||||
|
*/
|
||||||
|
private string $description;
|
||||||
|
|
||||||
|
public function __construct(string $offername,string $offercompany,
|
||||||
|
string $offermanager,string $description)
|
||||||
|
{
|
||||||
|
$this->name = $offername;
|
||||||
|
$this->company = $offercompany;
|
||||||
|
$this->recruiter = $offermanager;
|
||||||
|
$this->description = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getName(): string
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompany(): string
|
||||||
|
{
|
||||||
|
return $this->company;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Compte|string
|
||||||
|
*/
|
||||||
|
public function getRecruiter(): Compte|string
|
||||||
|
{
|
||||||
|
return $this->recruiter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return $this->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Alumni{
|
||||||
|
|
||||||
|
private string $id;
|
||||||
|
private string $alumni;
|
||||||
|
private string $email;
|
||||||
|
private string $cv;
|
||||||
|
private string $nom;
|
||||||
|
private string $prenom;
|
||||||
|
private string $linkedin;
|
||||||
|
private string $github;
|
||||||
|
private string $portfolio;
|
||||||
|
|
||||||
|
public function __construct($id,$alumni,$email,$cv,$prenom,$linkedin,$github,$portfolio){
|
||||||
|
$this->id=$id;
|
||||||
|
$this->alumni=$alumni;
|
||||||
|
$this->email=$email;
|
||||||
|
$this->cv=$cv;
|
||||||
|
$this->nom=$nom;
|
||||||
|
$this->prenom=$prenom;
|
||||||
|
$this->linkedin=$linkedin;
|
||||||
|
$this->github=$github;
|
||||||
|
$this->portfolio=$portfolio;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace modeles;
|
||||||
|
|
||||||
|
class AdminModele extends MembreModele
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @description supprimer un compte
|
||||||
|
* @param \Compte $account compte à supprimer
|
||||||
|
*/
|
||||||
|
public function deleteAccount(\Compte $account)
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description obtenir la liste des signalements
|
||||||
|
* @return array des signalements
|
||||||
|
*/
|
||||||
|
public function LoadReports() : array
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description supprimer une offre spécifique
|
||||||
|
* @param \Offre $offer offre à supprimer
|
||||||
|
*/
|
||||||
|
public function deleteOffer(\Offre $offer)
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description créer un évènement
|
||||||
|
* @return \Evenement évènement créé
|
||||||
|
*/
|
||||||
|
public function createEvent() : \Evenement
|
||||||
|
{
|
||||||
|
$event = new \Evenement("","",null);
|
||||||
|
// TO DO
|
||||||
|
|
||||||
|
return $event;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description suppression d'un évènement
|
||||||
|
* @param \Evenement $event évènement à supprimer
|
||||||
|
*/
|
||||||
|
public function deleteEvent(\Evenement $event)
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description obtenir la liste de tous les utilisateurs
|
||||||
|
* @return array liste de tous les utilisateurs
|
||||||
|
*/
|
||||||
|
public function getUserList() : array
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace modeles;
|
||||||
|
|
||||||
|
class MembreModele extends UtilisateurModele
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description modifier photo de profil
|
||||||
|
*/
|
||||||
|
public function updateProfilPhoto() : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description ajouter formation
|
||||||
|
*/
|
||||||
|
public function addFormation() : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description modifier formation
|
||||||
|
*/
|
||||||
|
public function updateFormation() : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description ajouter Experience
|
||||||
|
*/
|
||||||
|
public function addExperience() : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description modifier experience
|
||||||
|
*/
|
||||||
|
public function updateExpereience() : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description changer mot de passe
|
||||||
|
* @param string $oldHash ancien hash
|
||||||
|
* @param string $newHash nouveau hash
|
||||||
|
*/
|
||||||
|
public function updatePasswd(string $oldHash,string $newHash) : bool
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace modeles;
|
||||||
|
|
||||||
|
class ModerateurControleur
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*include 'dal/gateway/Random.php';
|
||||||
|
|
||||||
|
$r=new Random(9);*/
|
||||||
|
|
||||||
|
|
||||||
|
include 'dal/Connection.php';
|
||||||
|
|
||||||
|
include 'dal/gateway/AlumniGateway.php';
|
||||||
|
include 'dal/gateway/ProfilGateway.php';
|
||||||
|
|
||||||
|
include 'config/config.php';
|
||||||
|
|
||||||
|
|
||||||
|
$co=new Connection($base,$login,$mdp);
|
||||||
|
$gat = new ProfilGateway($co);
|
||||||
|
//$gat->insertAlumni('faa','fua','fia');
|
||||||
|
//$gat->deleteAlumni(13);
|
||||||
|
|
||||||
|
/*$gat->modifieMdp(10,'Bwaaa');
|
||||||
|
*/
|
||||||
|
//$gat->recupereAlumni(10);
|
||||||
|
//$gat->recupereDataAlumni();
|
||||||
|
|
||||||
|
?>
|
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
namespace modeles;
|
||||||
|
|
||||||
|
class UtilisateurModele
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @description Charger le flux d'activiter
|
||||||
|
* @return array flux
|
||||||
|
*/
|
||||||
|
public function LoadFeed() : array
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description se connecter
|
||||||
|
* @param string email
|
||||||
|
* @param string hash
|
||||||
|
* @return \Compte
|
||||||
|
*/
|
||||||
|
public function Login(string $email,string $hash) : \Compte
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return new \Compte(null,null,null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description s'inscrire
|
||||||
|
* @param string email
|
||||||
|
* @param string hash
|
||||||
|
* @param string $pseudo
|
||||||
|
* @return \Compte chargé
|
||||||
|
*/
|
||||||
|
public function signIn(string $email,string $pseudo,string $hash) : \Compte
|
||||||
|
{
|
||||||
|
// TO DO
|
||||||
|
return new Compte(null,null,null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Before Width: | Height: | Size: 842 KiB |
Before Width: | Height: | Size: 333 B |
Before Width: | Height: | Size: 226 KiB |
Before Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 515 B |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 657 B |
@ -1,54 +0,0 @@
|
|||||||
/* styles.css */
|
|
||||||
|
|
||||||
/* Reset CSS pour normaliser le rendu sur tous les navigateurs */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
background-color: #f8f9fa;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.div_titres {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.div_titres a {
|
|
||||||
width: 20%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.div_titres h1 {
|
|
||||||
width: 50%;
|
|
||||||
color: #00DBFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.div_titres a img {
|
|
||||||
margin-left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
color: #00DBFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-top: 20px;
|
|
||||||
padding: 15px;
|
|
||||||
border: 1px solid #dee2e6;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
@ -1,102 +0,0 @@
|
|||||||
.three-body {
|
|
||||||
--uib-size: 500px;
|
|
||||||
--uib-speed: 0.8s;
|
|
||||||
--uib-color: #00DBFF;
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
height: var(--uib-size);
|
|
||||||
width: var(--uib-size);
|
|
||||||
animation: spin78236 calc(var(--uib-speed) * 2.5) infinite linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot {
|
|
||||||
position: absolute;
|
|
||||||
height: 100%;
|
|
||||||
width: 30%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
height: 0;
|
|
||||||
width: 100%;
|
|
||||||
padding-bottom: 100%;
|
|
||||||
background-color: var(--uib-color);
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(1) {
|
|
||||||
bottom: 5%;
|
|
||||||
left: 0;
|
|
||||||
transform: rotate(60deg);
|
|
||||||
transform-origin: 50% 85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(1)::after {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
animation: wobble1 var(--uib-speed) infinite ease-in-out;
|
|
||||||
animation-delay: calc(var(--uib-speed) * -0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(2) {
|
|
||||||
bottom: 5%;
|
|
||||||
right: 0;
|
|
||||||
transform: rotate(-60deg);
|
|
||||||
transform-origin: 50% 85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(2)::after {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
animation: wobble1 var(--uib-speed) infinite
|
|
||||||
calc(var(--uib-speed) * -0.15) ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(3) {
|
|
||||||
bottom: -5%;
|
|
||||||
left: 0;
|
|
||||||
transform: translateX(116.666%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.three-body__dot:nth-child(3)::after {
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
animation: wobble2 var(--uib-speed) infinite ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin78236 {
|
|
||||||
0% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes wobble1 {
|
|
||||||
0%,
|
|
||||||
100% {
|
|
||||||
transform: translateY(0%) scale(1);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
transform: translateY(-66%) scale(0.65);
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes wobble2 {
|
|
||||||
0%,
|
|
||||||
100% {
|
|
||||||
transform: translateY(0%) scale(1);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
transform: translateY(66%) scale(0.65);
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,148 +0,0 @@
|
|||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
padding: 0 2rem;
|
|
||||||
width: 100%;
|
|
||||||
height: 70px;
|
|
||||||
background: #fff;
|
|
||||||
color: #212121;
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .logo-container a {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: 500;
|
|
||||||
font-family: 'Kanit', sans-serif;
|
|
||||||
text-transform: uppercase;
|
|
||||||
cursor: pointer;
|
|
||||||
color: #212121;
|
|
||||||
max-height: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 3rem;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .nav-link a {
|
|
||||||
color: #212121;
|
|
||||||
padding: 10px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
transition: 0.2s;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .nav-link:after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
border-top: 3px solid #00DBFF;
|
|
||||||
transform: scaleX(0);
|
|
||||||
transition: transform 250ms ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .nav-link:hover:after {
|
|
||||||
transform: scaleX(0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
gap: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register .button {
|
|
||||||
color: #00DBFF;
|
|
||||||
padding: 5px 20px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: #fff 2px solid;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register .button2{
|
|
||||||
background: #00DBFF;
|
|
||||||
color: #fff;
|
|
||||||
border-radius: 15px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register .button:hover {
|
|
||||||
border: #00DBFF 2px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register .button2:hover {
|
|
||||||
border: #00A4FF 2px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media(max-width: 1030px) {
|
|
||||||
.navbar-container {
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items {
|
|
||||||
gap: 0.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .nav-link a,
|
|
||||||
.navbar-container .nav-items .login-register .button {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media(max-width: 915px) {
|
|
||||||
.navbar-container .nav-items {
|
|
||||||
flex-direction: column;
|
|
||||||
position: fixed;
|
|
||||||
top: 70px;
|
|
||||||
right: -100%;
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
padding: 1rem 0;
|
|
||||||
z-index: 99;
|
|
||||||
background: #fff;
|
|
||||||
transition: 0.2s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bars {
|
|
||||||
width: 22px;
|
|
||||||
height: auto;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bars .bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 2px;
|
|
||||||
background: #212121;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items {
|
|
||||||
gap: 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register {
|
|
||||||
width: 50%;
|
|
||||||
text-align: center;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items .login-register .button {
|
|
||||||
padding: 1rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-container .nav-items.active {
|
|
||||||
right: 0;
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
|
|
||||||
img
|
|
||||||
{
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body{
|
|
||||||
margin: 0;
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#titleDiv
|
|
||||||
{
|
|
||||||
background-image:url('../assets/deb.webp');
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
background-position: center;
|
|
||||||
color :white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#title p
|
|
||||||
{
|
|
||||||
background-color: grey;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#title
|
|
||||||
{
|
|
||||||
font-size: 20px;
|
|
||||||
padding: 20px;
|
|
||||||
height: 70%;
|
|
||||||
align-items: center;
|
|
||||||
color: white;
|
|
||||||
background-color: #00DBFF;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#key {
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
#key p
|
|
||||||
{
|
|
||||||
background-color: grey;
|
|
||||||
border-radius: 3px;
|
|
||||||
padding:10%;
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
.offre-container {
|
|
||||||
margin-bottom: 5%;
|
|
||||||
}
|
|
||||||
.offre-img {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#titrePrincipal {
|
|
||||||
padding-bottom: 10px;
|
|
||||||
border-bottom: 1px solid black;
|
|
||||||
margin-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-button {
|
|
||||||
background-color: #7fb4bd;
|
|
||||||
border-color: #7fb4bd;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row1
|
|
||||||
{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.row1 h4
|
|
||||||
{
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
.row1 img
|
|
||||||
{
|
|
||||||
width: 20%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.authorDate
|
|
||||||
{
|
|
||||||
color: #00DBFF;
|
|
||||||
margin: 1%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row3 {
|
|
||||||
width: 30%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.row3 img {
|
|
||||||
align-self: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
a{
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.current{
|
|
||||||
|
|
||||||
border-bottom: 1px solid black;
|
|
||||||
}
|
|
@ -1,122 +0,0 @@
|
|||||||
/* profil.css */
|
|
||||||
.profiles-container {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
gap: 20px;
|
|
||||||
padding: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile {
|
|
||||||
width: calc(50% - 20px); /* Ajustez la largeur si nécessaire pour correspondre au design */
|
|
||||||
border: 1px solid #ccc; /* Bordure comme dans l'image */
|
|
||||||
border-radius: 10px;
|
|
||||||
overflow: hidden;
|
|
||||||
background: #fff;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center; /* Alignement vertical */
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-image-container {
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background: #f0f0f0;
|
|
||||||
flex-shrink: 0; /* Empêche le conteneur de rétrécir */
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-image-container img {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-details {
|
|
||||||
padding: 10px;
|
|
||||||
flex-grow: 1; /* Permet à ce div de prendre l'espace restant */
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-details p {
|
|
||||||
margin: 5px 0;
|
|
||||||
font-weight: bold; /* Texte en gras comme dans l'image */
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-details .job-title {
|
|
||||||
color: #007bff;
|
|
||||||
font-size: 0.85em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-details a {
|
|
||||||
display: block; /* Prend toute la largeur du conteneur */
|
|
||||||
background: #007bff;
|
|
||||||
color: #fff;
|
|
||||||
padding: 5px 15px;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-top: 10px; /* Espace au-dessus du lien */
|
|
||||||
text-align: center; /* Centre le texte dans le lien */
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-details a:hover {
|
|
||||||
background: #0056b3;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* profil.css */
|
|
||||||
.pagination {
|
|
||||||
display: flex;
|
|
||||||
padding-left: 0;
|
|
||||||
list-style: none;
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-link {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
padding: 0.5rem 0.75rem;
|
|
||||||
margin-left: -1px;
|
|
||||||
line-height: 1.25;
|
|
||||||
color: #007bff;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1px solid #dee2e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-link:hover {
|
|
||||||
color: #0056b3;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #e9ecef;
|
|
||||||
border-color: #dee2e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-item:first-child .page-link {
|
|
||||||
margin-left: 0;
|
|
||||||
border-top-left-radius: 0.25rem;
|
|
||||||
border-bottom-left-radius: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-item:last-child .page-link {
|
|
||||||
border-top-right-radius: 0.25rem;
|
|
||||||
border-bottom-right-radius: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-item.active .page-link {
|
|
||||||
z-index: 1;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #007bff;
|
|
||||||
border-color: #007bff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-item.disabled .page-link {
|
|
||||||
color: #6c757d;
|
|
||||||
pointer-events: none;
|
|
||||||
cursor: auto;
|
|
||||||
background-color: #fff;
|
|
||||||
border-color: #dee2e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 2.5 MiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 467 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 2.5 MiB |
Before Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 8.8 KiB |