Compare commits
98 Commits
Author | SHA1 | Date |
---|---|---|
Thomas MUZARD | c60f579a25 | 1 year ago |
Clément Verdoire | 776993ce23 | 1 year ago |
Baptiste D | 4c3e3571a9 | 1 year ago |
Baptiste D | 1d3486d9ba | 1 year ago |
Baptiste D | 02048befd8 | 1 year ago |
thomas muzard | 13eb6be744 | 1 year ago |
Baptiste D | e6f5518ebc | 1 year ago |
Baptiste D | 03371c34ad | 1 year ago |
Clément Verdoire | 941296e44c | 1 year ago |
Clément Verdoire | 60dff089bb | 1 year ago |
Baptiste D | ef2ff36190 | 1 year ago |
Baptiste D | 132d41e1db | 1 year ago |
Clément Verdoire | 9176e6cb03 | 1 year ago |
Clément Verdoire | 14479cf2a3 | 1 year ago |
Clément Verdoire | 39bae853c9 | 1 year ago |
Baptiste D | 9271f53d47 | 1 year ago |
Clément Verdoire | 4031f71acb | 1 year ago |
Baptiste D | 406cde7784 | 1 year ago |
Baptiste D | cebb1aac3a | 1 year ago |
Baptiste D | 6aa6dabb26 | 1 year ago |
Leo TUAILLON | 3d0267bb61 | 1 year ago |
Leo TUAILLON | 849663f143 | 1 year ago |
Clément Verdoire | 1e4aaf41b8 | 1 year ago |
Leo TUAILLON | a2f805cba2 | 1 year ago |
Leo TUAILLON | ce5fb022b9 | 1 year ago |
Leo TUAILLON | b5d91b5ac3 | 1 year ago |
Baptiste D | a32a224099 | 1 year ago |
Baptiste D | 090bb42cbd | 1 year ago |
Clément Verdoire | 7f85096c7b | 1 year ago |
Baptiste D | 43729cfd59 | 1 year ago |
Leo TUAILLON | ed00c99894 | 1 year ago |
Leo TUAILLON | bc1f77c054 | 1 year ago |
Leo TUAILLON | 4ee484b938 | 1 year ago |
Leo TUAILLON | f2cea0d18d | 1 year ago |
Leo Tuaillon | a1a1ae6ecb | 1 year ago |
Leo Tuaillon | e208694186 | 1 year ago |
Baptiste DUDONNE | 1ab3ffebf1 | 1 year ago |
Baptiste D | 6d5cc2e436 | 1 year ago |
Baptiste D | 5bd82f523a | 1 year ago |
Leo Tuaillon | 8a26f49de3 | 1 year ago |
Alexis Feron | b6e103465a | 1 year ago |
Baltazouu | e2b6319438 | 1 year ago |
Baltazouu | 9a151f87de | 1 year ago |
Baltazouu | 44414d4a95 | 1 year ago |
Baltazouu | f001193e66 | 1 year ago |
Baltazouu | 06799359ba | 1 year ago |
Baltazouu | 7d5ece1532 | 1 year ago |
Baltazouu | b7a820f49d | 1 year ago |
Leo Tuaillon | a92e9d4f1d | 1 year ago |
Baptiste D | 8e3e130f93 | 1 year ago |
Leo Tuaillon | be622c2be6 | 1 year ago |
Leo TUAILLON | a0a4f139e4 | 1 year ago |
Clément Verdoire | 28c2d704c8 | 1 year ago |
Clément Verdoire | a2a4f2006e | 1 year ago |
Baptiste D | ec76db2afc | 1 year ago |
Clément Verdoire | f1b6110bd5 | 1 year ago |
Alexis FERON | 7f7af15d51 | 1 year ago |
Alexis FERON | e71d839e33 | 1 year ago |
Baptiste D | 803f898499 | 1 year ago |
Baptiste D | 297c59b5ff | 1 year ago |
Leo Tuaillon | e9afe5fbb0 | 1 year ago |
Leo Tuaillon | d9ea1e83b7 | 1 year ago |
Baptiste D | fe8fcca368 | 1 year ago |
Baptiste D | fd7bdac0ae | 1 year ago |
Baptiste D | 44416aebce | 1 year ago |
Baptiste D | 5bf45c24b4 | 1 year ago |
Baptiste D | 2f2b7b7ed7 | 1 year ago |
Baptiste D | 265d12d88f | 1 year ago |
Baptiste D | e32653bace | 1 year ago |
Baptiste D | 3e12d5be53 | 1 year ago |
Baltazouu | b27f5f5e98 | 1 year ago |
Baltazouu | 4bbdc49669 | 1 year ago |
Baptiste D | 1dace622eb | 1 year ago |
Baptiste D | 04cfe69e03 | 1 year ago |
Baptiste D | 078be2a262 | 1 year ago |
Baptiste D | 51d4223a09 | 1 year ago |
Baptiste D | 4bc8b49b31 | 1 year ago |
Baptiste D | ec5c68db48 | 1 year ago |
Baptiste D | ce81b7af42 | 1 year ago |
Baptiste Dudonné | 1608d3f17d | 1 year ago |
Clément Verdoire | 1b0f96ac9e | 1 year ago |
Clément Verdoire | ceede5dfde | 1 year ago |
Leo Tuaillon | 206e3ef580 | 1 year ago |
Clément VERDOIRE | 39f89f0b4e | 1 year ago |
Clément VERDOIRE | 80ca88b7ea | 1 year ago |
Clément Verdoire | 58b4a8b01c | 1 year ago |
Clément Verdoire | adaed2b23a | 1 year ago |
Clément VERDOIRE | 02f75caa55 | 1 year ago |
Clément VERDOIRE | cf50341780 | 1 year ago |
Clément Verdoire | f555b307f8 | 1 year ago |
Clément VERDOIRE | 32b92c325c | 1 year ago |
Clément Verdoire | 2be9ba66f2 | 1 year ago |
Leo Tuaillon | a9afecf68a | 1 year ago |
Leo Tuaillon | 959b9cf0d0 | 1 year ago |
Leo TUAILLON | f6ef3626c1 | 1 year ago |
Leo Tuaillon | 7772e9da45 | 1 year ago |
Leo Tuaillon | ca79f102cf | 1 year ago |
thomas muzard | 68bdbc2afe | 1 year ago |
@ -0,0 +1,441 @@
|
|||||||
|
##### 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/
|
@ -0,0 +1,6 @@
|
|||||||
|
<?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>
|
After Width: | Height: | Size: 100 KiB |
@ -0,0 +1,11 @@
|
|||||||
|
#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]
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
@ -0,0 +1,8 @@
|
|||||||
|
<?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>
|
@ -0,0 +1,14 @@
|
|||||||
|
<?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>
|
@ -0,0 +1,30 @@
|
|||||||
|
<?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>
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"twig/twig": "^3.0"
|
"twig/twig": "^3.0",
|
||||||
|
"twig/extensions": "^1.5",
|
||||||
|
"ext-pdo": "*",
|
||||||
|
"ext-fileinfo": "*"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"controleur\\": "controleur/",
|
"App\\": "src/"
|
||||||
"config\\": "config/",
|
|
||||||
"modeles\\": "modeles/"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
<?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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
//gen
|
|
||||||
$rep = __DIR__ . '/../';
|
|
||||||
|
|
||||||
// liste des modules à inclure
|
|
||||||
$dConfig['includes']= array('controleur/Validation.php');
|
|
||||||
|
|
||||||
//BD
|
|
||||||
$base = '';
|
|
||||||
$login = '';
|
|
||||||
$mdp = '';
|
|
@ -1,62 +0,0 @@
|
|||||||
<?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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
<?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"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
$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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
<?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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
<?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
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,83 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
class AlumniGateway
|
|
||||||
{
|
|
||||||
private Connection $con;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $con
|
|
||||||
*/
|
|
||||||
public function __construct(Connection $con){
|
|
||||||
$this->con = $con;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function insert(string $email, int $id, string $motDePasse, Role $role){
|
|
||||||
$query='INSERT INTO Alumni VALUES (:i, :e, :m, :r)';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT),
|
|
||||||
':e' => array($email, PDO::PARAM_STR),
|
|
||||||
':m' => array($motDePasse, PDO::PARAM_STR),
|
|
||||||
':r' => array($role, PDO::PARAM_STR)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateEmail(int $id, string $newEmail){
|
|
||||||
$query='UPDATE Alumni SET email=:new WHERE id=:i';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT),
|
|
||||||
':new' => array($newEmail, PDO::PARAM_STR)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateMotDePasse(int $id, string $password){
|
|
||||||
$query='UPDATE Alumni SET motDePasse=:new WHERE id=:i';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT),
|
|
||||||
':new' => array($password, PDO::PARAM_STR)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateRole(int $id, Role $newRole){
|
|
||||||
$query='UPDATE Alumni SET role=:new WHERE id=:i';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT),
|
|
||||||
':new' => array($newRole, PDO::PARAM_STR)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function delete(int $id){
|
|
||||||
$query='DELETE FROM Alumni WHERE id=:i';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function findById(int $id){
|
|
||||||
$query = 'SELECT * FROM Alumni WHERE id=:i';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':i' => array($id, PDO::PARAM_INT)
|
|
||||||
));
|
|
||||||
$res=$this->con->getResults();
|
|
||||||
return new Alumni($res[0]['mail'],$res[0]['id'],$res[0]['mdp'],$res[0]['role']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function findByEmail(string $email){
|
|
||||||
$query='SELECT * FROM Alumni WHERE email=:e';
|
|
||||||
$this->con->executeQuery($query, array(
|
|
||||||
':e' => array($email, PDO::PARAM_STR),
|
|
||||||
));
|
|
||||||
$res=$this->con->getResults();
|
|
||||||
return new Alumni($res[0]['mail'],$res[0]['id'],$res[0]['mdp'],$res[0]['role']);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getAll(){
|
|
||||||
$query='SELECT * FROM Alumni';
|
|
||||||
$this->con->executeQuery($query);
|
|
||||||
$res=$this->con->getResults();
|
|
||||||
$array=[];
|
|
||||||
foreach($res as $r){
|
|
||||||
$array[]=new Alumni($r['mail'],$r['id'],$r['mdp'],$r['role']);
|
|
||||||
}
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
<?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());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
<?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());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
enum Role
|
|
||||||
{
|
|
||||||
case Admin;
|
|
||||||
case Moderateur;
|
|
||||||
case Utilisateur;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Alumni{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var int Identifiant
|
|
||||||
*/
|
|
||||||
private int $id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Email
|
|
||||||
*/
|
|
||||||
private string $email;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Mot de passe
|
|
||||||
*/
|
|
||||||
private string $motDePasse;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Role Role
|
|
||||||
*/
|
|
||||||
private Role $role;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $id
|
|
||||||
* @param string $email
|
|
||||||
* @param string $motDePasse
|
|
||||||
* @param Role $role
|
|
||||||
*/
|
|
||||||
public function __construct(int $id, string $email, string $motDePasse, Role $role)
|
|
||||||
{
|
|
||||||
$this->id = $id;
|
|
||||||
$this->email = $email;
|
|
||||||
$this->motDePasse = $motDePasse;
|
|
||||||
$this->role = $role;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getId() : string
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getEmail() : string
|
|
||||||
{
|
|
||||||
return $this->email;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getMotDePasse(): string
|
|
||||||
{
|
|
||||||
return $this->motDePasse;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getRole(): Role
|
|
||||||
{
|
|
||||||
return $this->role;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,94 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
class Evenement
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var int Identifiant
|
|
||||||
*/
|
|
||||||
private int $id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Nom Evenement
|
|
||||||
*/
|
|
||||||
private string $nom;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Date de l'evenement
|
|
||||||
*/
|
|
||||||
private string $date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Alumni Organisateur
|
|
||||||
*/
|
|
||||||
private Alumni $organisateur;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var array Liste des Participants
|
|
||||||
*/
|
|
||||||
private array $participants;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var int Nombre maximal d'inscrits
|
|
||||||
*/
|
|
||||||
private int $nbInscriptionMax;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Url de l'image
|
|
||||||
*/
|
|
||||||
private string $imageUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $id
|
|
||||||
* @param string $nom
|
|
||||||
* @param string $date
|
|
||||||
* @param Alumni $organisateur
|
|
||||||
* @param array $participants
|
|
||||||
* @param int $nbInscriptionMax
|
|
||||||
* @param string $imageUrl
|
|
||||||
*/
|
|
||||||
public function __construct(int $id, string $nom, string $date, Alumni $organisateur, array $participants, int $nbInscriptionMax, string $imageUrl)
|
|
||||||
{
|
|
||||||
$this->id = $id;
|
|
||||||
$this->nom = $nom;
|
|
||||||
$this->date = $date;
|
|
||||||
$this->organisateur = $organisateur;
|
|
||||||
$this->participants = $participants;
|
|
||||||
$this->nbInscriptionMax = $nbInscriptionMax;
|
|
||||||
$this->imageUrl = $imageUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getId(): int
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNom() : string
|
|
||||||
{
|
|
||||||
return $this->nom;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDate() : string
|
|
||||||
{
|
|
||||||
return $this->date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParticipants() : array
|
|
||||||
{
|
|
||||||
return $this->participants;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOrganisateur(): Alumni
|
|
||||||
{
|
|
||||||
return $this->organisateur;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNbInscriptionMax(): int
|
|
||||||
{
|
|
||||||
return $this->nbInscriptionMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getImageUrl(): string
|
|
||||||
{
|
|
||||||
return $this->imageUrl;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,213 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
enum TypeContrat
|
|
||||||
{
|
|
||||||
case CDI;
|
|
||||||
case CDD;
|
|
||||||
case Alternance;
|
|
||||||
case Stage;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ProfilRecherche
|
|
||||||
{
|
|
||||||
case Junior;
|
|
||||||
case Senior;
|
|
||||||
case Indifferent;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum NiveauEtudes: string
|
|
||||||
{
|
|
||||||
case Bac2 = "Bac+2";
|
|
||||||
case Bac3 = "Bac+3";
|
|
||||||
case Bac5 = "Bac+5";
|
|
||||||
case Indifferent = "Indifferent";
|
|
||||||
}
|
|
||||||
|
|
||||||
class Offre
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @var int Identifiant
|
|
||||||
*/
|
|
||||||
private int $id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Alumni Offreur
|
|
||||||
*/
|
|
||||||
private Alumni $offreur;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string intitulé de l'offre
|
|
||||||
*/
|
|
||||||
private string $nom;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Description de l'offre
|
|
||||||
*/
|
|
||||||
private string $description;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Url de l'image
|
|
||||||
*/
|
|
||||||
private string $imageUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var TypeContrat Type de contrat
|
|
||||||
*/
|
|
||||||
private TypeContrat $typeContrat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Ville
|
|
||||||
*/
|
|
||||||
private string $ville;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Entreprise de l'offre
|
|
||||||
*/
|
|
||||||
private string $entreprise;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Descriptif du poste
|
|
||||||
*/
|
|
||||||
private string $descriptifPoste;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var ProfilRecherche Profil recherché
|
|
||||||
*/
|
|
||||||
private ProfilRecherche $profil;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Experience
|
|
||||||
*/
|
|
||||||
private string $experience;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var NiveauEtudes Niveau d'études
|
|
||||||
*/
|
|
||||||
private NiveauEtudes $niveauEtudes;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Email de contact
|
|
||||||
*/
|
|
||||||
private string $mailContact;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Numero
|
|
||||||
*/
|
|
||||||
private string $numero;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Url du site
|
|
||||||
*/
|
|
||||||
private string $siteUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $id
|
|
||||||
* @param Alumni $offreur
|
|
||||||
* @param string $nom
|
|
||||||
* @param string $description
|
|
||||||
* @param string $imageUrl
|
|
||||||
* @param TypeContrat $typeContrat
|
|
||||||
* @param string $ville
|
|
||||||
* @param string $entreprise
|
|
||||||
* @param string $descriptifPoste
|
|
||||||
* @param Profil $profil
|
|
||||||
* @param string $experience
|
|
||||||
* @param NiveauEtudes $niveauEtudes
|
|
||||||
* @param string $mailContact
|
|
||||||
* @param string $numero
|
|
||||||
* @param string $siteUrl
|
|
||||||
*/
|
|
||||||
public function __construct(int $id, Alumni $offreur, string $nom, string $description, string $imageUrl, TypeContrat $typeContrat, string $ville, string $entreprise, string $descriptifPoste, Profil $profil, string $experience, NiveauEtudes $niveauEtudes, string $mailContact, string $numero, string $siteUrl)
|
|
||||||
{
|
|
||||||
$this->id = $id;
|
|
||||||
$this->offreur = $offreur;
|
|
||||||
$this->nom = $nom;
|
|
||||||
$this->description = $description;
|
|
||||||
$this->imageUrl = $imageUrl;
|
|
||||||
$this->typeContrat = $typeContrat;
|
|
||||||
$this->ville = $ville;
|
|
||||||
$this->entreprise = $entreprise;
|
|
||||||
$this->descriptifPoste = $descriptifPoste;
|
|
||||||
$this->profil = $profil;
|
|
||||||
$this->experience = $experience;
|
|
||||||
$this->niveauEtudes = $niveauEtudes;
|
|
||||||
$this->mailContact = $mailContact;
|
|
||||||
$this->numero = $numero;
|
|
||||||
$this->siteUrl = $siteUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getId(): int
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOffreur(): Alumni
|
|
||||||
{
|
|
||||||
return $this->offreur;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNom(): string
|
|
||||||
{
|
|
||||||
return $this->nom;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return $this->description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getImageUrl(): string
|
|
||||||
{
|
|
||||||
return $this->imageUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTypeContrat(): TypeContrat
|
|
||||||
{
|
|
||||||
return $this->typeContrat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getVille(): string
|
|
||||||
{
|
|
||||||
return $this->ville;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getEntreprise(): string
|
|
||||||
{
|
|
||||||
return $this->entreprise;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescriptifPoste(): string
|
|
||||||
{
|
|
||||||
return $this->descriptifPoste;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getProfil(): Profil
|
|
||||||
{
|
|
||||||
return $this->profil;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getExperience(): string
|
|
||||||
{
|
|
||||||
return $this->experience;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNiveauEtudes(): NiveauEtudes
|
|
||||||
{
|
|
||||||
return $this->niveauEtudes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getMailContact(): string
|
|
||||||
{
|
|
||||||
return $this->mailContact;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getNumero(): string
|
|
||||||
{
|
|
||||||
return $this->numero;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getSiteUrl(): string
|
|
||||||
{
|
|
||||||
return $this->siteUrl;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace modeles;
|
|
||||||
|
|
||||||
class AdminModele extends MembreModele
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @description supprimer un compte
|
|
||||||
* @param \Alumni $account compte à supprimer
|
|
||||||
*/
|
|
||||||
public function deleteAccount(\Alumni $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 [];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
<?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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace modeles;
|
|
||||||
|
|
||||||
class ModerateurControleur
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
<?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 \Alumni
|
|
||||||
*/
|
|
||||||
public function Login(string $email,string $hash) : \Alumni
|
|
||||||
{
|
|
||||||
// TO DO
|
|
||||||
return new \Alumni(null,null,null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description s'inscrire
|
|
||||||
* @param string email
|
|
||||||
* @param string hash
|
|
||||||
* @param string $pseudo
|
|
||||||
* @return \Alumni chargé
|
|
||||||
*/
|
|
||||||
public function signIn(string $email,string $pseudo,string $hash) : \Alumni
|
|
||||||
{
|
|
||||||
// TO DO
|
|
||||||
return new Compte(null,null,null);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
After Width: | Height: | Size: 842 KiB |
After Width: | Height: | Size: 333 B |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 515 B |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 657 B |
@ -0,0 +1,54 @@
|
|||||||
|
/* 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;
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,148 @@
|
|||||||
|
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;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
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%;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
.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;
|
||||||
|
}
|
@ -0,0 +1,122 @@
|
|||||||
|
/* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 467 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 162 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 2.5 MiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 467 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 2.5 MiB |