From b1ee04c545a3ec61d0464afee7222be8b98424c4 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 22 Jun 2008 16:11:24 +0200 Subject: [PATCH] Cleanup core branch Signed-off-by: Florent Bruneau --- AUTHORS | 30 - ChangeLog | 1255 ---------------- Makefile | 152 -- bin/banana.feedgen.php | 21 - bin/banana.spoolgen.php | 21 - bin/connect.db.inc.php | 32 - bin/cron/axletter.send.php | 35 - bin/cron/banana.feedgen.php | 21 - bin/cron/checkdb.php | 188 --- bin/cron/clean.php | 48 - bin/cron/connect.db.inc.php | 1 - bin/cron/cron_ml_moderate.php | 123 -- bin/cron/cron_validations.php | 84 -- bin/cron/emails.check.php | 97 -- bin/cron/google_apps.php | 79 -- bin/cron/homonymes.php | 44 - bin/cron/notifs.birthday.php | 39 - bin/cron/notifs.send.php | 43 - bin/cron/rapports_inscription.php | 56 - bin/csv2sql.php | 103 -- bin/devel/lists.foreach_template.py | 77 - bin/devel/xhtml.classes.pl | 139 -- bin/devel/xhtml.validate.pl | 35 - bin/emails.broken.helper.php | 66 - bin/emails.broken.php | 122 -- bin/getuser.sh | 22 - bin/kill_sessions.sh | 3 - bin/lists.create_promo.php | 28 - bin/lists.make_tpl.sh | 25 - bin/lists.mhonarc_by_month.pl | 80 -- bin/lists.mhonarc_pipe.sh | 8 - bin/lists.rpc.py | 1075 -------------- bin/marketPromo.php | 49 - bin/newsletter.send.php | 42 - bin/search.rebuild_db.php | 45 - classes/xnet.php | 84 -- classes/xnetpage.php | 171 --- classes/xnetsession.php | 243 ---- classes/xorgpage.php | 45 - classes/xorgsession.php | 300 ---- configs/.gitignore | 3 - configs/mails.conf | 56 - configs/platal.cron.in | 36 - configs/platal.ini | 81 -- configs/pmwiki.intermap.txt | 2 - htdocs/.gitignore | 3 - htdocs/.htaccess.in | 8 - htdocs/css/.gitignore | 2 - htdocs/css/ax.css | 122 -- htdocs/css/bandeau.css | 28 - htdocs/css/base.css | 66 - htdocs/css/default.css | 643 --------- htdocs/css/espace.css | 215 --- htdocs/css/humlinux.css | 133 -- htdocs/css/igoogle.css | 97 -- htdocs/css/keynote.css | 688 --------- htdocs/css/linux.css | 124 -- htdocs/css/liteskin.css | 164 --- htdocs/css/nbviolet.css | 205 --- htdocs/css/newxorg.css | 174 --- htdocs/css/nl.css | 137 -- htdocs/css/oldtimes.css | 110 -- htdocs/css/openweb.css | 639 --------- htdocs/css/print.css | 4 - htdocs/css/sharky.css | 166 --- htdocs/css/spectral.css | 209 --- htdocs/css/trapped.css | 254 ---- htdocs/css/wiki.css | 84 -- htdocs/css/xnet.css | 446 ------ htdocs/images/.gitignore | 2 - htdocs/images/L.gif | Bin 67 -> 0 bytes htdocs/images/T.gif | Bin 71 -> 0 bytes htdocs/images/asso-montants.png | Bin 11699 -> 0 bytes htdocs/images/asso.png | Bin 2493 -> 0 bytes htdocs/images/ax_mail_header.jpg | Bin 21149 -> 0 bytes htdocs/images/bandeau.jpg | Bin 2036 -> 0 bytes htdocs/images/barre.png | Bin 290 -> 0 bytes htdocs/images/barre_small.png | Bin 242 -> 0 bytes htdocs/images/carre.jpg | Bin 15656 -> 0 bytes htdocs/images/dflt_carre.jpg | Bin 6963 -> 0 bytes htdocs/images/dn.png | Bin 808 -> 0 bytes htdocs/images/equipe.jpg | Bin 23820 -> 0 bytes htdocs/images/favicon.ico | Bin 1406 -> 0 bytes htdocs/images/favicon.png | Bin 836 -> 0 bytes htdocs/images/fin_logo.jpg | Bin 1504 -> 0 bytes htdocs/images/flags/AD.gif | Bin 371 -> 0 bytes htdocs/images/flags/AE.gif | Bin 361 -> 0 bytes htdocs/images/flags/AF.gif | Bin 369 -> 0 bytes htdocs/images/flags/AG.gif | Bin 361 -> 0 bytes htdocs/images/flags/AI.gif | Bin 369 -> 0 bytes htdocs/images/flags/AL.gif | Bin 370 -> 0 bytes htdocs/images/flags/AM.gif | Bin 363 -> 0 bytes htdocs/images/flags/AN.gif | Bin 368 -> 0 bytes htdocs/images/flags/AO.gif | Bin 369 -> 0 bytes htdocs/images/flags/AR.gif | Bin 366 -> 0 bytes htdocs/images/flags/AS.gif | Bin 365 -> 0 bytes htdocs/images/flags/AT.gif | Bin 361 -> 0 bytes htdocs/images/flags/AU.gif | Bin 378 -> 0 bytes htdocs/images/flags/AW.gif | Bin 365 -> 0 bytes htdocs/images/flags/AX.gif | Bin 376 -> 0 bytes htdocs/images/flags/AZ.gif | Bin 370 -> 0 bytes htdocs/images/flags/BA.gif | Bin 363 -> 0 bytes htdocs/images/flags/BB.gif | Bin 368 -> 0 bytes htdocs/images/flags/BD.gif | Bin 361 -> 0 bytes htdocs/images/flags/BE.gif | Bin 359 -> 0 bytes htdocs/images/flags/BF.gif | Bin 358 -> 0 bytes htdocs/images/flags/BG.gif | Bin 360 -> 0 bytes htdocs/images/flags/BH.gif | Bin 367 -> 0 bytes htdocs/images/flags/BI.gif | Bin 374 -> 0 bytes htdocs/images/flags/BJ.gif | Bin 368 -> 0 bytes htdocs/images/flags/BM.gif | Bin 367 -> 0 bytes htdocs/images/flags/BN.gif | Bin 373 -> 0 bytes htdocs/images/flags/BO.gif | Bin 359 -> 0 bytes htdocs/images/flags/BR.gif | Bin 367 -> 0 bytes htdocs/images/flags/BS.gif | Bin 351 -> 0 bytes htdocs/images/flags/BT.gif | Bin 377 -> 0 bytes htdocs/images/flags/BV.gif | Bin 376 -> 0 bytes htdocs/images/flags/BW.gif | Bin 364 -> 0 bytes htdocs/images/flags/BY.gif | Bin 361 -> 0 bytes htdocs/images/flags/BZ.gif | Bin 368 -> 0 bytes htdocs/images/flags/CA.gif | Bin 376 -> 0 bytes htdocs/images/flags/CC.gif | Bin 371 -> 0 bytes htdocs/images/flags/CD.gif | Bin 365 -> 0 bytes htdocs/images/flags/CF.gif | Bin 364 -> 0 bytes htdocs/images/flags/CG.gif | Bin 359 -> 0 bytes htdocs/images/flags/CH.gif | Bin 332 -> 0 bytes htdocs/images/flags/CI.gif | Bin 368 -> 0 bytes htdocs/images/flags/CK.gif | Bin 362 -> 0 bytes htdocs/images/flags/CL.gif | Bin 364 -> 0 bytes htdocs/images/flags/CM.gif | Bin 369 -> 0 bytes htdocs/images/flags/CN.gif | Bin 366 -> 0 bytes htdocs/images/flags/CO.gif | Bin 353 -> 0 bytes htdocs/images/flags/CR.gif | Bin 359 -> 0 bytes htdocs/images/flags/CS.gif | Bin 364 -> 0 bytes htdocs/images/flags/CU.gif | Bin 367 -> 0 bytes htdocs/images/flags/CV.gif | Bin 367 -> 0 bytes htdocs/images/flags/CX.gif | Bin 363 -> 0 bytes htdocs/images/flags/CY.gif | Bin 365 -> 0 bytes htdocs/images/flags/CZ.gif | Bin 362 -> 0 bytes htdocs/images/flags/DE.gif | Bin 362 -> 0 bytes htdocs/images/flags/DJ.gif | Bin 369 -> 0 bytes htdocs/images/flags/DK.gif | Bin 374 -> 0 bytes htdocs/images/flags/DM.gif | Bin 368 -> 0 bytes htdocs/images/flags/DO.gif | Bin 362 -> 0 bytes htdocs/images/flags/DZ.gif | Bin 370 -> 0 bytes htdocs/images/flags/EC.gif | Bin 362 -> 0 bytes htdocs/images/flags/EE.gif | Bin 364 -> 0 bytes htdocs/images/flags/EG.gif | Bin 363 -> 0 bytes htdocs/images/flags/EH.gif | Bin 359 -> 0 bytes htdocs/images/flags/ER.gif | Bin 361 -> 0 bytes htdocs/images/flags/ES.gif | Bin 360 -> 0 bytes htdocs/images/flags/ET.gif | Bin 364 -> 0 bytes htdocs/images/flags/FI.gif | Bin 371 -> 0 bytes htdocs/images/flags/FJ.gif | Bin 370 -> 0 bytes htdocs/images/flags/FK.gif | Bin 372 -> 0 bytes htdocs/images/flags/FM.gif | Bin 377 -> 0 bytes htdocs/images/flags/FO.gif | Bin 370 -> 0 bytes htdocs/images/flags/FR.gif | Bin 366 -> 0 bytes htdocs/images/flags/GA.gif | Bin 359 -> 0 bytes htdocs/images/flags/GB.gif | Bin 382 -> 0 bytes htdocs/images/flags/GD.gif | Bin 364 -> 0 bytes htdocs/images/flags/GE.gif | Bin 379 -> 0 bytes htdocs/images/flags/GG.gif | Bin 1502 -> 0 bytes htdocs/images/flags/GH.gif | Bin 358 -> 0 bytes htdocs/images/flags/GI.gif | Bin 370 -> 0 bytes htdocs/images/flags/GL.gif | Bin 368 -> 0 bytes htdocs/images/flags/GM.gif | Bin 362 -> 0 bytes htdocs/images/flags/GN.gif | Bin 363 -> 0 bytes htdocs/images/flags/GP.gif | Bin 357 -> 0 bytes htdocs/images/flags/GQ.gif | Bin 361 -> 0 bytes htdocs/images/flags/GR.gif | Bin 368 -> 0 bytes htdocs/images/flags/GS.gif | Bin 363 -> 0 bytes htdocs/images/flags/GT.gif | Bin 374 -> 0 bytes htdocs/images/flags/GU.gif | Bin 370 -> 0 bytes htdocs/images/flags/GW.gif | Bin 358 -> 0 bytes htdocs/images/flags/GY.gif | Bin 367 -> 0 bytes htdocs/images/flags/HK.gif | Bin 373 -> 0 bytes htdocs/images/flags/HN.gif | Bin 367 -> 0 bytes htdocs/images/flags/HR.gif | Bin 364 -> 0 bytes htdocs/images/flags/HT.gif | Bin 361 -> 0 bytes htdocs/images/flags/HU.gif | Bin 357 -> 0 bytes htdocs/images/flags/ID.gif | Bin 362 -> 0 bytes htdocs/images/flags/IE.gif | Bin 371 -> 0 bytes htdocs/images/flags/IL.gif | Bin 366 -> 0 bytes htdocs/images/flags/IM.gif | Bin 2363 -> 0 bytes htdocs/images/flags/IN.gif | Bin 363 -> 0 bytes htdocs/images/flags/IO.gif | Bin 373 -> 0 bytes htdocs/images/flags/IQ.gif | Bin 361 -> 0 bytes htdocs/images/flags/IR.gif | Bin 366 -> 0 bytes htdocs/images/flags/IS.gif | Bin 373 -> 0 bytes htdocs/images/flags/IT.gif | Bin 366 -> 0 bytes htdocs/images/flags/JE.gif | Bin 1971 -> 0 bytes htdocs/images/flags/JM.gif | Bin 365 -> 0 bytes htdocs/images/flags/JO.gif | Bin 360 -> 0 bytes htdocs/images/flags/JP.gif | Bin 366 -> 0 bytes htdocs/images/flags/KE.gif | Bin 360 -> 0 bytes htdocs/images/flags/KG.gif | Bin 373 -> 0 bytes htdocs/images/flags/KH.gif | Bin 367 -> 0 bytes htdocs/images/flags/KI.gif | Bin 371 -> 0 bytes htdocs/images/flags/KM.gif | Bin 358 -> 0 bytes htdocs/images/flags/KN.gif | Bin 370 -> 0 bytes htdocs/images/flags/KP.gif | Bin 366 -> 0 bytes htdocs/images/flags/KR.gif | Bin 385 -> 0 bytes htdocs/images/flags/KW.gif | Bin 362 -> 0 bytes htdocs/images/flags/KY.gif | Bin 373 -> 0 bytes htdocs/images/flags/KZ.gif | Bin 374 -> 0 bytes htdocs/images/flags/LA.gif | Bin 366 -> 0 bytes htdocs/images/flags/LB.gif | Bin 366 -> 0 bytes htdocs/images/flags/LC.gif | Bin 379 -> 0 bytes htdocs/images/flags/LI.gif | Bin 359 -> 0 bytes htdocs/images/flags/LK.gif | Bin 377 -> 0 bytes htdocs/images/flags/LR.gif | Bin 360 -> 0 bytes htdocs/images/flags/LS.gif | Bin 369 -> 0 bytes htdocs/images/flags/LT.gif | Bin 362 -> 0 bytes htdocs/images/flags/LU.gif | Bin 368 -> 0 bytes htdocs/images/flags/LV.gif | Bin 363 -> 0 bytes htdocs/images/flags/LY.gif | Bin 362 -> 0 bytes htdocs/images/flags/MA.gif | Bin 367 -> 0 bytes htdocs/images/flags/MC.gif | Bin 359 -> 0 bytes htdocs/images/flags/MD.gif | Bin 367 -> 0 bytes htdocs/images/flags/MG.gif | Bin 372 -> 0 bytes htdocs/images/flags/MH.gif | Bin 370 -> 0 bytes htdocs/images/flags/MK.gif | Bin 382 -> 0 bytes htdocs/images/flags/ML.gif | Bin 363 -> 0 bytes htdocs/images/flags/MM.gif | Bin 365 -> 0 bytes htdocs/images/flags/MN.gif | Bin 368 -> 0 bytes htdocs/images/flags/MO.gif | Bin 378 -> 0 bytes htdocs/images/flags/MP.gif | Bin 368 -> 0 bytes htdocs/images/flags/MQ.gif | Bin 379 -> 0 bytes htdocs/images/flags/MR.gif | Bin 377 -> 0 bytes htdocs/images/flags/MS.gif | Bin 371 -> 0 bytes htdocs/images/flags/MT.gif | Bin 369 -> 0 bytes htdocs/images/flags/MU.gif | Bin 358 -> 0 bytes htdocs/images/flags/MV.gif | Bin 372 -> 0 bytes htdocs/images/flags/MW.gif | Bin 364 -> 0 bytes htdocs/images/flags/MX.gif | Bin 366 -> 0 bytes htdocs/images/flags/MY.gif | Bin 375 -> 0 bytes htdocs/images/flags/MZ.gif | Bin 366 -> 0 bytes htdocs/images/flags/NA.gif | Bin 371 -> 0 bytes htdocs/images/flags/NC.gif | Bin 364 -> 0 bytes htdocs/images/flags/NE.gif | Bin 366 -> 0 bytes htdocs/images/flags/NF.gif | Bin 375 -> 0 bytes htdocs/images/flags/NG.gif | Bin 371 -> 0 bytes htdocs/images/flags/NI.gif | Bin 366 -> 0 bytes htdocs/images/flags/NL.gif | Bin 360 -> 0 bytes htdocs/images/flags/NO.gif | Bin 376 -> 0 bytes htdocs/images/flags/NP.gif | Bin 302 -> 0 bytes htdocs/images/flags/NR.gif | Bin 364 -> 0 bytes htdocs/images/flags/NU.gif | Bin 369 -> 0 bytes htdocs/images/flags/NZ.gif | Bin 369 -> 0 bytes htdocs/images/flags/OM.gif | Bin 364 -> 0 bytes htdocs/images/flags/PA.gif | Bin 367 -> 0 bytes htdocs/images/flags/PC.gif | Bin 2444 -> 0 bytes htdocs/images/flags/PE.gif | Bin 361 -> 0 bytes htdocs/images/flags/PF.gif | Bin 366 -> 0 bytes htdocs/images/flags/PG.gif | Bin 360 -> 0 bytes htdocs/images/flags/PH.gif | Bin 361 -> 0 bytes htdocs/images/flags/PK.gif | Bin 377 -> 0 bytes htdocs/images/flags/PL.gif | Bin 360 -> 0 bytes htdocs/images/flags/PM.gif | Bin 374 -> 0 bytes htdocs/images/flags/PN.gif | Bin 367 -> 0 bytes htdocs/images/flags/PR.gif | Bin 369 -> 0 bytes htdocs/images/flags/PS.gif | Bin 358 -> 0 bytes htdocs/images/flags/PT.gif | Bin 369 -> 0 bytes htdocs/images/flags/PW.gif | Bin 374 -> 0 bytes htdocs/images/flags/PY.gif | Bin 363 -> 0 bytes htdocs/images/flags/QA.gif | Bin 364 -> 0 bytes htdocs/images/flags/RO.gif | Bin 363 -> 0 bytes htdocs/images/flags/RU.gif | Bin 361 -> 0 bytes htdocs/images/flags/RW.gif | Bin 361 -> 0 bytes htdocs/images/flags/SA.gif | Bin 370 -> 0 bytes htdocs/images/flags/SB.gif | Bin 366 -> 0 bytes htdocs/images/flags/SC.gif | Bin 357 -> 0 bytes htdocs/images/flags/SD.gif | Bin 355 -> 0 bytes htdocs/images/flags/SE.gif | Bin 367 -> 0 bytes htdocs/images/flags/SG.gif | Bin 364 -> 0 bytes htdocs/images/flags/SH.gif | Bin 371 -> 0 bytes htdocs/images/flags/SI.gif | Bin 362 -> 0 bytes htdocs/images/flags/SK.gif | Bin 361 -> 0 bytes htdocs/images/flags/SL.gif | Bin 363 -> 0 bytes htdocs/images/flags/SM.gif | Bin 367 -> 0 bytes htdocs/images/flags/SN.gif | Bin 364 -> 0 bytes htdocs/images/flags/SO.gif | Bin 376 -> 0 bytes htdocs/images/flags/SR.gif | Bin 361 -> 0 bytes htdocs/images/flags/ST.gif | Bin 367 -> 0 bytes htdocs/images/flags/SU.gif | Bin 1285 -> 0 bytes htdocs/images/flags/SV.gif | Bin 363 -> 0 bytes htdocs/images/flags/SY.gif | Bin 361 -> 0 bytes htdocs/images/flags/SZ.gif | Bin 363 -> 0 bytes htdocs/images/flags/TC.gif | Bin 366 -> 0 bytes htdocs/images/flags/TD.gif | Bin 368 -> 0 bytes htdocs/images/flags/TF.gif | Bin 365 -> 0 bytes htdocs/images/flags/TG.gif | Bin 366 -> 0 bytes htdocs/images/flags/TH.gif | Bin 360 -> 0 bytes htdocs/images/flags/TJ.gif | Bin 361 -> 0 bytes htdocs/images/flags/TK.gif | Bin 372 -> 0 bytes htdocs/images/flags/TL.gif | Bin 360 -> 0 bytes htdocs/images/flags/TM.gif | Bin 367 -> 0 bytes htdocs/images/flags/TN.gif | Bin 375 -> 0 bytes htdocs/images/flags/TO.gif | Bin 367 -> 0 bytes htdocs/images/flags/TR.gif | Bin 371 -> 0 bytes htdocs/images/flags/TT.gif | Bin 377 -> 0 bytes htdocs/images/flags/TV.gif | Bin 361 -> 0 bytes htdocs/images/flags/TW.gif | Bin 367 -> 0 bytes htdocs/images/flags/TZ.gif | Bin 366 -> 0 bytes htdocs/images/flags/UA.gif | Bin 360 -> 0 bytes htdocs/images/flags/UG.gif | Bin 359 -> 0 bytes htdocs/images/flags/UM.gif | Bin 371 -> 0 bytes htdocs/images/flags/US.gif | Bin 367 -> 0 bytes htdocs/images/flags/UY.gif | Bin 373 -> 0 bytes htdocs/images/flags/UZ.gif | Bin 364 -> 0 bytes htdocs/images/flags/VA.gif | Bin 369 -> 0 bytes htdocs/images/flags/VC.gif | Bin 370 -> 0 bytes htdocs/images/flags/VE.gif | Bin 364 -> 0 bytes htdocs/images/flags/VG.gif | Bin 368 -> 0 bytes htdocs/images/flags/VI.gif | Bin 376 -> 0 bytes htdocs/images/flags/VN.gif | Bin 370 -> 0 bytes htdocs/images/flags/VU.gif | Bin 365 -> 0 bytes htdocs/images/flags/WF.gif | Bin 377 -> 0 bytes htdocs/images/flags/WS.gif | Bin 365 -> 0 bytes htdocs/images/flags/YE.gif | Bin 356 -> 0 bytes htdocs/images/flags/YT.gif | Bin 382 -> 0 bytes htdocs/images/flags/YU.gif | Bin 1703 -> 0 bytes htdocs/images/flags/ZA.gif | Bin 363 -> 0 bytes htdocs/images/flags/ZM.gif | Bin 358 -> 0 bytes htdocs/images/flags/ZW.gif | Bin 365 -> 0 bytes htdocs/images/goodies/README | 7 - htdocs/images/goodies/add-google-calendar.gif | Bin 1690 -> 0 bytes htdocs/images/goodies/add-google.gif | Bin 1531 -> 0 bytes htdocs/images/goodies/add-netvibes.gif | Bin 1531 -> 0 bytes htdocs/images/goodies/add-newsgator.gif | Bin 1025 -> 0 bytes htdocs/images/goodies/add-yahoo.gif | Bin 719 -> 0 bytes htdocs/images/googleapps/.gitignore | 2 - htdocs/images/icons/add.gif | Bin 586 -> 0 bytes htdocs/images/icons/arrow_refresh.gif | Bin 971 -> 0 bytes htdocs/images/icons/bell.gif | Bin 1328 -> 0 bytes htdocs/images/icons/bin_empty.gif | Bin 1042 -> 0 bytes htdocs/images/icons/book_next.gif | Bin 598 -> 0 bytes htdocs/images/icons/bullet_arrow_down.gif | Bin 169 -> 0 bytes htdocs/images/icons/bullet_arrow_up.gif | Bin 169 -> 0 bytes htdocs/images/icons/calendar_view_day.gif | Bin 1333 -> 0 bytes htdocs/images/icons/clock.gif | Bin 1770 -> 0 bytes htdocs/images/icons/comments.gif | Bin 958 -> 0 bytes htdocs/images/icons/cross.gif | Bin 545 -> 0 bytes htdocs/images/icons/date_edit.gif | Bin 1041 -> 0 bytes htdocs/images/icons/delete.gif | Bin 581 -> 0 bytes htdocs/images/icons/email.gif | Bin 1014 -> 0 bytes htdocs/images/icons/email_attach.gif | Bin 1342 -> 0 bytes htdocs/images/icons/error.gif | Bin 1094 -> 0 bytes htdocs/images/icons/feed.gif | Bin 1079 -> 0 bytes htdocs/images/icons/feed_add.gif | Bin 1375 -> 0 bytes htdocs/images/icons/flag_green.gif | Bin 1312 -> 0 bytes htdocs/images/icons/flag_orange.gif | Bin 581 -> 0 bytes htdocs/images/icons/flag_red.gif | Bin 1310 -> 0 bytes htdocs/images/icons/group.gif | Bin 994 -> 0 bytes htdocs/images/icons/information.gif | Bin 1314 -> 0 bytes htdocs/images/icons/lightbulb.gif | Bin 1331 -> 0 bytes htdocs/images/icons/lock.gif | Bin 1361 -> 0 bytes htdocs/images/icons/lock_add.gif | Bin 1364 -> 0 bytes htdocs/images/icons/lock_open.gif | Bin 1348 -> 0 bytes htdocs/images/icons/magnifier.gif | Bin 1073 -> 0 bytes htdocs/images/icons/map.gif | Bin 1086 -> 0 bytes htdocs/images/icons/money.gif | Bin 1100 -> 0 bytes htdocs/images/icons/null.gif | Bin 55 -> 0 bytes htdocs/images/icons/package_add.gif | Bin 1374 -> 0 bytes htdocs/images/icons/package_delete.gif | Bin 1372 -> 0 bytes htdocs/images/icons/page_edit.gif | Bin 1352 -> 0 bytes htdocs/images/icons/resultset_first.gif | Bin 1083 -> 0 bytes htdocs/images/icons/resultset_last.gif | Bin 1081 -> 0 bytes htdocs/images/icons/resultset_next.gif | Bin 1034 -> 0 bytes htdocs/images/icons/resultset_previous.gif | Bin 1034 -> 0 bytes htdocs/images/icons/table.gif | Bin 603 -> 0 bytes htdocs/images/icons/thumb_down.gif | Bin 1085 -> 0 bytes htdocs/images/icons/thumb_up.gif | Bin 1082 -> 0 bytes htdocs/images/icons/tick.gif | Bin 929 -> 0 bytes htdocs/images/icons/user_edit.gif | Bin 1006 -> 0 bytes htdocs/images/icons/user_gray.gif | Bin 586 -> 0 bytes htdocs/images/icons/user_suit.gif | Bin 989 -> 0 bytes htdocs/images/icons/vcard.gif | Bin 596 -> 0 bytes htdocs/images/icons/wand.gif | Bin 1058 -> 0 bytes htdocs/images/icons/weather_cloudy.gif | Bin 1084 -> 0 bytes htdocs/images/icons/world_go.gif | Bin 1783 -> 0 bytes htdocs/images/icons/wrench.gif | Bin 564 -> 0 bytes htdocs/images/k1.gif | Bin 67 -> 0 bytes htdocs/images/k2.gif | Bin 66 -> 0 bytes htdocs/images/lists_date.png | Bin 137 -> 0 bytes htdocs/images/lists_first.png | Bin 1741 -> 0 bytes htdocs/images/lists_firstia.png | Bin 864 -> 0 bytes htdocs/images/lists_last.png | Bin 1819 -> 0 bytes htdocs/images/lists_lastia.png | Bin 888 -> 0 bytes htdocs/images/lists_next.png | Bin 2077 -> 0 bytes htdocs/images/lists_nextia.png | Bin 954 -> 0 bytes htdocs/images/lists_prev.png | Bin 1790 -> 0 bytes htdocs/images/lists_previa.png | Bin 879 -> 0 bytes htdocs/images/lists_thread.png | Bin 282 -> 0 bytes htdocs/images/logo-xnet.png | Bin 8772 -> 0 bytes htdocs/images/logo-xorg.png | Bin 4428 -> 0 bytes htdocs/images/logo.jpg | Bin 3524 -> 0 bytes htdocs/images/logo.png | Bin 12645 -> 0 bytes htdocs/images/logoBR.jpg | Bin 2334 -> 0 bytes htdocs/images/logo_binets.png | Bin 6978 -> 0 bytes htdocs/images/logo_evenements.png | Bin 4026 -> 0 bytes htdocs/images/logo_groupesx.png | Bin 6888 -> 0 bytes htdocs/images/logo_institutions.png | Bin 6321 -> 0 bytes htdocs/images/logo_plan.png | Bin 6546 -> 0 bytes htdocs/images/logo_promotions.png | Bin 4378 -> 0 bytes htdocs/images/logo_recherche.png | Bin 3437 -> 0 bytes htdocs/images/logo_xorg_nl.png | Bin 8395 -> 0 bytes htdocs/images/medals/bundesverdienstkreuz.jpg | Bin 2050 -> 0 bytes htdocs/images/medals/croix_1418.jpg | Bin 5849 -> 0 bytes htdocs/images/medals/croix_3945.jpg | Bin 7806 -> 0 bytes htdocs/images/medals/croix_cc.jpg | Bin 6269 -> 0 bytes htdocs/images/medals/croix_cv.jpg | Bin 6666 -> 0 bytes htdocs/images/medals/croix_cv1418.jpg | Bin 6232 -> 0 bytes htdocs/images/medals/croix_toe.jpg | Bin 6330 -> 0 bytes htdocs/images/medals/croix_vm.jpg | Bin 6140 -> 0 bytes htdocs/images/medals/honn_acd.jpg | Bin 5661 -> 0 bytes htdocs/images/medals/honn_adfs.jpg | Bin 3787 -> 0 bytes htdocs/images/medals/honn_ae.jpg | Bin 5146 -> 0 bytes htdocs/images/medals/honn_agr.jpg | Bin 4813 -> 0 bytes htdocs/images/medals/honn_ap.jpg | Bin 5635 -> 0 bytes htdocs/images/medals/honn_dou.jpg | Bin 5397 -> 0 bytes htdocs/images/medals/honn_ef.jpg | Bin 5200 -> 0 bytes htdocs/images/medals/honn_epi.jpg | Bin 5162 -> 0 bytes htdocs/images/medals/honn_mci.jpg | Bin 4777 -> 0 bytes htdocs/images/medals/honn_pd.jpg | Bin 4069 -> 0 bytes htdocs/images/medals/honn_pen.jpg | Bin 5631 -> 0 bytes htdocs/images/medals/honn_sm.jpg | Bin 4638 -> 0 bytes htdocs/images/medals/mili_aero.jpg | Bin 4641 -> 0 bytes htdocs/images/medals/mili_an.jpg | Bin 7455 -> 0 bytes htdocs/images/medals/mili_defnat.jpg | Bin 6842 -> 0 bytes htdocs/images/medals/mili_ev.jpg | Bin 6331 -> 0 bytes htdocs/images/medals/mili_eva.jpg | Bin 6447 -> 0 bytes htdocs/images/medals/mili_gn.jpg | Bin 6112 -> 0 bytes htdocs/images/medals/mili_ib.jpg | Bin 7306 -> 0 bytes htdocs/images/medals/mili_mili.jpg | Bin 6375 -> 0 bytes htdocs/images/medals/mili_om.jpg | Bin 6163 -> 0 bytes htdocs/images/medals/mili_smv.jpg | Bin 7120 -> 0 bytes htdocs/images/medals/mili_ssa.jpg | Bin 5833 -> 0 bytes htdocs/images/medals/mili_trn.jpg | Bin 6980 -> 0 bytes htdocs/images/medals/ordre_al.jpg | Bin 5779 -> 0 bytes htdocs/images/medals/ordre_lib.jpg | Bin 4758 -> 0 bytes htdocs/images/medals/ordre_ma.jpg | Bin 7134 -> 0 bytes htdocs/images/medals/ordre_mm.jpg | Bin 5874 -> 0 bytes htdocs/images/medals/ordre_nm.jpg | Bin 6463 -> 0 bytes htdocs/images/medals/ordre_onlh.jpg | Bin 5775 -> 0 bytes htdocs/images/medals/ordre_pa.jpg | Bin 7541 -> 0 bytes htdocs/images/medals/prix_fields.gif | Bin 21070 -> 0 bytes htdocs/images/medals/prix_nb_eco.jpg | Bin 13533 -> 0 bytes htdocs/images/medals/prix_nb_lit.jpg | Bin 9983 -> 0 bytes htdocs/images/medals/prix_nb_med.jpg | Bin 11141 -> 0 bytes htdocs/images/medals/prix_nb_paix.jpg | Bin 10499 -> 0 bytes htdocs/images/medals/prix_nb_pc.jpg | Bin 11209 -> 0 bytes htdocs/images/medals/resi_cvr.jpg | Bin 6158 -> 0 bytes htdocs/images/medals/resi_dr.jpg | Bin 5804 -> 0 bytes htdocs/images/medals/resi_rf.jpg | Bin 5405 -> 0 bytes htdocs/images/medals/thumb/.gitignore | 1 - htdocs/images/none.png | Bin 13098 -> 0 bytes htdocs/images/oval.png | Bin 1941 -> 0 bytes htdocs/images/oval2.png | Bin 2159 -> 0 bytes htdocs/images/parfait.jpg | Bin 60469 -> 0 bytes htdocs/images/puce.png | Bin 399 -> 0 bytes htdocs/images/skins/Defaut.png | Bin 21449 -> 0 bytes htdocs/images/skins/Espace.png | Bin 29062 -> 0 bytes htdocs/images/skins/HumLinux.png | Bin 41216 -> 0 bytes htdocs/images/skins/Keynote.png | Bin 26937 -> 0 bytes htdocs/images/skins/Linux.png | Bin 27242 -> 0 bytes htdocs/images/skins/LiteSkin.png | Bin 22636 -> 0 bytes htdocs/images/skins/NBviolet.png | Bin 25345 -> 0 bytes htdocs/images/skins/NewXorg.png | Bin 27980 -> 0 bytes htdocs/images/skins/OldTimes.png | Bin 26959 -> 0 bytes htdocs/images/skins/OpenWeb.png | Bin 18929 -> 0 bytes htdocs/images/skins/Sharky.png | Bin 26928 -> 0 bytes htdocs/images/skins/Spectral.png | Bin 25873 -> 0 bytes htdocs/images/skins/Trapped.png | Bin 25689 -> 0 bytes htdocs/images/skins/default_ban.jpg | Bin 2169 -> 0 bytes htdocs/images/skins/default_headlogo.jpg | Bin 3534 -> 0 bytes htdocs/images/skins/default_lesX.gif | Bin 1920 -> 0 bytes htdocs/images/skins/default_snapshot.png | Bin 15836 -> 0 bytes htdocs/images/skins/default_titre.gif | Bin 1131 -> 0 bytes htdocs/images/skins/espace_ban.jpg | Bin 2977 -> 0 bytes htdocs/images/skins/espace_lesX.gif | Bin 6005 -> 0 bytes htdocs/images/skins/espace_logo.gif | Bin 4321 -> 0 bytes htdocs/images/skins/espace_menu.jpg | Bin 933 -> 0 bytes htdocs/images/skins/espace_titre.jpg | Bin 1435 -> 0 bytes htdocs/images/skins/humlinux_background.jpg | Bin 68122 -> 0 bytes htdocs/images/skins/humlinux_lesX.gif | Bin 5510 -> 0 bytes htdocs/images/skins/humlinux_logo.gif | Bin 5886 -> 0 bytes htdocs/images/skins/humlinux_menu.jpg | Bin 639 -> 0 bytes htdocs/images/skins/keynote_ban.png | Bin 42739 -> 0 bytes htdocs/images/skins/keynote_bg.png | Bin 7114 -> 0 bytes htdocs/images/skins/keynote_bg_lighter.png | Bin 33867 -> 0 bytes htdocs/images/skins/keynote_bg_verylighter.png | Bin 33917 -> 0 bytes htdocs/images/skins/keynote_logo.png | Bin 18526 -> 0 bytes htdocs/images/skins/keynote_title.gif | Bin 847 -> 0 bytes htdocs/images/skins/keynote_topborder.png | Bin 3508 -> 0 bytes htdocs/images/skins/linux_ban.jpg | Bin 2169 -> 0 bytes htdocs/images/skins/linux_lesX.jpg | Bin 3788 -> 0 bytes htdocs/images/skins/linux_logo.jpg | Bin 2893 -> 0 bytes htdocs/images/skins/linux_menu.gif | Bin 43 -> 0 bytes htdocs/images/skins/linux_snapshot.png | Bin 18233 -> 0 bytes htdocs/images/skins/linux_titre.jpg | Bin 585 -> 0 bytes htdocs/images/skins/liteskin_logo.png | Bin 255 -> 0 bytes htdocs/images/skins/liteskin_titre.png | Bin 2881 -> 0 bytes htdocs/images/skins/nbviolet_ban.jpg | Bin 2005 -> 0 bytes htdocs/images/skins/nbviolet_lesX.gif | Bin 3492 -> 0 bytes htdocs/images/skins/nbviolet_logo.gif | Bin 3694 -> 0 bytes htdocs/images/skins/nbviolet_menu.jpg | Bin 537 -> 0 bytes htdocs/images/skins/nbviolet_titre.jpg | Bin 539 -> 0 bytes htdocs/images/skins/newxorg_background.jpg | Bin 424 -> 0 bytes htdocs/images/skins/newxorg_ban.gif | Bin 13317 -> 0 bytes htdocs/images/skins/newxorg_ban.png | Bin 42049 -> 0 bytes htdocs/images/skins/newxorg_logo.jpg | Bin 3524 -> 0 bytes htdocs/images/skins/newxorg_menu.jpg | Bin 4767 -> 0 bytes htdocs/images/skins/newxorg_titre.jpg | Bin 4814 -> 0 bytes htdocs/images/skins/oldtimes_ban.jpg | Bin 2169 -> 0 bytes htdocs/images/skins/oldtimes_lesX.gif | Bin 3552 -> 0 bytes htdocs/images/skins/oldtimes_logo.gif | Bin 3948 -> 0 bytes htdocs/images/skins/oldtimes_menu.jpg | Bin 585 -> 0 bytes htdocs/images/skins/oldtimes_titre.jpg | Bin 582 -> 0 bytes htdocs/images/skins/sharky_ban.png | Bin 24765 -> 0 bytes htdocs/images/skins/sharky_bubbles.png | Bin 5721 -> 0 bytes htdocs/images/skins/sharky_logo.png | Bin 9647 -> 0 bytes htdocs/images/skins/spectral_ban.jpg | Bin 2005 -> 0 bytes htdocs/images/skins/spectral_lesX.jpg | Bin 2353 -> 0 bytes htdocs/images/skins/spectral_logo.gif | Bin 3694 -> 0 bytes htdocs/images/skins/spectral_menu.jpg | Bin 671 -> 0 bytes htdocs/images/skins/spectral_titre.jpg | Bin 585 -> 0 bytes htdocs/images/skins/trapped_ban.jpg | Bin 6274 -> 0 bytes htdocs/images/skins/trapped_lesX.gif | Bin 6934 -> 0 bytes htdocs/images/skins/trapped_logo.gif | Bin 83335 -> 0 bytes htdocs/images/skins/trapped_menu.gif | Bin 77 -> 0 bytes htdocs/images/skins/trapped_monstre.jpg | Bin 13788 -> 0 bytes htdocs/images/skins/trapped_titre.gif | Bin 77 -> 0 bytes htdocs/images/skins/wiz_active.png | Bin 3615 -> 0 bytes htdocs/images/skins/wiz_background.png | Bin 408 -> 0 bytes htdocs/images/skins/wiz_hover.png | Bin 3529 -> 0 bytes htdocs/images/skins/wiz_normal.png | Bin 3529 -> 0 bytes htdocs/images/skins/wiz_xnet_background.png | Bin 12353 -> 0 bytes htdocs/images/texte_binets.jpg | Bin 5889 -> 0 bytes htdocs/images/texte_evenements.jpg | Bin 8208 -> 0 bytes htdocs/images/texte_groupesx.jpg | Bin 7215 -> 0 bytes htdocs/images/texte_institutions.jpg | Bin 7385 -> 0 bytes htdocs/images/texte_plan.jpg | Bin 7987 -> 0 bytes htdocs/images/texte_promotions.jpg | Bin 7379 -> 0 bytes htdocs/images/texte_recherche.jpg | Bin 7520 -> 0 bytes htdocs/images/up.png | Bin 781 -> 0 bytes htdocs/images/wait.gif | Bin 1553 -> 0 bytes htdocs/images/x.png | Bin 1072 -> 0 bytes htdocs/images/xorg.png | Bin 836 -> 0 bytes htdocs/index.html | 37 - htdocs/javascript/.gitignore | 2 - htdocs/javascript/ajax.js | 153 -- htdocs/javascript/close_on_esc.js | 30 - htdocs/javascript/do_challenge_response.js | 62 - htdocs/javascript/do_challenge_response_logged.js | 49 - htdocs/javascript/igoogle.js | 37 - htdocs/javascript/md5.js | 379 ----- htdocs/javascript/motdepasse.js | 42 - htdocs/javascript/overlib.js | 1491 -------------------- htdocs/javascript/profile.js | 516 ------- htdocs/javascript/secure_hash.js | 51 - htdocs/javascript/sha1.js | 203 --- htdocs/javascript/wiki.js | 48 - htdocs/javascript/xorg.js | 373 ----- htdocs/listes_redirect.php | 57 - htdocs/webredirect.php | 61 - htdocs/xnet.php | 38 - htdocs/xorg.opensearch.xml | 11 - htdocs/xorg.php | 39 - include/.gitignore | 1 - include/applis.func.inc.php | 91 -- include/banana/.gitignore | 15 - include/banana/forum.inc.php | 230 --- include/banana/hooks.inc.php | 344 ----- include/banana/ml.inc.php | 151 -- include/banana/moderate.inc.php | 242 ---- include/emails.inc.php | 610 -------- include/geoloc.inc.php | 531 ------- include/globals.inc.php.in | 80 -- include/googleapps.inc.php | 455 ------ include/homonymes.inc.php | 73 - include/ical.inc.php | 41 - include/marketing.inc.php | 376 ----- include/massmailer.inc.php | 257 ---- include/newsletter.inc.php | 286 ---- include/notifs.inc.php | 460 ------ include/profil.func.inc.php | 288 ---- include/rss.inc.php | 61 - include/secure_hash.inc.php | 41 - include/security.inc.php | 110 -- include/synchro_ax.inc.php | 118 -- include/user.func.inc.php | 844 ----------- include/userset.inc.php | 420 ------ include/validations.inc.php | 406 ------ include/validations/aliases.inc.php | 138 -- include/validations/broken.inc.php | 168 --- include/validations/evts.inc.php | 174 --- include/validations/googleapps.inc.php | 80 -- include/validations/homonymes.inc.php | 139 -- include/validations/listes.inc.php | 179 --- include/validations/marketing.inc.php | 116 -- include/validations/medals.inc.php | 130 -- include/validations/nl.inc.php | 105 -- include/validations/nomusage.inc.php | 124 -- include/validations/orange.inc.php | 91 -- include/validations/paiements.inc.php | 217 --- include/validations/photos.inc.php | 154 -- include/validations/surveys.inc.php | 111 -- include/vcard.inc.php | 179 --- include/webservices/ax/client.inc | 433 ------ include/webservices/ax/config.inc | 13 - include/webservices/ax/dtd_ancien.dtd | 36 - include/webservices/manageurs.client.inc.php | 33 - include/webservices/manageurs.inc.php | 87 -- include/webservices/manageurs.server.inc.php | 178 --- include/wiki.inc.php | 320 ----- include/wiki/e-protect.php | 134 -- include/wiki/empty/empty.tmpl | 5 - include/wiki/engine.php | 145 -- include/wiki/farmconfig.php | 121 -- include/wiki/wiki.d/Site.EditForm | 12 - include/wiki/wiki.d/Site.Preferences | 12 - include/xnet.inc.php | 46 - include/xorg.inc.php | 76 - modules/admin.php | 1254 ---------------- modules/auth.php | 188 --- modules/auth/auth.inc.php | 85 -- modules/axletter.php | 378 ----- modules/axletter/axletter.inc.php | 243 ---- modules/bandeau.php | 56 - modules/carnet.php | 383 ----- modules/carnet/contacts.pdf.inc.php | 357 ----- modules/carnet/fonts/README | 4 - modules/carnet/fonts/Vera.php | 25 - modules/carnet/fonts/Vera.z | Bin 39919 -> 0 bytes modules/carnet/fonts/VeraBI.php | 25 - modules/carnet/fonts/VeraBI.z | Bin 38239 -> 0 bytes modules/carnet/fonts/VeraBd.php | 25 - modules/carnet/fonts/VeraBd.z | Bin 36502 -> 0 bytes modules/carnet/fonts/VeraIt.php | 25 - modules/carnet/fonts/VeraIt.z | Bin 38504 -> 0 bytes modules/carnet/fonts/VeraMoBI.php | 25 - modules/carnet/fonts/VeraMoBI.z | Bin 30364 -> 0 bytes modules/carnet/fonts/VeraMoBd.php | 25 - modules/carnet/fonts/VeraMoBd.z | Bin 27244 -> 0 bytes modules/carnet/fonts/VeraMoIt.php | 25 - modules/carnet/fonts/VeraMoIt.z | Bin 30513 -> 0 bytes modules/carnet/fonts/VeraMono.php | 25 - modules/carnet/fonts/VeraMono.z | Bin 27930 -> 0 bytes modules/carnet/fonts/VeraSe.php | 25 - modules/carnet/fonts/VeraSe.z | Bin 37364 -> 0 bytes modules/carnet/fonts/VeraSeBd.php | 25 - modules/carnet/fonts/VeraSeBd.z | Bin 36370 -> 0 bytes modules/email.php | 702 --------- modules/events.php | 490 ------- modules/forums.php | 124 -- modules/gadgets.php | 92 -- modules/gadgets/gadgets.inc.php | 59 - modules/geoloc.php | 113 -- modules/geoloc/.gitignore | 1 - modules/googleapps.php | 226 --- modules/lists.php | 817 ----------- modules/lists/lists.inc.php | 99 -- modules/lists/mail_templates/adminsubscribeack.txt | 4 - .../lists/mail_templates/adminunsubscribeack.txt | 2 - modules/lists/mail_templates/checkdbs.txt | 8 - modules/lists/mail_templates/newlist.txt | 7 - modules/lists/mail_templates/postauth.txt | 13 - modules/lists/mail_templates/postheld.txt | 13 - modules/lists/mail_templates/refuse.txt | 13 - modules/lists/mail_templates/subauth.txt | 10 - modules/lists/mail_templates/subscribeack.txt | 13 - modules/lists/platal.mrc | 493 ------- modules/marketing.php | 350 ----- modules/newsletter.php | 170 --- modules/payment.php | 489 ------- modules/payment/money.inc.php | 131 -- modules/payment/money/cyberpaiement.inc.php | 96 -- modules/payment/money/paypal.inc.php | 110 -- modules/platal.php | 476 ------- modules/platal/review.inc.php | 41 - modules/profile.php | 838 ----------- modules/profile/addresses.inc.php | 239 ---- modules/profile/decos.inc.php | 138 -- modules/profile/general.inc.php | 206 --- modules/profile/groups.inc.php | 128 -- modules/profile/jobs.inc.php | 216 --- modules/profile/mentor.inc.php | 160 --- modules/profile/page.inc.php | 341 ----- modules/profile/skills.inc.php | 111 -- modules/register.php | 501 ------- modules/register/register.inc.php | 253 ---- modules/search.php | 486 ------- modules/search/classes.inc.php | 870 ------------ modules/search/search.inc.php | 88 -- modules/stats.php | 326 ----- modules/survey.php | 479 ------- modules/survey/survey.inc.php | 823 ----------- modules/xnet.php | 217 --- modules/xnetevents.php | 664 --------- modules/xnetevents/xnetevents.inc.php | 349 ----- modules/xnetgrp.php | 1311 ----------------- modules/xnetgrp/mail.inc.php | 128 -- modules/xnetlists.php | 344 ----- plugins/compiler.icon.php | 46 - plugins/function.display_address.php | 96 -- plugins/function.geoloc_country.php | 31 - plugins/function.geoloc_region.php | 31 - plugins/function.make_forlife.php | 28 - plugins/function.select_nat.php | 48 - plugins/function.test_email.php | 36 - plugins/insert.getName.php | 33 - plugins/insert.getUserName.php | 54 - templates/admin/ax-xorg.tpl | 96 -- templates/admin/dead_but_active.tpl | 55 - templates/admin/deces_promo.tpl | 93 -- templates/admin/emails_bounces_re.tpl | 97 -- templates/admin/forums-promo.mail.tpl | 34 - templates/admin/homonymes.tpl | 148 -- templates/admin/icons.tpl | 33 - templates/admin/index.tpl | 179 --- templates/admin/ipwatcher.tpl | 141 -- templates/admin/logger-view.tpl | 137 -- templates/admin/postfix_delayed.tpl | 54 - templates/admin/promo.tpl | 42 - templates/admin/synchro_ax.tpl | 148 -- templates/admin/useredit.mail.tpl | 49 - templates/admin/utilisateurs.tpl | 470 ------ templates/admin/valider.tpl | 188 --- templates/admin/wiki.tpl | 156 -- templates/axletter/admin.tpl | 51 - templates/axletter/edit.tpl | 105 -- templates/axletter/index.tpl | 83 -- templates/axletter/letter.mail.tpl | 96 -- templates/axletter/show.tpl | 59 - templates/axletter/unsubscribe.tpl | 41 - templates/banana/index.tpl | 94 -- templates/carnet/calendar.tpl | 40 - templates/carnet/index.tpl | 88 -- templates/carnet/mescontacts.tpl | 106 -- templates/carnet/notif.mail.tpl | 53 - templates/carnet/notifs.tpl | 128 -- templates/carnet/panel.tpl | 98 -- templates/carnet/rss.tpl | 65 - templates/carnet/tricontacts.tpl | 43 - templates/core/403.tpl | 25 - templates/core/404.tpl | 30 - templates/core/bug.tpl | 86 -- templates/core/password_prompt.tpl | 197 --- templates/core/password_prompt_logged.tpl | 96 -- templates/core/plset.tpl | 53 - templates/core/plwizard.tpl | 106 -- templates/core/table-editor.tpl | 160 --- templates/core/vcard.tpl | 96 -- templates/core/wiki.help.tpl | 35 - templates/core/wiki.tpl | 64 - templates/emails/alias.tpl | 139 -- templates/emails/antispam.tpl | 53 - templates/emails/broken.mail.tpl | 60 - templates/emails/broken.tpl | 88 -- templates/emails/duplicated.tpl | 135 -- templates/emails/imap_register.tpl | 44 - templates/emails/index.tpl | 157 --- templates/emails/lost.tpl | 37 - templates/emails/redirect.tpl | 320 ----- templates/emails/send.tpl | 315 ----- templates/emails/submit_spam.tpl | 62 - templates/emails/test.mail.tpl | 53 - templates/events/admin.tpl | 95 -- templates/events/admin_tips.tpl | 27 - templates/events/form.tpl | 194 --- templates/events/index.tpl | 260 ---- templates/events/preview.tpl | 30 - templates/events/rss.tpl | 62 - templates/events/submit.tpl | 43 - templates/forums/admin.tpl | 57 - templates/gadgets/ig-events.tpl | 51 - templates/gadgets/ig-events.xml.tpl | 35 - templates/gadgets/ig-login.tpl | 34 - templates/gadgets/ig-minifiche.tpl | 82 -- templates/gadgets/ig-search.tpl | 56 - templates/gadgets/ig-search.xml.tpl | 35 - templates/gadgets/ig-skin.tpl | 41 - templates/geoloc/address.tpl | 25 - templates/geoloc/admin.tpl | 36 - templates/geoloc/admin_dynamap.tpl | 64 - templates/geoloc/city.tpl | 27 - templates/geoloc/country.tpl | 47 - templates/geoloc/form.address.tpl | 66 - templates/geoloc/geoloc.mail.tpl | 42 - templates/geoloc/init.tpl | 59 - templates/googleapps/admin.job.tpl | 86 -- templates/googleapps/admin.tpl | 110 -- templates/googleapps/admin.user.tpl | 105 -- templates/googleapps/create.mail.tpl | 55 - templates/googleapps/index.tpl | 426 ------ templates/googleapps/unsuspend.mail.tpl | 47 - templates/include/csv-importer.tpl | 243 ---- templates/include/emploi.tpl | 61 - templates/include/field.promo.tpl | 88 -- templates/include/field.select.tpl | 37 - templates/include/flags.radio.tpl | 37 - templates/include/form.valid.aliases.tpl | 41 - templates/include/form.valid.broken.tpl | 38 - templates/include/form.valid.edit-evts.tpl | 33 - templates/include/form.valid.edit-listes.tpl | 32 - templates/include/form.valid.edit-nl.tpl | 30 - templates/include/form.valid.edit-paiements.tpl | 35 - templates/include/form.valid.edit-photo.tpl | 25 - templates/include/form.valid.evts.tpl | 51 - templates/include/form.valid.gapps-unsuspend.tpl | 29 - templates/include/form.valid.homonymes.tpl | 38 - templates/include/form.valid.listes.tpl | 76 - templates/include/form.valid.mark.tpl | 48 - templates/include/form.valid.medals.tpl | 29 - templates/include/form.valid.nl.tpl | 36 - templates/include/form.valid.nomusage.tpl | 46 - templates/include/form.valid.orange.tpl | 33 - templates/include/form.valid.paiements.tpl | 62 - templates/include/form.valid.photos.tpl | 32 - templates/include/form.valid.surveys.tpl | 37 - templates/include/massmailer-nav.tpl | 55 - templates/include/minifiche.tpl | 151 -- templates/include/plview.geoloc.tpl | 84 -- templates/include/plview.minifiche.tpl | 33 - templates/include/plview.multipage.tpl | 83 -- templates/include/plview.referent.tpl | 51 - templates/include/plview.trombi.tpl | 59 - templates/include/tips.tpl | 51 - templates/include/trombi.tpl | 66 - templates/lists/admin.tpl | 177 --- templates/lists/admin_all.tpl | 39 - templates/lists/annu.tpl | 107 -- templates/lists/archives.tpl | 29 - templates/lists/check.tpl | 49 - templates/lists/create.tpl | 200 --- templates/lists/delete.tpl | 69 - templates/lists/header_listes.tpl | 107 -- templates/lists/index.tpl | 111 -- templates/lists/liste.inc.tpl | 98 -- templates/lists/listes.inc.tpl | 40 - templates/lists/members.tpl | 162 --- templates/lists/moderate.tpl | 212 --- templates/lists/moderate_mail.tpl | 70 - templates/lists/moderate_sub.tpl | 48 - templates/lists/options.tpl | 225 --- templates/lists/soptions.tpl | 91 -- templates/marketing/broken.tpl | 94 -- templates/marketing/index.tpl | 68 - templates/marketing/marketing.mail.tpl | 45 - templates/marketing/private.tpl | 142 -- templates/marketing/promo.tpl | 83 -- templates/marketing/public.tpl | 105 -- templates/marketing/relance.mail.tpl | 56 - templates/marketing/relance.tpl | 62 - templates/marketing/this_week.tpl | 61 - templates/marketing/volontaire.tpl | 62 - templates/newsletter/admin.tpl | 47 - templates/newsletter/edit.tpl | 215 --- templates/newsletter/index.tpl | 69 - templates/newsletter/nl.mail.tpl | 132 -- templates/newsletter/show.tpl | 55 - templates/newsletter/submit.tpl | 137 -- templates/payment/index.tpl | 169 --- templates/payment/retour_paypal.tpl | 36 - templates/payment/xnet.tpl | 151 -- templates/platal/acces_smtp.tpl | 128 -- templates/platal/changeLog.tpl | 25 - templates/platal/exit.tpl | 55 - templates/platal/filrss.tpl | 70 - templates/platal/index.tpl | 91 -- templates/platal/motdepasse.success.tpl | 39 - templates/platal/motdepasse.tpl | 90 -- templates/platal/preferences.tpl | 127 -- templates/platal/recovery.tpl | 109 -- templates/platal/review.tpl | 37 - templates/platal/skins.tpl | 65 - templates/platal/tmpPWD.success.tpl | 34 - templates/platal/webredirect.tpl | 93 -- templates/profile/admin_decos.tpl | 88 -- templates/profile/admin_trombino.tpl | 51 - templates/profile/adresses.address.tpl | 100 -- templates/profile/adresses.tel.tpl | 36 - templates/profile/adresses.tpl | 40 - templates/profile/applis.js.tpl | 26 - templates/profile/base.tpl | 45 - templates/profile/deco.medal.tpl | 38 - templates/profile/deco.tpl | 62 - templates/profile/fiche_referent.tpl | 88 -- templates/profile/general.tpl | 274 ---- templates/profile/grades.js.tpl | 37 - templates/profile/groupesx.tpl | 59 - templates/profile/groups.tpl | 159 --- templates/profile/jobs.job.tpl | 165 --- templates/profile/jobs.secteur.tpl | 31 - templates/profile/jobs.tpl | 70 - templates/profile/mentor.tpl | 155 -- templates/profile/nomusage.tpl | 137 -- templates/profile/orange.tpl | 61 - templates/profile/profile.tpl | 209 --- templates/profile/referent.tpl | 108 -- templates/profile/skill.skill.tpl | 36 - templates/profile/skill.tpl | 96 -- templates/profile/trombino.tpl | 132 -- templates/register/breadcrumb.tpl | 32 - templates/register/end.tpl | 35 - templates/register/inscription.reussie.tpl | 43 - templates/register/inscrire.mail.tpl | 52 - templates/register/step0.tpl | 49 - templates/register/step1.tpl | 51 - templates/register/step2.tpl | 103 -- templates/register/step3.tpl | 91 -- templates/register/step4.tpl | 44 - templates/register/success.tpl | 174 --- templates/search/adv.form.tpl | 431 ------ templates/search/adv.grade.form.tpl | 32 - templates/search/adv.links.tpl | 48 - templates/search/index.tpl | 88 -- templates/search/quick.form.tpl | 69 - templates/search/quick.tpl | 137 -- templates/skin/common.backtrace.tpl | 80 -- templates/skin/common.bandeau.head.tpl | 24 - templates/skin/common.bandeau.tpl | 50 - templates/skin/common.content.tpl | 46 - templates/skin/common.devel.tpl | 39 - templates/skin/common.doctype.tpl | 30 - templates/skin/common.footer.tpl | 38 - templates/skin/common.header.tpl | 74 - templates/skin/common.menu.tpl | 100 -- templates/skin/common.title.header.tpl | 47 - templates/skin/common.triggers.tpl | 35 - templates/skin/default.tpl | 77 - templates/skin/espace.tpl | 78 - templates/skin/humlinux.tpl | 77 - templates/skin/keynote.tpl | 76 - templates/skin/linux.tpl | 78 - templates/skin/liteskin.tpl | 77 - templates/skin/nbviolet.tpl | 78 - templates/skin/newxorg.tpl | 77 - templates/skin/oldtimes.tpl | 81 -- templates/skin/openweb.tpl | 79 -- templates/skin/register.tpl | 63 - templates/skin/sharky.tpl | 80 -- templates/skin/spectral.tpl | 78 - templates/skin/trapped.tpl | 78 - templates/stats/coupure.tpl | 124 -- templates/stats/evolution_inscrits.tpl | 51 - templates/stats/index.tpl | 39 - templates/stats/nb_by_promo.tpl | 76 - templates/stats/profile.tpl | 65 - templates/survey/admin.tpl | 75 - templates/survey/confirm.tpl | 40 - templates/survey/edit_checkbox.tpl | 25 - templates/survey/edit_checkboxtable.tpl | 25 - templates/survey/edit_new.tpl | 38 - templates/survey/edit_newsurvey.tpl | 31 - templates/survey/edit_num.tpl | 25 - templates/survey/edit_question.tpl | 53 - templates/survey/edit_radio.tpl | 39 - templates/survey/edit_radiotable.tpl | 39 - templates/survey/edit_root.tpl | 75 - templates/survey/edit_survey.tpl | 37 - templates/survey/edit_text.tpl | 25 - templates/survey/edit_textarea.tpl | 25 - templates/survey/error.tpl | 44 - templates/survey/index.tpl | 80 -- templates/survey/show_checkbox.tpl | 39 - templates/survey/show_checkboxtable.tpl | 51 - templates/survey/show_num.tpl | 25 - templates/survey/show_question.tpl | 30 - templates/survey/show_radio.tpl | 39 - templates/survey/show_radiotable.tpl | 51 - templates/survey/show_root.tpl | 117 -- templates/survey/show_text.tpl | 34 - templates/survey/show_textarea.tpl | 34 - templates/survey/success.tpl | 32 - templates/xnet/admin.tpl | 64 - templates/xnet/deconnexion.tpl | 31 - templates/xnet/groupes.tpl | 65 - templates/xnet/include/descr.tpl | 72 - templates/xnet/index.tpl | 49 - templates/xnet/plan.tpl | 93 -- templates/xnet/skin.tpl | 237 ---- templates/xnetevents/admin.tpl | 283 ---- templates/xnetevents/calendar.tpl | 53 - templates/xnetevents/csv.tpl | 35 - templates/xnetevents/edit.tpl | 252 ---- templates/xnetevents/index.tpl | 217 --- templates/xnetevents/newpayment.mail.tpl | 38 - templates/xnetevents/subscribe.tpl | 142 -- templates/xnetgrp/announce-admin.tpl | 50 - templates/xnetgrp/announce-edit.tpl | 215 --- templates/xnetgrp/announce-rss.tpl | 53 - templates/xnetgrp/annuaire-admin.tpl | 61 - templates/xnetgrp/annuaire.tpl | 145 -- templates/xnetgrp/asso.tpl | 168 --- templates/xnetgrp/edit.tpl | 208 --- templates/xnetgrp/form.announce.tpl | 84 -- templates/xnetgrp/forum.tpl | 33 - templates/xnetgrp/inscrire.tpl | 84 -- templates/xnetgrp/mail.tpl | 150 -- templates/xnetgrp/membres-add.tpl | 105 -- templates/xnetgrp/membres-del.tpl | 60 - templates/xnetgrp/membres-edit.tpl | 193 --- templates/xnetgrp/membres-new-search.tpl | 46 - templates/xnetgrp/unsubscription-notif.mail.tpl | 39 - templates/xnetlists/alias-admin.tpl | 77 - templates/xnetlists/alias-create.tpl | 65 - templates/xnetlists/create.tpl | 113 -- templates/xnetlists/index.tpl | 142 -- templates/xnetlists/sync.tpl | 49 - upgrade/0.0.0_to_0.9.0/README | 6 - upgrade/0.0.0_to_0.9.0/emails.sql | 14 - upgrade/0.0.0_to_0.9.0/migration.sql | 70 - upgrade/0.0.0_to_0.9.0/new_newsletter.sh | 8 - upgrade/0.0.0_to_0.9.0/newsleter.sql | 5 - upgrade/0.0.0_to_0.9.0/skins.sql | 49 - upgrade/0.0.0_to_0.9.0/to_mailman.py | 267 ---- upgrade/0.9.1/mailman_update.py | 64 - upgrade/0.9.1/newsleter.sql | 61 - upgrade/0.9.1/newsleter_art.sql | 360 ----- upgrade/0.9.1/newsleter_cat.sql | 16 - upgrade/0.9.1/newsleter_ins.sql | 3 - upgrade/0.9.1/update.sh | 49 - upgrade/0.9.10/00_geoloc.sql | 24 - upgrade/0.9.10/01_events.sql | 5 - upgrade/0.9.10/02_tels.sql | 13 - upgrade/0.9.10/03_xnet.sql | 4 - upgrade/0.9.10/04_passwd.sql | 1 - upgrade/0.9.10/update.sh | 32 - upgrade/0.9.11/01_trezo.sql | 1 - upgrade/0.9.11/02_logger.sql | 3 - upgrade/0.9.11/03_xnet.sql | 11 - upgrade/0.9.11/04_admin.sql | 1 - upgrade/0.9.11/05_email_watch.sql | 10 - upgrade/0.9.11/06_validations.sql | 6 - upgrade/0.9.11/07_emails.sql | 8 - upgrade/0.9.11/08_skins.sql | 4 - upgrade/0.9.11/update.sh | 32 - upgrade/0.9.12/01_xnet.sql | 27 - upgrade/0.9.12/02_newsletter.sql | 4 - upgrade/0.9.12/03_validation.sql | 1 - upgrade/0.9.12/04_paiement.sql | 1 - upgrade/0.9.12/update.sh | 32 - upgrade/0.9.13/01_tips.sql | 14 - upgrade/0.9.13/02_xnet.sql | 5 - upgrade/0.9.13/03_medals.sql | 4 - upgrade/0.9.13/04_axletter.sql | 34 - upgrade/0.9.13/05_ip_watcher.sql | 11 - upgrade/0.9.13/06_mx_watch.sql | 8 - upgrade/0.9.13/07_logger.sql | 10 - upgrade/0.9.13/update.sh | 32 - upgrade/0.9.14/01_auth_user_md5.sql | 16 - upgrade/0.9.14/02_auth_user_quick.sql | 3 - upgrade/0.9.14/03_evenements.sql | 16 - upgrade/0.9.14/04_newsletter.sql | 12 - upgrade/0.9.14/05_marketing.sql | 13 - upgrade/0.9.14/06_search.sql | 5 - upgrade/0.9.14/07_survey.sql | 35 - upgrade/0.9.14/08_autocomplete.sql | 7 - upgrade/0.9.14/09_emails.sql | 3 - upgrade/0.9.14/connect.db.inc.php | 31 - upgrade/0.9.14/geoloc.utf8.php | 45 - upgrade/0.9.14/update.sh | 64 - upgrade/0.9.14/wiki.utf8.sh | 26 - upgrade/0.9.15/01_mailman.sql | 13 - upgrade/0.9.15/02_entreprises.sql | 10 - upgrade/0.9.15/03_asso.sql | 5 - upgrade/0.9.15/04_announces.sql | 6 - upgrade/0.9.15/05_payment.sql | 4 - upgrade/0.9.15/06_mail_send.sql | 8 - upgrade/0.9.15/07_forums.sql | 5 - upgrade/0.9.15/update.sh | 32 - upgrade/0.9.16/00_profile.sql | 13 - upgrade/0.9.16/01_utf8.sql | 2 - upgrade/0.9.16/02_axletter.sql | 3 - upgrade/0.9.16/03_mail_storage.sql | 4 - upgrade/0.9.16/04_ip.sql | 44 - upgrade/0.9.16/05_xnet_announce_photo.sql | 16 - upgrade/0.9.16/06_google_apps.sql | 86 -- upgrade/0.9.16/07_google_apps.sql | 3 - upgrade/0.9.16/08_forums.sql | 15 - upgrade/0.9.16/09_watch_cat.sql | 7 - upgrade/0.9.16/10_logger.sql | 10 - upgrade/0.9.16/connect.db.inc.php | 28 - upgrade/0.9.16/pr11_nl.sql | 3 - upgrade/0.9.16/update.sh | 43 - upgrade/0.9.16/upgrade_lists.py | 53 - upgrade/0.9.16/xnetevents.list.php | 66 - upgrade/0.9.17/00_password.sql | 8 - upgrade/0.9.17/01_smallint_to_int.sql | 39 - upgrade/0.9.17/02_requests_hidden.sql | 7 - upgrade/0.9.17/03_xnetgrp.sql | 7 - upgrade/0.9.17/update.sh | 19 - upgrade/0.9.2/00_auth_user_quicl.sql | 14 - upgrade/0.9.2/99_virtual.sql | 36 - upgrade/0.9.2/clean.sql | 3 - upgrade/0.9.2/del_identification.sql | 16 - upgrade/0.9.2/nationalites.sql | 97 -- upgrade/0.9.2/notifs.sql | 53 - upgrade/0.9.2/update.sh | 35 - upgrade/0.9.3/10_aliases.sql | 11 - upgrade/0.9.3/20_skins.sql | 2 - upgrade/0.9.3/30_auth_user_md5.sql | 35 - upgrade/0.9.3/40_ins_confirmees.sql | 1 - upgrade/0.9.3/50_admin.sql | 90 -- upgrade/0.9.3/60_banana.sql | 1 - upgrade/0.9.3/70_money.sql | 25 - upgrade/0.9.3/80_envoidirect.sql | 6 - upgrade/0.9.3/81_encours.sql | 4 - upgrade/0.9.3/85_bounces_proxy.sql | 20 - upgrade/0.9.3/update.sh | 31 - upgrade/0.9.4/10_evts.sql | 3 - upgrade/0.9.4/20_register.sql | 82 -- upgrade/0.9.4/30_auth_user_quick.sql | 10 - upgrade/0.9.4/40_requests.sql | 2 - upgrade/0.9.4/50_entreprises.sql | 1 - upgrade/0.9.4/60_watch.sql | 13 - upgrade/0.9.4/70_newsletter.sql | 3 - upgrade/0.9.4/80_medals.sql | 86 -- upgrade/0.9.4/90_emails.sql | 1 - upgrade/0.9.4/update.sh | 36 - upgrade/0.9.5/10_auth_user_quick.sql | 16 - upgrade/0.9.5/20_adresses.sql | 5 - upgrade/0.9.5/30_entreprises.sql | 13 - upgrade/0.9.5/40_photo.sql | 2 - upgrade/0.9.5/50_aliases.sql | 4 - upgrade/0.9.5/60_auth_user_md5.sql | 2 - upgrade/0.9.5/70_admin_a.sql | 2 - upgrade/0.9.5/80_paiement.sql | 2 - upgrade/0.9.5/update.sh | 19 - upgrade/0.9.6/00_xnet.sql | 18 - upgrade/0.9.6/10_search_name.sql | 12 - upgrade/0.9.6/20_watch_cat.sql | 1 - upgrade/0.9.6/30_auth_user_md5.sql | 3 - upgrade/0.9.6/update.sh | 32 - upgrade/0.9.7/00_xnet.sql | 44 - upgrade/0.9.7/01_geoloc.sql | 37 - upgrade/0.9.7/update.sh | 32 - upgrade/0.9.8/00_admin.sql | 2 - upgrade/0.9.8/update.sh | 32 - upgrade/0.9.9/00_xnet.sql | 3 - upgrade/0.9.9/01_adresses.sql | 3 - upgrade/0.9.9/update.sh | 32 - upgrade/inc/pervasive.sh | 31 - 1146 files changed, 70286 deletions(-) delete mode 100644 AUTHORS delete mode 100644 ChangeLog delete mode 100644 Makefile delete mode 100755 bin/banana.feedgen.php delete mode 100755 bin/banana.spoolgen.php delete mode 100644 bin/connect.db.inc.php delete mode 100755 bin/cron/axletter.send.php delete mode 100755 bin/cron/banana.feedgen.php delete mode 100755 bin/cron/checkdb.php delete mode 100755 bin/cron/clean.php delete mode 120000 bin/cron/connect.db.inc.php delete mode 100755 bin/cron/cron_ml_moderate.php delete mode 100755 bin/cron/cron_validations.php delete mode 100755 bin/cron/emails.check.php delete mode 100755 bin/cron/google_apps.php delete mode 100755 bin/cron/homonymes.php delete mode 100755 bin/cron/notifs.birthday.php delete mode 100755 bin/cron/notifs.send.php delete mode 100755 bin/cron/rapports_inscription.php delete mode 100755 bin/csv2sql.php delete mode 100755 bin/devel/lists.foreach_template.py delete mode 100755 bin/devel/xhtml.classes.pl delete mode 100755 bin/devel/xhtml.validate.pl delete mode 100755 bin/emails.broken.helper.php delete mode 100755 bin/emails.broken.php delete mode 100755 bin/getuser.sh delete mode 100755 bin/kill_sessions.sh delete mode 100755 bin/lists.create_promo.php delete mode 100755 bin/lists.make_tpl.sh delete mode 100755 bin/lists.mhonarc_by_month.pl delete mode 100755 bin/lists.mhonarc_pipe.sh delete mode 100755 bin/lists.rpc.py delete mode 100755 bin/marketPromo.php delete mode 100755 bin/newsletter.send.php delete mode 100755 bin/search.rebuild_db.php delete mode 100644 classes/xnet.php delete mode 100644 classes/xnetpage.php delete mode 100644 classes/xnetsession.php delete mode 100644 classes/xorgpage.php delete mode 100644 classes/xorgsession.php delete mode 100644 configs/.gitignore delete mode 100644 configs/mails.conf delete mode 100644 configs/platal.cron.in delete mode 100644 configs/platal.ini delete mode 100644 configs/pmwiki.intermap.txt delete mode 100644 htdocs/.gitignore delete mode 100644 htdocs/.htaccess.in delete mode 100644 htdocs/css/.gitignore delete mode 100644 htdocs/css/ax.css delete mode 100644 htdocs/css/bandeau.css delete mode 100644 htdocs/css/base.css delete mode 100644 htdocs/css/default.css delete mode 100644 htdocs/css/espace.css delete mode 100644 htdocs/css/humlinux.css delete mode 100644 htdocs/css/igoogle.css delete mode 100644 htdocs/css/keynote.css delete mode 100644 htdocs/css/linux.css delete mode 100644 htdocs/css/liteskin.css delete mode 100644 htdocs/css/nbviolet.css delete mode 100644 htdocs/css/newxorg.css delete mode 100644 htdocs/css/nl.css delete mode 100644 htdocs/css/oldtimes.css delete mode 100644 htdocs/css/openweb.css delete mode 100644 htdocs/css/print.css delete mode 100644 htdocs/css/sharky.css delete mode 100644 htdocs/css/spectral.css delete mode 100644 htdocs/css/trapped.css delete mode 100644 htdocs/css/wiki.css delete mode 100644 htdocs/css/xnet.css delete mode 100644 htdocs/images/.gitignore delete mode 100644 htdocs/images/L.gif delete mode 100644 htdocs/images/T.gif delete mode 100644 htdocs/images/asso-montants.png delete mode 100644 htdocs/images/asso.png delete mode 100644 htdocs/images/ax_mail_header.jpg delete mode 100644 htdocs/images/bandeau.jpg delete mode 100644 htdocs/images/barre.png delete mode 100644 htdocs/images/barre_small.png delete mode 100644 htdocs/images/carre.jpg delete mode 100644 htdocs/images/dflt_carre.jpg delete mode 100644 htdocs/images/dn.png delete mode 100644 htdocs/images/equipe.jpg delete mode 100755 htdocs/images/favicon.ico delete mode 100644 htdocs/images/favicon.png delete mode 100644 htdocs/images/fin_logo.jpg delete mode 100644 htdocs/images/flags/AD.gif delete mode 100644 htdocs/images/flags/AE.gif delete mode 100644 htdocs/images/flags/AF.gif delete mode 100644 htdocs/images/flags/AG.gif delete mode 100644 htdocs/images/flags/AI.gif delete mode 100644 htdocs/images/flags/AL.gif delete mode 100644 htdocs/images/flags/AM.gif delete mode 100644 htdocs/images/flags/AN.gif delete mode 100644 htdocs/images/flags/AO.gif delete mode 100644 htdocs/images/flags/AR.gif delete mode 100644 htdocs/images/flags/AS.gif delete mode 100644 htdocs/images/flags/AT.gif delete mode 100644 htdocs/images/flags/AU.gif delete mode 100644 htdocs/images/flags/AW.gif delete mode 100644 htdocs/images/flags/AX.gif delete mode 100644 htdocs/images/flags/AZ.gif delete mode 100644 htdocs/images/flags/BA.gif delete mode 100644 htdocs/images/flags/BB.gif delete mode 100644 htdocs/images/flags/BD.gif delete mode 100644 htdocs/images/flags/BE.gif delete mode 100644 htdocs/images/flags/BF.gif delete mode 100644 htdocs/images/flags/BG.gif delete mode 100644 htdocs/images/flags/BH.gif delete mode 100644 htdocs/images/flags/BI.gif delete mode 100644 htdocs/images/flags/BJ.gif delete mode 100644 htdocs/images/flags/BM.gif delete mode 100644 htdocs/images/flags/BN.gif delete mode 100644 htdocs/images/flags/BO.gif delete mode 100644 htdocs/images/flags/BR.gif delete mode 100644 htdocs/images/flags/BS.gif delete mode 100644 htdocs/images/flags/BT.gif delete mode 100644 htdocs/images/flags/BV.gif delete mode 100644 htdocs/images/flags/BW.gif delete mode 100644 htdocs/images/flags/BY.gif delete mode 100644 htdocs/images/flags/BZ.gif delete mode 100644 htdocs/images/flags/CA.gif delete mode 100644 htdocs/images/flags/CC.gif delete mode 100644 htdocs/images/flags/CD.gif delete mode 100644 htdocs/images/flags/CF.gif delete mode 100644 htdocs/images/flags/CG.gif delete mode 100644 htdocs/images/flags/CH.gif delete mode 100644 htdocs/images/flags/CI.gif delete mode 100644 htdocs/images/flags/CK.gif delete mode 100644 htdocs/images/flags/CL.gif delete mode 100644 htdocs/images/flags/CM.gif delete mode 100644 htdocs/images/flags/CN.gif delete mode 100644 htdocs/images/flags/CO.gif delete mode 100644 htdocs/images/flags/CR.gif delete mode 100644 htdocs/images/flags/CS.gif delete mode 100644 htdocs/images/flags/CU.gif delete mode 100644 htdocs/images/flags/CV.gif delete mode 100644 htdocs/images/flags/CX.gif delete mode 100644 htdocs/images/flags/CY.gif delete mode 100644 htdocs/images/flags/CZ.gif delete mode 100644 htdocs/images/flags/DE.gif delete mode 100644 htdocs/images/flags/DJ.gif delete mode 100644 htdocs/images/flags/DK.gif delete mode 100644 htdocs/images/flags/DM.gif delete mode 100644 htdocs/images/flags/DO.gif delete mode 100644 htdocs/images/flags/DZ.gif delete mode 100644 htdocs/images/flags/EC.gif delete mode 100644 htdocs/images/flags/EE.gif delete mode 100644 htdocs/images/flags/EG.gif delete mode 100644 htdocs/images/flags/EH.gif delete mode 100644 htdocs/images/flags/ER.gif delete mode 100644 htdocs/images/flags/ES.gif delete mode 100644 htdocs/images/flags/ET.gif delete mode 100644 htdocs/images/flags/FI.gif delete mode 100644 htdocs/images/flags/FJ.gif delete mode 100644 htdocs/images/flags/FK.gif delete mode 100644 htdocs/images/flags/FM.gif delete mode 100644 htdocs/images/flags/FO.gif delete mode 100644 htdocs/images/flags/FR.gif delete mode 100644 htdocs/images/flags/GA.gif delete mode 100644 htdocs/images/flags/GB.gif delete mode 100644 htdocs/images/flags/GD.gif delete mode 100644 htdocs/images/flags/GE.gif delete mode 100644 htdocs/images/flags/GG.gif delete mode 100644 htdocs/images/flags/GH.gif delete mode 100644 htdocs/images/flags/GI.gif delete mode 100644 htdocs/images/flags/GL.gif delete mode 100644 htdocs/images/flags/GM.gif delete mode 100644 htdocs/images/flags/GN.gif delete mode 100644 htdocs/images/flags/GP.gif delete mode 100644 htdocs/images/flags/GQ.gif delete mode 100644 htdocs/images/flags/GR.gif delete mode 100644 htdocs/images/flags/GS.gif delete mode 100644 htdocs/images/flags/GT.gif delete mode 100644 htdocs/images/flags/GU.gif delete mode 100644 htdocs/images/flags/GW.gif delete mode 100644 htdocs/images/flags/GY.gif delete mode 100644 htdocs/images/flags/HK.gif delete mode 100644 htdocs/images/flags/HN.gif delete mode 100644 htdocs/images/flags/HR.gif delete mode 100644 htdocs/images/flags/HT.gif delete mode 100644 htdocs/images/flags/HU.gif delete mode 100644 htdocs/images/flags/ID.gif delete mode 100644 htdocs/images/flags/IE.gif delete mode 100644 htdocs/images/flags/IL.gif delete mode 100644 htdocs/images/flags/IM.gif delete mode 100644 htdocs/images/flags/IN.gif delete mode 100644 htdocs/images/flags/IO.gif delete mode 100644 htdocs/images/flags/IQ.gif delete mode 100644 htdocs/images/flags/IR.gif delete mode 100644 htdocs/images/flags/IS.gif delete mode 100644 htdocs/images/flags/IT.gif delete mode 100644 htdocs/images/flags/JE.gif delete mode 100644 htdocs/images/flags/JM.gif delete mode 100644 htdocs/images/flags/JO.gif delete mode 100644 htdocs/images/flags/JP.gif delete mode 100644 htdocs/images/flags/KE.gif delete mode 100644 htdocs/images/flags/KG.gif delete mode 100644 htdocs/images/flags/KH.gif delete mode 100644 htdocs/images/flags/KI.gif delete mode 100644 htdocs/images/flags/KM.gif delete mode 100644 htdocs/images/flags/KN.gif delete mode 100644 htdocs/images/flags/KP.gif delete mode 100644 htdocs/images/flags/KR.gif delete mode 100644 htdocs/images/flags/KW.gif delete mode 100644 htdocs/images/flags/KY.gif delete mode 100644 htdocs/images/flags/KZ.gif delete mode 100644 htdocs/images/flags/LA.gif delete mode 100644 htdocs/images/flags/LB.gif delete mode 100644 htdocs/images/flags/LC.gif delete mode 100644 htdocs/images/flags/LI.gif delete mode 100644 htdocs/images/flags/LK.gif delete mode 100644 htdocs/images/flags/LR.gif delete mode 100644 htdocs/images/flags/LS.gif delete mode 100644 htdocs/images/flags/LT.gif delete mode 100644 htdocs/images/flags/LU.gif delete mode 100644 htdocs/images/flags/LV.gif delete mode 100644 htdocs/images/flags/LY.gif delete mode 100644 htdocs/images/flags/MA.gif delete mode 100644 htdocs/images/flags/MC.gif delete mode 100644 htdocs/images/flags/MD.gif delete mode 100644 htdocs/images/flags/MG.gif delete mode 100644 htdocs/images/flags/MH.gif delete mode 100644 htdocs/images/flags/MK.gif delete mode 100644 htdocs/images/flags/ML.gif delete mode 100644 htdocs/images/flags/MM.gif delete mode 100644 htdocs/images/flags/MN.gif delete mode 100644 htdocs/images/flags/MO.gif delete mode 100644 htdocs/images/flags/MP.gif delete mode 100644 htdocs/images/flags/MQ.gif delete mode 100644 htdocs/images/flags/MR.gif delete mode 100644 htdocs/images/flags/MS.gif delete mode 100644 htdocs/images/flags/MT.gif delete mode 100644 htdocs/images/flags/MU.gif delete mode 100644 htdocs/images/flags/MV.gif delete mode 100644 htdocs/images/flags/MW.gif delete mode 100644 htdocs/images/flags/MX.gif delete mode 100644 htdocs/images/flags/MY.gif delete mode 100644 htdocs/images/flags/MZ.gif delete mode 100644 htdocs/images/flags/NA.gif delete mode 100644 htdocs/images/flags/NC.gif delete mode 100644 htdocs/images/flags/NE.gif delete mode 100644 htdocs/images/flags/NF.gif delete mode 100644 htdocs/images/flags/NG.gif delete mode 100644 htdocs/images/flags/NI.gif delete mode 100644 htdocs/images/flags/NL.gif delete mode 100644 htdocs/images/flags/NO.gif delete mode 100644 htdocs/images/flags/NP.gif delete mode 100644 htdocs/images/flags/NR.gif delete mode 100644 htdocs/images/flags/NU.gif delete mode 100644 htdocs/images/flags/NZ.gif delete mode 100644 htdocs/images/flags/OM.gif delete mode 100644 htdocs/images/flags/PA.gif delete mode 100644 htdocs/images/flags/PC.gif delete mode 100644 htdocs/images/flags/PE.gif delete mode 100644 htdocs/images/flags/PF.gif delete mode 100644 htdocs/images/flags/PG.gif delete mode 100644 htdocs/images/flags/PH.gif delete mode 100644 htdocs/images/flags/PK.gif delete mode 100644 htdocs/images/flags/PL.gif delete mode 100644 htdocs/images/flags/PM.gif delete mode 100644 htdocs/images/flags/PN.gif delete mode 100644 htdocs/images/flags/PR.gif delete mode 100644 htdocs/images/flags/PS.gif delete mode 100644 htdocs/images/flags/PT.gif delete mode 100644 htdocs/images/flags/PW.gif delete mode 100644 htdocs/images/flags/PY.gif delete mode 100644 htdocs/images/flags/QA.gif delete mode 100644 htdocs/images/flags/RO.gif delete mode 100644 htdocs/images/flags/RU.gif delete mode 100644 htdocs/images/flags/RW.gif delete mode 100644 htdocs/images/flags/SA.gif delete mode 100644 htdocs/images/flags/SB.gif delete mode 100644 htdocs/images/flags/SC.gif delete mode 100644 htdocs/images/flags/SD.gif delete mode 100644 htdocs/images/flags/SE.gif delete mode 100644 htdocs/images/flags/SG.gif delete mode 100644 htdocs/images/flags/SH.gif delete mode 100644 htdocs/images/flags/SI.gif delete mode 100644 htdocs/images/flags/SK.gif delete mode 100644 htdocs/images/flags/SL.gif delete mode 100644 htdocs/images/flags/SM.gif delete mode 100644 htdocs/images/flags/SN.gif delete mode 100644 htdocs/images/flags/SO.gif delete mode 100644 htdocs/images/flags/SR.gif delete mode 100644 htdocs/images/flags/ST.gif delete mode 100644 htdocs/images/flags/SU.gif delete mode 100644 htdocs/images/flags/SV.gif delete mode 100644 htdocs/images/flags/SY.gif delete mode 100644 htdocs/images/flags/SZ.gif delete mode 100644 htdocs/images/flags/TC.gif delete mode 100644 htdocs/images/flags/TD.gif delete mode 100644 htdocs/images/flags/TF.gif delete mode 100644 htdocs/images/flags/TG.gif delete mode 100644 htdocs/images/flags/TH.gif delete mode 100644 htdocs/images/flags/TJ.gif delete mode 100644 htdocs/images/flags/TK.gif delete mode 100644 htdocs/images/flags/TL.gif delete mode 100644 htdocs/images/flags/TM.gif delete mode 100644 htdocs/images/flags/TN.gif delete mode 100644 htdocs/images/flags/TO.gif delete mode 100644 htdocs/images/flags/TR.gif delete mode 100644 htdocs/images/flags/TT.gif delete mode 100644 htdocs/images/flags/TV.gif delete mode 100644 htdocs/images/flags/TW.gif delete mode 100644 htdocs/images/flags/TZ.gif delete mode 100644 htdocs/images/flags/UA.gif delete mode 100644 htdocs/images/flags/UG.gif delete mode 100644 htdocs/images/flags/UM.gif delete mode 100644 htdocs/images/flags/US.gif delete mode 100644 htdocs/images/flags/UY.gif delete mode 100644 htdocs/images/flags/UZ.gif delete mode 100644 htdocs/images/flags/VA.gif delete mode 100644 htdocs/images/flags/VC.gif delete mode 100644 htdocs/images/flags/VE.gif delete mode 100644 htdocs/images/flags/VG.gif delete mode 100644 htdocs/images/flags/VI.gif delete mode 100644 htdocs/images/flags/VN.gif delete mode 100644 htdocs/images/flags/VU.gif delete mode 100644 htdocs/images/flags/WF.gif delete mode 100644 htdocs/images/flags/WS.gif delete mode 100644 htdocs/images/flags/YE.gif delete mode 100644 htdocs/images/flags/YT.gif delete mode 100644 htdocs/images/flags/YU.gif delete mode 100644 htdocs/images/flags/ZA.gif delete mode 100644 htdocs/images/flags/ZM.gif delete mode 100644 htdocs/images/flags/ZW.gif delete mode 100644 htdocs/images/goodies/README delete mode 100644 htdocs/images/goodies/add-google-calendar.gif delete mode 100644 htdocs/images/goodies/add-google.gif delete mode 100644 htdocs/images/goodies/add-netvibes.gif delete mode 100644 htdocs/images/goodies/add-newsgator.gif delete mode 100644 htdocs/images/goodies/add-yahoo.gif delete mode 100644 htdocs/images/googleapps/.gitignore delete mode 100644 htdocs/images/icons/add.gif delete mode 100644 htdocs/images/icons/arrow_refresh.gif delete mode 100644 htdocs/images/icons/bell.gif delete mode 100644 htdocs/images/icons/bin_empty.gif delete mode 100644 htdocs/images/icons/book_next.gif delete mode 100644 htdocs/images/icons/bullet_arrow_down.gif delete mode 100644 htdocs/images/icons/bullet_arrow_up.gif delete mode 100644 htdocs/images/icons/calendar_view_day.gif delete mode 100644 htdocs/images/icons/clock.gif delete mode 100644 htdocs/images/icons/comments.gif delete mode 100644 htdocs/images/icons/cross.gif delete mode 100644 htdocs/images/icons/date_edit.gif delete mode 100644 htdocs/images/icons/delete.gif delete mode 100644 htdocs/images/icons/email.gif delete mode 100644 htdocs/images/icons/email_attach.gif delete mode 100644 htdocs/images/icons/error.gif delete mode 100644 htdocs/images/icons/feed.gif delete mode 100644 htdocs/images/icons/feed_add.gif delete mode 100644 htdocs/images/icons/flag_green.gif delete mode 100644 htdocs/images/icons/flag_orange.gif delete mode 100644 htdocs/images/icons/flag_red.gif delete mode 100644 htdocs/images/icons/group.gif delete mode 100644 htdocs/images/icons/information.gif delete mode 100644 htdocs/images/icons/lightbulb.gif delete mode 100644 htdocs/images/icons/lock.gif delete mode 100644 htdocs/images/icons/lock_add.gif delete mode 100644 htdocs/images/icons/lock_open.gif delete mode 100644 htdocs/images/icons/magnifier.gif delete mode 100644 htdocs/images/icons/map.gif delete mode 100644 htdocs/images/icons/money.gif delete mode 100644 htdocs/images/icons/null.gif delete mode 100644 htdocs/images/icons/package_add.gif delete mode 100644 htdocs/images/icons/package_delete.gif delete mode 100644 htdocs/images/icons/page_edit.gif delete mode 100644 htdocs/images/icons/resultset_first.gif delete mode 100644 htdocs/images/icons/resultset_last.gif delete mode 100644 htdocs/images/icons/resultset_next.gif delete mode 100644 htdocs/images/icons/resultset_previous.gif delete mode 100644 htdocs/images/icons/table.gif delete mode 100644 htdocs/images/icons/thumb_down.gif delete mode 100644 htdocs/images/icons/thumb_up.gif delete mode 100644 htdocs/images/icons/tick.gif delete mode 100644 htdocs/images/icons/user_edit.gif delete mode 100644 htdocs/images/icons/user_gray.gif delete mode 100644 htdocs/images/icons/user_suit.gif delete mode 100644 htdocs/images/icons/vcard.gif delete mode 100644 htdocs/images/icons/wand.gif delete mode 100644 htdocs/images/icons/weather_cloudy.gif delete mode 100644 htdocs/images/icons/world_go.gif delete mode 100644 htdocs/images/icons/wrench.gif delete mode 100644 htdocs/images/k1.gif delete mode 100644 htdocs/images/k2.gif delete mode 100644 htdocs/images/lists_date.png delete mode 100644 htdocs/images/lists_first.png delete mode 100644 htdocs/images/lists_firstia.png delete mode 100644 htdocs/images/lists_last.png delete mode 100644 htdocs/images/lists_lastia.png delete mode 100644 htdocs/images/lists_next.png delete mode 100644 htdocs/images/lists_nextia.png delete mode 100644 htdocs/images/lists_prev.png delete mode 100644 htdocs/images/lists_previa.png delete mode 100644 htdocs/images/lists_thread.png delete mode 100644 htdocs/images/logo-xnet.png delete mode 100644 htdocs/images/logo-xorg.png delete mode 100644 htdocs/images/logo.jpg delete mode 100644 htdocs/images/logo.png delete mode 100644 htdocs/images/logoBR.jpg delete mode 100644 htdocs/images/logo_binets.png delete mode 100644 htdocs/images/logo_evenements.png delete mode 100644 htdocs/images/logo_groupesx.png delete mode 100644 htdocs/images/logo_institutions.png delete mode 100644 htdocs/images/logo_plan.png delete mode 100644 htdocs/images/logo_promotions.png delete mode 100644 htdocs/images/logo_recherche.png delete mode 100644 htdocs/images/logo_xorg_nl.png delete mode 100644 htdocs/images/medals/bundesverdienstkreuz.jpg delete mode 100644 htdocs/images/medals/croix_1418.jpg delete mode 100644 htdocs/images/medals/croix_3945.jpg delete mode 100644 htdocs/images/medals/croix_cc.jpg delete mode 100644 htdocs/images/medals/croix_cv.jpg delete mode 100644 htdocs/images/medals/croix_cv1418.jpg delete mode 100644 htdocs/images/medals/croix_toe.jpg delete mode 100644 htdocs/images/medals/croix_vm.jpg delete mode 100644 htdocs/images/medals/honn_acd.jpg delete mode 100644 htdocs/images/medals/honn_adfs.jpg delete mode 100644 htdocs/images/medals/honn_ae.jpg delete mode 100644 htdocs/images/medals/honn_agr.jpg delete mode 100644 htdocs/images/medals/honn_ap.jpg delete mode 100644 htdocs/images/medals/honn_dou.jpg delete mode 100644 htdocs/images/medals/honn_ef.jpg delete mode 100644 htdocs/images/medals/honn_epi.jpg delete mode 100644 htdocs/images/medals/honn_mci.jpg delete mode 100644 htdocs/images/medals/honn_pd.jpg delete mode 100644 htdocs/images/medals/honn_pen.jpg delete mode 100644 htdocs/images/medals/honn_sm.jpg delete mode 100644 htdocs/images/medals/mili_aero.jpg delete mode 100644 htdocs/images/medals/mili_an.jpg delete mode 100644 htdocs/images/medals/mili_defnat.jpg delete mode 100644 htdocs/images/medals/mili_ev.jpg delete mode 100644 htdocs/images/medals/mili_eva.jpg delete mode 100644 htdocs/images/medals/mili_gn.jpg delete mode 100644 htdocs/images/medals/mili_ib.jpg delete mode 100644 htdocs/images/medals/mili_mili.jpg delete mode 100644 htdocs/images/medals/mili_om.jpg delete mode 100644 htdocs/images/medals/mili_smv.jpg delete mode 100644 htdocs/images/medals/mili_ssa.jpg delete mode 100644 htdocs/images/medals/mili_trn.jpg delete mode 100644 htdocs/images/medals/ordre_al.jpg delete mode 100644 htdocs/images/medals/ordre_lib.jpg delete mode 100644 htdocs/images/medals/ordre_ma.jpg delete mode 100644 htdocs/images/medals/ordre_mm.jpg delete mode 100644 htdocs/images/medals/ordre_nm.jpg delete mode 100644 htdocs/images/medals/ordre_onlh.jpg delete mode 100644 htdocs/images/medals/ordre_pa.jpg delete mode 100644 htdocs/images/medals/prix_fields.gif delete mode 100644 htdocs/images/medals/prix_nb_eco.jpg delete mode 100644 htdocs/images/medals/prix_nb_lit.jpg delete mode 100644 htdocs/images/medals/prix_nb_med.jpg delete mode 100644 htdocs/images/medals/prix_nb_paix.jpg delete mode 100644 htdocs/images/medals/prix_nb_pc.jpg delete mode 100644 htdocs/images/medals/resi_cvr.jpg delete mode 100644 htdocs/images/medals/resi_dr.jpg delete mode 100644 htdocs/images/medals/resi_rf.jpg delete mode 100644 htdocs/images/medals/thumb/.gitignore delete mode 100644 htdocs/images/none.png delete mode 100644 htdocs/images/oval.png delete mode 100644 htdocs/images/oval2.png delete mode 100644 htdocs/images/parfait.jpg delete mode 100644 htdocs/images/puce.png delete mode 100644 htdocs/images/skins/Defaut.png delete mode 100644 htdocs/images/skins/Espace.png delete mode 100644 htdocs/images/skins/HumLinux.png delete mode 100644 htdocs/images/skins/Keynote.png delete mode 100644 htdocs/images/skins/Linux.png delete mode 100644 htdocs/images/skins/LiteSkin.png delete mode 100644 htdocs/images/skins/NBviolet.png delete mode 100644 htdocs/images/skins/NewXorg.png delete mode 100644 htdocs/images/skins/OldTimes.png delete mode 100644 htdocs/images/skins/OpenWeb.png delete mode 100644 htdocs/images/skins/Sharky.png delete mode 100644 htdocs/images/skins/Spectral.png delete mode 100644 htdocs/images/skins/Trapped.png delete mode 100644 htdocs/images/skins/default_ban.jpg delete mode 100644 htdocs/images/skins/default_headlogo.jpg delete mode 100644 htdocs/images/skins/default_lesX.gif delete mode 100644 htdocs/images/skins/default_snapshot.png delete mode 100644 htdocs/images/skins/default_titre.gif delete mode 100644 htdocs/images/skins/espace_ban.jpg delete mode 100644 htdocs/images/skins/espace_lesX.gif delete mode 100644 htdocs/images/skins/espace_logo.gif delete mode 100644 htdocs/images/skins/espace_menu.jpg delete mode 100644 htdocs/images/skins/espace_titre.jpg delete mode 100644 htdocs/images/skins/humlinux_background.jpg delete mode 100644 htdocs/images/skins/humlinux_lesX.gif delete mode 100644 htdocs/images/skins/humlinux_logo.gif delete mode 100644 htdocs/images/skins/humlinux_menu.jpg delete mode 100644 htdocs/images/skins/keynote_ban.png delete mode 100644 htdocs/images/skins/keynote_bg.png delete mode 100644 htdocs/images/skins/keynote_bg_lighter.png delete mode 100644 htdocs/images/skins/keynote_bg_verylighter.png delete mode 100644 htdocs/images/skins/keynote_logo.png delete mode 100644 htdocs/images/skins/keynote_title.gif delete mode 100644 htdocs/images/skins/keynote_topborder.png delete mode 100644 htdocs/images/skins/linux_ban.jpg delete mode 100644 htdocs/images/skins/linux_lesX.jpg delete mode 100644 htdocs/images/skins/linux_logo.jpg delete mode 100644 htdocs/images/skins/linux_menu.gif delete mode 100644 htdocs/images/skins/linux_snapshot.png delete mode 100644 htdocs/images/skins/linux_titre.jpg delete mode 100644 htdocs/images/skins/liteskin_logo.png delete mode 100644 htdocs/images/skins/liteskin_titre.png delete mode 100644 htdocs/images/skins/nbviolet_ban.jpg delete mode 100644 htdocs/images/skins/nbviolet_lesX.gif delete mode 100644 htdocs/images/skins/nbviolet_logo.gif delete mode 100644 htdocs/images/skins/nbviolet_menu.jpg delete mode 100644 htdocs/images/skins/nbviolet_titre.jpg delete mode 100644 htdocs/images/skins/newxorg_background.jpg delete mode 100644 htdocs/images/skins/newxorg_ban.gif delete mode 100644 htdocs/images/skins/newxorg_ban.png delete mode 100644 htdocs/images/skins/newxorg_logo.jpg delete mode 100644 htdocs/images/skins/newxorg_menu.jpg delete mode 100644 htdocs/images/skins/newxorg_titre.jpg delete mode 100644 htdocs/images/skins/oldtimes_ban.jpg delete mode 100644 htdocs/images/skins/oldtimes_lesX.gif delete mode 100644 htdocs/images/skins/oldtimes_logo.gif delete mode 100644 htdocs/images/skins/oldtimes_menu.jpg delete mode 100644 htdocs/images/skins/oldtimes_titre.jpg delete mode 100644 htdocs/images/skins/sharky_ban.png delete mode 100644 htdocs/images/skins/sharky_bubbles.png delete mode 100644 htdocs/images/skins/sharky_logo.png delete mode 100644 htdocs/images/skins/spectral_ban.jpg delete mode 100644 htdocs/images/skins/spectral_lesX.jpg delete mode 100644 htdocs/images/skins/spectral_logo.gif delete mode 100644 htdocs/images/skins/spectral_menu.jpg delete mode 100644 htdocs/images/skins/spectral_titre.jpg delete mode 100644 htdocs/images/skins/trapped_ban.jpg delete mode 100644 htdocs/images/skins/trapped_lesX.gif delete mode 100644 htdocs/images/skins/trapped_logo.gif delete mode 100644 htdocs/images/skins/trapped_menu.gif delete mode 100644 htdocs/images/skins/trapped_monstre.jpg delete mode 100644 htdocs/images/skins/trapped_titre.gif delete mode 100644 htdocs/images/skins/wiz_active.png delete mode 100644 htdocs/images/skins/wiz_background.png delete mode 100644 htdocs/images/skins/wiz_hover.png delete mode 100644 htdocs/images/skins/wiz_normal.png delete mode 100644 htdocs/images/skins/wiz_xnet_background.png delete mode 100644 htdocs/images/texte_binets.jpg delete mode 100644 htdocs/images/texte_evenements.jpg delete mode 100644 htdocs/images/texte_groupesx.jpg delete mode 100644 htdocs/images/texte_institutions.jpg delete mode 100644 htdocs/images/texte_plan.jpg delete mode 100644 htdocs/images/texte_promotions.jpg delete mode 100644 htdocs/images/texte_recherche.jpg delete mode 100644 htdocs/images/up.png delete mode 100644 htdocs/images/wait.gif delete mode 100644 htdocs/images/x.png delete mode 100644 htdocs/images/xorg.png delete mode 100644 htdocs/index.html delete mode 100644 htdocs/javascript/.gitignore delete mode 100644 htdocs/javascript/ajax.js delete mode 100644 htdocs/javascript/close_on_esc.js delete mode 100644 htdocs/javascript/do_challenge_response.js delete mode 100644 htdocs/javascript/do_challenge_response_logged.js delete mode 100644 htdocs/javascript/igoogle.js delete mode 100644 htdocs/javascript/md5.js delete mode 100644 htdocs/javascript/motdepasse.js delete mode 100644 htdocs/javascript/overlib.js delete mode 100644 htdocs/javascript/profile.js delete mode 100644 htdocs/javascript/secure_hash.js delete mode 100644 htdocs/javascript/sha1.js delete mode 100644 htdocs/javascript/wiki.js delete mode 100644 htdocs/javascript/xorg.js delete mode 100644 htdocs/listes_redirect.php delete mode 100644 htdocs/webredirect.php delete mode 100644 htdocs/xnet.php delete mode 100644 htdocs/xorg.opensearch.xml delete mode 100644 htdocs/xorg.php delete mode 100644 include/.gitignore delete mode 100644 include/applis.func.inc.php delete mode 100644 include/banana/.gitignore delete mode 100644 include/banana/forum.inc.php delete mode 100644 include/banana/hooks.inc.php delete mode 100644 include/banana/ml.inc.php delete mode 100644 include/banana/moderate.inc.php delete mode 100644 include/emails.inc.php delete mode 100644 include/geoloc.inc.php delete mode 100644 include/globals.inc.php.in delete mode 100644 include/googleapps.inc.php delete mode 100644 include/homonymes.inc.php delete mode 100644 include/ical.inc.php delete mode 100644 include/marketing.inc.php delete mode 100644 include/massmailer.inc.php delete mode 100644 include/newsletter.inc.php delete mode 100644 include/notifs.inc.php delete mode 100644 include/profil.func.inc.php delete mode 100644 include/rss.inc.php delete mode 100644 include/secure_hash.inc.php delete mode 100644 include/security.inc.php delete mode 100644 include/synchro_ax.inc.php delete mode 100644 include/user.func.inc.php delete mode 100644 include/userset.inc.php delete mode 100644 include/validations.inc.php delete mode 100644 include/validations/aliases.inc.php delete mode 100644 include/validations/broken.inc.php delete mode 100644 include/validations/evts.inc.php delete mode 100644 include/validations/googleapps.inc.php delete mode 100644 include/validations/homonymes.inc.php delete mode 100644 include/validations/listes.inc.php delete mode 100644 include/validations/marketing.inc.php delete mode 100644 include/validations/medals.inc.php delete mode 100644 include/validations/nl.inc.php delete mode 100644 include/validations/nomusage.inc.php delete mode 100644 include/validations/orange.inc.php delete mode 100644 include/validations/paiements.inc.php delete mode 100644 include/validations/photos.inc.php delete mode 100644 include/validations/surveys.inc.php delete mode 100644 include/vcard.inc.php delete mode 100755 include/webservices/ax/client.inc delete mode 100755 include/webservices/ax/config.inc delete mode 100755 include/webservices/ax/dtd_ancien.dtd delete mode 100644 include/webservices/manageurs.client.inc.php delete mode 100644 include/webservices/manageurs.inc.php delete mode 100644 include/webservices/manageurs.server.inc.php delete mode 100644 include/wiki.inc.php delete mode 100644 include/wiki/e-protect.php delete mode 100644 include/wiki/empty/empty.tmpl delete mode 100644 include/wiki/engine.php delete mode 100644 include/wiki/farmconfig.php delete mode 100644 include/wiki/wiki.d/Site.EditForm delete mode 100644 include/wiki/wiki.d/Site.Preferences delete mode 100644 include/xnet.inc.php delete mode 100644 include/xorg.inc.php delete mode 100644 modules/admin.php delete mode 100644 modules/auth.php delete mode 100644 modules/auth/auth.inc.php delete mode 100644 modules/axletter.php delete mode 100644 modules/axletter/axletter.inc.php delete mode 100644 modules/bandeau.php delete mode 100644 modules/carnet.php delete mode 100644 modules/carnet/contacts.pdf.inc.php delete mode 100644 modules/carnet/fonts/README delete mode 100644 modules/carnet/fonts/Vera.php delete mode 100644 modules/carnet/fonts/Vera.z delete mode 100644 modules/carnet/fonts/VeraBI.php delete mode 100644 modules/carnet/fonts/VeraBI.z delete mode 100644 modules/carnet/fonts/VeraBd.php delete mode 100644 modules/carnet/fonts/VeraBd.z delete mode 100644 modules/carnet/fonts/VeraIt.php delete mode 100644 modules/carnet/fonts/VeraIt.z delete mode 100644 modules/carnet/fonts/VeraMoBI.php delete mode 100644 modules/carnet/fonts/VeraMoBI.z delete mode 100644 modules/carnet/fonts/VeraMoBd.php delete mode 100644 modules/carnet/fonts/VeraMoBd.z delete mode 100644 modules/carnet/fonts/VeraMoIt.php delete mode 100644 modules/carnet/fonts/VeraMoIt.z delete mode 100644 modules/carnet/fonts/VeraMono.php delete mode 100644 modules/carnet/fonts/VeraMono.z delete mode 100644 modules/carnet/fonts/VeraSe.php delete mode 100644 modules/carnet/fonts/VeraSe.z delete mode 100644 modules/carnet/fonts/VeraSeBd.php delete mode 100644 modules/carnet/fonts/VeraSeBd.z delete mode 100644 modules/email.php delete mode 100644 modules/events.php delete mode 100644 modules/forums.php delete mode 100644 modules/gadgets.php delete mode 100644 modules/gadgets/gadgets.inc.php delete mode 100644 modules/geoloc.php delete mode 100644 modules/geoloc/.gitignore delete mode 100644 modules/googleapps.php delete mode 100644 modules/lists.php delete mode 100644 modules/lists/lists.inc.php delete mode 100644 modules/lists/mail_templates/adminsubscribeack.txt delete mode 100644 modules/lists/mail_templates/adminunsubscribeack.txt delete mode 100644 modules/lists/mail_templates/checkdbs.txt delete mode 100644 modules/lists/mail_templates/newlist.txt delete mode 100644 modules/lists/mail_templates/postauth.txt delete mode 100644 modules/lists/mail_templates/postheld.txt delete mode 100644 modules/lists/mail_templates/refuse.txt delete mode 100644 modules/lists/mail_templates/subauth.txt delete mode 100644 modules/lists/mail_templates/subscribeack.txt delete mode 100644 modules/lists/platal.mrc delete mode 100644 modules/marketing.php delete mode 100644 modules/newsletter.php delete mode 100644 modules/payment.php delete mode 100644 modules/payment/money.inc.php delete mode 100644 modules/payment/money/cyberpaiement.inc.php delete mode 100644 modules/payment/money/paypal.inc.php delete mode 100644 modules/platal.php delete mode 100644 modules/platal/review.inc.php delete mode 100644 modules/profile.php delete mode 100644 modules/profile/addresses.inc.php delete mode 100644 modules/profile/decos.inc.php delete mode 100644 modules/profile/general.inc.php delete mode 100644 modules/profile/groups.inc.php delete mode 100644 modules/profile/jobs.inc.php delete mode 100644 modules/profile/mentor.inc.php delete mode 100644 modules/profile/page.inc.php delete mode 100644 modules/profile/skills.inc.php delete mode 100644 modules/register.php delete mode 100644 modules/register/register.inc.php delete mode 100644 modules/search.php delete mode 100644 modules/search/classes.inc.php delete mode 100644 modules/search/search.inc.php delete mode 100644 modules/stats.php delete mode 100644 modules/survey.php delete mode 100644 modules/survey/survey.inc.php delete mode 100644 modules/xnet.php delete mode 100644 modules/xnetevents.php delete mode 100644 modules/xnetevents/xnetevents.inc.php delete mode 100644 modules/xnetgrp.php delete mode 100644 modules/xnetgrp/mail.inc.php delete mode 100644 modules/xnetlists.php delete mode 100644 plugins/compiler.icon.php delete mode 100644 plugins/function.display_address.php delete mode 100644 plugins/function.geoloc_country.php delete mode 100644 plugins/function.geoloc_region.php delete mode 100644 plugins/function.make_forlife.php delete mode 100644 plugins/function.select_nat.php delete mode 100644 plugins/function.test_email.php delete mode 100644 plugins/insert.getName.php delete mode 100644 plugins/insert.getUserName.php delete mode 100644 templates/admin/ax-xorg.tpl delete mode 100644 templates/admin/dead_but_active.tpl delete mode 100644 templates/admin/deces_promo.tpl delete mode 100644 templates/admin/emails_bounces_re.tpl delete mode 100644 templates/admin/forums-promo.mail.tpl delete mode 100644 templates/admin/homonymes.tpl delete mode 100644 templates/admin/icons.tpl delete mode 100644 templates/admin/index.tpl delete mode 100644 templates/admin/ipwatcher.tpl delete mode 100644 templates/admin/logger-view.tpl delete mode 100644 templates/admin/postfix_delayed.tpl delete mode 100644 templates/admin/promo.tpl delete mode 100644 templates/admin/synchro_ax.tpl delete mode 100644 templates/admin/useredit.mail.tpl delete mode 100644 templates/admin/utilisateurs.tpl delete mode 100644 templates/admin/valider.tpl delete mode 100644 templates/admin/wiki.tpl delete mode 100644 templates/axletter/admin.tpl delete mode 100644 templates/axletter/edit.tpl delete mode 100644 templates/axletter/index.tpl delete mode 100644 templates/axletter/letter.mail.tpl delete mode 100644 templates/axletter/show.tpl delete mode 100644 templates/axletter/unsubscribe.tpl delete mode 100644 templates/banana/index.tpl delete mode 100644 templates/carnet/calendar.tpl delete mode 100644 templates/carnet/index.tpl delete mode 100644 templates/carnet/mescontacts.tpl delete mode 100644 templates/carnet/notif.mail.tpl delete mode 100644 templates/carnet/notifs.tpl delete mode 100644 templates/carnet/panel.tpl delete mode 100644 templates/carnet/rss.tpl delete mode 100644 templates/carnet/tricontacts.tpl delete mode 100644 templates/core/403.tpl delete mode 100644 templates/core/404.tpl delete mode 100644 templates/core/bug.tpl delete mode 100644 templates/core/password_prompt.tpl delete mode 100644 templates/core/password_prompt_logged.tpl delete mode 100644 templates/core/plset.tpl delete mode 100644 templates/core/plwizard.tpl delete mode 100644 templates/core/table-editor.tpl delete mode 100644 templates/core/vcard.tpl delete mode 100644 templates/core/wiki.help.tpl delete mode 100644 templates/core/wiki.tpl delete mode 100644 templates/emails/alias.tpl delete mode 100644 templates/emails/antispam.tpl delete mode 100644 templates/emails/broken.mail.tpl delete mode 100644 templates/emails/broken.tpl delete mode 100644 templates/emails/duplicated.tpl delete mode 100644 templates/emails/imap_register.tpl delete mode 100644 templates/emails/index.tpl delete mode 100644 templates/emails/lost.tpl delete mode 100644 templates/emails/redirect.tpl delete mode 100644 templates/emails/send.tpl delete mode 100644 templates/emails/submit_spam.tpl delete mode 100644 templates/emails/test.mail.tpl delete mode 100644 templates/events/admin.tpl delete mode 100644 templates/events/admin_tips.tpl delete mode 100644 templates/events/form.tpl delete mode 100644 templates/events/index.tpl delete mode 100644 templates/events/preview.tpl delete mode 100644 templates/events/rss.tpl delete mode 100644 templates/events/submit.tpl delete mode 100644 templates/forums/admin.tpl delete mode 100644 templates/gadgets/ig-events.tpl delete mode 100644 templates/gadgets/ig-events.xml.tpl delete mode 100644 templates/gadgets/ig-login.tpl delete mode 100644 templates/gadgets/ig-minifiche.tpl delete mode 100644 templates/gadgets/ig-search.tpl delete mode 100644 templates/gadgets/ig-search.xml.tpl delete mode 100644 templates/gadgets/ig-skin.tpl delete mode 100644 templates/geoloc/address.tpl delete mode 100644 templates/geoloc/admin.tpl delete mode 100644 templates/geoloc/admin_dynamap.tpl delete mode 100644 templates/geoloc/city.tpl delete mode 100644 templates/geoloc/country.tpl delete mode 100644 templates/geoloc/form.address.tpl delete mode 100644 templates/geoloc/geoloc.mail.tpl delete mode 100644 templates/geoloc/init.tpl delete mode 100644 templates/googleapps/admin.job.tpl delete mode 100644 templates/googleapps/admin.tpl delete mode 100644 templates/googleapps/admin.user.tpl delete mode 100644 templates/googleapps/create.mail.tpl delete mode 100644 templates/googleapps/index.tpl delete mode 100644 templates/googleapps/unsuspend.mail.tpl delete mode 100644 templates/include/csv-importer.tpl delete mode 100644 templates/include/emploi.tpl delete mode 100644 templates/include/field.promo.tpl delete mode 100644 templates/include/field.select.tpl delete mode 100644 templates/include/flags.radio.tpl delete mode 100644 templates/include/form.valid.aliases.tpl delete mode 100644 templates/include/form.valid.broken.tpl delete mode 100644 templates/include/form.valid.edit-evts.tpl delete mode 100644 templates/include/form.valid.edit-listes.tpl delete mode 100644 templates/include/form.valid.edit-nl.tpl delete mode 100644 templates/include/form.valid.edit-paiements.tpl delete mode 100644 templates/include/form.valid.edit-photo.tpl delete mode 100644 templates/include/form.valid.evts.tpl delete mode 100644 templates/include/form.valid.gapps-unsuspend.tpl delete mode 100644 templates/include/form.valid.homonymes.tpl delete mode 100644 templates/include/form.valid.listes.tpl delete mode 100644 templates/include/form.valid.mark.tpl delete mode 100644 templates/include/form.valid.medals.tpl delete mode 100644 templates/include/form.valid.nl.tpl delete mode 100644 templates/include/form.valid.nomusage.tpl delete mode 100644 templates/include/form.valid.orange.tpl delete mode 100644 templates/include/form.valid.paiements.tpl delete mode 100644 templates/include/form.valid.photos.tpl delete mode 100644 templates/include/form.valid.surveys.tpl delete mode 100644 templates/include/massmailer-nav.tpl delete mode 100644 templates/include/minifiche.tpl delete mode 100644 templates/include/plview.geoloc.tpl delete mode 100644 templates/include/plview.minifiche.tpl delete mode 100644 templates/include/plview.multipage.tpl delete mode 100644 templates/include/plview.referent.tpl delete mode 100644 templates/include/plview.trombi.tpl delete mode 100644 templates/include/tips.tpl delete mode 100644 templates/include/trombi.tpl delete mode 100644 templates/lists/admin.tpl delete mode 100644 templates/lists/admin_all.tpl delete mode 100644 templates/lists/annu.tpl delete mode 100644 templates/lists/archives.tpl delete mode 100644 templates/lists/check.tpl delete mode 100644 templates/lists/create.tpl delete mode 100644 templates/lists/delete.tpl delete mode 100644 templates/lists/header_listes.tpl delete mode 100644 templates/lists/index.tpl delete mode 100644 templates/lists/liste.inc.tpl delete mode 100644 templates/lists/listes.inc.tpl delete mode 100644 templates/lists/members.tpl delete mode 100644 templates/lists/moderate.tpl delete mode 100644 templates/lists/moderate_mail.tpl delete mode 100644 templates/lists/moderate_sub.tpl delete mode 100644 templates/lists/options.tpl delete mode 100644 templates/lists/soptions.tpl delete mode 100644 templates/marketing/broken.tpl delete mode 100644 templates/marketing/index.tpl delete mode 100644 templates/marketing/marketing.mail.tpl delete mode 100644 templates/marketing/private.tpl delete mode 100644 templates/marketing/promo.tpl delete mode 100644 templates/marketing/public.tpl delete mode 100644 templates/marketing/relance.mail.tpl delete mode 100644 templates/marketing/relance.tpl delete mode 100644 templates/marketing/this_week.tpl delete mode 100644 templates/marketing/volontaire.tpl delete mode 100644 templates/newsletter/admin.tpl delete mode 100644 templates/newsletter/edit.tpl delete mode 100644 templates/newsletter/index.tpl delete mode 100644 templates/newsletter/nl.mail.tpl delete mode 100644 templates/newsletter/show.tpl delete mode 100644 templates/newsletter/submit.tpl delete mode 100644 templates/payment/index.tpl delete mode 100644 templates/payment/retour_paypal.tpl delete mode 100644 templates/payment/xnet.tpl delete mode 100644 templates/platal/acces_smtp.tpl delete mode 100644 templates/platal/changeLog.tpl delete mode 100644 templates/platal/exit.tpl delete mode 100644 templates/platal/filrss.tpl delete mode 100644 templates/platal/index.tpl delete mode 100644 templates/platal/motdepasse.success.tpl delete mode 100644 templates/platal/motdepasse.tpl delete mode 100644 templates/platal/preferences.tpl delete mode 100644 templates/platal/recovery.tpl delete mode 100644 templates/platal/review.tpl delete mode 100644 templates/platal/skins.tpl delete mode 100644 templates/platal/tmpPWD.success.tpl delete mode 100644 templates/platal/webredirect.tpl delete mode 100644 templates/profile/admin_decos.tpl delete mode 100644 templates/profile/admin_trombino.tpl delete mode 100644 templates/profile/adresses.address.tpl delete mode 100644 templates/profile/adresses.tel.tpl delete mode 100644 templates/profile/adresses.tpl delete mode 100644 templates/profile/applis.js.tpl delete mode 100644 templates/profile/base.tpl delete mode 100644 templates/profile/deco.medal.tpl delete mode 100644 templates/profile/deco.tpl delete mode 100644 templates/profile/fiche_referent.tpl delete mode 100644 templates/profile/general.tpl delete mode 100644 templates/profile/grades.js.tpl delete mode 100644 templates/profile/groupesx.tpl delete mode 100644 templates/profile/groups.tpl delete mode 100644 templates/profile/jobs.job.tpl delete mode 100644 templates/profile/jobs.secteur.tpl delete mode 100644 templates/profile/jobs.tpl delete mode 100644 templates/profile/mentor.tpl delete mode 100644 templates/profile/nomusage.tpl delete mode 100644 templates/profile/orange.tpl delete mode 100644 templates/profile/profile.tpl delete mode 100644 templates/profile/referent.tpl delete mode 100644 templates/profile/skill.skill.tpl delete mode 100644 templates/profile/skill.tpl delete mode 100644 templates/profile/trombino.tpl delete mode 100644 templates/register/breadcrumb.tpl delete mode 100644 templates/register/end.tpl delete mode 100644 templates/register/inscription.reussie.tpl delete mode 100644 templates/register/inscrire.mail.tpl delete mode 100644 templates/register/step0.tpl delete mode 100644 templates/register/step1.tpl delete mode 100644 templates/register/step2.tpl delete mode 100644 templates/register/step3.tpl delete mode 100644 templates/register/step4.tpl delete mode 100644 templates/register/success.tpl delete mode 100644 templates/search/adv.form.tpl delete mode 100644 templates/search/adv.grade.form.tpl delete mode 100644 templates/search/adv.links.tpl delete mode 100644 templates/search/index.tpl delete mode 100644 templates/search/quick.form.tpl delete mode 100644 templates/search/quick.tpl delete mode 100644 templates/skin/common.backtrace.tpl delete mode 100644 templates/skin/common.bandeau.head.tpl delete mode 100644 templates/skin/common.bandeau.tpl delete mode 100644 templates/skin/common.content.tpl delete mode 100644 templates/skin/common.devel.tpl delete mode 100644 templates/skin/common.doctype.tpl delete mode 100644 templates/skin/common.footer.tpl delete mode 100644 templates/skin/common.header.tpl delete mode 100644 templates/skin/common.menu.tpl delete mode 100644 templates/skin/common.title.header.tpl delete mode 100644 templates/skin/common.triggers.tpl delete mode 100644 templates/skin/default.tpl delete mode 100644 templates/skin/espace.tpl delete mode 100644 templates/skin/humlinux.tpl delete mode 100644 templates/skin/keynote.tpl delete mode 100644 templates/skin/linux.tpl delete mode 100644 templates/skin/liteskin.tpl delete mode 100644 templates/skin/nbviolet.tpl delete mode 100644 templates/skin/newxorg.tpl delete mode 100644 templates/skin/oldtimes.tpl delete mode 100644 templates/skin/openweb.tpl delete mode 100644 templates/skin/register.tpl delete mode 100644 templates/skin/sharky.tpl delete mode 100644 templates/skin/spectral.tpl delete mode 100644 templates/skin/trapped.tpl delete mode 100644 templates/stats/coupure.tpl delete mode 100644 templates/stats/evolution_inscrits.tpl delete mode 100644 templates/stats/index.tpl delete mode 100644 templates/stats/nb_by_promo.tpl delete mode 100644 templates/stats/profile.tpl delete mode 100644 templates/survey/admin.tpl delete mode 100644 templates/survey/confirm.tpl delete mode 100644 templates/survey/edit_checkbox.tpl delete mode 100644 templates/survey/edit_checkboxtable.tpl delete mode 100644 templates/survey/edit_new.tpl delete mode 100644 templates/survey/edit_newsurvey.tpl delete mode 100644 templates/survey/edit_num.tpl delete mode 100644 templates/survey/edit_question.tpl delete mode 100644 templates/survey/edit_radio.tpl delete mode 100644 templates/survey/edit_radiotable.tpl delete mode 100644 templates/survey/edit_root.tpl delete mode 100644 templates/survey/edit_survey.tpl delete mode 100644 templates/survey/edit_text.tpl delete mode 100644 templates/survey/edit_textarea.tpl delete mode 100644 templates/survey/error.tpl delete mode 100644 templates/survey/index.tpl delete mode 100644 templates/survey/show_checkbox.tpl delete mode 100644 templates/survey/show_checkboxtable.tpl delete mode 100644 templates/survey/show_num.tpl delete mode 100644 templates/survey/show_question.tpl delete mode 100644 templates/survey/show_radio.tpl delete mode 100644 templates/survey/show_radiotable.tpl delete mode 100644 templates/survey/show_root.tpl delete mode 100644 templates/survey/show_text.tpl delete mode 100644 templates/survey/show_textarea.tpl delete mode 100644 templates/survey/success.tpl delete mode 100644 templates/xnet/admin.tpl delete mode 100644 templates/xnet/deconnexion.tpl delete mode 100644 templates/xnet/groupes.tpl delete mode 100644 templates/xnet/include/descr.tpl delete mode 100644 templates/xnet/index.tpl delete mode 100644 templates/xnet/plan.tpl delete mode 100644 templates/xnet/skin.tpl delete mode 100644 templates/xnetevents/admin.tpl delete mode 100644 templates/xnetevents/calendar.tpl delete mode 100644 templates/xnetevents/csv.tpl delete mode 100644 templates/xnetevents/edit.tpl delete mode 100644 templates/xnetevents/index.tpl delete mode 100644 templates/xnetevents/newpayment.mail.tpl delete mode 100644 templates/xnetevents/subscribe.tpl delete mode 100644 templates/xnetgrp/announce-admin.tpl delete mode 100644 templates/xnetgrp/announce-edit.tpl delete mode 100644 templates/xnetgrp/announce-rss.tpl delete mode 100644 templates/xnetgrp/annuaire-admin.tpl delete mode 100644 templates/xnetgrp/annuaire.tpl delete mode 100644 templates/xnetgrp/asso.tpl delete mode 100644 templates/xnetgrp/edit.tpl delete mode 100644 templates/xnetgrp/form.announce.tpl delete mode 100644 templates/xnetgrp/forum.tpl delete mode 100644 templates/xnetgrp/inscrire.tpl delete mode 100644 templates/xnetgrp/mail.tpl delete mode 100644 templates/xnetgrp/membres-add.tpl delete mode 100644 templates/xnetgrp/membres-del.tpl delete mode 100644 templates/xnetgrp/membres-edit.tpl delete mode 100644 templates/xnetgrp/membres-new-search.tpl delete mode 100644 templates/xnetgrp/unsubscription-notif.mail.tpl delete mode 100644 templates/xnetlists/alias-admin.tpl delete mode 100644 templates/xnetlists/alias-create.tpl delete mode 100644 templates/xnetlists/create.tpl delete mode 100644 templates/xnetlists/index.tpl delete mode 100644 templates/xnetlists/sync.tpl delete mode 100644 upgrade/0.0.0_to_0.9.0/README delete mode 100644 upgrade/0.0.0_to_0.9.0/emails.sql delete mode 100644 upgrade/0.0.0_to_0.9.0/migration.sql delete mode 100755 upgrade/0.0.0_to_0.9.0/new_newsletter.sh delete mode 100644 upgrade/0.0.0_to_0.9.0/newsleter.sql delete mode 100644 upgrade/0.0.0_to_0.9.0/skins.sql delete mode 100755 upgrade/0.0.0_to_0.9.0/to_mailman.py delete mode 100755 upgrade/0.9.1/mailman_update.py delete mode 100644 upgrade/0.9.1/newsleter.sql delete mode 100644 upgrade/0.9.1/newsleter_art.sql delete mode 100644 upgrade/0.9.1/newsleter_cat.sql delete mode 100644 upgrade/0.9.1/newsleter_ins.sql delete mode 100755 upgrade/0.9.1/update.sh delete mode 100644 upgrade/0.9.10/00_geoloc.sql delete mode 100644 upgrade/0.9.10/01_events.sql delete mode 100644 upgrade/0.9.10/02_tels.sql delete mode 100644 upgrade/0.9.10/03_xnet.sql delete mode 100644 upgrade/0.9.10/04_passwd.sql delete mode 100755 upgrade/0.9.10/update.sh delete mode 100644 upgrade/0.9.11/01_trezo.sql delete mode 100644 upgrade/0.9.11/02_logger.sql delete mode 100644 upgrade/0.9.11/03_xnet.sql delete mode 100644 upgrade/0.9.11/04_admin.sql delete mode 100644 upgrade/0.9.11/05_email_watch.sql delete mode 100644 upgrade/0.9.11/06_validations.sql delete mode 100644 upgrade/0.9.11/07_emails.sql delete mode 100644 upgrade/0.9.11/08_skins.sql delete mode 100755 upgrade/0.9.11/update.sh delete mode 100644 upgrade/0.9.12/01_xnet.sql delete mode 100644 upgrade/0.9.12/02_newsletter.sql delete mode 100644 upgrade/0.9.12/03_validation.sql delete mode 100644 upgrade/0.9.12/04_paiement.sql delete mode 100755 upgrade/0.9.12/update.sh delete mode 100644 upgrade/0.9.13/01_tips.sql delete mode 100644 upgrade/0.9.13/02_xnet.sql delete mode 100644 upgrade/0.9.13/03_medals.sql delete mode 100644 upgrade/0.9.13/04_axletter.sql delete mode 100644 upgrade/0.9.13/05_ip_watcher.sql delete mode 100644 upgrade/0.9.13/06_mx_watch.sql delete mode 100644 upgrade/0.9.13/07_logger.sql delete mode 100755 upgrade/0.9.13/update.sh delete mode 100644 upgrade/0.9.14/01_auth_user_md5.sql delete mode 100644 upgrade/0.9.14/02_auth_user_quick.sql delete mode 100644 upgrade/0.9.14/03_evenements.sql delete mode 100644 upgrade/0.9.14/04_newsletter.sql delete mode 100644 upgrade/0.9.14/05_marketing.sql delete mode 100644 upgrade/0.9.14/06_search.sql delete mode 100644 upgrade/0.9.14/07_survey.sql delete mode 100644 upgrade/0.9.14/08_autocomplete.sql delete mode 100644 upgrade/0.9.14/09_emails.sql delete mode 100644 upgrade/0.9.14/connect.db.inc.php delete mode 100755 upgrade/0.9.14/geoloc.utf8.php delete mode 100755 upgrade/0.9.14/update.sh delete mode 100644 upgrade/0.9.14/wiki.utf8.sh delete mode 100644 upgrade/0.9.15/01_mailman.sql delete mode 100644 upgrade/0.9.15/02_entreprises.sql delete mode 100644 upgrade/0.9.15/03_asso.sql delete mode 100644 upgrade/0.9.15/04_announces.sql delete mode 100644 upgrade/0.9.15/05_payment.sql delete mode 100644 upgrade/0.9.15/06_mail_send.sql delete mode 100644 upgrade/0.9.15/07_forums.sql delete mode 100755 upgrade/0.9.15/update.sh delete mode 100644 upgrade/0.9.16/00_profile.sql delete mode 100644 upgrade/0.9.16/01_utf8.sql delete mode 100644 upgrade/0.9.16/02_axletter.sql delete mode 100644 upgrade/0.9.16/03_mail_storage.sql delete mode 100644 upgrade/0.9.16/04_ip.sql delete mode 100644 upgrade/0.9.16/05_xnet_announce_photo.sql delete mode 100644 upgrade/0.9.16/06_google_apps.sql delete mode 100644 upgrade/0.9.16/07_google_apps.sql delete mode 100644 upgrade/0.9.16/08_forums.sql delete mode 100644 upgrade/0.9.16/09_watch_cat.sql delete mode 100644 upgrade/0.9.16/10_logger.sql delete mode 100644 upgrade/0.9.16/connect.db.inc.php delete mode 100644 upgrade/0.9.16/pr11_nl.sql delete mode 100755 upgrade/0.9.16/update.sh delete mode 100755 upgrade/0.9.16/upgrade_lists.py delete mode 100755 upgrade/0.9.16/xnetevents.list.php delete mode 100644 upgrade/0.9.17/00_password.sql delete mode 100644 upgrade/0.9.17/01_smallint_to_int.sql delete mode 100644 upgrade/0.9.17/02_requests_hidden.sql delete mode 100644 upgrade/0.9.17/03_xnetgrp.sql delete mode 100755 upgrade/0.9.17/update.sh delete mode 100644 upgrade/0.9.2/00_auth_user_quicl.sql delete mode 100644 upgrade/0.9.2/99_virtual.sql delete mode 100644 upgrade/0.9.2/clean.sql delete mode 100644 upgrade/0.9.2/del_identification.sql delete mode 100644 upgrade/0.9.2/nationalites.sql delete mode 100644 upgrade/0.9.2/notifs.sql delete mode 100755 upgrade/0.9.2/update.sh delete mode 100644 upgrade/0.9.3/10_aliases.sql delete mode 100644 upgrade/0.9.3/20_skins.sql delete mode 100644 upgrade/0.9.3/30_auth_user_md5.sql delete mode 100644 upgrade/0.9.3/40_ins_confirmees.sql delete mode 100644 upgrade/0.9.3/50_admin.sql delete mode 100644 upgrade/0.9.3/60_banana.sql delete mode 100644 upgrade/0.9.3/70_money.sql delete mode 100644 upgrade/0.9.3/80_envoidirect.sql delete mode 100644 upgrade/0.9.3/81_encours.sql delete mode 100644 upgrade/0.9.3/85_bounces_proxy.sql delete mode 100755 upgrade/0.9.3/update.sh delete mode 100644 upgrade/0.9.4/10_evts.sql delete mode 100644 upgrade/0.9.4/20_register.sql delete mode 100644 upgrade/0.9.4/30_auth_user_quick.sql delete mode 100644 upgrade/0.9.4/40_requests.sql delete mode 100644 upgrade/0.9.4/50_entreprises.sql delete mode 100644 upgrade/0.9.4/60_watch.sql delete mode 100644 upgrade/0.9.4/70_newsletter.sql delete mode 100644 upgrade/0.9.4/80_medals.sql delete mode 100644 upgrade/0.9.4/90_emails.sql delete mode 100755 upgrade/0.9.4/update.sh delete mode 100644 upgrade/0.9.5/10_auth_user_quick.sql delete mode 100644 upgrade/0.9.5/20_adresses.sql delete mode 100644 upgrade/0.9.5/30_entreprises.sql delete mode 100644 upgrade/0.9.5/40_photo.sql delete mode 100644 upgrade/0.9.5/50_aliases.sql delete mode 100644 upgrade/0.9.5/60_auth_user_md5.sql delete mode 100644 upgrade/0.9.5/70_admin_a.sql delete mode 100644 upgrade/0.9.5/80_paiement.sql delete mode 100755 upgrade/0.9.5/update.sh delete mode 100644 upgrade/0.9.6/00_xnet.sql delete mode 100644 upgrade/0.9.6/10_search_name.sql delete mode 100644 upgrade/0.9.6/20_watch_cat.sql delete mode 100644 upgrade/0.9.6/30_auth_user_md5.sql delete mode 100755 upgrade/0.9.6/update.sh delete mode 100644 upgrade/0.9.7/00_xnet.sql delete mode 100644 upgrade/0.9.7/01_geoloc.sql delete mode 100755 upgrade/0.9.7/update.sh delete mode 100644 upgrade/0.9.8/00_admin.sql delete mode 100755 upgrade/0.9.8/update.sh delete mode 100644 upgrade/0.9.9/00_xnet.sql delete mode 100644 upgrade/0.9.9/01_adresses.sql delete mode 100755 upgrade/0.9.9/update.sh delete mode 100755 upgrade/inc/pervasive.sh diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index ff5290b..0000000 --- a/AUTHORS +++ /dev/null @@ -1,30 +0,0 @@ -Polytechnique.org TEAM : - - Pierre Habouzit , - Aymeric Augustin - Jean Sébastien Bedo - Florent Bruneau - Sophie Charbonnier - Yann Chevalier - Jean-Marc Coic - Pascal Corpet - Guillaume Gommard - Fabien Laborde - Jeremy Lainé - Olivier Le Floch - Raphael Marichez - Vincent Palatin - - -XML-RPC stuff : - Marc Boeren http://fr2.php.net/xml-rpc - -Smarty Trimwhitespace prefilter : - Monte Ohrt http://smarty.incutio.com/?page=SmartyTips - -Some of the icons : - David Vignoni http://www.icon-king.com/ - Mark James http://www.famfamfam.com/ - -OverLib : - Erik Bosrup http://www.bosrup.com/web/overlib/ diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 6eeecb4..0000000 --- a/ChangeLog +++ /dev/null @@ -1,1255 +0,0 @@ -================================================================================ -VERSION 0.9.17 XX XX 2008 - -New: - - * Core: - - Password strength checker -FRU - - Show user picture on the mini-profile -FRU - - Add an anti-XSRF framework, and add protection to most pages -VZA - - Add a 'disallow all' robots.txt in development working copies. -VZA - -Bug/Wish: - - * Admin: - - #770: Keeps hidden validation preferences in the database -JAC - - #811: Improve interface to add medal ranks and avoid losing data -ALK - - #830: Adds admnistration pages for sub-sectors and functions -JAC - - * Carnet: - - #831: Don't be notified of birthdays of the previous day -FRU - - * Core: - - Fix email sending, correcting bugs introduced in r1897 -VZA - - #841: Improves contrast of links in legends in skin 'Espace' -FRU - - #844: Uses INT in MySQL to store user ids -VZA - - * Lists: - - #761: Fix user comment in moderation mail sent by mailman -FRU - - #810: Fix encoding of admin pages -FRU - - #813: Fix display of the sample mail refusal message -JAC - - #817: Automation of the management of associations' ML -JAC - - #839: Fix warning when adding an external address -FRU - - Larger click target to toggle emails in the validation interface -ALK - - * Profile: - - #805: Improves mentoring edition page -JAC - - #836: Autocomplete enterprise name in profile edition page -FRU - - #840: Remove mentor entry when "expertise" is empty -FRU - - * Search: - - Fix display of autocompletion menu (use plugin's latest version) -ALK - - Clicking on the "..." entry no longer replaces search with "..." -ALK - - #850: Fix autocompletion bug when changing an advanced search -ALK - - * Xnet: - - #821: Fix infinite loop when user can't be authenticated -FRU - - * XnetGrp: - - #806: Unsubscribe from MLs when leaving the group -FRU - - #807: Notify groupes managers of unsubscriptions -FRU - - #814: Group managers can change the visibility of the group -FRU - - #824: Fix redirection when changing status of the user -FRU - - * XnetEvents: - - #825: Show the number of comers when the events contains 1 part -FRU - -From 0.9.16 branch: - - * Admin: - - #745: Fix invalid warnings when editing user profile -VZA - - * Core: - - Fix authentication level required by 403/404 error pages -FRU - - Fix default password on subscription -VZA - - * GoogleApps: - - Enable service -VZA - -================================================================================ -VERSION 0.9.16 31 03 2008 - -New: - - * Carnet: - - List updated fields in notifications -FRU - - * Core: - - New PlProfiler tool -FRU - - Integration of goodies/external tools with local rss/iCal -VZA - - iGoogle gadgets for latest events and directory search -VZA - - Integration of Google Apps accounts -VZA - - * Emails: - - Imap mail storage can be activated/deactivated from interface -VZA - - Mail storage backends are now integrated with redirections -VZA - - * Lists: - - Unsure mails are moderated -FRU - - * Forums: - - Ban system -THD - -Bug/Wish: - - * Carnet: - - #734: Fix notification emails and carnet for female users -VZA - - * Emails: - - #726: Don't send the email if an attachment can't be downloaded -FRU - - #750: Fix email list in test email -FRU - - #802: Fix upload content type checking on some buggy PHP -FRU - - #803: Prevents UI from allowing 'last active alias deletion' -Car - - * Lists: - - #793: Show broken members on ML -FRU - - * Profile: - - #729: Fix positioning of addresses on public profile -FRU - - #742: Sub domain was hidden when editing profile -FRU - - #752: Don't show vcard link on profile when the person is dead -FRU - - #764: Fix mentoring edition page -FRU - - #790: Ensure we always have a current address -FRU - - * Search: - - #741: Mentor search in advanced search -FRU - - * XnetEvent: - - #728: Update CSV -FRU - - #743: Don't show a warning when subscriber has no forlife -FRU - - #730: XnetEvents are not synchronized with aliases -VZA - - #772: Indicate there are members-only events for non-members -JAC - - * XnetGrp: - - #732: Adapt subscription text to sex -FRU - - #735: Encoding of list description in member edition form -FRU - - #740: Can add a picture in the announces -FRU - - #799: Improve asked inscription interface -JAC - -From 0.9.15 branch: - - * XnetEvents: - - #738: Duplicated payments in certain conditions -FRU - -================================================================================ -VERSION 0.9.15 08 10 2007 - -New: - - * Banana: - - Show poster photo -FRU - - * Core: - - Auto-redirect HTML pages to HTTPS -FRU - - * Emails: - - #722: Can send a test email to check mail routing -FRU - - * Lists: - - Asynchronous mail moderation (should avoid server overload) -FRU - - * Platal: - - New default page with a flexible multi-topic presentation -FRU - - * Profile: - - #28: Use group/subscription list from Xnet -FRU - - * Search: - - Shortcuts to open profiles or search in documentation -FRU - - * XnetEvents: - - #702: Be notified of the availability of the payment -FRU - -Bug/Wish: - - * Auth: - - #714: Fix groupex authentication logging -FRU - - * Carnet: - - #682: Can quick search in contact list -FRU - - * Core: - - #665: Fix text alignment -FRU - - #674: MiniWiki xhtml validation -FRU - - #678: PlUpload filename detection -FRU - - #690: Improves SMTP pass privacy policy -FRU - - #713: Can run the site in a degraded mode -FRU - - #717: Allow TLD with length up to 6 characters in emails -FRU - - * Emails: - - #687: Don't lose authentication when editing a long mail -FRU - - #688: From name in the sending form -FRU - - #703: Fix management of mail adresses containing '+' -ALK - - #720: Save not sent mail -FRU - - * Lists: - - #700: Fix several encoding issues -FRU - - * Profile: - - Fix GoogleMaps links -FRU - - #663: Link to Xnet's map from the "My groups" page -FRU - - #689: Edit my profile from Xnet -FRU - - #692: Layout of the profile -FRU - - #693: Fix empty description for generic education -FRU - - #708: Fix title (fix by Laurent Penou from Gadz.org) -FRU - - #710: Adding grade do not degrade the database -FRU - - * Search: - - #711: Fix search when autocompletion is not explicitly validated -FRU - - * Xnet: - - #694: Color of 'Promotion' groups -ALK - - * XnetGrp: - - #481: Can list user of a city or a map from the geoloc -FRU - - #658: Admins can convert 'non-X' into X -FRU - - #696: Don't forget non-X when counting members -FRU - - #698: Fix the unregister user lister when adding a new member -FRU - - * XnetEvents: - - #695: More details about payments -FRU - - #719: More consistent subscription count -FRU - -From 0.9.14 branch: - - * Payment: - - #662: Fix the attribution of the payments -BOB - - * Search: - - Fix DOS on too large quick searches -FRU - - * XnetEvents: - - #684: Fix the list of coming members -FRU - -================================================================================ -VERSION 0.9.14 27 04 2007 - -New: - - * Admin: - - Fold/unfold wiki folders -Car - - View all installed icons -Car - - * Banana: - - Fold/unfold threads -Car - - * Core: - - UTF-8 -FRU - - New Backtrace tool -FRU - - New Upload manager -FRU - - #641: Miniwiki syntax -Car/FRU - - New PlSet: Model/View tool for displaying a set of user -FRU - - * Events: - - #642: Can add an image -FRU - - #643: Sort menu -FRU - - Can set events as important -FRU - - Hide events on main page without reloading -Car - - * Search: - - Search Engine IE7 compatible -FRU - - Add soundex search for quick search -FRU - - Add autocompletion for advanced search -Car - - * Survey: - - New module -PIK - - * Xnetgrp: - - Direct access to the group forum (if exists) -FRU - -Bug/Wish: - - * Banana: - - #407: RSS feed -FRU - - * Carnet: - - #448: Geoloc for contacts -FRU - - #510: Use RSS hash to get iCal -FRU - - * Core: - - #640: Always switch to the good secure server -FRU - - * Emails: - - #595: Update antispam description -FRU - - * Events: - - #651: Less confusing "next tip" link -FRU - - * Newsletter: - - #648: Add navigation link in preview page -FRU - - #649: Fix layout of preview page -FRU - - * Profile: - - Better checks on image type for photos -FRU - - #646: Don't send a mail to an invalid address -FRU - - #656: Fix multipage mentor search -FRU - - * Lists: - - #407: RSS feed -FRU - - #515: Specify allowed characters in the name of the list -FRU - - #602: Identify the moderator who accepted/refused a subscription -FRU - - #636: Remove non-X from trombi -FRU - - #638: Sort trombi by promo then name -FRU - - * Register: - - #428: Can propose subscription to lists -FRU - - * Search: - - #132: Better french soundex -FRU - - #173: Show only countries where there is a user -FRU - - #627: Link to promotion trombi -FRU - - * Xnet: - - #639: Fix the number of pages -FRU - - * XnetEvents: - - #637: Check payment before submission -FRU - - #652: Show people who don't come separately -FRU - - * XnetGrp: - - #543: Adapt marketing -FRU - -================================================================================ -VERSION 0.9.13 30 01 2007 - -New: - - * Admin: - - Show last contact date on marketing validation -Fal/FRU - - New page to add users in the database -FRU - - New IP based security tool -FRU - - * AXLetter: - - New module AXLetter (legal mailer for AX) -FRU - - * Core: - - New mailer -FRU - - Signal bug send to OTRS and not trackers. -Car - - New CSV-Importer -FRU - - * Emails: - - New spam submission form -FRU - - * Events: - - Tips. -FRU/Car - - Split Events in 2 modules: events and newsletter -FRU - - * Lists: - - Use Banana to power mail moderation -FRU - - Use Banana to browse mail archives -FRU - - * Marketing: - - Marketing on broken redirections becomes a validation -FRU - - * Newsletter: - - New skin -mYk - - * Payment: - - Directly integrated into Xnet. -FRU - - * Profile: - - Public fiche link to private fiche. -Car - - * Xnet: - - New member class for immaterial entities -FRU - -Bug/Wish: - - * Auth: - - #20: Show who need auth -FRU - - * Admin: - - #593: Admins can take temporarily user rights -FRU - - * Core: - - #558: Propose a valid URL when getting a 404 error -FRU - - * Emails: - - #512: Can attach a file -FRU - - * Geoloc: - - #493: Fix "List map search" button. -Car - - * Lists: - - #588: Auto-select mail to moderate -FRU - - #598: Ask for confirmation -FRU - - #616: Fix encoding issues with mail to moderate -FRU - - * Profile: - - #535: Tel can use / to specify extension. -Car - - #628: Fix edition link from user's own profile -FRU - - * Register: - - #277: Improve ergonomy. -FRU - - * Stats: - - #603: Add informations on mail delivery -FRU - - * Xnet: - - #570: Fix geoloc skin. -FRU - - #589: Can attach a file when sending an email -FRU - - #592: Can unsubscribe -FRU - - #594: Group admins can view the site without privileges -FRU - -From 0.9.12 branch: - - * Search: - - #566: Fix accent detection. -FRU - - * Xnet: - - #574: Fix subscription link customization. -FRU - -================================================================================ -VERSION 0.9.12 25 11 2006 - -New: - - * Admin: - - Can add sorting key in Table Editor. -FRU - - Can manage not registered users. -FRU - - * Carnet: - - Add a vcard of all the contacts. -FRU - - Fix timestamp in RSS feed. -FRU - - * Lists: - - Add the fourth antispam level (moderate and drop). -FRU - - * Events: - - Add author and event id in RSS feed. -FRU - - * Profile: - - Add "My groups" page with direct links to Xnet. -Car - - * Xnet: - - Add a vcard of all the members of a group. -FRU - - Add a full announce system. -FRU - - Add a list of the administrators of the group. -FRU - - Url to force login on any page. -Car - - * Xnet/Events: - - Events can be archived. -FRU - - Can get iCal version of the events. -FRU - - Can use short name as an event identifier in the URL. -FRU - -Bug/Wish: - - * Admin: - - #468: Can edit requests before validation. -FRU - - #478: Sort payments by flag. -FRU - - #484: Sort Table Editor by clicking on column title. -Car - - * Core: - - #473: Use 'événement' instead of 'évènement'. -FRU - - #475: More understandable bug report form. -FRU - - #545: Fix encoding issues with some Windows special chars -FRU - - #548: More informations for recovery for homonyms. -FRU - - #553: Fix right click on send bug link. -Car - - #562: Cipher all email adresses -FRU - - * Events: - - #517: URL catcher update (www). -Car - - #525: Add a user-friendly id for newsletters. -FRU - - #530: Members can be identified as a unregistered user. -FRU - - * Lists: - - #485: Can moderate pure-HTML mails. -FRU - - #520: Can moderate several mails at once -FRU - - #532: Fix case sensitivity issues in emails processing. -FRU - - * Payment: - - #155: Add a free comment for payments. -Car - - * Profile: - - #385: Add section, binets and groupes-X in vCard. -FRU - - #451: vCard are RFC compliant. -FRU - - #466: Fix delete phone number. -Car - - #502: Use 'alias' instead of 'aka' to specify the nickname. -FRU - - #536: Can use login.promo as a valid user identifier. -FRU - - #539: Medals and deco need validation from admin. -Car - - #540: Profile of unregistered user redirects to marketing. -FRU - - * Xnet: - - #511: Migrate ML subscription when changing email of a non-X. -FRU - - #516: Trombino for groups. -Car - - #554: Move exit link beside "my group" list -FRU - - * Xnet/Events: - - #374: Modify ergonomy of inscription to events (again). -Car - - #490: Events can be opened to non-members. -FRU - - #514: Improve visibility of open events. -FRU - - #523: Organizer does not change when editing an event. -FRU - - #546: More understandable new payment form. -FRU - -From 0.9.11 branch: - - * Core: - - #472: Fix problem with auth when using the cookie. -MC - - * Emails: - - #496: Fix link to warn user who has a broken email. -FRU - - * Geoloc: - - #469: Google Maps link works for the USA. -FRU - - * Newsletter: - - Mail can have different title not to repeat the month or sender. -Car - - * Payment: - - #482: Fix action in the form. -MC - - * Profile: - - #486: Fix force login to see private fiche. -Car - - #509: Can access trombi of the current year promotion. -FRU - - #529: Disabled state is private. -FRU - -================================================================================ -VERSION 0.9.11 18 Septembre 2006 - - -New: - - * Admin: - - New table editor. -Car - - Switch to the new URI scheme. -Car - - * Auth: - - Switch to the new URI scheme. -MC - - * Banana: - - Switch to the new URI scheme. -MC/FRU - - * Carnet: - - Switch to the new URI scheme. -MC - - * Core: - - Work hard to add nice URI's into Platal. -MC - - Use fancy icons from http://www.famfamfam.com/ for flags. -MC - - Merge htdocs/htdocs.net using apache tricks, share more code. -MC - - Remove seldome used files in plugins/ and do explicit registers. -MC - - * Emails: - - Switch to the new URI scheme. -MC - - Work around broken emails (detection, marketing...) -FRU - - * Events: - - Switch to the new URI scheme. -MC/FRU - - Rework Events administration interface. -FRU - - Create a new Newsletter if needed -FRU - - * Geoloc: - - Switch to the new URI scheme. -MC/Car - - * Lists: - - Switch to the new URI scheme. -MC - - Do not remove line breaks in message moderation preview -FRU - - * Marketing: - - Switch to the new URI scheme. -MC - - * Payment: - - Switch to the new URI scheme. -MC - - * Platal: - - Create module. -MC - - * Profile: - - Switch to the new URI scheme. -MC - - Add photo and nickname in vcard -FRU - - * Register: - - Switch to the new URI scheme. -MC - - Check birth date coherence with promotion -FRU - - * Search: - - Switch to the new URI scheme. -MC - - * Skins: - - New skin: keynote -FRU - - * Stats: - - Switch to the new URI scheme. -MC - - * Trezo: - - Migrate to new URI scheme. -MC - - * Xnet: - - Migrate to the new URI scheme. -MC - - Split Xnet in 4 modules: xnet, lists, events, group. -MC - - More coherent look -FRU - - Be logged when you go to X.net from plat/al. -MC - - * Xnet/Events: - - Split event list and subscription again. -MC - - Extensively debug events module. -MC - - * Wiki: - - Rework pmwiki integration, make it way more simple. -MC - - Rework authentication, don't let pmwiki deal with it. -MC - - Admin page. -Car - -Bug/Wish: - - * Admin: - - #390: Add date of request in validation form. -FRU - - #397: Can edit death date in user admin page. -FRU - - #427: Automatic answers for validation. -Car - - #429: Tools to administrate duplicated adresses. -FRU - - #430: Specify date format on downtime admin page. -Car - - #440: Rewrite events admin page. -FRU - - * Banana: - - #463: Messages marked as read don't switch back to unread -FRU - - * Carnet: - - #435: Calendar contains yearly events for all the contacts. -FRU - - * Core: - - #371: Users can send bugs directly to plat/al tracker. -Car - - * Emails: - - #426: Add an identification header in mails. -FRU - - * Lists: - - #127: Add promo in member list when sorted by name. -FRU - - #423: Allow line breaks in mailing list descriptions. -FRU - - * Profile: - - #344: Tels can be bigger (up to 30 chars). -Car - - #422: Parasitic strings in vcard. -FRU - - * Register: - - #459: Opt-in for newsletter and promo mailing list on register. -Car - - * Skins: - - #454: Layout of addresses -FRU - - * Xnet: - - #380: Add sex for non-X. -FRU - - #384: Substitution of non-X's names in mail from web interface. -FRU - - #426: Add an identification header in mails. -FRU - - #439: Move doc to the wiki -Car/FRU - - #453: Add members in promotion groups -FRU - -From 0.9.10 Branch: - - * Profile: - - #421: Delete tel. -Car - -================================================================================ -VERSION 0.9.10 29 Juin 2006 - -New: - - * Core: - - Tighten security when changing password. -Car - - * Documentation: - - Display ChangeLog in site. -Car - - Bounty: link bug reports from Changelog. -MC - - * Geoloc: - - Dynamic maps using geodesix plugin. -Car - - Link to local maps for all addresses. -Car - - * Lists: - - Remove ugly hack for admin lists (staff left to a X.net group) -MC - - * Notifications: - - iCal calendar for birthdays. -Car - - * Profile: - - See fiche sent to AX. -Car - - Synchronize fiche from AX fiche. -Car - - * Skin: - - Common file for header above title. -Car - - Add a quick search form in this common header. -Car - - * Xnet: - - Use wiki from Xorg. -Car - - Use wiki for group pages. -Car - - Dynamic maps using geodesix plugin. -Car - -Bug/Wish: - - * Admin: - - #408: Admin can change sex of users without root intervention. -Car - - #417: Activate or unactivate emails directly from admin page. -Car - - * Carnet: - - #414: Link to users' fiche go to private fiche and not public. -Car - - * Core: - - #375: Use SHA1 instead of MD5 for password encryption. -Car - - * Events: - - #268: Hide read events. -Car - - #391: Go back to top link at end of each event. -Car - - #411: Count chars in events proposals to make them smaller. -Car - - * Lists: - - #396, #416: Making moderating ML messages easier. -Car - - * Newsletter: - - #410: In Html newsletter add a link to go back to summary. -Car - - * Profile: - - #400: Several phones for each address. -Car - - #406: Direct link in owner's fiche to edit it. -Car - - * RSS: - - #398: "Add to contact" doesn't appear for deaths. -Car - - * Register: - - #401: Email for confirmation of inscription for men/women. -Car - - * Search: - - #412: Error SQL in big referent searches. -Car - - * Trombi: - - #420: Promo trombi shows usage name. -Car - - * Wiki: - - #403: Cache is cleared when editing a page. -Car - - * Xnet: - - #377: Possibility to edit or del an ext user if email used twice. -Car - - #378: Display group directory order by promo. -Car - - #379, #383: Paiements table relook. -Car - - #399: Event can accept guests or not. -Car - - #413: When creating a new event, datas don't disappear anymore. -Car - -From 0.9.9 Branch: - - * Xnet: - - #393: Ask for confirmation to remove an event. -Car - -================================================================================ -VERSION 0.9.9 08 Janvier 2006 - -New: - - * Core: - - HTTP redirection safe wrt Session (should solve login problems). -MC - - Free $_SESSION before the page rendering, to release locks. -MC - - * Documentation: - - Documentation now use Wiki -Car - - * Paiement: - - Fixed little text mistake in Payments menu. -CAT - - Direct link from and to events. -Car - - * Profile: - - User can now accept synchronisation from AX by admin. -Car - - Address will try to display as the country standard. -Car - - Warning for common name (no Nickname allowed). -MC - - * Xnet: - - Groups can be non subscribable. -Car - - Most Wanted Feature: directories synchronization with lists. -MC - - Various bug fixes in events management. -Car - - Groups can now synchronize MLs and the directory. -MC - -Bug/Wish: - - * Admin: - - #337: Add link to trackers and support websites for admins. -CAT - - * Contacts: - - #352: Enhance PDFs: add the generation date. -MC - - * Core: - - #310: Display the max number of photo in trombipromo. -Car - - * Mails: - - #327: broken mail test is more explicit for unaware users. -MC - - * Paiments: - - #336: Micro -> Tele(payments). -MC - - #356: Payments use usage name instead of last name. -Car - - * Profile: - - #330,333: Interface improvements. -Car - - #332: User can precise why he asks for a usage name. -Car - - #335: Already assigned promotion don't generate a request. -CAT - - #346: Professional profile code desynch. fixed. -MC - - #357: Reindex user for fast search at subscribe time. -MC - - #358: Avoid duplicate email address when bestalias = 4life. -MC - - #363: Rework actions possible on the profile for deceased pple. -MC - - * Xnet: - - #334: Interface improvements. -Car - - #341: Improve member deletion. -MC - - #374: Event interface. -Car - - #376: Reply-To on the mail form. -MC - - #388: Deadline for event inscriptions. -Car - - * User Interface: - - #338: Broken FSF link fixed on donation page. -CAT - - #339: New RSS links that allow direct and easier RSS activation. -CAT - - #130: Each page now shows a different title. -CAT - -From 0.9.8 Branch: - - * Xnet: - - #362: Fix a problem with evenements that only have 1 moment. -MC - -================================================================================ -VERSION 0.9.8 18 Jul 2005 - -New: - - * Admin: - - Synchronisations with geoloc.org. -Car - -Bug/Wish: - - * Admin: - - #323: admin link in fiche opens out of the popup. -Car - - #324: admin can modify the usage name. -Car - - * Profile: - - User can delete his own melix. -Car - - #328,329: bug fixes and direct acess to public fiche. -Car - - #331: antispam option didn't work with Safari. -Car - - * Lists: - - #318: Deletion of email with + in aliases. -Car - -================================================================================ -VERSION 0.9.7 21 Jun 2005 - -New: - - * Profile: - - Address parser. -Car - - * Search: - - Nickname are used in fast search. -Car - - Firefox searchplugin for quick search. -Car - - * Xnet: - - Events management. -Car - - Events using paiements. -Car - - Sending mail to all the participants/absents of an event. -Car - -Bug/Wish: - - * Core: - - #78,302: accept spaces in login. -Car - - * Fiche: - - #308: organizing layout. -Car - - * Lists: - - #23: multiple inscriptions. -Car - - * Xnet: - - #311,312: private members list. -Car - - Inscription in a group with no admin. -Car - -Fixes (from 0.9.6 branch): - - * Core: - - #316: locale was not set correctly. dates are in french again. -MC - - * Search: - - #307: fix bad escaping in advanced search. -MC - - * Xnet: - - Have a connection link even on index page. -MC - - Deleting and securing deletion of empty aliases. -Car - - #314: fix bad links to categories -Car - -================================================================================ -VERSION 0.9.6 07 May 2005 - -New: - - * Profile: - - Stayed down students (orange) management. -Car - - * Search: - - Last improvements (clean code for search now !). -MC - - * Stats: - - Drop mail stats pages (buggy and not accurate anymore). -MC - - * Polytechnique.net in now in plat/al ! -MC - -Bug/Wish: - - * Admin: - - #298: On su exit, go back to SU page on the given account. -MC - - #300: Notify hotliners for validation comments. -Car - - #301: Some design issues solved for validation. -MC - - * Misc: - - #290: Date display with no preceding 0. -Car - - * Profile: - - #299: Be more specific wrt given name for women. -MC - -Fixes (from 0.9.5 branch): - - * Search: - - #304: Next/Prev links were missing if #pages was 2. -MC - -================================================================================ -VERSION 0.9.5 07 Apr 2005 - -New: - - * Core: - - Improve login/exit wrt cookie. -MC - - * Docs: - - use of secure SMTP on a pocket PC. -Car - - * Fiche: - - A public fiche is now available for visitors. -Car - - * Money: - - lighter code and support for a PayPal account. -Car - - * Profile: - - One can choose precisely which fields appear on his public fiche. -Car - - Accents and special chars in name and first name -Car - - Spouse name extended to usage name. -Car - - * Register: - - Already subscribed members now have a warning. -MC - - * Search: - - Public searches display more information. -Car - -Bug/Wish: - - * Admin: - - #291: change bestalias when alias disappear. -Car - - * Core: - - #279, #281: permanent connexion explanations. -MC/Car - - * Fiche: - - #289: hide empty photos in public fiche. -Car - - * Misc: - - #283,285,286,287: text modifications in docs and index page. -Car - - * Profile: - - #278: professionnal email and web site. -Car - - * Search: - - #82: Search by fonction and post for jobs. -Car - - #109, 288: Lots of sorting methods for search. -Car - - #270: Private/public flags are now used for search. -Car - -Fixes (from 0.9.4 branch): - - * Lists: - - Owner can now delete their list. -MC - -================================================================================ -VERSION 0.9.4 24 Jan 2005 - -New: - - * Banana: - - Total rework, it's now a real library, exit from plat/al. -MC - - * Contacts: - - Brand new PDF of the contact list (using FPDF). -MC - - Even include Photos in the PDF (kludgy !). -MC - - * Core: - - New SQL access API: gain in security and code factorization. -MC - - Drop good old mysql_assign, iterators are nicer. -MC - - Drop magic_quote_gpc (DB API takes care of it itself). -MC - - Drop cache algorithm (was complex for no gain). -MC - - Enhancements wrt COOKIE. -MC/Car - - More homogenous date formating (use %x / %X everywhere). -MC - - No more .head.tpl. (thanks to JM for the tip). -MC - - Strip unnecessary spaces from templates at compile time. -MC - - Allow users to choose email formats globally. -Car - - Crons are now handled from plat/al with a global crontab file. -MC - - * Notifications: - - Use Pascal's work to enable a simple, nicer html mail. -MC - - Use the new RSS engine to provide a feed of the panel. -MC - - * Photo Submission: - - Rework of the form. -MC - - Photo is resized on the fly, instead of dropping too big images. -MC - - * Registration: - - Brand new. -MC - - * Skins: - - Openweb: update. -MC - - * Validation: - - Quite a lot of rewrite, simplifications. -MC - -Bug/Wish: - - * Contacts: - - #180: Change the list order using name, promo or last change date.-Car - - * Core: - - #153: rework the RSS engine. -MC - - #145: Use melix address to log in. -Car - - #212: Various font-sizes fixed. -Car - - #245: Use PEAR::Date to avoid 1970-2038 php limitations. -MC - - #258: Netscape4 Warning. -MC - - * Emails: - - #229: Possibility to show our melix address. -Car - - * Events: - - #238: Links and Mailto are now active. -Car - - * Fiche: - - #218: Quit fiche using Escape key. -Car - - * Marketing: - - #256, #255: Mail are now correctly sent. -MC/Car - - * Misc: - - #65: Broken links. -MC - - * Notifications: - - #63: Birthdays are now in the notifications ! -MC - - #215: The notifications use singular or plural. -Car - - #232: Add a link to the fiche. -MC/Car - - * Profile: - - #65: Add professionnal cellphone. -Car - - #170: Remove region display for french departments. -Car - - #204: Add nicknames (searchable too). -MC - - #210: Add medals and orders. -MC - - * Search: - - #249, #251, #253: Some tweaks to be more accurate. -MC - - * Stats: - - #261: Stats of registrations over the time. -Car - - * Validations: - - #137: Now possible to add comments without any action. -MC - - #191, #256: Marketing now uses the validation process. -MC - - #267: Newsletter uses the validation process too. -MC - -================================================================================ -VERSION 0.9.3 27 Dec 2004 - -New: - - * Core: - - Members can be disabled. It deletes volatile datas. -MC - - Start the new work on modules (XOrgHook). -MC - - XOrgMenu class to deal with Menu entries. -MC - - Lots of includes renames, rewrites, beautifuling. -MC - - Try to avoid the unreadable {"..."|url} modifier, use {rel}/. -MC - - Use a real .conf file, and no more .php's for configuration. -MC - - Make raw access to POST/GET/... disappear. -MC - - * Distribution: - - Do not modify PHP include path from auto.prepend.inc.php. -SHK - - Add install.d/apache.conf with a sample Apache config file. -SHK - - Add Makefile to generate distribution tarballs. -SHK - - Generate xorg.config.inc.php using "make". -SHK - - Add a basic README file. -SHK - - * Lists: - - Moderators are now allowed to change the moderation level. -MC - - * Mails: - - Use HermesMailer. -MC - - Create a script to treats NL bounces. -MC - - * Money: standalone module. -MC - - * Skins: - - New skin: openweb. -MC - - No more annoying submit button, onclick is used to submit. -MC - - This is the first autonom module of the site ! -MC - - * Stats: - - Better y-range for graphs. -MC - - * WebRedirect (was: Carva): now standalone. -MC - -Bug/Wish: - - * Admin: - - #186: Users are reachable by melix, redirects, aliases... -MC - - * Bestalias: - - #206: Use only the bestalias and the forlife in vcard and fiche. -MC - - #207: Enable for the user the choice of his prefered alias. -MC - - * Core: - - #183,185: Implement perms levels: 'pending'+'disabled'. -MC - - #154: Birth fields are now of type DATE. -MC - - * Fiche: - - #83,208,222: New fiche. -MC - - * Lists: - - #86: Yet another old old wish: lists archives are online ! -MC - - #144: Users can subscribe from members/trombi page too. -MC - - #184: Owners can now delete their lists. -MC - - #231: Add a link to the user's fiche on moderation page. -MC - - * Newsletter: - - #242: Newsletter is standalone. -MC - - * Search: - - #56: Search on referent. -JS - - #189: Selection of diplomas depends on schools. -JS - - #195: Better heuristic for google like (thanks OG). -MC - - #203: New fields in search (alive, subscriber, free). -JS - - * User Interface: - - #211: All imgs in the skins are links to login.php. -MC - - -Fixes (from 0.9.2 branch): - - * Search: - - enable mod_date_sort again. -MC - - -================================================================================ -VERSION 0.9.2 14 Nov 2004 - -New: - - * Carnet: Brand new. -MC - - * Core: - - Creation of the Plugin class. -MC - - Now only use iso3166 countries, no more `nationalites`. -MC - - * Contacts: - - Trombino of the contacts is available. -MC - - * Search+Contacts: - - Nicer icons. -MC - - * Skins: - - Various updates. -FRU - -Bug/Wish: - - * Docs: - - #156: Exit Netscape4 (no more supported), Mozilla enters. -MC - - * Carnet: - - #29,147: Possible to watch subscribings, deaths, `fiche` modifs. -MC - - * Core: - - #135: First instance of the plugin class: class Trombi. -MC - - #158: A photo change updates last `fiche` edition stamp. -MC - - #100,199: Kludge to determine if a link is popup or not. -MC - - * Lists: - - #138: Refusal message is shown on mail moderation page. -MC - - #161: Now supports non-X natively. -MC - - * Search: - - #112,113,126,133,167,171: google like search + some rewrite. -MC - - * Search+Contacts: - - #122: Women now have a • (no more dirty gender icons). -MC - - #124: Homeland is now a flag. -MC - - #164: Married women are now well sorted (by their spouse name). -MC - - * Stats: - - #8,134: Return of the stats pages. -VP - -Fixes (from 0.9.1 branch): - - * Lists: - - Better mails to -owners for reject/discard ops. -MC - - Mailman is case sensitive, goto lowercase. -MC - - -================================================================================ -VERSION 0.9.1 25 Oct 2004 - -New: - - * Lists: - - Auto-moderate/discard mails detected as SPAM by bogofilter. -MC - - Improve header/subject decoding. -MC - - Alpha-sort on listes/admin.php + msgs for each operations. -MC - - 1-click moderation for accept and reject cases. -MC - - * Usability: - - #99: All now have title. -MC - - * NewsLetter: - - Brand New NewsLetter module. -MC - - Convert old archive to new model. -FAL - - * Search+Contacts: - - Added gender icons. -MC - - Better things done for married women. -MC - - Deceased members and non-subscribers special treatments. -MC - - Mobile is now printed too. -MC - - People names are clickable. -MC - - Unified template. -JS - - * Skins: - - Liteskin. -XdX - -Fixes (from 0.9.0 branch): - - * Lists: - - Corrects problem about mails that have non text/* parts. -MC - - Rpc daemon can live everywhere. -MC - - Moderation: refusing/rejecting a mail informs other moderators. -MC - - * Fiche + Search: - - Corrects bad handling of firms. -MC - - We used the bad table to search functions names. -MC - - * Skins: - - Minor updates. -FRU - -================================================================================ -VERSION 0.9.0 15 Oct 2004 - -New: - - * First Public Release. -PoT - -================================================================================ -ACRONYMS: - - * PoT: Polytechnique.org TEAM (see Authors). - - * ALK: Olivier Le Floch (Alakazam) - * BOB: Damien Bobillot (Schmurtz) - * Car: Pascal Corpet (Caribou) - * CAT: Florian El Ahdab (LeChat) - * FAL: Raphaël Marichez (Falco) - * FRU: Florent Bruneau (Fruneau) - * JAC: Stéphane Jacob (jacou) - * JS : Jean Sébastien Bedo - * MC : Pierre Habouzit (MadCoder) - * mYk: Aymeric Augustin (mYk) - * OG : Olivier Guillaumin - * PIK: Fabien Laborde (pika) - * SHK: Jeremy Lainé (Sharky) - * THD: Thomas Deniau (Totom) - * VP : Vincent Palatin - * XdX: Alexandre Hô (XandreX) - * VZA: Vincent Zanotti (vinZ2) - -================================================================================ -vim:et:ts=4:sw=4:tw=80:enc=utf-8: diff --git a/Makefile b/Makefile deleted file mode 100644 index 0b6b37b..0000000 --- a/Makefile +++ /dev/null @@ -1,152 +0,0 @@ - -# $Id: Makefile,v 1.5 2004/11/25 20:18:39 x99laine Exp $ -################################################################################ -# definitions - -VERSNUM := $(shell grep VERSION ChangeLog | head -1 | sed -e "s/VERSION //;s/ .*//") -VERSTAG := $(shell grep VERSION ChangeLog | head -1 | grep 'XX' > /dev/null 2> /dev/null && echo 'beta') -BANANA := $(shell ( [ -d ../banana ] && echo `pwd`"/../banana" ) || echo "/home/web/dev/banana") - -VERSION = $(VERSNUM)$(VERSTAG) - -PKG_NAME = platal -PKG_DIST = $(PKG_NAME)-$(VERSION) -PKG_FILES = AUTHORS ChangeLog COPYING README Makefile -PKG_DIRS = configs htdocs include install.d plugins po scripts templates upgrade - -VCS_FILTER = ! -name .arch-ids ! -name CVS - -define download -@echo "Downloading $@ from $(DOWNLOAD_SRC)" -wget $(DOWNLOAD_SRC) -O $@ -q || ($(RM) $@; exit 1) -endef - -################################################################################ -# global targets - -all: build - -build: core banana wiki medals jquery - -q: - @echo -e "Code statistics\n" - @sloccount $(filter-out wiki/ spool/, $(wildcard */)) 2> /dev/null | egrep '^[a-z]*:' - -%: %.in Makefile ChangeLog - sed -e 's,@VERSION@,$(VERSION),g' $< > $@ - -################################################################################ -# targets - -## -## core -## - -core: spool/templates_c spool/mails_c include/globals.inc.php configs/platal.cron htdocs/.htaccess spool/conf spool/tmp - -spool/templates_c spool/mails_c spool/uploads spool/conf spool/tmp: - mkdir -p $@ - chmod o+w $@ - -htdocs/.htaccess: htdocs/.htaccess.in Makefile - @REWRITE_BASE="/~$$(id -un)"; \ - test "$$REWRITE_BASE" = "/~web" && REWRITE_BASE="/"; \ - sed -e "s,@REWRITE_BASE@,$$REWRITE_BASE,g" $< > $@ - -## -## wiki -## - -WIKI_NEEDS = \ - wiki/local/farmconfig.php \ - wiki/pub/skins/empty \ - wiki/cookbook/e-protect.php \ - spool/wiki.d \ - htdocs/uploads \ - htdocs/wiki \ - -wiki: get-wiki build-wiki - -build-wiki: $(WIKI_NEEDS) | get-wiki - -htdocs/uploads: - cd htdocs && ln -sf ../spool/uploads - -htdocs/wiki: - cd htdocs && ln -sf ../wiki/pub wiki - - -spool/wiki.d: - mkdir -p $@ - chmod o+w $@ - cd $@ && ln -sf ../../include/wiki/wiki.d/* . - - -wiki/cookbook/e-protect.php: - cd wiki/cookbook && ln -sf ../../include/wiki/e-protect.php - -wiki/local/farmconfig.php: - cd wiki/local/ && ln -sf ../../include/wiki/farmconfig.php - -wiki/pub/skins/empty: - cd wiki/pub/skins/ && ln -sf ../../../include/wiki/empty - - -get-wiki: - @if ! test -d wiki; then \ - wget http://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz; \ - tar -xzvf pmwiki-latest.tgz; \ - rm pmwiki-latest.tgz; \ - mv pmwiki-* wiki; \ - fi - -## -## banana -## - -banana: htdocs/images/banana htdocs/css/banana.css include/banana/banana.inc.php -htdocs/images/banana: - cd $(@D) && ln -snf $(BANANA)/img $(@F) - -htdocs/css/banana.css: - cd $(@D) && ln -snf $(BANANA)/css/style.css $(@F) - -include/banana/banana.inc.php: - cd $(@D) && find $(BANANA)/banana/ -name '*.php' -exec ln -snf {} . ";" - -## -## Medal thumbnails -## -MEDAL_PICTURES=$(wildcard htdocs/images/medals/*.jpg) -MEDAL_THUMBNAILS=$(subst /medals/,/medals/thumb/,$(MEDAL_PICTURES)) - -medals: $(MEDAL_THUMBNAILS) - -$(MEDAL_THUMBNAILS): $(subst /medals/thumb/,/medals/,$(@F)) - convert -resize x50 $(subst /medals/thumb/,/medals/,$@) $@ - -## -## jquery -## - -JQUERY_PLUGINS=color -JQUERY_PLUGINS_PATHES=$(addprefix htdocs/javascript/jquery.,$(addsuffix .js,$(JQUERY_PLUGINS))) - -jquery: htdocs/javascript/jquery.js htdocs/javascript/jquery.autocomplete.js $(JQUERY_PLUGINS_PATHES) - -htdocs/javascript/jquery.js: DOWNLOAD_SRC = http://jquery.com/src/jquery-latest.pack.js -htdocs/javascript/jquery.js: - @$(download) - -htdocs/javascript/jquery.autocomplete.js: DOWNLOAD_SRC = http://jquery-autocomplete.googlecode.com/svn/trunk/jquery.autocomplete.js -htdocs/javascript/jquery.autocomplete.js: - @$(download) - -$(JQUERY_PLUGINS_PATHES): DOWNLOAD_SRC = http://plugins.jquery.com/files/$(@F).txt -$(JQUERY_PLUGINS_PATHES): - @$(download) - -################################################################################ - -.PHONY: build dist clean wiki build-wiki banana htdocs/images/banana htdocs/css/banana.css include/banana/banana.inc.php http* - diff --git a/bin/banana.feedgen.php b/bin/banana.feedgen.php deleted file mode 100755 index 6e25f22..0000000 --- a/bin/banana.feedgen.php +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/php5 -banana->mbox_helper; -Banana::$spool_root = $globals->banana->spool_root; -Banana::$nntp_host = "news://{$globals->banana->web_user}:{$globals->banana->web_pass}@{$globals->banana->server}:{$globals->banana->port}/"; -Banana::refreshAllFeeds(array('NNTP', 'MLArchive')); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/banana.spoolgen.php b/bin/banana.spoolgen.php deleted file mode 100755 index 4fbc479..0000000 --- a/bin/banana.spoolgen.php +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/php5 -banana->mbox_helper; -Banana::$spool_root = $globals->banana->spool_root; -Banana::$nntp_host = "news://{$globals->banana->web_user}:{$globals->banana->web_pass}@{$globals->banana->server}:{$globals->banana->port}/"; -Banana::createAllSpool(array('NNTP', 'MLArchive')); -system("chown -R www-data:www-data /var/spool/banana"); -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/connect.db.inc.php b/bin/connect.db.inc.php deleted file mode 100644 index e2954f1..0000000 --- a/bin/connect.db.inc.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/bin/cron/axletter.send.php b/bin/cron/axletter.send.php deleted file mode 100755 index 47366a5..0000000 --- a/bin/cron/axletter.send.php +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/php5 -q -title()}\"\n\n"; - echo " " . date("H:i:s") . " -> début de l'envoi\n"; - $al->sendToAll(); - echo " " . date("H:i:s") . " -> fin de l'envoi\n"; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/banana.feedgen.php b/bin/cron/banana.feedgen.php deleted file mode 100755 index e85766a..0000000 --- a/bin/cron/banana.feedgen.php +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/php5 -banana->mbox_helper; -Banana::$spool_root = $globals->banana->spool_root; -Banana::$nntp_host = "news://{$globals->banana->web_user}:{$globals->banana->web_pass}@{$globals->banana->server}:{$globals->banana->port}/"; -Banana::refreshAllFeeds(array('NNTP')); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/checkdb.php b/bin/cron/checkdb.php deleted file mode 100755 index b891fec..0000000 --- a/bin/cron/checkdb.php +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/php5 -q -total() > 0) { - echo "Erreur pour la verification : $commentaire\n$sql\n\n"; - echo "|"; - while($col = $it->nextField()) { - echo "\t".$col->name."\t|"; - } - echo "\n"; - - while ($arr = $it->next()) { - echo "|"; - foreach ($arr as $val) echo "\t$val\t|"; - echo "\n"; - } - echo "\n"; - } -} - -function info($sql,$commentaire='') { - global $opt_verbose; - if ($opt_verbose) - check($sql,$commentaire); -} - -/* on parse les options */ -$opts = Console_GetOpt::getopt($argv, "v"); -$opt_verbose=false; - -if ( PEAR::isError($opts) ) { - echo $opts->getMessage(); -} else { - $opts = $opts[0]; - foreach ( $opts as $opt) { - switch ($opt[0]) { - case "v": - $opt_verbose=true; - break; - } - } -} - -/* Validite des flags de transmission */ -check("SELECT u.user_id, nom, prenom, promo, - profile_mobile_pub, emails_alias_pub, profile_web_pub, profile_freetext_pub, profile_medals_pub - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - WHERE (profile_mobile_pub != 'private' AND profile_mobile_pub != 'ax' AND profile_mobile_pub != 'public') - OR (emails_alias_pub != 'private' AND emails_alias_pub != 'public') - OR (profile_web_pub != 'private' AND profile_web_pub != 'public') - OR (profile_freetext_pub != 'private' AND profile_freetext_pub != 'public') - OR (profile_medals_pub != 'private' AND profile_medals_pub != 'public')", - "Utilisateur n'ayant pas de flag de publicite pour leurs donnees de profil"); -check("select uid from adresses where pub != 'private' and pub !='ax' and pub != 'public'", "Utiliseur n'ayant pas de flag de publicite pour une adresse"); -check("select uid from tels where tel_pub != 'private' and tel_pub !='ax' and tel_pub != 'public'", "Utiliseur n'ayant pas de flag de publicite pour un numero de telephone"); - -/* validite de aliases */ -check("SELECT a.* - FROM aliases AS a - LEFT JOIN auth_user_md5 AS u ON u.user_id=a.id - WHERE (a.type='alias' OR a.type='a_vie') AND u.prenom is null"); - -/* validite de applis_ins */ -check("select a.* from applis_ins as a left join auth_user_md5 as u on u.user_id=a.uid where u.prenom is null"); -check("select a.* from applis_ins as a left join applis_def as ad on ad.id=a.aid where ad.text is null"); - -/* validite de binet_users */ -check("select b.* from binets_ins as b left join auth_user_md5 as u on u.user_id=b.user_id where u.prenom is null"); -check("select b.* from binets_ins as b left join binets_def as bd on bd.id=b.binet_id where bd.text is null"); - -/* validite de contacts */ -check("select c.* from contacts as c left join auth_user_md5 as u on u.user_id=c.uid where u.prenom is null"); -check("select c.* from contacts as c left join auth_user_md5 as u on u.user_id=c.contact where u.prenom is null"); - -/* validite de emails */ -check("select e.* from emails as e left join auth_user_md5 as u on u.user_id=e.uid where e.uid and u.prenom is null"); - -/* validite de forums */ -check("select f.* from forums.abos as f left join auth_user_md5 as u on u.user_id=f.uid where u.prenom is null"); -check("select f.* from forums.abos as f left join forums.list as fd on fd.fid=f.fid where fd.nom is null"); -check("select f.* from forums.respofaqs as f left join forums.list as fd on fd.fid=f.fid where fd.nom is null"); -check("select f.* from forums.respofaqs as f left join auth_user_md5 as u on u.user_id=f.uid where u.prenom is null"); - -/* validite de groupesx_ins */ -check("select g.* from groupesx_ins as g left join auth_user_md5 as u on u.user_id=g.guid where u.prenom is null"); -check("select g.* from groupesx_ins as g left join groupesx_def as gd on g.gid=g.gid where gd.text is null"); - -/* validite de photo */ -check("select p.* from photo as p left join auth_user_md5 as u on u.user_id=p.uid where u.prenom is null"); - -/* validite des champ pays et region */ -check("SELECT a.uid, a.country FROM adresses AS a LEFT JOIN geoloc_pays AS gp ON a.country = gp.a2 WHERE gp.pays IS NULL","donne la liste des pays dans les profils qui n'ont pas d'entree correspondante dans geoloc_pays"); -/* les régions ne sont valides que dans les adresses pros */ -//check("SELECT e.uid, e.country, e.region FROM entreprises AS e LEFT JOIN geoloc_region AS gr ON (e.country = gr.a2 AND e.region = gr.region) WHERE e.region != '' AND gr.name IS NULL","donne la liste des regions dans les profils pros qui n'ont pas d'entree correspondante dans geoloc_region"); - -/* donne la liste des emails douteux que les administrateurs n'ont pas encore traité */ -check("SELECT a1.alias, a2.alias, e1.email, e2.flags - FROM emails AS e1 - INNER JOIN emails AS e2 ON(e1.email = e2.email AND e1.uid!=e2.uid AND - (e1.uid 1", "à chaque personne de l'annuaire de l'AX (identification_ax) doit correspondre AU PLUS UNE personne de notre annuaire (auth_user_md5) -> si ce n'est pas le cas il faut regarder en manuel ce qui ne va pas !"); - -/* verifie qu'il n'y a pas d'utilisateurs ayant un compte Google Apps désactivé et une redirection encore active vers Google Apps */ -check("SELECT a.alias, g.g_status, u.mail_storage - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') - INNER JOIN gapps_accounts AS g ON (g.l_userid = u.user_id) - WHERE FIND_IN_SET('googleapps', u.mail_storage) > 0 AND g.g_status != 'active'", - "utilisateurs ayant une redirection vers Google Apps alors que leur compte GApps n'est pas actif"); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/clean.php b/bin/cron/clean.php deleted file mode 100755 index 9cbc702..0000000 --- a/bin/cron/clean.php +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/php5 -q -= 365"); -query("delete from register_pending WHERE hash = 'INSCRIT'"); - -// quelques tables sont triées pour que la lecture triée soit plus facile -query("alter table applis_def order by text"); -query("alter table binets_def order by text"); -query("alter table groupesx_def order by text"); -query("alter table secteur order by text"); -query("alter table sections order by text"); - - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/connect.db.inc.php b/bin/cron/connect.db.inc.php deleted file mode 120000 index 55b7297..0000000 --- a/bin/cron/connect.db.inc.php +++ /dev/null @@ -1 +0,0 @@ -../connect.db.inc.php \ No newline at end of file diff --git a/bin/cron/cron_ml_moderate.php b/bin/cron/cron_ml_moderate.php deleted file mode 100755 index 4891bdc..0000000 --- a/bin/cron/cron_ml_moderate.php +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/php5 -q -lists->max_mail_per_min - && time() - $handler < 60) { - // take a lock on a mail - XDB::execute("UPDATE ml_moderate - SET handler = {?} - WHERE handler IS NULL - ORDER BY ts - LIMIT 1", $handler); - if (XDB::affectedRows() == 0) { - break; - } - $query = XDB::query("SELECT nom, prenom, user_id, password, - ml, domain, mid, action, message - FROM auth_user_md5 AS u - INNER JOIN ml_moderate AS ml ON (u.user_id = ml.uid) - WHERE ml.handler = {?}", $handler); - list($nom, $prenom, $uid, $password, $list, $domain, $mid, $action, $reason) = $query->fetchOneRow(); - - // build the client - $client = new MMList($uid, $password, $domain); - - // send the mail - $mail = $client->get_pending_mail($list, $mid); - list($det,$mem,$own) = $client->get_members($list); - $count = 0; - switch ($action) { - case 'accept': - $action = 1; /** 1 = ACCEPT **/ - $subject = "Message accepté"; - $append = "a été accepté par $prenom $nom.\n"; - $type = 'nonspam'; - $count += count($mem) + count($own); - break; - case 'refuse': - $action = 2; /** 2 = REJECT **/ - $subject = "Message refusé"; - $append = "a été refusé par $prenom $nom avec la raison :\n\n" . $reason; - $type = 'nonspam'; - $count += count($own) + 1; - break; - case 'delete': - $action = 3; /** 3 = DISCARD **/ - $subject = "Message supprimé"; - $append = "a été supprimé par $prenom $nom.\n\n" - . "Rappel: il ne faut utiliser cette opération " - . "que dans le cas de spams ou de virus !\n"; - $type = 'spam'; - $count += count($own); - break; - } - - if ($client->handle_request($list, $mid, $action, utf8_decode($reason))) { - $sent_mails += $count; - $texte = "le message suivant :\n\n" - . " Auteur: {$mail['sender']}\n" - . " Sujet : « {$mail['subj']} »\n" - . " Date : ".strftime("le %d %b %Y à %H:%M:%S", (int)$mail['stamp'])."\n\n" - . $append; - $mailer = new PlMailer(); - $mailer->addTo("$list-owner@{$domain}"); - $mailer->setFrom("$list-bounces@{$domain}"); - $mailer->addHeader('Reply-To', "$list-owner@{$domain}"); - $mailer->setSubject($subject); - $mailer->setTxtBody($texte); - $mailer->send(); - } - - // if the mail was classified as Unsure, feed bogo - $raw_mail = html_entity_decode($client->get_pending_mail($list, $mid, 1)); - // search for the X-Spam-Flag header - $end_of_headers = strpos($raw_mail, "\r\n\r\n"); - if ($end_of_headers === false) { // sometimes headers are separated by \n - $end_of_headers = strpos($raw_mail, "\n\n"); - } - $x_spam_flag = ''; - if (preg_match('/^X-Spam-Flag: ([a-zA-Z]+), tests=bogofilter/m', substr($raw_mail, 0, $end_of_headers + 1), $matches)) { - $x_spam_flag = $matches[1]; - } - if ($x_spam_flag == 'Unsure') { - $mailer = new PlMailer(); - $mailer->addTo($type . '@' . $globals->mail->domain); - $mailer->setFrom('"' . $prenom . ' ' . $nom . '" mail->domain . '>'); - $mailer->setTxtBody($type . ' soumis par ' . $prenom . ' ' . $nom . ' via la modération de la liste ' . $list . '@' . $domain); - $mailer->addAttachment($raw_mail, 'message/rfc822', $type . '.mail', false); - $mailer->send(); - } - - // release the lock - XDB::execute("DELETE FROM ml_moderate WHERE handler = {?}", - $handler); - sleep(60 * $count / $globals->lists->max_mail_per_min); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/cron_validations.php b/bin/cron/cron_validations.php deleted file mode 100755 index 6efa5ba..0000000 --- a/bin/cron/cron_validations.php +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/php5 -q -fetchOneRow(); - -$age = (time() - intval($age)) / 86400; -$head = ""; -if ($age > 15) { - $head = "[autodestruction du serveur] "; -} elseif ($age > 7) { - $head = "[armageddon imminent] "; -} elseif ($age > 5) { - $head = "[guerre nucléaire] "; -} elseif ($age > 3) { - $head = "[ET Téléphone maison] "; -} elseif ($age > 1) { - $head = "[réveil !] "; -} elseif (!empty($nbveryold)) { - $head = "[urgent] "; -} - - -if (empty($nb)) { - exit; -} - -$plural = $nb == 1 ? "" : "s"; - -$mymail = new PlMailer(); -$mymail->setFrom('validation@' . $globals->mail->domain); -$mymail->addTo("validation@" . $globals->mail->domain); -$mymail->setSubject($head . "il y a $nb validation$plural non effectuée$plural"); - -$message = - "il y a $nb validation$plural à effectuer \n" - .(empty($nbold)?"":"dont $nbold depuis le dernier mail !!!\n") - .(empty($nbveryold)?"":"et dont *$nbveryold* ".($nbveryold == 1 ? "est" : "sont")." en retard de plus de 6h !!!") - ."\n" - ."https://www.polytechnique.org/admin/validate\n\n" - ."Par catégorie :\n"; -$res = XDB::iterRow("SELECT type, count(*) - FROM x4dat.requests - GROUP BY type - ORDER BY type"); -while (list($type, $nb) = $res->next()) { - $message .= "- $type: $nb\n"; -} - -$message = wordwrap($message,78); -$mymail->setTxtBody($message); -$mymail->send(); -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/emails.check.php b/bin/cron/emails.check.php deleted file mode 100755 index c9690c9..0000000 --- a/bin/cron/emails.check.php +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/php5 -q -next()) { - $insert[] = "('$mail', 'pending', CURDATE(), NOW())"; - $conflits[] = "* $mail sur $alias1 et $alias2"; -} - -if (count($conflits) > 0) { - echo "Nouvelles adresses en doublon detectees :\n" . join("\n", $conflits) - . "\n\nVous pouvez entrer les informations collectees a ce sujet sur la page :\n" - . "http://www.polytechnique.org/admin/emails/duplicated"; - - echo "\n\n"; - $sql = "INSERT IGNORE INTO emails_watch (email, state, detection, last) - VALUES " . join(", ", $insert); - XDB::execute($sql); - if (XDB::errno() != 0) { - echo 'Error : ' . XDB::error() . "\n$sql"; - } -} - -/* - * Check dead emails - */ -if ($panne_level > 0) { - $sql = "SELECT e.email, a.alias AS forlife - FROM emails AS e - INNER JOIN aliases AS a ON a.id = e.uid AND a.type = 'a_vie' - WHERE e.panne_level = $panne_level AND e.flags = 'active' - ORDER BY a.alias"; - $res = Xdb::query($sql); - - if ($res->numRows()) { - $result = $res->fetchAllAssoc(); - echo "Nouvelles adresses en panne detectees :\n"; - foreach ($result as $assoc) { - echo '* ' . $assoc['email'] . ' pour ' . $assoc['forlife'] . "\n"; - } - echo "\n\n"; - - Xdb::execute("UPDATE emails - SET flags = 'panne' - WHERE panne_level = 3 AND flags = 'active'"); - } - - Xdb::execute("UPDATE emails - SET panne_level = $panne_level - WHERE panne_level > $panne_level"); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/google_apps.php b/bin/cron/google_apps.php deleted file mode 100755 index 698968e..0000000 --- a/bin/cron/google_apps.php +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/php5 -q -mailstorage->googleapps_domain) { - exit; -} - -/* Updates the l_userid parameter for newer user accounts. */ -$res = XDB::iterator( - "SELECT g.g_account_name, a.id - FROM gapps_accounts AS g - LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie') - WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.id IS NOT NULL"); -while ($account = $res->next()) { - XDB::execute( - "UPDATE gapps_accounts - SET l_userid = {?} - WHERE g_account_name = {?}", - $account['id'], $account['g_account_name']); -} - -/* Emits a warning for GApps accounts without local user_id. */ -$res = XDB::iterator( - "SELECT g.g_account_name - FROM gapps_accounts AS g - LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie') - WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.id IS NULL"); -while ($account = $res->next()) { - if (!preg_match("/^admin-/", $account['g_account_name'])) { - printf("Warning: GApps account '%s' has no local user_id.\n", $account['g_account_name']); - } -} - -/* Retrieves successful job queues for post-queue processing. */ -$res = XDB::iterator( - "SELECT q_id, q_recipient_id, j_type, j_parameters - FROM gapps_queue - WHERE p_status = 'success' AND q_recipient_id IS NOT NULL"); -while ($job = $res->next()) { - if ($job['j_type'] == 'u_create') { - post_queue_u_create($job); - } else if ($job['j_type'] == 'u_update') { - post_queue_u_update($job); - } -} - -/* Removes successful jobs, and old failed jobs. */ -XDB::execute( - "DELETE FROM gapps_queue - WHERE p_status = 'success' OR - (p_status = 'hardfail' AND p_end_date < DATE_SUB(NOW(), INTERVAL 15 DAY))"); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/homonymes.php b/bin/cron/homonymes.php deleted file mode 100755 index 9cfc622..0000000 --- a/bin/cron/homonymes.php +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/php5 -q -total()) { - require_once('validations/homonymes.inc.php'); - while ($old = $resRobot->next()) { - $res = XDB::query("SELECT alias AS forlife FROM homonymes INNER JOIN aliases ON(user_id = id) WHERE homonyme_id = {?} AND type='a_vie'", $old['id']); - $forlifes = $res->fetchColumn(); - $req = new HomonymeReq($old['id'], $old['alias'], $forlifes, $old['expire'] > date("Y-m-d")); - $req->submit(); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/notifs.birthday.php b/bin/cron/notifs.birthday.php deleted file mode 100755 index 542f67f..0000000 --- a/bin/cron/notifs.birthday.php +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/php5 -q - diff --git a/bin/cron/notifs.send.php b/bin/cron/notifs.send.php deleted file mode 100755 index ac67dc7..0000000 --- a/bin/cron/notifs.send.php +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/php5 -q -_data as $u) { - $mailer = new PlMailer('carnet/notif.mail.tpl'); - $mailer->assign('u', $u); - $mailer->assign('week', date("W - Y")); - $mailer->assign('cats', $all->_cats); - $mailer->addTo('"' . $u['prenom'] . ' ' . $u['nom'] . '" <' . $u['bestalias'] . '@polytechnique.org>'); - $mailer->send($u['mail_fmt'] == 'html'); -} - -XDB::execute("DELETE FROM watch_profile - WHERE ts < DATE_SUB(CURRENT_DATE, INTERVAL 15 DAY)"); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/cron/rapports_inscription.php b/bin/cron/rapports_inscription.php deleted file mode 100755 index b7892cd..0000000 --- a/bin/cron/rapports_inscription.php +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/php5 -q - {?} - GROUP BY alias - ORDER BY promo", date("Ymd000000", strtotime ("last Monday"))); -if ($a = $res->total()) { - $MESSAGE.="$a INSCRIPTIONS CONFIRMEES:\n"; - while (list($usern,$promo,$mail) = $res->next()) { - $MESSAGE.="X$promo, $usern, $mail\n"; - } -} - -// --------------------------------------- - -$res = XDB::iterRow( - "SELECT forlife, email, date - FROM register_pending - WHERE hash != 'INSCRIT' - ORDER BY date"); -if ($b = $res->total()) { - $MESSAGE.="\n$b INSCRIPTIONS NON CONFIRMEES:\n"; - while (list($usern, $mail, $quand) = $res->next()) { - $MESSAGE.="$quand, $usern,\n $mail\n"; - } -} - -// --------------------------------------- - -$res = XDB::query('SELECT COUNT(DISTINCT uid), COUNT(*) FROM register_marketing'); -list($a, $b) = $res->fetchOneRow(); -$MESSAGE .= "\n$c INSCRIPTIONS SOLICITÉES :\n"; -$MESSAGE .= " $a utilisateurs\n $b adresses mails\n"; - -// --------------------------------------- - -$MESSAGE .= "\n\n"; - -require_once('../../classes/plmailer.php'); -$mailer = new PlMailer(); -$mailer->setSubject("$a confirmées, $b en attente et $c sollicitées"); -$mailer->setFrom($globals->register->notif); -$mailer->addTo($globals->register->notif); -$mailer->setTxtBody($MESSAGE); -$mailer->send(); -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/csv2sql.php b/bin/csv2sql.php deleted file mode 100755 index 9820fbf..0000000 --- a/bin/csv2sql.php +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/php5 -setCSV($source); -$translater->run($action, $insert_relation, $update_relation); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/devel/lists.foreach_template.py b/bin/devel/lists.foreach_template.py deleted file mode 100755 index 8a33eeb..0000000 --- a/bin/devel/lists.foreach_template.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -#* Copyright (C) 2004 polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#*************************************************************************** - -import base64, MySQLdb, os, getopt, sys, MySQLdb.converters, sha, signal - -sys.path.append('/usr/lib/mailman/bin') - -from pwd import getpwnam -from grp import getgrnam - -from SimpleXMLRPCServer import SimpleXMLRPCServer -from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler - -import paths -from Mailman import MailList -from Mailman import Utils -from Mailman import Message -from Mailman import Errors -from Mailman import mm_cfg -from Mailman import i18n -from Mailman.UserDesc import UserDesc -from Mailman.ListAdmin import readMessage -from email.Iterators import typed_subpart_iterator - - -uid = getpwnam(mm_cfg.MAILMAN_USER)[2] -gid = getgrnam(mm_cfg.MAILMAN_GROUP)[2] - -if not os.getuid(): - os.setregid(gid,gid) - os.setreuid(uid,uid) - -if ( os.getuid() is not uid ) or ( os.getgid() is not gid): - sys.exit(0) - - -for listname in Utils.list_names(): - try: - mlist = MailList.MailList(listname,lock=0) - except: - print 'ERROR for '+listname - continue - try: - mlist.Lock() - - ############################################ - # do treatement here - ############################################ - - mlist.Save() - mlist.Unlock() - print 'OK for '+listname - except: - print 'ERROR for '+listname - continue - -print 'DONE' - -# vim:set et: diff --git a/bin/devel/xhtml.classes.pl b/bin/devel/xhtml.classes.pl deleted file mode 100755 index f385b03..0000000 --- a/bin/devel/xhtml.classes.pl +++ /dev/null @@ -1,139 +0,0 @@ -#! /usr/bin/perl -w -#*************************************************************************** -#* Copyright (C) 2003-2008 Polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#*************************************************************************** - - -use strict; -my %classes; -my %styles; - -my $red=""; -my $yel=""; -my $blu=""; -my $whi=""; -my $gra=""; - - -sub parse_dir($) { - my $dir = shift; - my @dirs; - opendir DIR,$dir; - while(my $a = readdir DIR) { - if( -d $dir."/".$a ) { - push @dirs,$dir."/".$a unless($a eq '.' or $a eq '..' or $a eq 'CVS'); - } else { - &parse_file($dir."/".$a) if($a =~ /\.(php|tpl|htm[l]?)$/i); - } - } - closedir DIR; - foreach $dir (@dirs) { &parse_dir($dir); } -} - -sub parse_file($) { - my $file = shift; - open FILE,"<$file"; - my $text = join '',(); - $text =~ s/[\s\t\n]+/ /g; - &get_classes($file,$text); - close FILE; -} - -sub get_classes($$) { - my $file = shift; - my $text = shift; - while ($text =~ /<( *[^\/](?:->|[^>])*) *>(.*)$/) { - &parse_tag($file,$1); - $text = $2; - } -} - -sub class_add($$) { - my $file = shift; - my $tag = shift; - my $class = shift; - if (defined($classes{"$tag.$class"})) { - $classes{"$tag.$class"} .= " $file"; - } else { - $classes{"$tag.$class"} = $file; - } -} - -sub parse_tag($$) { - my $file = shift; - my $tag = shift; - - # tag interdits en xhtml - print STDERR "${red}XHTML error: ${yel}<$1> (majuscules) ${blu}($file)${gra}\n" - if($tag =~ /^((?:[A-Z]+[a-z]*)+)( |$)/); - print STDERR "${red}XHTML error: ${yel}<$1> ${blu}($file)${gra}\n" - if($tag =~ /^(b|i|u|big|small|font|center)( |$)/); - print STDERR "${red}XHTML error: ${yel}<$1> sans '/' ${blu}($file)${gra}\n" - if($tag =~ /^(br|hr|img|link|input)( [^\/]*)?$/); - - print STDERR "${red}XHTML error: ${yel}attribut $1 sans = ${blu}($file)${gra}\n" - if($tag =~ / (checked|disabled|multiple|readonly)( |$)/); - print STDERR "${red}XHTML error: ${yel}attribut $1 ${blu}($file)${gra}\n" - if($tag =~ / (align|width|border|color|valign)=/); - - # récupération des classes utilisées ... - if($tag =~ /^(\w+).* class=('{[^}]*}'|"{[^}]*}"|'[^{}']*'|"[^{}"]*")/) { - my $t = lc($1); - $2 =~ /^['"](.*)['"]$/; - my $c = lc($1); - if($c =~ /^{ ?cycle.* values=('[^']*'|"[^"]*")/) { - my @cycle = split /['",]/,$1; - foreach my $cl (@cycle) { - &class_add($file,$t,$cl) if($cl); - } - } else { - &class_add($file,$t,$c); - } - } - - #récupération des styles utilisés ... - if($tag =~ /^(\w+).* style=('{[^}]*}'|"{[^}]*}"|'[^{}']*'|"[^{}"]*")/) { - my $t = lc($1); - $2 =~ /^['"](.*)['"]$/; - my $s = lc($1); - if (defined($styles{"$t => $s"})) { - $styles{"$t => $s"} .= " $file"; - } else { - $styles{"$t => $s"} = $file; - } - } -} - -foreach my $dir (@ARGV) { - &parse_dir($dir); -} - -print "\n$blu..:: Classes ::..$gra\n\n"; -foreach my $key (sort(keys(%classes))) { - print $key,"\n"; -} - -print "\n$blu..:: Styles ::..$gra\n\n"; -foreach my $key (sort(keys(%styles))) { - print $key,"\t",$whi,$styles{$key},$gra,"\n"; -} - -print "\n"; - -# vim:set et ts=4 sts=4 sw=4: diff --git a/bin/devel/xhtml.validate.pl b/bin/devel/xhtml.validate.pl deleted file mode 100755 index 9abba72..0000000 --- a/bin/devel/xhtml.validate.pl +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/perl -#*************************************************************************** -#* Copyright (C) 2003-2008 Polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#***************************************************************************/ - -use LWP::UserAgent; -use HTTP::Request::Common 'POST'; - -print LWP::UserAgent - ->new - ->request( - POST 'http://murphy.polytechnique.org/w3c-markup-validator/check', - Content_Type => 'form-data', - Content => [ - output => 'xml', - uploaded_file => [$ARGV[0]], - ] - )->as_string; - diff --git a/bin/emails.broken.helper.php b/bin/emails.broken.helper.php deleted file mode 100755 index 9534e0e..0000000 --- a/bin/emails.broken.helper.php +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/php5 -q -\n"); - exit(1); -} else { - $output = $opts['o']; -} - -$input_fd = fopen("php://stdin", "r"); -$output_fd = fopen($output, "a"); - -while ($_email = fgets($input_fd)) { - $_email = trim($_email); - $email = valide_email($_email); - if (empty($email) || $email=='@') { - printf(">> %s: invalid email\n", $_email); - continue; - } - - $sel = XDB::query( - "SELECT e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails, u.nom, u.prenom, u.promo, a.alias - FROM emails AS e1 - LEFT JOIN emails AS e2 ON (e1.uid = e2.uid AND FIND_IN_SET('active', e2.flags) AND e1.email != e2.email) - INNER JOIN auth_user_md5 AS u ON (e1.uid = u.user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND FIND_IN_SET('bestalias',a.flags)) - WHERE e1.email = {?} - GROUP BY e1.uid", $email); - if ($sel->numRows() > 0) { - fwrite($output_fd, $email . "\n"); - } else { - printf(">> %s: email not in the database\n", $_email); - } -} - -fclose($input_fd); -fclose($output_fd); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/emails.broken.php b/bin/emails.broken.php deleted file mode 100755 index d371854..0000000 --- a/bin/emails.broken.php +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/php5 -q -fetchOneAssoc()) { - if (!$x['panne']) { - XDB::execute("UPDATE emails - SET panne=NOW(), last=NOW(), - panne_level = 1 - WHERE email = {?}", - $email); - } else { - XDB::execute("UPDATE emails - SET last = CURDATE(), - panne_level = panne_level + 1 - WHERE email = {?} - AND DATE_ADD(last, INTERVAL 7 DAY) < CURDATE()", $email); - } - - if (empty($x['nb_mails'])) { - echo "$email : seule adresse active de {$x['prenom']} {$x['nom']}\n"; - } else { - $mail = new PlMailer('emails/broken.mail.tpl'); - $mail->addTo("\"{$x['prenom']} {$x['nom']}\" <{$x['alias']}@" . $globals->mail->domain . '>'); - $mail->assign('x', $x); - $mail->assign('email', $email); - $mail->send(); - echo "$email : mail envoyé\n"; - } - - if (!isset($list[$x['alias']])) { - $list[$x['alias']] = array($email); - } else { - $list[$x['alias']][] = $email; - } - } else { - echo "$email : cette adresse n'est pas dans la base\n"; - } -} - -XDB::execute("UPDATE emails - SET panne_level = panne_level - 1 - WHERE flags = 'active' AND panne_level > 1 - AND last != CURDATE()"); -XDB::execute("UPDATE emails - SET panne_level = 0 - WHERE flags = 'active' AND panne_level = 1 - AND DATE_ADD(last, INTERVAL 1 YEAR) < CURDATE()"); - -$csv = "nom;prenom;promo;alias;bounce;nbmails\n"; -foreach ($list as $alias=>$mails) { - $sel = Xdb::query( - "SELECT u.user_id, count(e.email) AS nb_mails, u.nom, u.prenom, u.promo - FROM aliases AS a - INNER JOIN auth_user_md5 AS u ON a.id = u.user_id - LEFT JOIN emails AS e ON (e.uid = u.user_id AND FIND_IN_SET('active', e.flags) AND e.panne = 0) - WHERE a.alias = {?} - GROUP BY u.user_id", $alias); - if ($x = $sel->fetchOneAssoc()) { - $csv .= $x['nom'].';'.$x['prenom'].';' .$x['promo'].';'.$alias.';' . join(',', $mails) . ';'.$x['nb_mails']."\n"; - } -} - -$fo = fopen($output, 'w+'); -fwrite($fo, $csv); -fclose($fo); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/getuser.sh b/bin/getuser.sh deleted file mode 100755 index 30e6377..0000000 --- a/bin/getuser.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -field=$1 -nom=$2 -promo=$3 - -query="SELECT $field FROM auth_user_md5 AS u " -where="" -pos=0 -for i in $nom ; do - query="$query INNER JOIN search_name AS sn${pos} ON (u.user_id = sn${pos}.uid) " - [ "$where" != "" ] && where="$where AND" - where="${where} sn${pos}.token LIKE \"${i}%\"" - pos=$((pos + 1)) -done -if [ "${promo}" != "" ] ; then - [ "$where" != "" ] && where="$where AND " - where="${where} u.promo = $promo" -fi -query="${query} WHERE ${where} GROUP BY u.user_id" - -echo $query | mysql --default-character-set=utf8 -N x4dat diff --git a/bin/kill_sessions.sh b/bin/kill_sessions.sh deleted file mode 100755 index 7816df1..0000000 --- a/bin/kill_sessions.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -find /var/lib/php5 -maxdepth 1 -name 'sess_*' -type f -delete diff --git a/bin/lists.create_promo.php b/bin/lists.create_promo.php deleted file mode 100755 index 34eb213..0000000 --- a/bin/lists.create_promo.php +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/php5 -q -mail->domain, "Liste de la promotion $promo", - 1 /*private*/, 2 /*moderate*/, 0 /*free subscription*/, - array($owner), array()); -$req->submit(); -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/lists.make_tpl.sh b/bin/lists.make_tpl.sh deleted file mode 100755 index 6a67231..0000000 --- a/bin/lists.make_tpl.sh +++ /dev/null @@ -1,25 +0,0 @@ -#! /bin/ash - -TEMPLATES='/etc/mailman/xorg' -URL='http://listes.polytechnique.org' -TARGET="/var/lib/mailman/lists/$1/fr" - -MBOX=${1#*_} -FQDN=${1%%_*} - -ALIST="${MBOX}-owner@${FQDN}" -LIST="${MBOX}@${FQDN}" -UIST="${MBOX}_${FQDN}" -ADMIN="$URL/admin/$UIST" -MEMBERS="$URL/members/$UIST" -MODERATE="$URL/moderate/$UIST" - -mkdir -p "$TARGET" - -for tpl in $TEMPLATES/*txt -do - cat $tpl \ - | sed -e "s,{{{ALIST}}},$ALIST,g ; s,{{{LIST}}},$LIST,g ; s,{{{ADMIN}}},$ADMIN,g ; s,{{{MEMBERS}}},$MEMBERS,g ; s,{{{MODERATE}}},$MODERATE,g" \ - > "$TARGET/${tpl#$TEMPLATES/}" -done - diff --git a/bin/lists.mhonarc_by_month.pl b/bin/lists.mhonarc_by_month.pl deleted file mode 100755 index 330434f..0000000 --- a/bin/lists.mhonarc_by_month.pl +++ /dev/null @@ -1,80 +0,0 @@ -#! /bin/perl -w -# -use strict; -################################################################################ -# the RCFILE is the first arg -# -my $rcfile = shift; -# -################################################################################ -# the list prefix is the second one -# -my $list = shift; -# -################################################################################ -# CONSTANTS -# -my $spool = "/var/spool/platal/archives/"; -my $tmpbox = "mytmpbox.mbox"; - -my %conv; -$conv{'Jan'} = "01"; -$conv{'Feb'} = "02"; -$conv{'Mar'} = "03"; -$conv{'Apr'} = "04"; -$conv{'May'} = "05"; -$conv{'Jun'} = "06"; -$conv{'Jul'} = "07"; -$conv{'Aug'} = "08"; -$conv{'Sep'} = "09"; -$conv{'Oct'} = "10"; -$conv{'Nov'} = "11"; -$conv{'Dec'} = "12"; -# -################################################################################ -# local vars -# -my $mail = ""; -my $line = ""; -my $odir = ""; - -my $y = ''; -my $m = ''; -# -################################################################################ - -while(<>) { - $line = $_; - - ## - ## Do we start a new mail ? - ## - if($line =~ /^From +[^@ ]*@[^@ ]* +[a-z]* +([a-z]*) +\d* +\d*:\d*:\d* +(\d*)$/i) { - if ($conv{$1} ne $m || $y ne $2) { - if($odir) { - ## - ## If we are here, then we just finished a month. - ## -> we close the file, and exec mhonarc on the stuff - ## - close FILE; - $odir = $spool.$list."/$y/$m"; - system("mkdir -p $odir") unless (-d $odir); - system("mhonarc -add -outdir $odir -rcfile $rcfile $tmpbox"); - } else { - # dummy init - $odir = 1; - } - - $m = $conv{$1}; - $y = $2; - open FILE,"> $tmpbox"; - } - } - - print FILE $line; -} - -if($odir) { - close FILE; - unlink $tmpbox; -} diff --git a/bin/lists.mhonarc_pipe.sh b/bin/lists.mhonarc_pipe.sh deleted file mode 100755 index 603c089..0000000 --- a/bin/lists.mhonarc_pipe.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh - -SPOOL=/var/spool/platal/archives/ -OUTDIR="${SPOOL}/$1/`date +'%Y/%m/'`" -RCFILE=../install.d/lists/platal.mrc - -[ -d "$OUTDIR" ] || mkdir -p "$OUTDIR" -exec mhonarc -add -outdir "$OUTDIR" -rcfile "$RCFILE" diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py deleted file mode 100755 index ccf3654..0000000 --- a/bin/lists.rpc.py +++ /dev/null @@ -1,1075 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -#* Copyright (C) 2004 polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#*************************************************************************** - -import base64, MySQLdb, os, getopt, sys, sha, signal, re, shutil, ConfigParser -import MySQLdb.converters -import SocketServer - -sys.path.append('/usr/lib/mailman/bin') - -from pwd import getpwnam -from grp import getgrnam - -from SimpleXMLRPCServer import SimpleXMLRPCServer -from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler - -import paths -from Mailman import MailList -from Mailman import Utils -from Mailman import Message -from Mailman import Errors -from Mailman import mm_cfg -from Mailman import i18n -from Mailman.UserDesc import UserDesc -from Mailman.ListAdmin import readMessage -from email.Iterators import typed_subpart_iterator -from threading import Lock - -class AuthFailed(Exception): pass - -################################################################################ -# -# CONFIG -# -#------------------------------------------------ - -config = ConfigParser.ConfigParser() -config.read(os.path.dirname(__file__)+'/../configs/platal.ini') -config.read(os.path.dirname(__file__)+'/../configs/platal.conf') - -def get_config(sec, val, default=None): - try: - return config.get(sec, val)[1:-1] - except ConfigParser.NoOptionError, e: - if default is None: - print e - sys.exit(1) - else: - return default - -MYSQL_USER = get_config('Core', 'dbuser') -MYSQL_PASS = get_config('Core', 'dbpwd') - -PLATAL_DOMAIN = get_config('Mail', 'domain') -PLATAL_DOMAIN2 = get_config('Mail', 'domain2', '') - -VHOST_SEP = get_config('Lists', 'vhost_sep', '_') -ON_CREATE_CMD = get_config('Lists', 'on_create', '') - -################################################################################ -# -# CLASSES -# -#------------------------------------------------ -# Manage Basic authentication -# - -class BasicAuthXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): - - """XMLRPC Request Handler - This request handler is used to provide BASIC HTTP user authentication. - It first overloads the do_POST() function, authenticates the user, then - calls the super.do_POST(). - - Moreover, we override _dispatch, so that we call functions with as first - argument a UserDesc taken from the database, containing name, email and perms - """ - - def _dispatch(self, method, params): - # TODO: subclass in SimpleXMLRPCDispatcher and not here. - new_params = list(params) - new_params.insert(0, self.data[2]) - new_params.insert(0, self.data[1]) - new_params.insert(0, self.data[0]) - return self.server._dispatch(method, new_params) - - def do_POST(self): - try: - _, auth = self.headers["authorization"].split() - uid, md5 = base64.decodestring(auth).strip().split(':') - vhost = self.path.split('/')[1].lower() - self.data = self.getUser(uid, md5, vhost) - if self.data is None: - raise AuthFailed - # Call super.do_POST() to do the actual work - SimpleXMLRPCRequestHandler.do_POST(self) - except: - self.send_response(401) - self.end_headers() - - def getUser(self, uid, md5, vhost): - res = mysql_fetchone ("""SELECT CONCAT(u.prenom, ' ', u.nom), a.alias, u.perms - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( a.id=u.user_id AND a.type='a_vie' ) - WHERE u.user_id = '%s' AND u.password = '%s' AND u.perms IN ('admin', 'user') - LIMIT 1""" %( uid, md5 ) ) - if res: - name, forlife, perms = res - if vhost != PLATAL_DOMAIN: - res = mysql_fetchone ("""SELECT uid - FROM groupex.membres AS m - INNER JOIN groupex.asso AS a ON (m.asso_id = a.id) - WHERE perms='admin' AND uid='%s' AND mail_domain='%s'""" %( uid , vhost ) ) - if res: perms= 'admin' - userdesc = UserDesc(forlife+'@'+PLATAL_DOMAIN, name, None, 0) - return (userdesc, perms, vhost) - else: - return None - -################################################################################ -# -# XML RPC STUFF -# -#------------------------------------------------------------------------------- -# helpers -# - -def connectDB(): - db = MySQLdb.connect( - db='x4dat', - user=MYSQL_USER, - passwd=MYSQL_PASS, - unix_socket='/var/run/mysqld/mysqld.sock') - db.ping() - return db.cursor() - -def mysql_fetchone(query): - ret = None - try: - lock.acquire() - mysql.execute(query) - if int(mysql.rowcount) > 0: - ret = mysql.fetchone() - finally: - lock.release() - return ret - -def is_admin_on(userdesc, perms, mlist): - return ( perms == 'admin' ) or ( userdesc.address in mlist.owner ) - - -def quote(s, is_header=False): - if is_header: - h = Utils.oneline(s, 'iso-8859-1') - else: - h = s - h = str('').join(re.split('[\x00-\x08\x0B-\x1f]+', h)) - return Utils.uquote(h.replace('&', '&').replace('>', '>').replace('<', '<')) - -def to_forlife(email): - try: - mbox, fqdn = email.split('@') - except: - mbox = email - fqdn = PLATAL_DOMAIN - if ( fqdn == PLATAL_DOMAIN ) or ( fqdn == PLATAL_DOMAIN2 ): - res = mysql_fetchone("""SELECT CONCAT(f.alias, '@%s'), CONCAT(u.prenom, ' ', u.nom) - FROM auth_user_md5 AS u - INNER JOIN aliases AS f ON (f.id=u.user_id AND f.type='a_vie') - INNER JOIN aliases AS a ON (a.id=u.user_id AND a.alias='%s' AND a.type!='homonyme') - WHERE u.perms IN ('admin', 'user') - LIMIT 1""" %( PLATAL_DOMAIN, mbox ) ) - if res: - return res - else: - return (None, None) - return (email.lower(), mbox) - -## -# see /usr/lib/mailman/bin/rmlist -## -def remove_it(listname, filename): - if os.path.islink(filename) or os.path.isfile(filename): - os.unlink(filename) - elif os.path.isdir(filename): - shutil.rmtree(filename) - -#------------------------------------------------------------------------------- -# helpers on lists -# - -def get_list_info(userdesc, perms, mlist, front_page=0): - members = mlist.getRegularMemberKeys() - is_member = userdesc.address in members - is_owner = userdesc.address in mlist.owner - if mlist.advertised or is_member or is_owner or (not front_page and perms == 'admin'): - is_pending = False - if not is_member and (mlist.subscribe_policy > 1): - try: - mlist.Lock() - for id in mlist.GetSubscriptionIds(): - if userdesc.address == mlist.GetRecord(id)[1]: - is_pending = 1 - break - mlist.Unlock() - except: - mlist.Unlock() - return 0 - - host = mlist.internal_name().split(VHOST_SEP)[0].lower() - details = { - 'list' : mlist.real_name, - 'addr' : mlist.real_name.lower() + '@' + host, - 'host' : host, - 'desc' : quote(mlist.description), - 'info' : quote(mlist.info), - 'diff' : (mlist.default_member_moderation>0) + (mlist.generic_nonmember_action>0), - 'ins' : mlist.subscribe_policy > 1, - 'priv' : 1-mlist.advertised, - 'sub' : 2*is_member + is_pending, - 'own' : is_owner, - 'nbsub': len(members) - } - return (details, members) - return 0 - -def get_options(userdesc, perms, vhost, listname, opts): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - options = { } - for (k, v) in mlist.__dict__.iteritems(): - if k in opts: - if type(v) is str: - options[k] = quote(v) - else: options[k] = v - details = get_list_info(userdesc, perms, mlist)[0] - return (details, options) - except: - return 0 - -def set_options(userdesc, perms, vhost, listname, opts, vals): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.Lock() - for (k, v) in vals.iteritems(): - if k not in opts: - continue - if k == 'default_member_moderation': - for member in mlist.getMembers(): - mlist.setMemberOption(member, mm_cfg.Moderate, int(v)) - t = type(mlist.__dict__[k]) - if t is bool: mlist.__dict__[k] = bool(v) - elif t is int: mlist.__dict__[k] = int(v) - elif t is str: mlist.__dict__[k] = Utils.uncanonstr(v, 'fr') - else: mlist.__dict__[k] = v - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# users procedures for [ index.php ] -# - -def get_lists(userdesc, perms, vhost, email=None): - if email is None: - udesc = userdesc - else: - udesc = UserDesc(email.lower(), email.lower(), None, 0) - prefix = vhost.lower()+VHOST_SEP - names = Utils.list_names() - names.sort() - result = [] - for name in names: - if not name.startswith(prefix): - continue - try: - mlist = MailList.MailList(name, lock=0) - except: - continue - try: - details = get_list_info(udesc, perms, mlist, (email is None and vhost == PLATAL_DOMAIN))[0] - result.append(details) - except: - continue - return result - -def subscribe(userdesc, perms, vhost, listname): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - mlist.Lock() - if ( mlist.subscribe_policy in (0, 1) ) or userdesc.address in mlist.owner: - mlist.ApprovedAddMember(userdesc) - result = 2 - else: - result = 1 - try: - mlist.AddMember(userdesc) - except Errors.MMNeedApproval: - pass - mlist.Save() - except: - result = 0 - mlist.Unlock() - return result - -def unsubscribe(userdesc, perms, vhost, listname): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - mlist.Lock() - mlist.ApprovedDeleteMember(userdesc.address) - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# users procedures for [ index.php ] -# - -def get_name(member): - try: - return quote(mlist.getMemberName(member)) - except: - return '' - -def get_members(userdesc, perms, vhost, listname): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - details, members = get_list_info(userdesc, perms, mlist) - members.sort() - members = map(lambda member: (get_name(member), member), members) - return (details, members, mlist.owner) - except: - return 0 - -#------------------------------------------------------------------------------- -# users procedures for [ trombi.php ] -# - -def get_members_limit(userdesc, perms, vhost, listname, page, nb_per_page): - try: - members = get_members(userdesc, perms, vhost, listname.lower())[1] - except: - return 0 - i = int(page) * int(nb_per_page) - return (len(members), members[i:i+int(nb_per_page)]) - -def get_owners(userdesc, perms, vhost, listname): - try: - details, members, owners = get_members(userdesc, perms, vhost, listname.lower()) - except: - return 0 - return (details, owners) - -#------------------------------------------------------------------------------- -# owners procedures [ admin.php ] -# - -def replace_email(userdesc, perms, vhost, listname, from_email, to_email): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - - mlist.Lock() - mlist.ApprovedChangeMemberAddress(from_email.lower(), to_email.lower(), 0) - mlist.Save() - mlist.Unlock() - return 1 - except: - return 0 - -def mass_subscribe(userdesc, perms, vhost, listname, users): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - - members = mlist.getRegularMemberKeys() - added = [] - mlist.Lock() - for user in users: - email, name = to_forlife(user) - if ( email is None ) or ( email in members ): - continue - userd = UserDesc(email, name, None, 0) - mlist.ApprovedAddMember(userd) - added.append( (quote(userd.fullname), userd.address) ) - mlist.Save() - except: - pass - mlist.Unlock() - return added - -def mass_unsubscribe(userdesc, perms, vhost, listname, users): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - - mlist.Lock() - map(lambda user: mlist.ApprovedDeleteMember(user), users) - mlist.Save() - except: - pass - mlist.Unlock() - return users - -def add_owner(userdesc, perms, vhost, listname, user): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - email = to_forlife(user)[0] - if email is None: - return 0 - if email not in mlist.owner: - mlist.Lock() - mlist.owner.append(email) - mlist.Save() - except: - pass - mlist.Unlock() - return True - -def del_owner(userdesc, perms, vhost, listname, user): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - if len(mlist.owner) < 2: - return 0 - mlist.Lock() - mlist.owner.remove(user) - mlist.Save() - except: - pass - mlist.Unlock() - return True - -#------------------------------------------------------------------------------- -# owners procedures [ admin.php ] -# - -def get_pending_ops(userdesc, perms, vhost, listname): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - - mlist.Lock() - - subs = [] - seen = [] - dosave = False - for id in mlist.GetSubscriptionIds(): - time, addr, fullname, passwd, digest, lang = mlist.GetRecord(id) - if addr in seen: - mlist.HandleRequest(id, mm_cfg.DISCARD) - dosave = True - continue - seen.append(addr) - try: - login = re.match("^[^.]*\.[^.]*\.\d\d\d\d$", addr.split('@')[0]).group() - subs.append({'id': id, 'name': quote(fullname), 'addr': addr, 'login': login }) - except: - subs.append({'id': id, 'name': quote(fullname), 'addr': addr }) - - helds = [] - for id in mlist.GetHeldMessageIds(): - ptime, sender, subject, reason, filename, msgdata = mlist.GetRecord(id) - fpath = os.path.join(mm_cfg.DATA_DIR, filename) - try: - size = os.path.getsize(fpath) - except OSError, e: - if e.errno <> errno.ENOENT: raise - continue - try: - msg = readMessage(fpath) - fromX = msg.has_key("X-Org-Mail") - except: - pass - helds.append({ - 'id' : id, - 'sender': quote(sender, True), - 'size' : size, - 'subj' : quote(subject, True), - 'stamp' : ptime, - 'fromx' : fromX - }) - if dosave: mlist.Save() - mlist.Unlock() - except: - mlist.Unlock() - return 0 - return (subs, helds) - -def handle_request(userdesc, perms, vhost, listname, id, value, comment): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.Lock() - mlist.HandleRequest(int(id), int(value), comment) - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -def get_pending_sub(userdesc, perms, vhost, listname, id): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - - mlist.Lock() - sub = 0 - id = int(id) - if id in mlist.GetSubscriptionIds(): - time, addr, fullname, passwd, digest, lang = mlist.GetRecord(id) - try: - login = re.match("^[^.]*\.[^.]*\.\d\d\d\d$", addr.split('@')[0]).group() - sub = {'id': id, 'name': quote(fullname), 'addr': addr, 'login': login } - except: - sub = {'id': id, 'name': quote(fullname), 'addr': addr } - mlist.Unlock() - except: - mlist.Unlock() - return 0 - return sub - -def get_pending_mail(userdesc, perms, vhost, listname, id, raw=0): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.Lock() - ptime, sender, subject, reason, filename, msgdata = mlist.GetRecord(int(id)) - fpath = os.path.join(mm_cfg.DATA_DIR, filename) - size = os.path.getsize(fpath) - msg = readMessage(fpath) - mlist.Unlock() - - if raw: - return quote(str(msg)) - results_plain = [] - results_html = [] - for part in typed_subpart_iterator(msg, 'text', 'plain'): - c = part.get_payload() - if c is not None: results_plain.append (c) - results_plain = map(lambda x: quote(x), results_plain) - for part in typed_subpart_iterator(msg, 'text', 'html'): - c = part.get_payload() - if c is not None: results_html.append (c) - results_html = map(lambda x: quote(x), results_html) - return {'id' : id, - 'sender': quote(sender, True), - 'size' : size, - 'subj' : quote(subject, True), - 'stamp' : ptime, - 'parts_plain' : results_plain, - 'parts_html': results_html } - except: - mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# owner options [ options.php ] -# - -owner_opts = ['accept_these_nonmembers', 'admin_notify_mchanges', 'description', \ - 'default_member_moderation', 'generic_nonmember_action', 'info', \ - 'subject_prefix', 'goodbye_msg', 'send_goodbye_msg', 'subscribe_policy', \ - 'welcome_msg'] - -def get_owner_options(userdesc, perms, vhost, listname): - return get_options(userdesc, perms, vhost, listname.lower(), owner_opts) - -def set_owner_options(userdesc, perms, vhost, listname, values): - return set_options(userdesc, perms, vhost, listname.lower(), owner_opts, values) - -def add_to_wl(userdesc, perms, vhost, listname, addr): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.Lock() - mlist.accept_these_nonmembers.append(addr) - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -def del_from_wl(userdesc, perms, vhost, listname, addr): - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.Lock() - mlist.accept_these_nonmembers.remove(addr) - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -def get_bogo_level(userdesc, perms, vhost, listname): - """ Compute bogo level from the filtering rules set up on the list. """ - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - if len(mlist.header_filter_rules) == 0: - return 0 - - unsurelevel = 0 - filterlevel = 0 - filterbase = 0 - - # The first rule filters Unsure mails - if mlist.header_filter_rules[0][0] == 'X-Spam-Flag: Unsure, tests=bogofilter': - unsurelevel = 1 - filterbase = 1 - - # Check the other rules: - # - we have 2 rules: this is level 2 (drop > 0.999999, moderate Yes) - # - we have only one rule with HOLD directive : this is level 1 (moderate spams) - # - we have only one rule with DISCARD directive : this is level 3 (drop spams) - try: - action = mlist.header_filter_rules[filterbase + 1][1] - filterlevel = 2 - except: - action = mlist.header_filter_rules[filterbase][1] - if action == mm_cfg.HOLD: - filterlevel = 1 - elif action == mm_cfg.DISCARD: - filterlevel = 3 - return (filterlevel << 1) + unsurelevel - except: - return 0 - -def set_bogo_level(userdesc, perms, vhost, listname, level): - """ set filter to the specified level. """ - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - hfr = [] - - # The level is a combination of a spam filtering level and unsure filtering level - # - the unsure filtering level is only 1 bit (1 = HOLD unsures, 0 = Accept unsures) - # - the spam filtering level is a number growing with filtering strength - # (0 = no filtering, 1 = moderate spam, 2 = drop 0.999999 and moderate others, 3 = drop spams) - bogolevel = int(level) - filterlevel = bogolevel >> 1 - unsurelevel = bogolevel & 1 - - # Set up unusre filtering - if unsurelevel == 1: - hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) - - # Set up spam filtering - if filterlevel is 1: - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - elif filterlevel is 2: - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - elif filterlevel is 3: - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) - - # save configuration - if mlist.header_filter_rules != hfr: - mlist.Lock() - mlist.header_filter_rules = hfr - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# admin procedures [ soptions.php ] -# - -admin_opts = [ 'advertised', 'archive', \ - 'max_message_size', 'msg_footer', 'msg_header'] - -def get_admin_options(userdesc, perms, vhost, listname): - if perms != 'admin': - return 0 - return get_options(userdesc, perms, vhost, listname.lower(), admin_opts) - -def set_admin_options(userdesc, perms, vhost, listname, values): - if perms != 'admin': - return 0 - return set_options(userdesc, perms, vhost, listname.lower(), admin_opts, values) - -#------------------------------------------------------------------------------- -# admin procedures [ check.php ] -# - -check_opts = { - 'acceptable_aliases' : '', - 'admin_immed_notify' : True, - 'administrivia' : True, - 'anonymous_list' : False, - 'autorespond_admin' : False, - 'autorespond_postings' : False, - 'autorespond_requests' : False, - 'available_languages' : ['fr'], - 'ban_list' : [], - 'bounce_matching_headers' : '', - 'bounce_processing' : False, - 'convert_html_to_plaintext' : False, - 'digestable' : False, - 'digest_is_default' : False, - 'discard_these_nonmembers' : [], - 'emergency' : False, - 'encode_ascii_prefixes' : 2, - 'filter_content' : False, - 'first_strip_reply_to' : False, - 'forward_auto_discards' : True, - 'hold_these_nonmembers' : [], - 'host_name' : 'listes.polytechnique.org', - 'include_list_post_header' : False, - 'include_rfc2369_headers' : False, - 'max_num_recipients' : 0, - 'new_member_options' : 256, - 'nondigestable' : True, - 'obscure_addresses' : True, - 'preferred_language' : 'fr', - 'reject_these_nonmembers' : [], - 'reply_goes_to_list' : 0, - 'reply_to_address' : '', - 'require_explicit_destination' : False, - 'send_reminders' : 0, - 'send_welcome_msg' : True, - 'topics_enabled' : False, - 'umbrella_list' : False, - 'unsubscribe_policy' : 0, -} - -def check_options(userdesc, perms, vhost, listname, correct=False): - listname = listname.lower() - try: - mlist = MailList.MailList(vhost+VHOST_SEP+listname, lock=0) - except: - return 0 - try: - if perms != 'admin': return 0 - if correct: - mlist.Lock() - options = { } - for (k, v) in check_opts.iteritems(): - if mlist.__dict__[k] != v: - options[k] = v, mlist.__dict__[k] - if correct: mlist.__dict__[k] = v - if mlist.real_name.lower() != listname: - options['real_name'] = listname, mlist.real_name - if correct: mlist.real_name = listname - if correct: - mlist.Save() - mlist.Unlock() - details = get_list_info(userdesc, perms, mlist)[0] - return (details, options) - except: - if correct: mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# super-admin procedures -# - -def get_all_lists(userdesc, perms, vhost): - prefix = vhost.lower()+VHOST_SEP - names = Utils.list_names() - names.sort() - result = [] - for name in names: - if not name.startswith(prefix): - continue - result.append(name.replace(prefix, '')) - return result - -def create_list(userdesc, perms, vhost, listname, desc, advertise, modlevel, inslevel, owners, members): - if perms != 'admin': - return 0 - name = vhost.lower()+VHOST_SEP+listname.lower(); - if Utils.list_exists(name): - return 0 - - owner = [] - for o in owners: - email = to_forlife(o)[0] - if email is not None: - owner.append(email) - if len(owner) is 0: - return 0 - - mlist = MailList.MailList() - try: - oldmask = os.umask(002) - pw = sha.new('foobar').hexdigest() - - try: - mlist.Create(name, owner[0], pw) - finally: - os.umask(oldmask) - - mlist.real_name = listname - mlist.host_name = 'listes.polytechnique.org' - mlist.description = desc - - mlist.advertised = int(advertise) is 0 - mlist.default_member_moderation = int(modlevel) is 2 - mlist.generic_nonmember_action = int(modlevel) > 0 - mlist.subscribe_policy = 2 * (int(inslevel) is 1) - mlist.admin_notify_mchanges = (mlist.subscribe_policy or mlist.generic_nonmember_action or mlist.default_member_moderation or not mlist.advertised) - - mlist.owner = owner - - mlist.subject_prefix = '['+listname+'] ' - mlist.max_message_size = 0 - - inverted_listname = listname.lower() + '_' + vhost.lower() - mlist.msg_footer = "_______________________________________________\n" \ - + "Liste de diffusion %(real_name)s\n" \ - + "http://listes.polytechnique.org/members/" + inverted_listname - - mlist.header_filter_rules = [] - mlist.header_filter_rules.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) - mlist.header_filter_rules.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - - mlist.Save() - - mlist.Unlock() - - if ON_CREATE_CMD != '': - try: os.system(ON_CREATE_CMD + ' ' + name) - except: pass - - check_options(userdesc, perms, vhost, listname.lower(), True) - mass_subscribe(userdesc, perms, vhost, listname.lower(), members) - - # avoid the "-1 mail to moderate" bug - mlist = MailList.MailList(name) - mlist._UpdateRecords() - mlist.Save() - mlist.Unlock() - except: - try: - mlist.Unlock() - except: - pass - return 0 - return 1 - -def delete_list(userdesc, perms, vhost, listname, del_archives=0): - lname = vhost+VHOST_SEP+listname.lower() - try: - mlist = MailList.MailList(lname, lock=0) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - # remove the list - REMOVABLES = [ os.path.join('lists', lname), ] - # remove stalled locks - for filename in os.listdir(mm_cfg.LOCK_DIR): - fn_lname = filename.split('.')[0] - if fn_lname == lname: - REMOVABLES.append(os.path.join(mm_cfg.LOCK_DIR, filename)) - # remove archives ? - if del_archives: - REMOVABLES.extend([ - os.path.join('archives', 'private', lname), - os.path.join('archives', 'private', lname+'.mbox'), - os.path.join('archives', 'public', lname), - os.path.join('archives', 'public', lname+'.mbox') - ]) - map(lambda dir: remove_it(lname, os.path.join(mm_cfg.VAR_PREFIX, dir)), REMOVABLES) - return 1 - except: - return 0 - -def kill(userdesc, perms, vhost, alias, del_from_promo): - exclude = [] - if not del_from_promo: - exclude.append(PLATAL_DOMAIN+VHOST_SEP+'promo'+alias[-4:]) - for list in Utils.list_names(): - if list in exclude: continue - try: - mlist = MailList.MailList(list, lock=0) - except: - continue - try: - mlist.Lock() - mlist.ApprovedDeleteMember(alias+'@'+PLATAL_DOMAIN, None, 0, 0) - mlist.Save() - mlist.Unlock() - except: - mlist.Unlock() - return 1 - - -#------------------------------------------------------------------------------- -# server -# -class FastXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer): - allow_reuse_address = True - -################################################################################ -# -# INIT -# -#------------------------------------------------------------------------------- -# use Mailman user and group (not root) -# fork in background if asked to -# - -uid = getpwnam(mm_cfg.MAILMAN_USER)[2] -gid = getgrnam(mm_cfg.MAILMAN_GROUP)[2] - -if not os.getuid(): - os.setregid(gid, gid) - os.setreuid(uid, uid) - -signal.signal(signal.SIGHUP, signal.SIG_IGN) - -if ( os.getuid() is not uid ) or ( os.getgid() is not gid): - sys.exit(0) - -opts, args = getopt.getopt(sys.argv[1:], 'f') -for o, a in opts: - if o == '-f' and os.fork(): - sys.exit(0) - -i18n.set_language('fr') -mysql = connectDB() -lock = Lock() - -#------------------------------------------------------------------------------- -# server -# -server = FastXMLRPCServer(("localhost", 4949), BasicAuthXMLRPCRequestHandler) - -# index.php -server.register_function(get_lists) -server.register_function(subscribe) -server.register_function(unsubscribe) -# members.php -server.register_function(get_members) -# trombi.php -server.register_function(get_members_limit) -server.register_function(get_owners) -# admin.php -server.register_function(replace_email) -server.register_function(mass_subscribe) -server.register_function(mass_unsubscribe) -server.register_function(add_owner) -server.register_function(del_owner) -# moderate.php -server.register_function(get_pending_ops) -server.register_function(handle_request) -server.register_function(get_pending_sub) -server.register_function(get_pending_mail) -# options.php -server.register_function(get_owner_options) -server.register_function(set_owner_options) -server.register_function(add_to_wl) -server.register_function(del_from_wl) -server.register_function(get_bogo_level) -server.register_function(set_bogo_level) -# soptions.php -server.register_function(get_admin_options) -server.register_function(set_admin_options) -# check.php -server.register_function(check_options) -# create + del -server.register_function(get_all_lists) -server.register_function(create_list) -server.register_function(delete_list) -# utilisateurs.php -server.register_function(kill) - -server.serve_forever() - -# vim:set et sw=4 sts=4 sws=4: diff --git a/bin/marketPromo.php b/bin/marketPromo.php deleted file mode 100755 index 036449e..0000000 --- a/bin/marketPromo.php +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/php5 -q -fetchOneCell(); - if (!$uid) { - echo "WARNING Can't find uid for matricule $matri (login $login)\n"; - continue; - } - $market = Marketing::get($uid, "$login@poly.polytechnique.fr"); - if (!is_null($market)) { - echo "WARNING A marketing has already been to $matri on $login\n"; - continue; - } - $market = new Marketing($uid, "$login@poly.polytechnique.fr", 'default', null, 'staff'); - $market->add(false); - $market->send(); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> - diff --git a/bin/newsletter.send.php b/bin/newsletter.send.php deleted file mode 100755 index c5c8178..0000000 --- a/bin/newsletter.send.php +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/php5 -q -sendToAll(); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/bin/search.rebuild_db.php b/bin/search.rebuild_db.php deleted file mode 100755 index 3835a9d..0000000 --- a/bin/search.rebuild_db.php +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/php5 -q -debug = 0; // Do not store backtraces - -XDB::execute('DELETE FROM search_name'); -$res = XDB::iterRow('SELECT auth_user_md5.user_id, nom, prenom, nom_usage, profile_nick - FROM auth_user_md5 - LEFT JOIN auth_user_quick USING(user_id)'); -$i = 0; -$muls = array(1, 1, 1, 0.2); -$pub = array(true, true, true, false); -while ($tmp = $res->next()) { - $uid = array_shift($tmp); - _user_reindex($uid, $tmp, $muls, $pub); - printf("\r%u / %u", ++$i, $res->total()); -} - -print "done\n"; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/classes/xnet.php b/classes/xnet.php deleted file mode 100644 index a5a739a..0000000 --- a/classes/xnet.php +++ /dev/null @@ -1,84 +0,0 @@ -asso()) { - if ($p = strpos($this->path, '/')) { - $this->ns = substr($this->path, 0, $p).'/'; - $this->path = '%grp'.substr($this->path, $p); - } else { - $this->ns = $this->path.'/'; - $this->path = '%grp'; - } - } - } - - protected function find_nearest_key($key, array &$array) - { - global $globals; - if (in_array('%grp', array_keys($array)) && $key == $globals->asso('diminutif')) { - return '%grp'; - } - return parent::find_nearest_key($key, $array); - } - - public function near_hook() - { - global $globals; - $link = str_replace('%grp', $globals->asso('diminutif'), parent::near_hook()); - if ($link != $this->path) { - return $link; - } - return null; - } - - public function pl_self($n = null) - { - global $globals; - return str_replace('%grp', $globals->asso('diminutif'), parent::pl_self($n)); - } - - protected function find_hook() - { - $ans = parent::find_hook(); - $this->https = false; - if ($ans && $this->ns) { - $this->path = $this->ns . substr($this->path, 5); - $this->argv[0] = $this->ns . substr($this->argv[0], 5); - } - return $ans; - } - - public function force_login(&$page) - { - http_redirect(S::v('loginX')); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/classes/xnetpage.php b/classes/xnetpage.php deleted file mode 100644 index 1fce8e4..0000000 --- a/classes/xnetpage.php +++ /dev/null @@ -1,171 +0,0 @@ -register_function('list_all_my_groups', 'list_all_my_groups'); - $this->register_modifier('cat_pp', 'cat_pp'); - $this->assign('it_is_xnet', true); - - global $globals; - $this->assign('is_logged', S::logged()); - if ($globals->asso('id')) { - $this->assign('asso', $globals->asso()); - $this->setType($globals->asso('cat')); - $this->assign('is_admin', may_update()); - $this->assign('is_member', is_member()); - } - } - - // }}} - // {{{ function run() - - public function run() - { - if (!$this->nomenu) { - $this->useMenu(); - } - $this->_run('xnet/skin.tpl'); - } - - // }}} - // {{{ function setType - - public function setType($type) - { - $this->assign('xnet_type', strtolower($type)); - } - - // }}} - // {{{ function useMenu - - private function useMenu() - { - global $globals; - - $menu = array(); - - $sub = array(); - $sub['liste des groupes'] = 'plan'; - $sub['documentation'] = 'Xnet'; - $sub['signaler un bug'] = array('href' => 'send_bug', 'class' => 'popup_840x600'); - $menu["no_title"] = $sub; - - $perms = S::v('perms'); - $dim = $globals->asso('diminutif'); - if (S::logged() && $globals->asso()) { - $sub = array(); - $sub['présentation'] = "login/$dim/"; - if ($perms->hasFlag('groupannu')) { - $sub['annuaire du groupe'] = "$dim/annuaire"; - $sub['trombinoscope'] = "$dim/trombi"; - $sub['planisphère'] = "$dim/geoloc"; - } - if ($perms->hasFlag('groupmember')) { - if ($globals->asso('forum')) { - $sub['forum'] = "$dim/forum"; - } - if ($globals->asso('mail_domain')) { - $sub['listes de diffusion'] = "$dim/lists"; - } - } - $sub['événement'] = "$dim/events"; - if ($perms->hasFlag('groupmember')) { - $sub['télépaiement'] = "$dim/payment"; - } - - $menu[$globals->asso('nom')] = $sub; - } - - if ($globals->asso() && is_object($perms) && $perms->hasFlag('groupadmin')) { - $sub = array(); - $sub['modifier l\'accueil'] = "$dim/edit"; - $sub['gérer les annonces'] = "$dim/admin/announces"; - if ($globals->asso('mail_domain')) { - $sub['envoyer un mail'] = "$dim/mail"; - $sub['créer une liste'] = "$dim/lists/create"; - $sub['créer un alias'] = "$dim/alias/create"; - } - if (S::has_perms()) { - $sub['gérer les groupes'] = array('href' => 'admin', 'style' => 'color: gray;'); - $sub['clear cache'] = array('href' => 'purge_cache', 'style' => 'color: gray;'); - } - $menu['Administrer'] = $sub; - } elseif (S::has_perms()) { - $sub = array(); - $sub['gérer les groupes'] = 'admin'; - $sub['clear cache'] = 'purge_cache'; - $menu['Administrer'] = $sub; - } - - $this->assign('menu', $menu); - } - - // }}} -} - -// {{{ function list_all_my_groups - -function list_all_my_groups($params) -{ - if (!S::logged()) { - return; - } - $res = XDB::iterRow( - "SELECT a.nom, a.diminutif - FROM groupex.asso AS a - INNER JOIN groupex.membres AS m ON m.asso_id = a.id - WHERE m.uid={?}", S::v('uid')); - $links = 'déconnexion'; - $html = '
Mes groupes (' . $links . ') :
'; - while (list($nom, $mini) = $res->next()) { - $html .= "$nom"; - } - return $html; -} - -// }}} -// {{{ cat_pp - -function cat_pp($cat) -{ - $trans = array( - 'groupesx' => 'Groupes X' , - 'binets' => 'Binets' , - 'institutions' => 'Institutions' , - 'promotions' => 'Promotions' - ); - - return $trans[strtolower($cat)]; -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/classes/xnetsession.php b/classes/xnetsession.php deleted file mode 100644 index 73dd844..0000000 --- a/classes/xnetsession.php +++ /dev/null @@ -1,243 +0,0 @@ -start(AUTH_MDP)) { - return false; - } - } - - global $globals; - if (!S::logged()) { - // prevent connection to be linked to disconnection - if (($i = strpos($_SERVER['REQUEST_URI'], 'exit')) !== false) - $returl = "http://{$_SERVER['SERVER_NAME']}".substr($_SERVER['REQUEST_URI'], 0, $i); - else - $returl = "http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}"; - $url = "https://www.polytechnique.org/auth-groupex"; - $url .= "?session=" . session_id(); - $url .= "&challenge=" . S::v('challenge'); - $url .= "&pass=" . md5(S::v('challenge') . $globals->xnet->secret); - $url .= "&url=".urlencode($returl); - S::set('loginX', $url); - } - - if (S::logged() && $globals->asso()) { - $perms = S::v('perms'); - $perms->rmFlag('groupadmin'); - $perms->rmFlag('groupmember'); - $perms->rmFlag('groupannu'); - if (may_update()) { - $perms->addFlag('groupadmin'); - $perms->addFlag('groupmember'); - $perms->addFlag('groupannu'); - } - if (is_member()) { - $perms->addFlag('groupmember'); - if ($globals->asso('pub') != 'private') { - $perms->addFlag('groupannu'); - } - } - if ($globals->asso('cat') == 'Promotions') { - $perms->addFlag('groupannu'); - } - S::set('perms', $perms); - S::set('perms_backup', $perms); - } - return true; - } - - protected function doAuth($level) - { - if (S::identified()) { // ok, c'est bon, on n'a rien à faire - return S::i('uid'); - } - if (!Get::has('auth')) { - return null; - } - global $globals; - if (md5('1' . S::v('challenge') . $globals->xnet->secret . Get::i('uid') . '1') != Get::v('auth')) { - return null; - } - Get::kill('auth'); - S::set('auth', AUTH_MDP); - return Get::i('uid'); - } - - protected function startSessionAs($user, $level) - { - global $globals; - - if ($level == -1) { - S::set('auth', AUTH_MDP); - } - $res = XDB::query('SELECT u.user_id AS uid, prenom, nom, perms, promo, password, FIND_IN_SET(\'femme\', u.flags) AS femme, - a.alias AS forlife, a2.alias AS bestalias, q.core_mail_fmt AS mail_fmt, q.core_rss_hash - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type = \'a_vie\') - INNER JOIN aliases AS a2 ON (u.user_id = a2.id AND FIND_IN_SET(\'bestalias\', a2.flags)) - WHERE u.user_id = {?} AND u.perms IN(\'admin\', \'user\') - LIMIT 1', $user); - $sess = $res->fetchOneAssoc(); - $perms = $sess['perms']; - unset($sess['perms']); - $_SESSION = array_merge($_SESSION, $sess); - $this->makePerms($perms); - S::kill('challenge'); - S::kill('loginX'); - S::kill('may_update'); - S::kill('is_member'); - Get::kill('uid'); - Get::kill('PHPSESSID'); - - $args = array(); - foreach($_GET as $key => $val) { - $args[] = urlencode($key). '=' .urlencode($val); - } - return true; - } - - public function doSelfSuid() - { - if (!$this->startSUID(S::i('uid'))) { - return false; - } - $this->makePerms('user'); - return true; - } - - public function stopSUID() - { - $suid = S::v('suid'); - if (!parent::stopSUID()) { - return false; - } - S::kill('suid'); - S::kill('may_update'); - S::kill('is_member'); - S::set('perms', $suid['perms']); - S::set('perms_backup', $suid['perms_backup']); - return true; - } - - public function makePerms($perm) - { - $flags = new PlFlagSet(); - if ($perm == 'disabled' || $perm == 'ext') { - S::set('perms', $flags); - S::set('perms_backup', $flags); - return; - } - $flags->addFlag(PERMS_USER); - if ($perm == 'admin') { - $flags->addFlag(PERMS_ADMIN); - } - S::set('perms', $flags); - S::set('perms_backup', $flags); - } - - public function sureLevel() - { - return AUTH_MDP; - } -} - -// {{{ function may_update - -/** Return administration rights for the current asso - * @param force Force administration rights to be read from database - * @param lose Force administration rights to be false - */ -function may_update($force = false, $lose = false) -{ - if (!isset($_SESSION['may_update'])) { - $_SESSION['may_update'] = array(); - } - $may_update =& $_SESSION['may_update']; - - global $globals; - $asso_id = $globals->asso('id'); - if (!$asso_id) { - return false; - } elseif ($lose) { - $may_update[$asso_id] = false; - } elseif (S::has_perms() || (S::has('suid') && $force)) { - $may_update[$asso_id] = true; - } elseif (!isset($may_update[$asso_id]) || $force) { - $res = XDB::query("SELECT perms - FROM groupex.membres - WHERE uid={?} AND asso_id={?}", - S::v('uid'), $asso_id); - $may_update[$asso_id] = ($res->fetchOneCell() == 'admin'); - } - return $may_update[$asso_id]; -} - -// }}} -// {{{ function is_member - -/** Get membership informations for the current asso - * @param force Force membership to be read from database - * @param lose Force membership to be false - */ -function is_member($force = false, $lose = false) -{ - if (!isset($_SESSION['is_member'])) { - $_SESSION['is_member'] = array(); - } - $is_member =& $_SESSION['is_member']; - - global $globals; - $asso_id = $globals->asso('id'); - if (!$asso_id) { - return false; - } elseif ($lose) { - $is_member[$asso_id] = false; - } elseif (S::has('suid') && $force) { - $is_member[$asso_id] = true; - } elseif (!isset($is_member[$asso_id]) || $force) { - $res = XDB::query("SELECT COUNT(*) - FROM groupex.membres - WHERE uid={?} AND asso_id={?}", - S::v('uid'), $asso_id); - $is_member[$asso_id] = ($res->fetchOneCell() == 1); - } - return $is_member[$asso_id]; -} - -// }}} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/classes/xorgpage.php b/classes/xorgpage.php deleted file mode 100644 index f0d42ea..0000000 --- a/classes/xorgpage.php +++ /dev/null @@ -1,45 +0,0 @@ -changeTpl('platal/index.tpl'); - } - - public function run() - { - global $globals, $platal; - if (isset($platal) && $platal->path == 'register') { - $skin = $globals->register_skin . ".tpl"; - } else { - $skin = S::v('skin', $globals->skin . ".tpl"); - } - $this->_run('skin/' . $skin); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/classes/xorgsession.php b/classes/xorgsession.php deleted file mode 100644 index b63420a..0000000 --- a/classes/xorgsession.php +++ /dev/null @@ -1,300 +0,0 @@ -tryCookie(); - if ($cookie == 0) { - return $this->start(AUTH_COOKIE); - } else if ($cookie == 1 || $cooke == -2) { - return false; - } - } - if ((check_ip('dangerous') && S::has('uid')) || check_account()) { - $_SESSION['log']->log("view_page", $_SERVER['REQUEST_URI']); - } - return true; - } - - /** Check the cookie and set the associated user_id in the auth_by_cookie session variable. - */ - private function tryCookie() - { - Platal::page()->trigError("Trying cookie"); - S::kill('auth_by_cookie'); - if (Cookie::v('ORGaccess') == '' || !Cookie::has('ORGuid')) { - return -1; - } - - $res = XDB::query('SELECT user_id, password - FROM auth_user_md5 - WHERE user_id = {?} AND perms IN(\'admin\', \'user\')', - Cookie::i('ORGuid')); - if ($res->numRows() != 0) { - list($uid, $password) = $res->fetchOneRow(); - require_once 'secure_hash.inc.php'; - $expected_value = hash_encrypt($password); - if ($expected_value == Cookie::v('ORGaccess')) { - S::set('auth_by_cookie', $uid); - return 0; - } else { - return 1; - } - } - return -2; - } - - private function checkPassword($uname, $login, $response, $login_type) - { - $res = XDB::query('SELECT u.user_id, u.password - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND type != \'homonyme\') - WHERE a.' . $login_type . ' = {?} AND u.perms IN(\'admin\', \'user\')', - $login); - if (list($uid, $password) = $res->fetchOneRow()) { - require_once 'secure_hash.inc.php'; - $expected_response = hash_encrypt("$uname:$password:" . S::v('challenge')); - if ($response != $expected_response) { - $new_password = hash_xor(Env::v('xorpass'), $password); - $expected_response = hash_encrypt("$uname:$new_password:" . S::v('challenge')); - if ($response == $expected_response) { - XDB::execute('UPDATE auth_user_md5 - SET password = {?} - WHERE user_id = {?}', - $new_password, $uid); - } - } - if ($response != $expected_response) { - S::logger($uid)->log('auth_fail', 'bad password'); - return null; - } - return $uid; - } - return null; - } - - - /** Check auth. - */ - protected function doAuth($level) - { - global $globals; - - /* Cookie authentication - */ - if ($level == AUTH_COOKIE && !S::has('auth_by_cookie')) { - $this->tryCookie(); - } - if ($level == AUTH_COOKIE && S::has('auth_by_cookie')) { - if (!S::logged()) { - S::set('auth', AUTH_COOKIE); - } - return S::i('auth_by_cookie'); - } - - - /* We want to do auth... we must have infos from a form. - */ - if (!Env::has('username') || !Env::has('response') || !S::has('challenge')) { - return null; - } - - /** We come from an authentication form. - */ - if (S::has('suid')) { - $suid = S::v('suid'); - $login = $uname = $suid['forlife']; - $redirect = false; - } else { - $uname = Env::v('username'); - - if (Env::v('domain') == "alias") { - $res = XDB::query('SELECT redirect - FROM virtual - INNER JOIN virtual_redirect USING(vid) - WHERE alias LIKE {?}', - $uname . '@' . $globals->mail->alias_dom); - $redirect = $res->fetchOneCell(); - if ($redirect) { - $login = substr($redirect, 0, strpos($redirect, '@')); - } else { - $login = ''; - } - } else { - $login = $uname; - $redirect = false; - } - } - - $uid = $this->checkPassword($uname, $login, Post::v('response'), (!$redirect && preg_match('/^\d*$/', $uname)) ? 'id' : 'alias'); - if (!is_null($uid)) { - S::set('auth', AUTH_MDP); - if (Post::has('domain')) { - if (($domain = Post::v('domain', 'login')) == 'alias') { - setcookie('ORGdomain', "alias", (time() + 25920000), '/', '', 0); - } else { - setcookie('ORGdomain', '', (time() - 3600), '/', '', 0); - } - // pour que la modification soit effective dans le reste de la page - $_COOKIE['ORGdomain'] = $domain; - } - S::kill('challenge'); - S::logger($uid)->log('auth_ok'); - } - return $uid; - } - - protected function startSessionAs($uid, $level) - { - if ((!is_null(S::v('user')) && S::i('user') != $uid) || (S::has('uid') && S::i('uid') != $uid)) { - return false; - } else if (S::has('uid')) { - return true; - } - if ($level == -1) { - S::set('auth', AUTH_COOKIE); - } - unset($_SESSION['log']); - $res = XDB::query('SELECT u.user_id AS uid, prenom, prenom_ini, nom, nom_ini, nom_usage, perms, promo, promo_sortie, - matricule, password, FIND_IN_SET(\'femme\', u.flags) AS femme, - a.alias AS forlife, a2.alias AS bestalias, - q.core_mail_fmt AS mail_fmt, UNIX_TIMESTAMP(q.banana_last) AS banana_last, q.watch_last, q.core_rss_hash, - FIND_IN_SET(\'watch\', u.flags) AS watch_account, q.last_version - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type = \'a_vie\') - INNER JOIN aliases AS a2 ON (u.user_id = a2.id AND FIND_IN_SET(\'bestalias\', a2.flags)) - WHERE u.user_id = {?} AND u.perms IN(\'admin\', \'user\')', $uid); - $sess = $res->fetchOneAssoc(); - $perms = $sess['perms']; - unset($sess['perms']); - $res = XDB::query('SELECT UNIX_TIMESTAMP(s.start) AS lastlogin, s.host - FROM logger.sessions AS s - WHERE s.uid = {?} AND s.suid = 0 - ORDER BY s.start DESC - LIMIT 1', $uid); - if ($res->numRows()) { - $sess = array_merge($sess, $res->fetchOneAssoc()); - } - $suid = S::v('suid'); - - if ($suid) { - $logger = S::logger(); - $logger->log("suid_start", S::v('forlife')." by {$suid['uid']}"); - $sess['suid'] = $suid; - } else { - $logger = S::logger(); - //$logger->log("connexion", Env::v('n')); - setcookie('ORGuid', $uid, (time() + 25920000), '/', '', 0); - if (Post::v('remember', 'false') == 'true') { - $cookie = hash_encrypt($sess['password']); - setcookie('ORGaccess', $cookie, (time() + 25920000), '/', '', 0); - if ($logger) { - $logger->log("cookie_on"); - } - } else { - setcookie('ORGaccess', '', time() - 3600, '/', '', 0); - if ($logger) { - $logger->log("cookie_off"); - } - } - } - - $_SESSION = array_merge($_SESSION, $sess); - $this->makePerms($perms); - $this->securityChecks(); - $this->setSkin(); - update_NbNotifs(); - check_redirect(); - return true; - } - - private function securityChecks() - { - $mail_subject = array(); - if (check_account()) { - $mail_subject[] = 'Connexion d\'un utilisateur surveillé'; - } - if (check_ip('unsafe')) { - $mail_subject[] = 'Une IP surveillee a tente de se connecter'; - if (check_ip('ban')) { - send_warning_mail(implode(' - ', $mail_subject)); - $this->destroy(); - Platal::page()->kill('Une erreur est survenue lors de la procédure d\'authentification. ' - . 'Merci de contacter au plus vite ' - . 'support@polytechnique.org'); - return false; - } - } - if (count($mail_subject)) { - send_warning_mail(implode(' - ', $mail_subject)); - } - } - - public function makePerms($perm) - { - $flags = new PlFlagSet(); - if ($perm == 'disabled' || $perm == 'ext') { - S::set('perms', $flags); - S::set('perms_backup', $flags); - return; - } - $flags->addFlag(PERMS_USER); - if ($perm == 'admin') { - $flags->addFlag(PERMS_ADMIN); - } - S::set('perms', $flags); - S::set('perms_backup', $flags); - } - - public function setSkin() - { - global $globals; - if (S::logged() && (!S::has('skin') || S::has('suid'))) { - $uid = S::v('uid'); - $res = XDB::query("SELECT skin_tpl - FROM auth_user_quick AS a - INNER JOIN skins AS s ON a.skin = s.id - WHERE user_id = {?} AND skin_tpl != ''", $uid); - S::set('skin', $res->fetchOneCell()); - } - } - - public function sureLevel() - { - return AUTH_MDP; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/configs/.gitignore b/configs/.gitignore deleted file mode 100644 index 08b9b45..0000000 --- a/configs/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -platal.conf -platal.cron -*.pem diff --git a/configs/mails.conf b/configs/mails.conf deleted file mode 100644 index 3f75eac..0000000 --- a/configs/mails.conf +++ /dev/null @@ -1,56 +0,0 @@ -[marketing_relance] -from=Pre-Inscription - -[inscrire] -from="Pre-Inscription" - -[forums_promo] -from=Forums -to=news@polytechnique.org - -[listes_promo] -from=web@polytechnique.org -to=web@polytechnique.org - -[polyedu_error] -from=support+edu@polytechnique.org -to=support@polytechnique.org - -[inscription] -from=support@polytechnique.org - -[emails_broken] -from="Polytechnique.org" -subject="Une de tes adresse de redirection Polytechnique.org ne marche plus !!" - -[newsletter] -from="Lettre Mensuelle Polytechnique.org" -replyto=info+nlp@polytechnique.org - -[intervention_admin] -from=webmaster@polytechnique.org -to=hotliners@staff.polytechnique.org - -[geoloc_error] -from=webmaster@polytechnique.org -to=geoloc@staff.polytechnique.org - -[mails_ax] -from="Amicale des Anciens de l'X" -replyto=reponses@amicale.polytechnique.org - -[payment_ready] -from="Gestion des paiements" - -[test_email] -from="Polytechnique.org" - -[carnet] -from="Carnet Polytechnicien " - -[googleapps] -from="Polytechnique.org" -cc=validation+googleapps@polytechnique.org - -[xnet_unsubscription] -from="Gestion des groupes X sur Polytechnique.net" diff --git a/configs/platal.cron.in b/configs/platal.cron.in deleted file mode 100644 index fafa58b..0000000 --- a/configs/platal.cron.in +++ /dev/null @@ -1,36 +0,0 @@ -MAILTO=root -PATH=/bin:/usr/bin:/usr/local/bin:/home/web/bin -WD=/home/web/prod/platal/bin/cron - -# db -0 5 * * * web cd $WD; ./clean.php -0 21 * * 1-6 web cd $WD; ./checkdb.php | mail -e -s "verifications sur la BDD de plat/al @VERSION@" br@staff.m4x.org -0 21 * * 0 web cd $WD; ./checkdb.php -v | mail -e -s "verifications verbose sur la BDD de plat/al @VERSION@" br@staff.m4x.org -0 20 * * * web cd $WD; ./emails.check.php | mail -e -s "qualite de l'annuaire" br@staff.m4x.org - -# inscription report -0 6 * * 1 web cd $WD; ./rapports_inscription.php - -# notifs -0 2 * * * web cd $WD; ./notifs.birthday.php -0 4 * * 6 web cd $WD; ./notifs.send.php - -# validations -0 */3 * * * web cd $WD; ./cron_validations.php - -# flux rss de banana -*/5 * * * * www-data cd $WD; ./banana.feedgen.php > /dev/null - -# AX spammer -15 * * * * web cd $WD; ./axletter.send.php | mail -e -s "envoi d'un mail de l'AX" br@staff.m4x.org - -# homonymes -0 0 4 * * web cd $WD; ./homonymes.php - -# ml moderation -* * * * * web cd $WD; ./cron_ml_moderate.php > /dev/null - -# synchronisation google apps - plat/al -*/5 * * * * web cd $WD; ./google_apps.php - -# vim:set noet syntax=crontab ts=8 sw=8 sts=8 enc=utf-8: diff --git a/configs/platal.ini b/configs/platal.ini deleted file mode 100644 index 3923847..0000000 --- a/configs/platal.ini +++ /dev/null @@ -1,81 +0,0 @@ -[Core] -locale = "fr_FR.UTF-8" -timezone = "Europe/Paris" -secure_domain = "" -baseurl = "https://www.example.org/" -restricted_platal = 0 - -skin = "default" -register_skin = "register" - -[Banana] -server = "localhost" -port = 119 - -password = "***" -web_user = "***" -web_pass = "***" - -table_prefix = "banana_" -spool_root = "/var/spool/banana" -mbox_helper = "/usr/bin/banana-mbox-helper" - -event_forum = "" -event_reply = "" - -[Geoloc] -webservice_url = "" - -[Lists] -rpchost = "localhost" -rpcport = 4949 - -spool = "/var/lib/mailman/archives/private" -vhost_sep = "_" - -max_mail_per_min = 400 - -[Mail] -domain = "" -domain2 = "" - -alias_dom = "" -alias_dom2 = "" - -[MailStorage] -imap_active = 0 -googleapps_active = 0 -googleapps_domain = "" - -[Manageurs] -authorized_ips = "129.104.30.32 129.104.30.33 213.251.145.200" -manageurs_cipher_key = "" -manageurs_pass = "" - - -[Money] -mpay_enable = 1 -mpay_def_id = 0 -mpay_def_meth = 0 -mpay_tprefix = "paiement." -paypal_site = "" -paypal_compte = "" - - -[Newsletter] -from = "Lettre Mensuelle " -replyto = "" -retpath = "" - - -[Search] -public_max = 25 -private_max = 800 -per_page = 20 - -[Register] -notif = "" - -[Xnet] -secret = "" -evts_domain = "" diff --git a/configs/pmwiki.intermap.txt b/configs/pmwiki.intermap.txt deleted file mode 100644 index 3eff507..0000000 --- a/configs/pmwiki.intermap.txt +++ /dev/null @@ -1,2 +0,0 @@ -Xorg https://www.polytechnique.org/ -Xnet http://www.polytechnique.net/ diff --git a/htdocs/.gitignore b/htdocs/.gitignore deleted file mode 100644 index aaadc66..0000000 --- a/htdocs/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/.htaccess -/uploads -/wiki diff --git a/htdocs/.htaccess.in b/htdocs/.htaccess.in deleted file mode 100644 index 8d2c3bf..0000000 --- a/htdocs/.htaccess.in +++ /dev/null @@ -1,8 +0,0 @@ -RewriteEngine on - -RewriteBase @REWRITE_BASE@ - -# Rewrite URLs of the form 'index.php?q=x': -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^(.*)$ ?n=$1 [L,QSA] diff --git a/htdocs/css/.gitignore b/htdocs/css/.gitignore deleted file mode 100644 index 6f43c16..0000000 --- a/htdocs/css/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# ignore banana stuff -/banana.css diff --git a/htdocs/css/ax.css b/htdocs/css/ax.css deleted file mode 100644 index bdee05b..0000000 --- a/htdocs/css/ax.css +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - - -div.ax_background { - margin : 0; - padding : 1em 0; - background-color: #ddd; - color: #000; -} - -div.ax_mail { - margin : auto; - width : 72ex; - font-family : "Georgia", "Times New Roman", serif; - font-size : 10pt; - text-align : justify; - background-color : #fff; - color : #000; -} - -div.ax_mail a[href] { - background-color : #fff; - color : #555753; -} - -div.ax_mail a[href]:hover { - background-color : #fff; - color : #4e9a06; -} - -div.ax_mail div.title { - margin : 0ex; - padding : 68px 1ex 1ex 1ex; - font-size : 120%; - font-weight : bold; - text-align : right; - background-color : #fce94f; - color : #a40000; - background-repeat : no-repeat; - background-position : 0ex 0ex; - background-image : url(http://www.polytechnique.org/images/ax_mail_header.jpg); -} - -div.ax_mail div.intro { - margin : 4ex 0ex 2ex 6ex; -} - -div.ax_mail div.body { - margin : 0; - padding : 0 20px; -} - -div.ax_mail div.body h1 { - margin : 4ex -20px 2ex -20px; - padding : 0.4ex 20px; - font-size : 100%; - font-weight : bold; - background-color : #fff; - color : #a40000; - border-width : thin 0; - border-style : solid; - border-color : #a40000; -} - -div.ax_mail div.body h2 { - margin : 2ex -20px 2ex -20px; - padding : 0.4ex 40px; - font-size : 100%; - font-weight : normal; - background-color : #fff; - color : #a40000; - border-width : 0 0 thin 0; - border-style : dotted; - border-color : #a40000; -} - -div.ax_mail div.signature { - margin : 2ex 2ex 0 0ex; - font-size : 90%; - font-style: italic; - text-align : right; - -} - -div.ax_mail div.foot1 { - margin : 2ex 0 0; - padding : 0.5ex 2ex; - font-size : 90%; - background-color : #fff; - color : #999; - border-width : thin 0; - border-style : solid; - border-color : #ddd; - text-align : center; -} - -div.ax_mail div.foot2 { - padding : 1ex 0; - font-size : 90%; - background-color : #fff; - color : #999; - text-align : center; -} - diff --git a/htdocs/css/bandeau.css b/htdocs/css/bandeau.css deleted file mode 100644 index eef91ce..0000000 --- a/htdocs/css/bandeau.css +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -#bandeau-X a { vertical-align: middle; } -#bandeau-X a:link, #bandeau-X a:visited { text-decoration: none ; color: #505050; } -#bandeau-X a:hover { text-decoration: underline; color: black; } -#bandeau-X a:active { color: #CCCCCC ; background: #505050 ; } -body {margin:0px;} -#bandeau-X { -background:#CCCCCC;color:#505050;font-size:10px;font-family:Verdana, Arial, Helvetica, sans-serif;height:15px;border:none;padding:0;margin:0 } -#bandeau-X img { vertical-align:middle;border:0;padding:0;margin:0 } diff --git a/htdocs/css/base.css b/htdocs/css/base.css deleted file mode 100644 index 8660980..0000000 --- a/htdocs/css/base.css +++ /dev/null @@ -1,66 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -.ac_results { - background-color: window; - border: 1px solid; - overflow: hidden; - padding: 0px; -} - -.ac_results ul { - padding:0px; - margin:0px; - width:100%; -} - -.ac_results li { - display:block; - padding: 2px; - cursor:pointer; - font-size: 90%; -} - -.ac_results iframe { - display:none;/*sorry for IE5*/ - display/**/:block;/*sorry for IE5*/ - position:absolute; - top:0; - left:0; - z-index:-1; - filter:mask(); - width:3000px; - height:3000px; -} - -.ac_over { - background: highlight; - color: highlighttext; -} - -.ac_loading { - background: window url(../images/wait.gif) no-repeat scroll right center; -} - -.hidden_valid { - background-color: #bfb; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/default.css b/htdocs/css/default.css deleted file mode 100644 index b669e82..0000000 --- a/htdocs/css/default.css +++ /dev/null @@ -1,643 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { - font-family: "Arial", sans-serif; - color: #000000; - background: #ffffff; -} - -a:link, a:visited, a:active, a:hover { color: #003399; background: none; } -img { vertical-align: middle; } -a img { border: 0px; } -td { vertical-align: top; } -li { padding-left: 3px; padding-right: 3px; text-align: justify; } -hr { width: 90%; text-align: center } -dt { font-weight: bold; } - -fieldset { - border: 1px #336699 solid; - background: #eeeeee; - color: inherit; - - margin: 1em 0 1em 0; -} - -legend { - border: 1px #336699 solid; - background: #f4d09c; - color: inherit; - - padding-left: 4px; - padding-right: 4px; -} - -.center { text-align: center; } -.right { text-align: right; } -.middle { vertical-align: middle; } -.smaller { font-size: smaller; font-style: italic; } -.spacer { clear: both; } - -.float2 { float: left; width: 49%; } -.float3 { float: left; width: 33%; } - -/******************************************************************************* - 2 Styles

,

, ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -p { - margin-bottom: 0.5em; - text-align: justify; -} - -.errors { - margin-top: 10px; - border: 1px solid #f00; - background-color: #fcc; - width: 98%; -} - -.warnings { - margin-top: 10px; - border: 1px solid #ed0; - background-color: #ffc; - width: 98%; -} - -.success { - margin-top: 10px; - border: 1px solid #0d2; - background-color: #cfd; - width: 98%; -} - -.erreur { - font-weight: bold; - color: #ff0000; - background: inherit; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -.erreur a:link, .erreur a:visited, .erreur a:active, .erreur a:hover { - color: #ff3333; - background: inherit; -} - -input.error, textarea.error { - background-color: #faa; -} - -input.valid, textarea.valid { - background-color: #afa; -} - -input.warning, textarea.warning { - background-color: #fda; -} - -h1 { - color: #555555; - background: url('../images/skins/default_titre.gif'); - background-repeat: no-repeat; - - text-indent: 0.2em; - text-align: left; - font-size: 120%; - font-family: "helvetica", sans-serif; - font-weight: bolder; - - margin: 1em 0em 1em 0em; - padding: 0em 0em 0em 0.5em; -} - -h2 { - padding: 0.5em 0em 0em 0em; - margin: 0em; - font-size: 100%; - font-weight: bold; -} - -h3 { - margin: 0em; - font-weight: bold; - padding: 0.25em; - font-size: 100%; -} - -p.explication, div.explication { - font-style: italic; - padding: 0em 1ex 1ex 1ex; -} - -li.spaced { - padding-top: 0.5em; - padding-bottom: 0.5em; - text-align: justify; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.bicol { - color: inherit; - background: #eeeeee; - border: 1px solid #336699; - border-collapse: collapse; - width: 100%; - margin-left: 0; -} -table.tinybicol { - color: inherit; - background: #eeeeee; - border: 1px solid #336699; - border-collapse: collapse; - width: 70%; - margin-left: 15%; -} - -table.tinybicol tr.impair, table.bicol tr.impair {} -table.tinybicol tr.pair, table.bicol tr.pair { - color: inherit; - background: #eeeed0; -} - -table.tinybicol th, table.bicol th { - color: #ffffff; - background: #336699; - font-weight: bold; - text-align: center; - vertical-align: middle; -} - -table.tinybicol th a:link, table.tinybicol th a:visited, -table.tinybicol th a:active, table.tinybicol th a:hover, -table.bicol th a:link, table.bicol th a:visited, -table.bicol th a:active, table.bicol th a:hover { - color: #9999FF; - background: inherit; -} - -table.tinybicol td, table.bicol td { - color: #000000; - background: inherit; -} - -table.tinybicol td, table.bicol td, table.tinybicol tr, table.bicol tr { padding: 4px; } - -td.half { width: 50%; padding: 4px; } -td.titre { - color: #000000; - background: inherit; - font-weight: bold; -} -td.action { - white-space: nowrap; - text-align: right; - font-weight: bold; - vertical-align: middle; -} -td.action a { padding: 0px 2px 0px 2px; } - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-bottom: 1px solid #003399; - border-top: 1px solid #003399; - width: 98%; - margin-left: 1%; -} -#skin td { - border-bottom: 2px solid #003399; - border-top: 1px solid #003499; - vertical-align: middle; -} -#skin td.skigauche { - background: #eeeeee; - color: inherit; - vertical-align: middle; -} -#skin td.skimilieu { - padding-left: 1em; - width: 100%; -} -#skin td.skidroite { padding: 0; } - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list { - width: 98%; - margin-left: 1%; -} - -div.contact-list div.contact { - width: 100%; - text-align: left; - border-top: 1px solid #003399; - background: #F4D09C; - color: inherit; -} - -div.contact-list div.grayed { - color: #444444; - font-style: italic; - background: #eee; -} - -.contact .photo { - float: left; -} - -.contact .photo img { - width: 40px; - margin-right: 4px; -} - -div.contact div.identity { - float: left; - width: 90%; -} - -div.contact div.nom { - font-weight: bold; -} - -div.contact div.bits { - text-align: right; - float: right; -} - -div.contact div.long { - width: 100%; - clear: both; - background: white; - color: inherit; - padding-top: 1px; - padding-bottom: 1px; -} - -div.long table { width: 100%; } -div.long td.lt { width: 35%; font-style: italic; } -div.long td.rt { width: 65%; } - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -.wizard { - margin-top: -4px; - margin-left: -16px; -} - -.wizard .wiz_header { - height: 32px; - width: 100%; - background: url('../images/skins/wiz_background.png') top right repeat-x; - margin-bottom: 1em; -} - -.wizard .wiz_header .wiz_tab { - background: url('../images/skins/wiz_normal.png') #aaa top left repeat-x; - height: 100%; - text-align: center; - font-size: 75%; - border-right: 1px solid #888; -} - -.wizard .wiz_header .wiz_tab:hover { - background: url('../images/skins/wiz_hover.png') #777 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header .active, .wizard .wiz_header .active:hover { - background: url('../images/skins/wiz_active.png') #444 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header a { - color: #000; - text-decoration: none; -} - -.wizard .wiz_header a.active { - color: #fff; -} - -.wizard .wiz_content { - margin-left: 16px; -} - -.flags .texte { - font-size: smaller; - font-weight: bold; - margin-left: -6px; - padding: 0 12px 0 0; -} -.flags img { - padding: 0 6px 0 0; -} - - -/******************************************************************************* - 7 fiche.php & fiche_referent.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - width: 760px; - font-size: 100%; - vertical-align: top; - - border: 1px solid #369; -} - -#fiche em { color: purple; } - -#fiche h2 { - color: #369; - padding: 0px 4px; - margin: 0.5em 0em; - font-weight: bold; - border-bottom: 1px dotted #369; -} - -#fiche .part { - float: left; - clear: left; - width: 70%; - padding-left: 0; - padding-right: 0; - margin-left: 0; - margin-right: 0; -} - -#fiche #photo { - float: right; - width: 30%; - padding-left: 0; - margin-left: 0; - clear: right; -} - -#fiche #photo img { - width: 100%; -} - -#fiche_identite { - padding: 5px; -} - -#fiche_identite div.civilite { - text-align: center; - font-weight: bold; - width: 80%; - float: left; -} - -#fiche_identite div.maj { - float: left; - width: 20%; - font-size: 75%; - text-align: right; - clear: right; - padding-bottom: 1ex; -} - -#fiche_identite div.contact { - clear: both; - margin: 1em; - padding: 1ex; - background: #fff; - border: 1px dotted #69c; -} -#fiche_identite div.email { - clear: left; - float: left; -} -#fiche_identite div.mob { - float: right; - clear: right; - text-align: right; -} - -#fiche_identite div.formation { - margin: 0em 1em; - clear: both; -} - -div.adresse { - min-width: 30%; - padding: 0px; - margin: 0px 2% 1ex 1%; -} - -div.adresse strong { - font-size: 90%; -} - -#fiche .medal_frame { - float: left; - width: 33%; -} - -#fiche .medal_frame img { - float: left; - padding: 0ex 1ex; -} - -/* only for fiche_referent.php*/ - -#fiche_referent .part { - width: 100%; -} - -#fiche_referent #fiche_identite div.civilite { - width: 100%; -} - -#fiche_referent{ - width: 100%; -} - -#fiche_referent div.rubrique_referent{ - float: left; - width: 31%; - padding: 0px; - margin: 0px 1% 1ex 1%; - text-align: justify; -} - -#fiche_referent em{color: purple;} -#fiche_referent ul { margin: 0px; padding: 0px 1em; } -#fiche_referent li { font-weight: bold; margin: 0px; padding: 0px; text-align: left; } - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#dev { - width: auto; - text-align: center; - padding: 1px; - - color: #003399; - background: #e0ffff; - - font-family: 'Bauhaus Md BT','Bitstream Vera',sans-serif; - font-size: 10pt; - font-weight: bold; -} - -#dev a { text-decoration: underline; } -#dev a:hover { color: #003399; background: #c0e0e0; } - -.backtrace div.hide { display: none; } -.backtrace:hover div.hide { display: block } - -#suid { - color: red; - background: #ffc0cb; - width: auto; - font-weight: bold; - text-align: center; -} -#suid a { - color: red; - background: inherit; - text-decoration: none; - display: block; -} -#suid:hover { - color: red; - background: #ffffcb; -} -#suid a:hover { - color: #ff7000; - background: inherit; -} - -#body { - width: 740px; - margin-left: auto; - margin-right: auto; -} - -#body-logo { - width: 140px; - border-right: 1px solid gray; - text-align: center; - font-family: "MS Sans Serif", sans-serif; - padding-top: 4px; - border-bottom: 1px solid gray; -} - -#body-top { - border-bottom: 1px solid gray; - text-align: center; - font-size: 95%; - padding: 4px; - padding-bottom: 16px; - font-family: "Arial", sans-serif; -} - -#body-top table { width: 100%; padding: 4px; } -#body-top .date-heure { text-align: left; } -#body-top .inscrits { text-align: right; } - -#body-bottom { - border-top: 1px solid gray; - text-align: center; - padding: 4px; - font-size: 75%; - font-family: "MS Sans Serif", sans-serif; -} - -#body-menu { - width: 140px; - border-right: 1px solid gray; - text-align: center; - font-family: "MS Sans Serif", sans-serif; - font-size: 75%; - font-weight: bold; - white-space: nowrap; -} - -#body-menu .menu_item { - padding-left: 4px; - padding: 2px; - text-align: left; -} - -#body-menu .menu_item a { - text-decoration:none; -} - -#body-menu .menu_title { - color: gray; - background: #eeeeee; - border-top: 1px solid gray; - border-bottom: 1px solid gray; - padding: 1px; - margin-top: 4px; - text-align: center; -} - -#content { - width: 600px; - padding: 4px 0px 4px 16px; - font-size: 95%; - vertical-align: top; -} - -.quick_search { - color: gray; - text-align: right; -} - -div#content { - padding: 1em; - margin: 0em; -} - -#content input { - font-size: 95%; -} - -#menu-evts { - font-size: 85%; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/espace.css b/htdocs/css/espace.css deleted file mode 100644 index e001c5e..0000000 --- a/htdocs/css/espace.css +++ /dev/null @@ -1,215 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -a:link, a:visited, a:active, a:hover { - color: #0f2c57; - background: inherit; -} -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -fieldset { - background-color: #eeeeff; - border: 1px #2f006f solid; - color: inherit; -} - -legend { - background-color: #3f009f; - border: none; - color: #ffffff; -} - -legend a:link, legend a:visited, legend a:active, legend a:hover { - color: #99F; - background: inherit; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:visited, h1 a:active, h1 a:hover { - color: #3f7ce7; - background: inherit; -} - -h1 { - color: #eeeeee; - background-color: #000000; - background-image: url( "../images/skins/espace_titre.jpg"); - background-repeat: no-repeat; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background: #eeeeff; - border: 1px solid #2f006f; - border-collapse: collapse; -} - -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.pair, table.bicol tr.pair { background: #ddddff; } -table.tinybicol th, table.bicol th { - background-color: #2f006f; -} - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-top: 1px solid #2f006f; - border-bottom: 1px solid #2f006f; -} - -#skin td { - border-top: 1px solid #2f006f; - border-bottom: 1px solid #2f006f; - background-color: #eeeeff; -} - -#skin td.skigauche { - background-color: #ddddff; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #ccddff; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #ffffff; - color: inherit; -} - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - border-color: #2f006f; -} - -#fiche h2 { - color: #2f006f; -} - -#fiche em { - color: #305070; -} - -#fiche_identite { - padding: 0em; -} - -#fiche_identite div.civilite { - color: #eeeeee; - background-color: #000000; - background-image: url( "../images/skins/espace_titre.jpg"); - background-repeat: no-repeat; - width: 100%; - text-align: left; - padding-left: 0.2em; -} - -#fiche_identite div.maj { - float: right; - padding-right: 0.2em; -} - -#fiche_identite div.contact { - border-color: #2f006f; - background-color: #eeeeff; -} - -#photo { - padding-left: 0em; -} - -#photo img { - padding-bottom: 1em; -} - -#photo div { - padding-left: 1em; -} - -#fiche_referent em { - color: #305070; -} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-top: none; - border-bottom: none; - border-right: none; - border-left: none; -} - -#body-top { - border-bottom: 2px solid #777777; -} - -#body-bottom { - border-top: 1px solid #777777; -} - -#body-menu { - border-right: none; -} - -#body-menu .menu_title { - color : #ffffff; - background-color: #dddddd; - background-image: url("../images/skins/espace_menu.jpg"); - border-bottom: none; -} - -#body-menu .menu_item { - border-right: none; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/humlinux.css b/htdocs/css/humlinux.css deleted file mode 100644 index 96c0b04..0000000 --- a/htdocs/css/humlinux.css +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -fieldset { - background-color: #eeeeee; -} - -legend { - background-color: #dddddd; -} - - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 { - color: #000000; - background-color: #dddddd; - background-image: url( "../images/skins/humlinux_titre.jpg"); - background-repeat: no-repeat; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #000000; - background: #eeeeee; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #dddddd; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-content { - background-image: url("../images/skins/humlinux_background.jpg"); - background-repeat: repeat-y; - background-position: top left; -} - -#body-logo { - border-top: none; - border-bottom: none; - border-right: none; - border-left: none; -} - -#body-top { - width: 150px; - border-bottom: 2px solid #777777; -} - -#body-bottom { - border-top: 1px solid #777777; -} - -#body-menu { - width: 150px; - border-right: none; -} - -#body-menu .menu_title { - color : #ffffff; - background-color: #dddddd; - background-image: url("../images/skins/humlinux_menu.jpg"); - border-top: none; - border-bottom: none; -} - -#body-menu .menu_item { - border-right: none; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/igoogle.css b/htdocs/css/igoogle.css deleted file mode 100644 index 4fe8ada..0000000 --- a/htdocs/css/igoogle.css +++ /dev/null @@ -1,97 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -body { - font-family: "Arial", sans-serif; - font-size: small; - color: #000000; - background: #ffffff; - background-position: center; - margin: 0.2em 0em; -} - -a:link, a:visited, a:active, a:hover { color: #003399; background: none; } -img { vertical-align: middle; } -a img { border: 0px; } -td { vertical-align: top; } -div.more { font-size: x-small; text-align: right; } - -/* Events */ -div.events ul { margin: 0; padding: 0 0.2em 0 1em; } -div.events ul li { margin: 0.5em 0.2em; padding: 0; } -li.unread { font-weight: bold; } - -/* Search gadget: frame */ -div.welcome { - text-align: center; -} - -div.search { - text-align: center; - margin-top: 1em; -} - -div.error { - color: red; - font-weight: bold; -} - -/* Search gadget: result page */ -div.contact-list div.contact { - width: 100%; - text-align: left; - border-top: 1px solid #003399; - background: #F4D09C; - color: inherit; -} - -div.grayed { - color: #444444; - font-style: italic; -} - -div.grayed div.contact { - background: #eee; -} - -div.contact div.nom { - font-weight: bold; - float: left; -} - -div.contact div.autre { - text-align: right; - float: right; -} - -div.contact div.long { - width: 100%; - clear: both; - background: white; - color: inherit; - padding-top: 1px; - padding-bottom: 1px; -} - -div.long table { width: 100%; } -div.long td.lt { width: 35%; } -div.long td.rt { width: 65%; } - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/keynote.css b/htdocs/css/keynote.css deleted file mode 100644 index 276e590..0000000 --- a/htdocs/css/keynote.css +++ /dev/null @@ -1,688 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { - font-family: "Arial", sans-serif; - font-size: 10pt; - background: url('../images/skins/keynote_bg.png') #4f4e63 top left repeat-x fixed; - color: #fff; -} - -a:link, a:visited, a:active, a:hover { - color: #ddd; - background: inherit; -} -a:hover { color: #999; } - -img { vertical-align: middle; } -a img { border: 0px; } -td { vertical-align: top; } -li { padding-left: 3px; padding-right: 3px; - text-align: justify; } -hr { text-align: center; } -dt { font-weight: bold; } - -fieldset { - border: 1px solid #fff; - border-bottom: 0px; - border-right: 0px; - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - color: #000; - margin: 1em 0 1em 0; - text-align: justify; -} -legend { - border-bottom: 1px solid #666; - border-right: 1px solid #666; - border-top: 1px solid #fff; - border-left: 1px solid #fff; - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbaa top left repeat-x fixed; - color: #000; - - padding: 2px 4px; -} - -.center { text-align: center; } -.right { text-align: right; } -.middle { vertical-align: middle; } -.smaller { font-size: smaller; font-style: italic; } -.spacer { clear: both; } - -.float2 { float: left; width: 49%; } -.float3 { float: left; width: 33%; } - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -p { - margin-bottom: 0.4em; - text-align: justify; - text-indent: 2em; -} - -p.smaller { - text-indent: 0; -} - -.errors { - width: 98%; - border: 1px solid #f00; - margin-top: 10px; - background-color: #200; -} - -.warnings { - width: 98%; - border: 1px solid #ff0; - margin-top: 10px; - background-color: #220; -} - -.success { - width: 98%; - border: 1px solid #0d3; - margin-top: 10px; - background-color: #021; -} - -.erreur { - font-weight: bold; - color: #d00; - background: inherit; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -.erreur a:link, .erreur a:visited, .erreur a:active, .erreur a:hover { - color: #ff3333; - background: inherit; -} - -input.error, textarea.error { - background-color: #faa; -} - -input.valid, textarea.valid { - background-color: #afa; -} - -input.warning, textarea.warning { - background-color: #fda; -} - -h1 { - background-color: inherit; - margin: 0.5em 0 0.5em -8px; - text-indent: 0em; - padding: 20px 0 0 0px; - - font-size: 130%; - font-family: "helvetica", sans-serif; - font-weight: bolder; - text-align: left; - - color: #bdf; -} - -h2 { - padding: 15px 0em 0em 0em; - margin: 0; - margin-left: -8px; - font-size: 110%; - font-weight: bold; - background: inherit; - color: #77c; -} - -h3 { - margin: 0em; - font-weight: bold; - padding: 0.25em; - font-size: 105%; -} - -p.explication, div.explication { - font-style: italic; - padding: 0em 1ex 1ex 1ex; -} - -li.spaced { - padding-top: 0.2em; - padding-bottom: 0.3em; - text-align: justify; -} - -pre { - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - margin: 0em 0em; - padding: 0.3em 1.5em; -} - -.pair pre { - background: inherit; -} - - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ -table.bicol, table.tinybicol { - color: inherit; - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - border-width: 1px 0 0 1px; - border-style: solid; - border-color: #fff; - border-collapse: collapse; -} -table.bicol { width: 100%; margin-left: 0; } -table.tinybicol { width: 70%; margin-left: 15%; } - -table.tinybicol tr.pair, table.bicol tr.pair { - color: inherit; - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbca top left repeat-x fixed; -} - -table.tinybicol th, table.bicol th { - color: #fff; - font-weight: bold; - text-align: center; - vertical-align: middle; - background: none; - background-color: #000; -} - -table.tinybicol tr:first-child th, table.bicol tr:first-child th { - color: #fff; - background: url('../images/skins/keynote_title.gif') #000 top left repeat-x; -} - -table.tinybicol td, table.bicol td { - color: #000000; - background: inherit; -} - -table.tinybicol td, table.bicol td, table.tinybicol tr, table.bicol tr { padding: 4px; } - -td.half { width: 50%; padding: 4px; } -.titre { - color: #000000; - background: inherit; - font-weight: bold; -} -td.action { - white-space: nowrap; - text-align: right; - font-weight: bold; - vertical-align: middle; -} -td.action a { padding: 0px 2px 0px 2px; } - -th.grayed { - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - font-style: italic; -} - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - color: #000; - border-top: 1px solid #fff; - width: 100%; -} -#skin td { - border-bottom: 1px solid #fff; - vertical-align: middle; -} -#skin td.skigauche { - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbca top left repeat-x fixed; - color: inherit; - vertical-align: middle; -} -#skin td.skimilieu { - padding-left: 1em; - width: 100%; -} -#skin td.skidroite { padding: 0; } - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list { - width: 98%; - margin-left: 1%; -} -div.contact-list div.contact { - border-top: 1px solid #fff; - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - color: #000; -} - -div.contact-list div.grayed { - font-style: italic; - color: #444; - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; -} - -div.contact-list div.contact:hover { - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbca top left repeat-x fixed; -} - -.contact .photo { - float: left; -} - -.contact .photo img { - width: 40px; - margin-right: 4px; -} - -div.contact div.identity { - float: left; - width: 70%; -} - -div.contact div.nom { - font-weight: bold; - padding-left: 2px; -} - -div.contact div.appli { -} - -div.contact div.bits { - text-align: right; - float: right; -} - -div.contact div.long { - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - width: 100%; - clear: both; - color: inherit; - padding: 1px 0px; -} - -div.long table { width: 100%; } -div.long td.lt { width: 25%; font-style: italic; } -div.long td.rt { width: 75%; } - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -.wizard { - margin-left: -16px; -} - -.wizard .wiz_header { - height: 32px; - width: 100%; - background: url('../images/skins/wiz_background.png') top right repeat-x; - margin-bottom: 1em; -} - -.wizard .wiz_header .wiz_tab { - background: url('../images/skins/wiz_normal.png') #aaa top left repeat-x; - height: 100%; - text-align: center; - font-size: 75%; - border-right: 1px solid #888; -} - -.wizard .wiz_header .wiz_tab:hover { - background: url('../images/skins/wiz_hover.png') #777 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header .active, .wizard .wiz_header .active:hover { - background: url('../images/skins/wiz_active.png') #444 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header a { - color: #000; - text-decoration: none; -} - -.wizard .wiz_header a.active { - color: #fff; -} - -.wizard .wiz_content { - margin-left: 16px; -} - -.flags .texte { - font-size: smaller; - font-weight: bold; - margin-left: -6px; - padding: 0 12px 0 0; -} -.flags img { - padding: 0 6px 0 0; -} - -/******************************************************************************* - 7 fiche.php & fiche_referent.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - width: 740px; - color: #000; - border-top: 1px solid #fff; - border-left: 1px solid #fff; - background: url('../images/skins/keynote_bg_lighter.png') #848495 top left repeat-x fixed; - vertical-align: top; -} - -#fiche em { - color: #777; - background: inherit; - font-weight: bolder; -} - -#fiche h2 { - background: url('../images/skins/keynote_title.gif') bottom repeat-x; - background-color: inherit; - border-bottom: 1px solid #202020; - color: #fff; - height: 17px; - margin: 0.5em 0; - padding-left: 0.5em; - font-weight: bold; -} - -#fiche .part { - float: left; - clear: left; - width: 70%; - padding-right: 0em; - margin-right: 0em; -} - -#fiche #photo { - float: right; - padding-left: 0em; - margin-left: 0em; - clear: right; - width: 30%; -} - -#fiche #photo img { - width: 100%; -} - -#fiche_identite div.civilite { - text-align: center; - font-weight: bold; - width: 80%; - float: left; - color: #fff; - background: inherit; - padding-top: 0.5ex; -} - -#fiche_identite div.maj { - float: right; - width: 19%; - font-size: 75%; - text-align: right; - vertical-align: top; - padding: 0.5ex 1ex 1ex 0ex; - clear: right; -} - -#fiche_identite div.contact { - clear: both; - margin: 1em; - padding: 1ex; - border-width: 1px 0 0 1px; - border-style: dotted; - border-color: #fff; - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbca top left repeat-x fixed; - color: inherit; -} - -#fiche_identite div.contact em { - color: #aaa; - background: inherit; -} - - -#fiche_identite div.email { - clear: left; - float: left; -} - -#fiche_identite div.mob { - float: right; - clear: right; - text-align: right; -} - -#fiche_identite div.formation { - margin: 0em 1em; - clear: both; -} - -div.adresse { - min-width: 30%; - padding: 0px; - margin: 0px 1% 2ex 2%; -} - -#fiche .medal_frame { - float: left; - width: 33%; -} - -#fiche .medal_frame img { - float: left; - padding: 0ex 1ex; -} - -#fiche .medal_text { - vertical-align: middle; - font-weight: bold; -} - -/* only for fiche_referent.php*/ - -#fiche_referent .part { - width: 100%; -} - -#fiche_referent #fiche_identite div.civilite { - width: 100%; -} - -#fiche_referent div.rubrique_referent{ - float: left; - width: 30%; - padding: 0px; - margin: 0px 1% 1ex 2%; - text-align: justify; -} - -#fiche_referent em { - color: #777; - background: inherit; - font-weight: bolder; -} -#fiche_referent ul { margin: 0px; padding: 0px 1em; } -#fiche_referent li { font-weight: bold; margin: 0px; padding: 0px; text-align: left; } - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#dev { - width: auto; - text-align: center; - padding: 1px; - - background: url('../images/skins/keynote_bg_verylighter.png') #bbbbaa top left repeat-x fixed; - color: #000; - font-weight: bold; -} - -#dev a { text-decoration: none; } - -.backtrace div.hide { display: none; } -.backtrace:hover div.hide { display: block; } -.backtrace h1 { padding: 0; margin: 0; } - -#suid { - color: red; - background: #ffc0cb; - width: auto; - font-weight: bold; - text-align: center; -} -#suid a { - color: red; - background: inherit; - text-decoration: none; - display: block; -} -#suid:hover { - color: red; - background: #ffffcb; -} -#suid a:hover { - color: #ff7000; - background: inherit; -} - -#body { - width: 800px; - margin-left: auto; - margin-right: auto; -} - -#body-logo { - width: 140px; - padding-top: 0; - text-align: center; -} - -#body-top { - padding: 0 0 16px 0; - text-align: center; - font-size: 85%; - border-bottom: 1px solid #fff; -} -#body-top table { width: 100%; padding: 4px; } -#body-top .date-heure { text-align: left; } -#body-top .inscrits { text-align: right; } - - -#body-bottom { - border-top: 1px solid #aaa; - text-align: center; - padding: 4px; - font-size: 75%; - font-family: "MS Sans Serif", sans-serif; -} - -#body-menu { - width: 140px; - text-align: center; - font-size: 85%; - font-weight: bold; - white-space: nowrap; - border-right: 1px solid #fff; -} - -#body-menu .menu_item { - text-align: left; - padding: 2px; -} - -#body-menu a:link, #body-menu a:visited, #body-menu a:active, #body-meny a:hover { - color: #fff; - background: inherit; - text-decoration: none; -} - -#body-menu .menu_item:hover { - color: inherit; - background-color: #556; -} - -#body-menu .menu_title { - color: #fff; - height: 17px; - background: url('../images/skins/keynote_title.gif') bottom repeat-x; - background-color: inherit; - border-bottom: 1px solid #202020; - padding: 4px 0 0 0; - text-align: center; - vertical-align: bottom; -} - -#content { - width: 600px; - padding: 0 0 4px 16px; - vertical-align: top; - font-size: 95%; -} - -.quick_search { - color: gray; - background: #fff; - text-align: right; -} - -div#content { - padding: 1em; - margin: 0em; -} - -#content input { - font-size: 95%; -} - -#menu-evts { - font-size: 85%; -} - -.ac_results { - color: black; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/linux.css b/htdocs/css/linux.css deleted file mode 100644 index ae46031..0000000 --- a/htdocs/css/linux.css +++ /dev/null @@ -1,124 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -fieldset { - background-color: #eeeeee; - border: 1px #777777 solid; - color: inherit; -} - -legend { - background-color: #d0d0ff; - border: 1px #777777 solid; - color: inherit; -} - - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:visited, h1 a:active { - color: #999999; - background: inherit; -} - -h1 a:hover { - color: #cccccc; -} - -h1 { - color: #eeeeee; - background-color: #444444; - background-image: url( "../images/skins/linux_titre.jpg"); - background-repeat: repeat-x; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - background-color: #d0d0ff; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche h2 { - color: #000; - background-color: #ccc; - border: none; -} - -#fiche em, #fiche_referent em { - color: #444; -} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-bottom: none; - border-right: none; -} - -#body-top { - border-bottom: 2px solid #777777; -} - -#body-menu { - border-right: none; -} - -#body-menu .menu_title { - color: #000000; - background-image: url("../images/skins/linux_menu.jpg"); - border-top: none; - border-bottom: none; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/liteskin.css b/htdocs/css/liteskin.css deleted file mode 100644 index e7b8940..0000000 --- a/htdocs/css/liteskin.css +++ /dev/null @@ -1,164 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { color: #000000; } - -a:link { color: #3252A7; text-decoration: none; } -a:visited { color: #3252A7; text-decoration: none; } -a:active { color: #3252A7; text-decoration: underline; } -a:hover { color: #0F2C57; text-decoration: none; } - -fieldset { - background-color: #fdfde9; - border: 1px #660099 solid; - color: inherit; -} - -legend { - background-color: #ffff99; - border: none; - color: #660099; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 { - color: #660099; - background: #FFFF99; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background: #FDFDE9; - border: 1px solid #FFFF99; - border-collapse: collapse; -} -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.impair , table.bicol tr.impair { background: #FDFDE9; } -table.tinybicol tr.pair, table.bicol tr.pair { background: #F8EBFF; } -table.tinybicol th, table.bicol th { - background: #FFFF99; - color: #C866FA; -} - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - background: #99b9d0; - border-top: 1px solid #305070; - border-bottom: none; -} - -#skin td { - border-top: none; - border-bottom: 1px solid #305070; - vertical-align: middle; -} - -#skin td.skigauche { - background: #99b9d0; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #80a0c0; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #99b9d0; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-top: 1px solid #660099; - border-right: 1px solid #660099; - border-left: 1px solid #660099; - border-bottom: none; - padding-top: 35px; -} - -#body-top { - border-bottom: 1px solid #660099; -} - -#body-bottom { - border-top: 1px solid #660099; -} - -#body-menu { - border-left: 1px solid #660099; - border-right: 1px solid #660099; -} - -#body-menu .menu_title { - color : #660099; - background: #FFFF99; - border-top: 1px solid #660099; - border-bottom: 1px solid #660099; -} - -#body-menu .menu_item { - padding-left: 4px; - text-align: left; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/nbviolet.css b/htdocs/css/nbviolet.css deleted file mode 100644 index 6e269de..0000000 --- a/htdocs/css/nbviolet.css +++ /dev/null @@ -1,205 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -a:link { color: #800080; } -a:visited { color: #800080; } -a:active { color: #800080; } -a:hover { color: #800080;} - -fieldset { - background-color: #f5eeff; - border: 1px #800080 solid; - color: inherit; -} - -legend { - background-color: #ecd0ff; - border: 1px #800080 solid; - color: inherit; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:visited, h1 a:active { - color: #e000e0; - background: inherit; -} - -h1 a:hover { - color: #ff00ff; - background: inherit; -} - -h1 { - color: #ff0000; - background-color: #800080; - background-image: url( "../images/skins/nbviolet_titre.jpg"); - background-repeat: repeat-x; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background: #ecd0ff; - border: 1px solid #800080; - border-collapse: collapse; -} - -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.impair, table.bicol tr.impair { background: #ecd0ff; } -table.tinybicol tr.pair, table.bicol tr.pair { background: #efddff; } -table.tinybicol th, table.bicol th { - background-color: #800080; -} - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-top: 1px solid #000000; - border-bottom: 1px solid #800080; -} - -#skin td { - border-top: 1px solid #800080; - border-bottom: 1px solid #800080; -} - -#skin td.skigauche { - background-color: #efddff; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #e0c0ff; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #efddff; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - border-color: #800080; -} - -#fiche_identite div.maj, #fiche em, #fiche_referent em { - color: #800080; -} - -#fiche h2 { - color : #eeeeee; - background-color: #404040; - background-image: url("../images/skins/nbviolet_menu.jpg"); - border-top: none; - border-bottom: none; -} - -#fiche_identite div.contact { - background-color: #e0e0e0; - border-color: #800080; -} - -#photo { - padding: 0em; -} - -#photo img { - padding-bottom: 1em; -} - -#photo div { - padding: 0.2em 0em 0.2em 1em; - background-color: #efddff; -} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-bottom: none; - border-right: none; - border-left: none; - border-top: none; -} - -#body-top { - border-bottom: 2px solid #cccccc; -} - -#body-bottom { - border-top: 1px solid #003399; -} - -#body-menu { - border-right: none; -} - -#body-menu .menu_title { - color : #eeeeee; - background-color: #404040; - background-image: url("../images/skins/nbviolet_menu.jpg"); - border-top: none; - border-bottom: none; -} - -#body-menu .menu_item { - padding-left: 0px; - text-align: left; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/newxorg.css b/htdocs/css/newxorg.css deleted file mode 100644 index 7178429..0000000 --- a/htdocs/css/newxorg.css +++ /dev/null @@ -1,174 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -a:link, a:visited, a:active, a:hover { - color: #0f2c57; - background: inherit; -} -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -#body { - background-image: url("../images/skins/newxorg_background.jpg"); - background-position: top right; - background-repeat: repeat-y; -} - -legend { - background-color: #ccddff; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 { - color: #ff9900; - background-color: #458bb6; - background-image: url( "../images/skins/newxorg_titre.jpg"); - background-repeat: repeat-x; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #ccddff; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #ffffff; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -#onglet li:hover { - background-color: #458bb6; -} - -#onglet li.actif { - background-color: #eceade; -} - -#onglet li a:hover { - color: #ff6600; - text-decoration: none; -} - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - border: 1px solid #458bb6; -} - -#fiche h2 { - color: #ff6600; - background-color: #458bb6; - background-image: url("../images/skins/newxorg_titre.jpg"); - background-repeat: repeat-x; - border: none; -} - -#fiche em { - color: #ff6600; -} - -#photo img { - padding-bottom: 1em; -} - -#fiche_identite div.contact { - border-color: #458bb6; - background-image: url("../images/skins/newxorg_background.jpg"); -} - -#fiche_referent em { - color: #ff6600; -} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-top: none; - border-bottom: none; - border-right: none; - border-left: none; -} - -#body-top { - border-bottom: 2px solid #777777; -} - -#body-bottom { - border-top: 1px solid #777777; -} - -#body-menu { - border-right: 1px solid #ffffff; -} - -#body-menu .menu_title { - color : #ff6600; - background-color: #ffffff; - background-image: url("../images/skins/newxorg_menu.jpg"); - border-top: 1px solid #ffffff; - border-bottom: 1px solid #ffffff; -} - -#body-menu .menu_item { - border-right: none; -/* padding-left: 0px; - text-align: left;*/ -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/nl.css b/htdocs/css/nl.css deleted file mode 100644 index 3094358..0000000 --- a/htdocs/css/nl.css +++ /dev/null @@ -1,137 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -div.nl_background { - margin : 0; - padding : 1em 0; - background-color: #ddd; - color: #000; -} - -div.nl { - margin : auto; - width : 72ex; - font-family : "Verdana", "Arial", "Helvetica", sans-serif; - font-size : 10pt; - text-align : justify; - background-color : #fff; - color : #000; -} - -div.nl a[href] { - text-decoration : none; - background-color : #fff; - color : #36c; -} - -div.nl a[href]:hover { - background-color : #fff; - color : #6c0; -} - -div.nl div.title { - margin : 0 0 3ex; - padding : 4.5ex 1ex 1ex 15ex; - font-size : 130%; - font-weight : bold; - text-align : right; - background-color : #369; - color : #fff; - background-image : url(http://www.polytechnique.org/images/logo_xorg_nl.png); - background-repeat : no-repeat; - background-position : 0.5ex 0ex; -} - -div.nl div.intro { - margin : 4ex 3ex; -} - -div.nl div.lnk { - text-align: left; - margin : 2ex 6ex; -} - -div.nl div.lnk a { - font-size : 95%; -} - -div.nl div.top_lnk { - margin : 2ex; - padding : 0; - font-size : 85%; - text-align : right; -} - -div.nl h1.xorg_nl { - margin : 3ex 0 2ex; - padding : 1.5ex 2ex 0.5ex 1ex; - font-size : 120%; - font-weight : bold; - text-align : right; - background: none; - background-color : #369; - color : #fff; - border: none; -} - -div.nl h2.xorg_nl { - margin : 2ex 0 0; - padding : 0.4ex 2ex; - font-size : 100%; - font-weight : bold; - font-style : italic; - background-color : #fff; - background: none; - color : #369; - border-width : thin 0; - border-style : solid; - border-color : #369; -} - -div.nl div.art { - margin : 2ex 3ex; -} - -div.nl div.app { - margin : 2ex 6ex 0 3ex; - font-size : 95%; - text-align : left; -} - -div.nl div.foot1 { - margin : 8ex 0 0; - padding : 0.5ex 2ex; - font-size : 90%; - background-color : #fff; - color : #999; - border-width : thin 0; - border-style : solid; - border-color : #ddd; - text-align : center; -} - -div.nl div.foot2 { - padding : 1ex 0; - font-size : 90%; - background-color : #fff; - color : #999; - text-align : center; -} - diff --git a/htdocs/css/oldtimes.css b/htdocs/css/oldtimes.css deleted file mode 100644 index 34f060c..0000000 --- a/htdocs/css/oldtimes.css +++ /dev/null @@ -1,110 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:active, h1 a:visited { - color: #70ff00; - background: inherit; -} - -h1 a:hover { - color: #c0ff00; - background: inherit; -} - -h1 { - color: #ffff00; - background-color: #0005c0; - background-image: url( "../images/skins/oldtimes_titre.jpg"); - background-repeat: repeat-x; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-bottom: none; - border-right: 1px solid #305070; - border-left: none; - border-top: none; -} - -#body-top { - border-bottom: 2px solid #777777; -} - -#body-bottom { - border-top: 1px solid #003399; -} - -#body-menu { - border-right: 1px solid #003399; -} - -#body-menu .menu_title { - color : #000000; - background-color: #ffffff; - background-image: url("../images/skins/oldtimes_menu.jpg"); - border-top: 1px solid #003399; - border-bottom: 1px solid #003399; -} - -#body-menu .menu_item { - padding-left: 0px; - text-align: left; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/openweb.css b/htdocs/css/openweb.css deleted file mode 100644 index 3eb5622..0000000 --- a/htdocs/css/openweb.css +++ /dev/null @@ -1,639 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { - background:#369; - color: #096; - font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif; - margin:2em 1%; - padding:0; - font-size: 9pt; -} - -a:link, a:visited { color: #f60; background: transparent; } -a:active, a:hover { color: #369; background: transparent; } - -img { vertical-align: middle; } -a img { border: 0px; } -li { padding: 0em 1em; text-align: justify; } -hr { width: 90%; margin: 1em 5%; border: 1px dotted #369; border-bottom: none; } - -fieldset { - border: 1px dotted #69c; - background: #fff; - color: inherit; - - margin: 1em 0em; - padding: 1em; -} - -legend { - border: 1px dotted #69c; - background: #d6e1ec; - color: inherit; - - padding: 0em 1em; -} - -.center { text-align: center; } -.right { text-align: right; } -.smaller { font-size: smaller; font-style: italic; } -.spacer { clear: both; } - -.float2 { float: left; width: 48%; margin: 2px; } -.float3 { float: left; width: 33%; } - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -p { - padding: 0em 1em; - margin-bottom: 0.5em; - text-align: justify; -} - -.errors { - margin-top: 10px; - border: 1px solid #f00; - background-color: #fcc; - width: 98%; -} - -.warnings { - margin-top: 10px; - border: 1px solid #ed0; - background-color: #ffc; - width: 98%; -} - -.success { - margin-top: 10px; - border: 1px solid #0d2; - background-color: #cfd; - width: 98%; -} - -.erreur { - font-weight: bold; - color: #ff0000; - background: inherit; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -.erreur a:link, .erreur a:visited, .erreur a:active, .erreur a:hover { - color: #ff3333; - background: inherit; -} - -input.error, textarea.error { - background-color: #faa; -} - -input.valid, textarea.valid { - background-color: #afa; -} - -input.warning, textarea.warning { - background-color: #fda; -} - -h1 { - color: #369; - font-size: 140%; - background: #f5f8fc; - margin: 0em; - border-bottom: 2px solid #369; - padding: 4px; - margin: 1em 0em; -} - -h2 { - color: #369; - font-size: 115%; - padding: 0px 4px; - margin: 1em 0em 0.5em 0em; - font-weight: bold; - border-bottom: 1px dotted #369; -} - -h3 { - margin: 0em; - font-weight: bold; - padding: 0.5em 0em; - font-size: 100%; -} - - -p.explication, div.explication { - font-style: italic; - padding: 0em 1ex 1ex 1ex; -} - -li.spaced { - padding-top: 0.5em; - padding-bottom: 0.5em; - text-align: justify; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.bicol { - border-collapse: collapse; - color: inherit; - background: #fff; - border: 1px solid #a2c2e1; - width: 98%; - margin-left: 1%; -} -table.tinybicol { - border-collapse: collapse; - color: inherit; - background: #fff; - border: 1px solid #a2c2e1; - width: 70%; - margin-left: 15%; -} - -table.tinybicol tr.impair, table.bicol tr.impair {} -table.tinybicol tr.pair, table.bicol tr.pair { - color: inherit; - background: #eee; -} - -table.tinybicol th, table.bicol th { - color: #369; - background: #d6e1ec; - font-weight: bold; - text-align: center; - padding: 0px 4px; -} -table.tinybicol td, table.bicol td { - color: #000000; - background: inherit; - padding: 0px 4px; -} - -td.half { width: 50%; padding: 4px; } - -td.titre { - color: #000000; - background: inherit; - font-weight: bold; -} -td.action { - white-space: nowrap; - text-align: right; - font-weight: bold; -} -td.action a { padding: 0px 2px; } - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-bottom: 1px solid #a2c2e1; - border-top: 1px solid #a2c2e1; - width: 98%; - margin-left: 1%; -} -#skin td { - border-top: 1px solid #a2c2e1; - border-bottom: 1px solid #a2c2e1; -} -#skin td.skigauche { - background: #d6e1ec; - color: inherit; -} -#skin td.skimilieu { - padding-left: 1em; - width: 100%; -} -#skin td.skidroite { padding: 0; } - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list { - width: 98%; - margin-left: 1%; - border: 1px dotted #a2c2e1; -} - -div.contact-list div.contact { - width: 100%; - text-align: left; - background: #ffecce; - border-top: 1px dotted black; - color: inherit; -} - -div.contact-list div.grayed { - color: #444444; - background: #eee; - font-style: italic; -} - -div.contact div.photo { - float: left; -} - -div.contact div.photo img { - width: 60px; - margin-right: 4px; -} - -div.contact div.identity { - float: left; - width: 90%; -} - -div.contact div.nom { - font-weight: bold; -} - -div.contact div.bits { - text-align: right; - float: right; -} - -div.contact div.long { - width: 100%; - clear: both; - background: #fff; - color: inherit; - padding: 1px 0px; -} - - -div.long table { width: 100%; } -div.long td.lt { width: 35%; padding-left: 4px; } -div.long td.rt { width: 65%; } - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -.wizard { - margin-left: -1em; - margin-right: -1em; -} - -.wizard .wiz_header { - height: 32px; - width: 100%; - background: url('../images/skins/wiz_normal.png') top right repeat-x; - margin-bottom: 1em; -} - -.wizard .wiz_header .wiz_tab { - background: url('../images/skins/wiz_normal.png') #aaa top left repeat-x; - height: 100%; - text-align: center; - font-size: 75%; - border-right: 1px solid #888; -} - -.wizard .wiz_header .wiz_tab:hover { - background: url('../images/skins/wiz_hover.png') #777 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header .active, .wizard .wiz_header .active:hover { - background: url('../images/skins/wiz_active.png') #444 top left repeat-x; - color: #fff; -} - -.wizard .wiz_header a { - color: #000; - text-decoration: none; -} - -.wizard .wiz_header a.active { - color: #fff; -} - -.wizard .wiz_content { - margin-left: 1em; - margin-right: 1em; -} - -.flags .texte { - font-size: smaller; - font-weight: bold; - margin-left: -6px; - padding: 0 12px 0 0; -} -.flags img { - padding: 0 6px 0 0; -} - -/******************************************************************************* - 7 fiche.php & fiche_referent.php - [ cas de la fiche ] -*******************************************************************************/ - -em.intitule { - color: purple; - font-size: 90%; -} - -div#body { - color: #000; - background: #fff; - border: 3px solid #000; - - width: 800px; - margin: 7px; -} - -#fiche { - width: 760px; - font-size: 100%; - vertical-align: top; - - background: #f5f8fc; - border: 1px solid #69c; - margin: 20px; -} - -#fiche em { color: purple; } - -#fiche .part { - float: left; - clear: left; - width: 70%; - padding: 0em; - margin: 0em; -} - -#fiche #photo { - float: right; - padding-left: 0; - padding; 0; - margin: 0; - clear: right; - width: 30%; -} - -#fiche #photo img { - width: 100%; -} - -#fiche_identite { - padding: 5px; -} - -#photo { - vertical-align: top; - padding-left: 1em; -} - -#fiche_identite div.civilite { - text-align: center; - font-weight: bold; - width: 80%; - float: left; -} - -#fiche_identite div.maj { - float: left; - width: 20%; - font-size: 80%; - text-align: right; - clear: right; -} - -#fiche_identite div.contact { - clear: both; - margin: 1em; - padding: 1ex; - background: #fff; - border: 1px dotted #69c; -} -#fiche_identite div.email { - clear: left; - float: left; -} -#fiche_identite div.mob { - float: right; - clear: right; - text-align: right; -} - -#fiche_identite div.formation { - margin: 0em 1em; -} - -div.adresse { - min-width: 30%; - padding: 0px; - margin: 0px 2% 2ex 1%; -} - -div.adresse div.titre { color: purple; } - -#fiche .medal_frame { - float: left; - width: 33%; -} - -#fiche .medal_frame img { - float: left: - padding: 0ex 1ex; -} - -#fiche .medal_text { - vertical-align: middle; - font-weight: bold; -} - -/* only for fiche_referent.php*/ - -#fiche_referent{ - padding: 10px; - width: 100%; -} - -#fiche_referent div.rubrique_referent{ - float: left; - width: 31%; - padding: 0px; - margin: 0px 1% 1ex 1%; -} - -#fiche_referent em{color: purple;} -#fiche_referent ul { margin: 0px; padding: 0px 1em; } -#fiche_referent li { font-weight: bold; margin: 0px; padding: 0px; text-align: left; } - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -.phperror { - color: red; - background: white; - margin: 2px auto; - padding: 4px 2px; - border: 1px solid black; - width: 80%; - white-space: pre; -} - -#dev { - width: auto; - text-align: center; - padding: 1px; - - font-family: 'Bauhaus Md BT','Bitstream Vera',sans-serif; - font-size: 10pt; - font-weight: bold; - color: #000; - background: #f5f8fc; -} - -.backtrace div.hide { display: none; } -.backtrace:hover div.hide { display: block } -.backtrace h1 { margin: 0px; } - -#suid { - color: red; - background: #ffc0cb; - width: auto; - font-weight: bold; - text-align: center; -} -#suid a { - color: red; - background: inherit; - text-decoration: none; - display: block; -} -#suid:hover { - color: red; - background: #ffffcb; -} -#suid a:hover { - color: #ff7000; - background: inherit; -} - -table#body { - color: #000; - background: #fff; - border: 3px solid #000; - - width: 900px; - margin: 1em auto; -} - -#body-logo { - text-align: center; - padding: 2em 0em 0em 0em; -} - -#body-top { - text-align: center; - font-size: 94%; - padding: 2em 2em 0em 2em; - padding-bottom: 16px; - font-family: Georgia,serif; -} - -#body-top table { width: 100%; padding: 4px; } -#body-top .date-heure { text-align: left; } -#body-top .inscrits { text-align: right; } - -#body-bottom { text-align: center;} - -#body-menu { - vertical-align: top; - padding: 1em 0em 2em 2em; - border: 0px; - width: 140px; - font-weight: bold; - white-space: nowrap; - line-height: 100%; -} - -#body-menu a { - color: #690; - background: #fff; - border: 1px dotted #fff; - display: block; - padding: 1px 4px; - text-align: left; - font-size: 85%; - font-family: Bitstream Vera Sans,Verdana,sans-serif; - text-decoration: none; -} - -#body-menu a:hover { - color: #690; - background: #eaf2db; - border: 1px dotted #690; -} - -#body-menu .menu_title { - color: #f90; - background: #fff; - border-top: none; - border-bottom: 3px solid #f90; - padding: 1px; - text-transform: uppercase; - text-align: left; - margin: 1ex 0ex; -} - -#content { - width: auto; - font-size: 100%; - vertical-align: top; - - background: #f5f8fc; - border: 1px solid #69c; - line-height:125%; - padding: 0em 1em 1em 1em; - margin: 1em 2em 2em 2em; -} - -#content-margin { width: 2em; } - -#content input { - font-size: 95%; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/print.css b/htdocs/css/print.css deleted file mode 100644 index d548d4a..0000000 --- a/htdocs/css/print.css +++ /dev/null @@ -1,4 +0,0 @@ -#body-menu, #body-top, #body-logo, #body-bottom, #dev, .backtrace, .xdx, .noprint -{ display:none; } - -table#body, img { border:0px; } diff --git a/htdocs/css/sharky.css b/htdocs/css/sharky.css deleted file mode 100644 index be8cd13..0000000 --- a/htdocs/css/sharky.css +++ /dev/null @@ -1,166 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { - background: #99afc1; - color: #000000; -} -fieldset { - border: 1px #305070 solid; - background: #80a0c0; - color: inherit; -} -legend { - border: 1px #305070 solid; - background: #99b9d0; - color: inherit; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 { - color: #ffffff; - background: #657590; - border-top: 1px solid #305070; - border-bottom: 1px solid #305070; - font-family: "Verdana", sans-serif; - font-size: 100%; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background: #80a0c0; - border: 1px solid #305070; - border-collapse: collapse; -} -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.impair , table.bicol tr.impair { background: #80a0c0; } -table.tinybicol tr.pair, table.bicol tr.pair { background: #99b9d0; } -table.tinybicol th, table.bicol th { - background: #305070; - color: #ffffff; -} - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - background: #99b9d0; - border-top: 1px solid #305070; - border-bottom: none; -} - -#skin td { - border-top: none; - border-bottom: 1px solid #305070; - vertical-align: middle; -} - -#skin td.skigauche { - background: #99b9d0; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #80a0c0; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background: #eee; -} - -div.contact div.long { - background: #99b9d0; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-top: 1px solid #305070; - border-right: 1px solid #305070; - border-left: 1px solid #305070; - border-bottom: none; -} - -#body-top { - border-bottom: 1px solid #305070; -} - -#body-bottom { - border-top: 1px solid #305070; -} - -#body-menu { - border-left: 1px solid #305070; - border-right: 1px solid #305070; - background-image: url("../images/skins/sharky_bubbles.png"); - background-position: 0px 100px; - background-repeat: repeat-y; -} - -#body-menu .menu_title { - color : #ffffff; - background: #657590; - border-top: 1px solid #305070; - border-bottom: 1px solid #305070; -} - -#body-menu .menu_item { - padding-left: 4px; - text-align: left; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/spectral.css b/htdocs/css/spectral.css deleted file mode 100644 index 247fffb..0000000 --- a/htdocs/css/spectral.css +++ /dev/null @@ -1,209 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -fieldset { - background-color: #ddffcc; - border: 1px #0067fe solid; - color: inherit; -} - -legend { - border: 1px #0067fe solid; - color: inherit; -} - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:visited, h1 a:active { - color: #999999; - background: inherit; -} - -h1 a:hover { - color: #cccccc; -} - -h1 { - color: #eeeeee; - background-color: #444444; - background-image: url( "../images/skins/spectral_titre.jpg"); - background-repeat: repeat-x; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background: #ccddff; - border: 1px solid #0067fe; - border-collapse: collapse; -} - -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.pair, table.bicol tr.pair { background: #ddffcc; } -table.tinybicol th, table.bicol th { - background-color: #0067fe; -} - -table.tinybicol th a:link, table.tinybicol th a:visited, -table.tinybicol th a:active, table.tinybicol th a:hover, -table.bicol th a:link, table.bicol th a:visited, -table.bicol th a:active, table.bicol th a:hover { - color: #BBF; - background: inherit; -} - - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-top: 1px solid #0067fe; - border-bottom: 1px solid #0067fe; -} - -#skin td { - border-top: 1px solid #0067fe; - border-bottom: 1px solid #0067fe; - background-color: #ddffcc; -} - -#skin td.skigauche { - background-color: #ccddff; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #305070; - background: #ccddff; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background-color: #eee; -} - -div.contact div.long { - background: #ddffcc; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - border-color: #0067fe; -} - -#fiche h2 { - background-color: #0067fe; - color: #fff; - border: none; -} - -#fiche_identite div.contact { - background-color: #ffff77; -} - -#fiche_identite div.maj { - color: #77cc77; -} - -#fiche em, #fiche_referent em { - color: #dd0000; -} - -#photo { - padding: 0em; -} - -#photo img { - padding-bottom: 1em; -} - -#photo div { - padding-left: 1em; - background-color: #ddffcc; -} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-bottom: 1px solid #003399; - border-right: 1px solid #305070; - border-left: none; - border-top: none; -} - -#body-top { - border-bottom: 1px solid #003399; -} - -#body-bottom { - border-top: 1px solid #003399; -} - -#body-menu { - border-right: 1px solid #003399; -} - -#body-menu .menu_title { - color : #000000; - background-color: #3601ff; - background-image: url("../images/skins/spectral_menu.jpg"); - background-repeat: repeat-y; - border-top: 1px solid #003399; - border-bottom: 1px solid #003399; -} - -#body-menu .menu_item { - padding-left: 0px; - text-align: left; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/trapped.css b/htdocs/css/trapped.css deleted file mode 100644 index bf7f9f9..0000000 --- a/htdocs/css/trapped.css +++ /dev/null @@ -1,254 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -a:link, a:visited, a:active { - color: #000000; - background: inherit; -} - -a:hover { color: #47220a; } - -/******************************************************************************* - 1 Styles par défauts - [ balises sans attributs ou classes sans contexte ] -*******************************************************************************/ - -body { - background-color: #ffffff; - background-image: url('../images/skins/trapped_monstre.jpg'); - background-position: left bottom; - background-repeat: no-repeat; - font-family: "Arial", sans-serif; - color: #000000; -} - -fieldset { - background-color: #f2e9e2; - border: 1px #ab8b7d solid; - color: inherit; -} - -legend { - background-color: #e2d9c2; - border: 1px #ab8b7d solid; - color: inherit; -} - - -/******************************************************************************* - 2 Styles

    ,

    , ,
  • - [ styles classiques d'effets de texte ] -*******************************************************************************/ - -h1 a:link, h1 a:visited, h1 a:active { - color: #eeeeee; - background: inherit; -} - -h1 a:hover { color: #e2d9c2; } - -h1 { - color: #ffffff; - background-image: url("../images/skins/trapped_titre.gif"); - background-repeat: no-repeat; - background-color: #200a00; -} - -/******************************************************************************* - 3 Tableaux bicolores + classes utiles - [ Tableaux à lignes alternées, en taille normale, ou tiny ] -*******************************************************************************/ - -table.tinybicol, table.bicol { - background-color: #f2e9e2; - border: 1px solid #200a00; - border-collapse: collapse; -} - -table.tinybicol tr, table.bicol tr { } -table.tinybicol tr.pair, table.bicol tr.pair { background-color: #e2d9c2; } -table.tinybicol th, table.bicol th { - background-color: #291602; -} - -table.tinybicol th a:link, -table.tinybicol th a:visited, -table.tinybicol th a:active, -table.bicol th a:link, -table.bicol th a:visited, -table.bicol th a:active { - color: #eeeeee; -} - -table tinybicol th a:hover, -table.bicol th a:hover { - color: #e2d9c2; -} - -table.tinybicol td, table.bicol td { color: #000000; } -table - -/******************************************************************************* - 4 Tableau de choix de skins - [ Styles pour les tableaux de types de ceux des skins ] -*******************************************************************************/ - -#skin { - border-top: 1px solid #000000; - border-bottom: 1px solid #000000; -} - -#skin td { - border-top: 1px solid #000000; - border-bottom: 1px solid #000000; - background-color: #f2e9e2; -} - -#skin td.skigauche { - background-color: #e2d9c2; -} - -/******************************************************************************* - 5 Contacts - [ Styles liés à l'affichage de contacts ] -*******************************************************************************/ - -div.contact-list div.contact { - border-top: 1px solid #000000; - background: #f2e9e2; - color: inherit; -} - -div.contact-list div.grayed { - color: #444; - font-style: italic; - background-color: #eee; -} - -div.contact div.long { - background: #e2d9c2; - color: inherit; -} - -/******************************************************************************* - 6 Profil - [ onglets des profils ] -*******************************************************************************/ - -/******************************************************************************* - 7 fiche.php - [ cas de la fiche ] -*******************************************************************************/ - -#fiche { - border: 1px solid #200a00; -} - -#fiche em { color: #5a412f; } - -#fiche h2 { - color: #7a614f; - background-color: #f2e9e2; - border-top: 1px solid #ab8b7d; - border-bottom: 1px solid #ab8b7d; - border-right: 1px solid #ab8b7d; -} - -#fiche_identite { - padding: 0em; -} - -#photo { - padding-left: 0em; -} -#photo div { - padding-top: 1em; - padding-left: 1em; -} - -#fiche_identite div.civilite { - text-align: center; - font-weight: bold; - width: 100%; - background-color: #200a00; - color: #fff; -} - -#fiche_identite div.maj { - float: right; - font-size: 60%; - width: 20%; - text-align: right; -} - -#fiche_identite div.contact { - background-color: #f2e9e2; - border: 1px dotted #ab8b7d; -} - -/* only for fiche_referent.php*/ - -#fiche_referent em{color: #5a412f;} - -/******************************************************************************* - A SKIN - [ choix de classes faites par le skinneur -*******************************************************************************/ - -#body-logo { - border-top: none; - border-bottom: 1px solid #777777; - border-right: 1px solid #777777; - border-left: none; - vertical-align: middle; -} - -#body-top { - border-bottom: 1px solid #777777; -} - -#body-bottom { - border-top: 1px solid #777777; - font-family: "helvetica", sans-serif; - font-size: x-small; -} - -#body-menu { - font-family: "helvetica", sans-serif; - font-weight: bold; - font-size: smaller; - border-right: 1px solid #777777; -} - -#body-menu .menu_title { - color : #7a614f; - background-color: #F2e9e2; - background-image: url("../images/skins/trapped_menu.jpg"); - border-top: 1px solid #ab8b7d; - border-bottom: 1px solid #ab8b7d; - font-size: smaller; -} - -#body-menu .menu_item { - border-right: none; - font-size: smaller; -} - -/* vim: set et ts=4 sts=4 sw=4: */ diff --git a/htdocs/css/wiki.css b/htdocs/css/wiki.css deleted file mode 100644 index 89fc8e8..0000000 --- a/htdocs/css/wiki.css +++ /dev/null @@ -1,84 +0,0 @@ -table.wiki { - margin-left: auto; - margin-right: auto; - border: 1px dotted gray; -} - -table.wiki td { - padding: 2px 1em; - vertical-align: middle; - text-align: center; -} - -table.wiki select { - font-size: 80%; -} - -div.frame br { - height: 0px; - clear: both; -} - -table.quickref { - margin-top: 1em; - padding: 0px; - border: 1px dotted #aaaaaa; - font-size: 95%; -} - -table.quickref tr { - padding: 0px; - margin: 0px; -} - -table.quickref td { - margin: 0px; - padding: 4px; - border-top: 1px dotted #aaaaaa; -} - -#text { - width: 800px; -} - -.diffbox { - border: 1px #999999 solid; - margin-top: 1.33em; -} -.diffauthor { - font-weight: bold; -} -.diffchangesum { - font-weight: bold; -} -.difftime { - font-size: 66%; - background-color: #dddddd; -} -.difftype { - clear: both; - font-size: 66%; - font-weight: bold; -} -.diffadd { - border-left: 5px #99ff99 solid; - padding-left: 5px; -} -.diffdel { - border-left: 5px #ffff99 solid; - padding-left: 5px; -} -.diffrestore { - clear: both; - font-size: 66%; - margin: 1.5em 0px; -} -a.varlink { - text-decoration: none; -} -a.createlink { - font-size: smaller; - vertical-align: super; - line-height: normal; - text-decoration: none; -} diff --git a/htdocs/css/xnet.css b/htdocs/css/xnet.css deleted file mode 100644 index 47029e8..0000000 --- a/htdocs/css/xnet.css +++ /dev/null @@ -1,446 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -body { - background-color: #F2E9D0; - margin-left: 0; - margin-top: 0; - color: #505050; - border-top: 1px; -} - -table, body { - font-size: 10pt; - font-family: "Bitstream vera sans","Verdana",sans-serif; -} - -input,textarea,select,option { - font-size: 9pt; -} - -tt,pre { - font-size: 10pt; -} - -fieldset { - border: 1px gray solid; - - margin-top: 1em; - margin-bottom: 1em; -} - -legend { - border: 1px gray solid; - background: #e9e0aa; - color: inherit; - - padding: 2px 4px; -} - -a, a:link, a:visited { text-decoration: none ; color: #5c81aa; } - -a img { border: none; } -img { vertical-align: middle; } -td { vertical-align: top; } - -h1 { font-size: 130%; } -h2 { font-size: 115%; } - -.smaller { - font-size: smaller; - font-style: italic; -} - -input.error, textarea.error { - background-color: #faa; -} - -input.valid, textarea.valid { - background-color: #afa; -} - -input.warning, textarea.warning { - background-color: #fda; -} - - -/*************************************************************************** - * DEBUG - ***************************************************************************/ - -#dev { - width: 100%; - text-align: center; - padding: 1px; - - font-size: 10pt; - font-weight: bold; -} - -.backtrace div.hide { display: none; } -.backtrace:hover div.hide { display: block } -.backtrace h1 { margin: 0px; } - -/*************************************************************************** - * LAYOUT - ***************************************************************************/ - -table#layout { - width: 765px; - margin-left: auto; - margin-right: auto; -} - -#top { - width: 100%; -} - -#top td { - padding: 0; - margin: 0; - vertical-align: middle; -} - -#top td.logo { - text-align: right; - background: url('../images/bandeau.jpg') bottom left repeat-x; -} - -td#credits { - text-align: center; - font-size: 75%; -} - -td#perso div { - font-weight: bold; - font-size: 90%; - padding: 2px 1em; -} - -td#perso .gp { - display: block; - margin: 2px 1em; - font-weight: bold; - font-size: 85%; - float: left; - text-align: center; -} - -td#search { - text-align: right; - width: 300px; -} - -#content { - width: 100%; -} - -td#body { - vertical-align: top; - padding-left: 1em; - padding-bottom: 1em; -} - -td#menu { - width: 130px; - padding-right: 0; - padding-top: 0.5em; - font-family: "Trebuchet MS", "Arial",sans-serif; - font-weight: bold; -} - -#menu h1 { - padding: 0.3em 0em 0.4em 0em; - margin-top: 0.7em; - margin-bottom: 0.3em; - font-size: 89%; - text-align: center; - width: 130px; - background: url('../images/barre_small.png') bottom left no-repeat; - background-color: #d0c198; -} - -#menu a, #menu form { - display: block; - padding: 0.2em 0em 0.2em 15px; - font-size: 89%; - background: url('../images/puce.png') no-repeat center left; -} - -/*************************************************************************** - * CLASSES - ***************************************************************************/ - -.errors { - margin-top: 10px; - border: 1px solid #f00; - background-color: #faa; - width: 98%; -} - -.warnings { - margin-top: 10px; - border: 1px solid #dc0; - background-color: #ee7; - width: 98%; -} - -.success { - margin-top: 10px; - border: 1px solid #0d2; - background-color: #7fa; - width: 98%; -} - -.erreur { color: red !important; } -.error { color: red !important; } -.center { text-align: center; } -.right { text-align: right; } - -.descr { - text-align: justify; - font-size: 90%; -} -p.descr { - padding-left: 7px; - padding-right: 7px; -} - -table { border-collapse: collapse; } - -table.links { - width: 100%; - margin: 0.4em 0em; -} - -table.links td { - padding: 0em 0.5em; -} - -table.links a { - background: url('../images/puce.png') no-repeat center left; - padding-left: 15px; - font-weight: bold; -} - -table td.titre { - font-weight: bold; - white-space: nowrap; -} - -table.tiny, table.tinybicol { - width: 70%; - margin-left: 15%; - border: 2px solid gray; - font-size: 85%; -} -table.large, table.bicol { - width: 96%; - margin-left: 2%; - border: 2px solid gray; - font-size: 85%; -} - -table.tiny td, table.tinybicol td, table.large td, table.bicol td { - border: 1px solid gray; - padding: 2px 4px; -} -table.tiny th, table.tinybicol th, table.large th, table.bicol th { - border: 1px solid gray; - border-top-width: 2px; - border-bottom-width: 2px; - padding: 2px; -} - -table.tinybicol td, table.bicol td { - border-top: none; - border-bottom: none; -} - -table.tinybicol .pair, table.bicol .pair { - background-color: #e9e0aa; -} - -table.normal td { border: none; } - -th { background: #d0c198; } -th.grayed { - background: #d0cbb0; - color: #666; -} - -a.popup2 { - color: #4c618a; - background-color: inherit; -} - -/*************************************************************************** - * Special pages - ***************************************************************************/ - -table#liste td.fourth { - width: 25%; -} - -table#liste td.listec a { - display: block; - text-align: center; -} - -table#liste td.liste a { - display: block; - text-align: right; -} - -table#liste td.liste a.cat { - background: #d0c198; - margin: 15px 0px 10px 0px; - padding: 3px; - text-align: center; - font-weight: bold; - font-size: 90%; -} - -table#liste td.liste a:hover, table#liste td.listec a:hover { - background: #d0c198; -} - -#wikitext { - text-align: justify; - font-size: 90%; -} - -#wikitext p { - padding-left: 7px; -} - -/*************************************************************************** - ***************************************************************************/ - -div.cat { - background: #d0c198; - text-align: center; - font-weight: bold; - font-size: 90%; - padding: 2px; - width: 180px; - margin: 4px 0px; -} - -div.sel { background-color: #5c81aa; color: #d0c198; } -div.sel a { color: #d0c198; } - -td.oval, td.oval2 { - color: #d0c198; - height: 50px; - text-align: center; - vertical-align: middle !important; - font-weight: bold; -} -td.oval { - background: url("../images/oval.png") no-repeat top center; - width: 130px; - padding: 0px 35px; -} -td.oval2 { - background: url("../images/oval2.png") no-repeat top center; - width: 160px; - padding: 0px 12px; - -} - -.oval a, .oval2 a { color: #d0c198; } -.oval a.has_site { color: white; } -.jone a { color: #FF9; } -.rouje a { color: #D88; } -.jone a.has_site { color: #FE0; } -.rouje a.has_site { color: #D00; } - -#content td.oval, #content td.oval2 { - font-size: 90%; - font-family: "Trebuchet MS", sans-serif; - letter-spacing: -0.5px; -} - -div.backtotop { - font-size: small; - text-align: center; - padding-top: 2em; -} - -div.screenshot { - text-align: center; -} - -div.screenshot img { - border: 1px solid #777; -} - -/*************************************************************************** - ***************************************************************************/ - -td.infos { - height: 30px; - text-align: center; - font-family: "Bitstream Vera Sans","Arial",sans-serif; - color: #505050; -} - -/*************************************************************************** - ***************************************************************************/ - -.wizard { - margin-top: 0px; - margin-left: -1em; -} - -.wizard .wiz_header { - height: 30px; - width: 635px; - padding: 0 2px; - background: url('../images/skins/wiz_xnet_background.png') bottom left no-repeat; - margin-bottom: 1em; -} - -.wizard .wiz_header .wiz_tab { - height: 100%; - text-align: center; - font-size: 75%; -} - -.wizard .wiz_header .wiz_tab:hover { - color: #5c81aa; - font-weight: bold; -} - -.wizard .wiz_header .active, .wizard .wiz_header .active:hover { -} - -.wizard .wiz_header a { - color: #000; - text-decoration: none; - margin-top: 2px; - vertical-align: bottom; -} - -.wizard .wiz_header a.active { - font-weight: bold; -} - diff --git a/htdocs/images/.gitignore b/htdocs/images/.gitignore deleted file mode 100644 index e2ad786..0000000 --- a/htdocs/images/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Hide banana stuff -/banana diff --git a/htdocs/images/L.gif b/htdocs/images/L.gif deleted file mode 100644 index 171dcb625bd0365954665581d170a3211df7cbfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZ?wbhEHb0r5dH3`|lz%*$u(e#_U>;gy|srO&>H R;n9o6XPwJl%@Sj<1^_oy6z2c{ diff --git a/htdocs/images/T.gif b/htdocs/images/T.gif deleted file mode 100644 index cf2335f6da2d4f18f83fbb5b76205a010d070533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71 zcmZ?wbhEHb0r5dH3`}x8%*$u(e#_U>;gy|srO&>H V;gLlpPexqCtcCA>>9I0c0|0yV6$AhP diff --git a/htdocs/images/asso-montants.png b/htdocs/images/asso-montants.png deleted file mode 100644 index 3838d888a616d31a7fe3e8104d0a94bb6bb8c0f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11699 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 diff --git a/htdocs/images/ax_mail_header.jpg b/htdocs/images/ax_mail_header.jpg deleted file mode 100644 index ab98f38e5ea7c83d03cf5759627a931563e22d42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21149 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 Is>enD*&cES-~a#s diff --git a/htdocs/images/bandeau.jpg b/htdocs/images/bandeau.jpg deleted file mode 100644 index 1f83ffe541627e5cda5ad432f7e32245d4b5fff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 zcmdT^TTmNi6h8l6a@hpfgoM)a(B+n;T(TrwG#LWJB^1iU0<9K(Y6uIgA(tjw6PWRV zidOsL)VqDaDfLo2<2b0Tw})CqMPD4ew1vKiTCG;c)=OJE%KC2_QW#su`qn@DPtJcX z-}%n|XOD7H`4ZSo?Vas_5P}Z;17(q%@Ft}}0G|)a0f-|2svgktzjCdpB``Keqa&iv z9}6TN+rqmj*KIkTB-skBwL-0)In&=jUkdX(hCtJMQgM=J!3#X zUa@7&D~v1sVEYWicl z^i1BG{I%;!ZG72=^4hxkTW)o^Tid+t8#_8TZP|MJ9ozcuyelvu4h{`VcgN+O_au^| zWA{zm|G@4CAKLTCqmMoQ#FI}wy>IHkv(G*M!oe30z4Gd7hmXAe#+z@w``*m^AAC6b z(Z`>D_W2jbPn?`zSp4eiZ%%*v-I?!yIRDG9zx{sU;-x<>n=oa9qDV@sQbt4qZ_-53 zg$|9mxku~Ykz3>(*I8Qj?w>xUFRtl5XYG&8F?l7mi>2pP)+y5ejq|SmMLNSdLs@wT zOgh*OEQyMMFd@=}lm#%72p>ojG{KJw%>8vnfsGem+Ez135D${@3+kER_C zowk0W%ma%$p@NLeqO!CP0kB&Fe8Fme6PEx;J5X3mYhV_4&a!Mn zWI9TN-B)BuwU%Z@6uTm7`}LxTtH}8Tv7CjNRMC`0G&3yAQMVw3<97c*q+hfLA|WB^ zj|vWZwEzuG$*4aN6lJbo9FoEw{^z%k@|-l_;kVWKs(sN`aaigYi-}vtZrd6d3kF;R zd{bjX(wz)NL!#{GlA)1s+@19BDQq{ERkgr#DHl2D;ro2uoE(Xa1SOes+FezyN^UUb z4~dCLEXX&UfkM7MeNyJ=KxJE~V@DCl%DyV5zq{URO=y27zej)Qh@gZ{~Vi;dT0>5uO z2U~$82=&2>!Vj%e=LyYdwHlpKos5jZkd0_M#Z&Yn2;3=* z*-JcqUD+>lu?kulFY1k&1r(Akag8W(&d<$F%`0JWE=o--Nlj5G&n(GM2+2rQaQE~L zc%P!02UIx2)5S5Q;?~<+8w(E`2(TPb<_P-K^K1P9SBv6kHOB@%k(F$3+~ng+jK80L zfByR>9Y%&3H)`*jdTM5CuFhj&ICHc8*o)*Zvr=x)zx^-bwA4`!h8aHZ!>#+T_03AT zFModh^(gb53=EgIE?TYYxj$+mD}%$NSx;>Gtv4=UWDu^>&v-0n>S_J|*VUS6W(MJ3 kKepAyJ25h(y>t67w%+mUBbE!tfNo^)boFyt=akR{0CTo#%K!iX diff --git a/htdocs/images/barre_small.png b/htdocs/images/barre_small.png deleted file mode 100644 index f57ea4a3544aad5e65f9aace69deb66d1154f606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0y~yU~B=hSvZ)0B%{Rr7eI=$z$3Dlfq`2Hgc&d0t@{HM zlr3?MC~?lu%}vcKVQ?-=O)N=GQ7F$W$xsN%NL6t6^bL5QqM8R(s0dORoS#-wo>-L1 z;9itikdc|}oS#>gT2zu+q@dxMSCX2eS>FCj5~$eE)5S5QV$PfEyEz#Y1sDQ<>$?cB zB)k4mN|UN!o!e-eWAq_QLLzj}yNe7B3#7J4ot!sy|6K-$Bax|L?mY|~)rLuz89H{) h{>IF}@c%zEgP!GSBlZt>!+<6;c)I$ztaD0e0svFbO_cxu diff --git a/htdocs/images/carre.jpg b/htdocs/images/carre.jpg deleted file mode 100644 index b0b3edf0eec3336cccad7b5456107a60369572c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15656 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 D#ME%k diff --git a/htdocs/images/dflt_carre.jpg b/htdocs/images/dflt_carre.jpg deleted file mode 100644 index 29d46060268492a933b20d188ce41b1262ddacde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6963 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 diff --git a/htdocs/images/favicon.ico b/htdocs/images/favicon.ico deleted file mode 100755 index 9f7e6bcca76adb4c837ce47d613be224d0ce97b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmeIyYfzL`9LMpmnT1`HBD2y&D+?_QD~*)o5e4MVatFl_u&`FUC^uPlUAd!xfh4!( zvcLih3xc>RK@>BfLd=9UBsq&Tj*3N?&6G1uw4bY6E(al__GJ;*L(`PL)up+CpuL2X#X7-d*TYJurxx zLFFl)QBbAv!l?0}DbXn$PbGXp7 zkME4}3^Zx6v?MXyoQ9<%f#G&F-*>3F+?mWk>k%%RwTufBr!`ER(J+20oxYAT(NE+0 z=W4EYX&F9!lq=mCT)QTIDcWJ`1e$`eaZvoN({Ll=j{wJb<9rMb;9@lStmbwD(12IUW?Ta z9!Y8Sm?KW=vpf8~rR8ytCn}k1ZYF2{YK5P)CNOzHaY6cX@04$T7B>(nJ_i iVtE_ZzOr=L3(rIxdL--BE&nWclTWbc=8gY#8~hDIZI1u| diff --git a/htdocs/images/favicon.png b/htdocs/images/favicon.png deleted file mode 100644 index 0e4b1d1c6fcb88c7ef089c0ec72f60cc73c18a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmV-K1H1f*P)Ra6wt zBokZ$SN<|7CF3lr$FxX9izKwDKJZ;5X8Y`U^P8UD%$_?>#57f*^zS;N>m$sL)bz0_ zW1P|9SZ7Z+HLKqBbB^RK*tlcAW%yfHLq*0i?;jz~5~FOc?cSAD#TRStJX^ec#kMWG zt)oqQJO%G+-!}NG5%KE#NM(7s0svA9!RXAaDVO$aJbiRuBHVWDz`@Bjvs1y+2M?r_ z=dPD7%v;~y5z<+l0)UXhpqN}~t``q)4@g-(2q%)jtwIz)1Mv62k*%J4U&Q@;WkL#) zmE+-Dnv<*)V-ggcwz{{Y|6^eI{I!a@maub_BX@$~?uY(YwT;10yUD0f0Ej2VIJ>>_ z#-;qiy`8?tr*^K*o-ynFhj#%EnG~;-)injftzSBllkHUM3MDFI=yE!O^{=htGvdzd zHYwMw&9mE`nG}6r`@Ru-m9KuR!)E1OMm9u8D(uYJ%@%+&-97E$-tbU=5=;=p#JC^; z(^8X*-*o9(1PKPKD}FFS+naooa1#K$2=uw#$^O?`3SwGn+R$LQvL$RqtR9drU5<{< zuH567Lyfg~>W;75|K!l&1Lfsx5l+YDu`WwWi9~Z<$o~xzCfI<6Syu<%UAe1r`+D zvN=<2_%q*=>#O-%_qI`s3|Y)T2uUy|xzU}Ov0(0OqC#!`r(mEN3yMk@GazyySWM>z zqfjYTPyql5l5?RaxD*69S5#>+87Tlz8V3MEP*v$a-=>66LI42Zcf&7NY*jB+qP`3O O0000g8?g`)O{rKwQHhF3fZCKOK4>wOwpi(u z3@X0p6t&<3Q71|itQbKc7F(6#1MH|IAdetZK$0AJZ8vCj+P~WVc6aW#x4+%{e!hFK z4R(O>!e~J>z%UHNpa$RocY zV3?y*P)C8&a7WOoRGh}3GZ+jyoz7sgSq!EVlTK&3u$<;335{wwCkxlNt5h(2N2I>xjt_mEvh$Cy5m$~tab%i#3T^|CyclgC8QNnXA) z{QLuE&YlxCciwyR7r!4B&5scXmwyzWkho%HQp$$ZjcJnfjLloJw{F|MBj?MnzRutM z&7Ok2`}P+fIC$vrk>fv>m7h3y>U710i&d&im#b^8)Zb`mY|`BPx%s!&d-oqaY-@j{ z)pd3~>+b38(+>^57%>=4FIa;o!n3+t9!{RNB;8bhkyz z80)eoObgk?bdM}LrmSQ6gvJeW*UMU*Jf_dq`VKkJ#>oC1Sl<64dkyx6>k)9qF?4x2 z2N1v((E7Qn*0yS?B~?)plwAUWyV^GAysNEnXE+3@$?|$aCm^;#5M*sOm(-bitW(S; z^Br=325;0!INE&jXcjTF1cKHiLU#~?6RHuh*_z&wA-XiRFXc8vq;UN0^L(v znzc${-;p?O#=#5o)8oVZj~6st9C}jVe|~M}!W+gYQtP+N&^wYViyg^S8{!R3igWV% zw=4M-E9@rGPY@^$^}ooN)RiXyK} z8&XY{=q#Henh0d9Ah5Lc;|=$vK9`k>Uk`{4@kY(_*1@e$wSHgN+bj6?eZhZhIKR3l zTp-cL3t$v2lmSEBwZ&HwJV9wDl>~9D0>XS z8RR>EP3?~ABiHWrmB)-Z-yvk-&x+vzb~SK$dJSKKLIVOcntsm diff --git a/htdocs/images/flags/AD.gif b/htdocs/images/flags/AD.gif deleted file mode 100644 index 57b499733f149e68f5b20495eac12252c14c6fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 diff --git a/htdocs/images/flags/AE.gif b/htdocs/images/flags/AE.gif deleted file mode 100644 index 78d15b67dcba8937b13dd3a4514037af411e38b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{#{)FXaLsM)&N)l07n4){QUF)02US&L_|bQwM{!a zJ1#CRQnykxG&K7~MF4vM{#jZ7dwc$OclrPT?f?J)bO8HGNevAR^78Wg`}@(+(fm(O z`aM1TR8;{7Oq@ zz-9buYW-7FAt514OG{zCU`Vq_{&I8u008sz^ZNSw`1ttw`T6(v_w@Ai_4W1k_V)h( z00000A^8LV00000EC2ui01yBR000JtK%dZ8dps(YfO5bj_#zRHBt&hsWTg=!;f$OB z5N%?XN|`>NnbQOA6bhMJ4yWt!dV-n+(jmd+bap#Dc{DE@EOB#nJUccj8Z|T<77l=n zju<-{6E2k;i-I;77&aiC4jdc}3nDNu2L~4y3qJ-YCo3H&F$f3>3Jt8a2E`Nn2%x z*e)ma?d|GgUfMJ*;#5wpU2^H5pXC4me0OEedwMwl0Kvb2w=Fw?004up-P^%bgn)75 znVGe-Ym9$Uj(dB5Z#G7R%u$crhciH4k<0CYeBZx4Wny4moZreMBhqK1`Xu~6I^ zV1mz)AV^<}%Vie>(<}uCucDHiBm%+1HK+W={*92I(D{i^@+;so| zRIAVK01}EvipKwjichuW0048F%I#yL(PX{m{gRegoX&i(*{xWCU7*mff}Com)BpfG zGK0ndBboN*r#gkiP?gI^k;y)Z$NId%)XLm&snlkm&w;bs?}3Qrlb!#?%J_(o@AUcq zt+48#s{g94G=IbS+~ro4$6B7xk(<4+kg5PKqAh^LT86lYsLr0T(npcU-;|;E;+Dy5 ziPBVUA^8LV00000EC2ui01yBR000J#K*Hg0xf~k4PKUvSI1#bMNU%^vEEYpaqme*< zFN$NlLYXR>EJmUrkVX_r%T=2NScL*>rZ^OIJSh?A6Z8;wq83-~oAR!(A z2_69oHYXAoGZls*A`_+$AR8SPprQjIq#_RwHv_5`p`#5VA21vo2qCHlT3w&HAg?LB(9j#x(?I|`wXLLC diff --git a/htdocs/images/flags/AL.gif b/htdocs/images/flags/AL.gif deleted file mode 100644 index c44fe0a0aec913b8667d8d4f97acb82bb5b33db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmZ?wbhEHb6kyz3*}0WNQQnvVdvF@dpO9#693UzcW`aWZ|>R$Cbv9v>Zj zRafpT1H&yhiwBXux0xBPnW*0JvAA zyIK1a6Z5xF`pJP4pI&E-JAhTIwFxZ(2F);`!Bq4Wte13okgB~V^5PN-pf{h*p zAteG86(=ezEhsMpAT$_0Jer-Kp`)c3rxy$`FghC>92^n5A|eY59}El+!~wgvzV&T?|aJ3FiQL`3`h z`_}*fy1U{404(+O_3Z!vAt9Xr0Cq%0u~byK{7g*uFfjHiD)l5J`9D8TPqy~<_WMUi z;o;%v=jYws-QVBe<>lq$Dk%YNlCM|w%ym)?La`QHa4b+iq7-%^Y{1n`1ttC%gg%u`ttJf`T6<&{{Hdt z@&Et-A^8LV00000EC2ui01yBR000J!K%Y=}dKe#_4k*O=_#~nZLK!| diff --git a/htdocs/images/flags/AO.gif b/htdocs/images/flags/AO.gif deleted file mode 100644 index 3011b19a65697080a286c8fda557519314e3a55b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h{daejx%Kd>H3V7a`)X?RxJUHl;_~6!yw(2~Y3=-p ziR&aJEO_%&l>F<~)B5h~`jKb=Ez|nw=J7Z=02Ih~qwCTD0Q<;m_q|j`iuwNY^7Dp9 z=^GpPU0wPE1NpUK_l;JKvhwamM*ftPqr~~|buzBZ{OdV6^n6GC78Y=x>G+vk^N~Zf z(f$4K@9|JieyHw*uJE0|_wFt%07l>Su1=`O`}0LaJAw7_iaPh%)8^02=+VvHyS2xg zkzt+xA^8LV00000EC2ui01yBR000J#z@JdqXk;=t1|yLe41S0xqSZ2)Y$Ta15THpk zV3+GbmPibSgQ1ri0p1tLY6U9XCX<(?{U$&@7#KAucrzjv9&Q8|A1fFeECK>E3x^&G z1Oy!*7zG6aC6pW|h?pH6gBv*|0t+0Y7CH}SX$Q6rxI8-!J`5yTTp=MbFfbJrDk>C9 PO#?K~5z!RW(?I|`q+h7u diff --git a/htdocs/images/flags/AR.gif b/htdocs/images/flags/AR.gif deleted file mode 100644 index a9f71f7d6ded61642de6f823046cc62c7e3830e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hHn;eb+5GqBX{zG>X~pw=%k)gc|Ao`~`SG%K%Jl$* z-r4N-Dzo>~)6@R`{sEio;qv?T_VyE}@Al(K)#>w#)Ax+l{F&PMqu%_G)%W`P`sMci z^YioH@%e+!^Z<D}-6A+PhVGu49(E0Y`USYuTe9rimz0Ujl`@h=fpTgCg+xq(Jb)Mb)3#0Az_4WMx z{PgtnA^8LV00000EC2ui01yBR000Jyz?WfY2pItY1_Py%s0^uSYCy%5cDc)H^#~0> z;6T7)IUHiNMCH+PZQi31q|-T(77G&2&ge>OT369R@m9Ep65 z8VE8n2!|XTKMgl9a&&fh6sf5-3_E6M39$sTGcySa3?*4x85I>Q9v%h53II$JJP*nu MA|D?L&>uknJCLTx^#A|> diff --git a/htdocs/images/flags/AS.gif b/htdocs/images/flags/AS.gif deleted file mode 100644 index d776ec2711bcd6ff8f0451188b0d3c739c309e70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hRaEwDEp<;cvh zmg&=GczFE-1N~@c`kMd%Y#p=i+=i}ivibS>_Vx7WjD6^Ue7Tf#+fG92l$7$Pp!)If z0RZgw%*BU?{gY2F>dj8UqI{sBo&W%!m2%IZQ?T#W%Cmn}&{}ieU|-a1ec)YD`Q+Tb z004VpPuE2}qKtt60O91|;+lr(@aV!rLGuFu0DJ%fyH|#HRm|hs(;*@M@Z_)f@#z2n z`4JKSA^8LV00000EC2ui01yBR000Jxz};{7Yxs`H(XG|`1)fiX)Ii8&G#!|e!F4z! zs)6NTQe0eH21#YHXnGUH=@Sw;32hB)!k1s@2oM==8+?2b6bUi{bsRGi76TO>6cZFY z5eXqWB0dHV0691*D-|Xb3m_m7ody7}H8l_gFBlaG2{fG^9$j9qB`7Nc2c1V8$jC9v LF(WoN4?zGsMO>ji diff --git a/htdocs/images/flags/AT.gif b/htdocs/images/flags/AT.gif deleted file mode 100644 index 87e1217365c869c8bf2fa6a35cd597108dbe47c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h`uh6#`1tGq0P_F<`ZYEEqN4V4a`#J1_V)JrL`3v6 zGxFNCd z0RI30A^8LV00000EC2ui01yBR000Jtz@PBvEBa2zfl?s&HJ+0Rj=?aEP&Ce=+0bZe zF&it9SP&GXEujEwK_IJ7NOm)nGM`5;mGba-F8}}m0T&lN4j_AefP#bwhKP!cfr9}E z4i_7UGdTqj5pi>McNiElDkmmoW+XZ;6%``07O7V>9a<6+6ch>y78W~715Cyb$SNv3 H%s~J<(#ocW diff --git a/htdocs/images/flags/AU.gif b/htdocs/images/flags/AU.gif deleted file mode 100644 index 5269c6a0e0a2c5ff0554266d9fdb854c5e8c2807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5hthUorYNpAFmH;h|$9IETa;%q+vf+)8=jrf|D@Z|H zod5tb002@WL5j)H;s5{=<7sHLz0`J#yGmoCo2knH0%eb#!f1W6HBp!Grld`4sybGg zi*}uDfwPsQ#=67WMPHtAg}5+Hlu2TrK3SXAW@_hgZ|Ka?-NVdvJ!zq$!lkm%e~Gu{ z-R7UU+uf|Qvx1nUkgSJ)r?+v3=()aYMRnfc>)>y2ws2+)GW3#LM5@q^ivc z3EsHAA^8LV00000EC2ui01yBR000J;K!R+LNDNZ5ijpy6EEc<5>(xW)0Fuy!=U5dM zz5@;dG2Kc9&Ex{W1QrQe28YWWU;)a6gaLFGEGH@g0xmx>6dxZL77-B(H3kPCM3J(k+1vUs2B&Z?{ARY}Qx>_DQ Yq5-4|5jGYZx(rTFPY>D;4ckEgI~~rLTmS$7 diff --git a/htdocs/images/flags/AW.gif b/htdocs/images/flags/AW.gif deleted file mode 100644 index 27fdb4d13906897b572573cf0364bb72d800054b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hVy@I}wAfRm&H!$=eY@L?#Ns-Z#*@h7^4~=A+$(ao z+WhWz06LcW*Z@PD$p9&oS*g-$v)5g!(faFb`{`8xSE~8uOZMVC0DQavW3K>8n)&Ht z4Ti$^=34gSQsQoIPNB?(!QOVd+upGNg1_EXrq4;9%K%uj0CTkyip2m(sT+~W^x{gM z#NB4F)enlq06n7UiHUr_;Bd9rXs^>~vDg3~h5PDU27$ly-!xdL&>@k>Tc^(eGL-k@ zLtd-XA^8LV00000EC2ui01yBR000Jxz+GyU;&5;n3<@>KWGb0gD|V&_xBzzL_Kr{{KP*w!!KXxD{01P+XD|HEL{k zjt)FM4GT9E6c!df7Z*7Rs0bqiB$aC=m<|TB0ydo!6B`>H9UdMmEC|A@87C(dDk?BA L3_TCe&p`k?K;@jA diff --git a/htdocs/images/flags/AX.gif b/htdocs/images/flags/AX.gif deleted file mode 100644 index 0ceb6849f49d128216572e9fa7d9b6318090c31b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h?7K+=N~&j+%0+m&{TK{}s@VA2hVsK$H*K~jXt|NH z*!$9ZbezokXJve&((W`Y_FGi|B$ogHY}Rc6>$pGw08Ri6i#&3*p1k7uuoGU5$|z#4 z05+msio*PRbWwx8{gjVZg~j`IZy#d4OMbrm+m-ZEN$tT}^TuWQ#Bcb`Z1>`#>&s@^ z003f-#r)x&X_C?H(Rm(Qt;<;e^k`r3(rfm*VENB=?Mg!PNkdP8!|Aa!@k2cHz9{g% zPS1@1A^8LV00000EC2ui01yBR000J+z{F_SBV+;r4kr?^I1`xY3RF@Q3JwQDAdrkO zSA%E4fC)4q9Z4gBhDEontMefZI+EVYU|2L#DkujBJ^&Oa69gb0A`J}?5GFZ150yAA z86^uhDiAh8Z0J0uLubnGBOtx99ax8G$$0b#*@te diff --git a/htdocs/images/flags/AZ.gif b/htdocs/images/flags/AZ.gif deleted file mode 100644 index d771618498ded597d5d95979e455fa797e77c0cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hG_KcFw{-xD#p8>NNwwNmx!VAJ0NiwR0Biu&Vqwip zOaM;+E~Zu5Yiu^ETmW~t(_38SmzV%D07tWGlK=qTdwV^wV#`ED^V-|$xVX?#Q2=DD zSH9tA!QLC9M*vu;a>n9b!Q*<$8VuqG3ax&5B2k|~b7DarE_DPRAqW#ad>9cw5)Cyk1OyBqhCC;V zAsIZ4kpK)Ih8>tVHVYdRF#s~32o@U=A*2fn9u=so3#}U!23?pSJP-}DtrkyEPzcHn J2M)?X06XGIopAsF diff --git a/htdocs/images/flags/BB.gif b/htdocs/images/flags/BB.gif deleted file mode 100644 index b7d08e57e3686b1fcec0bf4668fd99ffa8bcedb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h001id$12hmiRI diff --git a/htdocs/images/flags/BD.gif b/htdocs/images/flags/BD.gif deleted file mode 100644 index 0fd27ecabe8d3014611684d8d81a1c6a8529fce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmZ?wbhEHb6kyB6foGBf_Bm?D%#Qiu>wVkbDPVFy-ika1 zX9gfp{K*2M7<51c$WIJxZ4UD_jU#(5bnG@?xbvhkx3Yz_p}ajOznr?2L~$dpks%9PyRABpNuLt0 zm@x~7tUWs;4}+)%_iQmeRSsc=MIsFHY(l1Ubk+(BGcAg*v01u>ErV&V7pu>y)2AI7 FtO3oAcfkMv diff --git a/htdocs/images/flags/BE.gif b/htdocs/images/flags/BE.gif deleted file mode 100644 index ae09bfbe149911d7877616273c87935511426dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hsb-^(-t(N=ow_9P#e}`}=eD?6 z@&Eu-R8;%>M_5@|_xCUM_9{9$I{f@h_4Oo0MMeGT0QvJh-_Zc{?K$}JHsRv{)!_j4 zH#bjDPyPK-`S$?N+W`0XF!|^JKtDhG_F(+{W%TVI(cb{u-2kNk0Q2)e_Vz;Y@ih1G zFaQ7mA^8LV00000EC2ui01yBR000Jrz@JcfFqvks8E44}{2ovS0s(>8YJ;r6`Jhlf zn%Bs4Ikf_g7Fa+1{qEacm)!07%~Zffld)F1tmLtAR!3` z1{E!iku(k%l_WQr6#xo96D2evJ)sQ^6&o9-sB9V%5u0s6) z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;5z*WFqlfI2VIKr2>KQL;wnNVXfZ4HdccqdBJh?EiD(F7ySJE-0a-*78Xf) z6z22hJghuTxlQu&@=LW#?(XjD_UiguTl{2X9HSg9sxA8Z`uF$uYLh+rQd8>c>iRuB za+*i>_V(W1-s}JXC88zuJ3I3L0ObGxVT&^JG&JM!<3O`O@eK`9xKaRw0015UE2S&o z002g_Mp(L7AfF)M?cXq`Ft^jU(dW_l0000&0QfXCJFq(7@8IA^8LV00000EC2ui01yBR000JsK%Y?PC_;`JO=CpZEXdlVD~0yZ`T z92^)JBqRf$3ZWz`H4^|EAvXmDIywmnC@2Ljr4kYu834K=AtfcNJR-s$#Ka@VEiF9D GK>#~f5SPFJ diff --git a/htdocs/images/flags/BH.gif b/htdocs/images/flags/BH.gif deleted file mode 100644 index 56aa72b2b645a4054500f28e6c2336aafc8ab784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h_bn~@K|%RaQv3V+@-8m@0Ri?ZD)>7){p#xK>gx0$ zAoV3B@eK|4MMd{ZOY;B#@(>XHYH9U8KIQ-b_%=4`0092|{rpQy`$tFa0092b(EV<1 z_b@R0W@YprAM+U*_%t;7008+{SK?}vx}hKAh$0Q&m+{QUg#^78)v z{{R2~A^8LV00000EC2ui01yBR000Jzz@D&ID;Nu*&|{g&^nOqaA_v<$0=*^74@Y0EW_r?D_Tl*4*fbh-<`Z*OQ9fXJ`8Q z`T%4A_w4fHc6QubTh#;u$Lq@T#l>^Sa^>jUSiV?Nx>Lyj00372o7Cpiup3;{PE7apk*31SHeBncV- Utrs{bA<@wS)YLLEFgig1JGeZe&;S4c diff --git a/htdocs/images/flags/BJ.gif b/htdocs/images/flags/BJ.gif deleted file mode 100644 index e676116f8ea589be623ced9474ae95d26b409ae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hRJK(0^&~s1I(o@^_e41WQ~>+?0A9UbvXB=jF2-~a&g z85!s20Q>t#_b)H?^*>0kM)vkZSh`kXzhXnJKwQ0Ca>jG^Ha7P=F#P;XPO?isuRq-Y z004;qA^8LV00000EC2ui01yBR000J!z@PBvC>oBLj7IbMI0n!Y^zleoArQvqH#po( z-rY+S8j(uc=htJRjmzi2%;h+lJSh)=Y%T=?F?2Y16)8Lf1UeED78V2u4GJk09ThS; zFeoZ3EfYDA3Y0w^Hkq596ALU2H61+yubP|_ARrhl5j6)K0K60w7Z(c)7#Kbc5fKH; O1qjXvEG$0LK>$1EJ(0`+ diff --git a/htdocs/images/flags/BM.gif b/htdocs/images/flags/BM.gif deleted file mode 100644 index 9feb87bc9e846584ff47884f0b08b21637a36896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h%NG}sahT%O-_0y6<%NaQJ3M;2WAotO+PA@tO>&t4 z0P)({gu!msuDRZ0W6m)#=zMvq0081^YK{N^wg3RwN=fmkrF9`q+gn@JN=nc*HQsD& z*i}_+#O2mSMaB*e$6;;MKtQ>Jn$tx^&pJBGAt5v-P1Hg{-@(h7i;IzlvBP|hgBLyM z&(`L)*me*ge$*`cb~Pfy=?di3Y#kD$!}09k(( zJ%<1QA^8LV00000EC2ui01yBR000JzKv3Z3WA!c|ijop(Mocb21BYnAHVy}d!^tTC zGQvy((QQ1Zg61*EC@wAwfnce{(!2a&q@bZxA|gBu0cr;w9Sb27FDnTkAPF`zYYQeR z3nUX1GdUF=A!=+42BjLC5}%=K10^M-9}hni4xnlStt9{eAF;DqTR9mcX(VfGvrZ8T N%oENNKhZxy06PV_l#2iW diff --git a/htdocs/images/flags/BN.gif b/htdocs/images/flags/BN.gif deleted file mode 100644 index b7b6b0f9199a96b4ef57eb4cac7413fe8a71793a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h*@ScBy8zjGWz@n?Mn*{IW$=0|4^4?A^E-v-e0KTa|+?tW#iFo|`==t;W?$|Hn z-uU+CRPy)t@7qi8-B9t*0QKfQiHC=(s;czoc(aE9QBhI&?M?OB0QK_MVPRqZ{{8>} z0RR90A^8LV00000EC2ui01yBR000J(K%Hr5su*RLOJf-b{C*G!V><10G8u!x`RjRA z48!Aq!7LVt3C-K%xD}|w;mjgUd>@`j!C9pMEiV!~F(eLnI5-3V03Zc_5)vU21tvBF z1epL76ape3A(I6a3@$kb11ACk6c(-oH43B%2N5$G9v%s5gG|6 TzDf;E0Ta;<4ih8SH$eb9y}PV* diff --git a/htdocs/images/flags/BO.gif b/htdocs/images/flags/BO.gif deleted file mode 100644 index 4844f856924ae58edfb7fba44e7f5c448a2409cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs4vV(D)Xgb0J8x6j)oh?9PI!A>Dfc;*-7r+SMA+W=+{2y)j90jO;OfS+aCb+ zZ2+~@I#HDX`@xU-Yhm@MWcaUe{SE+6*-y~rdg<6v>DpD3#Q^l7S@h_CxYj>a*j4D* zPX84HA^8LV00000EC2ui01yBR000Jrz@P9(D-Mpwk#h8VI3JN{C=>`BuFOZ(dMJ2f zF@>TqYQZ?1nMNb~=yZbkhc)S3E)GY9H53#K02vt#up%M=2&W4R8yh_+f5#0kd62+7Jp F06Q~Io@M|5 diff --git a/htdocs/images/flags/BR.gif b/htdocs/images/flags/BR.gif deleted file mode 100644 index 8c8661626bae57026266d56824709a9283d8c7ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h*yZ@7)EQ*1WcKzcVzE>JD*$C`>Gbp+sM%CSoJIWn zQhU35Q=?NucKT?rY5e?309XJTgBo9}UjRe^CWu`v2kCd}8kT1>3rugqR`S3bi zgXwK^s&kt8u;D^CmlU4TF*&3(uH8eG%5(PeNv*7*{qs>jm_YUIMD*z&EnxTj{8|8G z00000A^8LV00000EC2ui01yBR000JzK%YxI2Q|##o}-XBqc_nX~imf zicKPi(J(H}D*|_FGz=@5CIvz-2nvM?01#zd0|OKZ7Z5dh4=oKZ93dtH2L~iS5FP{% z8z>nK6&yE_F&%{?3?MWt20T0lI{^_97(WvuAPEUG12#Gb6t58)vRzpWG%#ai8o)?P NOBc>R(9u6Z06T&Vj4=QJ diff --git a/htdocs/images/flags/BS.gif b/htdocs/images/flags/BS.gif deleted file mode 100644 index c0a741e5ca69ebadee7774120d87675df8f6671f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmV-l0igazNk%w1VGsZd0M!5hMwYHDg_-ri8!;Q+I)&W*gF7+nE;!qRZKOZCw|d!C*;+}}yn+fUcmx}HB1#?JuD%K#f2#Hvf&yg>cgPCviDJJ8U&oE3tS1(vB1E9iJ}{c4-fTIVo~<2!MAGgDgFLhzJ)0iw_wz xkbjbsiy1pHWd{cv8#N#x2P!{4BvmsX9v(bA6ciyL1UCgs1p&Uk1i`{V06Udwm5Ej<$3qzlIq*j_PPM<>g?U%;q-DH zHz@pY7YC=NAd&!=j7w<4FL0hGvELK*3i%RX*Bbn0QcQj_}5dq zmwf!+Nalz{@sUyQ6#(zM0PNRa-@8`meof^k6VUOkydMcq-6}VrsEW3M&=`)TtD{ zkw~S{$joSq1J_#!yF{6IX16(Ty6p%d*8_Z7HV|nXKMG+4A`cH5A0#9j8v`5|h6FA( z4;L2(5HAQJk{AL67Ca~h3=07oI1(WyCkX-y5DY0AHwzmGpCJw>KLR=w!~rk|0|O=| X4h}vlBO@^-B_JRi*e54G+(7_4r_HFM diff --git a/htdocs/images/flags/BV.gif b/htdocs/images/flags/BV.gif deleted file mode 100644 index 6202d1f3a2df4184878f5ed8bc23aa630d43c061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC diff --git a/htdocs/images/flags/BW.gif b/htdocs/images/flags/BW.gif deleted file mode 100644 index 986ab63c2764732ffd789269068ea5b033c3ace0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h0Ega4$@D@(LOaCqa&mL>^72YbN;5Mv0JHX7()euE z_k-U2W7PVV<^THn`u6tr0G;YpRaJ`N{r&y@`1tr`()K$$I{>coe&7CS*7_2|{`B

    v=j^b6%_x}F=0IBa4#s7NR`F`B`Pft%J z$^T%_^Z>W_Z`k~L-2TnY%?ZH$?d|PR&GwVz{*U7Ra@Y5B*!XkW{dU{^)z#IA-~0i+ z{Qv*}A^8LV00000EC2ui01yBR000Jwz*cIgnazBo(F<|8pir7d!)CkPB)!FAr6S=V zQ4A)w)4?(sMj~NSKnkb$WbUX_9{30EM~FmN1_A;W2L~J>Ap$>qe}RLAhanvniv)mz zgocP69S1)&6LofZ8wI8XGA|2hYbG@TumiFp00>)MISL9D6)qkgBD60}C?FsZ5FZ~U KB>>I$03T&+g{ diff --git a/htdocs/images/flags/BY.gif b/htdocs/images/flags/BY.gif deleted file mode 100644 index 43ffcd4c7168eed43697af80901f59eb800c8d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^B5TYTU+S>093qGEvhXRp%(m0OZPA^^#B0Ij1oIEdc!h z0RI30A^8LV00000EC2ui01yBR000Jtz)u48^BIkZWKtmbxf~9RbTUaK0<@V#a5Iep z0SL*!xnx3z#r7u*kIUz@Vke-0Mi3R*j9w@d8Uj8aG?sYQ0`8CB=w=;M2%_}ui@050@}uG%YO>r938jh^H}W7}|?_-K3K zM1A#akM4Aj*@T_#<5Dho0|wkLR+Wj%A4LZh+xDUfJE%({`-8pwZ9f z{Ndf=;q&d~$@RWoci%R5=|6Golc2NI>C&_C&Srt-fT#OlgzToYz=W6VaHPjheDCQ1 z0Qmp_A^8LV00000EC2ui01yBR000J!z@KnP@c9VHqA^5jek3~#rqn@gHZc$d2LOlw zESpVnnI#fE!PYA}v>K7g;gPVUDH4&W!gwtlDlj}277uE90W2*A4kiT?2o@tVY8n9n zd<{A@5ezFM5R@U77Xb$~5iSb{2@nto0;3lk92W`(1`0B+uL1%c9Va;fHy$1_4;jiS OAV$tU1JTmcK>#~z$E7#` diff --git a/htdocs/images/flags/CA.gif b/htdocs/images/flags/CA.gif deleted file mode 100644 index 457d9662d54d976cdd5b4f4d8e480831995d9af1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h_3Z8L?(Xu0iRy=l@p^jcX>8{c8~XbC@H|54tgHR~ z{p{o9^^lbH_4V@d^4S0Y+eAs^MMu~qDBL$X>Rw;?qo?RyWA1ZyrT_rA008Uj>+XGl z$p8S=85!+vbKXr;=1x@WC@jm%%f!UQ?PX@=VP@_yIonlP;%sf|SXl8(Q|!II=^rQF zYHQTg)b-HQ_nxBe&dtBSzw`C=^ox+{QeE3CFX-Ld^p=?QnV#ZRTln|*=)l3>GB@Ep zK=kzVA^8LV00000EC2ui01yBR000J+KotTJ`WcN5N8rKam?{;VVhR8p4!gp|!$DLS zo9SV&nKc>_P{CQD5frZ&iNaese34Sd1QT2iS{?-@5Dq;)78xNq0v=;27Bvwq0X7pl z87w#(BnJQ}ARs3T0TMkQ83qg&6gv$72??Yc9X1~r4>TSr4L=Syv$PTrxB?pmy-ESg W8WRx2Ob;9`BGn_;G8ozzK>$0p52i2x diff --git a/htdocs/images/flags/CC.gif b/htdocs/images/flags/CC.gif deleted file mode 100644 index 3f7832702d54ae2365dbd09c8502a19769f8eeec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hSEFZ&#vi!oWTyicM>= zhmfsIOrUA~?N;j4Rj|#BG>=sgeLO*$Wh{(RN}X%~76AYBesQ#oRG(};m|-=NS^!f3 z07L*pms~xQRYsj?Ih9>zu7hB!eoUQS=FC1!n^Iq*gHNGvceRn>%}V3YQ{vNQ?9xyE z-B^6BU(voNRhBx+#7NJ{QUF~SLYHNzx=l@-V*pPXW1vrLt#M?oaMHv-+Q~uM%1;1Y z0{{R3A^8LV00000EC2ui01yBR000J%K%Y>!DRPd2jX+TGJuCy%<)To8M1@u1)Et-! z4FCZ1kz_!)38gZ#7z|;GLzP)TCJEQ?_GmS92P!fdH9QLmFg-~ZIRFP3EF&Ey2nhiJ z1V0-WClm}eDKQ>+moFMW9109&9UUY)mH`nF5U3#^XBr-Nmk}@#6R090Vx1o}X9PQG RKTAs$&=o(^Kho1d06YCiiGu(D diff --git a/htdocs/images/flags/CD.gif b/htdocs/images/flags/CD.gif deleted file mode 100644 index 1afa9d49bb49bb0fd6a148428f8946936b2fb5c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h001*Iaj5_ROhtXMENi5Sr=$JkYiXCldz_bgqscjS zt5Jrw02_K7R7?5UIsfQ*NrJQhHY{?U#y)tiMR=7#daosBq5uPCF>j|&g|=Ldy-I+w zREfF^Q6HEb z{f4IZ3O(rdDk{6;F$7`+i^_{+i1YaP_?Wc%`8YY$)BsDmOGURuCY&a1$Zh20=d#-z z1~B0LYiod^_`|~h^71dM)(v`{_TJtA03+Vc&H(ZN001BW*#H3h`~AS?Tbi4q&y8{3Je{YcVx#GE#tooSGnC6XK%v(QD>^g>goG3n0|O9?HV+RO78VydITQ^T z7y_CBCy$bp0S%X$n#~#3Y`-G diff --git a/htdocs/images/flags/CG.gif b/htdocs/images/flags/CG.gif deleted file mode 100644 index e0a62a51cafbd00551b5258b17284e542272d4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hsg*-+&G0P{37UEWHq-x`d#!NAM+U*-~a$r+f?z%0s8ts^UDeL zvnuz?OHkNM%JOCP%@Oy}7yJ8Qtm|UG@JH=Q0Qas=P1OMRQ%3E-0QS8pX5D6<=tSKB z006@PA^8LV00000EC2ui01yBR000Jrz@Kn9C^BR*mWpEg1)d7UWio-yN|?%x-i_`v_xJf&S^aWy{$F4GWo7tRSoJ+U`$V)sTy`awef zdwTg;So~^g^&=zw{Qdb`TlOj{_b)I0d3pQ$`~G@*?EnDy`1tzz`uzO-`T6<%{r&v_ z0RI30A^8LV00000EC2ui01E&M000JQz@PBvEBY7&!0&LV-EJ8Ts8aZ~C=NldmkO8` zznY`7-33@Eg|DWK?QA-ptl_)$cJFv@g!4^yCvZGD5e5(pFBl?vG&3Fp1SKCNgApMx e4+#J&94-$1Sv6Q#~ diff --git a/htdocs/images/flags/CI.gif b/htdocs/images/flags/CI.gif deleted file mode 100644 index 844120a52b2ace1595d581a03c564d71d3f14f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h`m8gwt)$}Rwl0QB_q($doZhX69oGW>l24Z{ucWdQrJMgIQ&Ce0=`%{KnKS^c`}_R-{Py=9HV>Qy5;rs^761T%qz?}T6ci0NGb$-49Dtb*84?W*9y1jc3JND8 O%n%R`H#Z&*K>$0Fexktu diff --git a/htdocs/images/flags/CK.gif b/htdocs/images/flags/CK.gif deleted file mode 100644 index 2edb73994c90da240f120ea7a3143da4fd1b0723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hixQZ�Ba-d*wp60o~!^6Yf z)83@4%IKArdyBAef1%iKb3RdjrBiL=Y-?zGr1<#wL{@{-8yPn@f!UCkyJvfopvUIJ z$^ZZWA^8LV00000EC2ui01yBR000JuKpslu@tis|!iT^lC=@zhtI;TsTrt6jVUws7 zxfdW%3j}1K2jyUJWPY9%1^~e9OqatA;@}v50|f~c6+I0lI1zjt3lu*c2@)0-4-6qQ zZHx#9EFUl_8EOZLeG3Q(5kH=xYY`fK2B#Ynssf^}rKb}c8me1eDy#>i5U)Q?PftI~ I%*;UmJAFx!?*IS* diff --git a/htdocs/images/flags/CL.gif b/htdocs/images/flags/CL.gif deleted file mode 100644 index cbc370e6ca757d338d851e78a257338c5088edff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hRHfwoZEXNt#rj)Y{A6Tir``HdQS$Qg>gwwG^78T% z6WQwbRFu-}008$yMC1Sf^*cNC008nXF7)l~g}mnO@9*&q4f_B9d$#5KMMd~DH1{tr z_9`m%Bqa17ANe{u`btXkGBWcS8Q%Z^=jZ48KR+|dD`anSRHa6wc(|D`gRGQiV zKd)P$+t=y#k;CU(nAH9K{@?BRcd_F4@bLKf`1SSm-2edm{QUOz_Wk|+`uh6&`}_I% z`S#~9+pog_ diff --git a/htdocs/images/flags/CM.gif b/htdocs/images/flags/CM.gif deleted file mode 100644 index 1fb102b295c86d04176b567ac795d92913dd23c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h_AD&?YG?LHIOgU6^Ya||J2?0EN$l+aXu@dsc60gp zR{(|p_4OoEyHoo_MMZ!}X15^;I|>4pih*93Mh&*jH7OM41RiNO4Iv>JI2af>8Vm%10~a?T4;>i= z6EOf9j}$tQ2$eiJ1pojrA_No^Cn*;Q9Uve%rZA`!B_$jw8(ceVG$bT&JtrI-J{KD+ P%ry|t&nYQB)Ik6{8V!;B diff --git a/htdocs/images/flags/CN.gif b/htdocs/images/flags/CN.gif deleted file mode 100644 index b052530978823707ba275dd861a188e55cc0f181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs{jD)lSsJ$0Ony~-8MD*C@0eNB6BFS@ zMa=*J+b=KPKtS3nE7mS9;ZRW6B_-onSmsz(_Rmq*ARy5V4c|&i>2Ge`MMc&hANt&Q z;Z9E4Iy&AuI^aS=)fpMW008J}YW2)Z`zbm)I8f18ZBYhGiKN`WYtZ3-}cTd005pyci#QlQT^Lg`Poy8aNCjBL@cn87O~(gocQU000aq zE(MW?BZ-TZB`6LOEgvrf12zf@7$PD(0|ui3v>+g*rl_g14!yk)z`zE>!$AN$75JQN diff --git a/htdocs/images/flags/CR.gif b/htdocs/images/flags/CR.gif deleted file mode 100644 index 0728dd6a498c4c3e2a69652e0476a60aafe60171..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs42Jdg_UT4O>Pkug0516X`S5ac002{7e7D^g z7-xgL<~uv>q@;wL%<=N_f0xSk`T3Km)a_MO?yRf(%F5v-CF3hA004OLuC0xu(fP&1 z`~Cg)zP|Rny8r-X{Qmy+xwyFi0C$nbbdJMriNM|f0Q0uB^|!X)X=nMNq3cgi<>~3? zKtSE!-{2n~@rQ+ppw81lKlj4H>!6?d$jI})zWmhGdz8rG008;?{Q3X?^Rlt?^z`$z zv-|%3A^8LV00000EC2ui01yBR000Jrz<^MQDHcD-4+0U8I3*fQ%;A9GMx+vA2kQPf z9G%V(i3rXt)vZ#iZ8oz`#}hjFY^mH~GFcG@Eerqv7ZxuqA|`u&fP#dE3Ji${jDduO zFA53(A}}>{C_X$H6ci1oG!!xh90sliX97JBw6rc5R909eB?}7)zzGFNOT`EU$jQh- F06PNatDgV> diff --git a/htdocs/images/flags/CS.gif b/htdocs/images/flags/CS.gif deleted file mode 100644 index 101db64939d70025b6a4712466a58640ff4023b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hb92T1{{HrJb6{Y-^A;8W0Eb*$yLx)b`uh6#`1tnr z_U6mWOiZzCY{7nh$ogAb`htS}=;-`pWJN`<002mXgUk6+Q}k?X`aM1Sii%THw(I}^ z_(VjCiqAAOru92J^8f$<0C@5)F7xyA@?~Y^00000Wb-sM@eK{&008^@`}Zy`kC4)& zq}umOOIcXC_%t;5008wNAvrm%^>}#re0(e{q4_B(Wo5wQ$H(;b_57fq_4W1L008{_ z{PgtnA^8LV00000EC2ui01yBR000Jwz=CjC2pL1BWU_E*9sqzw12-_dGz92g%kD>pJS1OzB3BBl}#4;B_K92_4XCnq8zJs`##$jBwj KDJebAK>#~H;F-+; diff --git a/htdocs/images/flags/CU.gif b/htdocs/images/flags/CU.gif deleted file mode 100644 index 291255ca3f7621e4af8eec0a3239a7f75d22a6a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h`T6<%$jA9;XxiJ|_Jq?EnA(CY< z^Mktn01D^oEiL{1{bi~BYNytGv)%LPT>u#CPn-Fj#LM*b^z!oZ@kmH@vHX0t{$Zv0 z_xJYzDDRrW$MaHBY^?fdsrf&V_C}QTL6Gu?z5f6J;cKn_Pnz}XMn-6>{zR1b-T(kg zm-P30drFx2Zm<52y217DZ~XhZ06QEjsZsy{ diff --git a/htdocs/images/flags/CX.gif b/htdocs/images/flags/CX.gif deleted file mode 100644 index a5b43089b01283eabb0e53b270e414575d24679b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hXV+)rR004|-W!KN{ zNC0jCCsdO~%|(se94IKpt*z%-a!RsRc0B{%_xkE$J z01Qw}%}f)z6QJZj005*@(oRo|A{h)Y9}6Tm7Z(8=IXf#Aehv;jf&nNIC>uCB zHYx*-9uf;62?P)j1qCfG4-7mWou8o_r4OFew3<>lq3*RJB@;{4ib^W~d`$By{bNBYx1_V)Ar{rvs$#re}e`qx+D<%^c7!WanIvNN(RvjoW z5F08akT^R6JXkUrFcA$A5j#3KI649bIW<}XAut}QI6^ox0AgcgkS(k;NlOj^1P28L L2m%5#&_Mt@EbY{X diff --git a/htdocs/images/flags/CZ.gif b/htdocs/images/flags/CZ.gif deleted file mode 100644 index 0a605e581dee0f0d8500f0f0d67d7feb3f1d6f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h$^Za_s@~NB0d}k9<{23PM6~kq^6u{Lz0&OJ>gwd> z<@B4I-QC^sl$7NY6Yq-RdeT z=_DlWG&JlxI_New+5iCPA0Kg@*yu7c>@P2RquY_Z>Wi=7@Q;t}OH0n(^6pSjm$>Bp z{r>ANF4x!BW1ZgbnVD^*;lkDL$Ay{x{{H*>`}p|y{QUg+`T6$t_Wk|+`uh6A008&* z_x1JlA^8LV00000EC2ui01yBR000JuK+EYzG#C%aL_)!|m{hfBYlp+xc)6R8VSx;0 zwH@`E_35_VzyLAEYIQ#ymle>+5ac)U_o}coB^fX@3kwYmC=U-Y0u>X1A{QPVBpVzd z1P&hn6(<>yla-g54kG{sC!ifJmY5D07!*AP0W=a4D=85X9v&Yf6tV?9ARq$A0szX& IJeDRmk~Z$xI*esy^4v)C;Ck|#M6-%7SXfx=i6{ABV78<$X*oGRKRWhOQtvY}y1KFV zSy{b7F`I-h{MDq&xUcenaD!W0=FJ`I9v)^%Jm`WQ@8E5%t)rE4a)5z>`|+ZjoRH|x zB0oPbA^8LV00000EC2ui01yBR000Juz>Q<*Nd1n;q=UsQ6mn1oqt{z3e#_l%GHG~8 zq|GLU_}O9-iB9+V%pPzQs_d!=1Q?2`r8*oeD-bdPb$EJwet-~ygcW&veSd)vHG>2& z3JM9EA|f3fB_%fs0Vg~e85$ZOARZnZ96mHSFDC=H0};9*ya2uc7bC(W1Ox`hF9a9L I7Z*VQJGrf#Gynhq diff --git a/htdocs/images/flags/DJ.gif b/htdocs/images/flags/DJ.gif deleted file mode 100644 index 212406d973881f3be2b8c1f4cc4bbed17bf29119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5hvFoud%q>TR{s5@}G|e*rmH>^h`X9+3l(+oH+5S}6 zRQ>$@iLLoMdHZFo#G1PLro;XGn3y@xIeet{jH&k|YV@ne{w>ih07~f+#S(<1_x$qm zMAJn1`uTmH^&`zAak9z{!wnf?@PVoKO4dn)tN5V5{29p^`uh9#_xJPn|6QiQzvI@8 z-;I^$mj1!P6J75BNr5eK_jKNL6v`Co_vw_h`PStA>hb+slm7rY=iT(({{H>|hXDKg z`~Uy{A^8LV00000EC2ui01yBR000J#z(h_!BsPw+N<{<{{Zt8y)B=H+Opgb`hWY(? zHxpuPFfdA^iJ{AD<1A$}dZNZG7O%|$m9SAL8X6uR6gqej5eq&jEFd5bkSicDiV+(= z9RMU37at!dG!g|qiat9t1OWjb2PYXB1U(&lngkcCtr;O90X-=-E(*dV92^o71gX6( P1I^6^(9k{8(?I|`axbfZ diff --git a/htdocs/images/flags/DK.gif b/htdocs/images/flags/DK.gif deleted file mode 100644 index 03e75bd297377de3d398b7c36a613ae283ca64e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@KjXydV2Tk>-Tnb?>;`x008evN%!~n^<7=$LMcM0086-4e2E%>pnj6VPWhsG4xqk z?Kd~;D=YMBYV&4h@?Blw008hoLg*hK=NTFK`T6wp^yo4&{{H^%PEN=G0QL3t`{(EL zR8;Nl?dUZ%@mN^t&(G>PIqy3=`}_OyPfzgx0Ql_A^8LV00000EC2ui01yBR000J)K$~wk`LQOGN+ra6JbZ!Z0HqsvJ{b@UkZM2? zh|Mq8a)@ReO~=rf1j4PKqIOPqE{nosuxZtJ3Uz81BNzogC_g+rG&m(Y2L~%A5i1El zii{ACk&_V-CJ7ZD1`Y%zHyn2(BoY!QDit55GdnjL6s!^!77RTVSz9{-DGL}fFDDGX UOCb*pE-?)S)G8`HJt{!}JEF&=EC2ui diff --git a/htdocs/images/flags/DM.gif b/htdocs/images/flags/DM.gif deleted file mode 100644 index 2f87f3ca6a52c118cdfe6bc0a6dbc623025db1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h0BZng!fANOcuk|@^oCLV{QPvaE&x*iRLC-1x?DV} zJY&COmA5ucv`vA{f&J}j^z`(2cXIaSTlV2N04@MOtv~a0HZ`d=OG-l;8rvDgkm9|A-a-SpKT&M)l)gBIsMxJ{ow$M z%uC&3AK>~-_2NPAW-IDzF!Xak@og&eZ!urKUH){MK+`4=x$Z$a8m$@ z00000A^8LV00000EC2ui01yBR000J!K%Y>k(X4(2fD&*x_#9A&KyZr`0t;IL=X3_N0|+uPBp@IdNClP! zB@7l52nHh%pc@(jI1LRs9t<=FE+{4$3KSXvre`5FBqOdFuoM7T3keA#5*QF?3MwkT ON=;3M8x+#hK>#~#;)-ej diff --git a/htdocs/images/flags/DO.gif b/htdocs/images/flags/DO.gif deleted file mode 100644 index f7d0bad39e027d93dfedfed5b001b2f32ff31205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hQ*62Y{r&1hL|}Np=Q=v}`22Z}&g@-X00372A)xo| z>*6FN=QcIe005Mv*vtR`=RQ8}^Y)FN)mwADIaaUaEG+u=_4M`i`SkPYQc~+ySNi(; z`1ttt_V(KV0C9)Q=SoWLVPU-h0K@q<#=ip))CxkzKSY=X$< zL_~g)(AnST003d>)zR>8Z~XW7^YioV^ZoB?YU)o_;9x^v5Wds;H z04ggcClfFpHk1%@3K5!|6g&tXC6x>nr9G$=00<3N8X7ksr2`WaJOH&zOd}&PFEGjo I%m_gMJNYW5asU7T diff --git a/htdocs/images/flags/DZ.gif b/htdocs/images/flags/DZ.gif deleted file mode 100644 index ed580a7cec832efa9c9aa4900ddfef45d938e132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h+S=Oe?CkdT_Kmuu<#K4(d2Vc{iBy$ylfS9*)z#Zr zP|?xR;o{=wj)z;Dd-Cn=`TF_*Tqpob5aC-;jhKPlQ%7Q zXrzXIvX}y9HFT?xhPIz!o`89-ly9hv^Yin@$;i&m&eqn}A$d)7dtl~!bnUsgMUH7q zk#6YE%<9?K^~=la^zu%kfVpj8RGfPC@bGl1kIrskW}19HgERA^8LV00000EC2ui01yBR000J$K$LEn@kBffjgr9t05XW^U;qL^u2=y;hv3lSh3Ar3bR z2QDf#BxXJ)5gnBWDGC(?Fc?0KK06X34hJnPIVmfujXgiEHiV-zF(f2DK0iMt5*NxF Q%o`;O3nn`|B_%-sJGCdIJOBUy diff --git a/htdocs/images/flags/EC.gif b/htdocs/images/flags/EC.gif deleted file mode 100644 index 9e41e0ec8c22fba363719ef9ba536c7c168e0ac7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h=)C~--(>ULTIq6f$N&KQ>yZEeTiZH1)+#FZ<5&06 z4<}}}?#2N0SW`xQ!*rUrS%aqSH!=C;b=Lp@_v3o@;cYr}zHF1RT#e23;dA=uW9R?? z`{;r7-%R=Def;Tb{p)l1=Y@Ks*JF*X;Y&;N&I9sFMEdEB@IpHPDWd%Cmr;etFm1b4 ziONiY#{J(5e4o4#Q;DSj0N+DH{_J>xqrTK1ALCL|{_v0TP)qgVVnTYs_hVg`w94VK z0QuJ$A^8LV00000EC2ui01yBR000Juz@Jd4P?V00Bw+bdIaP(i=@bfiD3lDK$>DfB z5=o^J2nYljANLy`m(PNV?}ej*K%b9BljwIkIsh>}H83y_4;L3BBM^=k1}P#K7%eL< z4m%bWEG!ESk&~8~nw*{sI|c*;HzXu82eAmVHZ}(`8$7xV4LK$zC@2xb5fd8|$jJoD I%*;UmJDaVaZU6uP diff --git a/htdocs/images/flags/EE.gif b/htdocs/images/flags/EE.gif deleted file mode 100644 index 9397a2d084aa397846d125405e06e31f81ca3eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h04K9&qux6^JMr=HUY_3K;^K64b=un6(b3TWH@g4; znaaw_QkB_ElGrLMD;O9UA|fIH7OP51N&pF@S)1KGh}1?#Mm9D!KtMoLR8%*F(lLS1 zDtpcN`1tnr_Vo1hd$8pD`}@DYzxDO?071XS#l=rgPyGD+LyOc$kJnU~+b}RN!NI}9 z!^3#4gpdSZ}D|-{0T)`T6tn^ZNSw_xJbm^6~&f zzW@LLA^8LV00000EC2ui01yBR000JwK%dY@N*DpiNMtfm_&^|+OLn^j0tDKO(QtwY z1d58ALRB;yPE0{^g~yHZIn6;Seg<2{B(Y!w7b^}B5EwsrdwqX_gAfk_hcA47fP#b% z4;Mc*Cm|s_IUPJ6BOf|FJvuD~Cp(~`q^3Os13fGSpE;pCqot>)A~**JFfa(m3kxMB KEi57;K>$0OoS+N< diff --git a/htdocs/images/flags/EG.gif b/htdocs/images/flags/EG.gif deleted file mode 100644 index 6857c7dd57a75a6232f2ce346c8183f63a0686fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h@ZEI!`uZ&`E%IYy^Wl9wJUsGTToDoxf`WqTG&Ji; zN$_%V?nOoOYisp-df&`s?Q3gWTU+Jj<>deX?p0Owii(PgiuQJPQc_df008#(_Ve@e zL_|dLQ&VeeZ0P_1G&D4OdwXJHW7PlvOG``det`CnkoJy_`}_OyyLRnZ0j?@dkV*@n*m0QjV&>^wd7_4WMx{Pgtn>i_`#{rzTU zW&i*HA^8LV00000EC2ui01yBR000JvK%S8I`Am+-j50IgIi8oxqR|)(3=|5j=`eUZ z9U6myOC($h+v;XIRVuPl%CT5LAgWPs-_z*=Ed(zb8aX>T5`2CrEGz&3g*zLFdy4@C zH8lW+8yhKMfJ|ZDMKRz4<1t0FMbfn-)8(JO2LuNwG=Z?A-bJ z`E+!2M@L5hY5-$nWBSR-;~Eq4$V;^5%--{3K$FCm^G`jL_HFE9K2`{FDt`eI@-rZV17Px0~b_w(}-mJa;< z`~Uy|A^8LV00000EC2ui01yBR000Jrz@KnPEQ)@BBw)b|g&YovL`OkFrJW9AdpfN& z6xa?#1`*CG6>Jp&a}IEy??J05c7AP^QL9~22K zE*l#uDFU7X2@sS64Hz#k1}qsFGcyGRJp(nQ7!wm07YGQbsW~z?qzwVX!zRWf$jBl= F06Y6ZlW+h4 diff --git a/htdocs/images/flags/ER.gif b/htdocs/images/flags/ER.gif deleted file mode 100644 index 3d4d612c774fd0e2af39995926d21a3c0b8c33fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hX~bz*eB|_YI{*XE_{357d0X_DP6BTLW{B!MZRY?0 zy6Y(^N3}eC<0QHb`Po6pE007-CF#rGn!wCTDNk;Q#VfK7| z`MFH@&O-o*0Pb8vDyb?uvO2XpU-2?D_Q6E+9UbjoW3d1LRIf<(p;ccs0961%*ok^> za3QR6snbeIineuFWX#1pUi7&-%4kxThfdREezBl<`psB=irs;JII2%5xM4o^M@sas zMlq~0A^8LV00000EC2ui01yBR000JtK#c0(DH;#RgG5=`Y*;rKU^<0Z8Iq=^z@^nt zj8NzY!d50Y90AAaWq3LYsGN-$QiMDwIS9VK0l}>&D+&Y0$O_8K H3PAun=2?lT diff --git a/htdocs/images/flags/ES.gif b/htdocs/images/flags/ES.gif deleted file mode 100644 index c27d65e5f1218537ae3dc51733ae628cca95ecc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{9Ii6Q&aWzCHD3!^erv?V`Jv#0RD1w{{D9J78d>e z0Q~$+>;M4s008~{ZSwLH{{C9~`$hLlOZr4a^fNR0JU#I8LG<-I{cCIgdV2RnMC@o) z^*cM|008(lHt`J&_VzII^BMU70QB@9`1m&9008;n?pN$nQT$9y^1ZOY&ZyvwQRJse>&Z*q008{} z0RI30A^8LV00000EC2ui01yBR000Jsz@PBvEBZvphLXYfWuBSC0fQ+N0D*v{nE`mS zx5=d9p%AtT1O!r3$s!RG2{aJM3~2~0wOLu@bOIw6cnByb8!b37b9EyjgbEG|E;=?Z zDuIs=k&`(*J1`cGArB8AGa?0JWCR2(EC~r89|R?;Us@U(92^v81U*U(OvN3?B_%z} GK>$1Bgrgn+ diff --git a/htdocs/images/flags/ET.gif b/htdocs/images/flags/ET.gif deleted file mode 100644 index f77995d0ab47d81355552a534b769575ffe05d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hcf00^#no`Bb77rgPLfgiR8&xyi)FFm_4Oy}0000< z5dHmB^z}RVMn?1V9Q^!CnaZ(wy2}7F0RH}S^jJA*ql7PcT3(xf<>df*t&~QKYx`kh zQQBLHOpS(ke6LM7b* z00000A^8LV00000EC2ui01yBR000JwK$v1klo*YvWJ>XRWip*kWqP^rIJ2K3W4&?= z22Ctxv1oofnP4pdxJ`sOVUTJ~7We?b1u;bs2o4Mwb_)*=0elcDCV_&46NiWZiw6-7 zn1d@gA0IUoHU|eZJvSvK6f7$n4IUyVIUylBARs6xB&r)51-%WwBCjVTBt9d@BMHjO KEX_X8K>#~YC5%M? diff --git a/htdocs/images/flags/FI.gif b/htdocs/images/flags/FI.gif deleted file mode 100644 index 8d3a1918280816780d79856b678e2ebb5bb76d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h{r>*P&)WbiyhL-+$q-dTj%J8aF`-s|}I z_)&e-x4+G6k=`<8%JTB_Re;vK!qWHn`hcS2hNk7+;_YFI*-d)X!O7PE0Etd|&|iq! z005lz_4Q+m-1heNN_f-z`}Xr?J8L`~36s^SQy#NO#iq_xR=O^YZfY{QUg-`ug|x z_y7O@A^8LV00000EC2ui01yBR000J%K%G!05U@^_N+NMGkubX74?uZM06bo(7gP9F zQ2?M}m}$A*k1s$F%gUQnOp^O_3LOlK(r9=#2Q3gHAOk1}5E%j!27d<-3l}&82rdo_ ziW4({gOY{_4h|X_2{m(rAU=0C4g9xlX|nrTtN5Iz&ug^#l$OE(bNB!&-(s`+ z(LFiN`_)KB*mQZ%Q&iJjT~wa<0Dk;Y zc*Ul#)rlEBT(J49dzFJDNq-YNXBkUnu=&@Bj*x$;ak%+jh0f%+zRwvM=aiM^)7oiO zk9eKgA^8LV00000EC2ui01yBR000J$z(?UQdmU(uPA1c6hC&BKFOksoERcZ7B*5V$ zJKh992A~F;4XhHmNMt(DWCF6qJg|>Sk$NnA2sb1o7zsBX6(0(Vem5357#J--E-Miw z4kr#J3oHRR7Zf!EYz7P`92^W9o}r_q1S1X{4kH>F0ivW41_ZtV91sS#TV0^KA|kxQ QO&w1X&EkWpbP#0IBkZG(I zI|I#NsOdxu#!OOa0CKWjOjd$nAd$g9!fBicDjy#mKOiFk5j-s+BMm7kHWn5b9v}e@ zc>*B;6BIoe6&NBAmk1038!Vg@9-*U`4gvxi8V@g>D59he4hRSv8xIc-6AD>dprRuq Sq?g4^4GIm@(-YR$K>$0bS(5+& diff --git a/htdocs/images/flags/FM.gif b/htdocs/images/flags/FM.gif deleted file mode 100644 index 7f8723b7da96997e52b64aa9a90b112828d0c3e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hah%8;X0MsK*@LOh2Uethrp>9v;gPl2JAA&LzTSzh z)RVN={QUfetkP|n#`gC1kFwRR$m6EL+`iN1mbcgdG>o~=soV?qm!{D{dLOaapBMH1q}A?D&`J_Xutgouc569)lqu+uPC6(d+B$=jZ3+&CSjG`}^|p^7i)j`uh6!_xJPj z^Z)<S_%x44Qgjl}c&lY3ENVi*#SF`jw zQJXCyqG-9^-Pb2pO=OL2x3{D1Ihy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>J5^c-oz zY4-LpRD8_-{&QQrTlMuMUAjEtsVQ89)Jk>C0BQhQfWTjb&-wW~PP9V+MgUT`Qv3Tx`uafl z_%{9h0C&iDRDRK5zF=0lR${+dLvP7|&3P=PEM>u5ZIH=rkkx{r-tzJkag*0|me@V5 zF#v-AA^8LV00000EC2ui01yBR000Jrz@JcfDPBlOi_-G*IA0);Vj6SERFYJ)YQ<(U z8Vtsk{nc(W2xPNCX*9l22$ga*3cF0A^8LV00000EC2ui01yBR000J?zzGcC&}c#>KuD!>5L%we#+2!iI)Y4RWx`Yv z5oy9U+Q}}MjmUyyQ5xbzrOfcHZLHdxhJg4X3=0bu83Hd483ZK)7Z(ga3k4q^3JNDD z0|YTR2Av?13Ll0KBM<}{Bq=F2IVh7i1rP@ZE)u9I2st7%p$R%4F9#g9Bo!DYDIEg? cD=r`d8N(Va1P&ez0R#jd5)uGB1QJ02J0mH#)Bpeg diff --git a/htdocs/images/flags/GD.gif b/htdocs/images/flags/GD.gif deleted file mode 100644 index 25ea3123187325ea334cd556a8725f10d6d6f1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`PfMK+EtFuT8_Lk@?HSvIRN(7DqzG={^NFipiU;F zCK;R=^~gEr002p|M#j@PRk>7Pxj^&N8T;Qyd%9}#%_{qI0R7}u^8f(%%UDdOHb$H> zrNlTjrYKjZMEl)f_-;nm-dg?PYZsyy`QAL&008*hHif@+iNkvM(=_#7H|f_=ugXT( z#UD1X3&(aoaIP6(j4a=YRrX{&i@Q&=#15ajd-KmV;m$br(m?svJpG9PimYPY008{} z0RI30A^8LV00000EC2ui01yBR000Jwz@PB9v-m7Vf(65D_-u%1R3!RX1DS*qB?w)< zlQ7Bjh$0qz?3ck diff --git a/htdocs/images/flags/GE.gif b/htdocs/images/flags/GE.gif deleted file mode 100644 index faa7f126a7eeb2cdd66c8e7d7bae6c19288d00a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhcXNk%w1VGsZd0M!5h^J`|q!^7$}FY#Me`uh6v*x2;+^!)7X+S=Ow{{HKU zgyQ1j?^;yL%ggeamFZ|=>XMD}^78baoA-%^($doUzr5z==J?*-?}dT$VqNpPw(o#@ z@TQ^D0RZh(PwfE!<4#BNkd42;zv=1e-{0TY*Vp%_r1Pz)_oJZqq@mf@+3(57?L|NN zuB_s9ZTZg1Edqm6FfT(fIiI{QUg={r&g% z_v`EHA^8LV00000EC2ui01yBR000J&4c69K@%@B50D}3d^dxy0jRWQH6{`n86gfi4j~dT9~*=NI5-0gECQAS zEFA+jC@B(&10EO(qZ<$%7Fil-I}9EMun-Xj0Si1QE*y6rAO;Z%ATSZN1Q!k$cK{Et Z1u!cSB1{M>B@`4L9Ss570U{zn06Tokyea?y diff --git a/htdocs/images/flags/GG.gif b/htdocs/images/flags/GG.gif deleted file mode 100644 index a19101d3ae879509f978d799db4226e7420860ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmV<41tI!JNk%w1VMGDg0J8u90001)007JY0RI30005Z)0L%aY|1+8YGtB=0W&i-0 z007JY|I7gY{{a7H0RR90EC2ui07L=U000R703Qe(NU)&6g9sBUT*$DY!-o(DNSsKq zqQ#3CGiHRyv7^V2AVZ2ANwTC#h8k0mOH`d(Av!~CWJaY;i z3bd%vqeznu9Ln^j(x*_PO8wZhYRaitvuc%Uwd=*LV8e>7>9y>{v1rq(rE0e9+P84y z5^U>MuHCy~>3YS>w{KLvUHu9k3>2_c!iW>gG+b4&(@F>%SNp6we8!kHO}5WI3@1iwy*LYj#nk{UoLkg za^NeOOJB?K`E8cdvyZ)LJvVmk;I;nZ?7kXj`14b9l5da`z5Ay^yOVxT-)Ma6^Xu#H zdH;F-{Q%C?A9DW%XrN029#`Oj3`V9Ne(g0Vp@ZW=Xx@YvvQ?pf5oYM&We;+A;fEwH zlpu5+mZ)N9ArhG4iZDKK;%^JaSmKPh)o9~~I9~VSjwJRN+>bzdC?sq|7K!1J-i@dv zk1Z;gXPU;CDpHBJtWt1rPDQJCwes^e^gwmMjqSGZB9i(nHn&YFCE+?sSna*jckA`*% z-loEdy62}uhH7f0s3NKAs{hQ9svE4~$r>B2+1c6>uG;DP6|cFr+GL=>O6RLZ#j?7g zi?1eY+OZWm8>_HaVk&KA&{A|QaoL`=EpOdQ^ewp5a%t_jiiJA>y0fXvu59kYINH4Q z)+=AV_~xtczWnw}(Y^i#Ebzbt7km-G1}CiW!VI^CaKjKsEb+t=JxuY%7-y`n#Ts|) z@yBIx4D!e%myDW)Ca0{j$s(`pa>Q`1+%m{9zbx^ZGNa6L%{D`9X38^n{BzGf4^48= z8HY)9(MHp(v(rs4op7~BKkYHqQZGF0$4F1Sb=C&E%C*%=e+@Rlsa{R?#c7{i@Op5^ zE%)4X*G-<=3frys-u`^|?RV68`}_CcgcokOxq+j7_~MK=4tL^jJ1+U;lp_v#z?EmN z`Qn!ky!q##^WC|?p_gv@S<{odHyF1FBXQ`~m+XfBjOHYR>3t8Y&NjHq4=9 zSg6Bj*(hG`{t68cgUFd75>Yhe5@4y0h{R=~P*F^@j1i*&R zg83pC`y$3M7AJ`b{FNEEh(??>YmIj)BOK!*$2q>Gj&@WF9`lHnJ@Qd3e*7a?0x3xG zw9$gIDr6iFStmsTl9A_fBvuG1$-hAIjg=haC5e?u>TD81Z)$6x1a%JTZi&!iDl~5QY-miXLpO#>^d%3is4Fk( z(39zHqa1~aZ~7+7kRr&VByFZiuZfYusdS~8qbkADm{0q)reTNs|}edSOJ>V5(NYR EJ7qWeH2?qr diff --git a/htdocs/images/flags/GH.gif b/htdocs/images/flags/GH.gif deleted file mode 100644 index 273fb7d1a9a39f05e6caa9dc1f68111fad9db72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h{aai8{Z&V@NA&a@JF7eX{&V|8Mf>|i_4OqFa&sJ> z9G#v)0Biu0l{WVFGxY!f<>dhXdU{*CTlOj{Xu@dxVPWe408+M7M@KpJ^*#4YO#N$X z04V@3r7r+j002h-3zZ81H~=)MG$f)V{7g(UrZOs{DioO%`8+-NH#hzL001BW{8d%` zQBnN-PxkgJ_c1a2{7PtMHDF#Z_C!QLuR!eYHu>~A^6x4Tmk;vt6k)z%_)}Bx^G5vu z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;6I}q{Z@!I3tO~W>cvESUe3gV!gIV z1_LSun`oN=FIY^TOlTHWArNrIdW(k5@j?tT5OQ@f2MZV&4SfTDfdzI42RAY^IDP{< z4iF3!0s=JzA{{0p3JNDVB^;ZcprWLvIUpS?3_B7M7Z;tMpe3TT9>E{OA;lcWE6G6s EI~OyF2LJ#7 diff --git a/htdocs/images/flags/GI.gif b/htdocs/images/flags/GI.gif deleted file mode 100644 index 7b1984bc692fea25c149976f81b83eefe4115c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h`FL*WsY>!XF8KKP@?25#^YhgJ0QX)~`D|k9&&~Mc z+9?L`uh9(`||Pe>FMdMX=VCmTk~2$@8aR!Ju%|O>|Rv)6$R*3O1V8X@@io8 z_4VOMJp7c6@l;63$H)7GeDvSm>F4L}<>dDE_T2yg_4W1r{r&g%_w@Ai{QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J$z@D(T*>FIh#e%^wH5$F&&qvMWcs!40Fwi-o zRNvzyQ*667Z!ervAP9#U8fSxSs*eOJq)O;)I6F8H96nb(02me*7!rX6Erf?22`(!o z36CE;5Hvg;9U2lO0W&o_1s@*;F)1$qum}eMBN+r4Fcd5|5eOn82eSbb7K;}G0=y9s Q6U`F_710$p)Hgu@JB@m~0ssI2 diff --git a/htdocs/images/flags/GL.gif b/htdocs/images/flags/GL.gif deleted file mode 100644 index ef445be003587758a9c100f3b8f4ba28d7ecf95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h{JgyUWo7(cUi_n@_4W1b?d|w;bMrJb{QUg;Mn>xD z>gML=`kb8N;^N-k-uIJ}?-CN$*4Ffki~Hf>>;M4d008wnJM;hm`@zBTE-w9UZt)Eb z`v3s^R8{_ylk^`S{7XyU008qD8TlIRt_c0RS`uhztxb4-XQLFAy9W8Y)^` zJuWpLA`k}^93>!Tm@p=s5S}3%0SPt$Fa#4Ms2dv@Ar}GyCLJXtHYgSr2L~A$Hy6qj O%*++fAt5)@K>$0)Ft+3X diff --git a/htdocs/images/flags/GM.gif b/htdocs/images/flags/GM.gif deleted file mode 100644 index 6847c5a8c0232d984f7c8569a6f7b89b96736963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h5tR{Cw^Y_hNB}DU(KIvwPXGl@{oP|@Y?=D{_Vz8K zEdU7Rgsc8MtUN<^^<_5J($?(pt{=R9%q&BwrH{BE81UXb>EsQut;Yv1MHQik(Ziu729_51ku@bd5>o*}!zyZH3;^!M~Kr7~iV z`@;YLA^8LV00000EC2ui01yBR000JuK+|tHq!^E+B~N4wt|z8sdlh&I zV1nSJx|lDwTVlQ2h2E@Ig~5nrKB5=m@qk%g3kD1bE*(A|9w{Io4h}0effX4UA|ePK zeHJw|AP);O7aF2GJR7Ds7^yfqB^(e94JZltZIsglm3;X*=`$a|mSy>dB6#V>6C88zu^&&H-GWYjO`|w8m z@k>OnMEp-r_xCUT>j3rjJ^cJ-ADQ4|UZN~l|!gvlF*DuHr^e2w<21@AEEG#Yme6E6cS92*@l3n(-Of<6(3BsGdK z01J;M1r?G5BoYpb04Wa!CN?Ub7onn0QOco{QUg+`T6xtH1=3N z{{H^@`uYLs0P{sE{&r#j%>aM*bo5g+`)pYGXinn*0Nnrpnf#Fa)@c0_0R8%J@IfCP z?Ev#+Nc3n-{_Tht`2*d*sr$8G{Nri;wS@lZaLKWk0Pz5I_G$i;g8a&V@kS)|Y*74$ zcktZGA^8LV00000EC2ui01yBR000Jpz?Nlb@fbag24abz#86OyR3aG+L?TDd^W%6q zm@uZ3$pFqWmF@uoMM#8Fps=}&dL~uP_J~B{0T2at1}`QFFe@o=a)KKp1_myNJ2W$Z zf`kS<5GM&fjB|Aw1|J_R1t&jaWM*do46(5{I9Co@6BQK)yb8V)N=p>OA;k;F$Uy)* Dz3QR) diff --git a/htdocs/images/flags/GQ.gif b/htdocs/images/flags/GQ.gif deleted file mode 100644 index 8b4e0cc41ecc29ca33c6780e4d3334123a4aae24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hgTMYUq%n5LcID;e`TO}0hyB~y+1XT70BGp}efw#` zX^g`9);c;~yk7VB_f51-;%sd5^Yi)k_Ls{20EPenNC2q-07R`s0CxcL_3{8@0P^nc zQ?^t0`S-j40N!F^-AYQ*EG+r(xBUG4)2@!#O!e!cz8 zA0Cg&>FM|To~6)`!;9ZrTfW1<-{s$-(EY{8$%?;)^!M`gF*dl3;n zehU*4oDwT5Dk>YJ8wQIqARr_RtRW#fEiDW`2rv-0A0ILYyd@%R1*_B3)xyo}qO|0?#_IX``tI=dzRBve!R7Gq z^7i)l@$&REUCfQ5+v)A~;pFX!pW6#P!~iM0f|}g`0GExV;q>(NO>)(NgUjvj_M5HX zdz9KOSIL#A-T)c2xy9!I0E*`6^7#4u_xSts_4?!H@B%f$;^N}`{QS4X=g-&gSa!$? zG@;Vg-SYJJy~yXt%GLlFq1oT@=<4&Tu*dA~^78Ze2O+8G=k5S}K;&nLhPNH9Mi1~aOXNQ>;tg^K!o zy} OO#v0p&mq#%K>#}%6u74V diff --git a/htdocs/images/flags/GS.gif b/htdocs/images/flags/GS.gif deleted file mode 100644 index ccc96ec0093b08b01c9324d90d77d962f297755d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h#>Uv%tF_jJjVUR4c6Frd>+Sq$P!khzY;2-MM2%x( zpgTK-N=lKOAUxya>SqWx001uP%+g(5obhdC000!HeVPCOQ{{YoFff0MVvA5vlr}Yi ziH5ZE^YlhWeEpe$=UG|P&Z7Bwao*qN_(R_cf=VV}aquXVN$HH7Mwx{F#FkLGXerQFcmx-4h0Af06z@`JsBAuD>oY$ z9Vjg)1wRl78Vm_&mjfdqDlCnkqNErD0|X=m00^E6qiU}M2fe)*w_9DUX_v2_O%y-N J%+1R|06RkFo6i6M diff --git a/htdocs/images/flags/GT.gif b/htdocs/images/flags/GT.gif deleted file mode 100644 index 7e94d1dda0ab4a00cf6ce142d317cb66ee3eb114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@$~p=rThS0|Aw~zRF?YyHudc9^y=#B07&=%1Lj$o z_fwVj03`2ClKOhD{q^ z-S_wRA^8LV00000EC2ui01yBR000J)K$~D_sU42ASwW>@s04#3NTSi`bd%92gNr~Z zfy~8v>H$h6nZi2=h&C5pc?a;wK8u6^B+A?_b2%6v9~F5PAQ>A36FoaQKNuAiF)t_< z4jUv56OTVU1~DNVEGP&LBm|t0JP!sO933X66sjcvpAW7byeTLJU?VsaKe+}bCMhXC U2ulnRD=rWaFfAx3KG{J4J1s%9mH+?% diff --git a/htdocs/images/flags/GU.gif b/htdocs/images/flags/GU.gif deleted file mode 100644 index eafef683d5f0280f58de5bda5d17a9f6766e1b72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hLu2wfUGmw{){dk8VSf70S6`E-|AU(R`T+pn0086w z0B(u;VSV*ndHHFC_fc>2?EnC4hWt!y^>T~)W`g^3js1zA{aktVewF-slKS)j09khQ zcaZ*7bM|(R`EZK;R(1DQbMsMf_ET{3dXxU2xQXOyYh`5VW`Ossfq&m)W}v!{w85sr zd7y5H_s4sm-DX2_jQOBSd(Kv6bdLSnyh6udh2m{-jf1Iwb*Wi)_(x~-_W%I#007$n z0R0I7A^8LV00000EC2ui01yBR000J$z@JcvDDrq3O|J)m{0z{+z+yQZFd5Ip|${z=jq{PzuC=Q~5-0B`hi(b~_At1AP$`Hv$4G4-z{77YPU! z3yTCQCpZO?00A2bJO`Q$GdVRflK}xCKBW|AIvoWt0HLlUJ{njaF$)e33=9_=AtMjH QOHB|8&mca zFyyoV_4Onfof$`~LHzt6FQ_jw zrZOL(AN*Na_Vz^e^*<4h0FKKgkj*RpcXwN^Q2P2@{7+C2mk;%Jc8zj#{Az0UZ*Tno z0RI30A^8LV00000EC2ui01yBR000Jqz@PBv%NQj{k7vRBMV_^UX8L&C3I$5Q$>F>{ ztJSDPGM!Lb?kfZym(L7Xz^4Nsa38lB#bCtdI{*L&1_l)s3N$ko78No+J$45U5FIQ7 zDJ~5v9RfZ)2L~7vmYA9iu_0t6dgAvPBml$9+5v;@M!AjQT4$jCte EJ2d&0^8f$< diff --git a/htdocs/images/flags/GY.gif b/htdocs/images/flags/GY.gif deleted file mode 100644 index 1cb4cd71d6fd05fa1d42a8afbfc3d25d4512a43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h0B!)EnQ->^IW?y=)#$(Z`^x}K0QyKs$J@E-_10Ck zRFQ`}hRlg$zhl}@PxkqF{&#ow_ALHaR{$~q_V%iD!*>Rh2K;Jj6P6VE`dV^nM7Byu z^YyC4*j*zfYV=QR4sr<|QTZR8-|O zG|T`1^?G{x(b3!h0Pq<)OKR)9c8u3q0?Lk55MMdyoVe2?J@L5^%W@he1Mf7)f?Kn8^N=f7&AM$Ey`@g^S z;opdmE|u59$9OzQ z34=fevWx;4&bCXs%n}pUtb;~`7QYiX(O~6jE&wA4Di#z!8VMgf1QRj@H98n79ubEd zA1Njv1PuT&lO7TZJqIhA9UnFT0xc+_G^7V5CLJRq1_1~Our~!64pwb193eOs5efX_4TB);s6q%=H}*wmCI^_)BpgALu1Ik$m;m`_^!I)y2a@L0CTm$sZ_G1Q!otn%E>FI>#O60vzkrt9J5igp zzvo3;r5ixGm#E+K^YhQw@k(dLNN346Sj6My@y5{a`T6<${QQBH*1*c^!OHB#&+fCn z;s5}9A^8LV00000EC2ui01yBR000Jzz=u$%C{B*YpYpM4BA$hUL?T!W1{nonVI7n_ zGzy_+LeWAI*{yft?JAg53k15PTo8bs1moav78?c)gaLT~IUEKY4h|MJF%6N1h&d!1 zfEFD(1~DHE0cj_1DJdEnJ{K1wBR(t>0%Bw+3=A(X2e~K-6I5JY9y1~$1OzH72|p7` N8Oi__SwdDR?U1Oct<>lpbsoy$<%>4ZP`*n40r`}bR()Ttt z`anPc9HdB%(f@9$KW)_t+!_C!SY zNl5@y!TbCB`~3U-OH21xR{#*5_*`5{daY=p+i9fUY^2*!lhgI}_5A<<`OM7p^z{Ax z{r>;}A^8LV00000EC2ui01yBR000Jwz@PB9D;5n%Bn0vcIG-3yqv3GSWXym>Qd(3B zw*qIQNVKxt#Ud8s@W=@h3*!5He3wJ}EjZ|UIuvzyd2Smd0)L5ucrY(IZzKsRJpuwf z6fO}NHUuIyWi=inBNithnw=sKDmf^l7O@&23@a-G6&W}-6RQsz8acEK0L1_u9Wyfs K2q4ZNK>$19yrlgA diff --git a/htdocs/images/flags/HT.gif b/htdocs/images/flags/HT.gif deleted file mode 100644 index 059604ab20eb6f3a5063c0321ae2e8b1badc4a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_eVDX5y0py7K@tXbA{g4008b+M)GJ`1187oMl)`K z-2el)YjMhyqv%|5)@6Cx>Od~!002^H)9y?={9H`*b7Wm(#C?w9`%*&y9K`lHCw+s| zWoyXG004!R;`1vPdW+rw0Iq6%+Dl^4TkZPe^MD(g2S=`tUA zis1bK0C;`T3l*p0EmYUr3G9Lf{dG&c}c8K5aU{L*g zZ^ZxrA^8LV00000EC2ui01yBR000JtK!i}3$piw6WM~;eG@dltVBqmwKsy01**8HYX?(2@onPECK=~2^|p?qNJv%sw5;3Kd%S7JvIiTq@}o?5e3G_9myR( H%s~J<4X=$u diff --git a/htdocs/images/flags/HU.gif b/htdocs/images/flags/HU.gif deleted file mode 100644 index 6142d86817c12d74b84a4b19d7f60045bc0dfbd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5hqT^01W^xjxG*;4(N1r^YimXo<#s90K5PIJ(xW@mOAQtd$j-n05|~QOiVA4FDi~I zB#R{0Dk>j`9~6NU-aAHk%VprRSYEHkW3d1LYzG;FX-Onn zhgF6J3W;1D7W4HDkIUyyCpYMsOugL>bxM^~Bsx4g3U+yWeSd*G5IBW-G<<%5f)Efq z3IsJV5ik`68XFuQBOeYoKLi1tpP{3r4h{{e0RaZLGo2KlHx08Gz!Jg?#6QNzKS2OH D+N+ap diff --git a/htdocs/images/flags/ID.gif b/htdocs/images/flags/ID.gif deleted file mode 100644 index 865161b0307cfd1609732950cba4d9a6c7999aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h@$vERqMhVoS?qdq@s5YO008Rh>gML=>64A?o|*Eh zrs7RQ+%+oWP)6leP3C4^%m4uEY-Gd$0Mh^f-T(mF008J=SL0Jj?SOgeXkX=AQ{hNG z;Nal={QUj>{p@pV112#cW>!lRp)AA@TZ~kuBz>JZt9nj?3$I| zJu=`!IOdLs@QQ=*jD^)03-0dj`1ttt_V(S~-QNQM`}_O#_4WGt`tfFwS*DGCZG0RagtD+mZL2{IlY9UVA2 zJTyKvIXgW+J0LigmzkTLpFceuJRLfinw*|L002K6KBcCovp+vJIXwU~#0CZj2Ou0A IHqAi*JCOOXTL1t6 diff --git a/htdocs/images/flags/IE.gif b/htdocs/images/flags/IE.gif deleted file mode 100644 index 506ad285906c72324b51a6d2e9e067177444dbb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h?e*;dhXCjR0OsfB^nWvY$$IE^k-~a$hv`X}aJLBWy`k7kwdM5alQDVPh_<}cg z$alWJu+Y%Z_Ixbx`0)4d=;7bnSiD&Ei9hrp06?xk0FeOr`1sub0Qvd(_V)Jr`uhC* z{P*|wA^8LV00000EC2ui01yBR000J%KwMxL7#Ihqnay^&U;>3`%h&1nd_5FOr4m3_ z3Qf#v=xtaOSj1Zhhho0+ZbSH_)`1o+Gy=$TG9L~JHC_*VB>+7;IX^OkASMD03nL{S z0E|C83<)406eN_FHxrFK6$~H;2Lz%k9ybsZn-!@C85trZ5?~q#w6zQb1R^3j4H6O@ R94;>}78WifBs$hX06RAOp?v@V diff --git a/htdocs/images/flags/IL.gif b/htdocs/images/flags/IL.gif deleted file mode 100644 index c8483ae52f057c8131c67501b466bd5bdd3e46fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 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 J%qz}806T|Gt@i)` diff --git a/htdocs/images/flags/IO.gif b/htdocs/images/flags/IO.gif deleted file mode 100644 index de7e7ab385eecd5e55ff60cc67e06604c2ca7ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5hk9Dg60*GdAx`nK8)1|q)z}>aD+IFN@_tw~um%5oQ zUH}I&%uGl6=jQ+bZe3-z{imduwur24O~l6HsI1iay1I#n!|l>Z002&Gn@c|@i`(4n z^4;S5oS8~etev6F)Ya=)V6#I@sovo3?bO?TsAAjG&gr(ks>Ph* z!_4l?IpEIRTSuAQ$wl4Gdcnoo*L{uP;PFveu(G9OaGPHBprQ3&U-$C&tbwT4*z2iH zbD59BA^8LV00000EC2ui01yBR000J(KpG&RP!KhNfWxs^I$)d~V#R5E3ZO!S6`4_V z6-cK8$?*h&N9lkYV0?&1C5Jd!D3kT!5c&K_Dg*>6Efx~ T6b2F>xK2wL)Ya4r*g*h0BUh+0 diff --git a/htdocs/images/flags/IQ.gif b/htdocs/images/flags/IQ.gif deleted file mode 100644 index c34fe3c44ac029c96bbc44f4fd1a814b8235902e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h>hlr5TwF#*M)d#ytK6*S_2zwh zeZJzt{9|KdV`Mx$JnH}e6ciNp`uTy#gZE5K{cCIcMMeL6diyvyTU%SS;kN#Ec2ZJP z{fdhD{rvodg~H~=oYJ26adPhV@ia6vz2m)XX>5&)jg`-q_vX5cu>1kC^SPodc962ANhPDA|fCG0R(s%EC>rXEG#VxED|S$cs&RS z2`(fg0G*SC0x~8hIynjoHZ?CLB@GHcKMe*B4kH4$5V^Smunia(8yg10v?I2>u*u5H Hut5Mj5z(S@ diff --git a/htdocs/images/flags/IR.gif b/htdocs/images/flags/IR.gif deleted file mode 100644 index 156040fc578e6a7a1bc2399c40523cfa7f41e945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>Hq-wmX^8Wx%8{60E7U`<;$nnr{(44*Y4L!v`WnA z%<_bU{AFhI#l`X!754V_V!mSfy1D>&0Q566089W}yj=SA_It{E0Av9A)YSS!MEYA> zQn*oT!fQOPJaWZz`L(wAP*C$NE%!u3^(7_sJ3I0K0Q&m+^Yioe%+28d0Qdj^`J$q; z-?XpZu|K0fcgT10rKMB0Q&+lI_wn*Es4)09H~Bm~{N?5Q`}_6v_1ypf{QUd?i2(HU z^!@$)A^8LV00000EC2ui01yBR000Jyz@AV@AV`i9j8aLsTwt)zr_+HzDl=Jv(z{%- z98MzP@ziQtfdV05BU%cV!cd^Ue)u1cX90m|4-Yy%ItO`sIRPvY0fIg#g?NZ3CkqQS zgD5CI2Mah68K5931EdWx4Fd}+3>q3YHWMNwBo4L?6FaOM8zH_UBPAshvLZVs$R+^G M%PP()JJCS^JK%<H%{6AP`uh4~io)bW zLI40qah1w#lgUwhyjX(1-Y6#{SfxyOxh`R>^78WUd3Y&Zs6KA9003rQhr$2=S>ro8 zL2b=SW9KbF%;ngZTLPLvXX(003%_#`gC1`}_Mq zZ?Urg0OwX!>R49iO-$wGMR}ioeJSROX0EIFs6(2AHF(e8b8#)k^3NAl< z1uP_igM|PT05Svy84m~wCp8x$2NM$(B?|-|4>LR)J*%x277-{5CRr*xFFg-AI1)4^ TC@l+20RuM!8r2Ke*g*h0+u4{_ diff --git a/htdocs/images/flags/IT.gif b/htdocs/images/flags/IT.gif deleted file mode 100644 index d79e90e99e9cd5e9603313cd6a840bdf23abd8f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h_e@Lxg#hB>;@;lg<^TZl6BGGWRrK`q^*uf8008nX zE?Bx*09OF<4GsSO{#?CW^8f%tuR>I|RRDbed&+wNWdKyURP`k#^BEaWwod?d0P`|3 z-~a#si2%aF!uK&TNwi7yA0PHBD|yIybjEb$<>dfx005By^foqFyjac6&GsxT$jHb` zvrG6lH#(|1Xu@dvTwL=tHTFbAV83D8+uQZ^_1ypf{r&y>`}_R-{PyM)j$~<` zXsWJk>$X=c&vfigN2Qe4~mqFl6wr9508Xa znR%CRm7_$Vb&s5cZK|NAV5G36u4JjIwyd*cvAadNI-i;&c(u2gkRrgXzA(JaHOo1u zp1~Z!#|2Lz{uU-QaS&mLiUTH^aLBFGLtOsqj%nbiaUezzCrcs&Ir3ddk(*q0 z^r#YLN|Og`f*90_=S!L`Va61yGs8_1M~g-T+VUsM3_?jN#h5WgQk~~!TEhnNTAr** zjaGDVRVBKitn#H@2zF{&t7Db&Q_HpPTA4bj?szMZuHCB0Ckarcvw>K3ZOMf-_5&nXmbpnb9*nkCv_aATI8Darq5ZaeuBkxhz z;2saIk_|DZQ8!(76eyTeE(`icnFO6!cieyl4uc(w`dP$Ch5TJ8N^#JE7~OahqK9IE zRrzLPC?&dfoPZ!^C}4B}@~EGXL%LEVY4thDBajcYD9BAw#cF{OKTF7X?d!V!nul4HsO;GVu9su`IEQny|<`q`)9 z1&8*jlA_^cxuteX#t0l9!v#v5F-)d`shw>$H|TUf0yzVIzoq%bmtom-r-@Zsc}l^JX&kD^35=Tp+iYILW~$zg9h%3gi&kz)#kFoJ zn}m<6ep?@m+qSyjx#ZRwuNEF+Q{Rq}nt7&xMy9A$C1Ba7NSsO77y`Wf)Q2AK=- z^|(rF(Di`ZQJbBw7BhqO*kZo?f|ADe_^#V>!;NP>VLuD$J7#{!wTyV@t+#w{mvAC} zkB$eb-P#&{xSmQgYM*)j1e00d+(%E&bK)k|g5tVg2S_-xWqaN)-^@5!aIS2BU3hM) z*9bbj6Py0*=^Wo)yPJ|DQp2X`YV7;(&t*FY>Zv2I>hWfq!F=$}+fKdDmh{eg^|V1R zR`!Z_&OO=J(@T!_+mA1-_vce2zWQ;~j{bx=c@ICI(91A?p7+b!C;dTqU;iqVzNEFy zeD)h4stPy|_cc#}Qfi*qAXpSc36O$b+Smj!xUBeWkc0o~%>_XyiOhVEgd-!&2vKM~ z2A+_GNV~}jVMrpXB#?$yv!VQO*gqXMgNGdSAuNDMLLn-Gh%7YX@{mYFC3b;{Jai)X zpol{$wvUQLv||1gut-HMf{lw^)FK$i*f1lK@r-4(AsW}H#x=5WhHl)M5aS3&CDIX! zV!UG%y?8)9Dv*y~^y2^lIWA}Q?z8pFi8hZ zGK`bb^JG{+xkOQ3DlTv|w1N>%pYEvhgIv%;hh8 z$w0W=aF{CdW%!PX%tbx$d&+F)E1$UmVS4g~w=AYKbH+>*SW}P}{AL`nNwsKhQ+VB+ zr8&>(0bzJvQ*_2Q+UX+^^ZDL4ExY9?ql%*e4-$|J; z(?r#Dbsbe{Of_=TNc1#*ITh(oXZ2G5?X-hMZOl;Lu+wOlEMSyO>mQoW6Id{c$j zQ9YMcmsM4#Q7uVVMHE(nj5UH=g=t#hcUFpiwT@3E;9Jkw)&Q;*gmwLA%S@TqG|p9z zb?qy*?uygBHnXXMMJi!W7FT$dm3)h(Yhw!&S&L5Atw9awJ}W!DzvAcbqo5E*)VxUFr_ku-a8*O2R8iQijsI1T}9Z(F;=bK7+k2 zbZ;Qxt5*5)j=n^)FMb!u$^C+M-L=yOvc|5REov2`_>af9zB`<`L`-BJp F06Rp(!kYj9 diff --git a/htdocs/images/flags/JM.gif b/htdocs/images/flags/JM.gif deleted file mode 100644 index 0bed67c2393eec6cdb699fbefc20c35024ba6397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h0)YVd**8l|N-;1kbaQZT#BcN2Z^EP~z|U9!aRAiJ zIMT8({Nq_kvPbyO2W)0avCC2N&p!ZA0P(i~*SkiuiUuQ~Bi5?`rocA!(JmPo8BjdN zd@J3P04Wauo4O>(*?IKSABDqIg2{K~!vN>OBme4q?$1tHSy<-VS(SxFl8t()nOR+_ z82|tPA^8LV00000EC2ui01yBR000JxKu0YFC>9gQ*XA2tx8hJl#0*Mp>0Sg0!8Ut&I4@2FfukLorfVND;ysdus$jd6&pV<1`G%tV`Ly8Bp4YsKNA-K63NLT L%*+xME({S;F)=14CLS9-epOaZVqkDu>-d|2;g6S>^(yPXxw#C% z48dE2V|K+PCnx*(_+)2iU%PfqW03}fJ3~oHiL0w?aB%Q%7Z<77(tm)Ur-#9U;cr+N zgEqsbPoFMcy!f+k;)|T5KXd2*NlS|e4?lnYyy;5Qf3s%Y4fa}6U9C7@@t2F|p9vH8 z#KcUQ9m|lwur<@(V3|SEzNA0?{$IX+wODSE5FK4vS^4?%=N~_QeETpBlj-E-sawYi(g7&(0-fEUvB4T4f<;-Nn_YF|o2; zPR>G=U0K|KnT=D;P)JBiLV{D4T~W`7mzRf!dD(JPQ(0DSeSPjD!ot!gWKYRDGFSru D;P{a* diff --git a/htdocs/images/flags/JP.gif b/htdocs/images/flags/JP.gif deleted file mode 100644 index 444c1d05c59ed6a43e63fc7cc7b809f47422ccca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h`8zxI_V)Pr`0wxU)6>)K?d|L9>-R4&_%=4><>lAc z*XQTw_9`mr>FM3w-PP6A+uPgwMn>P?-}p5(_A4v+G&KBGRoU6u`8+(~%`awbW*4FfWef0J9{i>?b(b4r)RrXt3`~3U#lau|syY;)f{r&#= zmX-Riul(uh`+0f%et-M>`}Fkm@$vD`&(Hb!`TF|$_xJbw{QUj>{qpki^Yiom{{Hp# z_5c6>A^8LV00000EC2ui01yBR000JyK%Y>^ zZ-qQvx?SNNBcTYxnl_dwY83H$CD#LiO|W?MqSQ008AJGra%+Sy)(L zKtS_hW#AVdH?TYMU14m)ZE#IZ=jh_q*T3uM=grE>+tbJ_q%`yK@!;9cQBhGDp&(aW zTmS$7A^8LV00000EC2ui01yBR000Jsz@KnPEDA};in72gNLW1HQS$WNE|=TG!hQU1 zqmx*N_}3(3k0 GK>$0)Ly?03 diff --git a/htdocs/images/flags/KG.gif b/htdocs/images/flags/KG.gif deleted file mode 100644 index 72a4d412c805708b5f27c5a38622a46e86a14cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h_@ztrYismlWAm3S>^nQ`D=X?MALtqy`N~7;BO~Mh z0Q7}9_QNy!)z^Sy}N#MfiJr@?Bl&Ha7HBRP8Y_^G{Frd3otEG4X{f_I*qA zRZ;RtLgy?j^jT5wKsN4QBk(~w_MSWUl1B1aSopv?^tUSXQ&aVKO6@otQ-kt?Kxm(j!%+|jWD|880;3=hGc0v?6DBMW3lJ+U92_?)1pojJg)9p* zFDNT9Iw}edk_CkpGc_D22{8%@3J9SS4-8^tW;PMGBO^TlAXYzF9ykXF1UWe*BmqiH NOc~A@0nyPx06Qe4k+A>( diff --git a/htdocs/images/flags/KI.gif b/htdocs/images/flags/KI.gif deleted file mode 100644 index 4a0751a221904a25343137a7a4a5aef71e112f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h@rQbxtlas-yX9F&_U_%w)9PDz%0^j|=-Axod}+hX z=jr9+wZiA)NjCP*$?R@k%m4sugwX&3cIsqPe3aPF*X>qgj_Sf#^yO0uE0F15PK%z~ z-Z&)b-BpmK;Bbl4VSUc>-FyH5SHA!N*4*%_xZmPJFEmV*2Fo_ z*3sn7((l~9Q)#JVahYm_&5fD6=@ diff --git a/htdocs/images/flags/KM.gif b/htdocs/images/flags/KM.gif deleted file mode 100644 index 5859595e809b6e8a98704cc408a7267920ad3e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h01oTx)d2YTQ~LV)mxr|gYXJ84_5A#D>GSE^G#2{$ zYS`=8Xr1@rNGhkd+*cC>-6gY0NwH0 z003D4A^8LV00000EC2ui01yBR000Jqz+1paEE)sIKtVU7P!3SVWh$sDAC{b~gnq9G%<3I~Ib&TxZo_Wz4GoNldUwcoQc+PVr+09H^hX}@W4 z$7M{kOuDfv^id$~I{@0++TY*cX=h@foQj5lTxDTNZ)#U`Z$igy0G*nShJt3@0001q z00000A^8LV00000EC2ui01yBR000J$K#gzcix?9~4dBO&K%OUyg~VzZYz-9Z=Ys^k zsf(+i7|j@BxE&= zfD;Y}2OkwG5e67L6dfQd5*3^uo+`r_g2Jw5vA>G4cV05t6HJ39bN@c<6qBz6D!#KiMNMeIXE04C?|QdIlO%H{9> z07CBU008xJbKL0q_H}mli;Lpz{`=nD`qR_j>ip&>-Kkf?qp>#egEhb6n~@L!P)=#kB|46ne}gQ`^d<%&G+_& zgz!;PA^8LV00000EC2ui01yBR000Jyz#3&pF&GI*f<(fR;5N{WXj&?LJ_tlX2FuMr zJ5OM&P-K258UXfsX&j7@#S%%e28qiW#EbECBM)_V2?7lO9Udbj9wZI{c6b7Yh&vTN z6(I}{gp)QdhzAE6438<20yZcuh#(3-4<{E55iTtQCMJ44S6EsF1uDV|#5YPz91su~ M%quGs&?`XzJM&4QW&i*H diff --git a/htdocs/images/flags/KR.gif b/htdocs/images/flags/KR.gif deleted file mode 100644 index 1cddbe75b3087d8abe0be4845b8339b490d1f713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=2RNk%w1VGsZd0M!5hbeiF&rli!=)A@*pe0+RUYQ_6SMf>yfXlG~P=jHkN z`NYJ;-sIx-_4V1=+U@f4{Mgv(>FJ7!ipSLL%F4>_4Co$*W>Bw*WcaQ;os%!>*ww5^7Q%Z@$l2x+34={uCTDs*VScizN*CV-{0TH zd6Uc0&-1ah(9q5D_4W1i^R=DBqpaE5+}zL8(a+V>{{H^`{r&Xx^z!oZ_xJbw{QU9v z_5c6>A^8LV00000EC2ui01yBR000J_K%Y?9={z1K%}De~FnqtCW1-9CdcEC-qToG$ z5ecD|gFqAx1i`@z`EU*i>M$@E20IjD(Ez=15iu`z6%_*-4mu4O9XMA#GlePzEj&6I z4IU3y5i%#DGxmY1OX%fq5vlW92*%oB|R(z2m(A46FV>*2oyUO8a)aN fC=on74Gj?iC_BeXO$-bnAQ&bdDK-`sEMJYmMn>ov z8Bb47;^E>l>J20u+s5T1;X@Z*S%*UzWbssOwF!_RG6&GQb!{>9vG+m7@|Vx4Va?&x;h|s8^>EksaoG6! z)kD0~h_BI+aM9+z*OX+^^?1j!Y1aFT%dCRUyWhV6pVFt_$~foGMu({bf!E<)&gZJh zcmu!xA^8LV00000EC2ui01yBR000J)z~48ZQ0cPx# diff --git a/htdocs/images/flags/LA.gif b/htdocs/images/flags/LA.gif deleted file mode 100644 index d14cf4d82c62f716ee124e1b2afbf8bd79a41c0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h@;N!BW|MW1+gp6p`T6;WLw!AE%7&og%+>Dva&z|p z05o36ggkg`i`%h(sQO}J`dwX}Ta4QP0A+*K004**002pC%;o9xEm*|-Yio;0fSXi= zWQ5rMdV2LlMC||ou5z0I7PwV;)8qgE_fk^#O-=Y#SMe_|03*I%f!Fu<_ic#Qe>8A$ zjoVOl&P#I9?eO<~n&4@O+E8@RvUs17PJ)$HiA-?KpJS82kg@FV_MTsmO#nY_15fb) z0Q~>}A^8LV00000EC2ui01yBR000Jyz@KoaC>DLl&*#@^b`pt9=J9}-NTp9NN27s2 zfxs>j*=%Zo3hK~m$R+{=Vr8it29&j%!+{Y97c&NfA`~G9G8_W}e*`KM3kC}=hA|u| z0|Ppa7ZwW(7&n!eA}<_r1D_Ze78E=VIAb<78U+luEG#t@3RNaoB_19C#3#lQNIps* MBh4cc(9uBvJEn@1%m4rY diff --git a/htdocs/images/flags/LB.gif b/htdocs/images/flags/LB.gif deleted file mode 100644 index 003d83af5e0ac0bb96a30dfa4932a43915e3fba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hD%NwCGBEU>P{CMGEg1KS zeDQ2t^78WW^z_5R!lKNh@M2NS003L0TlxC>(*OYVfpqR(PCb)7+W-Kx0092|{q0*y z=0r06{r$uM0O>_Cz5oD2mPARKO855m_4W1hdTsvx{`2?sg}Q{x-^=AcF8%xb?N~@C}y*Yt0X(b7Px_hsW==K zScqkVAP_zl5J1Dut#+tdU@{^ZNDhF>)amse5+XJyb$5AuelQX`AtEVucLe}_JvR~( zAr~Pu4F(Jbl9e|TCjl214*@(3p9K^p8!TlnA1VR@3Arsk6jxbevSu$FDk{865gr~O M%o)xZKG8t{JI9i#CjbBd diff --git a/htdocs/images/flags/LC.gif b/htdocs/images/flags/LC.gif deleted file mode 100644 index d06b9559c3db1260096b5fd03a3159dc0810fd36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhcXNk%w1VGsZd0M!5hYQ^%ilDV_u5N})B8U=JcQKwl5j48(Dy8~_>0r__0&Da`udjI{LP^<_R}T+ljZ=O>i6v} zp5FeT`TB&;^|{#en%eq(&h~iC^p@HA!SDT=-2Ni3^N-g10FB_7+x?Q*`+dvupWXXO z!v1>9^M%{}&f)7pz5LVQ>HwMNlh^m8-~5i+`S;8&^v52Z+xmaa_=)2Cw9e*}-uaG( zgdVK$A^8LV00000EC2ui01yBR000Jz$LH(l)}qObkQiGY6%Gy+1tB5@6B#WDDHbO?0fHY21(hBd zF$oqb4IKy<7YGZL03IkYH7X|$JrElk5D@^gD+dELCk+Z8Hy9W=JO;D}5-d3*HVh0D Z%oHLnE42em0s

    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 IiI0{42Y8S-vj6}9 diff --git a/htdocs/images/medals/prix_nb_lit.jpg b/htdocs/images/medals/prix_nb_lit.jpg deleted file mode 100644 index 8b04fdaaa43574e24bcb65479425001467b5d0ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9983 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 AG5`Po diff --git a/htdocs/images/medals/prix_nb_med.jpg b/htdocs/images/medals/prix_nb_med.jpg deleted file mode 100644 index 26a8cc15595013da033fa0f478a804400a07c7d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11141 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 diff --git a/htdocs/images/medals/prix_nb_pc.jpg b/htdocs/images/medals/prix_nb_pc.jpg deleted file mode 100644 index 7bc7b7d041217c43b47d3b1e57632823c394a198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11209 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 V0d8uW)RklZHw^VZko&&+e*nd-e+>Wt diff --git a/htdocs/images/medals/resi_cvr.jpg b/htdocs/images/medals/resi_cvr.jpg deleted file mode 100644 index 8e7301cb748b6f723b59c3ff7e9e17729aed925f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6158 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 FzX08nb!-3t diff --git a/htdocs/images/medals/resi_dr.jpg b/htdocs/images/medals/resi_dr.jpg deleted file mode 100644 index 22f7585f1e18e47f399256c301e11fe89e2e49dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5804 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 diff --git a/htdocs/images/medals/resi_rf.jpg b/htdocs/images/medals/resi_rf.jpg deleted file mode 100644 index f31296706d23d17cc6f0ecebf21d9a77ede91476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5405 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 diff --git a/htdocs/images/medals/thumb/.gitignore b/htdocs/images/medals/thumb/.gitignore deleted file mode 100644 index 66b83c1..0000000 --- a/htdocs/images/medals/thumb/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.jpg diff --git a/htdocs/images/none.png b/htdocs/images/none.png deleted file mode 100644 index 06f20615a7d5f98381e36118344d8ef8499d0de6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13098 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 Eg0oIb3;+NC diff --git a/htdocs/images/oval.png b/htdocs/images/oval.png deleted file mode 100644 index 05fbe121336b60d16958ef226c00285d3cc73e1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1941 zcmV;G2Wt3z)M= zT!@Akmv~JoWxPi8|Nnj!V?rtwy)H3|3+u=-Gu>yqA9@%;wgInEne%+0iYkVNK2JT* z+s}LYJ!19E{YXN>M}$nbAmL*}f7r(b2muI0x|hcmar0}8{qO!Ek_lpj2aom&0^E%LmM zcb2m3GIQ@YoV7hQW6K|rs5+&84Z1eCW6M`pC zUr?(z5kgXyU5ajpc6%M~std=s<0A>5k~;C=HQ0U41ZCOneO{7fHJ;DSbLqm_O3mU& zA(>!dv4z$KAyuVfMTa{x_wmkcQL+91frL*(w8Q^=v+{Y!G94gzqGc$`VyA<6v)|Qmkve7A!a(^|G2N5hHc=dV_tqsmr1p9UNk6v7n zY;w4W7WnhwW2`MGiw+?K-pnr(5eTXFB$_Hq&jR!vAViW z@D6JWoGp=3@$C6LLK+bAuq3NeeWguRhk1uByWE-iHPvB5j=T4M$2*I)1>QTP(yXqw z5kl^&W^ylrSr?dJYN2&jF*n5(346vGj>YA-xWKNqxjV^(;K^Sv$@4l=zO%^`S0rqW zHN1CyUPviOc=m6@660%Z9&m(_u>sl zw{QrdkRaG-7tFn0rdA(8>5LFO5B~cETUyd~>V(0F7WnhQBb>8@;88kbVR?;C;gJZz zi-4LACuhAz=_` zt+qw5LeSqSDT$Gb-=3wtu}ZtWMp1ML!80=2NOvw_U^wR)8*BESI6XztrQKd*^3*62 zB6+6y>dXl`?KQlw_6l9Sav77EUOy@!VSlTXQt|!O@6i2Tx8>w`1FhnwT}DPn>KG*m z-l0uKUTbiB`UYC-WSa>G5KMA=`X`LZ$!iU?$uL^ctmi=3Qj^8V#S7;sdks&m4Ow32 z=Ns2hN~OD*uq%WR+_?TD+GJ#T9jy()JH9@5iWnWlxV7+)1n>Cf+-bU<>dDfWoJOOG zF&R=O+f3LADJ6NHlVvrG$%!#?c5;H?N`iMl-2QYa1k`JWQzu99&Q@;^XEmm8UPmR{ zOxTe`2yWf{sj|nchE$4)@lk5IhUoiA#V+y`IeqE`&RJscD5c5rI=83)ooq8oIZI1E!lNOhTM;@^BPK<{@JvmeAx3xLn8N}6E_DNj8H1$y{|Az#ZoqIqO&*-; z?}tN9TCBPOOUtYMp~O`;;0FJ>`%4<<`PtS~M<3^TYx)|xSLkm|^@A_@cr#;TE= zekhy#KqagGfEeMy2jqDz#5?fY;UwClyQB8!1Ii b_~`f_7-JY4bO8|z00000NkvXXu0mjfP!h78 diff --git a/htdocs/images/oval2.png b/htdocs/images/oval2.png deleted file mode 100644 index 5f7dc0b1746ed1a4f41a7ab1d9ae9bac37bcab9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2159 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 VGgnB{sPr#hzui;*q~GAz|JfXR?jisH diff --git a/htdocs/images/puce.png b/htdocs/images/puce.png deleted file mode 100644 index 2396856d636eac236dfda7c35177f96b79ea8eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmV;A0dW3_P)A(GE{*!Y8KcgoAKv{kvgb-3dKavn42$T78z4Dn5;*|Y$xXHKE+2fh4 zC24-jgkT5-LMoj;WJOt3`yQ)?yK8D5vBiYi5W+teLah7%n^e2Nfj>7chr@HVds@25 z1wfW_oh7W{TZ`asv1-4M)0|%2H%*;HOOIM@Z5ugBG9e)6RU9m_uBqyvcT{iUjE&K1 t@%+=2#57L6M1~N$4jE}fgwSzqn_sjcmtzu~L4E)L002ovPDHLkV1o7=slEUJ diff --git a/htdocs/images/skins/Defaut.png b/htdocs/images/skins/Defaut.png deleted file mode 100644 index 6443e80e3e450583929e5a6a04081912cd4b3509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21449 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 A+yDRo diff --git a/htdocs/images/skins/Keynote.png b/htdocs/images/skins/Keynote.png deleted file mode 100644 index a49f4fc880de6538dc123d7e76596e83791a8da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26937 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 Q=>Px#07*qoM6N<$f(M8D6aWAK diff --git a/htdocs/images/skins/Linux.png b/htdocs/images/skins/Linux.png deleted file mode 100644 index d6e7983acb9eddfb5a4aa83fab08d884ea0fc7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27242 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 JPDHLkV1hPo-0}bb diff --git a/htdocs/images/skins/LiteSkin.png b/htdocs/images/skins/LiteSkin.png deleted file mode 100644 index b117123d393b98ddb54d5507c314ab5d2b53de42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22636 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 diff --git a/htdocs/images/skins/NBviolet.png b/htdocs/images/skins/NBviolet.png deleted file mode 100644 index cc1c53fe9f0c96264a6dc1add322bce90607fb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25345 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 T3XMb)00000NkvXXu0mjfc)X8h diff --git a/htdocs/images/skins/OldTimes.png b/htdocs/images/skins/OldTimes.png deleted file mode 100644 index 488d7bfdb2855150a23c84fe01c7b0d25de0b3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26959 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 diff --git a/htdocs/images/skins/Trapped.png b/htdocs/images/skins/Trapped.png deleted file mode 100644 index 2f42730dfebc0866d993f6b826c7901a2253140b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25689 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 diff --git a/htdocs/images/skins/default_headlogo.jpg b/htdocs/images/skins/default_headlogo.jpg deleted file mode 100644 index 35a296e59cb825a2899758d20208634598b0fe53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3534 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 diff --git a/htdocs/images/skins/default_lesX.gif b/htdocs/images/skins/default_lesX.gif deleted file mode 100644 index bdb52859a57e4689697112fe49e1c88a93ca6b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmeIxjXTo`0KoB|ZO!(}%Z3TzW|mbXI?8scjS17sq|RJj+Kn|yLS5wIH_fs|MxIII z+2%E&Ru`SFWz(}oQ>ol2_XtJadO?p##ohfG_dI?7gwOMQL&LWPkl7CaB47dl4u_MN zn3$H9mYJC;5D4<~^Gixf%FD}ZYHFIAnwp!N)oQg~uYdIDk7X% z)JLwU-A|so_pqX73*L)*Fb=qoAlDz+=XNyD8e@k)rnsp^fztI`HTYpO19sb1Day@^ zKZ3AX48V8bX*m;cgPfFnmx34x##-&lhN$Th>%Xd2T$U@~v&(#$FHa-m=QI#F<*!Xa zhcE%Q0LR223TPcM^nCIh9+)0E#7?mQ?S^wi{ywpM9j)6*;Nn`XiB($?Ar9hak}}!T z##k9|!CDPu!3%iZLNh!B@DLAC)S^-BL5S`VRSc?ngqu9}C}FUWPrXd5FS)U`vf*%y02YYnix&lCQe~BS3WX^H@;A}y zuiVwGtTJB%YO;_i=<&w048OnY;G(tspkA|MuZnQOjoPB94J+5OAA=t!n`WoU%-o?e zlGkO}8Z-o;0h#17z=~MaaKS#pQ*?h=wvt{~p8&N!f#D}h3b^k5^kqTf5}9BT@sqh3)!0HjJ<&4M&!y!zGq&B5LLzlipXMAR`n13C zg`^OM+^NVjgBe;phtv_EzZiNzOSh0yah&ZX7+h*FILq|-T{R}9YJ zqWgzUH7RUo#c_IeY%DCg_@O`?#BiLB&2a$%UhHwjNRk)g82+* zDykHgo9dzwUq>4V*c4M<5HzC_in*3`h-F(l48R%1rMZ@?@tBV*X$Q|&R_UrG;BFq+S zJK$YsGwVyIY}nai_QycZcQe_rIKz+mAg{JkP;4tU|#YNH39RR?x{4c^FgoVKa z0Mq~_St(tw)w6EDY*RfC0m%AERp&*!?fKu#E-6MD+&+*6K&>yWkS|igKS~te&$nOv zZGnaMxA~py;+vwnuxCE@OQ-F5V;$jQ#r!T3ci$*+B==h4XNi>$|G$Gd4xuX*~ zBDRyJwr7X&eix&oIZ9qigXR~{dpts(y*cU4_p6S6534>|+uIh_dpmxN)<^)7a;b~_W^8o%H_Ea-g#`}qK0IXJ;S5NMh?Qy%YITM3=r=7yj4 z+S}YPWlG{(4oo5EYKNzt4+hfEUG^Lc+JX9tz_)+XfnelGuYD5ZmM@J6BCI-vM`h^f zqF>Qk2!~~5K>>2G^FVUG8W_PKE!cS+61}25x6J`yij89sz+9=d$sLHVjH#@Ae(4S)i+C(a&Br;}KJd4i z%KO3gyv3*)hAGYfk1H)7zPvY4%MHGWQ&pw1Cg0x?JqCJI zM6L={W+6ny0`xuYv1cP~evE7Oe~?K@<-CXYNM z_v2G{t7(&0T=#om_~vEUZw>Kgzl-zWbsdef)1M6jIgq=6waaCzc$}O0^C3tiJ-1P4VFm)OaJ zeI=L=RYw-vIz`3sa6w=ta{w@q8Gx@$ZR0WVR4ZiEN-E2#t73)0LOKsmBSK&a4>^J< zLrs8*m?wv5rgUQ=+jSL7XHiKn00U9r2S8vQH!z|mW7GmCI=;CKUxWv$`5KS0?Kh31 zb8w1j=C4r(03a5lsHLp&uu8`2b>x6e<4kVpTh~og^rTSp>m{9|&*9YjdGDsgdysyx z<4f3X&~L0Ii3X4H#Uq^$MOc@~46%E#gANvI1)O*?)x?7MAbPfZ|VY z|8Q{gE>sl9wn#1G6Q)YP!7C?witkrsmGDy)&%K%4jJBo-M22faMM`%K`DJx^(B z39FpNWif7kSlN`|oex}RK$p!@ps?BZ6^357xb^0G3H?_QT8R>`ED;k9^>wJ8qlFjA`X29n&d5<>Z2;ZQ;+4 zkRho}YPK$HW1on*0+TX^6~_iv7pO;IVo-q>EJ=up6-b~AI8^y*H2AqMKGz1d*5J0% zy;MP@)rl2-$@_D6VW<08TAot~p-9=}-=5xSKH@*5uxnL-bGi&l8c_fwP2oNSoS}#-5 znnaUnXFdpj-nzvA8Aw|-sEW|?TU)n5C#vn@#Pi|PYgk2XhLk!p zWpc`VS~5LMMU=x=>c)v^e05ZWh#T#1}-E;3roEEOV=6{*44 zf(#tdU>9t<;RKLv__qP}9G*GIqK$L0Oz=zC!=!K{6Xtjp)n?U#b$?KFIG*px+FNHh z-zkvEBd9*A*h1T8(IgsY+A{e?V;dQ-8&P4yz_HEY5|K2JbXDBlrdy!A#vYwClnNMW z0gsrQ6A2@NAVtCVxQ7h?eF7cR$!?%eQf|8~mnEC(htwAJ^t3jy5wW(GmJ+pW%fL!o zZp;u0vPB>PK0p>$d=_&g+v9r*C`GsbbeOrQs*pLQFAiuP^b5$P)#va^Eel51Q>T$% zz>YC;ETR<_QC?r4sW9Dk3V0HlceKqBOQ*#|(_L>2*n(WVuD*N7>C!7LkVfDDw^G~% z`)61|Lsm-;Hfro#z3nXcuZ6mNo#{_O-c9? zkX*jJ&=z)~d3h4Jn3@5#uQ)9e6`4(q4Zv*Pe9n92kkoaSX|PiVN=PU!RF9Y^MI}d2 z)hPs4hiFE?;E@1XoA$@~V=xtt=Y7~W#_%{rw6q1K`z(RH=AYS@>xhG}S8?;B@S}=z z>&k%@G;Ep*f#W5=D%NM_mG={y-|M#nUpP8rWJJIULu_Rrv8 z{xTB7Nyr!snwO%XR!&5XD}ggeQknYk`*me5Jp4QQ@U(QB=Mtp5Go0O^&Fk)&4NI)$ z$H}B@bT&N50wGdq*?wqbKrrSoPwS76*H1sZDaa5f76)z`ELfiEPuhG&VObt^q9rNhrY!@@lkIoGe2= zU$tpJD<&#pR5+OGCc2D;(thbXmPObJ0l5PICKiFbmwquLyI>&KTG)Ac$Vvie8(`99 zS|})VSX$_sY%u#ZLj~1_O3sto*kyIC$q34|8{A7(UuMD-oL~NOf6KXsY`*wW+psrK zp1!vR^t`ri6jgySYLoJd!SI6dI5aLWB8;B8#+Sb~cm}!;F~6?S%LJoMO4x4ZiW#?v zzB~)`Y)h&kVxc>&3l9<~YnOAw!ZMe&2X>8a4bKG}yWpeA+2$4yw; zdBO z;Bjmu)(Y62W}}e;Hbcj1j3^gobXlbnFlLJ;tkm4#ONf>by2xpwa362Bm7t}JGG$T8 z(AH-FEioB)I$f^TQMPyycXbix6so_`d|`kZZ!$E47DZN?wD5B5nhOf+lE6c(bS z0Vk8az58hr$@QxjuaNLg+Z=J-wN2B$rHfaVcI*C=4M9=%V`@!31VxM=S-OfSiis>u z2+HGgF*Pn;QwPVB)$Zz*k`5YQmaj|S?@!<~#2Puy4PGwO=mFY_14=mMdPUhS_gjdz zU0)x_?+^p{CA~&R+}9J6yr|Qz{iV=+Q~D?1VG}Lv1+B)=$NA~8r`J~uDac|K!lL+9 zm8#)jv86ML@v#$)W@&YFx60{`;e!*uc`(z|4DVJbnx@Ve#<1k%q`D!1ipM5Y;bkJ} zM>8}P6Jt?fxRBDS%a^xCv?NI>MfY*g1rbmJQ$V0LNsGa`4q@9oZKeD3u5Fn--}?$C zwjTpYzg=vOD{dxpJQp)~@6@R`Q=*;ya4M8L7x$nMs55Qc2nd53Yi@fl^ zIUk1%^L>#ap@?Ic(Vdqh^;T-s8YPw)c0;UpI^?PG{};of&Kxd!xy$B0C2n;%Sui%g zV)pXvfZ>F%rI!+;2j?M6>Fz)Zvr68}cZ0xvx8?IA`Ol>=NLDABdWKPb%L1VHRnU1u zO5jN=^>;av3XmE=NDrt05W*0k;gcK#UHd~`bn3LqS&9`G2^H}GN|{AT`w=*V(WV79 zfuyRDv}z|t1VFH>Xf;ohY+|#{nCT!r3oY|;q;#avDezkgT|cDJ;&bZZpkHi&{{%}!q0xzrEKobgab8r^bkH^t)DrHv?ZzmybB=MNui4~@&!!L zV$$|X*~E|MifSJ9EVkcKM?c?sd%rmgR%=t>0s9jKLmOp5bZ${}fe&Gm4{tp*emh(} zbRg=@tl(mc=ckR$s+#b6nCoPAj4t>MM}5#d4jxXRHcSL;145LvNYQLyM@rF7#oXA! z3=7Fw(?=Z)G)e3+FZA>TY3-74F`D&(2vU-%iY2*>p;w997HBPlTG&S8E@Ojr=OwXLyT&aIXtvNLBK5b~e<*MC z(TELU<6GXv(UO>{*dtB$w}TD%S@3Iv|5iNrVZ2+Cw}3Mq_khW*;YZgHf-cHwzOwYj z>}}qBB{?tyR;9`!QAF7^hk=YBL!{h<JcZXhmEOeS%;Y&%4b!28#pbc7r1DLiDm39ZSP%x2~riBeRA0wYD zs}*4+s}>cX6~`F!OJIvASKX1q$>&L-H;(t?T8)7H*ZQmF1U0=Vn2XKU-6M*%@1k$2 zqDDm^4T-Y}{p>duGWp;EJ#ci&!1`Lib*jYsY1c+HyZ>&92<9nStRBNxbE4ewA>#x8 zo%+b^wp%+M8Re#cww6{FG!8*WLB7`a0Z-na9c3*0M>@M#79eC45?VbcuZ-C~JF%Z9 z`_w!KJbx}Y+_t7HY7QCEfZ;fN)(F{u5R%8I=?Oq&1O#Cb?FKQ0+Qg~L4IhOIkL^6( zM>O?y4`4kEDz~6CB6xI+tPpOMAiwBoSOWNxxy%BiQ_*4Nqsu1 z+vEao$IWh?k^u;$i=an2X4yNn6Z_f>Pk>Bd34j%$2LxKl;QY4Ez`!wPPYI|y5J?@o z)!2Bpi7a(m?&4FYSI3n=z+S~(Z`3eb#)CZuDqT(lYAGwwmMZJ2Iy6uDKGLN6^ zyzS~%F7C?G>nZ8Ms4ZwX@iCF50uISVKH`z9AtfB2ugjE8iaQo_o^9x1QPGO{=97A) zR4&kv0kiWcZ+P@zfmDR74V)ttV z;*wlpV&ZY>SUdIG7vmy`R(CoMPg2OdJmiV{c>~l={-KY2=Z?qO5!~ZEjv=PsMfpNR zHePB#?})~V$Piat^s+TlcLvlC54Z0kB(-eeuLBpxCF%B?%UH7#80slFENJ&LIy{^% z`xIlkn8)h_BJ=v`fVvrUN?_gkK>Qf+Sm`ij=T2*Ff%Ze1>C3Kn_Pnfij7m;9Ku4$O z%TP23vABj<4PqTDVy4j z^LNlSO9~f5vCq>ETT&L*rU>!f^6_J=&fjltnI9`%_8zx`ZgtHh9`+ty9?caZNr5_0Eb+;Y~a1;liS$fjy{ zT{ga<^VTt)lilJtIq@HP2%|v}k_W`^MSxr1w|1+&vzFlw(hd?$6hhyJw>|Z{rA}3T4l%{02uNBk`lFd^z(np$m;Ijil9u zq1~zbE7cH^I)G4LIVj;~k+kaW<0r)Ry;n%&wxmn3e@iu&6%$F_#fu-0 z8!SqLIV%|a3GN_n>=+Y>!U#Lc; zvcCp=e>uqesyvizhk8M>x`s>h3oxMcHG~df8K`BAftT3)eH<@72LcXVaHY}oRJh&3 z>h0ZzEc8Oc%zWmuY7;7ET=+x{k{whXnoOcfJrw3td>_utAm{7voF2~;8tb>Aa77IP zx|p$X43T|4AWA1L^J_a*I`-IX?k4*0qdG!t}1wvjHKmrlFsstu#;g3s!APBj97RO$U`j*Xi-^76v47U z&y;Zau+ncDiJTR2F(Dmz$m5;Ebstkaf@3-y#7o9j(2G$LHQ+lo}(P zG8#v$eoqHe?{lUfIy+16*L@u=Pd8>}WayOG)OlmKB?B3P5Uo!_B!4p>U(QYYf2~LP zO{Ir?kFFn%H#j)fl@RVLY1M|?gTWdhq@Y_`Wy{Wv-3OCVdLH2vMocWO%q zVOC8v0zU9+wxA0(9M$&D8KNttDWlD@dmP02vVMpHq7o>o3Z^N(x?A$w>PMpdm-~IJOd`OM*Xcg4 zyE(Y%$i+$b#8NMXL~5iMzs_Kx18D*;G+_==I3+JWGX@@81|^ZSQVl6a*H4suAHU}_ zW)`;^C#)MG7xO&f7viuaM(%T4sTD+4&0^F&X=Dm6-E3N?Z#&Yx*4hra_QzWmVefv_>ITKb`djQp&GX{qA2M;51!IYT8#U*S*M|42 ztPB4y>vZcp>QD34W-L>p?k<;G=MGL@O}X=-v&1kNnT3}61|T?sUx}-BxGI*ic#1rA zg`l9kc5z|uiAal3wTP{V$b56nomYCh6Tl|&tFRkwn^5=~fT7L2UGgU?`I_Yb7fu-z zMWHw#i)r*18fq;)K6obhO4gOCqzAfrpzb_QMkX5$-mwdUBQv^4M!6j^3!t9na~v$% zPDs8s19eon3A?-GFYrVmX_$pU(@$C)d*nK+i>nX1It1x3m9BhBA#jZHTO&9` ztZSAA>;@{KgcJbmEn@i31|=a8kxr7j`JAljbgOk1>$h{0)Q-d9aywU7AQu;d*=zg8 zgZsAtf%j2`n)knD>0-A7Q~~$yAHH_qMZesiW_aEUwZ1NxE&U?N@;sN|BwPaDwdG1m zh2dx#H04lODAK*Jyw~0w=1A-k+}x8U>Q>u3(y_=ndack^$qy8~zFU2UwmDB& zo*Pe)hk$C_-!T`4Y`*!5Dp@&zl2v6VbdT~c*55Q7&mmdi z9V`LYMDK#ysC+d{_yTVq_WGNP%!9zx-%;rec}qc98aw-p=S?u4EFYu_0;7Ngx{>YX z)zLKN%bYCS3wlG~1yff`AxuH_P&9nG0?v?>h!9N?df= zmkX6xQ&4bL;)9iYlX>fEAoP2y(eBlm*8SPKUq3=EWpF5JC6LQKQQ3w?)`IxV>$w7J<8mf^$+^h_ z$*|RLZ90mewd*3lUy-3%6~O_q|3}IsCpwL}er)8xwv1jm8aX~~aU@=CM-I}*xO0qW zsqSq(@08ZxMdP#=q=thasslg>LZv#JpzhI8hOq6&sRo{q9GRcv}C?bzht0XmWU zGarZHmTo$|1l-_gnoRlW8fhtOvF!bf7$bv>AtMwm8(P$eZtPN0f&u1KH%|qjCX)t= zv;j-0NX1y?Dmva-5|8g6J0b*Ym=G%Ebl~$Vf;54ITbjtI`SNu_I8iMlFl2PH;(OS; zO0*$v3M3VaycS5P(%i*+OD;eHAnLE7v1;EKY#dgt_CB3bd9&{QsoJ+U3BmX5#&*un z?HMuS>t@|&uQ!uf;@!5xn$?3_PC@ zh(DSp*IgRGD5|o98YI_nR zAl`Z7#>Wm7{c1D>oxR+PLT=NTJin5V*9^I;!mQ>0HMpBG!P}{Z4Fg8NFx1O_fe%9q zl;=MMuDVt5uq@a0<&>10M0Wg2&;-}+1$1c{ zk|yR#p%lSVLsM6gqzuWw5CZ2g;fz@s?p!IAaG6@Lqk_6Gz((vL)U+~eiG}c}%+uPD zwDO{ljS`)ZV5$yC$A{W3%ZHk?yvIi-PqD_c?j=)&7IT@nDC=Ms<b$nA zDas!%Z24t5T!L$+G^n4-N;80<9P?| zOuy%F@w?vLtE)uWT?0Iva<}gKk%G7mEE%yOU;@v<8?SlMhjKFsIb~*g1SCyum5D(I zS-3DMeEBQIyKMc5o?E`|!-;bG$e7re!37)~m%x?LdDwJVbrW3m%86Xa@zS8J7+;&; zQb90M_)a%neFU#1vvzOSFA<+#aj=CQaP{0P(vtjrDU)^NVQCd64LOTY($tqV*+Nbu z#>aN8_(UZGZYdhyr5y~s;AGA&O@JLqu=$`~)eLr60qaztMQo*DW7iW(P4?%D=W3dN z;72t$i7XH5TjWM3fCVE}<78AJx(tTIO@9vwh3m{Stv|*4ApXMarihyv&>!?+!}s_7 z_9{NNY4N_ctD3eKoRtxFF=y_^}jTV#gt!@ z_IW)|DpYU5n{VN@koW1UR@1lP63~5E^Q;{=AyZTeNO$;Q_@|<&Y;)<)`L}EQtcF%N zSoq-~_=3MKuoxqCd8Po}*&$&fMirQh3^>?8odhrJbu%(i51@w40(Asp zH7@P+c((V6SgMzi=}9N>prk>Z_)Yti`;2N?I&%vlpbqX(lVb^vj>eExieqou{VK-1NRnIYCBh*{W?wZvKYtlL)3 z5*aUtt0x&blEhF+(`aLCT?k5`Wpx=1yZl&haR8D6lNycZ3#xrFU-+@5#i!-!aR5t( zNJpaai}Tj~*k2D;k?*edgOaJBd2gI-iMkX3sk)3ajC3616-@7Ng@_ly7~)XXZ^v!( z9Fx`Sz0@7xGb|(Vx=}ILA#pWBM#wJM`}s?Tti)sd%U4KakEz5u3*z6Ix5)<+zXhM# z6#=8oE~^WdW?^Ar+_I{$VR<=vaVyAEK*Q;rA64(R$b-M%@SKMKj!vG~dzHJqyyKN% zSol4MnfLg@(wkB_>s^Q}?|&+Qp5k2EeNUg(E*$%h^%D+goGB%eW826FtLO?+YJ9W) zk`<$#Wx4qji1l{<{yb8Vc!ny4`1XFSVfOmVOtk%q%kCGy?|PDe>BDxs7Voa@i#!%3 zxwt{)Z@QxT`FSo?U=n;yi1lXnQ!QjZy=T?)Z6Uta_+iaC;DjuV6>=xg<^LX-*r~r^ zNPwb$5s3(SwPEKO#c!417@6}m<`OIbLh4RUHj;FGa2waB!PZLrn~G;X!7kW zT%w_fP{l!)Y#e_@s*!+#QroHVy(AG3$eFLKii)JQ&=IpRWFo6t)#5w3VhdSB5_f@w z5?!e54!4|_Qzj+O%&fL8(&K2U>E-Yf{t?!UqSwsQPRc))olwM$U$Si9Q`7(SOm?v> z)<*V4MEFDJ1C=1JQLJN;w#F7QGxHNC!(ERgoqT_D=G{#?Xy`NNG2O0iHrUQGME=CJ z{!&7s=k)K>;b7Eo-nx%nRoY-oI6U7u-Nx1mn`*c_{ULpDsW|Nw5%@HZ=mw> z!rNeO_i_eZrf}~`7BLNycEZheD%c)YNfuX0 zPPQah(KLx(eHOj~Oh-?tFHOxYRaQGPY~kfA5D=IG5QmdqBfT% zktVgRMj0Cjs1c9z{T0yf+QgCraq098`tpbHMcmei#F^L(8|Ys|nAtvcd95_qD0DS( zMH8}li=R&Yyu)p@9!-LFsER|AP!Wq@lQmRDi%_Zf#gyKLs*PjSglvCFla!%O`e$c} zRH`|E?$|e`WfKvE430%<8anvABcN#?;>ewyv>7_cOQ}Lmlw#0a@i8|YofX>GXc9y2 za3-TcmskDa&TNT_pR$?R=FabEB92d|9M`aWXtoU9gRI6ataIf5<#l{JDvs*k+_5v{ zfTN%`SFcD3GPRmhs6++I5TJ(gp-7SZV*IQp4@-ZVqKg8H#El|iQDzN~t!+UU6GDw1 zKgd)?U3MChlYkf2$1Fq2CR05p-=THYC_1%9aEm^ICc7A~U;C;1^B>Z@q{9xPpT18J zh`(7wi9wI0nVH#m_ch$$OoO^Nia8<|$(4_stMaj84D1-DKNmjvmLmCwr;>Y3Ui~=| zn&H`RtnE18mpFIdI()y=?=4;6kdiIr*Yh{FD=I2l`2M5g;k}azI&b%oT%2jN*zjCA z^`0q|GmO%h(7tA~cH647-ft|0Qa~D;aSL?utGvG_+H{-HZ$+5eU{MOUU3Z=!hGSCv z?XEPcUc_aZ9$`?jQV1Nvv>5r0yeR(EDqc1_y_^Iu-&*8UACpg7=qOoHSpA?G$W+KleW>e9cnLG@I7NGW1R> z|5M&G;M0Oz_1{I{oJJ<;ciAs_RwDIjT+3vxp8{=ny*K2?u`ZurhucP!pX<&4{N&pR zHfa2;_BqJ<;ScUj{1rDb!qB&Dd9;ONh(lNJPvjvLQ0X^Lmx5o|+I`N}gur8xG6FK9*oyC0-0#|Lz7X`%KhCL}f9F17EZ26z>g*Q6 zoH0w*Y|HT9R}XG?w`9F=d|sR7;US6&jPLaqugUK<==S#bMB??8&8VsT_d}Ll>r0eE zFp}@xM8SV02QoFEx>v_H8*IjXgCUDQ+J6X5pn*~r+>ko8Tl^5GX9|yv5ra%dmHb&! zC~TQy`FvJtIur=MQW(ZGxb2#U5h>>4t$03ULw!39KM8mdNlaa&H%<2#!=g z8b`vDwfYji+E#PQ9+eu#INZh}Tv6@#V@Gp?Mw&UeL zPWBwbmD@bo-j#kKH(2%vtCGfQ*kB!bvHwG#lY=mKv&SZ2n9p(X(J1$=#|7=u_d3ZZ za}JLz&x_f))$3}9$jIjIcwsz^O~hWpe682JAN8G~@(%41;Zxkae297-#dK*4d{YG* zjMFnmC@K~vCgwT0?^BN?Gi!6ZmkI9l`Z`6Jg}A+o3$~<&1{Ubqj(hYntshfVKQ?^#O*{MwZ3qhf+FP{#Uu}5SHkW?r_vguUEI?LeeLeJ zU!QlkT=1*pPP2{KY=ZbH3VM8H=LM9d|)aF3dacHv87qc&H|*124+Udt2Du z@5PE(cUMvEyPq! z@1|^fufNpZC)2mTLtTvoFJRvr32?a4&RxiAV5U9S5CJN+#+N&}{-e#6gl6A}yMN4_ zy%ME^oc&IWbvnwr1W`sh-OL_miJn#7@?LHae`$Lij)?@kF2`@a2J}9aZ{#1oHE`5E z#GH0I$=rKFTY08(%82^hPw~XsxD|KW@jlZJQ9vRx6`T{8EhW-OMvxnFef?JyFMc~M z^JCcQ;d~uS^s)~Qn(S%heqoj<@fkC&^*y;P*cQ3ya5p#Kg1lV3uR8{`B0wHG3b;_c zC|@Z5zW>`gUgI#k-@l9IIKE`dwfX+G8SuJGb#ZjG0>%2D*1vz(7sQ;No7xCDPK+0|Pi9p({Qeb$Q+jO$ zDp2{|#yb1%Lh;=U^={c8PuCe*f=(t6>z&(g`t$u%=wEu_tz4gTn9GX&ypC-vf%zea zhs^*9P_yF_`1ob>9YQAleL(ge&ivq^>rf2LLaPrMN=<&m%o4ylC$$EQi??x3O)j*W zZ9oyRS;kc2`?2S;0gL@MfXH-t=sHdVgZ!vK;%Sbly15ndRE=T0o#_N%Z{JG_hujnx zzrQYq)_(F@F=iL>JE#9X0C{`aPMA-odfh@wH~qdM+vs|Kx^nu`)Czaq^m)BTDd1r4 zCK9sRx?8)Zydzry!|sAF=iGf=4Y9?S0~}1{1cHU=gz8=(mdacYv%3zKpd%u;RM0`1vak_z&6eK1lcKbX$pVZXU zEM>p{45#|x^$vL>GV`r}IDOlkoSgLRdZVx)-tf8T7Rgqh^l4vvF{ViVX ze)$>Wgos^GH1cMm#rA8*Q7J!*ubWm9J@i;HR`$)q!_X1tbh*c>O_*FxOG6{RnO`Xh z%Jht?3FT&FFZ%>$7Zy^5lIiH^7FSsrc<^J~&t++(f7n_;soyut2}N);l1Fw#uyA9fw1H}hK3OEo_QeO0SAN|Q1DTqd7rs5kwVs@9tS z{mO)H1p9jQXDW(Y!{nCz#)jS}sbVLj>@M88=foVgt*NPCe}C!eG!R}s-0Ft;8m66& zF>D+bz|Iwhv9#%^I1K>Zt>^?^INyB;#kPv%T%gy_S?X@y77+=CF2hiooB&Y=)ISzd zUZ6g+^ms2Seq^lNC!4@7el=|vw3<+BJv!t@71fXhx?jCDueqpw6qE@!0w0cBS63Uh zj^Fs-ouwa^W$Y9I?@Lch=*i@(F8%xi`mm1q-*fd%r6D7f+aRzq5$KSn%=0k;^?7uqrDnA#etRjwC z%*XwFCk^K;F~{#&74IG%l3D&-5z{lrlp2ms!pztOq97hF`ErDbQDs^pij?rMF1#7f zwXj1JRJFmP)!SJbX%Yn<0Mmywi+~OHan!xQqSq-x5ODLeib0~r)Uw18YAF9(7yZ^# zEvX3qzEF;7YY2hO(NkTaFK;4JXqPH06wN*evs0--Hsfg|RvVuCUG0ryP)Ej^?1yIO z_b*2tXbmaQ9Cup}Sk58Vo^qy_tUKM>awrDxdOjQ$kO)0)Y-Xf4w?NU^6Uuk;{Rz$N z_a;zfswVwY>z1GXq;ccdrIvoM^Nn4T^FHG_0WT;6qbN}dFTRcZbiT2ps_ z3w$=RNWL1B5T&(R>3kvMG}8V|8C@Knue*N6F`v{U5(Jt>O_G1Vs><456VD_$>OXlE z_$o;>U&uuI1}ng&uYOC4gCzm&^7a46MX7&A5^IH_*^F8JheRvnI2iWkqrF)el2#*= z+QW*`M(VttHGbBYtzW)vT3MeEH}aRZ#eqc(2S^HG=X;KyPktEgAjN@cIb=2M0%%x12HM{m{9w4&>pi zyNZlmnM!{4h=UMvM4We>Ox{e2)wZ^Jx|waIM`Fg3lP(Ja%y;p~^f#KhRm^@Yjd_~f zVFs)xd2r7aJ9BYzUP`YSLUZZpkJ2Acuc#oG;Swe<1F;etkFlwnUN4;+xl`WI6!PEK zkM5(v*2g)UfYqc~aUWkdwaaR#I3#A_nnQw)OW=O}F|KmM)oL@=aPwMX({(}QRW8lz z(9~1?OTU@M#2=#(fvnU_1MxgJbngd|&9lnK@CSm%&OIvDfOOy8|EiC(!$c8$_&AX# zu^E8#elgTT=HuhTgjtx||4`M%)H(StH}!$lti#vbyf5JI#>Pe<6KNN@mt|jkh3AIH z;aKNKc4*<#?EZ%fqfFcF&dsNDpN|`JYimA->zu}8$=dvBFGxMdrut8vkKqy* ze{Z_1tpog&A>W}h=<>YS@bkHUYe4Ob%F<`OFz#`k8^VwfCU0Ez`Fa6u9upmXuQ&hw z?|3@+rtYkDVtS4m#nXz>p6gs|gi|45^VZ8BIbL z!SRFX#pJ_G)qbjHwWxaMwOs3#LJc9Mt>s>(->)vIfcbI>irG90-0W2jlEMb2fmm@bFgW&GSmz zrS$Hj27=Zqz~#2YvkTq+pY-Z3M;rZ;%7?!j(ClT%>AkW3-=EDFC!d$PySuT(AGe@Q z?~sv*^LF{Y+{>fom_oBZeEn4KH~c?Hu^&CcpwtigHE&bR(2`VThVj)NzfOIc9)l9? zqq8&9A4|$+Rr_qOXOF+HdJdx~1KM0vJk4CTgT{T>dw1_eUOm!0o(R&dwzuhGkdTmg zGQCE1r9TbWnpSI905W)NvZ@J(3Xb$!wwAAL*~F4B{uNjy2V~ zEUlZaowk?Pj%ibwJWQMZkmvOa-`3ux>ymNj)6V)?y-Xfk^`g*PUgO8U>(d@Xk9RLN zXV){nC8+mHXYD_}_to&l&+-#}eUcaL-E3-4YfezFm}nt)UJ(c0ll@OrRUOU?d`q8p z(Y_e8ZvS+wy<)go`msMVHhZxq-O=cBavyKx=ybB@kQ>2RJW$(#Jl$j-#4 zK~~PYWm_`wJgs~u6v|q7ubRCFG=wdzq`PR?Yl5^-t<=Vt2^11*4bJ&k#Lg92Ha0#8 z&wMPy?S6Jpf$NEX$(rY-jLnF4oa1G#*pg4JL&N65^m%{ostay*?e-=K(91o@v7ebj z63w2y!hPJDa{JebIYBO;Dt1_<# zD&F~_^M$H|M}iF0y+zh&-Z#EmKdta@48@o7Bxj+=W+<~)b0EvTWJ7`)*#2KT&DBr> zOqK0jiB6#Xxtq!pGlpD!vRmXDLxSp@H)#Gde>ty@OC%mwTLq?a^q}WQ0g3KLVb703 zD(&7!SS=VIU%swwJv{;?MQg4q)f)6KiMCwCNwQe;2;Y|td#w=9o=eZ7%3=spMmb)?1FQc$^ zP(zm4Os|K^;)1@}**FK(-gf@CeXYf5d`v?e)jCV$K>t-k6mE}LM4{!BD-%Wm539h* z{^qcCzwalXV;Z~Z>eAAo(E4?2ZLRasYzd?+J)_EZ2vVYwPFcik*7v}J-_`Z>A7B3uuswCgdZpgaSi#eeb*DQK3$+dS^BtqM!2u<8%^~jAP%w zPqg@CN1UmOCfqL@iJ4t7NFsDG-kOaCM5JN;^m{(#vDr87*(zqnYyQn;XDOo4Y1Q*O z__^D_3&jz@rjq9M$1^5AAsq{G>%sSuh(tUC=?sd91Si-N0n|~!Lyt}*q#GTSrz*sd z*Zxov`4kM)%wHp`w`bYq$)&GM?7w8rX0KPK@k8$obb2nQNfzh@r6U#Jvc z(1;O4KV>OciC!?#%Gps;apH`Qnsln>K*evPDHD^lSn`ep)3Kycuj*uNsSkvR3H%&g z{(@F9so>sf6yzIsP;A3A=*`I1;ZlnAc8QSY_oI92PbuXm(1(D(NVA{OUauwc4u4wtoI*hOP9JxZ#X|neUHRKG?k=Eozak*CAeOKZ>xJys3`vftT)y zpjY8sbmEb?_lYc1h{5XNpo5Y6PbZbWaVz|PP!0K@xf5flDPQIXdj7siVx&Q=#IMK0 z^_Mm1RZf0rXmT!q%QbOn1~&XPBZ&>mDPSi(Tp+`2FLhLwGVRKcWWy7^iZR&B?C(|K ynbuaZd`K6?W#LQ~bid;iK$9yFe~$HS0H7Rlunnh`lL-A=5TGQdE?XmQ9`t`w^wq=w diff --git a/htdocs/images/skins/default_titre.gif b/htdocs/images/skins/default_titre.gif deleted file mode 100644 index 0900c869d2b9ecde58f4722f2cb7632529ff5e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmV-x1eE(nNk%v~VY~t(0OtSz000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui0K5Vt000R70RIUbNU)&6g9sBUT*$DY!-o(fN}NcsqQ#3CGiuz( zv7^V2AVZ2ANwTELlPFWFT*VC9O9srf@wv&EGi%=LHL7LKphJru-IM5N z(x_9bUM06S-RL6iUh diff --git a/htdocs/images/skins/espace_ban.jpg b/htdocs/images/skins/espace_ban.jpg deleted file mode 100644 index 7dc79a1cb6cc04cfa670a2723a16ea8577d23e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2977 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 F{1-DU&0+um diff --git a/htdocs/images/skins/espace_lesX.gif b/htdocs/images/skins/espace_lesX.gif deleted file mode 100644 index e02dcfb4278b4efa831daadabce3b1651d91065d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6005 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 F{XaJR(&5_i%G-lA&&Tuee7qj7$K&L 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 E0E|Ts!vFvP diff --git a/htdocs/images/skins/espace_titre.jpg b/htdocs/images/skins/espace_titre.jpg deleted file mode 100644 index fc3749d3ffdd49c09deb2a06debe7e02b9111bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1435 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 diff --git a/htdocs/images/skins/humlinux_lesX.gif b/htdocs/images/skins/humlinux_lesX.gif deleted file mode 100644 index 754046654c6a0fb564e8e96b33047777b070229e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5510 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 diff --git a/htdocs/images/skins/humlinux_logo.gif b/htdocs/images/skins/humlinux_logo.gif deleted file mode 100644 index 843cd8c512e1dae5c9c997d581864ebb645017dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5886 zcmcgw`9o6K`@X=vaM|*jOH@{%rsC2_nM+zBx#d#CWG- z!^49^LpTh8!=Q0k%s>_`(8D8;!{M<29*fBfd+c!14=Rat*tu$>HQ`^PSDrj0I zL#t$Jl`O4NsZ}LwRi#>0t5&7Zs+C%`T01q%Dedf$|Akho*LN}X3Pi7%RhC`}>y?OJ zNz*GCdL>h@Wa(8jy=qni^=gJ*U8z^M>eVX!lu|#X)oayy?Ua7jV%Fq;q1PK`hu&Z? zC}4wvW>7E;3YI|$8X6yeqFusBq0N4#U0<-w z@C>#HkV$()u!()tkgTe&5Fw0B=0PRrifAj6HU|($b1i+OvIuuViJ8OJHz`q<1xkxm z8E{wQqoiXC0)Ak*pOjVWY*iUS*>Tt?)-I%&Bia-|3q=?vNA_ z&CIhd4Pu2?4yUI36jEuYvSK%$eR}_T3s!8KOX70<5OQ~G zP`jOX4@fbh7Y#FpeBt8{_V00D-|*oMViWVGr8syz@D#&quV(a!#~vch#%`uRd>N`V zS#mZNQFx#C=wCI`+F#WI9f^0?*PJ|<=B3|nLdewhnPXGE#nh!Kfasu?Y%1C(&6Jft zKer$AI6h;WLbGlBJ+v4il-i;u9+iR~=-GfKG~8%azsfjLyeWpp-8R^_%h7S@LYS*e zHWE#U(uo$t(pjQn+mHD;Q>Rt&1Bh=w96(bon(W)*@J~BkG=5-kYf*svWFL`U8IVgj zI4Sf!Me(Keiz6T9Ki#oxdio;KCgo-5>8t|+Hqm_=!Ql}$w~jE6FA>pF?0tq#IhXhN z7_DmO|G8_aOoKgN`KEmv<;=gZ{qFo<&SLO%IBnBK`0*ytXeKzJ2Q+ec6nXVrR$5YC z;hXG(Ply+Jf*vd-UdG1L`{mYG;Rxe?E&r9D&JHEady508Oz8-Kf zooj=Se|N)`tlzByA57X~?_FFeuC=CX`5UvD_6gq^4hPCPF2j4^H zzJsl#>~8$P1KD36p~sEqDC^vFK`M1(R}S7OAbQhW&w5m@9eBVdAC`cY!)$>Ycky>p zdOrSo%$$wV3yr%5g~spXmKieKLKz)2ii5UIcEIh}ZFZgbTPA98c=HD8qbm3X=E7b&1&Y9Xof2 zbdIh;gr;9dUXNk_%SYoa)|pv`;8{fTEpzlYIp38D3N z$*#Z66D@*s@wPI6Tp)#14AyuGnPryt)C_c{o8QvM7>C3(reOVOQ* zA)*~B+_$gzsbL2jv=6|5=5mGi@bmeDr!1B zRRmCd6l)xZ>DUmTz11spqU8yF4_h<;cD*v0xHZMnWWM+|B{}A3>Z9sms7Ow2lF6Ok z0onNu>}r1r7_!+))uJv~S?%;ba_G6)nW28i>TM;d7Mx-T74kl{#TwU?W1a_nrZj2Z z?$URRoX=>vbcvd{aeRD)xUywChg!HtVE{@1AiwuctBXJ$Id(9O9wguaA}R*Hx1A%~JQ z#G=sxr)!gcB@K?LM!74a|o#8qFuHJ*{(3Y%FZl@aWqar9BTaNBY!mEOPXzD3#q3uP5W%;ALlY8Iu<= zjZgaXEiBBR&Tl^t`)~)z=FjIGL`7{L#(T3)SB~+QbY0rH33jwtm|3rqODjH$O?}un z2$8?{5j-EitRZID`7qpPVoJ{K-#%tLZ`J6HG;(;w>QizPjBb~_t~y7O*SN7Ko5=2W zG_^FDxG~Uop!<`qWXa3-uaf63b+?jxIbpXok%WQlglT^?i|nM>9|$`_ zXa&LH1tnwCKahuT73#JL*z;lk;=gX{`20+Pe0`Oq{D8JO$w*?U8cC)GXW z_brDrGK*$DZK0+}aP#T;)6EBqtAwUL?kyt)K0f$yZefvKL6pD$C@!yb&@@8`+J1?B z80Igw+LfUZR3sEyorauHz)r$*NdbG8-~?3;f9W65L$w z8fhjWY4Y%c!ZdoltN0Xlqio;P404a%?h1F&y1|0m^%x>okaPla6L|jWwx*yT81av@ zICIq6tyI5-OoH=nx%k7G6LT(63uQBT zc|0480GmxSc62+5v2~C1ac6ugX%!wd_b6DFc=!w(#}Y1HD!{-3Y+JkWw;{m#iKori z;~No4pnDlDqRgB|Ub;NUoR4`G8_$h6cC_8ohM3p+M|?Sw9N{5x8QK>`OpiW*b(CY5 z=rHD7Z2V>82LEh(XYm5z8bs>bYzvA3@C&C6sM3|)-T#Sr@0@Md=YWkO-ET(fV&PzN|wbcj^3m^oMBTZ)>pKx&uC{Ribjrc zGl(1bxRo+6K?lD(iw~8PZr_}nMt4{x$J*+GO#A?{6j;K=1tY{006`!lHQqj#mT`jW zpV@4)v&l7cAb@;82s%rCOq9X(8d$0!Bm(%W0QJ7q_!)>7NI`2ph6DtIY`}<*`S&J> zZG~|QD$*7E;7C!sCZT!#35#%YAsZh+$JK{cN%^D;I^tmo7x$+8K0+M@jAQtCi@%}O z{OS=a_j!CwYAcBOdBaJB`bc>3cg4vMuM#G{)_UL0tq?+M0bKpx&|w|i%dKf1fI&Rr zgpP1hM!G5|p&DyGx~T+#R_ZV_un-^$F@H2+c#jFkHG~p6ahOfsjo%qtUOXnDPCPkt zgG-LTL@)-iCiKt}Iee5$>6DSrz9g2)3E&qfQC7tV;Olavj2m@XSC_yCSL?hU@f=nH zAXY_K@QrX?K;-#JI8zB{0;xxf(<`}YAvePNi%B(fQitG5CqVfPpj;UvsJ~rtFoP+^ z@ZgTBIyoT$f&2h)HL_tf0B!=pN&!-$j!-5bHt7xo2h z-BPk#aE0Vay2vJ#$|IyQ_%9+%Hl{xR8Gl?y?9>sj*+Warn{Jzh9YP6z2NE--#AANs zn9La|KY`4t!Cf=Fww$}X^fby#_o*h9*Z;1BajwUUMo34BNc zy$p@M^D}&20y80kK9C%_wd?`D^rM2vvBm^{!C0fX1P$R)c{6dm@fNqHMkBka39Ve& z0vl8B(xtm2Ni|Y(hlG4n0&nOfTEh(0iuHvST@u?Vx+2<+7 z9J#Vt1|Q>+4qgpQze}$EPOQ<94}TBM)DT@oCX~dN_r>p!$o9d_)K#8#c6F(kaBE50x8?pRl zXhmoZZumxrgqMic;u%Cu#fDqbhC@MeQgZi5NB1pF_hu>RD~H(nB=5^ohHdJ}t>hgN z98*}!dr4488^{$6a%a-E(C(Mxp;K4oSNTYqPJW!;k$v~Z$W`*1?`_p|(nYyUE@FvEfmme9?EJ$v@<74S8E@bElllgz(q62%`g5@JY91 zw&5?>{o%J2!j}4R-VU`4DI=1#D$Fu7pSkBX`~2*V5Kh zd4&9!O}!6Lb97LN4lV^K-6%PxRKEStooa-XoU9njqJkLW7HMP&K#IQB@S8?f;p@hx+tt0`)mW^9a$5#l6LjPMwOVYo&QAcH@%9N^Fq3l%3uu17~=5T~P zL_pCR>?T5tZu|9B_s(AgMLOCy+L19WC$y4EK(Q^52)wQ>#kW=g=nUq=)(Sh8~9KOK{CjIUU`RTCc z0*uKQPkX>LLPAKroU`K2z6v%PECnlq?y*YmWd-#KuKj+fg1n=Wcjavr=#6gSqlBkz zof_FwufFoyh+5>4A01~C==gdI06Ak_*x*J0GRs}HRRV?UK*fDrAPPOC434~$t&8f8 zN*&%&$&Fe4@MR+&N>!=H2&G8Z_?^-6fruD0-T=Uyy3Ecw*y}w^;ncyO3%ofFsT!6iL>M213*5r z&b_}mNwX)Mti$|(;)3Yo=cExgg~LxL9*!Kma!#N=-8E?0*74y0;_f%k@>O`2@QGkp z<~9Mnc{5?lb9~T{g1wY7z1Ne-_PTR7+>Z@?x+hx}(o^uZLA0>-o=dDyPI;e=h!GfC zlQ>PN5-vr67 zd!t|&u<%ovH+aH(movWc1L%u@@4;6F)27qM{`7K%wgB;ED5;o%uRiu?Qg?8DG?*qc zr7`efd@C&p^p>1`a2@m)fZcQ6g*4%-mCoL}_nI|e2!eNH5w>c;b-MRnK+v6XI-E zivXZ4LcDs`6%1F&B%quP`$kQ}$up#92*OqEpRcCc=b8Dm{Qc~H|*WK3J&>jg3 z6HFvhk`=eAy2C!r7ykF?2O!5n9E?bq2~0*wM*Rq!0+qx5Oq2vHT5OEP?+r333iLa$ zNC=E10>C#K9Jp?5>go+%m0s?`?(lJaj(dD!e|>T5^<0?HUwc4)%1vTSM000e1X+uL$Nkc;* zP;zf(X>4Tx0C=30*LgJ5?fVDtYc^vUGmM=uvWqA?AxmV*o-HNK*oPToNTotjh%BLK zK~bS-AyH91WJ!`jLQ#<=gh-b8{vl8Op7VQt-}Afvx<1$Wob$Qw&pEI6eQp2(#hXs2 zA^{*cgvoHUFd@0Qdyuf5zy?U*00F>wlf&r7_VzaLuQk^R2mpW%6>mD7`tR@kuZ3s0 zxqAR0lmUR>Z?)eF0Q~z_duIUP-_N8o0TBKGz)$w~rT`$K06>}H>}U#rxCQ`tztz49 z0Py=(`$ho3N09xP0Elh?Hev`RAOrwA4!~we@d+aX;FSS@LJ1=W1K?8uASyVRMgbt; z06>9EXD|T>8UUc;=I%jSUGlC(01XiUcI)4>{h0t2`2Y$#e$S-u0SI~n6eRzi%{T%A z01$$0VZQ2{0RRAjGXcQ#vsg270N8YZ{a zSNHs@PzV4d073>)ggl6fLPueautj5I*^hCUany63;5vy*;68<~#Z>aWcIkP#w!CE3Y(2N5!1jgROZ%4&?T$;%#XH}) zbh>uAb$g(9-SX_+-M6RT>;2vj`*7s@lutgNeTV#p{l5f^1PM?d2Y(HjpiR=JLccMl z!)BSY;ol?X_RmNDIIwW==b@#jrNhfd6{Fw8B90;BP{+~nm=kO#u?g&n97&v~xRP-x z+^6xWgfyOX-VEXyzD)isfo#FELg$2YL~=#Xi(OcEQT&obo@73$K{Dj6%K-cY`&Ql?t2c5Bn^O?Nim)u_;{)T*4j7g42sU#D8HM*qQl5RrCV!dMqwC`uwmma%v}m$ywrt^SNqTPGYV*Rj4c~V9rG2}@E5{CE zNBV20H_n|qy9B$kyItS9^?1A!eV5zo+2`56`@O{bOCP)j_6|x77JS_IiTs%|Bs)|z z?EA%U#D7$Aw0JCVJm@QRLS^FSWXKfl8-04y^z9kOY}j|^oaS8Re8i8)g#$kiEb1-R zEFD^oS}|C8#9{#;q>*^!6siSXg2`Zu!uqj0bC_~!aLME3xrOmU1YsUwUIC&Up8~&* zfQ{fDp)lbTkuuR1u@P}T2`x!K(pjlz(g+y?*-*J#@{@`RO4JQCDyWUds%dHin-$gL zHM+EvwCOtadP4e&V8qu~sF_AGnWY%sjVG+6gq2+@0CL5m}nYQircn1r|NT)*Q z*Djo{Tirt4FL*TUn%ph9$Ik2E-U9FXeIpbBA0uBkza##60d;|WK?}irAsc9BbpOyO zMrv3Avm(4P;@$qy$hm{4L%dO>!^%fAk8X{&jB&hcIj7I1W~Zg4pU+4?la+Zk>st2Jvp3IO%PGk%JOALqgNyZ-p69jacNBD7?zr-< z@Ke$7)xm3@uTK_#E14{vxG{ZmvTUq;{MPX8fjfhDdn(#1o9@+B-Me2_eZD6BLG;7m zN4sjR>$W^rdP01%@btr9&GmO1GM+ISotm_o#hO_yJ&}aNiuXxelFTFJOXaW6m%c1>MYd3` zNdBtAHO1>n0ZOAAij_-MZfv}%TBcUM>DK1k>UT8mYF27hYFFw+>ip2H)~nX9+48{P zq2Uq36{Fg%b;gfPo|ry0i`$0YR&U;5@oameWs_C2b&?Iv=J}3R+ZT3i_Nfj$4(*Pw zoI0Fe@9cERausy#a_e?~>(R3-*Hg^1cX!{O_g)|Ne(=uUC$(>o{E_m>=d*8-pWJGK z1daxkP?f3U|06|a{!Wpq13Cv54*oo}7`1eG`N+yqRt&@<|4tI@No)dpLQ|qu64xnQ zGA@PtG$EBIjrZ>?5zH1kEBq@<*8Q0!1%sE#SELJNisY`!t))q+@(q=n8~?}>^$Lwj z&3oEa+V^#;b!+q==s(=@$gtM%j~v<7VE)X!(V}U4vt^6*^N1Jg+iYLjx7)vR=s5gF zsney)wL7*)^_@p=e82kpgaOULQ=ce9`on1>0b_w*sgtyCiL)Marx%iz9a$`Z)w2%( zfK3Y^YXg8w4uDeuK>P*(c`pFLYXJ7#0M5FA#7F?rfDQ;NgSGPm5WoZCun|na9l{_L z%Haosgs?_LBCa7`Acm0yqy;ht`4G8;GC;+k8c<7UDYQGf2>l&njyaAg!%VVSu;sH2 zVFj?B*oW*`c3t*3_Aw4U4jM-trwV5@XB8KoD~9VWjvp6-`@+4A`xy5C-W&gffFk%3 z#(5lgvUrwx6L_bIdc;CLZN5UjNq#T>d4T|dO2G|+&xCx1vBJe7vLgFMW<@WES%}T7 z%M+IokCH%0R7eJrq)0tdXV$M@A1zIgZj(uq-65o3Z7SFtt4`6d&{Wpq(^}FV(#h7v>(=R&>*sGdV{p>&sL}qdp~h5`08@W6 z|7}6$Ar{Q-hb-f)PFv^NT;EY;+ho^k|IHEWB;l;H)5(SIn&NiT{iVl@r|@pWJ-%M4 zduzPEkcB7~J_meD1B3(ZgA%FrAxN4rJtp*N7#q_%JUvq80PWy|D9*zkM@o;fVw~fU z$35fko#aahO>9rjOj$_vN^8haJ(H6icJ^bAQ*Qmmn|ZSN7cL7G@mx*0jxRoaBfCtz z{K{>W3bV@gD)0N>9tu4wtuuMbtS2;-Hd?hLwyL~ne;Luy@P^(c*4@}E*Vp|%alq(P z=@8|M_m17dld&4 zhbPBPPBiBp&bwTkTx70VoB)oFYvoqrPUarR+u+Lx+yok-lV>Z>6<$1V1n)bdIq?=B zi7%aRg+Gk{t3aT@s328vT8Jq$Cwx!@A#zGoRJ2%3SFB;3%eoQqXbBOCN=XOFQBu5= zoK)lb5NRRlM>1qtoa|${5P3=YR|*M=CW^~SH5;Oo4V33qYB!!#byky7o7_~pIZZuK z!%R~`b5ZM!_I;fTx-oiw`mS3H3{(xJjEGy&#wg=ylW(SzW@Foi%x5gdwtu%mTJzfo z?bu{%XlG~d=n&+1z$w@H_Ri-n?_8JM`8`y3*?NZVKDVddYuKA(pBmYplH*hBJLRt! z;1ie~^d?v=WG5|`{)M3s7Qt+a5Z@mb*?ds?P)gM35%;5wF(Cx|Dr5`~j; zlQmObr23@&%t+4E&iZ`zVou=sofj4JF!|$`pA=SHJ$F66gnYxZ%>0(l9gT{O_f+mH z)W|+ms8xGx^mKc@!!v4AXiHjaUfYBA{ti~BWVb;Nr8lX+`os7~k(IeN!K23;D z`A%P)9hz5I2wALLL9kc=zy>@Z4kq9ZsZb8D*6gpjUsaDLpxx2mG3J<@U*1=+p6rtB zaqMFp&Kz}|DxBxJ@LVxm^SBV)7j6pP8~>5uOBm+~<5}iSAPN!-`Ly|(`Mvn(1ycVu zZ7VYS%d@=%LZafAWrtPCzZ^#>n*3?_x8PrXU+LEAmH)Q;TkgNR{lC=u4Fm`W+W%8+ zM9)9n#uoo6_tfU!a|W4a(|aXj&2K4jP4JznHN!Q>Ruw<)S##Vp(vtZ6uhy&= z?JpxU0mi}j$58zxxz|fu>e-@ zO8@}CX-cEg7$h50v;XI1@4r@V9qaR=d`1vzQ#&kN>hh$0%riU|q7|JBe z5b{Q4(q=U^O#p!Z0Ot7#z4R>vIRF4407*naRCt{1y=k*#M{*^0+&$vno0)H|6@|jS zG`gE0(Cj8TT!)+)iNhJGMRI7e(T6dU%p}?Hi~fTChD;`YkkQ6Oax{`mLvf@rN+gFn zo4o^#tx*691=RAYUe#MN^DYtYt`Cu!^-%Sy8`Uh3Y_d+Jh2_h~$OYh)A#TDSf97sTg|LIr0@XYvtTyEUBdSz$ta36>Jm`<^M693JA z`!E0Xzxkivc)fq}@i3(9gx~%H{PKVIU$Jb8+lcXoD0qtRc> z`QIm)TmbpR_ODI~*eA4iC(Id%{bOz)jWNXFAOC!l(E#f2{vw29?k_o$HvoUky$81u zxwzi_mGH3#=@IUvL_|cTuX?tYCKd5@_fUn`Rs$5qaueEs!@HHrGb)zV+_O&9(pHm;dvB@z4MH>1UsT zDPU+C`?#0$zCi%8(Xrh}7yuk_hnc&(JHdz)W-x`S=B%o!>h1vC-OO|eGaJaKL)XKG zVd(pz@B6;*Q%vy8=JRflyEKG z7*DG0?d`7X{_>aXAs#p){H_uFJAjyA6z}I3?Bla@fgg7~e%wCTu%Ide15SljK|soh zL2$6JIT4Y7)RZa^fdC>9feA#5(OA6v4iSNf07N1tVj=)cB+N%&LBvDgBcBilaW^v% zn1~4s64wm2G^jf?nPqkl4g~_yEO$Jx5-}WR@Ej-zGt?)Okucxf-Mw<<@*|I)qpb}P zLHO89@jyU;Bj1Ca1pwUP4x=SI6M5-B4tFq@4GIUD8Hk+7i435nskme)U%cGmt~qO7 zKvh+9c@>JkgVd=l=-&&>0f3pyz`s0o1tI_%3xi+@G3CD;=`%|p9VeQ*juUtF8EFmeXh{w+0nIHVr7e4hwO>}T` zZ+G{48eoK5d%Gu3pZ}3B{DZgNdh_>x@3(fY`PO#$)*G)MOlQwL^Jyd6y?OJMS6+GZ z_4mwBH5fXy?XbOl;vqZ#)gZuO_d&NH3di-EW8p*~29DYO9`?EeApiJt1v4@~ZvQy$ z!Beq7My^C$SO5ez2+@!eIRe1W5llo1%E$t+lYr=>^U4*eV)=|Q%7aPbRQ?oD0EOin zXORGAj>P1sSaJwtbiaEygB$E4Se>`39wA&!2x;FQlQ>1|Nr}5m2=U)8W^DjPq zCSQN!E8qTenEk+uPhGwC-oN|5zW(&{U;m|l_A6ig`q%owKKF$eH@DCJ`Ir9CJv{TN z(e}ylZ~W`ueD%ULbKBUe*4Nj&u1{&0&u0(df<458Msx&nkh8OqeT>!#WJK&R!qJu- zeq770M);Wf2cY*Lhhq(D5D1Dw%Vgw|*#g+foIvd6;_T!gHim#{WnPv2v4b59w`|4! zW;Wu$AZ8XomK;q)OdmmUaTL1=fQU%LnoZ5XL~c-nnZel~R_@SrHJh?^H?8Euq<=tIhpWy7-^XnU@cdvhWKJ$wg zFCNbJWwAd4rC%C zGIAnz07NboJ82=un2oB+ew&(C>|9W&xgh7erdzi@c<1{2S4YuR z@%CGbQS=(A$j~r_WCr+F=b@C(tbe%7p*`KIu;~orj4|X;;*V`x@ zU3?maoeMz^!;o|CUAwMZ+0F&SFqm22_p2>aN;#*T)m)Pn+c{^=s;;W;1gB#>8wRK2 zr&!+$^1_e7%*v~;1_Y@Ty|XgL4Xpm6`&ZR1mWW2u|W! zMJ7japBJ!!nas?Y$-(9<#0~)oQ(boj-BrY_oIi^1{I0`|3%ocFIPjiFZj%DY2nO65D*kG6;1CC?bl@jrG>tx`xB>#llos3e30E`5H z2wJ=|4#HS`q1oUCHG>@N4s(VRgB`(1oC1N11Efei9O7UHIRq5JfdvKynUjD-gcw%T z7ce7tC`h5Go$UPbk7B0y%;$gh|M>sDw0nTA z>J^?fjT-ssAN#R?@r!@|k@57~U->`Z_{Np(=>PDiacLJ{{@UgL^1piVYhV4+|MD9< zKmODH!izui=+mG5jbHy?pL*^Gx6eLy>B{b}{rbQ8+AF&-9}M#}+uR-jD6ajg9#u6S zQu7Kq=ljxQhH$)mt!bK75N72dBcd{56QJ(2d}_=+iWKeB(G~zS)AErl6ZfOPvi$tE zS}12-egbA8LisPlaEu5VK#UPM`Un+MVsT!p-!1!8(p$qpKqiDc+MKcr%m9ITAY}JQ zNTeup{lEyJt|$m|0C_(Mp@}g{#pM%sg4!?#5F`pm$xd$B1`vt5+t9i9h8!xZnx<)D zkhY%%rY1z@x(PAFst%EYjAE6urrb$go!s2c@YJ@m>9ndO51w;3@7jLIaE>BX6`Jwd ztnF1(>Qiv5VvMm06>pu~nruzBw@$82)s!w~`|O!B zX8`%Dc#KpR!383?Llvr~%A?WZ&!xY@%-k}m(u#bSR9ie1tB7Cuwr$&kzU|2e%U##a z=kpR3ES`|!-&o1%3cUmHm0pd>-G*UENlht8ba%7j>i`k42n%IbgF8^5o^qm)6$CUDxjJ?mqR@Qx`5=aK~h_c60ao z`o>nyx%ByRaqgzUyA*YE+?rzlm2dyiS8u&@%{k85abkV)#3N66fAHsj_&bw)wZHML ziTRn6IC}=Dx6VFxf*iMQ?fmGE`uh60fB!pw@Z4wiUi#sm=(T$1{i|Ow}q*m`nK$x7UWL=oHSA<0(-WPwlPMf zBvL!|13`9+d2?B_N(K9Q%5cuqgZ3YQ|VtS>NQ!-1NTN`X3Di$#difa(;#!kdi ziBuAz2m@|9s+ve1idF3HS=9kmG$U~kK^#m7PD;c~ma{>Pl-Wf95P}E=&qHvng}rV@ z6{>1n*L7Wms-aQEYeJ*wk#psd%mQrd?CG_&jf2Dac(gGdk15t^NO5@;|MLCkzH!9M zdlWe*TJmynUmT4Pu8iWG^CGZEp6w$ZjKa=$tMQg*^hZ#b`aUF@-}C7%^^iwDlu~B#cL^;32oaGINMs@MXJQbAc zC0!tEDrp05c~ouR<2bX!7Uzv4?%twv028~gfC}GAWr%m#`0gN2fk56nfxI_e2%v+3 z%h@r4BXDNQ0a%-?OQB$cnz|zas=Qu}Q64-sccg}*; z!nme}NysYl01xCrID}ADRbAI{)F4*T84~dwX4ju6%&;^EZZoM_8WNe7WWSYvc}d(0 zzAmQp0_45rVp*5%k46!fWPOaIjIfYTFn@yiI4flTh`O1Uv%ClUD|fQMeXx76z4gKRX!_Xc^OMK>!&}#{?;zIWohw%_ymfhc==*#7 zXE)A#;fG&r*3W!!W#^su-oNn9`g$Vs7OWH53v7@<9!IR|l)AhiS&3QoqP z{h$mne6&@DDT)Re0x@=RRbvP8AYK9S2PZ=iIb`=45AXhgSjw>VOeVqO{|-$iY$e`&CJz61_@FW&@9D+ zv``EP1YDBERYXk8jMzj%Rl%Kzf^fwgDyux3RRrf4V_lEOqfuz6&3)5IQ?W#65L1q9 zLVR%Z7L2<=>uN$osA^C|GeSQ6%Xgmd1-3{zxoz|2+cgRNuB2^MEo@xO>f=U>3-C!Txk`StnU?9Dg7#q2M=gsWFC z#^q6M;yC0V)c+ z8{H0aN#Mop7A6c~urmc`FbTxP#dDvDOyI@pc}3eSPEI zi|_u)SLTC5YfRQFgh|Sx060P)vh#OB$qoJZ+ZRpy-6(On(rH8_gcyPZmJq_iVrF(X zUrx|ekC_pZgPny)goGu8Man5r0GynyD21WyFwZcOTHLvqNbNE@WTqmaaOy{O&?-@w zeD!Fp3Ktyq13QtpfSFxbm=TyKn_F_+DQ|3S+${qz%CHX5;=w4?6$}72$LmBCv_#G= z=j16R)2bP%kcb2hwS*W#WC>0g5||?kicGtdO<*z|N+Jvqv2dYFk=p{P#i^Cy(L{no zjuOP(;q2~Y1h}v}u`G&MILwf8@?ji6Q1T2Va29AF5}{KkPi}0T=mr~atWjM<1lnWh z{|Fd8iwwZ7?a6!B6>*o{7XNigfL`p|7FM$_fw^2&BDD&_};JK6c0fAKmtM-HID_V!jygLJ!B-g)Ks|L@l~H~o<( z@tIFQapKA6x)3hy?%cZe;rk!>OD{kTIi+Wwe*VG-JFmX->a}a_tcdvqkSe>Rlr=Cr z9=x#SZx`<0c0Rs0l(hXK))0{pB*qw6DiN}U%?#(|8!r*EJHUXD2e^<2Mi2^tMVN?k z&JG96J;M}M@{(Em!Hmo-SP?X1Qo`S12@w(adaUKR zQ=UvFM=4+_R?##F!NuXeC@&)F047znVrQ5saV8FCadXQSb7T(0Ld2lp6eX~`tHB&( z%p4>Hkti(eF~q=34p-BZ-K<1GnMjC)Ak2Ze6tUyraCSIlG9`C|(J*UE1wK+RlwD{?d#1#eeoM|Lt%6+qd7p z`pjoP|K|H&|K^*ozIMqsH_;n<#9l2SDb?y$9bZc9`w33>sG#_Oc3!CYjo_L&oD6)b^!%=ga>kgGn1Q|8O&S@ zgJg1r%BT^dNCcvBNpmfIcIb~$G8t)ay$jQVyhxNzJfuo*NMnRIIUbsS&R2T!%^mS7C%cVMK(0MdgqCGT-j%&EKJWFH(nS`EtMj zBUmXs0av&JTHdhdJ|$=_6g&(=I}Ae_G^@GwuD$Evnq245ndi>(;53*g#h}P)swPXd zr8{5_a~NO>_draPql2x4hRq3JGcOy#NuA7KfDkRKpybxRi{+vlF`Zr$A7*>T3cJ^K4!zx2XS z{^H*L?BD;{*S`Gb&G)W&7EFO87^uo536((-ks;TF@O><9Hh}$pdVd-7@5W>@Ss8k` zU1LxJF>@5BslPg0j z4wFdHEVyQ8kh-yxJFz+Thq+O2sEN!aI%P&=*I*t9Ay5bi;;;luo}Bu&xKlZ@aK+p( zGf^0NEQ!(G)pVhVTB|B7rTfe!5t=gVX#3&KR(%Q=fks3LP+rr0SZXx|TWvNmC%EaX@*3rSQ3ArKMBGG!ui3Pc3$L%AIw zVhTd+EFf2<$Py~@YLSL+4%2Z{hY%_W>SkHVQCC$xYAOlIR6v!)QPoi3d7r(_yq~K; zp{ku}$kq?J9fqtJQsh|EsPRw_;H291T}~9+QBzOWM$M#>Nfm3VsO8A^#OA4{s=xNi z8|OA3!RAS1;KUiU2bcs1uc~yeTDg~^F%sOCl|PrQIm|#*}hb6c}OSK_~ z837f;RWq{Z0cp^F$T^!Eo6XzVVK*;=WfL2+CZsO)(|)!;JM8*CY3?=moVqAok6b1M zB7z7?P$SQp9jc$-jkUi0_r-r8OVr6Bg*P2!826dJpoV$KOpNWM$G5) z_uhMNb8~ZZy;jx79zA{S%Jt3d^%!H{qVM|?Cr(_wdga#c{IMrae{a8XCp+(7z4iDu ze(L4V{pjakdg{#De0u$0ytZ)?fBNO!F!{=4ecPnI`2NLL-n!~udBIXr+J&QwwYh`oZV0Kq9b1#=c@f{aC2oSc|t9Ha>nx}M1- zz=+H=tM<85w+g)jPQ4O|HmJfnzQ zs92IInghltA|c9Fvz={7on==CnUbmWNr#Mn=;nK~R#P`< zpHrW+d5p9%Y1Y>#^~Ojx>bSjDpW2*kOvVR?hmSn+XnQy%%`ih!^aIpOITC;t5i>&Z z%<{35eX_;sFPU3)lmZR(5Cc{X%IZ~efq;A(0KIhiZvY{;(at}r!A)-}lm5Xqf4~+c5O)S1o z@ZEe-w8->eW)>!LlEvS}aqP>enygA&`m!>4iTS%ZiJ24oLh>o(VX;m}2twj2ft#ux z)zMX}z##+(=bXE~>oui34*^cFvU7p}N+2vuD259Vjua7Jg?ijnH7}w-#%7TbBuJ@5 zT>QmETuJf6*velA2iTu@!W5XuSr*BS&Ry4m$Vz4bmD)zk z%=sQsrXdYSZj&){N~s)%s+J=mq7Xw>RZXg~frA<5-Ly9aOK-a0w+Hj~=HcNqr~T>l za6Zg>R|gR&1fij++O>nw1RV>lHN3SpS{v6lZru3X%b!=NM_X%H8{x1+WJnFqcR0I_ zj*;IZ7D7cVOp}G7Z7_rCDhcIiHH=kFj9EW)?ah!7ZC9Y0j2K)sT?}z|7P=le@c;m15tja5E}}NqkZNh(ZWPFjqDs^8n9_ z@$~x%cM|A7{+S;;b!vOP;{EHFu3Y@4XFT)7_|a3({_Icu)X6g^zxnDbuf5`vE&TXT ze!h45lRx^MfBFl*vfI9PaCoqD-CIX9ffO_B4*Xq>2HxwzIQj^cz@3N)lemyWL`rpF zGwZr8=Nv*Pk2*8kvQnWqT;Swz2w0q=P{j}?CJ!)SFgs%rUaKTftePNIRUt~w+1>iS z8yq1t3Nk3eGmG~F z75dEMPj)t>w(Yx4hfM0j!E_(9M^2p)fXvN|&CCqu3LiC%k+RDjZ4*aE8Ymj6ASmTZ zYGtR`KpoCNHfm^jQ_52GOhQD?i<1(NBfE#?RGwD2*Zt+?z_Hq2ys>w9*cm!Q0x&`dQ9=}66IqX38FZGr>3n|kpxe1g<0f9e zzJK=Vr%yfdShKYWF4eMik@yHZdf4A1HJ4c#j%dhz;q3*yRHlaNN=Ub2=c8FCs+v>o za~d?aX;9Uqx$XOQ=;wVm>$v}Z}-QW7g>(1t9PGVG#8mUg5di=wkoe!_yx_O8ms3NKc2BZNV;;NRa!-|F~ zem`BA2Ln1zoO|S3D$Cz2L<`KKE`%V|RH3eGRkhR&Iz+CP>I!pSQk*R+SvZ{CSitNY zScr0Ji%T%F5QyPIPULkH>kzA|LJ(%IwW)_8!@)%E27w#9WLNW4Ea=Dx9I8;&v5qkc zGc&KPt*t1a_>n;%h$+k{tCnK7ywqB^ZMzzfj*Lt?yKze*t;hPr#v~BK%(5bD?M%yB zHnhleaCRdHL&%wdqwSEA!m{?+6B!rQR!#~|2uh?RMz*--OE2@{>Qh+(j~2&^<@~@( zvY^|&3-`(rD0VI}GiRa?Z(eH>6?6MI*;WV^hrF zWhDy0$Q5K|Qbzz7loVVn34<^@3)mqd0cydJ)q|OH(U8zR1gL*QaVI;UIWd|Z>|NZs z)E?|aJ6x-=K0=Ivp+yWIQqaX-@t3YF~1Bb{F1eTCvrQ=BmaXxecPiEv=xX2vjNdiJ> zno!ksGpUyxgdg#d0f?f&Y`CsJt;XfQULo}GcvY-U~G|Mc~5MI z`+FmblX^6%8xheV4b}~?Mgq*8oXniWmvzoc{a$jtqaBS#*);V-&Ze5P8@nm%K^hc& zvG1^APlAHPy-Y`L-z@h^B9Vv#OZP~I;X8^Pk6Nim-z>+ih4j2^yt9Acb)XoM>i%^0 z;mzG^htq?MI0o0XH+2e8o#sQ|c5O-)sI8<>)!`nsoy}nib-1pm8Ars+D~g zZ~HVKy0#zYeK+fdc4#$wr+we1zV9O$ilUs97imjYtY(mcjK~NjZ;3$4%z*#`BLFZG zbv9xuB~pUtOr~x{?M`N-@V_S2;r-*TIvX_HnqJ%a;KJdaZ;!D42u97u+S=N!8&@_a zcT>I0%*zd_nFdBn^PT>rxU=;k001o-F32A@3@f~buUwDoe ze&@o_(X*=u@+wGEMP@x9xDEs`oL~#b!Qwq43D^k`cQ67$m?9Ai*HP+NRZ*C|i889g zxN2%G(gZgnb{fTsnMX~NZ>9_lh+2&u3HfVqSWJ zIxW@`?{qq7)v>m_sFXY=V#wNsNJ`L>7vHd|f!Qgb>8Ya@IcikSROmMRg?d zMMTtzl`&*h;=9)hFwI@+`?hQQZs_`CO6G&;em+QSobFNFb7cW9PVA4w{Ki{d+Yqumv8RX zf3gh z58dIsJ8aw8tZVyrQ1sgMUF!S3lC-Sg>f!)taDX(j7wH}|mB@mC0+Sgnp9cY8U}rIi z0`8o1t_03dGLYJRtS(qvKKBtRs1Qu>ax3iwEz%3k1}o(U-pb z<(<95AO6vw3#0Y_@n8M=q4{_dTU+a(a5!&=u7jYe*W2FU1md!~a9IL_VE0qX{qG7^ zrdA|pILL)OGFO4jIWXX0S6ZxA0wOneA-FrUvAV)aA!a5Ia3&8i)Iq8!O<)Ps#L&dh zRG}IGb2zBvae+s%Qi3eAP@SBJ42#8-BRFt~9I6nageq25h$Otd{;0yCmfc)U-CWIJ z`+NJY$+I(iV5%#b)OBcr_6l|eGf`xcz!ghi9PTHz!I_mggfOn_&9yaVzJ6`z?#Z}= zlOtm}JRNB-UAoxy{d_)~&Gy=TB*1_S-#8yLB>|Wb17hUbJTt9XsiXmz6$xM&BZG)L zGr6joo0&q*-RpQfI~T=du;A`lv#=E3>tr&)(y>EC#SxX^1Cfhl)7{y@rQQAO`>5Bj zzPVu%`jigSFzr*PNC0Y#nspw8g1B4K;_`tz1|QzIaI^D2KkSl@#)k+uXZ_mxwwe9M zfBz>x5_$j2v-9H8FHL4%vhynD@KLPF6&1I}FyyY!U7u!M8j`jtwcXGTY1Z~_m*#Ch zPeV#R*wD3U7&?zp+{i&>fe3Je0b147Vi_+sA~1u=i4fTpAfnQ5o!E-+!(i-@X@D~{ zkQwES?{jwk%9r0c|Cn!%aO*nt+cfRsy*>C;v zH*I|#9pU=^Apk=JM?+|PbGozK(S5E3{WlcHE}i?Gv9w@r$Cv<=HOPq;J6w7vvAMn$ z*x99uG;Zp(_0i$YTk}Iaa)NXbP3tWai?a)u1l}}N2q6u9+a3<7i_NI1N3KLr8@fI_ zvrE%7RUp)LjO-;90`4BmypbWq?z+~DUHJO-tJinh%`H6t^b1!ny{{>G$mFO)Y^u5m z5yI2`gA8Z$F#WKYPHBgIg09U6`_v}w>j_u8kv>y!6hOC3p0Z*4;t zb7V71{gC>Bh}JgN%Q|u?CwByq5CUQ~ZHG3e>2!K{aCkU9oX=XK{ndwel*D*6MY>YNHH*DCqK4(Ly z@!^%-n}@jY?mH)5d;O88p82t#`pNb6bxD2AL?NIQgEX_0RJBAwKR$FmclV%W_E2K8 z?yh1A++K`oWu%v)MJ0l*s$JI|PN&m(8#lJ*Lz=eTbk@#?Vb;y3v-zxVr)@h}9#T%p zyPSGeXRfM|unOSWh(SOIT(NM7shzW+Wb_LYNZ~Nkrl}SO3<2OI1~E`-J2DdXCIzm`l!vhgHefl&J=bY=hPL7;&+qUBgu3fu!;=~EleDd_# zbUN+2?(EsK>+9=>hX*O8QgV9eyI6fEjqzQpzCP+fP&at=+__QUoBJQm=llabM zML>#qTua4O^3+WarIyXf_?ag+Ni&ei!Ej-6MkFC39Wp{-LM>#G4PcmSBB;QbEKpf( z&Il&1jJR5f!AsX9SH~naou)F5jAApYTXwY5S(I3Dh#Vp~Kq9d?nRyc`V~~19PU^PE zZb43+x>_#F;|)2p$v}a}^@t@pOJ!VY+6h=3A|g)N+?d@xn=VaecXww-2%2-32OHW% z{Kf}YdPDJdni-l=9E~fY(P)%&?sHCN3>YC*6|awj&8r5X9#J5T0v01S2OP;t`h~kY zEc*k^!!@&2c(CvKx~}W0noP#;fB4~tmoF=0bGtsA_0xIVNSJKYUCJ5UllBBBL9Aj7 zHAN*WnHfcO12n|b7@>-d&AM6VC!ToX)TvW#+kXA)U*Fr?`+;Ylo>Xx%nT$rGs;Y=e z?R&c?J0G2(tmGL$Nr{F#1Mar$FVJCd++GiG<#%35=x(<;50+Eg&)aU^4YR&)yVUmm zd`Rsu^huNDL9KYD2UB-qWKjbWiZZTb{D8@^h2c zw_m;JGsjbpJ$vPY%fp=|8VFPb`%7xR?albR7#KVjMb5mcFHsPMtH_gaQ*oTODGjZ} zW@~dTHjiJt@E&;rIFQB=C{iU+SoZq^wj2;R3ZYg8J2Vfq2!jGyU}14CJ|%PEVw8Z$ zLFB|v5W@OoO}ch)C6Tqswe7WSaSEkiTab!_5SeOIRR%~bb(i5x0y0)I zOAdesGgdNJWHxAM#v&r2GBPsCo;^9tgdIVM5C~52>}IBJRTbPU!{(Z2-Sl8SYv=Q6 z)+-0Io&td4;f*nd7=&fF@7j4go9*Z9%n%7`IV&`v=g5%glm~Tpmfp<9Rj5lj4lGt~ z7AQGCC=(**Tvb&u%I5QVtm5Xz#$;n7=e)OvYK-%bpEcaLdGluMS`op*ACMDKsH(MU zG@6V@vG(Z@g;_!+ArL!pjN{R`dh6}Iq3bQ_I$0H#Q`N5TyT0$c)D6@9dAC2E z&)TjX(yZ_1v%c-SE@`r%A9S8luR2(EBS8*P#RoRPRV1*JJG*lX%EAdekD;6SeVijXtTU#@;lzR74{=ou;5V@+V7-JAQ+*3y;SO{E6o!N65JojKQ z#zHX&F(Wbsix${~(>)s>|{v0tibLg1b}B zQi&|*{)@Ur%*0m3pq`I9BFp)jXMsqd$kE*?`=Ep6vH_7WD2Q+rPNrs-8EsAn-QnK; z{>_8^gTwuKH=irk&p+*e4%X+cPo7iD0~^`&VA}R+n8E@o0mlqOHh>U`)G|R?Q^n}J z=|+us@=OjW>jlA#Jppic#)FAmuV%`_(5IA2QKWh_`hm~B^v#POwucZ%T}|5AeAczp zU~TQh%(8Ydn!|*MB8PEoGQ&9{0Qo=$zoV6OBLg>9uo@Jq4;h{oL~>Hn$wp zb7#(;*xV`;b|MNPP>c(16}gvYqd3dhVP<@UoxxldHMqT*nU{4H7KZZe)ml}xZQE77 z=9F`(*W9*!OL^7~^RAtB{k-qHA$3DPAM(8GvT3VBmxexTc6ImYNr?yp93+E#<7N2= zvB*pTfh7crEW||SBkN$lTfd?t53d+DX;o~t?k<&S^#-~!LTg0Fn}Tm9*6m6M;o|M8#v@U4IO zM{m6M$k*p5R{MJoFZpzHJm01~a&s0OvS!6TH2=Gj;C>t;8tt>@7*k3~Jf#RXGavfy z)~#FX_4=caKKl6HheG=)AVFdbDTb7yNE8OSkroME3{l7lTK6p^E&)LhNCJz1_qnqZ zfkfDtNLrDFAZ#Fm%~}AgR_pEc%F4(@ZRhH0fw&8?)>_O3d%kIVQ9C-PD2<)dDn`1AV@=j+|j54X=(#ZZ{fPtK(jq0G5dLaIQqg52$O zK7`cjG?!(e2!!&%d*k`ZRTxeme)!QFZ+`T{pT7C!*S~=v|NVdW-!?cU=N!hdH4Uli z)11Q MjVBg!F_<=cxs%HB}L_etM9|4VV9COa|JeLFRypPU;an9qMm$~FpOVPP# zt~TeARhL?)s;XMt02r%d?2qVNOkrHzVEbK%OCvq31=Coi$4k2nzVH~4D zp$^eP;?VL;ilaC0@9}EjM&0Pyj!#GD?3mQAt}j2h4^x~!_i}%J`_Z<(@RjHP=imEZ z{*OPp>`(p0S6=$r{i|^v@4ot#2h*jK9#$lYa3eTOo-)tLe?h)yzhtAO&P_8j9!3ff zVR9v+=Cw>j+wJ!K_dhy6J0SuwHC3PnL?)sk_4`2RO2jFOc*qv4R6-FNVpDf#Vi>G~ ze4pro12aTg`bi%DoU3aZi!@$&@OW7sT8ZR)GC1(R;9^NJUgKQ zA}Xcq4ry$yb-UZq!-rq{>T54P|I$zY@}U+zIp4hY>S+O8O_OvzvBDSdQp}vla#xTuL#WwH9x`7Xa9qh1e@oWbqIcSE6(u;_z z)5|e$cjf&*|H04Rxg6a$!|k}b#bQ{+etiqm4tPv!E{(4a#*F}dSW*66;{13p3mqiq zkKjfSXD_QRgb;{)-d&Yat{y$83;HC7|B-|}urmxyU6-_EtEFZ_3=)K6g!NP2HkOD; zXgbCFM|7_pK~1U1nMs(4)UEIPTb)V;D8Fv86lF1>&24c{VIwCrz zT)$>hH-HM2!5Q3EI=B8Dryj+gg7nhe0uP(2b@oL<8L|m<6 z7m209XD#FQ`opWs9Rh0E$I$>pfN*kh`#R5M9!ptfGl-xn934vpE788RL{32Xx9{{RqDMeO93cDuUE)l76hJ#rPl+9|soW4JSWn(wi3qA)8isx~O}opBN8@fgZ+9Kg zlQcyghO<&&3jljP5lp!h9T^=f^)Z1tgqVS#IRXrl=DX%_-#-ULB-rQTP8^8TJaHI8 z3{EH|u&g=iuqo5FE(L&VCa-}E>;fIS0MLQ(>Snr+($$?IP9hS)g-x6)+Yr)X71gvE z83sxmNP1UN!%}qGmCMWN;|GsEc<}L~D}U*$x4ZSwt=C9#Df#}@#r;Q*9$vd|5?BC+ z8yE--VhDfZYhQbKeRcWZ;lpVcoe-t(B|x?xT|i=zAii+T#HfH_1qy6%6=Gua?2!q~ zy|upJpL;avsJ#av;W34PsMgvvMFm8TWtz<&^6Bc=UVHWG!Pj@WPIF;{sryn;mEb)n zF!fa0_JRoWGJ0K@(Q%52lWm?~pS^H;_cy=u-EOt{`2COG{>huKaL3lT6-AZR_E>OB z+nZp^6J=KcM1#X|SZ2l0EN-(IsU5dITD6*@)>;(Ra<*mGW!5ok&Z??Q#jL)l7j;!1 z%}4V^X*(~wX&R?#x6HNHrIu-)r?SKt8$iOSN+y5_C1{|KXb#i`<|LljqG)1?YylqF z5>q4rh{>JRS&wH%)WoI}0AlCnJ<(eBsV9Ge!uZc~e?K*jAJ;_w83%USvk%UniO%o* z#SdP+eRh%_{pd&UUW~(6zV)~M@?!hX{`Y@ApV+pds?y2&+y#D3`TA^t`f@ahJB}x| zoDk^AJd|I`@mJtAKVgu1ot!`%i6v5Ka2f$;s}(Z~2x`8YsM-KIJsDR0ucUKp0 zz47KaFE8GG;XD8EH+Pr2l;p$rKb*D~FTeD9H-xg-b1&R^=#S#%@6whGBia zTEBF5T9;*-#_R1a#%^=6PTl5YI0-J{D#SC>~r za`!8*T|Rtpy?vClU>>>Tb&TEViH^JdDH6$n=-`Bt)e2031x`(y$=n6hcPlP=W-mpd zE+T#GQ@6SI;r&M!(+3}Y^uhg)cX{DHoSnS<+zZ3`b9XaiSC@PD9=?0;gGZN3HK2p! z977kXO>tD~N@4Wf5|Mz>}%j5R$i!XH&E+5`sb#)bL7rQ=&M163R ztfu3te>s?!Yg;5Jd7@~bg|s{GT#Tq`-NDTEJ_G78CJ<_^x@0qpA*7gcto=j-cOjcj=P|NIyK_;3IEmtVN^KmD)&?DFFJ%U^oQLway=@zK3| zp^qs^hvJqQxlfW(cg;%F2S+S^BI~=WvzP8ZcYAY-ul2w9um7v}-hcmlKmF++fA0tA z`rrKR-|kMGfCp6h)p7GV@qz2%{&exX!BcP!1vjp?n!maZX|Q9TD7IlRZZcj zi+lCC_?&&tzAQc!SM{s8X2UkyZZ~ho-PO38rfE^Sza8glOVugYWf^nM*{V@pYIbvY zA<{%D5}3Us#W)fp#HEj66S^T%A7To;9zt`JCo+P%SJY}yihEp@Vdl}?7}dbts^{uX zrjDw-7_)_7q~jL|K~Bi*6%^V>H~|O%ImR8rEYhV595C8n9X+7P3 z>E-QqdvS5`;)^e?Hz&(HgXrq&D(BovJgT)8SJi(l5dIn0*FW_aUw!oYx4!xB{m!>( zb@zL3zW00o*Pp(5-&VH5#6d(|^D#1V zVYqh^RxAU6rA};Kt;{)vkOpkJ)PuvSPa*C?1jV&bM?s_B3ULWR6eQYe?1D;GQS*de zu;Ty#AOJ~3K~#1(HIE-*?qV9!Dy1RD&a;~v5t$k@yP5ADTBY%zA;Cf_skgoe>}2T2 zKvr`t6I=-jL&@`M7|@cR1FYfhO?tEm&Crb_JI39vc@agHkUCYpxVV_c`#<>8cZ&se z+pNzvw_;lLGIZ$UgNv(7K3TcmPDP1&thyof{W8y;GX%*{P<(-6)MEGF`;dsHiz^=I zP|y{R?o#WzLlAVb1nHwyHf?Ra}(r55d))hwZ zQVS@6gc%MpuOWv_Z~W*7Uth`BUwP?2{D*)4U;V+K{OsL#uI4)BoR|ZAunJ#1U$P@q zh+dzsZ%arWLR61gg4=Yxy)1b5jd#EOYro;E;a9);t>3zR=fmCQ$?5uPYKGkY$yfWC z9slXz_UoV~Gk%Z*y`k4Epq6v(VXJ*v0n1!#wVZXzHZQhYbjeywua}x@-7UJ!dbQMX z(e0u|ZLYRxU9@J)*|fN-7dHjeU~XeeILQm|c|k~o#7I;ld0e zd#$7zh&jX%LKl-bbjh<)&pp6Iq(p3oO*vCjC^xoZFB&>4Z_c5g|L;zTpd7kH# zlJ8Ap4@g!+H{1;_Pw9FX$8irg$JqY*-uv&}yMOuidk?yk+o!kA&(BWdsyE>oI$Qqu z;^QKit#0Qr>kNl`H7`sSgM<(@$~+_IQcE_?@4o%BuIsL^9%-#Xkix!v)TJ1?2qBOM zQYL4r959XBkV*}~yGR_Hf1p0Qy{W1)vl5#btGjuL#TOcve0A@^%dfolJHPd}KYaJm z@BhIceSEch^{Zb?r{^50V>b)R2EC2~W^Csfi6QLjdC{`$wvVobldApjCqF)U?zzAB z?Qiyf>(}o-_;_KK%Mgi;(9kpTrey^XwKcQJ{*m1j1wA;SG_mHxt@Il#j(v-ERaf85 zlNHN3kIOtw({7oUoU_*LcAIP6E%R;~$8o&c?UrT9RhMO{in=ViWXr|0!jxbjV^>%s z7wzLR2q7W>As~bbh zU!uR3Nb>1t>096VO?BU9{PCat*`NLBogcktp~qKWdGVu*wk$W)g19Xz`vSx-k>=CW zF45C&%wKbGZnrHGn2vpc&P1fGsC)Doq$!>754V*6%uQ$n(n9Tb7uq+5++9}CC|&1)2q+FdgHNkXLopOQ>KGyX2U(Y zzEfRY?=DYIPl>*g^RnBG_wV1oefxG3kpLd=l^;jvr(cS`??VWsl!p%=e)!RcAAR)h z)pdRT)tAGt>4uebaWTD`uODr<*ULCAizYG&(#4*!%hPr)*p`!ZOsUl*y_Yb{*qFuF z4=;SPrmBOW?^m}r8W=>5CRJ;>R6^^b%y>+2rCX49=!FW)+`dLtD$H2xiL6%O{S$7t2;6QK%KJGkYx zQbL0@_S}qIs@4{lRedRW%*&LQX`ZLNWUbqAT(nNhyql-(f%{z4=6SBFCFfkT)nZ=A zwRxF1E$z}UK!U(AQt2f`t}%8g4Kbz|Q;ZSdo8SI!->rZ6!Nuk1s}t-DKYruG(_0%Q{^jRgv>v?A zjst1u=Y9XPx|4g;4chxW(?M<{FBw2!v=*cG3}i8wyBfPoi0ghhS#5@{V^ESHPBF$1 zq7Xw(YpwIr$HZ{%3_x)zRvTY55Rrt$f*=7@+?uOBZip_m44yzNkBz42(1X_)osX^_ zoSmKBx^?T(qemZqeDD7KkB4D+?(TEbJmJ85{dulcjB&ME6XEjm^6hut{@{ZTO7U*9 ze&N+GWs_X>YTiB?$II)>N8@&zOSkSty4C6WeBBv`tKH?pi_7ixPP7D%gGh+nOBe!a zwPx0w$R&i6zFVzUXRAJhPRHTiHHfjNamErQ4k31oP1<-_uvjiL4D2EF5@RfQ@;v#X zqp=N=1b2rM%l)*my`Chd?~Y>ek8G3wK^PJG=Gz*S~Rc=kE7@_@lWLl!AH0YK55C^b@Sx7NCi+ zm#TKY5v#1(+N!nCd?YWMTGf3+_OdK_$+_fGir1DySevd(&U49AS#qu0c`91xlE-Dq zIWHyWT9#^c$;DK2F|BTupyVn9kb;~28UjHAl5i(TX-KRorPctDQc5w1;6`-D&FD-K z>`nj_sK&<5-1NX(^W!Hqn*3R{#4&?89ca$`%;vAXD!9$MtGe4=zxDRp_bz<>TWO(s$wKHt98#Bp zv=-hZA+l_Sp{zFResI-1&v{<@#9%>8gINHDT3UPFJWoNQ^nD*=O5G+l*HjS%=D^JH zU@O()@==H3m;w+H5MzudCnrNc0JyxoT$VkdwUkddIklPjIebrdpQdq|rVl>+;NHFW zw_9vBIN59#E!&(gcUPBJ*SmR~%cwx?;lV=)t5tXF?%lLm&E@W`hYznVE+4-2t{4Ta zL6W!=2?cIC&8v{Aa}_zkKJ`b1!`9rOoSKuPL70y$yJ+HOzBfc4@tSOxxZg#sE3g(C}I~%+-xs z;;aTUw|&5^rBmKvH<->FVWNA|7;{dZbaupWNs+O4SfwXFhN9^l7tjjA`>3RU~GjAmTAHkubMpmT@3w5XBINu1hHe>GE8Kf`t92AER^Q zs2sO{bWn~zKfl$b03fAw=gysZo&Y>}_~5Xidpz2i=~HY(cDvo><>g2BKD@ZNS1ZoX z(GM$UdiVYJu1v?>Zd#UVpoG+QeT>p43gTLHnW>9C(Md|Y8YaO252d)(x)jw)05Pvu z>ke)?>u#Qxc{x2XmgV|t)qxCN;RUA1rBJ?f!6?#k=u=v6Hc=uoi=#ff!gW<8B6X-4 zs*+M>5yHK<-#uBcH?e>4&Ifm%|CPNguHGoZM+IGPKvx zKN9B}(|K8zV|1S9d7kDLou@h1V)Hz2r}1jsZKrV>r^V{kZoAZ)bDs0Eou}!*gN8eM zBf6Qf6E#aSI0_Iz#8N^?F-nY~4 zuW@}7(|G2%^G(&s1BCUA$ETz7qp|$(FaP4L_k6gGPVjKT#r=nIb#ib!c^tF;Er2A zn@A26>gFeBx7rsF31n_njn$wcA}o9m`#(nKhB$v}{u0rx^YfgiX`TU`ot>>#t7Ta( zE-p?_Pg_hsPR$_VPmj*m+wD8=z5TN{E>!Wti@0;=MR&hk%EuQEc8Xe149pNf$cS<0 z^mJF3I*pfBmubh$<1#JVabP4@E~RGGX)G1w;DFfmp%fd(at#NjlM9tFKN_FA4O3)8 z&G3Q(5JMTP_s%w_C&P0m=bJuuUbQSsSr%t|CY#^Z70K*o=B2jl69{#hzx<_FVz+wd z%{RN%?ai0I{K9vC>mOf^Km7h*bR+}ERYxmEKhW9G$Mujl)NM{SCughGDyDTv626rIg(=j}45@*{g0+=TL%i^YUR8AtD0>pa3o$ zL+}_l1`eUE^9{9c^K-xSGc%Df6OmB^Bwd?hn!6L(;~nbXAa&swmfPd~%v}pV9i9KT z-}?)5FN9(!3JS4{UGY!}0K%Rbw#VjvfvQGC)RuezB9c-|xnlFLJK#;)idF6&V|wE6 z`J%e6pa1@Lt9bAB#~_rlFoQTW)LB>p2O`>CUYc1n>bg!2Q8Gr>d7B+fwCY#uuJ2B#^mKC~WO>>V8xfgVDP^9Qd7g@uTbnZgrIdMDmSwbDyR$G1 zX`BlY#T2`)Yiq+Xy!x@_?*_iH+wF3h8v~(= zU)}%c;iCtL4yspFre(T5S#7$mk0EqJDpr;DKojkI?pTDw@rOiR*AtNt84x%aL1@pS zVd6lox*)RddL0Cc~>&>gne{A>g5BU z_(Q8t9;tF>Wm)EFR@3%RrIck}n)yI`j%ulS$>TVdQgijGl-;42LY(yO6K++M21MS@anFW5fJ`Ic@6hbSWYc?e^ zNgcCS!=Wlz$!axQtyg5`28X&soXkOBGgI|a>ar|3FSQnTdxkPar69!m=9_PR_q*Rc zJw1E)@Zs>QzXrezj~-pDR;z~(AD*6`KL7j+Kl#aDhTz-nH8c19aCLQ^a|R=&wBKGl zeSD^q8*YR`D1r)9N`+X#cF<^U88iQ)VU5?VGq-v%vA^wto`35TYPT>?Aa-IS>o6uAYcQ!Si_lqQv5DSqoyX=cl z(sjaIYm^{CgdHct8v9rw?NMxt*^!3vsnK8F|CU$+Fl8D7G@r|n86v)TxSv^ z>4Sv7!hZ0$tG&6&4Z_rVT5f_r?kRN*MA~Eb+FY*j-QW22T;`nT7jJr)s;fx84@1l~K9JRZEqnwx@kW1b%|jRWq?4ukJ==NtKQTYlP@=BdTyd2YbQ zG%xd9O0GUFWj9aTd1@K-lylL#Xf3KmRoxn&*qDG(8p$F2c;t zEKEiLhqD<&qQZ}0hL>59x72Kad0INAbtqVt$*nYOU@b!ESzfdZLGfcMmnzs;W0#NKXJv8(bLQB<&sG3=}0Vuh!x8jEHK^rIdM|a$X!(UD*m5+d-HDM~8&NjCkVpA-YlXy&0eJ zcw>PBpkLwZVPIx;U+N;uQt}dOh1u`^=fC@hfA|MK{_*!uHetOvlTh129w-Kbn6p|H z56zfy=#T`FA$<65t@?Lh(LIjNeiLzS$cC#q+|1h?s7)%rR(G$pHipJ-w==a`>%7e4 zIPSK)X`1F*#-dZMyWQ@3Y_Bor+%S!znroT0R=45`fC({5=g!O|zTaFh6WfqFu(5!N zBsOJz4&=~%Hwj*VQ&q<%|Abz|8#U#Kp9FfM1^FEnL_KzeZmAKfXXk5@60R>xh3KT zVyLP++?z()QE7;XsMarrVAwOVRu_?G7qibXfriYc&0azbH%OTR?qV94x|q5cyBH%& zWDz2$35Wq^3j4w|0`br#cebi%c~A)KC?Z}JF*XlCEwyN6kgKvVSZ?ANpHBo55%;~f z*0FvlBCFL3hc(a4YOTzyZgb96>%1(>GM7?_sPBd@4Xf2Y`qK^VCzAN_)s_g6V+aID ztxI*PT2D^SLZB4;_L-_BlPYIy&SH{2t@yzD)w%&g=?RdAlCd0J{6mok<*&eLw5 zcJn;vCFh(?=bY7T)>2H1tL?7>R$V8k0YIS0RU*iv9+j|4=DvDmWI&yvvXHqM(d4ltUmy%D)Ll5 z=82 z^{QD>0kAj#14nqxMTjE{i>RT|xeO?!xOn^YhHs>l>?x%@9Ft;GW;s07FtcM!zfl%< zGu!QU*|gP?+`Y++wa+?E(8i}uspAmWi%JMdVu%cvDsF6*{jBdqD8()?+*!$sbA_#6 zcpicvodgIc7AFLd#!au5YjL#<7YPUiHtRyLF2cPb=cai#PfMMcE4Ji1%@yh-Sx;P8QbeB+1B9XK@YW#*W|Z3c zuJ>589b&g?vlzDnL&FX=nWh3-a#7P#$~?{UJTLQNZjJBUMqct#%Wlq7t>dy+r^`9d zwG`E&CA+moz;-p5DKJtOItMqYW(Em_-Pzcc;0%zNaBy;QB0?e|CShW6LaXrYb9^FK zN2?0D8?>tXzWvdU8r3*x?3GfyR#Rf0Wx;l}i69&s&g1^C z-=BXvIvY?4hM|&Fl1iUhZRpdQN57EKDl1hBiSqi~re4d?5lm)!9d6QyNYB2kxwIUN~( z#Kyv1M2<^URn=woT&6sYv+w%#T0-o)7)0FTQnT-+km<9?#?z)e?b88%d}>XLrkVLR zl1_^s1ei~?7<_SLMJ+k)b`P#EZ$0eO*Is+|D_{QhZ~XfA|Gdo8)e0fR$jkr--*bE2 zT|~N+(rQ4Ahyfs|n>z??g9G=yq{cBcx7<@d0V_A!oVhtraw)mwl54Fcmlm7%xpOH? zURu1KrfJl=9jB%0IF7q{9_MMy%TkKE6}U0f$k~a6Ln|OypF;9BTfqzodorBEh>RE< zn$y^x{Ih2e5eSdX4BIzncJ-T8K~qzZS2J~})>@0IsG=H5$+be&Rf}0U$cKC$`0#}W zaWpFc4$--#ECKrDEYS9bnFOMye&!A}e7>aVXQOj8z`*UbpPa;S+w*b&VBh5P3mje7 zH8i6^7VXx?__(-+-S~_Lzpvb4kOGhI(JGAn=87lulqKl1*B>@3r2=aX7EWKjZd3 zGpo5|P$$w2gYpd&@36*PlpI3ny0##316x$*l%zVTY1V92jg;6Vz)DeF=4A^~4nbAT zYYP!yG&+B3z(GW*>xd{gi1t=t3=sL07i$|+HfXt8rf_w+gz)9J-o%T~|Moxn2U&N2 z`4`{gK5(CMt>;5ONM{m=Lk*$tx?#PR(-Xwt+!TTKC9*xT@i&}OLR{n zOh(lh=0pJ|lsX`?#2}~#I~;Rro_hc}QjEbVu*5wxT9}#POExuQieM9hu?3JZovhC| z#ZH34g=>ZPA#&g6>ucg5)I3r4zy;g|AOrbfJ5OK(69NmfR0k0S76mDbv2@*j=BR3w znu!bXqIFoUj3A)u=2e$kG?zu|y6Y)OA5-X3AEHZxVPF+n6>46W3W>r9DF_XzYbJ!u zFoU!#RC8zv!y(Vw_bf2yxo>VVDMmA!=6NZ3$+M(Xif-pTO`{#a%Sb(^j)`m5QD;8j zUx{M`kkZZ$P#`df z3<|gy!6Q6EcL2fdlR|Y4b24wuf$iv32~Nshy}hiOR;xu-ZJw6mx~~c@^Yt=M%aUuk zo|jz9G*8nq@0PjwyqcGjE{b{cQDcCK1Np#6WWr!}VLkY26ET|T774Y)nZ@_J9hm`$ z6G-LIOT$1x1-yb8BCV|HtiYVT8rM3PYI8*{(28nV&DF(J-BAzmO8+X6ijEr3^jPfq zvE2-di@?2@SK!GO2iS8?9_uLJvGB>~jnC%J!2og>vcVTc>2CZAfswmW$N;1K6(o?d zP5{^gZt$i7#I$N+SCnE}uQ>4aGGm-lf;bW(287T-O_yQ|maBUmr?c2~tG?MX6R5C! z|NVCt2{8m_HiD{7Izxe!@VNYCu)H`>!7Ryuz4y`MBL`|yt~ZYYi4*`AC#6puQ4L@L znalA=E?P?fdiKPP!j`AqY`Qx?dA_5#>ZDJpkHcz6XMMj;k?JBOfn`W(NL^}OeIVr8 zOx9A2f!Nhb$qnZXUFwDt58dRWnD$-YuZA)&gLK`na>6`LrR1U{#crM4YCweM;(&;B zF^b4;x8ugji{S=h;F=d9mv-sQ7>Ip;()XoQYl;jcE|K~bF*(!qG8fZkg2FvX>jMjM z=sRK&CI^}7l5@#RDFvjV3p_;T6+xiIjLb?EoAO+W5m^WwlNG{v%lZHSAOJ~3K~%GB zbAEK4y3lZ~T0LiK`SN-lh}?aimuasKk*8Yg#}6kpXCAsP)>^YElSXlr9775rC@kki z&7#CXWPn7&zIXwWh7khV2_JwiSxbLHTe!BS=bJ zrEVB{rsxK`x{_MU#l`7njSuhPxm#a*{p)Xj_})+6eS7lwm9Ku|`rc0BkZzrB&d%u0 zd3XEvmCJCkTit#hfEzIfj*goBYC*lCRfJaLpG*2~;+ub;hHP7xA14T}Q8xgS}wd_Ge z#3Qhx8XI$tNl1vnY((D0MAX0yBLcaRDMW<|kXysn;bE1gyJkQ!ajoRyPCx{(EVUY$ zrCiMwP*XRD5DX6IYJkz=hX6fKTf=ZOA~o3LDdCFX0T6OH6n?;U$%uHh0!Y{E;gwfk z`oI6Me01*}iJ;oJl8dT}NF$^+XzS|g>iqot!GrtD;+xIsc6+_q44=qc<#mXEzp28vs}@%SL4ZMV}t_amQH8~RhXMLx1z_w1be8f321Ni!9ak4v_uc9Fmw)B89jFfd>75rgak?FcaDGZ>YdSqkchA z015-hi3Bh#3#_zod{eTy0nH6@J{oDOA?KWPEpu6FskJUknWsF?Ia{4`z8c4?-FP)k z(=<;xSJS!HxzuW^a3T;>$0BSD7nEQjFm+Y~Bbo~#LWDr5Lc%angtFwoi@h(K1nMg}6NNLYJdFc}B_exClag4T_x+nKo z9*cfNq)Mu4=70^UYnHZ zerN|c;^6Hp4kdDmBJ2mMI6Jc&$Uq0Od}w&LnS~GriCCUo)v0=;ZR5a5BS+{uIke<7 zg*Q=c%{#~Mb3Cd+`kq+~Ff(!E11N`O!F%t67|-AS*4Mrr;wn~7QvJp&2eX5A;A!6uq}tV_EQ!Hba@nYN-SH*8B{eG*aQkZ^n9)AZ zKr5@@8EG80@i!iw@wn7-yjIrC4k!p!LL_rh1d%R88pn0OdbRGle(3s>&F0qXWYY~@ zjN}LoQnRY16kSSofAix9Q`I>yV_xR6EV|@Uw3HT;6C*d2BD9?obz0>~7a=@p9V7=c zKhdG>Ca83CFq0d*DVZ9G5c&|KgmpJ`DfKZW79wg;jEFS0+cB8p5C^y0ZD8qROesZ) zUDqWR7p}EB?JE)~Msp7$M3hn@qPAtb8J+D=-@Cc#wnH4G8+A5jc4s+QAAM>p%hKL| zjB(b4$c{4BhwS)xDewuEB^C+H!mO>;vqk6jYvf>5Xoo%>-*@X+&I=G)Y;AG5HSs@s zbb-hGKWkB201g2L0p-J9#MP9|)rd%%s99@I`&37(#%kD*K@gqpg`{jW(xdTI-y1&3P%sYOUtulBZmzyo`A%rR>IWJB`=# z_~`O-DtVlz?KEzuX`bg=Yle+;DQ++YT0CksW{^9xA84!xGAmkAyjOJFD`hbg2@w$s z0OH3n{gaF+-am*gaB-Nc96%a1Z9EuORdZ7FVpO%NQ#Gi2R?F40T2&Np-xu!bSu0`e zr^NqP-J3N@k|XJXpDJMH9+5|#T{Y|;HYq(E5pq{Z5w7ss*A=1giT|DZw);R%4>{ya zA5~eI8R2ebfafS*~d3u=J2?IW;etHFa{tq6VMfU7(-xy;|lgLa` zT&ARRnqSX{_1*c)Phb4v%b)-3%P(KOc=_t~_VtUGFOE0IX>L9YqEUPl@ycXg%qk@9)_1 zkcj}|VUxn78rO0s$SjJaB2to##RFaP<#3D687ASgq+W<8Z({NBD^nC>2}5 zd>A7y;-irPBm*53vNo=;eXnMl8*5!_siiDsv#nHeUAJZ3&gb)aTi0#7JD=X2@9*yK z-`?MCwVc)^pn0pM)>^@JT}_ZcX#rm`khnwMos5F3f4WZjpgG1yRYwj&1Hgc0Kxsm1 z_yl@&bD>AWkmqz59Rv`oEsMoGR`sN&&X&sanEO zr&gB>zW+?XgDrpxJWB#x9@zzzK%yc;U6CNJ;d!k!k(ysjg5z{EXPu{cPBLkl6Xukr zB$G_X!*qK%zL*bYAxr9zI%6<>@#Pn&E!ks`hE-N3Jsb`sgN~Rwn^DbP9*^s~hQ1$p zLI?2enFNmnlJ4HQ;A?@G#h#18XgNs3gRP$&W)+&U0zeWmQpoB)9S#mi%Wg_&b1;PK z19XnF-Q3&+!wVpaUDa9-+oV}@mXxwtUDq|})LQHQ47eyUxn(fUf(pw3;Nt3Du%_lv zAuf`8*>Zhm>VEyz*YRbj3*Em^hqh5`4d<%7o2A`d(A^!5yYoHf8#$yo+}^8i%Syp~ zUT@|(LGayMynK21;;Ub#`OP=q&S}Q+fSV(ZGo~4nA}Z<{qe3MR5z`4IkT$ECLvFs1 zFz2$ld&G~N*JazbvTfCQcYnTLx6|pgtm}DO-<|Kjd;9j?>Hh9?zga!4>v>(avMsf^ zy9Ix(fy^zKGFHT#bB_W;A3{)3)ucj^ST8w7)(~MN!U5W1K73)Yhh{L5P6mnL)#yg^ zuz0Xi&8<4COEIgI>e$Sy$>yjABWhG2_#sI3k*&+ls;W8t$Z+~cMP~&vL?Ib;fkRXn zNPWm@O4C8qYZdxI@~d?C@^Jju|MXYC{OtADU;U%wajKQHawJ{?>#_1t2`Z3HDDact~kV^I^I<&Uv11Ccz|=ipPLa_?+^T^f;yCVY<1Q z&YLuk(Vdn@@^Cn~R4c`MLU9*RkaON@L6@deO0`y)MUAMz#-`LF{o0GzIXlP3o8uAJ znz*|YuIXvF_7^W+M95#tiO!hzrIZ8_l?>IKGo*s77V&%qR6@e6BQk4dQW0^zLTBkL z!T!(D8>JLL8_8Q+GGYMJG!2ebIzOX2ZKZ~S4L09k7jcopJkQe<-4gz@Q_gdqY&$>s zysuup8ekV&%uJkPa*D__MZNXb+oL}R-vZiOd0>;FQ=~#FHh%sE)&D_1jLZ6j%3JFv)D-2J(EDvd0Ug0LB0=kKCO$HZQB-+ z*%9ey)!)3oKb_ap>2z9``*pcH-M@YN_U--Mxo(@;x~^;4&SficHbDgktfH+w=CH#w zJrJ08lJeyXcI+Q6pTpyD5{982@~8+}C?9m8i&eVA$l~IFQOu>%Dns6oQkTMP749ew zVhTUZ?+2-mYra#n#(0ybj8%U~`=j&Dlr-uC3#&BonN!M|CrwIWDKC&->-4G2|MoBc z`OjX=w>K}hvV3>K?BJf+PgBH^q&el3 zvQiWt?^h{_Frxy>a1;?0WjM#~n3ia#)2WnF$|jrnE2bh9OrnG*QGgzrUCH@Wo&L1r9fva=$FhdV4q^2@+rm z2OOAhFft$spyCs>%DQdBGH`jUSf_0b3T0WBWxb&D-Rb`Ryq->{yXAadmUrj-@9y5; zo$gn9b=$V>RJN^b)y+xUIl8GxJefPeOCab4YI~$#|Gq=xoy{X;=gaYKEbIvMx3g#iXz5UJKMW8;jWby!y%->}_ z-+2A%=5YAg7hk=8ao*O=ZAJQj{@efDh+0|e>Mmpz$s)e3Rg@|@BADEZn-F!~3dM*F zF)(WicQc=+iHR8*8I#UP%rYe@wD(h*=d3K-`Lu4z+vCd@x5uwP{h8Yaq{Eb6-MqXx zWLkay-PvV6?lRm!+D`({wl-s@d^)l%8bn#fuj=H#eu#X;~KOCa+=TBTX~6t>rVC z=Q&TAq*XiJpMp<_a6|xy!{Nn?7oplGh=DMtk%T(n%$ja)W+WZI)<87rK{30<13*+9 zA4C84R)Cjz`ufR~7jM3M6DGvl+uMk&UDxG&KC>FA;x6Wi5QvHroDW9;LS#+z@g}aQ zBClV)qP6%&?b(`C_3rNOcs$VIN?EpbUDwTQ zEoG_Yv@YjmIoGXNHH9TzPUp?7)>>+RRhYxZ7qd#?4^P z;yf?KkjWa*Tq$${%z_V_e?PLVOL51WH*e18^XH#^rkdWo`F5V?ZNu?4ndN0Uuj@KZ z)6LE8vfQuh=I&81(cNk-?o|PaC3f26_~9B%AB)Z@k5ruKU!s)UWi1-e4B+L>K|Jm2S$nW0D`X08@K(91+7%EJx zp6@j)tkM!o5hbX}t)|Q-0;{8$eN=p=n47s*GK(BlO>ma<)$7*_P>Po_)#{|t1@N82xXK>7#nO&2*GP!zkHFcpfiy$&@sboYpvBS+_IwZ|0F);%-hv_&^0uvCl zEGda6MEY=#7;fxz`MwI4K%a0J7(8+>@YBfT)bouz=V1RpByXs6?Y+1A=_2e5{e6gm zd-`R_kIhG0nt@GwP;nN4MCL?E5>o}@n2u98Lhl7kbW7l)7A0+;Xi=sX;h@$MDCa|B zHIPk|a1o0XQrDUJ##3acmU9J-G}7S}Zaq5gr%&IY47;Xl ze5X68?sS8DPZV5Xh6+^oLUBhiZpLcd%pGdTL?)68jN%g3K>p~m^H16yqw|Ad+1fNc zosXhiloaiLivl2IsGTmOA|ix1#i7zhX4O91ayq@kyuSVOm!JQuKmXOg{ulrI*DqfG z^e^5Qg}M{z*lIJ*jzYWcRNS5msyG?6?ux;S-QVMWeWu zXx}d6JWXYX%tM0Sjh~CoC?fS4E9E@Tp~b7FmSQQWZ-<(YG>XF=I&OY{ICmY6i&Iklg3aQKLps!oGKcBvRTYvZF?YG~){N16U(~mS{>xtI^6j`m@&RChn-!YM~j-yaG%0 zjpA;bd8u`CT6ORD=psfnL7@UZ5kI;|-A~#cqVq$i!`|k3j_?>Z+3sSr*%KN=G7H{q zoHN=)d=gPW4)z>+X9a*)w>QiC^UZwo$*b32fAQrfw=Yib?*8W2fBpKam$a4S79O1R zLU+>ZMol78B}dr1fuya~vxp$2lsqz$yGOlvr5^zmo%19juCh$|%k=U715r zQ!^toya}Nlwq`SP%mqe-{MZZwqyy86bqJVUk`)zv^5P~Z&S}ay&nZR7LrOUjplW#C z3PUV}hOp40P5@{>=XP4)oWqxEKBSav-Q4|fI85^#3bpp=jGXhn|MzV`D%mXlgFfEl zW0$5?#5HMR+V2*;N0g@uSG*8im#rY=Wq}fgrbP6-3iJ=_G@Nw?08Y5>ylGKYmUo9{n zKxYvF=~!-@m`Z=>+`(X@X>kpj1>tSmpwqok$`gF2V#t z^6?mhAp$A2dss$qH0pU-B8}0ym2I>0vYnRmd0QhAa@p2%*>0y?Y3^S8!DWw)O6g!(w#aH0qLU?wi)C90VAwE(50Ri+MTh1TX zd)Pz0(`0DWf&PE^mG+Gf_jxdne#m?K@V;?*eoPI@N6Xehk zxJ!F5eC0gFHEoB3m#v@#fAOE-CiCr?p@-%ot)+e6v;c=I$9Jxz1CT6E2=-Ak=%mX%tq`TmZY$`_u^ zy+tpe$;($AZMDjd#~Fg>%R|#*<0Bl?G?8t6N+MYsp=_l} zmy4$~B@wq;&79PnlIA9Q(j)S&Y{h#5Pl0ICxCf`_oWloBMCQYsG*>G?jO>dDDG&%n z;5536LNx=h+HwR>QxZ|LV0)GHT5QT$*qGakI82+TL&Wul^EgR&7?^G*53?Y5VrUHa zF{nGy064?F>``OC*q}k&-Kz^kh==lRXEw$g9A9dwgPf2yjv%7uKIJ@3jX`RnJtV0{ zFc1*3cDNJJJ+fu$kfv27X-bhEHqrr71;|WPsAdx!Z(hDXpI(0c*~?Eqxm%Vm{`}|o z>@`3*U=^E#4o%R6`G_fFo}faYf>h0b+OoWR_x9~~r_-4Xg#+FyJ<_a}vaQRuZtJ#f z)!dAw+Ez-nYVNhxrEI0vX_^d#bE5_3P(=xGmB^tUS(t?hBEl(WK?I62H$55x+)Nt& zenA?k3WNe`N+RrYwaqEQbINTXINj+qx{#>V2%*DiZZWjrz-rYX9@S?k)hnq^CzA^! zj~%HFk65I`4H!7cZXxH zX2-+f%P+nxrF{GCx1|<3e*W`6bMno%--Oa#Yn^i5CqY`5hjE4vvG_UNvDniIL_F-N zXfd(U#a+GRm=6atfiMwnlqft2fFgad+qQ~|;&qYJ+tcChynOcZ)#24k7qf6gC*A3A zPzY`yJWx5720BEEM0G%@;(&;;4K5K_BuX?ldem8~n%-?oL6{mMm4e0OEL#x)+R#zb zKykP+KujRlpGK+)5(KGH@D%uoHYG_Zs|u(psHrARNfYTpA&ind0T4H*<`_K!D6}Rd zr-%tar&!&pPsuc?64kwwk}T)sl$K###KpvFB`*~jlo3!yvznuLggF3eRb{R98S#cH zEh<<O!cbNQVI? zpa6+d!I7ga-W8jahLm7{67DX52u10Hw5%C!D%!$mRh0C2oldAEcN5i78O*`RVB46j zW+0Dbs3J6wLPj-|E@NwkN2-1WDXL-$(aK7u1}?NPb)_y>eRNX+9Z(XWjOXt?;pDPy zrNl6AjBglJqO_K|lYM!0Z=z)z zoOhZ40`3BhnIbt>68Ah|O4Cy7Z@>Bdi{mX-bk19~gcJkQRpJU`2g<+6*wdSMwMG5P+qc3Lufpz(@+=v_NOQpfUzR!zpc~ zfD&QfUaihk$|j++CZMF8vmbJ>sNw*{ya|jH^H{tnNN_Px)da~YS+%G*9%)5Y)PZGP z)ojX1AV$KynGQItcT_-O#%kP>k=42P>4`CGf^F^2@0USO02W0RdSbiwkH%vD#1O5e2C{1! z=}ucBoLJ5gLRdtW`#AGeOAxEJSBg|A?jlmEWtQr2+U5oT02wt&L_t&(jhcZT_jQ0U zoPj{4s?fC3Jw)R&kF`4`_~e)-c-X z5`}C-1Bp2b2Ph&;o}xZ=D7UeylMtA&MU;KKM;!$QAP}@4mB_(}y7{)1tyXXPSsTjX zN7M91xC6o_Jh828@FtIZ=ms96^V7T2L*d3H`+ro}i!1dP!!F9!VgM)>3XXLz={coN zeMHwX(!Hl7^K^5})A{cGd-K2j{qN?Ro7*|RAT`d*w(J;0$O6?!l}~{*CkKJV&k%vo z35zpwr2y zJY*yqNYC1YUtw}ggh*5vQlk-Cm4FJVR>uo#8R=X_WLBwWUaLE+dd@i|g~+LtDjfU2c7;VGOtYB)mF8ZI}(VW+_)DN1)Yni6VBk^-Q4rNJDc;lf~M zpd)EQ$h;cEHB?T}t13hlV1iOyC!N{>q1CgF&O{7$F!s3m04J+IjBAs;%l31$g^g!p%Y&e;y z<|1%~Bq5;E)mnE5S?Qz~VFAv7gJy$aB7 zd+o<+)k-bZx?6GcDvMfbLJN9OT}(8ICRI-<(z=lj2ER4>oQ~!*+$J(y2-oJM4*`^F zVlhv|V@RnwJW{L^Eh()_tdi~B62YK_n$y;Hz{TULO=@LWJIiz{iHg zvIpfKLi{p{LTO+d(24DK3Ipr9m!0GM?b^l~YGZiwHFG!H7?&N9_*{GJv+=Zw`_y&< zcoe+YR@I!J^o(RR3!TKf0^ig%O#s(g(lqD9v)5n$um5qI^FRLT%VW}%vpdULDs9pn zF%j`DhKdufE9Ds!!i`?t4X88+A*q<%m$IzuxvZrWC!N@eKXT$E0OPpF>--y%`u@^s zcmPqFMjRD_3WbQm0H3lJr#mMV&65BQSxep4yOcDgoK&{L9BK7)dUt<{6ke*TAna#L?cbvrx}%;zM3bmg(9LT#^I~U;h@{|l1W-mC9+5~#r6V$53Pe?@3b^Cq>eJnU zqTIcQ)FP5Z(9^Ef#^J|88aYLihUVe)wN`|ft|F4mEBa%3(<@`9MB(-XxVeKA(WGK) zY2#hnW47nj97UeTbWjmhDa$!YPq1g;D%^t-Gts2YLihkzA0qXm?E626 zmiggrtilg(q}kjMUYrhyn>c>+-J6?fIv#E`fe=CsnA}bKbPi3MMkkzi_lv3`sis7r z(yDueNTMnL@-$hsN&^s5Hk}5y3a=LQsFKMwl>3Hg9S+&O z!)$oqwdFM=1lIEOfH05y)b1iib5dYlK~XW0B&f~%5T2-PB9AvUiVhc&=sxo8`XotJ zb-)1aMdldcMJX`~taNLeh{Hroyuw%P^^3RE3z%myR|A6#pfb$4_c;FQ5!^|3$vpV4LK zAR5~;i&i|5LNu`N>@UP2g9wY=$sbS=Rk#C(L0hynDzu_fwpwdw)gF3a+>^u2LwRfR zs0UCZ27TPp2TP+oW;T8ZRQ)}gu|ZmET{v+9X2YRI>7dcLe7D>lrWZGLo^xc?NX(`2 z%1z;IQxc#+=2m#f+_zfSZC%Q?)p~cnj|4K_6B>=hA5ZnrPUE`z9Ak;spK&ko>I49r zQ&b_;UA$KG($kWYFsBJ15h^}aVUgv{O^KU~DXXi(Ee9=cj!nO05t{J)a$0_zAaa-D}0iy@%}3-xMR&MO=em zr1uUOb;t3>il2qeM=H9*BIAh~6iZw9nL5mG1~<3iz9qZWIV^M*`mT5A=N ze3;K7IGw!KvTd_yafdlnp#l*kg{GDyp)V!DVuD_`Ds516Jh``fYwJhYs^Y1ERyZOu z$hDN-0@fP!p)}yFOKn2uF4d|;E;EQXFD4fi7?QSGW@C0KB;;f36MQf%F?HfeBh}d1b{BgD2RlS<4ajQlv?s=Od6J|~+ zMRYhYdma3Jf(MN_Q`T8?m=KIxWNLz7efD-$8 z3=)G&JPLVK7opTd6-K=@RdsV#RUuWV?xIP>wY!U!YRxT4MMXzCtP;`ZeOPwLMJq(y zyK`*cJ>jD*4}R+J<*7YTYmIx^hw?jEM-&Mz5>Y&RH=ti`OZxjC!ZR<~zv>A3Xv%W4 zc>*HZ)=mPVDoLKyOT||#;9X@DcA`-p$P;g5JdDpl&o8^3{1xZYO%7dTLEcdE};#n=vE5AW^ryY(Qq`&KzPx>-I@an*z8%&a3g~gg0!cnfMIEm>LSvxUxR^< zr5SF#geXWeQU&lfZY8`myp?z2?xT}OF+qp8YJm37&^{6odJwzo4R&m=2jH=H`-N)W zL*Ng@HwPo{ZP-%A@kEmkq70a~q=44m1K`f#qyfO20v8S~J+=7LHk3ktuTqZF*^sbMTfm_y;tJ{bb6HN+HBg3wBROsT}}@8stWyAG(+0d+WC8vC&u zd@b3&3}I_OL_el+H^?7++QhBodv1R8b z*F5!8TXRBXK$}Zh;e;3q4Pp`5k;eMVF0weRL&Y95+Q?98OZ|94cARLgevjHSemB9) zJazL;R^B5KLN;mgdI$hQH-VBA;YdCdZl8h9(&|4opa1p{5`-K>F%(*e5vq-RY|J02 zB2Y%u@*w92lNVy%o=fgL1NSHCs)#@5BQajtIH-v$SD8z(S8sMpMHgTLE8FrQyKZFg z@&NZgkraVAYlBfnz9PL`1!GUP#cJp{{o%%hk#3iZH9{oPPYcEyRFSB86j{Jxv=O8Q z@HCc#jeGIkAb83%RRKgadE-yQ^rk|c)S+5MYAJ5@v@8ZrDVx_Uf|L-@oRTm_1eZs^ z6@q!_>?>=aGcL?`d-#3Nj8_)&orjM^h&2In5EVq7+~#c=*--@ER=W1OC{Sz5R1hRi zl}M*D=DUs82#RaWy0&x^0(k2$X^%99TvM((Loh~N$T(syKqHODb8>%z{@wS-esqgI z2wP~=&G&kRh`A^P3ZWo%n@Yd;=3sGALwU(fp`zjF-;y|Y zg0`^@{cyzIU5Vexx0m59&qRL!2nuh=oo%Dnj_mF9(n3kE_&zo$2b|yRN9J8x4 zb>kfl7~S_m|Id0_lj!UAmo!TXLP=p1XALTu!rdu{gsvj37e%66w*!Fn3D+fPAQG^M z15OPe2L+l!DNl|yUj7$eh6?&J5o2(4L!2!vu|(@3pjj+FUIO)@4_uzX#|(FGg~!Z{ zg65Y)3|gMyecNxT1;MeKxtmn-p_}<$pN$95bvc(lH)}uGx^S_(Vr=K`?}TQo8(Mad z7y=iFfkdl$*$hyU`bpOsiYdCn+yupkue}S>PdEx*ZnQ6RyH85f&mKk#0`3u|(ykTj zVp9*L?HFfvFlMAXZ9SjQTdkUen$^4ny|0Rtq^L|;Q__(tFUVGJ4h>K= zY31_v21Y*wXG8!SqsDc_t+tvtts5P!+qz?1ms>Alc@V>JiBc^w(xkf}N3@+%DS!>p zc(@^lk4*0?iOzeR1#dT8+cl$EyH^A=+*4jaFA5-=6JQhIei&wP&xu@+ple1()@tFZ z!ycj(SBmw{_S4F{12V^L=O`HZSF#K=<_OHa(m!b*S)7IH{x{ z-2Fv~Oc4el*Fadi?54W~NBWo6E$%~J9KEcfMmD{?YY3te!5G~ekRLbXSWh?jx>9s=~GLwxkZ^?KIkCc53~;^flT&K=bvxR_;|O`2{&Y^bV2 zMdWOj+yURt=Ve_5AhmGGNG^s(Fo;fh0u4ljclNFq03napj$Bt}?aSopcEa|FOTxwI z-}ZvdysH?LwuV5O4h9iPgg5pH71YLKv};N03}k~qT!a3-;HpHgxJJan*t+X9j&E%Q zhJ#~+9S?s*3tcNrmC}}b!eipKwZ1O`-e1&{n$6Q~&r-INUHw{0*|q{eQex@R00IDJ z?sX545;0Z+ai>NN)#m^az!S{IPzIm7TeR%G(t+}$AN23jo;$hsz`hPFVsZ%*x*W^> zA5XOp_Rh!O&-KZ6wk-gWh(K`3C=k<1hSya{cV5Fus(Xn+`Y5}cd9VOG>9%9zUjA(Y z-PLZ=y>2fMvU{+r-ojPK3_A59nm*{|!RJ00_g%uGwX5z3$i}J5=rY+IBmMS1Z@+TC|bL`2w#OBbTM_C9KZt7+fcK4IUJp($K;yPRZi zsE`Pw37%9WY$8Htz_-nNDO+t+Cn|f8y)+|$3zU~>Eu90FrhHuIZRp_8T{l9E?80RK z$*qkdpjl%h?7Mf@Sp2zX_N0yACX8HNR;d&UTW>Z{+D#Bdg)@;4Eo{o2&KYspJ?-#@194>o6H=OIUmn7-RCdayk(yOofa^L+Ta zPsq*>X5RJaYP~b)?2liBe%$s*CE(*tA9bD|ddvs+e`0C^XtMLbYeD$`KI~|x^${G5 z=?Qibt&@)Pu7%^zsk^gJEW8yU@k>o><44WWwhvb7R*H5B^2Z zVz7UZrV8%1=C($YKr8hkB0vGKZQHiiQbP_2E(`55~!uNSE8{xR=>nn@^-zx&@a<&%g z+ARMU$-box>32O4VVD%9L-8)uY}YB5MMD6{B?V8Lzfm#f3g6n5`tjF`Mthdsw>_1% zUjbvEo}V=O!xepn+G;J^wrwp_iX%ua63u2I0uzgzR!+S{OEqOfhMU=Sp22+ea7a!cy&R1{9EL~!{dW?$z)4`Hm)@)l^$oY^*Mz4i# z8OjFpDCnmN)~#;EMXzgQ#M zX`?&X(~e$znBo8(`EdjWYIBYOB3CCUjPT0~Pu;M1-!6~W%(53bLB=={Z=d)Hq{$%Y zo1f7`uo-=Jwdu+4&$Wjy_)1j!h{OKW==Z_)CtN+g@6s_|qgYWtp#482t)c#3{d3)} z-~R>hu8+OQr;kXN_?eGLlt)MJuldBr%ch<9&>`@-$JmSDPhU(P47GO7hqTNdfOr4( z!}?JV@$9Pip6Q(HhkNu0&u-q4EW01Znn!^mEP@FN4-MHP4Z)tE>3>Q8-kjv+*~q95 zHwlpKe|5&gum9v&L_#9(xg>qWqxbL@@29;w?{&M9OLl(@25D^E+X$Oj{jm>r<;H(O z+|pCePOJQ|9Bc#D99;mP`VvA-r2e~7OL0O0=vyC;0Ak!Rwl P00000NkvXXu0mjf-Nsfr diff --git a/htdocs/images/skins/keynote_bg.png b/htdocs/images/skins/keynote_bg.png deleted file mode 100644 index 642627f00c510085796743c4615eede9f09e91a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7114 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 diff --git a/htdocs/images/skins/keynote_bg_verylighter.png b/htdocs/images/skins/keynote_bg_verylighter.png deleted file mode 100644 index 63e689cfaf9521c55cdf14b6bfc720dc4dd66803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33917 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 diff --git a/htdocs/images/skins/keynote_title.gif b/htdocs/images/skins/keynote_title.gif deleted file mode 100644 index ba94279c66ca1ffd868c543321db9e460fa3eda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZ?wbhEHbWM>dy_|5`rx9~v!o!Ak0d|2I d9vhR6GDsM+2^`qC_;|m9bC--~kb?t*H2`XRGUosQ diff --git a/htdocs/images/skins/keynote_topborder.png b/htdocs/images/skins/keynote_topborder.png deleted file mode 100644 index a4abeded9306a1a36d194733936fbaa174d5466a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3508 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 diff --git a/htdocs/images/skins/linux_lesX.jpg b/htdocs/images/skins/linux_lesX.jpg deleted file mode 100644 index f87b0361bc8d905e1257d84175b992835e8d5f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3788 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 AWdHyG diff --git a/htdocs/images/skins/linux_menu.gif b/htdocs/images/skins/linux_menu.gif deleted file mode 100644 index e565824aafafe632011b281cba976baf8b3ba89a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 qcmZ?wbhEHbWMp7uXkcLY4+e@qSs1y10y+#p0Fq%~V)9{Rum%7ZWeN!Z diff --git a/htdocs/images/skins/linux_snapshot.png b/htdocs/images/skins/linux_snapshot.png deleted file mode 100644 index 537a078e5969d788a39596e289e512b9fb2c4616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18233 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 diff --git a/htdocs/images/skins/linux_titre.jpg b/htdocs/images/skins/linux_titre.jpg deleted file mode 100644 index 77d3ea458ea18fc0816bba83ba6eb6c668dada9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmex=xW=16jCP7AKLB{__7{tI%Wk3cj%s_Dwpa;;v|62?^%!~|7 z0?Yyo42&l=R)XPFgQZ{y)FUc@p-B*^i32Fg$jY<|4S*~WM7P8Mte%;X(VmeXj{+vR z0s(Xr0-!ds*)xItfl~pay(05}1}KDjje!~HXMxY>Z4UDo;ISU$J^@1R11k^%1__!A Y3*lj6FR*oOcGNWlaoN`di2mOM0QG8o#sB~S diff --git a/htdocs/images/skins/liteskin_logo.png b/htdocs/images/skins/liteskin_logo.png deleted file mode 100644 index d399bf507c08ce0560b0be05a219100e2f95d105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^$v`Z^$P6SGUlLpoq}T#{LR|m<|DVP%bAq=&4^V_L z$=lt9p@UV{1IXbl@Q5sCVBi)8VMc~ob0mO*>?NMQuIyL1Bt*rmbtTp*0EOy3T^vIy zZY3uuFq&8xXc#Q|AhF@okrXl8cb9K!JpFVaDU!K)$_b_Aev2n3>2aIPGc(}O@-5^H zc@1^O8e&2C=e@3rLc%Oyd}XPjs2y~ehnR`z7A*W4hr wew|xV5-buH4t)tsNqj!@7<-QQU0=w;UHx3vIVCg!0Lwm5`v3p{ diff --git a/htdocs/images/skins/liteskin_titre.png b/htdocs/images/skins/liteskin_titre.png deleted file mode 100644 index f2c32668b74c508a2428366d69547b54f428b35f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2881 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 diff --git a/htdocs/images/skins/nbviolet_ban.jpg b/htdocs/images/skins/nbviolet_ban.jpg deleted file mode 100644 index 0e72b71050c2f664ae1a82d9494a4d22c748acca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 zcmYk63pmqlAIJaO&?bjJHfd{YGiIVj4iRAtQ;t0ndc4gc6rL;!rJS1NtQjK7X?c>S zqEb3IPoA*KVGgY<;Z13&=s?HLyf05)qFlx|nV?u-fCg*MGOG_bx_c<`G6{YS=FC z_?m>&Tz1*{vVfS&H|vU;GE2$|rES1kIA8^N3W2Bq(hguf0Kis%_`d~#L1kp6LID2b z8S=W@ZL8#mtg!#1>*LM$1rUugi`(Lq60D^XJ!z#r{0184D!BgFS4+T`ZSjg+QA-(%~c_NptisR``DRD#ioo`JT=pXjNw~- zx8t?13{I=j4g~{=m@*GcYcoI;s58gRhj+N_y<0G0wx8J(;OHp(<#3Gxp{ce!24S?8 z98NmX%alkQYRtG+xVu@>RT?A^fI=ZK7)gbIJP0qRM zp0)F@nC-O;QDUyDdiBlL<(iv$Elxr$XKr)aDPe=aCIpqaA;X#Z_GD4!bAfP>#=sv7 zv)Q|&#Mr&%eo%oA6I7)Q#PZn}E(3mgPWnA)`{Yi1G zr9JK&8!l`$ZtLX4KoUi5T}Mv=qPAM>q2fss=#w+}XQ*vSpQ}rYCbfPthsZ#nYXI1f zE?YSuDj*JTWak-8v1KG*Y*Lm+|Z5ae;CxhUtl05a*S=xk*JEiEBiT=fevTda^`S=F+r2LH8 z_f=}nU|b&EDbe}21LDF!(_r`?PwjW^I3kFQ`cN0Nr1wYVOcQ@L_x^ghf_POzF~MRG zNga7iv57YbQ|t81vt0}h_9q#Yi>pkdx{9fwVeZS&xw{9K?}kvlBwN?zrEKVEoqHc) z^0td_Z2RG?i0TcGxj#bXq+g(F1TV!#bzt)KJxmYIhW@*!H;quMH^4XYd`iO&A~xxt zqPI7+n|Md{H4{>FQ%ApU$Zoyre0T;OtKi2pjr6N`t_STn*{WZld;Nym}ndul5p z3VNsV^=r>yN!y6&wPT}Ze^cRGj zh7^#Qz@^_Rm*EhZ9i!Wj7xBBVG`^1$NQ69C55pxTSVd za{)4s+sM=9s_T1WPN&n(NAql{R6QZc`e8GR~%LjfCqy_ zi+NhFOq$O1FK9Q4;{<&C1R5JMaF$|fvd?NBp)UmHd7_akQ7u(?A=p|2$y5`i`ak5Zx>oCGT^^+&J@>Nj;st0E`pxxoFHUvfXXAI zwwPOYu<^1N(6MF|0?W`WkO1u|NRm80=b_~uqPLF~W&qa@d1SmKo4u)9`NgNn+~3-p IxYE&o03pU&3;+NC diff --git a/htdocs/images/skins/nbviolet_lesX.gif b/htdocs/images/skins/nbviolet_lesX.gif deleted file mode 100644 index 73ffeaa10e711689be7340e22a8d8be2d2348cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3492 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 IbMM3J7sjqj)c^nh diff --git a/htdocs/images/skins/nbviolet_titre.jpg b/htdocs/images/skins/nbviolet_titre.jpg deleted file mode 100644 index 8b71e3747b8ad96a2c8aed9ba5cd2c8b48d5a7f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmb7=OHRWu5Qb;$*u;nyJ9QqQR3XI?L~sH&Ss+!wE#NXp9DoCWxCr77P}p!2GY$oj z@{kzsMxX!3_$U7g`fPqW2SkJudf;E+7-STQD3U@5Ddn0PD;38o8I9J*X_94WVr{-% zmw8cbSv%dERzGQX|4g#T`$_(36Z&`u0x3lCIrW{MZs>ajvj-LS%CoFA&%JLUH2El zJ`t;jP5?VgC)u$oIZYq{ diff --git a/htdocs/images/skins/newxorg_background.jpg b/htdocs/images/skins/newxorg_background.jpg deleted file mode 100644 index 9bf4a912d4370230947dbe61a3e5e7cd61d413a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmex=LJ%Z3brs z4mLJ+HdYRHc6Lrq4lW)MULJ049!Vi#ei2zIc{y1r85so?J#_^o9c39A4RcK$149!N z6M1z@TMHu_J!2CikRgnmoSZz|JQBRT5=M$Libf=Z{|6WZIT%=(o-i{iF)#@-G7B>P zKf)jm@&h9SGGJt42TF(vpb0ZDfYghktA+@R2%?$+H1Gc{1|DWcpiRtz4E7A~A0S!5 z%HTDH#cPU4Duatdpa7$QsL*ByK}HaZ#f8DEVZ~Gpjj0+;Aq$kkGBl=w)v&m*3Tkjn xoe<)};Ie?zi>qfT&Kgw9IB78ImN`Ad#q1k%}6W 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 diff --git a/htdocs/images/skins/newxorg_ban.png b/htdocs/images/skins/newxorg_ban.png deleted file mode 100644 index 257cbe302633d2bc387bbe03cc64932a8fe49f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42049 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
    rcz8*Y$Wj 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 B^xXge diff --git a/htdocs/images/skins/newxorg_logo.jpg b/htdocs/images/skins/newxorg_logo.jpg deleted file mode 100644 index dd97a2088baaf01370ecbd4811af6d3b5a78148a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3524 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 diff --git a/htdocs/images/skins/newxorg_menu.jpg b/htdocs/images/skins/newxorg_menu.jpg deleted file mode 100644 index ee30e89a8f2d86c2631fe1066c48a1a0fee12d56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4767 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 Z>5KEn0?qkd-pD1gH>nl$_rM$BKL7v+(3AiG diff --git a/htdocs/images/skins/newxorg_titre.jpg b/htdocs/images/skins/newxorg_titre.jpg deleted file mode 100644 index e5018517a08f56430d043002971b4c44b3fe6612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4814 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 diff --git a/htdocs/images/skins/oldtimes_ban.jpg b/htdocs/images/skins/oldtimes_ban.jpg deleted file mode 100644 index 8b96d8f321cd497f2cc98319266219d5191c83e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2169 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 diff --git a/htdocs/images/skins/oldtimes_lesX.gif b/htdocs/images/skins/oldtimes_lesX.gif deleted file mode 100644 index d50346de8cc53e3dd7c2589550f637840372f6d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3552 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 diff --git a/htdocs/images/skins/oldtimes_logo.gif b/htdocs/images/skins/oldtimes_logo.gif deleted file mode 100644 index c5ea6e5177c1536719a98c667095c4b0eae0a72b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3948 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 RFR0Dz;Bqv$UhJIlhYuHHZh-&* diff --git a/htdocs/images/skins/oldtimes_titre.jpg b/htdocs/images/skins/oldtimes_titre.jpg deleted file mode 100644 index 3d52911b684d6a7c245abcb326736bfb48772f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 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 z'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 UTp($;SO5S307*qoM6N<$f`Q48>Hq)$ diff --git a/htdocs/images/skins/sharky_bubbles.png b/htdocs/images/skins/sharky_bubbles.png deleted file mode 100644 index d6b27813148b51c352ecf913cab8542a2e19b770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5721 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 diff --git a/htdocs/images/skins/sharky_logo.png b/htdocs/images/skins/sharky_logo.png deleted file mode 100644 index 0288275fb3b767edf4695a73c9f67708d9d03cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9647 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 IxYE&o03pU&3;+NC diff --git a/htdocs/images/skins/spectral_lesX.jpg b/htdocs/images/skins/spectral_lesX.jpg deleted file mode 100644 index 1426bf0ca3f395f8eee979c476e8a958e3e50afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2353 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 yz_bFIR31{ClUP&5yrNm5Eg zMpH#wOG8CnUDwFLT-U(XKwaI!$I{l>)x*<6+sr@I&n?8k-NO}R2qO8;uR)lMgg!=CXmvtJEr-}Tznp=R73zp8PHh) zP?xaTGYNyt5&+tQs)kX)&=KZbd&T}Ed>u}c-vs|?yvPw$+X0jShYHw>0z3@+R&^cv z4t71z9AsZJFbFt8d<}BFz}8J?)lS9(6-o*+03C~>(h(j&AlD0=7x6mJ4^jyXN;E?q lfg!mO?lyrb3;B7zulN#ly?x43j*9fX?u(}FvDyFsCIFP4l`sGR diff --git a/htdocs/images/skins/spectral_titre.jpg b/htdocs/images/skins/spectral_titre.jpg deleted file mode 100644 index 77d3ea458ea18fc0816bba83ba6eb6c668dada9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmex=xW=16jCP7AKLB{__7{tI%Wk3cj%s_Dwpa;;v|62?^%!~|7 z0?Yyo42&l=R)XPFgQZ{y)FUc@p-B*^i32Fg$jY<|4S*~WM7P8Mte%;X(VmeXj{+vR z0s(Xr0-!ds*)xItfl~pay(05}1}KDjje!~HXMxY>Z4UDo;ISU$J^@1R11k^%1__!A Y3*lj6FR*oOcGNWlaoN`di2mOM0QG8o#sB~S diff --git a/htdocs/images/skins/trapped_ban.jpg b/htdocs/images/skins/trapped_ban.jpg deleted file mode 100644 index 78e05bb09f847940e5f5af44f6f3e496c2097a8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6274 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 xA<}h2e%~yaFY;-%pHIK{ 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𝔑IeA~4+i_oGA6=5d=oqil(+p)$+Yal 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 diff --git a/htdocs/images/skins/trapped_titre.gif b/htdocs/images/skins/trapped_titre.gif deleted file mode 100644 index cfb57d67760cdf2cdcb2146d64a1330ce1b4f8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmZ?wbhEHbWMp7u*v!E29|RbH@IM2H17rayAeLYU5?Fu^NDQQxfrUxHmBAVSQIZce diff --git a/htdocs/images/skins/wiz_active.png b/htdocs/images/skins/wiz_active.png deleted file mode 100644 index b600fc483f31acaea7c94cda771615b89376b93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3615 zcmV+)4&d>LP)4Tx0C=30*LgJ5?fVDtYZk^bW*9qRWZ#vY>>^RwvX?YtA7+dpNm-IYWC=wZ zMVq2TqM~}pk|c#>iA0uC$dYBgf5=n6=lq`E_x!HEuFrKo=X~z_bI$91pBn&A_NLJ& zNB{^9VbC3{%!saT?nF!{umcaU0uofbNntcoJ3CwW*P81D1OPyXiZ_i$`S_Ha z0Nnnyz7YU$5hOnb0HPa!l@LM>2m!!M0k^%5o z0FWoq=nMe7CIG0oy15hAmh6!XpeYQ%X7hV?ARC~f06>1n@0rwn00D1+!qnfh83#ZB z079TG%vWPG001DcW&kYxOy-O%045V)C4+ZYhd4p{aDfi^03b*-x0r2|IYzqLHv{_!CykYQm1I&Lci0e z!)6(?;Xfkg4$Ma`99)e0d1yI$`S41NLhRdk#8G4d>KHnaajlsh$kG4EE ze7ss4Q)m3d4cB(+m0i32YljX( zN9G&Hw@#hAy9By&yItP7_PDw6eM6E%g&+41lRlA0WJZcd zeLwq+`Hw4%-AN%Z*{~msIjywn|H&hGyCQBA;G{%q3iQSw-lT!{W$0dXl#0zl?@$eI5dFAnTzifc>w5zk0ImqJJz%7n_^k(*MGSEMM_sGw9$)iTrvH!El) zYIbQW>dy0d;|WL5sn>AxcyWnty0C zJw2?DQ4!u4@&3SgpAw!fKKt-jbN#)BtmpJb$0qG&(Pm~#&x?Dl$uHg8q}oPamA4;$y|n|^ z(f8)k+rUnZ&Xum#?yPrvdK7wQ-dFd=_u2IG_4f~4{}484FoYgz{&;$L?F61&S;B1hkD@v1yxsz8;rU|5Pmd+3 zr7z2sE3vEAOaUen0FELekx?iER5kiAi!n4o?-Z#zsC#fR>gS=Q=;gyJM^ii?{Ub{>Dl{v# z?(0*og`fE&a>70kd5!XO>W zU;#ly*dQVi*AOoeqewi`3K@rdgj_}$qT)~usAaSy+6`Td{=s6&a*U;vWs22`wSaX5 z!;kUAJYvJJ>9HlSO|a{;Q`ze{R5)TesyK0+ah&h4eAp1|XRfVWN4W-Z-ngfD6y6s< z$!*V_!@a_j#4}CMClvAO@D}k-@pBvm?`oo4l0!^A6M~I z)lkE#jjI2(sc>_=23gZeOIe#&ds$~hH&+j*SEpZQP_X5+;R&M{;{zt4rWCUPbAJo} ztwEL{R*Y?jtP{4MvdOo-zN2bq)2?2-?+zG8aVOo~j?OffG}qg1uiR%mh4vWj_4P{M zSL6MeBuKXMIp|vwAQWg9luW4)K~ha=aiPz`SQ$3qnUT^5sZkH3IS#uYDT!gmIVB*E zc_!XJ!J8DC+@6}9wwUgf(U7HfIxjcu%*Q;({Q3*GFUb^~zbshHeKqYm?#8KGxus%d zSMI7*SX8!Gc|Z96Nbqq&}gTkYBpiZJ%(Ol?V=xp?R79vXkOBu@ot2yf_)^`{gOgQEl8-b0?R>jWA z?#X_e1I@9Q;~pmmCyBEb%a5gDTe%duQn@B^wzyI}7oLjmD=sWvDPb=$PE3@P zm2BJ?A|)vGSehh*m3bl?A}1mDT0Tj^OkqW_Mk!j^Pbot~k4&hD-E8ue!1uTJtO=lRt7e)Crd z@CnQfdK)YnvYVPu`%IS)i(oWGh#d%vY>tvTlomaH#4V;VPCLFRfp9GCIN?N2vQSEX zs#e;|bf1i$S*h7NIiJp4$O}BT`+~wHmV(L4Pm3z9p1q!UlXT0o)bfsQxn_mxeU%6D zH8PLnYt^3^KigJs|D4hk+LF@F%m;*s*I9!(T&}=}-o**X^&nUsI39qutOySS(rcetBQTc(O^b zC9qAfJF(YssBoO)#Bs)P&SOKcpSj35Z`?<`FMg6cjC+MAi6B5I;??18=JVp4=THCJ z^iJW~U!Lv65#klUEZeV1{^dAA!R$}NzXkvD`&zF~zwEc&-*W%m?f<3LZ!kb8(C(jV zBYOVnHvYz+a!+plEjNdC-R^n4b-h=z*8P?c)&-YWtsAa6x~BL^&${ELv6kc)f3@bk zY=0H;TCAhtEv>VxE3vz=C!$xjFR0&QAbHSu==jI|!zG{QMmj!Aj0KHbPsmSVzBqp^ zo=W`Y_kG*6;tc1^*V$J;%I9+Co#rPO5*E#V%KaQ!idhy~zOcfxlCUzrdWD(7WCE<+ zmjD2O!<>fdW*Z z0}*V&94w#-NI(Z~2mvB|03wip4gnAb4Dg0O=H^4a;0D#(sL$Uu{Bf}?>0RUi5r5&UP`1v!4rZgJGhiFa>riC+n=*mRv z5R$4gakIL*768D101S!=;dE1%&Hw-akx4{BR2Y>_kU?_8Fc8B4dJj#0()Rz~Gjp)4 zcyAOm5Lf>H{#9C#`FX#%XJ+ObR44$B+69~hPa7ZuX%-5Pnd3o*LpMRWbt6Pix*jd0 z*3|%l-2s$QtaTL);-mGg4pwM^;YzvpK|x@^CU71wN%k(|5*HkEsim6~!X}gk*59g8 llidxgQe>7{h3m#T_yBcbB9P`S(@g*X002ovPDHLkV1j{t>dycG diff --git a/htdocs/images/skins/wiz_background.png b/htdocs/images/skins/wiz_background.png deleted file mode 100644 index d9c165604e978b953451520766c5630adce7161a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OK6*$;{bADb~YEemQk!h^QI|c?uD^C~4kcv5P4hOO|1PCx3*!$m9DDX(PisuxoYh~Sk zXC*%Ry)Ps*bgjhu-^*65$~syxPdzj=RQp)%{gta$MH#Mp?G+k&wX1Mm`l?l{!g?NC z1ciofO?vZt9*`@Ve0v*M>+4-$tr62yL0a9ib-^asoClk*EE8;kVP7)XghUCj314dG zgG^ZbdKbuqAIuC4|Np%~9gw7D-(rwt%Kh(P$=usu$!n!xosrX)f+goY z2TEp4@VOiUCI0_sW;l1a_ln~@Z*?G-!PC{x JWt~$(699lPq7485 diff --git a/htdocs/images/skins/wiz_hover.png b/htdocs/images/skins/wiz_hover.png deleted file mode 100644 index 39b66fed2872e339008df2bff377aa09f59229ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3529 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 DVE4!_ diff --git a/htdocs/images/skins/wiz_normal.png b/htdocs/images/skins/wiz_normal.png deleted file mode 100644 index bcf01a066b2c31c6ae4f2597bdff500a081b146a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3529 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 diff --git a/htdocs/images/texte_binets.jpg b/htdocs/images/texte_binets.jpg deleted file mode 100644 index 87bb026b8626c84c2c5f8f3a6c0288e2751dbfe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5889 zcmdT|c{r49+rMYVGRCeUTFk`ASO=j-G+D-y#8@hcvSnYgG?p}_qC6yfA+kM4gzOSh zwl-VJkff3&W#0z#-Q$U;zOUy!zUMvOKc4rR`#SDxInUquJFnxqj_Y?1{SAEp;5neJ zrwu?L5I`6F0rdCqJ48RHQvhIK07wD=oDTpP;{as+P5+hGD!`%c>FH{3VD06Cp!Wio z0CqSW0cT}Lupu}&*g1K&^6_wU^Xw25LT(iok-+X0*(oL^r=}<+qarJ|Q%O%*g`iF( z5+!%(lk_!>)HI125DpFw9xfg<|F<$K1yB50g9q6as@mnPAM!OiUn55I6@g@iO!6kXL8fM6zZTIgM1f5S0cO)hMdx zH*TN6?6UC+Wv+l!*z(#LA!yfs(-r<7Hyr zAGCc4Xbg5Sog9U*{Gd@nZ1V7*5A|HnD_-y*%id4n>& z4&a3YM4%Z45domQ5Ew6nP6aq%5U>N|1qi^`eNV-gY2377(wsTr^Bc-LjZ$pEIa_@p zihay#Q0U4Gp)sn@Aal;e#7b^w`mXRBJjA zgjmOb2NvBSKA$&{I`O~B;{o2W*g!Pzz6(V$@echxKn{h+hekI;;aSk=# zma##?nM8c_pNn0$5rGbDSx@6|7SfwJymoyVkU`%`}d2Oq&AJvUu3Aua0bARGxoC)9b(&i}QU!%O7U*rK@>!K9j>0DjIS| zQc5;q3ic}3Qgol?ndQjE3O-uA3| zU-N5kTeZ_#9uI`&)a$d~T#nXGIQ?$^OiDvo2$AQ2)aVAk$x; z$5iz07-o@_6UHC(nmT>Gp(1mztrJB=8Viz$NZ=P0?puB1?vO7KcWRH~yRsL^U73La z$qrd6Z%N}>5xtJ5L<=~fjeQ(KH!i%X$oDNS!W_HgT>F4@Q6!nx=|KlxQRzSx<$AVN zZ8BVa>NXl>?3D0W@l5X_&uqf=%%x!QYD|;+tsCA82=rj<09Tj=Do(70!>v%g4&T&f z{HX3&U+{iR89@@4a`?%L->Jx>2NgW8?RhzsMH9O# zY5p=%{(N>Kxgvzh<0}z%-85Kz`y&4~tsUf<*wpT%wuPUwlrne>ub+Kv zb2QA7MGqq|Um&J;dZ&E-YMhXH^hsGkd{b+kZCJFvzW*B)y+Se!dB0igrp8o`3awq{ z0vi!|*#0s_B=Z9gB0 zw33cm97nCpU};)}X)1v>Y{V36N^uNb4b)jXbnV>BbCIh{NQl_q#O9Ju!%K2P6}KZz z&aHz4tq1F3lW*K>%tUI}`E+nSFln9PZPrU>cm!k)i8S`w|9sb21HP`gV}5tSX!H1%V1*`^2u}#dD}MYmrHULo3r|V=n6%C zj$9my_5ZNypQTB3)Z3jx_?$>$jKy&xA^*tUM+P%`599u1hVTI}@C{+80mv4Bd94kK z1jyEnHV*{*-3AH(p-upJc`~fwrfZc2Y4>z2jwI@zqRt^WK68t=^ZC&hr&^GoCPVQ>r z->PfH(N1=1;zyJWC>YuGAan=y0!_3(1Q$>Z^OoSXtqK|uzzkn#3+_p$bqarYJl zgRQY}I=bQZQ?gD+*K!2|AyjeSLxDkY8(Dyzjb*TR2XiNbNrDnh6M#XXj0Y@C;KK}O zNF8PbD=Q0}gCW`w?ChLed_0_7yj<+;JOVttn~?nc{2bhy1qG0Td`NyI0|WvCeVCZp zn3>s-oa~&)zg_;204E`WKS+Sb01Dg%f34i;kAc$vLV*U-M*U0C$;j)!QN{fv*_Osu zF{$I=#ldGdH}*Q`9xF8^QsN_F5<>^vBNw766!yo0AW6iNM!!%lf2tW$UrR9? ze3Zpy_rW$L4_<0easMjTTDDch*S$$7FG9lb{Z8XgN;!8v)E)cE;%jl1CS^)K#!{Kt zh}p@hp(x~;EGK-MoG%udhdg!XNdoq6;H{$%V`QG$WhTL?4NP`3B1wUnqf3Wkm2@6P zyoa12ti`V-y~T1!=- zXKUHC8-%#!g+}J7#b0Yb^c&6_PUW9~Xo*e49_TUprV!IMEy^WzpM7#yV(!b4b9=h) zxgK^kpBs%xUE!+YM)>_6JUC%3eHA5zqip@`q>1|mKR!6I^44&@_D99f4 zf1n&cPsNZ%_KG~Oi_@cSKNG$Cbfe_<1B<2X2F62!qD&nE<~HuR;U~}W_xKgYOpHvw zZYie&Z5@>(%f^xx8F9tcuW-K=#M$5kcy^=YHzoRBE6VA&GH?>UDfPCu$ejPstY$Kg zMY+=biMl~ci`5>=m)VTKL48B+{+BLJj-Agee@}AA+m=X5GiXZG{G6bfno6qfFyCZU z9NnS3SF5sFylu;ac|@U5`SQgWOXOyO6kJ=DWoS#Rpyk#DT{?i6ehcjztBNSNDe4}! z`ApJECTb<1(Nyi@Z70OTvC3SJAWCi#jq8@;B=@4Tx{+a#yClBUC12Us;6S4V<{VSF zI@8kWCqAp9lM&gMIZJbXJ6ljItsXp1I@CU!zqcts?Ge)lX1lA4)IeT~AS(&4>A=Qw z-8z!jtwxvnQ(W_xn`Im#KE`-0XY4HBhaRa4$yBUVq)|$4ILLnR3g_@0s(i`iOy0No zHKt>^^rrB*jAin4Nl^ng?Q1nb&@ar5`wJU~o_u9&qvo98*s;z7iivj0eNnAV1(G9A zrCWQa&tLI=j<>L^HdN*m)($NgiZY9=u$skP_OT1{KRaGfR(O-2b^kMeCGry#@79K; zzIb-K?Y3rT;(CQxI|?sjOJ6(}!@Gu82iZSqF0Cn#Z*{f9{y3`fMRnVRZjP(?v>VTCGi&0byQWqlg-I#l_d$WpZKC}J-1@-3szhHp zAUs8>qQp5aaC*tLXInTOkU=%*<)&4{igMhGM*cy5uf;JK4HEj=Rx;8BBrglieuleP?n}YM=kP=^SOiN$XtO zyB_RWIXYl*XT^pN^o*%Uw+wQ+maF?T%qnF}G_1Ji&HhFQ9PSPiJ`xHjub)zOnVV87 zwTo6U*Dk&4NN+|6KAH;OAsGlzAmptCV$d&TRFVi%|A&1Esq#G3jAM~>D{OKhpZTnnT*sp4~G z`pq)zq2LkyZB!~qi4Jfsq%-Sfmc^#1<|RuxbQG#?SE_kCGq)5jU#&~H`Ma9N)YJT#Uf9DIVm>ZK24JVX-k6ljv(!#}ZS7`L;zYBXn{c&ndZ;Yi(4BCo zf@Toz5nKrj%<`8^ieEa5n)A=5X%cx4wk+Gtp$>M-#zD$E+qZr@37fquPYSn6O6-vF zO}`dVOL z6WJ0{d*PN2YXwck_@FQQlP9mf6pK$va!4$NC5E||e3aFVE0E4ee6~Ns=2~d~?TS$2 z2loX``o9)ad73_92YiIS9YY>I+sUQnK&75=^4L*SC9vuU35}18mejWp<+%TRmq)yf zewlo{+M&H>t=OR(i-^NdbDZqETfenlefP|MDt4}ZRU^qETP&+O&8<;eEJ?8C+mYdn z6fZ6f!Hk;Xn$8C85 zTO2E2r4z5>-ZVliBlx1qveRSjv7_5A3zl?QP-Jd=eL=q6$Y~Ms*`$1b)Vqgu^3&;) zhUv);*cwv3v5KP`bh!R7H^gx>pJqI;1O=d zM_Q#n_(AXtBPnC1Ubgy|G>*@EKiM-irW-CMYZ_=5;*|8nuh?5Na_A}rEwThqOt cDfk4UhtvYXeh^_9J*@w5PFQe3DDU5 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 CRUAwJ diff --git a/htdocs/images/texte_groupesx.jpg b/htdocs/images/texte_groupesx.jpg deleted file mode 100644 index d4cdcd58dc982204408c53367befcfe804f3556b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7215 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%0AyxD*Mh_*&62V zqA3BrAP4yD&v7!FgWAoFnOv{pED~hb;oH@yv5mExe8q`U*anZ3DMgC0LEJdJ>cKj< zQ^R0gGY)3?ht1m4ZzE5n^_V$$2Md?CX%2d3U_DiZ_WMrqu8ke$FWA7R%qmuk?bD1p zQ-?WUH{yr>SP`AsjLtlj!dXv6$Gw5p>)ObpH*D(YyR4%i3VIwpXD6VJHVC?0usYw4 zRX0EFcn5;I3i)v=LbXlE%H~$Otf0QBBIrwjYdQ)F;q$IeUshzk1zxOvImo)QZT;%J zzU8dJRRYjv^2XQj{H#m%w}hwC55lDf!G=oRC#cZbd5(HtFdgjh|l~o9;!?VzL1<|)M z(VF~-?Uf?G3-4b`cx?6AzZSoXS>bS01=LU|1q`BJ=(DaO~^J z`g^dTkAYL`=kyj0-xPIaw3b)%gh;1fT-Hf1SBEF_2crC@m>`l2Oc9jqSs_4Xu+<~VApnu_2 zyn-J2ER8EVUiXTOAb(OczEK2Y)Bbc=BMm7O@31}@hA_>?Q$V&zi+#P76^PGdQ~2TH zmp$D)fB2!gtJ+}=V$-fDwE@e1uc7>tMEYogc#81DG>21F>jkxJ-!_Wxe$BpZj{k^r zueFUwz(nE(D@F>H(rStks&Zu|^}k;_vPdlK%*Tl*ic9UvAmft~*jhh4bUWUw&{?_G z$Tma`I?w+8O0Rs-;Bak={m$91fkus9x|(!z_5sBaW+Cxdyr=7WLA}wVb z<-Fdpr+~^W$@``M;IMM8TBYLfjr;~rXW;^g6uA~^P;jRjTPq#T6^eteJx%#71^Jf5 z1g!q@yuBW}edBq*GBjLF^^|699f#k;smO^J?K5TqGnB8AH|)~UP3$KMv&>CQN1FMf zGf}_YkO&M7qsX@L_iADufjWfERhYJp*vO0TmN%Wi@a$a4h>$*YS`Tk>=Ei9BuG&_& z-RB^@$u}KrMo^AY;fFHO02=7^mUD6aZ#ZGCFZ~`{N?(bPPoan1RlMSfOz)1Tzdp0u za{@O;Sq=B#+*GJ-Si(=(q~EL9$T9z2IC+E2aRVCtj*p3qYArg@{xytcNa$rnsqy=w zg*2>h^wUG@w1e5IuR`a7X*(7woaRtN@40VR1$XpdRXjbq&cn2tdf)eUspXnRw!06q z9Ap@7)Al}uet@6KA2=ti%r)nl=X}m|sFm%4q}fb`A_3sJmNk5J0X1TZ3s*f!`^5MB zoY9P9HGFI;Lj19n3M6EvcdbaF-k5G|nTaB~t{&5n+o?BpXkU}`&alkVFgzDt>S7x# zw&|*jy2V(Bc@>B;ef=bFy4ZhE*Um&n$k03X1(W#JqltZlX?u9XeKs@hRprOiJ-2R` z_08R`jNKK=Dv_ZU%DVZzhf2XyjjHbBipB;99$e|ZVc1$xYa1Ed?fAL;P%v8?DI>_@ zt@CgQm*=!P?_9S#Rs$bRsBW0$cl736l1-C$r5}Lu|2gg+xON)Uv6J z=kuDsGFRfm(*KFseAI9@-@xOu8(bLL_)JqWA>e5`0jOTuzoRJ)SG3cWxF~6WQkTw# z*EF}NIrjEQB#ACtNK^1=Ie-_8?nEt>n$@6-&bGA(Nip7H}&Fa+18?-31 z;+~=oLzdRB_gv3hjze$2;7h$>-chUMjTRXCx`+BN%w|{8BTr1ZDO>8&nPsJ=rB*85 zhB^1JUGlUH=Z3#1j!#!E+w(_OQ%87}1!1(}Bl15Q;+wK!iJxkdRgk}wP(6n&SQ}#f z^=qA_6zj!R^Q%zD;;p2OdHAn&R*WrYb1}-|*E-8Ph|ziPYxf1m$O93Vux#1CG713juN Av;Y7A diff --git a/htdocs/images/texte_institutions.jpg b/htdocs/images/texte_institutions.jpg deleted file mode 100644 index f814d3c818418360a382ffedca6d18a6cad515e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7385 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 KOos^}y!$V3>2qQL diff --git a/htdocs/images/texte_recherche.jpg b/htdocs/images/texte_recherche.jpg deleted file mode 100644 index 1818a71d99ce98e8d9f13d4a11f53e61f444cc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7520 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 diff --git a/htdocs/images/up.png b/htdocs/images/up.png deleted file mode 100644 index dfad497af079908bd0329ec308a24ff9992f8dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 zcmV+o1M>WdP)GHU<_>Mg~3!1_nM!1O@_t0K)EtAAih*g*h|3 zO05_IqAeMC#Q0Mfe*Jb~0EHJa1_FQp!ZhIDe>R5izo$1Anu#!p3o~5$!porJX2s3O zz&IHw#|zf@?=J)c0YCsj4fqeie}HcP{Ikv9UCGEhK$l_TH3o(UFBlk@B~=;NeF zJq89Y-ed+QmIwxRZUzQ+Ua%H`0D>662n@Kt|Am-;|Lv&Avt<9kC(N+-#y^IG8;&vD zJ$izHhv^@~KNfBVCMivzLdGVb^W_-+{{w3U2q1_7e}T?_|Gh5ATg^bjQiEadO$LVZ zNAEDaeDLD@ua6&(D>FP|5CK}qA}G$lE-a-AbZG+v6GSUO071ylKfDx_1apF8Eg4Qc zV`8{+{UgJ*V^_a3u(D=-{==4hz{-4rf%*USXRm+ty}tj1L0taD zwdG~wV_;!sX5i%Gk_PDo2p~pKW@0s)eTJElRr?P!JHuZlmX8c9tdT%J?gz)Yuo43} zz?j%{8QHkDva)lCGO%(o{9$3g|92|87C-V+> diff --git a/htdocs/images/wait.gif b/htdocs/images/wait.gif deleted file mode 100644 index 085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? diff --git a/htdocs/images/x.png b/htdocs/images/x.png deleted file mode 100644 index 6a4556419ca2fabbdb6535e093a1919f38e24f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmeAS@N?(olHy`uVBq!ia0vp@K+MO%3?vUPOnU&N*h@TpUD+?O3No6@m@T$*0t#^! zctjR6FmQbUVMeDlCNmfqm>B|mLR^883=B*l9s@fA0|!u^fq@5TAOizGD=UyIz`!8L zz#zoHAk4@p%)lVZ#3RnjD+mPaVoG9SN-{DUs_Oi@dXh>?+6oFf%4)i5YKEGchPp=P zdPWv{#umCJR=TEkhQ<~K##Tng4o1dK=H|}6zLH+S@=wZMAi6wY8lyBt`GDa^4q~e9XY`gn{8H1H&Ujqle)PcU+v$ z6c?Q-slAkyJ$W+2nzcOtS2NtW$$RSq)4PlO|Nk>Iw@jMSI&sFLH7j=P-Lz@*&Yio! zU^fu#*tuulu08wr@7lL-@4o#Yuy5y~eftmY-+y4=f&F_AAKHK5!2SaV_Z>RC@9>em zhfeK1b#niS6MN2{J=oHHVA|~C^A;amv+&r;)koHCIIw^Bf&Ke0tXu)q00svS90URo zap=&YBS(%NJqjd_fxzigCr_Qea^(^@*hh(h4}q)qYPSPjaoE$vF{I*FvW5nS`9-4( zm(8yje&bH=(9knYN=QgZN==)fk@7)bW2Iqo!sCaJ5(9KoICL~td`WsNBJ?CVfbnCI zc8$rL*egFJr!1Cm`m8+3$kyiWkxI!aizJE`B`d#;y?b;=rNom*jatF7Yu}nw?mV!k z;Rz47bTOmef;lxd&H>w&PF=g*fSFytIfu(RVA^EodFw@(xy75EtegXUoRUH}NHJSW zHz!Fs2RO#WRL<06R#tBI;g}FE5EzoHrKPF6NS2WydZUJX;?E9Xj%8r*boFyt=akR{ E0PxlfL;wH) diff --git a/htdocs/images/xorg.png b/htdocs/images/xorg.png deleted file mode 100644 index 0e4b1d1c6fcb88c7ef089c0ec72f60cc73c18a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmV-K1H1f*P)Ra6wt zBokZ$SN<|7CF3lr$FxX9izKwDKJZ;5X8Y`U^P8UD%$_?>#57f*^zS;N>m$sL)bz0_ zW1P|9SZ7Z+HLKqBbB^RK*tlcAW%yfHLq*0i?;jz~5~FOc?cSAD#TRStJX^ec#kMWG zt)oqQJO%G+-!}NG5%KE#NM(7s0svA9!RXAaDVO$aJbiRuBHVWDz`@Bjvs1y+2M?r_ z=dPD7%v;~y5z<+l0)UXhpqN}~t``q)4@g-(2q%)jtwIz)1Mv62k*%J4U&Q@;WkL#) zmE+-Dnv<*)V-ggcwz{{Y|6^eI{I!a@maub_BX@$~?uY(YwT;10yUD0f0Ej2VIJ>>_ z#-;qiy`8?tr*^K*o-ynFhj#%EnG~;-)injftzSBllkHUM3MDFI=yE!O^{=htGvdzd zHYwMw&9mE`nG}6r`@Ru-m9KuR!)E1OMm9u8D(uYJ%@%+&-97E$-tbU=5=;=p#JC^; z(^8X*-*o9(1PKPKD}FFS+naooa1#K$2=uw#$^O?`3SwGn+R$LQvL$RqtR9drU5<{< zuH567Lyfg~>W;75|K!l&1Lfsx5l+YDu`WwWi9~Z<$o~xzCfI<6Syu<%UAe1r`+D zvN=<2_%q*=>#O-%_qI`s3|Y)T2uUy|xzU}Ov0(0OqC#!`r(mEN3yMk@GazyySWM>z zqfjYTPyql5l5?RaxD*69S5#>+87Tlz8V3MEP*v$a-=>66LI42Zcf&7NY*jB+qP`3O O0000 - - - Polytechnique.org : le site des élèves et anciens élèves de l'École polytechnique - - - - - - - - - - - - - - -
    - - -

    Polytechnique.org

    -
    -

    Services interrompus

    -
    -

    En raison d'une opération de maintenance sur nos - serveurs, les services de Polytechnique.org sont actuellement - interrompus. -

    -

    Nous vous remercions de votre compréhension. -

    -

    Avec toutes nos excuses pour le dérangement occasionné et - à bientôt !

    -

    L'équipe de Polytechnique.org

    -
    - - diff --git a/htdocs/javascript/.gitignore b/htdocs/javascript/.gitignore deleted file mode 100644 index 149417d..0000000 --- a/htdocs/javascript/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# jQuery and its plugins are downloaded by the Makefile -/jquery.*js diff --git a/htdocs/javascript/ajax.js b/htdocs/javascript/ajax.js deleted file mode 100644 index 9eb6a60..0000000 --- a/htdocs/javascript/ajax.js +++ /dev/null @@ -1,153 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function AjaxEngine() -{ - this.xml_client = null; - this.init = false; - this.obj = null; - this.func = null; - - this.prepare_client = function() - { - if (!this.init) { - if (window.XMLHttpRequest) { - this.xml_client = new XMLHttpRequest(); - } else if (window.ActiveXObject) { - try { - this.xml_client = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - this.xml_client = new ActiveXObject("Microsoft.XMLHTTP"); - } - } - if (this.xml_client == null) { - alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page"); - } - } - this.init = true; - } - - this.update_html = function(obj, src, func) - { - this.prepare_client(); - if (this.xml_client == null) { - return true; - } - if (src.match(/^http/i) == null) { - src = platal_baseurl + src; - } - this.obj = obj; - this.func = func; - this.xml_client.abort(); - this.xml_client.onreadystatechange = this.apply_update_html(this); - this.xml_client.open ('GET', src, true); - this.xml_client.send (null); - return false; - } - - this.apply_update_html = function(ajax) - { - return function() - { - if(ajax.xml_client.readyState == 4) { - if (ajax.xml_client.status == 200) { - if (ajax.obj != null) { - document.getElementById(ajax.obj).innerHTML = ajax.xml_client.responseText; - } - if (ajax.func != null) { - ajax.func(ajax.xml_client.responseText); - } - } else if (ajax.xml_client.status == 403) { - window.location.reload(); - } - } - }; - } -} - -var Ajax = new AjaxEngine(); - -var currentTempMessage = 0; -function setOpacity(obj, opacity) -{ - opacity = (opacity == 100)?99:opacity; - // IE - obj.style.filter = "alpha(opacity:"+opacity+")"; - // Safari < 1.2, Konqueror - obj.style.KHTMLOpacity = opacity/100; - // Old Mozilla - obj.style.MozOpacity = opacity/100; - // Safari >= 1.2, Firefox and Mozilla, CSS3 - obj.style.opacity = opacity/100 -} - -function _showTempMessage(id, state, back) -{ - var obj = document.getElementById(id); - if (currentTempMessage != state) { - return; - } - setOpacity(obj, back * 4); - if (back > 0) { - setTimeout("_showTempMessage('" + id + "', " + currentTempMessage + "," + (back-1) + ")", 125); - } else { - obj.innerHTML = ""; - } -} - -function showTempMessage(id, message, success) -{ - var obj = document.getElementById(id); - obj.innerHTML = (success ? " " - : " ") + message; - obj.style.fontWeight = "bold"; - obj.style.color = (success ? "green" : "red");; - currentTempMessage++; - setOpacity(obj, 100); - setTimeout("_showTempMessage('" + id + "', " + currentTempMessage + ", 25)", 1000); -} - -function previewWiki(idFrom, idTo, withTitle, idShow) -{ - var text = encodeURIComponent(document.getElementById(idFrom).value); - if (text == "") { - return false; - } - var url = "wiki_preview"; - if (!withTitle) { - url += "/notitle"; - } - Ajax.update_html(idTo, url + "?text=" + text); - if (idShow != null) { - document.getElementById(idShow).style.display = ""; - } -} - -function sendTestEmail(token, forlife) -{ - Ajax.update_html(null, 'emails/test' + (forlife == null ? '' : '/' + forlife) + '?token=' + token, - function() { - showTempMessage('mail_sent', "Un mail a été envoyé avec succès" - + (forlife == null ? " sur ton adresse." : " sur l'adresse de " + forlife), - true); }); - return false; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/close_on_esc.js b/htdocs/javascript/close_on_esc.js deleted file mode 100644 index 5cb8e09..0000000 --- a/htdocs/javascript/close_on_esc.js +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function closePopup(e) { - e = e || window.event; - if (e.keyCode == 27) { - window.close(); - } -} - -attachEvent(window, 'keydown', closePopup); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/do_challenge_response.js b/htdocs/javascript/do_challenge_response.js deleted file mode 100644 index 77ad253..0000000 --- a/htdocs/javascript/do_challenge_response.js +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function correctUserName() { - var u = document.forms.login.username; - // login with no space - if (u.value.indexOf(' ') < 0) return true; - var mots = u.value.split(' '); - // jean paul.du pont -> jean-paul.du-pont - if (u.value.indexOf('.') > 0) { u.value = mots.join('-'); return true; } - // jean dupont -> jean.dupont - if (mots.length == 2) { u.value = mots[0]+"."+mots[1]; return true; } - // jean dupont 2001 -> jean.dupont.2001 - if (mots.length == 3 && mots[2] > 1920 && mots[2] < 3000) { u.value = mots.join('.'); return true; } - // jean de la vallee -> jean.de-la-vallee - if (mots[1].toUpperCase() == 'DE') { u.value = mots[0]+"."+mots.join('-').substr(mots[0].length+1); return true; } - // jean paul dupont -> jean-paul.dupont - if (mots.length == 3 && mots[0].toUpperCase() == 'JEAN') { u.value = mots[0]+"-"+mots[1]+"."+mots[2]; return true; } - - alert('Ton email ne doit pas contenir de blanc.\nLe format standard est\n\nprenom.nom.promotion\n\nSi ton nom ou ton prenom est composé,\nsépare les mots par des -'); - - return false; -} - -function doChallengeResponse() { - - if (!correctUserName()) return false; - - var new_pass = hash_encrypt(document.forms.login.password.value); - var old_pass = MD5(document.forms.login.password.value); - - str = document.forms.login.username.value + ":" + - new_pass + ":" + - document.forms.loginsub.challenge.value; - - document.forms.loginsub.response.value = hash_encrypt(str); - document.forms.loginsub.xorpass.value = hash_xor(new_pass, old_pass); - document.forms.loginsub.username.value = document.forms.login.username.value; - document.forms.loginsub.remember.value = document.forms.login.remember.checked; - document.forms.loginsub.domain.value = document.forms.login.domain.value; - document.forms.login.password.value = ""; - document.forms.loginsub.submit(); - -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/do_challenge_response_logged.js b/htdocs/javascript/do_challenge_response_logged.js deleted file mode 100644 index 35805d3..0000000 --- a/htdocs/javascript/do_challenge_response_logged.js +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function readCookie(name) -{ - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; -} - - -function doChallengeResponse() { - var new_pass = hash_encrypt(document.forms.login.password.value); - var old_pass = MD5(document.forms.login.password.value); - - str = readCookie('ORGuid') + ":" + - hash_encrypt(document.forms.login.password.value) + ":" + - document.forms.loginsub.challenge.value; - - document.forms.loginsub.response.value = hash_encrypt(str); - document.forms.loginsub.xorpass.value = hash_xor(new_pass, old_pass); - document.forms.loginsub.remember.value = document.forms.login.remember.checked; - document.forms.login.password.value = ""; - document.forms.loginsub.submit(); -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/igoogle.js b/htdocs/javascript/igoogle.js deleted file mode 100644 index abea945..0000000 --- a/htdocs/javascript/igoogle.js +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function igOnLoadHandler() -{ - if (typeof(_IG_AdjustIFrameHeight) != 'undefined') { - _IG_AdjustIFrameHeight(); - } -} - -function markEventAsRead(event_id) -{ - _toggle(_gel("mark-read-" + event_id)); - _gel("evt-" + event_id).setAttribute("class", "read"); - _gel("link-" + event_id).setAttribute("href", "events/unread/" + event_id); - Ajax.update_html(null, "events/read/" + event_id); - return false; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/md5.js b/htdocs/javascript/md5.js deleted file mode 100644 index bd4ba66..0000000 --- a/htdocs/javascript/md5.js +++ /dev/null @@ -1,379 +0,0 @@ -/* - * md5.jvs 1.0b 27/06/96 - * - * Javascript implementation of the RSA Data Security, Inc. MD5 - * Message-Digest Algorithm. - * - * Copyright (c) 1996 Henri Torgemane. All Rights Reserved. - * - * Permission to use, copy, modify, and distribute this software - * and its documentation for any purposes and without - * fee is hereby granted provided that this copyright notice - * appears in all copies. - * - * Of course, this soft is provided "as is" without express or implied - * warranty of any kind. - * - */ - -function array(n) { - for(i=0;i> 4 with it.. - * Of course, these functions are slower than the original would be, but - * at least, they work! - */ - -function integer(n) { return n%(0xffffffff+1); } - -function shr(a,b) { - a=integer(a); - b=integer(b); - if (a-0x80000000>=0) { - a=a%0x80000000; - a>>=b; - a+=0x40000000>>(b-1); - } else - a>>=b; - return a; -} - -function shl1(a) { - a=a%0x80000000; - if (a&0x40000000==0x40000000) - { - a-=0x40000000; - a*=2; - a+=0x80000000; - } else - a*=2; - return a; -} - -function shl(a,b) { - a=integer(a); - b=integer(b); - for (var i=0;i=0) - if (t2>=0) - return ((t1&t2)+0x80000000); - else - return (t1&b); - else - if (t2>=0) - return (a&t2); - else - return (a&b); -} - -function or(a,b) { - a=integer(a); - b=integer(b); - var t1=(a-0x80000000); - var t2=(b-0x80000000); - if (t1>=0) - if (t2>=0) - return ((t1|t2)+0x80000000); - else - return ((t1|b)+0x80000000); - else - if (t2>=0) - return ((a|t2)+0x80000000); - else - return (a|b); -} - -function xor(a,b) { - a=integer(a); - b=integer(b); - var t1=(a-0x80000000); - var t2=(b-0x80000000); - if (t1>=0) - if (t2>=0) - return (t1^t2); - else - return ((t1^b)+0x80000000); - else - if (t2>=0) - return ((a^t2)+0x80000000); - else - return (a^b); -} - -function not(a) { - a=integer(a); - return (0xffffffff-a); -} - -/* Here begin the real algorithm */ - - var state = new array(4); - var count = new array(2); - count[0] = 0; - count[1] = 0; - var buffer = new array(64); - var transformBuffer = new array(16); - var digestBits = new array(16); - - var S11 = 7; - var S12 = 12; - var S13 = 17; - var S14 = 22; - var S21 = 5; - var S22 = 9; - var S23 = 14; - var S24 = 20; - var S31 = 4; - var S32 = 11; - var S33 = 16; - var S34 = 23; - var S41 = 6; - var S42 = 10; - var S43 = 15; - var S44 = 21; - - function F(x,y,z) { - return or(and(x,y),and(not(x),z)); - } - - function G(x,y,z) { - return or(and(x,z),and(y,not(z))); - } - - function H(x,y,z) { - return xor(xor(x,y),z); - } - - function I(x,y,z) { - return xor(y ,or(x , not(z))); - } - - function rotateLeft(a,n) { - return or(shl(a, n),(shr(a,(32 - n)))); - } - - function FF(a,b,c,d,x,s,ac) { - a = a+F(b, c, d) + x + ac; - a = rotateLeft(a, s); - a = a+b; - return a; - } - - function GG(a,b,c,d,x,s,ac) { - a = a+G(b, c, d) +x + ac; - a = rotateLeft(a, s); - a = a+b; - return a; - } - - function HH(a,b,c,d,x,s,ac) { - a = a+H(b, c, d) + x + ac; - a = rotateLeft(a, s); - a = a+b; - return a; - } - - function II(a,b,c,d,x,s,ac) { - a = a+I(b, c, d) + x + ac; - a = rotateLeft(a, s); - a = a+b; - return a; - } - - function transform(buf,offset) { - var a=0, b=0, c=0, d=0; - var x = transformBuffer; - - a = state[0]; - b = state[1]; - c = state[2]; - d = state[3]; - - for (i = 0; i < 16; i++) { - x[i] = and(buf[i*4+offset],0xff); - for (j = 1; j < 4; j++) { - x[i]+=shl(and(buf[i*4+j+offset] ,0xff), j * 8); - } - } - - /* Round 1 */ - a = FF ( a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ - d = FF ( d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ - c = FF ( c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ - b = FF ( b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ - a = FF ( a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ - d = FF ( d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ - c = FF ( c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ - b = FF ( b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ - a = FF ( a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ - d = FF ( d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ - c = FF ( c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - b = FF ( b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - a = FF ( a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - d = FF ( d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - c = FF ( c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - b = FF ( b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - a = GG ( a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ - d = GG ( d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ - c = GG ( c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - b = GG ( b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ - a = GG ( a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ - d = GG ( d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - c = GG ( c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - b = GG ( b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ - a = GG ( a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ - d = GG ( d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - c = GG ( c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ - b = GG ( b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ - a = GG ( a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - d = GG ( d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ - c = GG ( c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ - b = GG ( b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - a = HH ( a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ - d = HH ( d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ - c = HH ( c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - b = HH ( b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - a = HH ( a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ - d = HH ( d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ - c = HH ( c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ - b = HH ( b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - a = HH ( a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - d = HH ( d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ - c = HH ( c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ - b = HH ( b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ - a = HH ( a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ - d = HH ( d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - c = HH ( c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - b = HH ( b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - a = II ( a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ - d = II ( d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ - c = II ( c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - b = II ( b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ - a = II ( a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - d = II ( d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ - c = II ( c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - b = II ( b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ - a = II ( a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ - d = II ( d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - c = II ( c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ - b = II ( b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - a = II ( a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ - d = II ( d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - c = II ( c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ - b = II ( b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ - - state[0] +=a; - state[1] +=b; - state[2] +=c; - state[3] +=d; - - } - - function init() { - count[0]=count[1] = 0; - state[0] = 0x67452301; - state[1] = 0xefcdab89; - state[2] = 0x98badcfe; - state[3] = 0x10325476; - for (i = 0; i < digestBits.length; i++) - digestBits[i] = 0; - } - - function update(b) { - var index,i; - - index = and(shr(count[0],3) , 0x3f); - if (count[0]<0xffffffff-7) - count[0] += 8; - else { - count[1]++; - count[0]-=0xffffffff+1; - count[0]+=8; - } - buffer[index] = and(b,0xff); - if (index >= 63) { - transform(buffer, 0); - } - } - - function finish() { - var bits = new array(8); - var padding; - var i=0, index=0, padLen=0; - - for (i = 0; i < 4; i++) { - bits[i] = and(shr(count[0],(i * 8)), 0xff); - } - for (i = 0; i < 4; i++) { - bits[i+4]=and(shr(count[1],(i * 8)), 0xff); - } - index = and(shr(count[0], 3) ,0x3f); - padLen = (index < 56) ? (56 - index) : (120 - index); - padding = new array(64); - padding[0] = 0x80; - for (i=0;i?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+ - "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; - -function MD5(entree) -{ - var l,s,k,ka,kb,kc,kd; - - init(); - for (k=0;k -1 && document.createTextNode); // Opera 7 -var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4); -var olNs6 = (document.getElementById) ? true : false; -var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent)); -var olIe4 = (document.all) ? true : false; -var olIe5 = false; -var olIe55 = false; // Added additional variable to identify IE5.5+ -var docRoot = 'document.body'; - -// Resize fix for NS4.x to keep track of layer -if (olNs4) { - var oW = window.innerWidth; - var oH = window.innerHeight; - window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); } -} - -// Microsoft Stupidity Check(tm). -if (olIe4) { - var agent = navigator.userAgent; - if (/MSIE/.test(agent)) { - var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]); - if (versNum >= 5){ - olIe5=true; - olIe55=(versNum>=5.5&&!olOp) ? true : false; - if (olNs6) olNs6=false; - } - } - if (olNs6) olIe4 = false; -} - -// Check for compatability mode. -if (document.compatMode && document.compatMode == 'CSS1Compat') { - docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot); -} - -// Add window onload handlers to indicate when all modules have been loaded -// For Netscape 6+ and Mozilla, uses addEventListener method on the window object -// For IE it uses the attachEvent method of the window object and for Netscape 4.x -// it sets the window.onload handler to the OLonload_handler function for Bubbling -if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false); -else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler); - -var capExtent; - -//////// -// PUBLIC FUNCTIONS -//////// - -// overlib(arg0,...,argN) -// Loads parameters into global runtime variables. -function overlib() { - if (!olLoaded || isExclusive(overlib.arguments)) return true; - if (olCheckMouseCapture) olMouseCapture(); - if (over) { - over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over; - cClick(); - } - - // Load defaults to runtime. - olHideDelay=0; - o3_text=ol_text; - o3_cap=ol_cap; - o3_sticky=ol_sticky; - o3_background=ol_background; - o3_close=ol_close; - o3_hpos=ol_hpos; - o3_offsetx=ol_offsetx; - o3_offsety=ol_offsety; - o3_fgcolor=ol_fgcolor; - o3_bgcolor=ol_bgcolor; - o3_textcolor=ol_textcolor; - o3_capcolor=ol_capcolor; - o3_closecolor=ol_closecolor; - o3_width=ol_width; - o3_border=ol_border; - o3_cellpad=ol_cellpad; - o3_status=ol_status; - o3_autostatus=ol_autostatus; - o3_height=ol_height; - o3_snapx=ol_snapx; - o3_snapy=ol_snapy; - o3_fixx=ol_fixx; - o3_fixy=ol_fixy; - o3_relx=ol_relx; - o3_rely=ol_rely; - o3_fgbackground=ol_fgbackground; - o3_bgbackground=ol_bgbackground; - o3_padxl=ol_padxl; - o3_padxr=ol_padxr; - o3_padyt=ol_padyt; - o3_padyb=ol_padyb; - o3_fullhtml=ol_fullhtml; - o3_vpos=ol_vpos; - o3_aboveheight=ol_aboveheight; - o3_capicon=ol_capicon; - o3_textfont=ol_textfont; - o3_captionfont=ol_captionfont; - o3_closefont=ol_closefont; - o3_textsize=ol_textsize; - o3_captionsize=ol_captionsize; - o3_closesize=ol_closesize; - o3_timeout=ol_timeout; - o3_function=ol_function; - o3_delay=ol_delay; - o3_hauto=ol_hauto; - o3_vauto=ol_vauto; - o3_closeclick=ol_closeclick; - o3_wrap=ol_wrap; - o3_followmouse=ol_followmouse; - o3_mouseoff=ol_mouseoff; - o3_closetitle=ol_closetitle; - o3_css=ol_css; - o3_compatmode=ol_compatmode; - o3_fgclass=ol_fgclass; - o3_bgclass=ol_bgclass; - o3_textfontclass=ol_textfontclass; - o3_captionfontclass=ol_captionfontclass; - o3_closefontclass=ol_closefontclass; - - setRunTimeVariables(); - - fnRef = ''; - - // Special for frame support, over must be reset... - o3_frame = ol_frame; - - if(!(over=createDivContainer())) return false; - - parseTokens('o3_', overlib.arguments); - if (!postParseChecks()) return false; - - if (o3_delay == 0) { - return runHook("olMain", FREPLACE); - } else { - o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay); - return false; - } -} - -// Clears popups if appropriate -function nd(time) { - if (olLoaded && !isExclusive()) { - hideDelay(time); // delay popup close if time specified - - if (o3_removecounter >= 1) { o3_showingsticky = 0 }; - - if (o3_showingsticky == 0) { - o3_allowmove = 0; - if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over); - } else { - o3_removecounter++; - } - } - - return true; -} - -// The Close onMouseOver function for stickies -function cClick() { - if (olLoaded) { - runHook("hideObject", FREPLACE, over); - o3_showingsticky = 0; - } - return false; -} - -// Method for setting page specific defaults. -function overlib_pagedefaults() { - parseTokens('ol_', overlib_pagedefaults.arguments); -} - - -//////// -// OVERLIB MAIN FUNCTION -//////// - -// This function decides what it is we want to display and how we want it done. -function olMain() { - var layerhtml, styleType; - runHook("olMain", FBEFORE); - - if (o3_background!="" || o3_fullhtml) { - // Use background instead of box. - layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml); - } else { - // They want a popup box. - styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass"); - - // Prepare popup background - if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\""; - if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground); - - // Prepare popup colors - if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor); - if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor); - - // Prepare popup height - if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height); - else o3_height = ""; - - // Decide which kinda box. - if (o3_cap=="") { - // Plain - layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text); - } else { - // With caption - if (o3_sticky) { - // Show close text - layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close); - } else { - // No close text - layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, ""); - } - } - } - - // We want it to stick! - if (o3_sticky) { - if (o3_timerid > 0) { - clearTimeout(o3_timerid); - o3_timerid = 0; - } - o3_showingsticky = 1; - o3_removecounter = 0; - } - - // Created a separate routine to generate the popup to make it easier - // to implement a plugin capability - if (!runHook("createPopup", FREPLACE, layerhtml)) return false; - - // Prepare status bar - if (o3_autostatus > 0) { - o3_status = o3_text; - if (o3_autostatus > 1) o3_status = o3_cap; - } - - // When placing the layer the first time, even stickies may be moved. - o3_allowmove = 0; - - // Initiate a timer for timeout - if (o3_timeout > 0) { - if (o3_timerid > 0) clearTimeout(o3_timerid); - o3_timerid = setTimeout("cClick()", o3_timeout); - } - - // Show layer - runHook("disp", FREPLACE, o3_status); - runHook("olMain", FAFTER); - - return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != ''); -} - -//////// -// LAYER GENERATION FUNCTIONS -//////// -// These functions just handle popup content with tags that should adhere to the W3C standards specification. - -// Makes simple table without caption -function ol_content_simple(text) { - var cpIsMultiple = /,/.test(o3_cellpad); - var txt = '
    ' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'
    '; - - set_background(""); - return txt; -} - -// Makes table with caption and optional close link -function ol_content_caption(text,title,close) { - var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad); - var closing, closeevent; - - closing = ""; - closeevent = "onmouseover"; - if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick"; - if (o3_capicon != "") { - nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"'; - if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"'; - o3_capicon = ''; - } - - if (close != "") - closing = '
    '+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+''; - txt = '
    ' : '>')+(o3_captionfontclass ? '' : ''+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'')+''+closing+'
    ' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '
    '; - - set_background(""); - return txt; -} - -// Sets the background picture,padding and lots more. :) -function ol_content_background(text,picture,hasfullhtml) { - if (hasfullhtml) { - txt=text; - } else { - txt='
    '+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'
    '; - } - - set_background(picture); - return txt; -} - -// Loads a picture into the div. -function set_background(pic) { - if (pic == "") { - if (olNs4) { - over.background.src = null; - } else if (over.style) { - over.style.backgroundImage = "none"; - } - } else { - if (olNs4) { - over.background.src = pic; - } else if (over.style) { - over.style.width=o3_width + 'px'; - over.style.backgroundImage = "url("+pic+")"; - } - } -} - -//////// -// HANDLING FUNCTIONS -//////// -var olShowId=-1; - -// Displays the popup -function disp(statustext) { - runHook("disp", FBEFORE); - - if (o3_allowmove == 0) { - runHook("placeLayer", FREPLACE); - (olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over); - o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1; - } - - runHook("disp", FAFTER); - - if (statustext != "") self.status = statustext; -} - -// Creates the actual popup structure -function createPopup(lyrContent){ - runHook("createPopup", FBEFORE); - - if (o3_wrap) { - var wd,ww,theObj = (olNs4 ? over : over.style); - theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); - layerWrite(lyrContent); - wd = (olNs4 ? over.clip.width : over.offsetWidth); - if (wd > (ww=windowWidth())) { - lyrContent=lyrContent.replace(/\ /g, ' '); - o3_width=ww; - o3_wrap=0; - } - } - - layerWrite(lyrContent); - - // Have to set o3_width for placeLayer() routine if o3_wrap is turned on - if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth); - - runHook("createPopup", FAFTER, lyrContent); - - return true; -} - -// Decides where we want the popup. -function placeLayer() { - var placeX, placeY, widthFix = 0; - - // HORIZONTAL PLACEMENT, re-arranged to work in Safari - if (o3_frame.innerWidth) widthFix=18; - iwidth = windowWidth(); - - // Horizontal scroll offset - winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset; - - placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); - - // VERTICAL PLACEMENT, re-arranged to work in Safari - if (o3_frame.innerHeight) { - iheight=o3_frame.innerHeight; - } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { - iheight=eval('o3_frame.'+docRoot+'.clientHeight'); - } - - // Vertical scroll offset - scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset; - placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); - - // Actually move the object. - repositionTo(over, placeX, placeY); -} - -// Moves the layer -function olMouseMove(e) { - var e = (e) ? e : event; - - if (e.pageX) { - o3_x = e.pageX; - o3_y = e.pageY; - } else if (e.clientX) { - o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft'); - o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop'); - } - - if (o3_allowmove == 1) runHook("placeLayer", FREPLACE); - - // MouseOut handler - if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) { - (olHideDelay ? hideDelay(olHideDelay) : cClick()); - hoveringSwitch = !hoveringSwitch; - } -} - -// Fake function for 3.0 users. -function no_overlib() { return ver3fix; } - -// Capture the mouse and chain other scripts. -function olMouseCapture() { - capExtent = document; - var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove; - var re = /function[ ]*(\w*)\(/; - - wMv = (!olIe4 && window.onmousemove); - if (document.onmousemove || wMv) { - if (wMv) capExtent = window; - f = capExtent.onmousemove.toString(); - fN = f.match(re); - if (fN == null) { - str = f+'(e); '; - } else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) { - if (!olOp && wMv) { - l = f.indexOf('{')+1; - k = f.lastIndexOf('}'); - sS = f.substring(l,k); - if ((l = sS.indexOf('(')) != -1) { - sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,''); - if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null; - else str = sS + '(e);'; - } - } - if (!str) { - olCheckMouseCapture = false; - return; - } - } else { - if (fN[1]) str = fN[1]+'(e); '; - else { - l = f.indexOf('{')+1; - k = f.lastIndexOf('}'); - str = f.substring(l,k) + '\n'; - } - } - str += 'olMouseMove(e); '; - mseHandler = new Function('e', str); - } - - capExtent.onmousemove = mseHandler; - if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE); -} - -//////// -// PARSING FUNCTIONS -//////// - -// Does the actual command parsing. -function parseTokens(pf, ar) { - // What the next argument is expected to be. - var v, i, mode=-1, par = (pf != 'ol_'); - var fnMark = (par && !ar.length ? 1 : 0); - - for (i = 0; i < ar.length; i++) { - if (mode < 0) { - // Arg is maintext,unless its a number between pmStart and pmUpper - // then its a command. - if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) { - fnMark = (par ? 1 : 0); - i--; // backup one so that the next block can parse it - } else { - switch(pf) { - case 'ol_': - ol_text = ar[i].toString(); - break; - default: - o3_text=ar[i].toString(); - } - } - mode = 0; - } else { - // Note: NS4 doesn't like switch cases with vars. - if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; } - if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; } - if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; } - if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; } - if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; } - if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; } - if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; } - if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; } - if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; } - if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; } - if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; } - if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; } - if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; } - if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; } - if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; } - if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; } - if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; } - if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; } - if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; } - if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again. - if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; } - if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; } - if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; } - if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; } - if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; } - if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; } - if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; } - if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; } - if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; } - if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; } - if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; } - if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; } - if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; } - if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; } - if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; } - if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; } - if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; } - if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i]; opt_FUNCTION(v); } continue; } - if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; } - if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; } - if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; } - if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; } - if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; } - if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; } - if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; } - if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; } - if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; } - if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; } - if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; } - if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; } - if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; } - if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; } - if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; } - i = parseCmdLine(pf, i, ar); - } - } - - if (fnMark && o3_function) o3_text = o3_function(); - - if ((pf == 'o3_') && o3_wrap) { - o3_width = 0; - - var tReg=/<.*\n*>/ig; - if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, ' '); - if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, ' '); - } - if ((pf == 'o3_') && o3_sticky) { - if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close; - if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' '); - } -} - - -//////// -// LAYER FUNCTIONS -//////// - -// Writes to a layer -function layerWrite(txt) { - txt += "\n"; - if (olNs4) { - var lyr = o3_frame.document.layers['overDiv'].document - lyr.write(txt) - lyr.close() - } else if (typeof over.innerHTML != 'undefined') { - if (olIe5 && isMac) over.innerHTML = ''; - over.innerHTML = txt; - } else { - range = o3_frame.document.createRange(); - range.setStartAfter(over); - domfrag = range.createContextualFragment(txt); - - while (over.hasChildNodes()) { - over.removeChild(over.lastChild); - } - - over.appendChild(domfrag); - } -} - -// Make an object visible -function showObject(obj) { - runHook("showObject", FBEFORE); - - var theObj=(olNs4 ? obj : obj.style); - theObj.visibility = 'visible'; - - runHook("showObject", FAFTER); -} - -// Hides an object -function hideObject(obj) { - runHook("hideObject", FBEFORE); - - var theObj=(olNs4 ? obj : obj.style); - if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; } - theObj.visibility = 'hidden'; - theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); - - if (o3_timerid > 0) clearTimeout(o3_timerid); - if (o3_delayid > 0) clearTimeout(o3_delayid); - - o3_timerid = 0; - o3_delayid = 0; - self.status = ""; - - if (obj.onmouseout||obj.onmouseover) { - if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER); - obj.onmouseout = obj.onmouseover = null; - } - - runHook("hideObject", FAFTER); -} - -// Move a layer -function repositionTo(obj, xL, yL) { - var theObj=(olNs4 ? obj : obj.style); - theObj.left = xL + (!olNs4 ? 'px' : 0); - theObj.top = yL + (!olNs4 ? 'px' : 0); -} - -// Check position of cursor relative to overDiv DIVision; mouseOut function -function cursorOff() { - var left = parseInt(over.style.left); - var top = parseInt(over.style.top); - var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); - var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); - - if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true; - - return false; -} - - -//////// -// COMMAND FUNCTIONS -//////// - -// Calls callme or the default function. -function opt_FUNCTION(callme) { - o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function')); - - return 0; -} - -// Handle hovering -function opt_NOCLOSE(unused) { - if (!unused) o3_close = ""; - - if (olNs4) { - over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER); - over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } } - over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); } - } else { - over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } } - } - - return 0; -} - -// Function to scan command line arguments for multiples -function opt_MULTIPLEARGS(i, args, parameter) { - var k=i, re, pV, str=''; - - for(k=i; kpmStart) break; - str += args[k] + ','; - } - if (str) str = str.substring(0,--str.length); - - k--; // reduce by one so the for loop this is in works correctly - pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str; - eval(parameter + '="' + pV + '"'); - - return k; -} - -// Remove   in texts when done. -function nbspCleanup() { - if (o3_wrap) { - o3_text = o3_text.replace(/\ /g, ' '); - o3_cap = o3_cap.replace(/\ /g, ' '); - } -} - -// Escape embedded single quotes in text strings -function escSglQuote(str) { - return str.toString().replace(/'/g,"\\'"); -} - -// Onload handler for window onload event -function OLonLoad_handler(e) { - var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i; - - if(!olLoaded) olLoaded=1; - - // Remove it for Gecko based browsers - if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false); - else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick() - window.detachEvent("onload",OLonLoad_handler); - var fN = document.body.getAttribute('onload'); - if (fN) { - fN=fN.toString().match(re); - if (fN && fN.length) { - for (i=0; i' : '

    85t-j2i+(^06QQLwgdnG diff --git a/htdocs/images/flags/LI.gif b/htdocs/images/flags/LI.gif deleted file mode 100644 index 713c58e1df193b0256be462a3437c95af926e600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hssmzVQaqZh z!vGnld1aW&008t@L+xl)DF~@ zSCHT;5Aa4W>|sowk+<${TPX`+X;O^vO*e2`laHREMR3Hv!KX%Z$msw8@N{DP;A8aM zX8-^TA^8LV00000EC2ui01yBR000Jrz=d$QAQ+E?OlA>Ms8Tt_X2aohIv2n)#4`Cr zE5OHtlNd0c?Wre<+{WcI#k160vSM8vL!sa@Gcf~$0}O^XEi@n?3_m*-BO?wDH8n3K zB?1BvH4O(AFbD|=0R;sUnh-7l6$d1uq^78wE+_@9JTfv5FrlykrMCye4aLR{70Jp$ F06Pnflbiqm diff --git a/htdocs/images/flags/LK.gif b/htdocs/images/flags/LK.gif deleted file mode 100644 index 1b3ee7f572ddb8199166f65e8803233cdaebca1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h{+C$v(@WyB7rACo`;AEGyd>$jN1;4ZaHnYW)E}!% zW?Y+G^2j5eHA(i>Q0~Vy_uOQ;Wiqo`Z25*h^Up)ccqB}aNb$@)o-{hmhC;)6bf-mJ z#BUqfm@L|xL{*nm?Y}d(V|1=kX0cgR>%uPi*;JV=LjIy<_SHC}K|J~2a`o9;{gO~b zj6~k2Kv9%W%7Rquz-MNmW!9KB$9p@^f)K4vPsoC6u24#^QeDi1F3^N5-J&1%*HqJz zNBP-TA^8LV00000EC2ui01yBR000J-z@P9}>Ny;N0EKe7JRUy;;&f8QG@+10A{zKQ zKiL8RfM{-9MQ$?~?ZV@-L}7q=JQ>`fQW67L5OW47AT~1*dp!#uECeee3Md&M1qnJ0 z6%Gq81Oz<_8$Jx93>YRH0Us6w6Al{(12i2GJf^5GEfW&~BLfY;CKwSZ9274Wx&baD X2f!vN5j9Ls4Oz$U diff --git a/htdocs/images/flags/LR.gif b/htdocs/images/flags/LR.gif deleted file mode 100644 index 435af9e506f70a8cc09022ae3029373facb3ee0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h;Ami@006B30N!R@(LFP>wA0{cU&H_a-eX$bURAaL z0L}mag@?Gl00885ZR2ri;caExT2b3qO`HG#003CoRZC`RrPfSB{{H^`{r&Xx^zZNW z_xJk9006lF0M}Vh++0%OY-8tyeW0Po+gVT3L^<{6<@f99*ic8`Z)VtERnRakXhcp5e|E(;u`37noK1Oy)wCUthEk~66;OHB$20>uHx6B9o_ GK>$0mai$so diff --git a/htdocs/images/flags/LS.gif b/htdocs/images/flags/LS.gif deleted file mode 100644 index 427ae957e508a6c90df90c68f2320b119bf372e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h<>loTn-%~u03Dnr01s_coyhC#>_wKu-`(3QhPvwU z^F*&lB9T_py_GPCz4`h1JF7bYL;y65zx(<2`1bNAe4D>{miq3 z-_Wu>lENi^wBggYHmEi;rZV;K<^25nD1x_as?K<^(Hx*0%H8JxF@pd>jnU!i)xevM zzS{Bh_0hVG_wwpkqRl_4Nx00`OQv)D`};(Zy>FefA)7Sq=GVrmdHehO>FMeG{QT|h z?fUxqA^8LV00000EC2ui01yBR000J#K%dZOFz|SQBw{&J`93faXQa{edb{7FRUr5% zuMMY))hZ4N8^O@PSTMEn1Jy~8Yyw1swb43i7#0Q1BE`QJsoDir+URq$bA z_uD)C=X3hyYxl|k{nP;W-&O5BJ%l;7{1gcNpq%=3ZTkB9`1tq$YVH6;-d(c!gv9#*g7BZ7tSf@AJVX6BGjjJwH7-dJBDjfrEu6Jso$1Tgt5T@ diff --git a/htdocs/images/flags/LV.gif b/htdocs/images/flags/LV.gif deleted file mode 100644 index 17e71b7eb6bb2dc4f4e63837cd70be048d08f1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hu0lhpG&H(YRP5Q=oE#jaGBUzzYjgkrX8-{F{QR*- zMp^&>@!{dhdwRxlbG1=Xtv)`;o}RKwN~JC?>B`FV_4P>r0O{7&zFb^^008>>`uOXBfMEz^Yiom{{EO06y@dR=+o2W&(EqnJnGli#(8&0BdeM3Si~wcH zWdK_MOTJ4`!BBF|a&F9S0A&DS#$i#vQ6;V=O}|YrvoJcgI$_CS08#)|!&QRRg8)SU z089W*z)n}gS2eUXe$#$x%4$KkK_IIjJ+wVHwKqAlIWMsNmIg8Xv}C?!dXPQLsh_4fYX3GxH~nqHaE66Nxn%-yh~lg zT>zN?A^8LV00000EC2ui01yBR000Juz@Jb!7$g#cB9w9}<=Yc$F ziVG}|X;27;)=uKZg;V4P1KlcBD2pHH0x!=EIXV?6G7AF;eR61lgA)Z912JSBb1oJi zjUyr)2@W%q1ePBsDib3BB%BW&JfWAQrT_pY8vP*D9* zQS~Jy`a(kaR8;@^dKPd4Gs57O6~vv^*%l3008@8Ve~pW`bI|jL`3=k0QLX? z@&Ew-Sy}1;0RMY?^dBGd85#F5F#Kw2{AOnQU0vb;0Q^f!`$|dqJU#O=GW}Fk-v9vl zIy(M&dHO#;`B+%Ga_{m6nG9Rd>Ax1Hw1McAs2WLHYgY` z6f`t43y=joCK@A_FD-PPAq530EE*&kr2`0$sSyzdEE`%}2@)6r6c;-x1~NTMO->#j N6%{5XEIrae06XmGiQoVL diff --git a/htdocs/images/flags/MC.gif b/htdocs/images/flags/MC.gif deleted file mode 100644 index 02a7c8e1bdcd38bf6ce52dc5662d1d75026b67d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs(J z@$vEgU0w3>^YuSJ>gwwBW@i0#bo***^dKP5&(G)Q=lpMP`cF^&aB=!vT=-K{`Bzu= zL`3{$W&C$|$H&LX%gOm?XZ!p6`1tts_4UQY#rF30`T6<%008sz^ZNSw_xJbo^z`!b z^8Ww;A^8LV00000EC2ui01yBR000Jrz@PA!E9NE>gVJy~{5DXBD0LdS3M$qL<=k{S zh{`3QSTr7xNTLfClg;P|r6tKZ!sGHeO(A{i3=A(KRWbzt00RRFArc$`kTW|tG(0yo zJvu%;8Xy5Pl9ZO1nm#%iCILH>m6w@592`D27@?x0nI1l~7`*}l78V2qB^ogqHZV3p F06Uswuu=d3 diff --git a/htdocs/images/flags/MD.gif b/htdocs/images/flags/MD.gif deleted file mode 100644 index e4b8a7e3f67097d65193a435018d68d1a0798af8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h-B3dS0I{c(RP^B~OJ~w#ecS!+UE*X}+e$s_#sL2E zdxMwa_T@3wGbO120GfwGY=qpl008>wOY_(!ev{(-?r8k%RQufk<-GvrZe-g=IChNQ z;8;xg=tTDAJ=7~4{L%o!0032S)?azq+CVawgFOHMpV&Jsp#T6{b=dgkK=$QK zj7na3)ioRq>SWf5>VEgl*qCmap|6ni3lGcpehgbe_P8#y9A z5-l$}B@8DGl9ZPO9V!o<1E3!WC;<>Y1TQKK6B9hCAFHij1uix=H7g!8Xlbn`$R-I1 N7|j?CDA6cE06R$cn05dF diff --git a/htdocs/images/flags/MG.gif b/htdocs/images/flags/MG.gif deleted file mode 100644 index a91b577d138eeaa5d0f9bc8a00cee9ddb3305062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hO0r5Eo*epARO$c#>gwt}tUXz}TK#Kl05$;iBqaAt zOy=h1HL5k@;^Nxc+S5HKFQqT^007W49sB?Q3zZ81D*ymT0R3iW`$tFmK|=XFJoq;@ z_c1Z{D=Q?TB>YTFGo~^sq$(7d6#4o2?d|Q~-`_T{HrGcp{9s`hq!%KpBKAZ?+fqQA z008=2T<2$9^*=xTaB&cq57$mREw3&6{QLd<{Vbv^{)L76`}_U<{rdX){QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J&z@D&2ni!3dWMnYt{eC_lE_OIvP%eQ$(S$}1 zf)6I6*>F1CUeu?%h{@(oVl^N|bvD$vd`=`_0|ab5JTELWCnpaN5)v~l1Ufu5IR*s` zG&CwIDJdov1Uxx8I|d98Aszt%A~GNd3p_hJBLJwXtTGf36$_*zBL)Bf1(ysU5H}SK S4J8gG7SR?6)D_kUK>$0+p_E1d diff --git a/htdocs/images/flags/MH.gif b/htdocs/images/flags/MH.gif deleted file mode 100644 index 92f5f485c3bb6e33dbf40656bda07e3742c071a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hxy0R=s?qhQZg-KxskYMq0BsmTlZ|k9L}{`3+q?h( zR7+~BwRBrkbh12StM=p2001wAo5ymG!dYjT_kl4(W29SsxmkI%WrDf@02nq~q5l5< zG+3T%hPy{i_^kXs|~^Yw2A8*Wm7JgR#$@g7wX=EKr+wc$#u) zga8S9A^8LV00000EC2ui01yBR000J$z@Jc9C>9k+r0W*}m?8s-MAX4pF1;1)7uak9 zmqsJxaa3M2*zHH~2F9V9!xy6n9;ZTt0KkM6H4_YWC?6#`1p{Fr2sH;XcON(r7Z3#! zV+eu*2`K;_JR=$z1tNb3oFoArAO^0Z1sFX#I{*?IAi1t192p8MEd&yO3mz2}4jLT2 QHYx>35Yf^Z)YL%$J4-p13IG5A diff --git a/htdocs/images/flags/MK.gif b/htdocs/images/flags/MK.gif deleted file mode 100644 index 7aeb8311b2b6a4e18b278d1774459e57335c1b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5h{8?7{*f{@h0RED8_Bl8G+;I4bGyD4h^Z)?$ye#Pe z0Qq@4_{>KBb#?o_NBKub`-VsR###JvPyA(N_xCySnG)&h0Qash_NpfT`gijf82*1* z_ADp->r?wvO!Pn?_H8-zM>O_oC+#-?`<6rdZCLqcNA`9q-v9vgEga~^0QF4({Wk#o z;{ftO6#bV`_Bbo@S`*#f0Q2S={CH;j@M8XmS@vBk`Mx>y*dOuA4)WtH`maL$zf}6u zUHXiT c9uEu*1koW0J17S$NebF3Dhepy-!ee}J1K9L&j0`b diff --git a/htdocs/images/flags/ML.gif b/htdocs/images/flags/ML.gif deleted file mode 100644 index 53d6f490c1777de4f9d44195d5e188cf2a35db0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h?Da!Rv`Xjz0BXW&`22I|=m7luY4kBM_en|lS6BS} z0QD>^^Bf!ihyeE3D0<0y>GL=BBqUL`QS9|j^wb<&y<7l#0CL82I;uJVXaM*3MDi08 z`T0Bg`a$^kHT69`Sh`sNR{-%14e|g0MX^Qu`$zZpFZT8-{QOMy^(0idRNw#r{ryqn zqX6&tQ}py6!4O&4|n0B#;M4t{?E78eo$BmjCQCk_k@ z8#yZ$1CTlp9+W8*m>UP110*^a5TY*>8zLg78C)PL6EPYZH9ci!KNcAoAt5&f$OSDc JD?iRb06S!MmRbM+ diff --git a/htdocs/images/flags/MM.gif b/htdocs/images/flags/MM.gif deleted file mode 100644 index 9e0a2756d2ebf850087f556cf77289009985f3a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h`9nkXB_-Y6`1CwI`dwZ000610?d1Rf_%=58OH1ki z0Qx>Y@=a6#0LOiO zmFiJU*Kly;czNVTM%}@|@=HtGMLW(_Sl(S&*Yq|v`$$OfLrQFA+Hq~)c5>d`008X( z0002PA^8LV00000EC2ui01yBR000Jxz{c+1@_u`KpBFCl2H5} z6@dU{a^V0ggeKDchQ~7wS}h4+4h`5NWvInMX&QAM0|z8LHaaI9AvAOW9Up~0Dhv!c zIRh+$kRK2?2OAz|3nh<{5D+3G8z2Cs2oZyx7Z(#F1z8qb2^ataH#Z^^6Fo~!J_-s4 L%p)T`&_Mt@&VP;h diff --git a/htdocs/images/flags/MN.gif b/htdocs/images/flags/MN.gif deleted file mode 100644 index dff8ea5a63f0a3ec96dfd0dcb95a0a7abed8083c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hK|%Ta+GzgCTz7N&^f58_NlE{EdHYpV^(-tZD)v!P z{qr0g`)FH4IPLW$B>d4${Aft?00000>He%%?EnB(N%8z!Tl!r+X=(iC008n66ZJhk zFfaB$J@rRN`ZYE9@eK_C0Q>*|);l}-OicXw001N;_22*iT~hJ;*hC&4^z}A2WnlLn z8SehbdH=P0{@ro=abhYY@cxH(Jvj0tAMZ;`_b@B*`m#j+-ds&V?)h6){ex89008{} z0RI30A^8LV00000EC2ui01yBR000J!z@PBvlZ1{TNn}Z({0uLHVKBg0S(d}0;4}yr z7LX O63r4KCnr7AK>#~`43F&q diff --git a/htdocs/images/flags/MO.gif b/htdocs/images/flags/MO.gif deleted file mode 100644 index 66cf5b4f05dc02126365be46762113446f171a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5htJ5t>eK)_ z0QC0sQngY=u|?YK+Iq=)am8`~g8*H=UAEn}m(P~~SpZMAPXI{(M6N^tbO3P0Y)Y|8 zF{LnGyi7l?KRT*93zZ81EC3pu8d|!738K-oN;DY5a``m@aiMCmJs`=!Yv%|;$A$NP0yis$eeV4+6o4SOY!gi9p zM{BlIcBwmInnGuu001C@l!%F>i0sgicaElSjJR!vwDiBKYoDF;_+o*uV2ZQ2#p3<#r26otkD|Afrn#QA zrT{I0A^8LV00000EC2ui01yBR000J!z@Jc9DGrW@Wby}S0t_sN1J>IRN~QzTvf;G^ zw9^DZx#}tgQ1uJ diff --git a/htdocs/images/flags/MQ.gif b/htdocs/images/flags/MQ.gif deleted file mode 100644 index 570bc5dd18a8cd881e03c9a56c3ebcc514191fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhcXNk%w1VGsZd0M!5hTXLl}RGv_4tisCRo~+NNwAAM6@??9o{QUgT*5k_3 z<+j1v03U?2z1I2p`2YfQ=H})A05XA<#O&_!U3RgBn8lT)&AGzb003F^_4Q9`sk+79 z)!F8Zoy5)5<#~_6003wJ07b~q;?UUXLSCYGjK03e-o3`%_xJh$02lxgeZ$M$SaGn5 zoykaLr%7h0`uh5Eh`rk0=-}n>)!poAfw|q{?_YSayv5t;>FMF-?bh4q`}_O$_V)e# z{rC6xA^8LV00000EC2ui01yBR000J)s+bJnQ06YHGuI>N; diff --git a/htdocs/images/flags/MR.gif b/htdocs/images/flags/MR.gif deleted file mode 100644 index f52fcf0933bdd5a8e30a1d2f7d76b97f728c9ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hfXF0h!e{`M05z#K0E7ThwNXT_L_@GK0BHc&>@Y2) zEdV_LGo>>Cc>sFJdH_lQaKv#rmpNj-VqLyn`ujyqt4;6rEkm+HBcUUs*-C4>Yd)?% z09ybVn;9mPCQ7wRAB!JPwogj4N;;}KSh-nLxKwt?b`+Wv04D%Dt~*`4T`rj}g2^NRIXC!;d4wT zq*5W1F>D3{g^24V?FtnNg*G@SFop-gq>J@F1{Wy|3@{!T8w&&wB^5F}G!YRm2{||& zBZ?3qA2SIyEiE+(ARQ+I3k?Au7aI{Q78U@dCpQc~s;wylD;^%SH#Z7D2v=bRA_it7 X0}KiZC=E*-91qqD3qRT@3qb%oq~mv! diff --git a/htdocs/images/flags/MS.gif b/htdocs/images/flags/MS.gif deleted file mode 100644 index 5e5a67aa882715433cef156d6586341b5f50c8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hX)9;rcXyqRRA+R#002$RY&qox!(I;tiatq!836tfEpCMGHrtpi#hprWH0 R%*0Gi1Ps#B9@W)B06X1&k5K>s diff --git a/htdocs/images/flags/MT.gif b/htdocs/images/flags/MT.gif deleted file mode 100644 index 45c709f2bc68af31bf62940c2765474f1798639a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h{9|M0=H}JY)8gXd+}zyq6BG0D^7T48^Z)?t008nX zF844n^(7_xQ&aH`4fjn=^*%o4008+yLjL^y_A4v&A0PNPHuW|(^BEc9008;`0Qo#U z^D;8u008*-`1kks_4W1d@9*vH?fF+%y|}p4$;rvc$olW^`dnQ3OH1=LHSgWs@$c{U z>gxP*a`^4->+9?M^78um`S?ag`~3U+@bLHR?EUri-2edj`T6_%`}+F&@$vEg{{H;@ z{Qdp?A^8LV00000EC2ui01yBR000J#Kpu-nB(5|Xgc6ZRfMkMSulKvT007je@kkg1 zq!RTPYe+Vh1tsO2n8vwT33!M%Q3az80A1@CO2Pzy23OFzU0RsaB P1SJs>85tco)Ik6{yXCVQ diff --git a/htdocs/images/flags/MU.gif b/htdocs/images/flags/MU.gif deleted file mode 100644 index 081ab4533607939fa2bb70838fc34e35024272aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5hXLpgiSZP$WRO4r7SZaqkShP8&IRH}tsWeF@M5grg z9I{ASQfj;R_bo=PMwrei`}|AYQ&U4-vj8yw`};!q`8v1&07+!I$^ZcJ@)M-iJ^lS{ z02xc0(JTNK0F%ocb%UJr^fY*j%c=kX=5TR}#tlqfeL7RE=z4lqal!oj0001oFQ6~@ z_%-$QB#@o3T5!GL;Q+~dh!2YZVYvWbx?nF&tVsX>hX4Qo07T(lUZ~kbx!`7w$P=H_ zG{XP@A^8LV00000EC2ui01yBR000JqK+JDAv>1=0ttvyIpt@ zV8r6K62V{$#zi7IootDOBv($Q)aydQ2AAhJFCc;dgan2JCMEzLDjN_G6ciOL4Gk^| z3K=0WjgXR*mY5luF*H0o8X7(w4-X$7JtZX%GY2&_0=W*m2E8o59tXn16UD|J$R0re EJA^uk@&Et; diff --git a/htdocs/images/flags/MV.gif b/htdocs/images/flags/MV.gif deleted file mode 100644 index 46b63875b1fb72f602ec068d935042455e4ed795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5huG&JNjG2bX7 zUf*8qWL@xAR&wZd>Hq*(-dlR?e&j4S;mhrjc|>04A$;8)`S z0OtSzA^8LV00000EC2ui01yBR000J&KoICh^cj7XWaYvHNuH9y;BY_?2%g5`;v{rB z7+xY_k&Q@zMWCA#i9Uv10T*cjAc5Ziqk1!D0yZ}hCL0QQ10E z4K5!A3<5L;Aw4e-84i~V69ok&Ius@_FEym52oPo@8ZjFiD-RDoF%A`09$5$1RfRXqB diff --git a/htdocs/images/flags/MW.gif b/htdocs/images/flags/MW.gif deleted file mode 100644 index ad045a09c124c010eeb1ce5adf28a3b5f28fba4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmZ?wbhEHb6ky*$`1tskt};Cv73Hj{sjsj9l!1YTh2fi-*-vZhJO+lp3=FYLT>tp{JFRo-FgKeO z8=H10ZDC~Ol9G~$h4%Iv?WGsUM7y{oF853{H?QBG)m2&PGtDq@UsAD?lfhC0<;BVj z#tcB9_>%=hG3bB@ke?XXIuFb*@UWWOb|OASveA--DS+GID~IwG@e>Cgz7aB;c;eS# z$*AZytAk!GPFv(pDNbC$H~Z|;EgM3##FdN7*m-%?YU)H;8jH)@I%?}#SX7mz%uO{7 zB_u34I2ac(TB@+>@f!)t3kcX68#8aR;bOHC5s{SS=hqfqZDS*_m6cWMxa>(;yE9x| Ic8(0z0Cd)M=l}o! diff --git a/htdocs/images/flags/MX.gif b/htdocs/images/flags/MX.gif deleted file mode 100644 index ddc75d04d8f2b05b315d7960abebe0604fd9e1fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=W1?MqI7z=lG`;q09yu2oow7kOSk|4gMO=WUGP6008&*_j9z3-aSIuFE!ygI_=U{QTe5#NOoIjeTn0 zPgCSzWb*Frqq3jR&(FZHllS@f`1JJRN>BCo_B@ne!esC^{avh*CKMIRzCIsgCw diff --git a/htdocs/images/flags/MY.gif b/htdocs/images/flags/MY.gif deleted file mode 100644 index fc7d5236148edbed734df8a666731eabfe88968e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^ycRK@$vKMn%&Wc>gwrCP4ndB-bGE;007*krQl6hwg3PR2bl8W;?|v= z+c`t-!oudp#sC1t-m0qLEG(0d(AyjwOiSF{&w|6PC5LxQv8}`L$Hm>dyYA)gZEfLq zb;9-U_3P8q_ut>$)TQIvp5Md6@#pS4JK6i^<@fFF57%;0^5q7T=u^K8V V9UTu35D+*ZAQl!qJsTTA06XF)t_T1C diff --git a/htdocs/images/flags/MZ.gif b/htdocs/images/flags/MZ.gif deleted file mode 100644 index 7d635082a690908e3fb17ac14c490b6e39eab441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hzn{ItTgr0 zDoM0SRJv4k$#wbKH`<7D=i|-KQCR?l0Qb{IX~JncI6L;oUi8m7`$Jo91@Pl4&nF6HJ%NMG!|np7M&mJFnd`S z;Dk7V)%HGxlDY(F!(afG;L$pKA~KIBQ>mCt9zFsFHx?imJbfl7Cn_oxf;$!uh#4y@ zBqTa1DJwod8WO{DxC$Yl79744z!$n; MATw7ID zxc~r<05kw8qA8o7*lKFS`8zusoEwLP!}w-x>*4D>t32W0@A!#{^3v7p>GAk@cW`jU z004T%z`N>543qa92rdRbTTX? z0zpAR?ol+JQ4KNphQ}Za=9GS^I)opnFrH;D5NQ`CF)Iu|8ww8=E(w7cu10t>=AFvDtISC1?JS!^|BqSmt R4Zlq`It0=T)Ya5M06TOHp8)^> diff --git a/htdocs/images/flags/NC.gif b/htdocs/images/flags/NC.gif deleted file mode 100644 index b1e91b9a80f4e4d69a3225e1dce5faaf099e0499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`1UqumfigBbxln;GlW^1nnM5xtQvMkiKydqb4~mE zOZ6p91xLs897bA=+xIhAq;jj9Wutth<3o&Q{rp)beNdsHPy72s04BQtEdXStf&etz302BcAJz(Vk0GY1JkF)9aD^ih>H220taUFf^?pvR{s9m6a^}#yc z;&5DEKu~{b{JDF^sD}N%gIJMx)7Mb*^IoXOQ@7N4B>**Zp5W5ZnnsanRD^C$gw_B{ z%K!iXA^8LV00000EC2ui01yBR000JwK%daZU~G<dD>FPV6FU$1Tl#-7C diff --git a/htdocs/images/flags/NE.gif b/htdocs/images/flags/NE.gif deleted file mode 100644 index ff4eaf074e9ffd097b3820ad9c56fdda7e336fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hRJT99`H4pOc{Bh|001ul0BivKq-omi z-5Z!3)z#HJsyzPw{?X;pCZ8tq^78(xbS|PU_V)Jd1_1LS0R5U>_T}39IRHtqN&A&l z`OdXry<+|C;`!;_)#%mw`uh2@hWqQ`L#{(Jr8EBT<^QjG{fh{R2`<`I?)V<&E-~N_a_1VeylTP*H)-|X#p~s>8{QUIv z^!4@iA^8LV00000EC2ui01yBR000Jyz<_WV$QUh1OT`j6IVI49ltyc9a+Sc~a=C3# zC<0-%DijD6oXlkMct-Hg2ZPaJUO$Jv*Q<#J9268kK0gc*dp#*GWg>$<5r&9-DIpvK zF*Ae_5k3qs0yd&H3Z*O{AP)~9JO~{m4Gkp|5D*IsD!CH}t{nis8XB+-JF~k8$Os0@ M1_#Xt(9l5uJ4gkx9{>OV diff --git a/htdocs/images/flags/NF.gif b/htdocs/images/flags/NF.gif deleted file mode 100644 index c83424c2c3c02352efee0e63f4011be0129e2fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_!bNk%w1VGsZd0M!5he5-s+lT5?Q!}a#{VxD6FD*%M8gf@OQw9T}|+Qs_% z`tkAcHlUu^q!s_no*yY$Qd@Ws`T^ev2YNBd%taZ)b&HerT01^PY(z-K&Gc9#3 z6Kxa8-N{OgN<@uBSejT3X$?GtJVJ&-Q zlAGcJh$&rKcY$4i6R$4Gs_pAt4c_1a2L504oCv VJZi&CO)EV$Is!d94Ngu$06RnPl%)Uw diff --git a/htdocs/images/flags/NG.gif b/htdocs/images/flags/NG.gif deleted file mode 100644 index bdde7cb3bf708d1ee0bbea86c0b0d407d708b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hddYe=r#ABU@?5=K?(Xhw#BBh20CL82GN&^2`t<-e z004ymFQhN^_4V)c@9gsI09gP~wovNu>HuT_Pqj~3yIBpE4FF0204xAXvq}<|5&&!f z{r&wVp(RDJMO3y_RJl|+syRQcKP;pyAD$l>n;8_E6ab3=`}_Mzv`N<1*4f$FT)A9C zuSCbw$K2-J=kDiNxmX~dAa}@jV83Blyjbh&>*(+3y~n*~z-IXP`276*`T6{#XcoB}a*Jd(-OcsFXEWzRIb^=!HL%Ey) zv_XZsL-`yb#3*xtia&y~kLOT#TJ2d4L=l*IIu9cqG9n5K2Otp{0&_Y)4;>^WAqoZs z5h)%5fImGFlO_R{1)3rbk39`HB_0>NbZe0G=U#X^llC=&nx18Q8b z*~KC;8kJau1Zed*od$yt1k#~x9JS8t$N%+uDLOef3=BLzJO+J#I3g%8B!)g7iF}M4 zA}T5*haMh21`-c&avcH!cQqOsHZcbgWF;*H5)~B)2s1MU83b5b3m9YyB`#>ZOHCgj M%mL0B(9l5uJD$t2%m4rY diff --git a/htdocs/images/flags/NL.gif b/htdocs/images/flags/NL.gif deleted file mode 100644 index c1c8f46d0c328cc5ceae99f0ccd7c5047ae93d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h00DIV{{A#>vH&5E`eJhySf}*>0P^zk`uh6#`1tnr z_WpW_T8hK{U28>qx;k>TDrThkJd0frAGJ zJ|Y7!3?LsJ4jT^wArKH68x{Z(4k@EDry2zX92_AYs|=l=p{@d?5V!!t7{$dF$R5fb GK>$0vUY#BQ diff --git a/htdocs/images/flags/NO.gif b/htdocs/images/flags/NO.gif deleted file mode 100644 index 6202d1f3a2df4184878f5ed8bc23aa630d43c061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC diff --git a/htdocs/images/flags/NP.gif b/htdocs/images/flags/NP.gif deleted file mode 100644 index 1096893a70f475c9407efff0afe534deec81af54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmV+}0nz?PNk%w1VF>^W0M$PL2MRYH7*)Xl0KxzO+yDR~9Bd&n)-ENh5gT<88gd8> zINksN8Wle0ZEZ6t#ugrb`|Il{H_R+VwCn%?>V17GBAM6#0QS?<`sU^xC!PigHt+xd zCm)0Ch=}A}T_iHP>VksM008;i+zJmq3lK*N5Jdd&@D>s_`QYFZ9C)t)039us#{dBO z!001*8$=^#$@~*BhC%Fp|N&D*RKe$V2vVE zgga)E<;rVZf~hZEjT=pYS$?HpgsSP$e0P?%02^IScAi~k7044wcNL72H z0022XXp~BFoJMb%ex18}nYmYeqi&C}YKyLAhpKdxwBY9LVuYq;h^v#U#7=ji-oaQ@ zdZdr2zb99Pc9gTbfdKK{n%}h@`}_Og!(2;rp6JhZNN}2do3^;e)?K91Plxa2sJDOF&HKr zE*oYG26Qh94+}pUBPui}0%>%h4*&+EBoQY%3kj96S*)B^MPQa-6ojOH2jJ KKh4g~K>$0!fQ&2v diff --git a/htdocs/images/flags/NU.gif b/htdocs/images/flags/NU.gif deleted file mode 100644 index 618210a755d0faa72b11a29fb07ab7c0c66d155d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+S2WMhw1sIrumhX?dC~rblC3cP2|Wt?9@x}*;M`1 z)ryDQ^6gRe@>%BGJ^1xp-@!HY@K#%S?&{$}^-DrUv-L;mT4>Cr~&;6Cf*M)U7i=ifm6#>L0A-h+C{{`!3V%V7S%zWsM^{ephu zSXt%a_3Y$C{qs^*R?64m{PyBoZe+BAlET4@;6XMqvHP^M=Hf~8>sa&d zQ~cj?A^8LV00000EC2ui01yBR000J#z`|+~z!VA;U1FBWBrXVvOyNQSO1Hr1@n}RC z2#ew)s0@ArOK-&37#JYRc#vY5Tbs6l(D6uB05B#yHU&Hedm;oLF#-!U7y&0OG>8Nu zI2s2T99>>M43?NVFPj_al}cTuV|24eRGOEZ#pJ@uA~}%ps;HHCopL&7HAET>aRJP@1%w*VbZ zFoFSP7(X&DldJGJkX{u6q0)13Hkd(Sz)3JBEFB#ZI~E%=5qkkH2{kf4EiEMt78pMP z6cjuf2_GpS4;&d97zG8H000=B9-$(nrl=RHoe&(arKc1C3JMnm2?$vWU7;Bp8W94f P!3a*z2MN;C(m?<_p3#U7 diff --git a/htdocs/images/flags/OM.gif b/htdocs/images/flags/OM.gif deleted file mode 100644 index 2b8c77501d4fcb4eebfadfd58e5fceaff2e50afe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h+*(=yPyqV+`uOgo=i4(8_OGpsVE0083R;zYDW-rnBYR8;o%_AaR|(JCs|MMXTaJpTIn z{{H^hN=ni@JJvuz)jK;Xt11+s6fdnWB&Z}Gr5_oi8PPU2(?37XD=Ppk0NPJa{P*`X zuQW@zOVl+r@9*%@FfcihdMqNJv%4i~Eo0CzVo6B8OTEf5zMDiOxU0m%x> KKg}vCK>$0WIGL^h diff --git a/htdocs/images/flags/PA.gif b/htdocs/images/flags/PA.gif deleted file mode 100644 index d518b2f9780dcab0072328d4007ce28bd7f3f064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h^IBT&h=}R{0Ar=~hr0RfM@IlS=<;%M{QUg!czAZM z_3I=gfVTM3($e)~WA1BfZL0Qrv-s`p?a$86_V)JiOiW3Y@$B^e^3>G&`uYG^^3?zU z07&itDB=Jb-d>{h-v9tqob>K7G3_fW@jN{5H#S+H^-r1e^YioXK|$}w$MMU{*Vor) zsQ8`8`Wt`s@9*&B@cr{qQt*C$08jDgGBJ3u_qf;l_4W1r{r&#_{>#hD^78WZ^z`xZ z@&Et-A^8LV00000EC2ui01yBR000JzK%Y29|%qH<0z*6k@`pQ(=)3n?2fE?^81HVQKd2L}%iGaDKVEdw7W zAtw|RI6WvlJq?qVm=+eCJplncC=)ahmzk!WD+M(wJUbkT5D){Fs2CVLxf}+^9UUGX NEDa446FbsD06SJcu!#Tw diff --git a/htdocs/images/flags/PC.gif b/htdocs/images/flags/PC.gif deleted file mode 100644 index 0fb695a31a360940061f8f70539c54743614cdf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2444 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 K?Y)Qq0027@&aj>U diff --git a/htdocs/images/flags/PE.gif b/htdocs/images/flags/PE.gif deleted file mode 100644 index 3bc7639057b36907b31b465d608bbabe017e9409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^*ufEE-v|0Rq+iC{{H^*5D@!CMe+au{#jY>0094c zd;WKK_5c9-U0wAhCFTGC^BEcX008O$0O9}u`bkOiGBV!)0QB_q{7+B)R8;pdG4?Af z@)Q*MKR@&zAO3lH{N&{RTwMKNVfRi>_`}_O+{QUOz_WJtz`T6;rJ6A>nr9g8|N7Z4l;6&9Wb9V>vN7Z;}k0Tv7*TLOTX7cLb60X0ia2{Ohc$P*Sd H%s~J<+RLIo diff --git a/htdocs/images/flags/PF.gif b/htdocs/images/flags/PF.gif deleted file mode 100644 index 849297a57045d279a8edf2657314cfc5e9496ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>*-{-007)PJmXVS~=I5Zl$?gej>%Xy+eIWCjc!MB6xayJ1RFUH8(khJb4FhJ0u`7 z4h}XWKRg{jdX*#+5+xH8C7m4|JSh(@WMvQ#At43^Gcy(x4^~()3>6gu0vj6^yGct+ M3C+zE&=f%cJBfF#l>h($ diff --git a/htdocs/images/flags/PG.gif b/htdocs/images/flags/PG.gif deleted file mode 100644 index 2d20b078561ed92f92a9034f24d382e33db894df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h^8x~$QBin!c>Z;D^(rXy7Z#Wu9A#x?Ha0fs004Ph zT=`X1C@3gIL`2jvG5BRRQ4kPjH8u1yGF)9HO zv9Yn<008_?gxH1m2HZvX)Hyes-+Tp<$^*n4~Y zb7k{F8o|NAG%qjt$~^l^NBc)d^tK;HOG}WDkoKx8jeC3eyf@NOQT28u^@Jt;00930 z00000A^8LV00000EC2ui01yBR000JsKuE&p>lu%LWHRx?u?EnA#nKX~7K;i~FbQB6 z9@(apdl0lg?nI&U%r-HT=|;$GCm_ltka;{vDLW(>TQ3?H95oRR5(GRnE`(`%4FU}a z2nGZNCj}Br2Nw+u6bLX33=ks)o*h324ICk+s2?9I1^^PS2NO02hohLLi>^P%$jQkl GK>#}|p@q}{ diff --git a/htdocs/images/flags/PH.gif b/htdocs/images/flags/PH.gif deleted file mode 100644 index 12b380acd38aba726f63d337660206bafba34339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h?EnD%{dn;U3-t8p0002=^z{G$ZTCh-Wg>ZUa>f1q zSo9nmG&HJ0L9qE$RQ>(_X=%a$080J+A(&zsEx%BMH{QSvA zMzSCvpZcn;`DJGM(aU*x$@=p0`}~dn|2OaN8v6Qct*w`)jh10xzMr4kva;e>SGjk0 z#@zq_A^8LV00000EC2ui01yBR000JtK%8etG#HPOWNo#R`4S0;R5$8{D3QVA!5f9H ztwx8zn6x4VOGc7PP{QM~8J!6PI0c`WJejyUSt<$&EFw2K7Z(VN2p0qe8UZvMGZiEy zCMOFE8yF~Q8WJ%umzkRzohVu&F9)TXoErilC^jn<4!H-rA0HSPARs>#0L8||D9I>4 H%s~JUbKv57`IX+(7_4In0sJ diff --git a/htdocs/images/flags/PL.gif b/htdocs/images/flags/PL.gif deleted file mode 100644 index bf10646366e6e2de00d04ca75e60c5cbc662e5d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{qFAkZf^BEJN8OS^Z)?o*4FYaF8Ekk`~U#>U|{hL z4gLK6@(>XEMMd{DHTN$s_9`mw008wQB<27B;s5~jA0PQTI_dxb`$|dkGc)rU8Q%Z^ z_4W1oKR^BP@$wWD`dwZ3Pfz$$RQyj*_vz{TWo7T-;q^m9{d9En=H~tH@&1mE>Dk%q z-QD@?>-+8P`)FwVYHID@-|^$)`}_O&`1sub0Qvd(_V)Jr`uhC*{P*|w{r&y_@$vrt z{{R2~A^8LV00000EC2ui01yBR000Jsz@D(@Q2_ui7b%sRnPk1+&qw9)bUIq@R@=3r zRG&4w?c#Qg~;C6SYrmzfL-1{(x~hKLO(0s$0JO|I|& diff --git a/htdocs/images/flags/PM.gif b/htdocs/images/flags/PM.gif deleted file mode 100644 index 99bf6fdb60bb4e92ef55622efaddf8f322b76e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h?t^XN;o`WXG33)!zpqdL042z~a)Y9Q@o8aKS-8iy zR!d8tYGZTO$7JFF03%=p(9_j;c(7Mkr+;*4Kti<4xJ3W}MK(9A003k|M4)nLSdxl; zXl0UNTWQn z(|4Hw08db)Oii@bWpU9>T+&u#e}KN)p=apm=EA8Rl9AwEI2nzYq!I&Itw5<1trek03<;E_85kuJ zje$hLSrAGv%L6nzWCw$di0olVERfYFghFxTA_O`l3U`I>`Zo5O=hzI051K~ z(R_<>S8lfe08IC$s7zz1X_}18YJZxl>x+b1RQb4~o>;?C9eRBNk8W`r_Lc|lsEEJ&qabh%J)=l-If*U#vAcDdW0t59c{qL|M? zT9{XUUdpxCcdTA|sdZm*-y1o{004QLj>=kgbga1}^|Q9!qO@64x&Q9&duhKhOrw8Y zt2YSqof5S0td1JtF5IyBnu)pA`1x=TU`vH2oDw`$OXSl NPt6Sp(9sD&06UU^mbL%@ diff --git a/htdocs/images/flags/PR.gif b/htdocs/images/flags/PR.gif deleted file mode 100644 index 6d5d5896709989000cb51a3d13f77593ba68938d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+}!(XWcK5CcKP}F&Nw-JdHlEl0Hy!|%vx>p^74iN z0QvRx*i%&8Y;0Ux{?kK4@$K#Q_V$_p06{_eFCVq(Yu0Mu1g#KQf}GBQg``_)WL z_44un0Q<-&DE#^O`uqI!^z_+XUZh^7#2p=wj{eU)Jl9!S007rWM*H^l^=@hX`1ki- zVE%t==D}z#U02f4{@KaN_4oMMzrScv;No#|s%WaWd$?3l z`~U#|A^8LV00000EC2ui01yBR000J#K-9rPG#HPDgYxhz^kg!@Zr6ZSDxwQR(rme2 zpD=4dj;J`4=E~6mfIx!*i)D^bIwf1lq2VDI3>yy*CMOad7$5*XDHAgU86F-aBqjikL05|~sR#yLddH^c` z{ZCN+Z*TJQ^7)RD(9qEN`T6wq^*EA)g`sSy@VtOm+tkj;Px--7*}^>iaB*p(T-NCNQ;|jW zJT~WeT<}3KL6J1>-QDecPGFy5^ED~-XH4SISMItt`%_2oxIILUMEXKP>S-$G(A3=k z002z@A^8LV00000EC2ui01yBR000J#z@Ko)DRMMOjm7f&d`6>2>T;P(6xay!GgBQl zCjo8;3K<64-zZ?S5o!WK`Ru?zevQCJR_YOQEp!DBcMTLKGBGPIH!lMY1%nU^2owhZ zE+h;LkC7Q6lL!(l04NCwJdgz$83rPhIu#W#12n1`9UTL&GXVh<6cHF04|u})Ik6{x-5+a diff --git a/htdocs/images/flags/PW.gif b/htdocs/images/flags/PW.gif deleted file mode 100644 index 5854510fa9ee2e9b218f8a783b331e7200512ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h^!Fw-sr3MY{Vk;Q_V_gbF5UoT@rBE{09@{2zWe?A z6ic)BJF4{nIpTWB|5CR2L9O^bt@&)j{Y|y{amD@sd;0)z_FcaI{`?&O`~-Kxq5wnZ z3zhL$y8c+Y`2bGqII8$1q4gi0^hL4z6q)ifrt=w`^LNPpXTbb>#4U`KTifeJ-R)Blm+~v5?p?h4JgnuO)sBnL$6UMmr`nlDu=d2_VNb0k217Wg2cg`?cj|ZmKYK8v+zND;a@583Z(jCJYUV z6BB@fFESz~BmoT-5(^_W3KB;M4z`ua|7-SPAJ^YioT?DFsO`}f(|_b)H>_4?=C-GiCy>VSFs z`}^nV@a^yU_SDh&($MzI$oTW~>UneN>hN%Z%JcO4_xJq#OicCl_5A$&{Qv;;^z;A# zr~d!|A^8LV00000EC2ui01yBR000Jvz@PBPD;5_>Bnb4&I5UUC<|OCLdiK6o5=c`StaMQcHnNM|M6p zWG5hOF)4pdM*IBxg;GuM?(A0$1?lJKmTG14@bHdbTJ`hu_4V_2K|7&%bewZ-a5ph} zML&HFMX?<>TYwrht5fRZny~H2eGe{r&y=`uh3#`S{{H{} z{{R30A^8LV00000EC2ui01yBR000JwK+JB45oZ=7$k?u1o-Ww zQyM@4(hv@tLCrhu@o#}@Z;vhj diff --git a/htdocs/images/flags/RO.gif b/htdocs/images/flags/RO.gif deleted file mode 100644 index f5d5f125b8c0234f9152e0a1481a7a0e6765673c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h^8*9-_bpt5-RS@TRD9j_*#H0{$N2bo^f58_NlE!v zSM&2z^(-v&931oWJoe`(=ez&_0=V?#9Q7n5_4P}7n&kccZDfevN_5(EmgDjg68ZT% z`uaim_%%Rm**$94^*ufI;Q#;tt^4~&{QOMy^(0St+~5EJ_BS_JfZq4%F!%RFYL4J< zk>KmW0Po!Z_V!r){ZaeyVEp`L^%SwzVzog`06(D@A|mzr`ug|x_xMmy`aL~#bpGDn>h|{bm6iO`M{w)_0QW>h z^*cNB002r#{lgqh;ebFwadRwpd3${j11fPZgLry;eggw3CNVS_ z83Y73HwOnFA0#9003CJ#W_foV%^7cdX_ehGj%=Gw9;mAnu^D_W7 z=LduTA^8LV00000EC2ui01yBR000Jtz@P9pnGBADj&jBP5uOB&)MP5yJRaD{S?GRB zB?Jr8;PDz;f)^~lU}}|$ZZsi$z6db}lgY?r7d{683JNV8000iJBqS#%E)EM3G&BOc61@h$D8VWb55>g`$jB!TWms0>s z00000A^8LV00000EC2ui01yBR000J$K%Y>EKqQWnf)CD0m(r zJv}=CC>sq86eKMmKM5HN0VyXIG8hmB79;=-r5XV=5-tr23^5`E000U<6IWRmn=~jA QAiKj#Oh3}o)IUK0JE%R1wg3PC diff --git a/htdocs/images/flags/SB.gif b/htdocs/images/flags/SB.gif deleted file mode 100644 index 8f5ff837fe4c9c0280ee8d3e4601725c86099fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=F3Yvg*&9A>&CB&R#+8hXWlG(Eab^=%ELz-avT5v zyNiqG`1t&CbK*mbL#DGuKtJ0_O5Mem009BWB6cEdY~WH-+ftKLkAI^^Mb;E;6k1!{ zM@QcdX$~}jG$nT>dwb=-sE7aw0OQhQkyik>oq}+jK-IWxrkAL$qP5}FUE|~U005uT z()GW-L*&F?zQt&@weYW*0H3Wt=*&N!p6W|W*j0}*l49~5{KF%~rz9CJDkgb4`&KMEBV z5ji0M2se=l8XlDu5k4n9ke?bIq6#US2qp#w6q2hQ20sJ?BQO^iI1Ua00UjQ+KN2zo MB0tX0(9S^sJJi99umAu6 diff --git a/htdocs/images/flags/SC.gif b/htdocs/images/flags/SC.gif deleted file mode 100644 index 31b47677e0d51f2958f3c833b36345c5267a064d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5h2apH&la}uR0MF>s_*7N=`bz*a003M7rPrqb0EaoI zIrb?j`8z!JwYB?;NBfyY^z`)o{Zjn*Y1r9l^YQX}ddm4=V2_TNgi;OnPEP#%0OaK4 zbacsIU%dVOaWA7U`anSVHa1>f!S^sQ1pzMr0D1hDWy#3^`hA7#=imFXXM@Otsi~>p z;A$(CCHOizmzk*S_48)CX7}dp=g-ge!ov2}*Y-q2?(pvRb#?ejNwe9raB#%d+kE-$ z079-pA^8LV00000EC2ui01yBR000Jpz=TkE(inY$q%u)yvOG|U$zmZ8G6JTk(~3k2 z4iFHJ(<>gwuk#BF=edi-N!6ciNu?(O$XO#N$X`a(kedwNQ>O6&jt z{qFAb^Yh~3;yXJ#`}_O$=H}qw;50NePq$C|R#shMU3kfO_)}B;QBl3Uy^z0(K}10S zJpkv&$8M}|T*6#$l*FC5{(%MR9h?+zy#V#mJ^0c!5^0?raiBAOsQ@Hw?3(~Ng{wV@t_^9H00~z5)<8pxux6sb zC3&I%07L!TQTx|M_RcGNu*&}3S@+N{SedzCpS}Pvbp6~^001HU*-HQ!WBl4rd9KO! z&oceN000wR_ts18p#W2swf zr~pHOA^8LV00000EC2ui01yBR000Jzz@PBvYBWry$wc+SU^>50h!qI%7K=?uN0Kq1 zp^`#$@-P4zOT}jZbaE^OuAH)^*9MNJ;|h>HDIXaF4RtgN26(1d0tj zD?NgQhLi+5EeR$IXOV0i5eErYSWN=oisUF9Ss@MUJ~LPFcm&)v_@;nUOTF){LZc=^lA?&Rb7yuAGG?)~!e@L^%` z=jZDQ3G?ac_3P{FK|$z6Md(;q?O0g*`}_F#`1SSm_V)JY008;<`SbJh`uh6!_xJSl z^z!oZA^8LV00000EC2ui01yBR000Jwz(~#|gcu=>WTV2&ohS?dgCG!qSRUGhBgs)x ziPXgez=SfElBUyL6)uU>2@^xBKQak~p(0!+baoma9}XK400{|KSz8@43Jx$1Vk+U%X diff --git a/htdocs/images/flags/SH.gif b/htdocs/images/flags/SH.gif deleted file mode 100644 index dcc7f3bcffadfaf36ba17812e55f66c0fd10b466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h_N1uI(B(o`u8Et=MqRQrOsen)40MCV002uoQmg%E zX3wuVOJTLTqDpFg!TAVRxPV;gJFGlwVI~X=wWJAX}C5{ufeNT&#^$$v_ar?f;Ug7psm@myx(P! zWdHy(A^8LV00000EC2ui01yBR000J%K-8gNz!YRF(PnvRUIc(ZBoY|$9F7SolL;XV z5RXD3rdbFAK|*3dU;q#@egr`|)&KyA^78WT?(X_qTl{2XO;pbGvA6pA`b1CB_xJbtQd3)F)A~I< z_V)JmJ3I6M0H-Hi^E5P~9aZrS4Xrh3_V@fiOw9lQw=O)%;Q#>0Z|2P=x>$^&uhg?)LaJG~nR$FF?&d0028l&mS(t0};cjWSy2-qo!Y)jgsTt008y% z_5c6>A^8LV00000EC2ui01yBR000JuK%YoL4$SBGv IJj%%lG&9@&EwPLR!iyM)3^|P-oZu-rnH=0Ew95{q5}bo}$h+P+f4<@N0AS zkd^rF@P>86_y7RMBR}x1v*+F4{msnghLqs5!}93rthes`;^B~*;cITr_*h!q008~< z_5c6>A^8LV00000EC2ui01yBR000JtK%Y=(D7st-#O+3*_GVcXs8?y!r_n-4Gk-Fc4=#Te}NH$bp|bk^45 zii+iD;b=58%TiL+K0eR@0GIRg^8ma6dU@StW!5@6&j0|30G$A!pz2=UUR>K;EiKXe z`}++Iz&EA^8LV00000EC2ui01yBR000Jvz@Jcf8yPJ~3t{;~I1vDVMq@A>4l4($+36fq z*;*vB3j}JYfb4S7K_IqV^zksnEP{c)*J~*h3kwW9K0F(F1AKmff`lT5d5V95gFYf6 zJ~S*T92^uBFC-ZmI5QeZm$h@{>+^E9`isQ<0BQGNtM+BD z`T6tyd%OBwsPt;F_y8o|RipCt_4NQOzN}z?zWa{2fmx~eYOK=n z`TtdoNKc~mezW1D%+i#`_hp^acDelkQ}0NV)r7$OjkmFi!1VU^_V@Sq{r&y%_y7L> z{{R2~A^8LV00000EC2ui01yBR000Jzz*cWaDj7}4g0j=;{eHeEkN2o<7K>dID&=uD z*Q{f8YI^(6iMbM-wv`};>!xl~57L0G(5cgT0(005WKJoorCRkl0k*Z}1EMqs~T@AfLO-Z1$1G@jH!!{k8x@@4$=Y5V$M{rzqD_cn3Gae~M%jLtP!xmeu* z004miA^8LV00000EC2ui01yBR000Jwz@Jd4Dyjg0fO0VSIi4hs2WP9@5?Dmj@sf-L z0u2cBU>y`%r#BQHKXPY?mO&bYE*jU&v}!3J4IcvxI(GyhG$(Ed?D5n;Qou76u|287HNu3mdkp7F|7T6}=P`W@kPY5ycT4$SElk KB_%%3K>$0(ftB|F diff --git a/htdocs/images/flags/SO.gif b/htdocs/images/flags/SO.gif deleted file mode 100644 index f1961694ab98384142d534dd682287dda3b37892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hl*#@8Nai7+^!WgD_KCv# z;_diGo%D9P{RM&j*y;L4obv!~_CcBQdA$Bvrt<)H`AVPkb+`F!wEI@1@_D)WeZ2Zl zqV*7m{vnb7aJ2UTUhjIi_I$hgX|VTGqViFs_KU>*akTis-TJ=T_p;Uaki_}8+WS?f z`4fr%A^8LV00000EC2ui01yBR000J+z}Ii+YJ3(8lSU+w#9|GA6oA3pHWtQgg@Ofs zfJlVoQ7BTBgh2p#1YBXVqB5EI){qu05S34QARs#zHZ3O!1Roe>DJeM_89ERMCm{!k zH)m-)92^@Rl_LTK3ma$^1``Z27a<`d4kZI778Df+26-nPuMQ3>10oD8TsRLj2?qiK WB`P%o8ci_;1p(Fs*aO-GK>$0Av#T!v diff --git a/htdocs/images/flags/SR.gif b/htdocs/images/flags/SR.gif deleted file mode 100644 index 0f7499ad954a455a4742c4b53c3c8c2e3f558275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{bgnVP5}D-`e(st?DFjO`Str%RRD(o^B5TW%|-w+ z0Q^cy0Ac`p%6sVV>GJmT{aIT3Mn(X20A0Oa^)fU4cX#$nOZ6fm`SUsZtWrp_N%*!h z`N%jstUdKBEA>4+GNv>A008Cy0AapkRJc|5`}p-kKHmTUHK;eq*~>w$LQb_%{7+Bv zE->^rIR0*M_(4MUMo9KZL+$zT`hr0CQBe6^UiQK&`q)4Bd@xY9P*}QJaK&(S$aT}@ z)&7c%A^8LV00000EC2ui01yBR000Jtz=LpjkQgP5Wb)8xHhMhXU@)5ONV>pGz~z>{ zg~DU}@P&S_Gyssv7;2Un%q9v|AO_YVfx~eq9v2rMbuW1f5i}SWIe`}lgds0_5ilGZ z8#jUo2rhLMHh48~GA1q*Eglvp1Yltg1hEdYvndi(RwOGL8Y&$fC?FsTNJ#<5#|p~J H3PAunnPZt? diff --git a/htdocs/images/flags/ST.gif b/htdocs/images/flags/ST.gif deleted file mode 100644 index 4f1e6e092b35de465031930db0bd661ab5e1665e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h>+(1NYXDigRr~u!tf@8tDgf~S0D8)J08#+;^(Ksp zB|57#OS4D$XG}AuF87sH=sZ2EN%iwBqCt&9G(Z63I zC5FqgSU4ElO6-wZMcx3wWCBs~eiaGrF&MB2Fc=Ug2_hGG5)BOlA}2Tm2?{tFhCd$? zIurvi8iWZb87&xx9}N@{adQwI9UL4QJ3lusV`dIBBO^T|Bo00XHCI_-wYClgAxa3# N%RbIN1qD7q06RBYi{t`u z0RJff{~7@Q4FLZI0RI30EC2ui0I&hr06+x)@X1N5y*TU5yZ>M)j$~<`XsWJk>%MR- z&vb3yc&@)i5H!1>a7Zi~kHtg}0o)`42BdUKty-@&L}2keARY-qAo18@&*-#zt#&Bb z@VIg(+7?(gvN^7Hid_V@Vt`uqI-{{H|23LHqVpuvL(6DnND zu%W|;5F?)0C9&c>0RbfVu*i|!D_|D?0u1O#a-6ab#!9MGr)AR0m!=Y6Y=#FUhgUva z!rTex4y*+adNdM&QxHX-ND)oT12luEQAwj>T1wN0EU8$DG{EI+zyM&z8Wlj0pzHym zRh=a`nzgNrr+5goQZy3^Teo=g>fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R$B-jSo=my2 z<;$2eYu?Pcv**vCZ9xeg+CcyZxJXwHD~JGrNCI|I%VXfK>ca?JTcfb(>g~v42qnO^ zRwJ3;lEn=0Jt6E!9$rBDVg!7cYd}5PI$#Am4h5lGT`p6S!( zv8|!OH1qFwvi5;Yf~q{@ao|(`clqswRvvSaM_Yk^{pa2V@ma+nVD`bn$^-2&Qb2$c zsIspXbjcIoApV1_B?m}Hh|=9y@wspgt&w&~`Z zaK z;{ZmP{u6*01a!(zYGq(5syPgNnCb$ovf3RktTM2wtRJ3=DlYhek>djf7|_S1J&a|m zI>v11R1Z20yN&?QRSF4pRs~Q18Kh>bj&cM(;D9m3ikprm z2V}W`F}tZdPJ$X(EAPEs+GsDn@G#)(uKd1(OR@o9mQ1=EHrv-T6R&Z6`Oa?fO zLCiiJ&iE7yIF84<+>9ikfC3*9(!k(b_pI9FaP}X*Khy*_~)p$JDv!V;SBgeb&71ONa#w`+1T diff --git a/htdocs/images/flags/SV.gif b/htdocs/images/flags/SV.gif deleted file mode 100644 index 2d7b159a12f950c44776523334ea2c0bc35648e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h<>lp#qV34i@{^(4g`4a4_Vxe(w>w%R&?NpnbSvS+W;xo_4W1q{QUIv z^!@$)A^8LV00000EC2ui01yBR000Jvz@2cXP<%eE(}~0673_xJ^z5$PLO3 JD9tEA06WZouv!2B diff --git a/htdocs/images/flags/SY.gif b/htdocs/images/flags/SY.gif deleted file mode 100644 index dc8bd50948773d5698d49ad4a214a9847fb09d5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hWMpLfMMeL6dRtpt^Z54G*4F-Zc2ZJP^Z)?t00918 zUPMGh78VvQEiIkZpY;3oG&D3mK0f*Y06IE44Gj(V_xJnz`}+F&^78WW@$u2o(WTp` z>GSJcx?cTJQTkk5jLwen`S9-U?)+n8{cCGWOH1}FEaC9s&(F{IF){czH~3Ri`Bzu@ zOicY$RQ_36At538JU#tzar^xH`1tts_4WMx{Q3F${Qv;=_V)Ah^Yrxe{r&y^{{H^} z00000A^8LV00000EC2ui01yBR000JtK%dZuE8-*)gc6ZR_ykacK}I5t6d%^AIv6{aadLEag`pTaC_exT5fcy%4KOea3=|X%Kdu7<2L~k!u(Gqfy~)bU Hy+Hsw(&wg* diff --git a/htdocs/images/flags/SZ.gif b/htdocs/images/flags/SZ.gif deleted file mode 100644 index f37aaf801198a2afc9700c33f0c71a126358ab67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hP)SKIa=JS-G|P)m+04jKi^iE37kQ1f3|ghfuCK+v zy!pv|^0!#~)RX`(j+wmEt2H#&Qvmh7WXN`P^N|9w&fx$>ou$Ot>ZUoCxzDmpOx&n- z^y}vvWU!60$?dE|gssJ`%HF0bDZg7<^}%lLu}-6#n1TQRIDEP7vQx7|K$AK;o2bX* z;NF9Bke|TT+?ruTgT&>+xd1(Px`0BOMMh>}V!~KdkBf<+owlM;QM^-3UXKTY(pY#G zq_9N7D3ciXq~*0T001yqc9~yusj-_rQfPT=jJ;2Ft~+I=VT8GruG0Vj6f#_( zdw8NeVyW?`rYlf>GFOCig^kv&x08maHejIu0AXf`y3(>idm}~m>CH-UuJFrVP;aPR zfVDtqs@>Gy^A^8LV00000EC2ui01yBR000Jyzy!yDLKy;yl5)Xh8V)Z}?$F4XOqf=oV1d{G z0L4$C=&@XpP$;5;1P-1Wz{5ZgI=t0`Mu12fItUCIA|n?rFewi+E^asl95DnKBP0$d z0s=c78YLALDg-VUBpU-eGCmU_Z7Ng}vMDgWn^XPTyO-%p+miX?J_wA48NJ?dc&%gix@ZxCd zMo8@7TkYa*6+^k?Eic>2A?eLf=srK{&{XT*SMTVa!K(nxmjLERNb%Wh04=j+gw*um zi08WiA^8LV00000EC2ui01yBR000J!Kp14mlPQjh-($IiB%X)c>4ZZ009e4oIgo%p z6bgy7E44BK0asE1lL(H*nU>}yygkp`F#~&-k$9M diff --git a/htdocs/images/flags/TF.gif b/htdocs/images/flags/TF.gif deleted file mode 100644 index 51a43250963e5862d4cbf19d34a4cbb53cfb3b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h001pZU8DVNZ2$pje2KbYajtcNv-vqX000$MWuyQA zSN#0^Phg}#QkuNN)^2>YiIv1WPMJ1Il|E3Ic7(Y4K|ufjMvR!oMOdHvM@Lv_sQdr` zI!%}SOiW#EtT9BAMOK~SF!)>sd0a|`}_NDe6vbhpg~idEkTe^V4~jO=Tc*&YI(B&33vYf z{{8*^A^8LV00000EC2ui01yBR000Jxz@E_e`)!T`h0?<8T`s<;U^+XESST65Ns0bS zoeU#@c||l^$c*?4SID=BWCs{P9>2vRQ#oL691>-#1P%=opahkdnGGB!Ar3kQ2nrN4H9V6kE(tj+Aru_B3QSA@ L%m4__&_Mt@20fAt diff --git a/htdocs/images/flags/TG.gif b/htdocs/images/flags/TG.gif deleted file mode 100644 index ca6b4e7744dd89a6bc12c61900830fd7054c6554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h0Dk~jxmMc47642D^2ro9r#5J^H0#z#ZN_We$SKvh z1^_Vt{aagHt0hmR8T(UH`bkOte0=iOL;iJk+L8d~%`E_80QS)<{@mQ|(KO@FI{Ml@ z``SeQwYL9-g-WnS9hn^fasXnzU@@aE_0A*s)iq(TFFUb2>)d9meE|F2N#~saMXo|n zv`+re&_Ap@`{PF{pez2HoBPE8{N!r=R=!E6)`2{7IR*wd4GlR1J|18X5D+H?BQZQ6AO#C~ zZj2B*CWQ{41_LuRDjXXdb9E#HtT+@3CgjLrD? z`1bbp?EnCCbHrO*xc`EI{B(5u{QUZAYCAitgoVla`ug@&Rbpehnw!=D0DAxcF696K z_gGjgETMOJ#PUT&N=mXpMX`H)#`N^`Mn3S?zx3nKxuvndD=H4<1_92Nz?A0IqRO~o6>FfcsJ GK>#~&ADH3* diff --git a/htdocs/images/flags/TJ.gif b/htdocs/images/flags/TJ.gif deleted file mode 100644 index 2fe38d4ab9213a814453896b2edaa13d69751c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_u-uK^77qdV?>HXQj=5ENlDQ(G~a7$J7MMc=y z*!ktE^wo6Ybaedu{MuGlEqW~$Y!=;ITmTvX_St@!008;<`7(VnK88ND007xiQltO? z4Q37a-i@sQ0K5PI_xJbu`ufw;)Arw&*G*0K(P18O9$lJU`10Lkpk(>!wmO44SeIDz z)_6;fOZCrPBXuLrEG+ligEfFPE_^QZ_4U&{J^TCn_V)Jk^Yi`v{q*$o{{H^I008y% z^#A|>A^8LV00000EC2ui01yBR000Jtz@D)8DQ1oy&t_TaA)bxs;UEx59vV^;A?adC ziG6m&a23ORXuHz5Eca|}BhgiIU*A&0~jkaG!QT*5fL05G(W2+ECd8D1Ff$Y5D>Z(Kgr6= H%RvA;T1}p6 diff --git a/htdocs/images/flags/TK.gif b/htdocs/images/flags/TK.gif deleted file mode 100644 index 3d3a727fde64fe5afc971a13eb412b6adfd2de77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hN`-D*b=Cj?i+Ymfv9e^Ks+7aKP_MM8m!g|0N64?R zUCYB)=IQr2RLcMWrT_qYR&LfzWz>w7qG^1}WO~}ArDQl%(d*n!it#^at|=Q zZiC(|ShZE6J+iZYf{ukkUC;mkv==zTQfkCSU%jWNdN54M-O^Zli@vzFe|m$Bf05cC zKgQqLd|RYYmX>1A$Y06EdDhKt*wAI;+=h{!fsvezOXSZ9d5~1|~QjkCxAr=?}AQdfnA{-Di2t6bg7A1rRBMkzH z5h^z*7#1fTFFY`n510}=F*ybm9RMBx8z-d{AtWXXHUtV4t{brr4io_p69qIE7djXK S4JQe}OH2X})YH_|K>$0GgO)@9 diff --git a/htdocs/images/flags/TL.gif b/htdocs/images/flags/TL.gif deleted file mode 100644 index df22d5823900f670fcccfd571052d18619ac8441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmZ?wbhEHb6kyP#$Sy@>RA3l7_!0_GMJ0c?LPjd1n28O@c+234TJ_!r|1d5xP{p_&*rmg)+Pw%_F z{*R!bpJ8E3mMs3r%Ue}d<>lq|)5i7z(7Ml|KR4UVotE^o%=&L|@UQzpKYuy=d}{sO z%3#)_`2U;?{~D`4UAO<47Fk&6`p3uTUu)Fn)iu9jVtjmp{>1q7PmBEd)8_B4n!7;T z89+esCkvR?0g)g-F|f5d96If;6W2FcrTOFLj|puWtx6N`*vN7iKMA@Tq#3o);1Gk! zt$2+^+MGp?KS>5w{;})xP+D+G#6U)hgPFUGuU&~<+gh@*xuvYa!kAGsNW&kJvCUQg1b!{qiMqQS3Jb+e7ief^9TsnVMQIBd(jAkHiJ^(TR z(sE@CVl9uho*Qa9Vwrf(YFx==Uu2qj%x!0^001v`OLnM=#amRnCmGavY_-n5b*G3S zZa=@&$l{@y!Pd!uu9CN4UekYdMu%TVh+)lTQ_*Qug|L;uV_;{VecYOo-imP5g?<1z z00000A^8LV00000EC2ui01yBR000JzK%XyF3Tz&o$6@(v{(J@k;l+wEU>?vUfyq1# z5grMLF;p6p3&K?SsvI25s^)5p5DN+Iw>gn=A{h(-03H?#5G@vbEF3Z+H5L>jhlw8- zKMx8b11ORR1&A#l0tlH5Ap Nvp)evPSMdp06X`pgsA`k diff --git a/htdocs/images/flags/TN.gif b/htdocs/images/flags/TN.gif deleted file mode 100644 index 917d4288c9424fb3a01546189e8765091127b7c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^fNQ{JUsPWT=Xq1{dRWt>+9?Q0Q3L=|9X1*Qc~pr z0R6SK_S@U{OH1`5Bl@wi^BNlVw6yxGtNvYG_C!SbJw5tFMDi08`GbS`R8{_Qa{X>@ z`fhIV4GsHYVfp|7{#jZ4YHIvuX8K)S`$|dR008_?Px|TU^sB4=R8;miH~8o0^Ho*( zy}kXx!S`rq{Iat5WMuTAq4(C-{omjDSXlOaeEFQ5_>`0RcX#~n@BLF#`FMEU008{} z0RI30A^8LV00000EC2ui01yBR000J*z@PBvEBZd4gYsZ7{18wAL9+>oJfm8s;Y3U( zAQw%id+=0%0rv@BEC>ls3-=m0C<-3|lzQJz7#IvO4h{i%8apO12`4!e5d{Jc5Qjb+ zCL|9WH!C+b3<3}rDheMVBo-19F#!S*C@dEj03{zH78Ml_GX(`Q0v8<}10@GoS_usl V6ai>y13gPk)C$%mB|X|f06P+8o0b3o diff --git a/htdocs/images/flags/TO.gif b/htdocs/images/flags/TO.gif deleted file mode 100644 index d7ed4d11641ae1c1c9001dddc7653973045b6c66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmZ?wbhEHb6ky>fLOY4)K-jAT5ud1p)Lqh-N z<$Y05_{huq&Bf)rm)AQ6hOc&Z&lnhfCnkQevifdd@YBlbmy62}GqYa|4Br?SJ~1%7 z0?N9%eUX>{VPf)GQu0q$)}OSrU$L=|fZ|@BKW%J38yVeaVED_x@XOx*|NsAg{`~n1 zM1TMOtEu_@`}h0zAK$-!|L@|(pAiv2vCpQaKdo)Pn3?@cNciLJ^B1TvIQZYce|H%e zK7RbD_>+YJ1av?I$WIJxJqP9oNK9U8B-xv`xzV9c`%w3V)w)iLPIk0$6fCf0Sn%{x zDVLg0>W3fS(so96m->bCaJE0W{(5JbjsdHARt1lskS4bcV_I`7r<{UFCpV*Ny4ZwC zOcpAViZist;M4#va<950ObGx_e)FmLqqyT zM*dx0{(5@(JU#Lg6ZbJO{&sf!etz;UF7zNE`B72*o}T$sRr+CJ{&8~sZf@}n4f;Sp z^(7_x00913S@`7S`8zuLadGn*8T@K${AOnQU0w7aANV&n^D;8v008zZEd1o;_x1Jn zx3~T2>G@b#`=X-vjEwX)Hu%`s^z&1=FloSdBO001^NHuL}h<^cioeSP;!OZ6ioDk>^tV`KjF^ZP_ZT3TBBo16KQlm2vd zQ&Us+EG+!)?)5!A_ck^}L`3*fQWzN-`Bql);^Oy3Mf+i4`Tzj@SXlgKX5Ih*`dwX2 zOicSqN&HVw{OjxS-rnQE!T%*C_Li3YQ&ax6wf=c|{pIEQ?d|mA;@i8s^@fK100930 z00000A^8LV00000EC2ui01yBR000J-K-lQ_8{twt6zaizG#WDtV}M{-Yys7YMG{FG zKARG4D<~>zYaIqU7$YMsF$OCSTPa-< XCNu;KlNBY$Oi$Jj5HdtWJ3#FMOnWx-8hvD?$HWv97lqg?>qvO8n2**KTU!;U!T=C}U-{`~y>{r&xE00960 z{{R30A^8LV00000EC2ui01yBR000Jtz@D%N0$Glhi}FHC^hQvP20;Y?WUfab;q&Rf zJl;-1o)8F=miIuiK_H&WhBLrK7z&=lQ8K_Q3v?Ja1t@t83_Cjq3xRbZA9o!B0uCt# zfPym-A}|9T5-B+`a)OW|5e1(TV`XP&4Y9E&7gi4sCMGN@0W~-jz&}d~#2FbYFBU(` H%RvA;*H)jd diff --git a/htdocs/images/flags/TW.gif b/htdocs/images/flags/TW.gif deleted file mode 100644 index cacfd9b7aacab39f8975b3567d65ab0ac0e62813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hT!hm2HZ}K4OZjVVgrwg97pwU^Jz|N}_C!RuxaX3R z+42(;bClWlEiLvcD)KHa_)=2!B_;a+0Qpu|03onbeb4kDAby|S@eK`4c+2`gK<)ql z^*%o4008@8Ve~pW_b@Q~MMd@i0P+9;>Hq-Z008;<{h68F^dBGd85#U$X8K)S`8qmR zfzkU)N%Jx?-v9u8o!jg|OYt^3?MF~|nc4IrvLjctHMir)KbL%AFn40IVgYk3wN9R)E505}yH88dhhC@CKu z5(7LgAsQ@&lqm}~Ndugopp^>?FEA1+ou3VPsu&m#Fd|zMT>=OQ93M9?4-Y;}PERBx N9UUblFh0^j06S#9jNSkM diff --git a/htdocs/images/flags/TZ.gif b/htdocs/images/flags/TZ.gif deleted file mode 100644 index 82b52ca29807dcb6dfcc632cb22c853b52f41fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hH>mW~=twm*GgMGB0EGY-n(~~{hJ}v++UjFly<5V? zGv((-l#VL^EZzV~%ve}h(#}Hwc>n-7;(Ez?&fNe~wNi4%b5yxgZpTgG-b62?@`{K< z4wmr%MCfkBZd6o4RI$8w$akH|0C{vt=I~w5=1NXZPUY=4K&|$_y#TwnJ(Sm4U%>#R z-b=3FN5SD+laE&K?OZ=UJoWQQ)zW5VWMWgT08zM1*yTZKziEAYJTs!-;OJm(ZLC>U;-H(TEIYv2%*H~(po?UXafo*1`Y%kZg3lCbT|PZ01^=%eGngK zf+q$A1(7}oGmB>oI4>Za8~_azG?xN`0R}s$92yNjH4hIkJS06RC;$K&#J5Zb6gCbW M9TLtB&=NraJ0=2<1^@s6 diff --git a/htdocs/images/flags/UA.gif b/htdocs/images/flags/UA.gif deleted file mode 100644 index 5d6cd83f597ea6681e2afe62af7745ce3f6ca463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{QPM7`C0160QB@60C@aYxYzmlJl?hdD5Lg9vioVm z{QLY%`};)m^E6Sn{NlX;a>o7uX!Y{)6MD)207L0ZveWnXMD_JMYr)=3v-k4yE?vI< z^3?!hz1%{t`SI}$`rZKc+5kMR`2d3cOSb$stN8f%H23!}_Vz0E^(0if{aL*JF{$?e zSMNTn&v3-x`1npkuF)W$^Z;G)E~obZk;jVA=Rd9W{ow#%zWV@AnRm$kTDtn~&j47v z{s4vlA^8LV00000EC2ui01yBR000Jsz@P9p8WE0!h;r6yjV90?1fr#}mt*h$* diff --git a/htdocs/images/flags/UG.gif b/htdocs/images/flags/UG.gif deleted file mode 100644 index 58b731ad5c6cad47c4f3fdea21763c6537010a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hsTZ9Ldc$_uEAD^(*~SQiX+mt4&QrL`0l3 zGwJ{U^I|pg^BMNoHu(4V#K~8fCvvH7Y_<0hzdd<35^L84=NJ^lmZDq z05Tq%0|OAB8lf5xE;BI!8yhJFtPQRsBLycJ9UT-DI5;7@480~MJ{iIb#Kk?wKFK~o F06WatnQZ_7 diff --git a/htdocs/images/flags/UM.gif b/htdocs/images/flags/UM.gif deleted file mode 100644 index 3b4c84839342c61a9e9b079291cb4b021824019f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hkhb2ayyfgnOtAm})YR1Z`T5EK0NdKzxytP7LqnAS z0PXGV={h=h008FZ=2U#n*E%}(_V)1b@a|n*^!4@I0RgAGged` z<}EGM003Em)7m2=;wUJ5wB7vt{G+(wrMcqs^YdVp+5Z0ie}8|_(9rL1Z}Oj?(HgwPoCbr1xqqpGZDk@KR$ya{R?(XjL^78EL z>|2A?A^8LV00000EC2ui01yBR000J%z@PBv**zY*3#h{Ebbcp9RCFu2A`wcjCqexX ztyU~xA&n*zL4qMLd_}Q>B{BkVc|Ofz=0OC=W&j~-3>h2=13MxC1tb&z5*T z4=-gnf*2+Y7aSlT5DF;;StSw@lN$~W2L~`0D=KMghB-DLEG!TWGO2e9c^fnb1Sv2~ R6;2%n&;tVs3Juml06QBhscHZK diff --git a/htdocs/images/flags/US.gif b/htdocs/images/flags/US.gif deleted file mode 100644 index 8f198f73a777a6af8d3c8e0b9b2ce48168a216dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hV`H}Z`ug_v_3`oX{6FMd)+t~b6RQz~i+ha=mD=V72{QPBRx?@WGIy&a&mbT%E8IW!TtSPICuH}{{8#^`tkAa18?Ei{{8*o z++%0NA^8LV00000EC2ui01yBR000Jzz@PA!N&$|l2Vx0<{BkH=DIlQ+0->w`_Cs+v zo`Ju(0i zIDb4K9W8?qA0G<`A^`#$8+MVC77acxDm7+kX%V0WxGEYA0Wn&rsXHq)79ulC2u)2S N7!(u-2O82r06XTKt3Ch# diff --git a/htdocs/images/flags/UY.gif b/htdocs/images/flags/UY.gif deleted file mode 100644 index 12848c74131363a1a78d279e0df008422b1707fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h@%H;fi__%fSEy~E0ryX58U@tnfv?(_I+q}t_4Qnix#T&7(5uVr_4MOio7(N|?EpEfD0jtmtKZ}4@0!2k z>gwrJmf57n=+oBR&ePWO^Pb4g)56Hk?(TV^#OU(!mFe&FgRg5)ut8It(x{3=C)|Cn^R8 zDg-qzb9Hxk1y?s44;Ky<6@`X~i5M6GED8Wh1F_g*4pwM4d#!!qcQlV_X0LQl(QglQgWX)=o~N zs#9y#)#_SWs;*me^YineLtc1zyPZ5(07n2WkS>`vQk5}H003XTz0sdUUgF~Kjw3G;uVrPhOQB1;a)vsXI@#Fj+1c!~v)2uO4Y|45_4W1q{QUIv z^Z)<=A^8LV00000EC2ui01yBR000JwK$NBv)N2g z55eGigLPuDf_n42)IJ{$$6^VMOeY0P^?M!uJv}ZA3=IGPJU%=XEr5cAhKN2OivkCM zgN28QARs;|ZgnGfc`Pghs3$)p5)=?N86^n`2(>yoC94t<5f~UW6t1wbxg-n63jxXj KKh4fRK>$0~?46DP diff --git a/htdocs/images/flags/VA.gif b/htdocs/images/flags/VA.gif deleted file mode 100644 index 2bd74468d6b328a625c2c3a44f46dee979ec4b97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h`uh6&>2vnuTm0>e`|5i3<6-H{0{iTR`si-*^77r?-Sy;d*4Eb3)6(nbtn}eki6e!)2#sX_4N1m_xa~( z`}*d=)eem$>`1bABvjFSO z2hY#XA^8LV00000EC2ui01yBR000J#K$XGgGkA`!O2uM9IDMt)U~m|q09e3Bt~bosFgUFR4!2l23cLIxVa!9Aw3uv PA|fvk5D^hS)Ik6{@a)B^ diff --git a/htdocs/images/flags/VC.gif b/htdocs/images/flags/VC.gif deleted file mode 100644 index 48213816af17a104ca3d031312588ff1ec97afc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h<+T9!_k92)04bs=7nv8M*+f@Y(Rq2~>hd=H{8IAs zTTHS{089Y!^dz?4HpJ#eOR_ES@J;{#v|wP=X1y~pr7`sM9q#fd=I$2!{A2t3MU~Gd z_V`Ed??(I909LnE-|so}_C)>tZ~fZiZsGOyJ7i?uJ*qu|g5K=G0Qvbm4wMe~ z_%#3k#{dA4_Rs+I@l$)qMrLQ$x7{S@@E=65LZjC@?Db3Z^kDb*E{4l1{QOLw(vPW{0^y9Kt#=06`#+-d6>;| zi3CrhSs^L|8+SHQByb!KqJuGP8#FZp1Qh}jB?crND=iQZ4Hg&#ETR%8B&RJpJsTFTEU}{}Y;GJOAtokgXrmG@ QFDlL|0MP&f)B-^OJ8QU=H2?qr diff --git a/htdocs/images/flags/VE.gif b/htdocs/images/flags/VE.gif deleted file mode 100644 index 19ce6c1466f493ff8702f776364295095e8f6f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h=;-$J0s{U0cl`WmJUr7F7|H$S0Q4v*`BYTv008{_ zTlhvs`};-f!2lv6%=Y#wa&qIDndM4K+Vd6`{NDhECxQ3(PE}Ri`(a{T2v_<&J?Ogt znn#xPJ3I2$0Q502j53Gv^7#M&jY5_H_S*or)BybaO!@ge`1m&f0KWbGRHdcr_xCa3 z008~{QMuY_eHnPH(uwZR0O8{CgM{9$YN{kh863OF{$woXuOh6r26)05&!b4g?~2dwnYeHxV<01%`Nh0E;(* zjs*obA{jLt96386AQcrbs4yTt0T>G!9UmVD2NSjv0Us@`7zn-#z#Xx&2R{MF3CYSW K%q>69K>$0TIGSMq diff --git a/htdocs/images/flags/VG.gif b/htdocs/images/flags/VG.gif deleted file mode 100644 index 1fc0f96eed0e8e31729bd61b0dafaafd9e2c76ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hv2~Z&tGEgRk^lftJ3OnlUwTx6Q{u$XEiI(VevkkF zGOEL%N=ve1W4!Y{Hb9*F{CK-*|gnUAlM>PJ3Ra zQc|_7tXl7(omPZrGc~4?bEzUCpn;xH001DLzMfcEx#f|R*P5w3Jg?<~fnSSWex`4n zmS&=zZ-88%gAql>zg<5+t~ffW%@r4ygT39(-^jveQ&YZDNvvFvN#bZ{VO6h+dcDrEeN++Tb~mIuCKQa OP0b3=3MA6fK>#~4#*32x diff --git a/htdocs/images/flags/VI.gif b/htdocs/images/flags/VI.gif deleted file mode 100644 index 66f9e746b6aedf561e504119ba5827873e95414b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hy}ix*`QYQ*DC_I%kJ8lA zu=VVWcW~0y*4KiTN%-~CE2lM>r2|&>G$uO z{QUH*s^DBk+3d~G_xJhG&(HAaYxnl?>(w6k^1$rhM)K@)=;-H*f8e~%ro6nm?(Xi+ z&MV&AUhe2I=jYAIzf$h**5u`u*46Ut<)i%ezGP6{lCw>moZY{_ZT0I`%gf91^78!r z{PFSeA^8LV00000EC2ui01yBR000J+z@JdaDzXMB6k!?pQ33(m!nfJ@D5b|^QE-Yb z3kv6y;RHk&h)c)vEi9H@YBFIIUM&c$!2l^P7#R#V9v%<^E;Sth3^Wx!J|ZIr9|sT$ zIU0)z5)vQ|7zUIFCKU+;i){u55I8e2I0ywK8a+KB13s%PDku;n2stZ4Jv=C@s~{jF WG7=RPw#7#~Vbius< diff --git a/htdocs/images/flags/VN.gif b/htdocs/images/flags/VN.gif deleted file mode 100644 index f1e20c9412cd1d7b33b1daf3b2c178896dc8b1e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h^*lW6008s=0RMV=Z$Q(|r8}|tomt>1Gt7B0Re2K6Fw*Y-)IWQI#0Cy89EhP>g9}zJa7Aqu$J`^n` z8yPPVGc}PU4JQN~A($C15i~qIk_`Xkh5lViL;|4Z{t5e0n`vI=`<^?c9IDRa7k-0NcGH0H6RuK|iOTd$6W&mU?-! zOiSd=P_uOaRjpM3Jpk3mb|N4h&A)S7bXb)D0LPU8)vEyM(@)TMcNoVRGchg`#uNPj z00000A^8LV00000EC2ui01yBR000JxKojm~^BIpmfKvHWkytv8v_M5zHGp5J;<=O% z8VF=S#$dIb%H+}#lLr_KBrBUR46a8i<>2usGbukmG#xn)1_A;Kj2jy#0xv%+BXnFaf>|z!4DyxIZ^PF(}Fj L%n1w6&p`k?=S6^; diff --git a/htdocs/images/flags/WF.gif b/htdocs/images/flags/WF.gif deleted file mode 100644 index eaa954b13694ab9e3aa3f77ed03e372f47abd722..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h&PhqoR8+<_HQRP}!7eW1m6hRjw5!6hZfK0Vrvjcot`l>h*P004CW0M%h( zi~s=2L`1g_56L<@oB#mVW@gMmL3{uJ+HY^zYHHJ6UC~ZX!!|aLcO;jB`)Sd~r&_Kx8K1!xK#3pNWCBR3HR1_nAiHUcgS6c#Nx zBM>Aw00#^o0t74)76dOS8W1I&p8_>05(_OaGbD|`4_aIa038Sw X5-2MK!%I#a)EOBg8rc^Y8bJU%oBE4P diff --git a/htdocs/images/flags/WS.gif b/htdocs/images/flags/WS.gif deleted file mode 100644 index a51f939ede562216b0b37b393dcb489ed82968bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h_e)FtZEa>|qxn2NNlBFUL`1#4*76e*_bn}YdarbA zqV_5(@-8m;Qd0FLCHnvX`Bqo-ARzG#4FCW$`anSL008wqKIQ-b`(a^OS)BAbI`=Rz z`$a`eL5KDL08vMZ@&Eue^dBGiHa7S)H1io5{AOnQU0vb;0QovPoSnn_ zN=X0!Cr3Mj^D;8u008thHm$JGc6PAP(c*D&sd;gy{7+AtqssF&H9|rNfACB_)6>)b zz`*{@%=M?I_^+?*JS?uRuJrZw_IPddab@*&Y4P##wY9alxVZO(dHnqR^z`)g_4V%n z00000A^8LV00000EC2ui01yBR000JoK%dZ;DH=6M&EeqlcyuF)gl4ND5GjL$>A7Z6 zphjcGV8pf}SF3fwU`VABOrdy{Ouf&Cv)hFR0|W#GJv==V6nlMtfrEtEGj2CI139h2?+qF8yg7~KM(>I76BC%549b)tgR3cyaK+k0kXM2#Kp$PK>#~Y Covxz* diff --git a/htdocs/images/flags/YT.gif b/htdocs/images/flags/YT.gif deleted file mode 100644 index a2267c0546ff372e5c0717dc7c79518a2e6c7cce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5hN=dQI%E{&B<^JgC);3%v*F7z?w%N6`wAR(t?(XjVva@bK{F;^OD$=jrF?_44w&xw`uM`}+3w z^6&5S^Yi|{zx4F<;o{-`_xIb`>SAQR@9*%~*VpLl>iGEh`uX_%`1j_muE@v7-B3cn zy}HE5;qK(*Vp_BO`S`A^t?KFN>FDP9@9**P@!CQ!^Y8Kg{{Hgv^7i)j-QC^K&(HPs z_5c6>A^8LV00000EC2ui01yBR000J?K%WqU!EqFd*XuH~2tdByZxHc#3fMxVc9QU- zxkV_HifvGv+HU9d<#Gsw#?`2QOoGoY;Z6hsHX{Io3N0BcJ|!JF2OJV4Fd`xVGc*<% z9}hMQJrfc(ECdV$GbRoW9S55l6FLekHw+9FATkiCBnvw$I|?cWz!ftNGdevG8X6WB c5*={}Iy^iS#tKbOJS7hY2LU|?J>fwBJ6lxJZ~y=R diff --git a/htdocs/images/flags/YU.gif b/htdocs/images/flags/YU.gif deleted file mode 100644 index bef9a316e48a6a00206aa738b1fa2b66b2e768c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1703 zcmeH{*-ujm6vi*30ir&TXn+S)5)G76mIMPBeIU`Wt0WrW0hNiSl(sC126*s+85qg{ zqs+ii7}*r;zClY{b{vovS{4VSb=X?E-QL@kF1MvX2WI|@iC@mc_vL#!zvP^Ztn}2I z-}3^L00R7{E&z}NfIq3r5BzIS!^vO)zZ~%U0W8pkO*%1tx%{O0rf&rPKLjwRtDN2f z5PS@r3699*^?$4jzKAZ8^4`soLat?ZXAZsp)Eu6K-;xduNZv%=X^O}i9$aWcJ!BLu z41bW36Q3=1XYnaZZ&P1DTMK;ZN?%&txy#uC+UJ4HHuU2~0ey{{H;~-@PS%-3*pZL&4J-Y3ny=g&6ByTM51CJv#ztTT@0qOk-nh`bDSiR( zERBn-yEAp?uil>!+cna**r&@AqYlIBKu+KN$uSqKVv5XuLE3T zK3$ob^dUBltnb0})RE7#a7(!|J$>>C0#T~kv!OWE55ZA1)sGjFK~-HyI!axCDIcf) zDI7~vH$+r{YEonaYOnEn2X60Y6ot0egb{*!&583UP0Ni9oaUEQJx%lawj0#ENehh8 zw%!db)&80pMc4k8n{3p!<)z2y+8^bY>V7Z8(sdn0RYo1TxFJU0`Mjf4--V;l^?wkB zM*Z8$`4~g@%Z*Y)PmP{#=zZlj8v1Gj(O`dlC?0&*7{vhJwoRH1Iw{|8!99Iw8++Tu0zlj0A+ zL2~(lkw)blKrE5v0Om>JeI|jT+-DXWI6lh+V)0pLf)WmGb72*Sc4;*Ca9^HcJ#?&Q nBpf-{3o4FW$`bC8d#l=dgs4af#~v-Y;@AsPxl^uy0N~a?b>~qZ diff --git a/htdocs/images/flags/ZA.gif b/htdocs/images/flags/ZA.gif deleted file mode 100644 index ede52589199b0360eb5d92c3aa174dd9b4eda473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hF)_^b006PF<;vvPpxUzcF*1+H0QR@I0052rWoA>f zX{nC@YQJ{?X8`#~NcpCw=<04pMbkU0T}ZKL6cofkuVd!hTKQL3laW?hxOaNUkaBW! z=I!PinK(0|O8_|l0EH1asaij)VRO4@DWOa=rdQd~%iPpd$-#c2o?ddgU1ML%_`SbN zzjys_a44KW>GFq!yIRD9Dg=(mWWb=&5I7H)D?zi00;(L8Us2Jz!9{=2n`J#0yj4Z J%+1b006TO7llA}r diff --git a/htdocs/images/flags/ZM.gif b/htdocs/images/flags/ZM.gif deleted file mode 100644 index b2851d2b405c7ffe20eadff1b0bccbb7fe8b62e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h12q8d85sa)0AZ|Qe7$@CSO9UhacQw>07n3Xz=QyN z09mM6ZnbVK7Z+x*X59b)mC2R!C@AMFC6309Ri;(#I5h2qJzc9^6%-K4004-?hyZf{ z?0+_7u4Cl@0C~K6QlwILxpq#XPLarw=%i(BvTfa;TRAi_=t4Y6pGlmsb?BK_fWLrh zvuo)zF7Aj!c&=#iibv>(IcTqFdAWIBu3d}7i{vC6S+r(QqEP3IKjWfbC?X(Ns8<7l z0{{R3A^8LV00000EC2ui01yBR000JqK%da3C~h`_WMPT$L7t<@#HLB8NITOC;A9a# zAp@i3z}0jzSQGLMj~$)Mf|8p76eF;h9Ir%pJTV>$6K-S!axQ;7FCH5G^(%_TIQaKBkgjm`_4Vd*NT%Co08;=cC@9!j zI{p1s{QLW%S4PJ=83BXlXiPMy_R-c=~E;drwE0IS|{@$n7s@9&mlPWSgoJ3Ku1){pJQz1QK_^1WV( z003VA0P?x1qSjyW@A1!4Hs9R<+)N^;rAxq3MCs`O@AB}RTvqYy=#=S< z9u8+f4xDa0TB@-xB)W-I0RP{6BNP%#KZtT7E1^c L%M#Ad5Lx!CgZ^6u{LmxX8O=;(En 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 diff --git a/htdocs/images/goodies/add-netvibes.gif b/htdocs/images/goodies/add-netvibes.gif deleted file mode 100644 index 61595860f3d1958f9df701a17c3dc9682840e53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1531 zcmVNk%w1VOszZ0QUd@|NsC0|NqR)%&MxYU$!nXpf%|6|5&px{r>;*_y35u z{&}wcMQ*tK{r>v=|N8s=_xk_y`2Xtj|K;!hlD+xdawR* zss3uE{)C>;XQTdEoBm(6FJ87THKH^%p*2f#x;|*OELpB1Qmgs=|M>a*^!fkx_xtqr z`tkJo=<@&T@A&5M|KRNZHps4^3>)3)8zl!;_=nq@5$f)#M}SN*6Y64|GCxw zuFn6x%jT`l|GLTLsLTGQ$^W0l{;jk^AzwA+ce{)Dvtg0%jC zv;LB*)pxD_b*uhur~YQ5{$rv3UY`D2oc>(3E?l%PTeL4zurN-pF=2zlNUJhFrZYXJ zGd`s=IixgEcD+nhAaG?e^mC|Kjcc=j`_2?f>NL`RD8Q;q3q4 z?El^B|KaHL;pg<<=JVL+|JLUJ-Q@Do%Z9kyVw7^)&IBD{9=CIHHw8Z1G!{V~S;hMt!nZo|7z2BI?{+Gc1 zlD_|;w%d!j|BJc)in;!axc-W`{+_eio3Yt`vi^Lp{*R{9g{R+%qSA(-(1V@OeVWc* zo&I!^%2Ag7U9>J-v@Tb(Fj%rLQ?W2purFwc#ZRs=Pp&Xyg~Um$F-fa3MXEAIsWL*T zGDD~`Kc_Q5rZZT4z&xciJESu?q%&4}zc{2cIioZ=qcb?8H8-O)G@>;$p)^Wyx=C=l zNN~9?krywI7%h$%EsPjEWwJVDv?zucD1{j`V6q~A8X|ofC|0f-OsM+$`uqF){QUg= z{r&#_{{R2~A^8LW00000EC2ui09ybN000R800jsfNU)&6g9sBUT*#0i00I9ZN}Ncs zqQ#3CGiuzJQNRF*{|bm4Ns^<5BO)S5j37djkiQ*2{_EC;PoF*!_w3;ljoZd* zf4nik@doaQb#~O%G4fAYj(EftpsBDSSQ=hdVql55V!;9z$#f}}5T*r-GDrRyU@?XT z22?*KXLB>JB0V?QHe$N*#z?GsL^$04dC}m(i#i+{G5BR@f{POWq_ptBL&27azS1!9 z(CN&He+qc9!9S^3kbo*MB%p%=q(ldiHE{S*ksokevyl(%O!3bMH%wvz4#$Wg#tZqB z@{b)^M5KiZ{|M7cL=@cjPX)F}M8y|Cn1PEFC!BzR6BAfK1{Neh;NU;hXk$+xfJ6jH zAopxD%|?gZ0n0xo+`vc^ICOEv6(~#*L=QHk_>UzmIAMVVFy{0R7+Oe_LIpyYQ3VsC zgtCMI4S)c}7ijbp8AQ;`5yu>YL?nnDa>UWbMvyR2O9Lk85kesh7!#2x$o$X&16@4u z4+37qa7#oEaKVKGI;?O(k)K@H@X9|c?BalOvnVo(0z3@TivmYFLryq!Xke@c<%~ne zGaHGM!yio~fe#*wj9>#EHpo-V0|-cyLoN}Wf&mf{rGP;UP|&hW7z>2uQR65+!^PQ35~|QGx**0rk%eFUdfF3^?+ h4JEDg(o82k0009-E%nq?S8esxSZA&E)>{Vz06QT;MCkwk diff --git a/htdocs/images/goodies/add-newsgator.gif b/htdocs/images/goodies/add-newsgator.gif deleted file mode 100644 index 6d9bdef64be1a62c239df8e2a80bbf48d071e3cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 zcmb`E|1;Zn9Dv`SB$A2X6BI++u+)vZUF$TpvsoG%vaW09Fx8#0V$n&K0sysIU07HcC1J%^ofeD5`Kn`}MvIG!lFpKZuVkFE>aL%(8=Fs!M&sowq03>+9>Cjupj#sZ@Vj*jCWn+xwlh z)@rq8s*27xoz!SF(Dl08<%A|L(1&boZOzZm!=vGyogLU%9vd5jttViNfXCyY3o@BZ z@M|0V^)ncmprwPx7Z!WLE=~}q?e6ZfMf_{G%HVesv_(x#O~J^gU_R5+)3d$34G)?X zJ?${3$!;hf8X7X2&G4{)ZEekBv2=8FKx-rzLf1D|p^*ZPQLvS|+%A|=x?C>M;N!my zL*Lu*%+c4^2h%n1bfLAi6@JKp(GpmjLjNn_|B(Lc#XR@(Cx`+9>~eX9=*rbfag{_W zMHs44C~L2&>gv@E*VPz7PW)DYd0m~36Q$x5d zQcHLRiQ>_%2>bGaRaA;twQ|phBr@&|g@tyCR)~?&#g$*!V#Xx)5dU1u&WjpI&G1=> zKTJdl|7f4a%8Rjza=OR4_Wba?e4BEQ}ftGuLx-lUB`~BFS)C zR!H+g+w3xqhp@??X?yX?VDUSAyJ5qk^MvD z!jBz7UCt*H@t*~wqpw{O;H*E;9-knLkMZ`}UczYfbeu;zvXmtxMMk|FL<%jY2s}dB zIF8n{1k4=bdovlQu6D1Zd$sAY$Hm@}oJ*DfSy7UWOsnK`j?Uu-3*o~S@p3~^b{dyH zXk%Xq%E|1;&gH9KJkj*^vwmBwj1=wAR*<6+A~4$=Iw@<#p_g-`odzYDfD--%J{G}p diff --git a/htdocs/images/goodies/add-yahoo.gif b/htdocs/images/goodies/add-yahoo.gif deleted file mode 100644 index b6f80471dba12e586220e9d37f3d1f4ad99653fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmZ?wbhEHbjAjsIxXJ(oGwv$J!{mMw8{abCr5|3)P+7@r9V30Zvp{~sIY zfAbgp|Noy?ZPv<_EB};L|2uku-|2QqNy+~YAOC0@{p+20<;oS!m}mc=KKpn5#=ni5 z|K=6{^$I+5=FH5QGrxTK^0&S@EiJ9CuI|;VSO3$}B#f5+|Mm@NAjooxf#OdVRuKjb z1|5(|AU`p%{XfuO;GrYce_~0|$&^KQy(>z*)<&(rv8HVH-;M~#yb5dC_ z3#V|PIH&RoRs~);PX0hand!1UJgV%n?1Dj(Qu`&vM41!=r33{f14U$~PZ#Z(emZD& zJx9~Lro=@-{G6ODyuvGar|ECv|`n!(LH zM|4UTY~p0zuC-v7>(6Nm4(u#aa8Z$%px_|NcG-+$!-Myi8Z`u1qBdMeT-d-B^eXQvT6e&4qtK(s^=wjFAqQqoI@~D4ZRH~H!K90! zfqSXUgQ&)|DZWBGSTBin+`f=6?$*K3SQ66|7JkojWkD#z;+DW!&kj%FdB8c*+*07Q z%cO;VESb)k$|kIOocz46`aCAIN*FiHWGU#lu+XU^MbRSX#DT={)71f%GF%&ZQaFz% zD6P(wewEwA9b{6R=Jh6(olQ|JcW)(Ax3b4Xi#xB&zis4nys_Ck$AM|b6mFFzEFUsd zXZ}p7`jo?TVBg-~-(NmHecX2czQ3mNvtHakzkh$7phkzng9a9{j0cSzYAYTz@fb<4 HFjxZsRKyhx diff --git a/htdocs/images/googleapps/.gitignore b/htdocs/images/googleapps/.gitignore deleted file mode 100644 index e793c7e..0000000 --- a/htdocs/images/googleapps/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/activity-*.png -/usage-*.png diff --git a/htdocs/images/icons/add.gif b/htdocs/images/icons/add.gif deleted file mode 100644 index 6677cf3727efcd4df3f8cc5c29dc5e58ef5bce5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmZ?wbhEHb6krfwI9A4B(x_w7q+{NqZ`o>K({5zjVdBtf=G1NB)NAI_W98g$;ofHx zJk2#=reoL)kMMb}v2%Rm=LMuK4$E8`k-9oGV|8%$s)(FbQCVxEOV=cpuS?F`8j%k| zkyYzc3wA`7Y>zJ49#gY1y<$sB(az}NT`_f=G8;B$74C~K-;+?YE2VjBZtc#jf`iGm zJF{E1<<;-Zt=*GWxi_zNUwY-il=dA3?K=wV4rbOI&aOI^-MO!#?s$IhzUr<+mHmfm z8_$%sovdm*S<`u~YKr!BiMZSIXp3vNzbaC6$KD|1(0nX~lv?9Dfq zZULfO%QoF!vGw+f_4k)(1ch+xzuzug8ZF`?= zJNn|l>1T(}y*zp4_4(`XF5UTf4fRdUEv;?! z`szwj?agMP1x1Bf2Ey&8*`;~0QOWtXf~}@0B@vz;!9l(`dVDSJ#gYC_Wo0fF)|vdx z+8L>?jz(K0G*ttfxtr8-LmalAFOxTqW^a;9bF;s&Ro*y;wMo)1&{9|Aj=YMu4Rf<- zx`~G79cje`t`;Gk#G~@EG75WQI085haTxj}tqAyZl&Qg)N9xCpBv|?L8{^z3ai7@d#CMANx zm=InFbHgq^!m}NYa8eN-^RdNfFeSQroJvX&U;6k#PD)C`1Kyt${gYxv7aN@N3uAnE zL19}R+@LGA7ZL9(cw1iFhPz$k|+bV89pMHw#xFyfja1v8mFeop^bnpea=oJ^Y}WMMF#x; z_<#0cy&Q~gWCy82&kvi- z=z(s_$^Xpoj_0IRFnVx_^YHA4%v1fvpWSQgYKYPLO7=VH)n#V%Jgr;ttZiDg-Pb)y z0>lF%gV1mdL17C!l^SpppdYJ&KnrYrfMOY@eGQ8Z_<^%4#zqgZ*g1 z@fY4NO{PN2k)nrnfdlW1H8w7rcHjBCQq6sKjzU7eXulX^8-RgLdcJnkfuxnW#@QPrDRkO%8kY-!lm8CPeu60KxtOJh8{YN@!PGD@b)Qm`o_->DfjSfmf$&6TStz@I6C7KR07SB zxF&1Xdb|ebTfAqLJcIGws%vnbnRKnBCDXo@^laX3aB7ye73ABztszIHEd@1XqKkc} zqzSa6B1gxLhFu-I8nSillU?aVi*3lb?a=?&M1Svy0AwNBdXY*bW~Qg6hne9K0BR#A z2+I^vzEqY(5=WWy^QiMzpr9|@PA*>&CVBpoS8wjOUx2I)@bh4>)~oaWb!3}J1OXzw zWVClN9UemvRNdq(WSrokkIBo3ZEVwkeU_8r3R8mlnjFR4kz2!X#FfSHy~t%NN_judk7cRdOf*i520RxU^W3 z&?LEEMIv}fxGWXLI7*fChvR63VUDy_<3StzaG=wuW$UYJ_1I8){bn{cF>vtK?HfZA zGZ%Yq#iouO8yx7mbMier$z4bsSJqRVo4} F{shg^Qk4Jz diff --git a/htdocs/images/icons/bin_empty.gif b/htdocs/images/icons/bin_empty.gif deleted file mode 100644 index 337e0e2d7cca5ef0df06e3d87b4bdb0b96fe4cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmV+t1nv7rNk%w1VGsZi0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LW00930EC2ui01yBW07nS#0RIUbNU-2PRl(ksTNlrrtyI{SLF-g2 z4?$S10ELt1?i;mn=$PU8N2wOQa@(|NgXiX1GH8!-nK3vAjw48o9$9kKMvcH%tWc2( zl`9n~RH90OGDhehD09D{Rnu0k9v)-OrbUYNMxY=*r?g?4W=0MiHfYL-`C{B!a^9$c5<@T! MS~6hT{tE~IJ1^b%q5uE@ diff --git a/htdocs/images/icons/book_next.gif b/htdocs/images/icons/book_next.gif deleted file mode 100644 index 111bcbf913d1c5de05f904acdc32748ffc67d949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmZ?wbhEHb6krfwIF`l0s29y_7{_Lk$Znd%Ws%BlnZ|3A$!C)xWS=AGkSpp^DCSZi z=2|4>Q6lMCChJqF7+9;4tf&&wq!!+ynW?H7)vgoUZJa#OC}oma>IBmYeano=7MatX zI;=grUA%f+JtsPP)vXDb=;hbE(SN3UT>I*;FCalhyvLkEi?xc+o89QQ2797jnmsq{*bm8IDntf#@$1|2LUD|N4YT2@7%a<>2 zI#k!Q&G^86RZzN4v)LT|_qW diff --git a/htdocs/images/icons/bullet_arrow_down.gif b/htdocs/images/icons/bullet_arrow_down.gif deleted file mode 100644 index daa2eec017a4f7fc6474bb35857b0655c15b1fb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZ?wbhEHb6krfwXc1;$VPZ*1OPMll%9?d+TAEsxELy_D$FpbGo|2-HDU+tGS+$0T zi)YTPIa@Yu>FMfOvTTWnkjS2WdrHbm{u2ijf3h$#Fvv6LFaQC_P6k%B2kLz(ne#GM mt;?D1=Dt{@X)+)C9fQVGHrAZo6C8F_ty@xb(x#Px!5RSnY*$(U diff --git a/htdocs/images/icons/bullet_arrow_up.gif b/htdocs/images/icons/bullet_arrow_up.gif deleted file mode 100644 index 834ba5c182f6c4a2756c5c38d954d4ebab976f3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZ?wbhEHb6krfwXc1;$VPZ*1OPMll%9?d+TAEsxELy_D$FpbGo|2-HDU+tGS+$0T zi)YTPIa@Yu>FMfOvTTWnkjS2WdrHbm{u2ijf3h$#Fvv6LFaQC_P6t-C2kLz(kz7X? mh`1!|E6_P_u-Kwx-TRuk#{G>9ip2sd9Sxg~r?fFJSOWn3&Q|~c diff --git a/htdocs/images/icons/calendar_view_day.gif b/htdocs/images/icons/calendar_view_day.gif deleted file mode 100644 index b07c373527c786a9226cb8e0d94bdd8c131cfe64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1333 zcmdUvU1-x#6o5~&y3X0nI=de?H#2`?r=50xy17}q72L*rh$5`|w63emV0JOhW__!j zgFXiLuqcYz1`<%D2udC!R4B5Cf;jRpCE^dkr@}xYD)pvO2IBC=7Z2Q<@1Aq+IXUNE zZvWuv&aR*X9Pkkg(PN#IIO3zFtd3l#>`Y4e~rj$T3qw{23ROl3?$9*wDNv6~hE)y43PEOK7HYO?*m!L{`l(pE=O1f>G8mYi@0qSY*1^K z8w^G1UXnbsdGViD0mTM**=)qx-0zPTJA)DeSe(e}95>lz@Tkc>247`q7Wt3{hp6Bf zVl=?boImGB%pooxH(4-v)Z~=GGof)~uZ-9e$&XD$&?1Kxonzr>2sOY+#)fDHIbnAY zHyaH=UnJ}hfVUo?Xk|lpF$(bTK0r0Gp>x#$R1O13Z5z7vvxTNus#cjZ#p9^gBd&wpLY=f5wb9BTk_Bs9&;6nv34)&=mlwOO1Q-8=*%&(C3~f8(`C zp#g>kJOGOW0K=sKLvsMP-vS(b1hDfd09gibz6-F<_rHeOtirxpe{gbQlnJuoG2FN? z{;A0+CQ1iG;ez?!O>8)Z4h6tJMPFkk#wix>MfWR=5?-dK*)ZeA2P2^)ZoJjw=_q7% z8?*7?fbB`#mzcdVH``S1a2)IDX=uZ1>+2Iu!~%b7VQ<1gGz(5=#o@}`7NYp>y%XKt zr@9Vq+ad0MAS^EJs;D6LBzlM@Z~A$W7eJCI&Viw zSpp}HzP2`cG4JsYiCWty7k0>A_3EUO*k>E9X`8V;E9$Ms9=pip;_~g)?Xt%;kiKp$ db>d3q%DZ0tfSuFh7XR$LtIqC8-z0J9{sGq?Gc^DJ diff --git a/htdocs/images/icons/clock.gif b/htdocs/images/icons/clock.gif deleted file mode 100644 index 56298132d3923531fa2d9fa2aecb605e56a915a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1770 zcmeHHUuYY39RFUr(X4J=ifiq4huS5&Q~3~t;8*a)R)eve=$bi6HM0sf9ZxYGY+9zCQL!Owwj|3m zt7*DyYDo!M2q8|CCRLLWb*#o{7D>nyk&RI@$tso_R8&=zq$I0mIK;}xwK&IhHLK>< zG*<^5V?`s$vyKKx(=(FpAdrz|p`>fFt|d-Nh*Nb|F&I%3HJl?3p6BQ>R>i7r*IcjW zx}4#0s;L=2l4U!@fXo^xuUQVMEgQCsZO8Rw>>ymTYc--M*j6y< zi?oDY67P8pUjN_z0}MnS?w|l9h}3@{Pp40f4UY}b0||h@dY9)fS%@9`9g&o%4SbKddLS~0m%*UWxtUnxCi*TuI<9fDnCQO>y@*EglHnv?qPtP-`DH+qX4a|09#7E{@cxZed_~KV-oc1@|KUUM7oey^Ls?W^=xe{#Z55ft zr$TQck?LKlQd7%EnF{mH)t0lD#a-3m@JeL=w=0>-4{NJ*o1)+d%`7GISCx*);`(Z| z{k2jkmOj4PH$S4y-mPsH?h-EQj&Vor1=nZvPv_#l4D6V(6Ihc2syQ^6*>7=36 zgV0Nff)#{BL=O=cdRd?#F=!yv9wcrcvBwKWElO_RxwjA^@ud&Wxxe#$-}(OB@0`;W z>I}B=F1WA=X3;TCzMqRuYDL{B8HQHS=e6SG!m?g6v}JuENA7a2pcjgz#%-QwJYe$+#v?+U?adMUB{PZn2zBV|6Yk!8_ENkCEj!z~A6kZi$9(G~4R5GQcWnK`i@c)}sag+`P z;8OB+B@rJ~J?(VAL=qg5hgDJWc|wwK%;yRC{UBf?4&s41Ny6XIRCR3{ToD%|HzO6i% hd3WWUQa8T0ws}r=y&X+>1Dr6C&17#*-N`oM@jI|B&!+5z*fwqrXMP{0E9e#eR>D{T~tiJtppZY{HMY#Q)K8-{TX1#3%hoO!<|V z{39vlS5oTF~=T}zlubjL;*?GTn^MB_S{LjhzpI7j| zpzwb|(f@+tzlA0L3QPVMmi#F$`(IS@x1{`kN!h=$%Kt!A4n$RdD{KB&R{sZ)wg0MW z{{vBV-T#`pe|3%j>l*$8$)>jd?Op!|0x14uVdP?{XV75)0#KYVu-7%zH#N7kwzao= zd$j48NVIr|g*dioTLo*kI0Z!bm^Eow1ZoMjTDpb1=&76gs`IxSSceArd8zSr)GPaI zs=D*;s#oz;lCu}wrD*KxU~41A-mYNiEX%_tW-89wDz9%R!_~whU?j}cBCRXQ*}}*z T!rUs#(Z=xk(68V1jSSWRn>;oL diff --git a/htdocs/images/icons/date_edit.gif b/htdocs/images/icons/date_edit.gif deleted file mode 100644 index 212c6e1218ce59585edb20a208fcc9d73409148b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmZ?wbhEHb6krfwcs_w)5(mc?Hn!so4CjG}k#Q?8?*(S&>kJGtWMu9zFoZjZp5f%Y z#LoVVk?}1P(=Bf9b0Q+wg@hjR@$He9e<&pMnxFrknAjb0@x2-vccrE8OG|$i7QQPd zcVABKp|bL04UOlzy6p*CEor(hjE(QO%e}O=UY((`uS%+=rKPK@YgMQ7w7!--9bOYB zPCVJ_xT!C6>eQ)6d)<%sc+8$X`{)eMjSH$T%ynBgZ{E83^Y6^`x;4vh-NJ=8W`$gw zmwI`A+Jl7w*B2+>SQ@cz-MaPb*B{)v;_9}l+Z$W2?kG9AdGp2X6Hag4x@XUxv)i_v z+p%N+{{1KSuD@__!l6Tlp6@F^eE9H@BS)T`483+}>CvM{pC9Nxe*E~!lP9kpIdbjD zkyEEmT>}c9E`NI}_w?!0XU?3ternI{(>vc@sQ7t&%Dc;zKTl5laJlmBmHKyAYCm47 z{&cPC>6MLN@5Ft*6aW6wny>exKU~`K?QYKZ`^n!QMt!@y?)#(YACF=`JXrnU!GlMS z9zA~i_~X+(KOb-U^WezmXM3MLd-m?#yZ7(k|9JQK$NMLLza9Gf?a1Hn$NztN@b&B0 z|DT_J|Ni~=@85s^{P{l$s2T!_KUo;L82&TpFaQB4PcU%2WBAYc=X%nE1Cnh2RRtEf z2naE9ikS%>VOey5g=fc?n@I;6nVI5#6-Z8a@Tgg~y1-$9LgK+*TXViCArXwsO`I|& z5gh>x4h?L^!Z{j-Oh?%HWsPDK1dnv^Hb%*L&i!>_qMT;2#L$y}+lj>Qhy0v8#Xm#|-171a8}axw?sJTv=wcS>D$9GmWv|7OEUN43)l?sM=>H=+q01BkYqT8ofCzgBEri=ae!$_NMX5iI4UYe#<%xnvb<| eDh02I>11+N=n~TvX-W8)#QN#E=08>z25SIkF~i~j diff --git a/htdocs/images/icons/delete.gif b/htdocs/images/icons/delete.gif deleted file mode 100644 index e553a926f851b8a0c1ff588a63f0c20099373e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmZ?wbhEHb6krfwIF`?_-Aj9im)0(Cy*=IrJN)zx`Wo*EFxuyDwl~o9NPx+{V2cC6 zRu}y3&IH*U3w1gk?s_`X^GvkQ?J)0)aly~Re6Gg^o=*fa0-iq#-MVgha^$3BmZypS@*ND9%m;$&P#rm75Ath?Q?PLlZwJe)uo@xlV4PozN{|zT$%i`zT#DL?YE|k z53L0snycTn)P8HpdEZv|uB-G%Tfv8(@^?LrAN#6)^pt(+Yy2>={@tYhx0Cz6Pptbs zx$ftrx*t>Oe@(9cHLLyOoM|8DPWv^t`^$oPUlz^#wRqy!#q+-|TljhT;@>Ohd|SQf z>zak%S1inp;}i>NQoA722EieKNAMQjCS$^%C>a zBSK>`Ed^WkqH}}1+yneQQVscAY;r>VoE^71S|#%|YbPbRsvbCK?rF{4q>&bAmw)E0 zv{49qlTy5k?b&lW!E8-(ZoVecj~>g~n=v&D#cJt3mX?r-55jS4+GqEspgxs;v5MZzd02g04I{*Lx diff --git a/htdocs/images/icons/email.gif b/htdocs/images/icons/email.gif deleted file mode 100644 index 81eee6a2dea46a553b54c7ce280783edbf2df09d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmeIx+e=dc00!`5DJv5Z3?D+v+k>TDgf3PR>d?7TI9ilog3b^h3?)J-O?2uub*@&V z7A9swQzO*MioDHv*>uuydEK0sGj%&V)6H$3bGCD7{trF&@#FggKKNMdq?oHYet;ja z{St^w6Gdlzh|cYaDf$&#I28BzQ$lffY{?L_q&um2H2FziT&Xmnd^E9Q6nr+$;>y@n zgQ?uH)G8^PC%eg$fz{);__7qf>^5%#te?Cqn9SrUK%pEID!>MLMx8vfUXdl7$`(y? zM9K%xm3bm%QKPD;Nmce%Uiwa5-7&|PXluGQYP+=J?uEL~8x1{B<5#Hh8`RVfHTOfW z2P`ea=C)yD`>?T9YUz+6AIFi-akzWJ+%skR;x-NUDXqOT)}OzT0TnW+whzwPzb_D@ z%h-s9P%gn^8cd->Csv7>HB7bchR;IyydGcDTh*K7pDl8Jn_MuEiw1IK8(lP#S_7^# zpvy*5XT&uysf9_6iCTdvt%+KLah-{ROtw`Mr9;S7gwi7p2*KCQ1PB?HH#R=3& z>^o`HNn=hDbCLJ~8YgHcLA%^Ynjq=_`Bw{s;GQ1d01ZR|?i_pqIHCsVqk+jiZPF^w zG)YW6r&{0_d?SAZ4B>iu0r$g~)soyWR`99#Iz7Xed%TQOpiq1HoVZ-L5g01tcr*O# ztL2tGMqc1G!Tf+EhtI4{yu+0TGX=gUlOAU4W77FDUgEtjdwwrZ9CjtLAe@~(Ck;Id zmLqNAnrWY)*cTT&p^(b<2xeuV520E}ThSDx1O&-pu{q|jhd@E*ASDGUIrI<^N=lXSy-CZ0D7_T= z;Jy6b_xHW;ePnv(tw-bbd<{5_R z`H|&Cs^trUpctOzhPo5Vx=XV>U9}X`SImxT`nq9Ot4&5QnzAbEUKmAT7zIJp@k6H* zX_jxhp6v#P9q6X3A{R|72{tQRoNVy2!72`?IE?Icf{0UHP188p(Jf!ob(Up$o@WHT zs=B=5GKyn3L4i|g-mu)jbOPJ)7?vy0CEE)))!{f!Gd^(=xkdq3ZGZN~K vL%H8U{HTB9wy_Uay;|Z@cGJLN82<{G^iVcO<@y*7cJ3z<8SN@Z!RwCz8pcRx diff --git a/htdocs/images/icons/error.gif b/htdocs/images/icons/error.gif deleted file mode 100644 index de6dc7b2efb994a0fcb33408493e32c5d5822128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1094 zcmb`GUr19?9LIm#w5>H|;r;5vVB(5VVi{-SKa>!X4D>;l2#xj!gSV?1L9U~Em!x-bzBbTR^?-d4s zerQpDjrjdzL%yLNx~CVwxD({Kn2`wQ;sQ_VRN(d`W!?n~5WN;bHo*-r%ndy|ZvM8b zYd>^pXC0^bOU=d;LjXf9(bPtCc4|DW^JR_i3YWI!6 zji+_aX}rWnw7mtwbX*P1#z}%m;t7QlENOsdCa@e&M8;=?yR-(7m4q+~aHSc*v{SB4 zCIB{H12nXkYfcA1-2_11U9KJ6EH%YYzmu48lSY#;*n9w$pH%gr9l*Q>aF|xrpD$JQ z@D=gcBR4G0F7ityEm0f20RPJMm(x!_`e3^6(J7j5nfKzQ29ydkz>8sk2`j+p3c$u^ zfQ~l+HCq5o6~MR`jGq0Yp*O3vuhAcj%}(<{AsnK#3*(=U&GQK^$cF#;{I5j_C&@(gGe91jl=&0@M!hR;oJ@m1GI&WuNx1;L5qy02} zt;yZ!aM+ryrtUK>{-&;rXIGA4sSsKlJL`-_d)oz4!jSKR>@SGSk<* zRHzlLOeum+NEJ2<8N$oLHX%pI6AZ#m;Z@;vp-9*(ln8GMCZSAtUpT0S=P7%EBSMv6 z5p2TY)i{JBYp50K)IObh!MYy%dYl`nF;Kseh7_De8Voe2^6_R`cGH?cTP7#j1^QM!Y-eHq!MD-q-MD)2*Jn=-Gu*igzDfR(!>DmvX*{9@R_uqKGfc={50H zIlg*&57M`vuMg1s0evR=4sgLle+A!I=vQAg463=A3wACZV!+OzouR|{4-u#$P>tV? z-@$Md!&XMB88H*8CUlgLg;5Ka%!I9kZG`QNnHje+ZYSKtcnzbcxOAM$HZIq2MddhG zTDjWFH7^kl-+H<3TvzSn>B_q819WQdIr73DNu`6i%e{*lKOdW39JEceC-uio3u65xu3! zo!0nBvh&y7smqd^pBlUq6$~$4k?(OWs3?qnbd|EFz2EMrTk>?Cea6@1KK9AhlUbox z9GVX8vhswtCv3Lb51*(^3pK<9N9$K<*Ur_oB;H7PCTneI;JZ!toj7*%RQA^;iQ74`sFk424WU0ek@6E_KPJ-Vwx6dWZl1&mD}3@ diff --git a/htdocs/images/icons/feed_add.gif b/htdocs/images/icons/feed_add.gif deleted file mode 100644 index cb1e280c53d62caf9b41fcb169c0b09337f1427a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1375 zcmd6nL5Le=6o6l1mdtk3CT-Vl61JMn!a8VDr!Cb<6Kb-l&1`oM)3T+p2btL{cr_ik$FYRCjgNV+yQU-Tv(;mtk0}AG_hk#N&6iuO&J+2hwiI({P8D&8%UOf2t z|9`&!y*Ka8d;ibmrjGFmIRF882vkr6w5v^1K~umwG&>F4+`t-OjaQ`rwrkj`qNUoz zp+&gS>=@V((n_#yOLbeR*%CI%P|+0ChJ>bsmV#BlMj9I;HWjqVP_drII&b6|Yzjs# zjW!8oV8_I^g$iKD;*_9S7f^z#6cFpIP~~ct#4AB;<|X29<&j7p&=L_hJ6#)pAn66P z1Z+33Z6MXOuuDc8H#)f4MKg^?8r6Q0|JP;gSC0!|2F7~7Pi32fNPjo zhvyw;DbG2aqWqSw>cmH+Tu|g9VKO16&7RB>HVE&Sci5yn=Wvtq`NBMXw?&vM_lgT; zve_gXzF4XhNCRjxy`XBu$^9weIBfuV649ptj_d_^YJE$0rUI~b9bjZ)OUDKQo<0p= zAKcPCI?->6YtMS+jf14oL|nc}fPo)-y+;!O-YWo)jb87!tG(XiYb3`#fL6J1PCMWC zCEo4?z`yOC;+*KtA<#U3POAPJ-z)bUKrO%ltOx+7w*gGQ3-HN(fah)i?7jmaZU>l6 zfSZ5t*L0fIe=nSs7Z>I@=#dP$ zUnP?8ta?r_X|c#uxv(!5Ilys;`dMRir9T|-{#2V`mX`OR$%~`I>~~D?LhjO@XTlE}vUKVavyXqh)y)iku>BC5 rZ_Al+U*xi<_-5<=Mc=laY+Gy{{pQ1KF=>Mdm|uHFcF%Ex9!UNHxBp88 diff --git a/htdocs/images/icons/flag_green.gif b/htdocs/images/icons/flag_green.gif deleted file mode 100644 index f6e21e0129f545d54ba97d2a50891aba50eb9f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1312 zcmd6nU1-x#6o5~=X?50F-PGc5=g(}lt6A$$rcSd~TO8b?Xq=}?a*Q+YSAc9dSQBTY1Kw71$ zh{+&U)3ut$(sEkSWJ9Jbg(f7#nVecvYP!hCG$k{NDd{3<$`mC@rj87WAQg_1XuYnX znxa^8-H;&6Pp zpXiSQxEHb@Y#^xNGox+Rq~Q^1oCctTF)i#gl?JDHHW0k#JSfJZdI1U~1HTL6`}00*7} zbiDvz)&qxL6%)&Kwi diff --git a/htdocs/images/icons/flag_orange.gif b/htdocs/images/icons/flag_orange.gif deleted file mode 100644 index f76560acc463b7d0e714e9962561f733f51abc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmZ?wbhEHb6krfwIF`d;BrDb)A=@9X*pX^7D@%J$w$AiC(^Xj-E3)-h=W4Ic(_B)d zx2Do`O|`|567|DnsvGL8Ha6Itt&+G=F0{MF>}svp%PQ{c^?Gk=dG__VzG~z;(Bt%` ziR*P6&(~(=bKTxQ8+pFAvK*h}_O*lMdpqaXPS&qo?7v&Zzjtw;n(ljLUhtpEhCip6 zURxA)VQJ;lg$bYLhy0xH`+uJ2uSJ2k*XJGBvf%&Xfd5MZ|1S+WvuW=CW#QL1O#ZN{ z;Qy+a|EuHfZ?Ao{r|rqX{{K5`{_m>&zqj%KzNY{CTmK#D|8s2ezvEN>pP2gp)U5xf zX8%7u`_GyA|4+~Te+G!=|35qb|G7o~&n^Cce(C>9EB{|!_3z4>e^)pCzp?fI&29g0 zZvTI4$NxKf|KB_C|G|;}50CzTc>MpP6aSu^{{Q6c|EFjFKfn0@)%E}H?*ISv{P*|w z|0w{9KUo;L80r~x7=Qp2Ck*V18tR*xTUy(iIQaNEnHd?|>&1*yBDBS`Mf&U2RFxIw zJTkIUlT01Bn^k;+d}5QM(}TR&9GRLGe9g^V0uvGgYq3*n h5_?7^5gQ8)hptv0!EGlJ1cDmGc$K({QVawbtO35`KT`kz diff --git a/htdocs/images/icons/flag_red.gif b/htdocs/images/icons/flag_red.gif deleted file mode 100644 index f1de9dbc835685a1aa23d6f47a1de30f8293f63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1310 zcmd6nO-vI(6o6j~*s7?D{1vpYM1)0(F2$ck`~ix#1e>gcgq2fEsT2ccvt6~`ss-)M zO}sRXn)(y7F~;mkdfa0V95yjAJrGk9V|v`g#Eel=XS*5_Bk|(FN#^Z0@4cC~@4d-* z$1gI2K>`T)1jfiy4%$Ivc`Cs4P$z7QtZSTMiyUav_p%_2HvX{0`>&rX9X9K+LGtS!H?~j&R z0S5%IG+=APyvdZovnHQ0_@>B<*oQSZ6ba5@#uHq^)T9Tqgn940$ytMEO;!xP5t=vl zs+j3$d2S(!7dl=rbKzJB7r+Q6hIj!xSs!BVGYWvec!(1K=bQjl>sz{+7{IF+0L@)n zItn+waT*{uu%-Kaxl$BM(|YXc04_8hmfBH(n)l`M=Pm%-1AtAbT>kd7T;64fptrWnp01fcO2QZEMJh2Lp`2f)U8le6S z0J{fZY7nf<$6wPdR%KtSC%CvUD+I;x9BEt_&+_835aWZPaK-%Zgcy$FrT}=B`CG!m zd_*Ki@cjzofJ^*!F)X;q@o4C%i*(cUiAq$LA&mzIY>yNEJIR&RyLW7@tu}jg^*w(V zF-GrlO`N*#A3gf$Qp?5hv9pH;tCFPi<>@i^1!s%5;drvyNf7PM^Jksi!&JuKx3;&v z)8ls5oI8=R9Bwj`vd^E8UTc*FhJFAgh#_PE diff --git a/htdocs/images/icons/group.gif b/htdocs/images/icons/group.gif deleted file mode 100644 index 85619a28219c5c1bd744a62687d7399d1b644745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmZ?wbhEHb6krfwc;3RmX}LnxxmDR?rA}yxUaGcv=n~6J)68&P-8%JYA^cOqmHWeu zn&KSnTC7b9PEUw-oEtAXDb{gPtn;)4=c$QKrD+XQ6J0{{x6I5|wy!!nBi$va_^e~i z#rgS4j&+x2Wd=CbU9Kx`kLr(#tUEEeBqh4`+NARArNyD0%^_1Na}%c}EU$75@3>dr zQ<}0kEM-ZI@8rMh8j?#VEl6J;xxd*kV@0Iz^#7exYS*+D&g;*=)M8RP$_p{}Z?WuRNJ`f3afg{-)~FS!uieKUpgMY_`wSWs-3R{y$wV+kCp< z+LEGnE zFVsBV*!X-??WCjspY2GUbLxA`wg0Pc%)PyT`NpeDo*$U>@#wVA$EJNd(YxvT-zVp{ zJ-@Ky)5SHvFD(3eWy9a=>khp5KMLp{0*XIb7`Yh!Gw3h?0Vq!}aO`LJ&naV3z#*o= zBFwjB(b9!ttt^T?6E{ES5mypmRr@fReZo9D6Co2W)vK7nQdM$MZhED zVdGhL%c?sWh0D2`8oBL`a1=W=v6<%_sag5?aDxMDnN?j(Bb$%7c5sM|q{k%{Ig#uW zQ#^%TT&6W@#vPOSu;>_%IIkAZ9fK1c{F23G3=I{H{IbT;eGHw!N)Ar4S#w-Gm0H?) lC49FD=`hTNxP{tO1&XoD={6 diff --git a/htdocs/images/icons/information.gif b/htdocs/images/icons/information.gif deleted file mode 100644 index 9e9186c44132488267873c68bffb1ae6bc293624..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1314 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 T|M2L^(JP&?aU%N(4d?#=Z8>A< diff --git a/htdocs/images/icons/lock_add.gif b/htdocs/images/icons/lock_add.gif deleted file mode 100644 index e25ae71633b7b28a2901b55465257165d6802a1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1364 zcmchXe`p(39KgRxlcpx=mYCILqmEQ(muV{3)^#b4EkC;DN;h_`!)C3>rD^OHy7Wl0 zdH#3JDm(4K11kjakE`OiKgP&kG%-$b0ECK#7QLwOW?O+O0gc zR8yf$jkOSK$P_kZU5a6y*TpEdG_13>p4Uy()En5=B*du-Ba1PkNgEByP-&}4V_P=V zl!@{JACd&tYNmLZ!4|@10~_5Wsbacn_^~IqvXM zm(Mu-ZjG;z7{=iuS6C)Y1|%w1=CXuk!UtBmtT?>X<)*_oiYv}qjWAViFRzw~ViP5~ zT&fmH1Ds^FB3~gv?#~F1I1M0QBDEQSv(E$c?C#qZssMNI0306Px5c9X1M>iAeBbtX zw$l{XbGy}d#z~`zxPln~@AvKY<6!{b#{f^{cKg@Q+wCV`kQ{peTDf?=a-$PVqTQ1K z|E70;uDg5p5S%=J4#)gA-Ya(+;CO%n*r5UD{QxuX1AO`ez=?YRk^2BlKfskqa3>%A zHM-5}tUH=5tgS9p3boR5%(*bx^|kd%l`j-a9ru4X)k*?66oBkH|6XNvg{#HV#d_WE4~HX>n_HWKp^til1GhJO1O5*p z!C-Vd5D0HYgF9Q{UjOz$(0ix%!`t5Av75sOA_IMw=!vAyd+hA#`ta0LE;lpB%uJ1> z)BW``Q`t98W{w}vyz*jC`sI4x*x{=uGB3@Zd@Xfk@Kl|CbotHmr#;V1hp6#q-HQ_o zs5Se*@9!UsrBG($t8;@RZ@(qf&)@pw;OISW(_YWX;d3e%-ube}8=6lg_kQ#&gpOR; hju&3oaC`i}-`_(Il?{I&G2yWurc<|ki*6UZ{s$OKV=Vvx diff --git a/htdocs/images/icons/lock_open.gif b/htdocs/images/icons/lock_open.gif deleted file mode 100644 index 5ec907889d278fa62a7f5866a6fa4289a3e71b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmc(fPiWg#9LIlloTP5^M{Uy9WbvwyHqACWlM@>3wHbD_CCbumY6!Dec8KG6aUgYs ztacuZ;VE<|83UDUpp_lel@%Sz(5dLqgAP0Rkb_{*=}?9SrRXRqj5oI8Jy{!pv9ilx zKi+%#yx;Hl^n3cghvpaN(wQOw1Uv@ctU6Jz*S#j=s7$ljM2_C9fTN7dvTPfyrfIIu z*hazD7+Ys;opBA;F$&0$EG_HeW)@sy#o`XR=89vkSW--qBt=oQ2GiugFbrK{tpP18i4Whs;;kyayyTm!ipvMb1{cvb;zS-;FrLY@W%z%FkzXSrfIN(}eqW&JrTN+U6qT9;2=5m;ZZnKGb)_os*iRPTy-arh z2q72>c3LdexE#w~eD=P7d4RLA{gCwE_3XTVjP&rhAV6pkM+esf9`|`Q;0r!~AaDZC zVSO%Diffp0hXlX8L}QjQ_pJx4`n(#j?(?k_%7D~?%n}7IdfC9LMuVnr(z~Xg)n?D1b{SIK@9st`5u$+N#`q5uK5Uagzh%Rn! ztnx*nyhi#LhThuT;%i*7RBng=yFn<|@u2|FTil2I#(G5{bNGIhaltFxRiVr$$c1WY zB0)}4)VX%mgg^Q}9O(YOkr%}?@pyE5XXi-g=VW~MvzLxUqwyD|8_~U;;WOcz*uXMdE5-*JPoX@@X{H5b>EOmt<874>1?Tx-Ip3aSQ z?uL$uADQXYx4YMSPQ=KZLu{+3sM!a`Cmr*>v96_$i7!UG336ikK5?`W`LzF3-+R#r Goc{xm>{|)| diff --git a/htdocs/images/icons/magnifier.gif b/htdocs/images/icons/magnifier.gif deleted file mode 100644 index 203174e443cb32fc3f0af6f137de86c28c4c60f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1073 zcmb`GT}TvB6vxkQrX^;Z?&@Y)V;{EZs-qID6w$io2gzgmq z;?qD64q>n*#SjrAnC#pE>v5 zp1y8RN5}>?cn7#~qc&O71zDH1yn-J+tLiCUmbhS6&8J0GRC1z%0&;VLk{NfUxlAgf z(7enComwt0XJ|>)Gg2R84oT#d~yeQ{5 zj@Kk!R&_qBa#@X+w45vyKIh+ty01kRfEK7TzW4cjLp_~6tz>H(fOS1Y({U?GHkn`< zWG6WlcYmbwBY`K0~<}DO#$#t(X-4%Y@8*$=zK+y;3PfGMj1EJm!O*6 zL>oz7D5$#eh%YP@-h-EaXnsGxGT3@^ zYw_hP5BcE3-2rcyjekB`-Eg4WSvE6UUEJvMyUTABH#D9(MfhtDS5#CUscNn|;lFz9 a;Q2cHa+mG&@!F?d_LCOz#afFOF8%-$ME-yP diff --git a/htdocs/images/icons/map.gif b/htdocs/images/icons/map.gif deleted file mode 100644 index dd87dfc91499e9ed0faa1d25804e8322b5bf9ff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmd7R`A?Gv0LJkbriN)|YQmEJ;1HCWjlu z$>MT;;Bu}7@i;L3g6qnKwe(9UBh8(YG9;v}Wzh_!Nl-B}PqHv_=OW6xK3hZE&B=0? zQA^qlMRIs2j}6sQOFB%-4#u0(JfT9rBBDK&u>{@r>TXc@&^@N$^$+BTCUUJ(&Y+TC z*Ke;^n()S~dNo%x;Bd-l_0xsF3^^KytWDDeZGRR__7{qWKyA;>=099`Tc%{TXsMen z)|7~~e5tNbs=YNbeX&)0tMgg;Z=){Bla*GTK&?J68?`(b8ylVAi&f}-ZM9riB~!WE z=F2)&@W_-Yr6Cz?9q+Ug?z=7w^zNa{VQW`?$YCD>RwY_ zpSiyGIo1pRJn$SDHcEciEE^Ut&l~uI)?Xp$s$E~EGfL)+4dYe?1T)8$n&v>I%CJ7; zxM#Qhh`uZaVX?!W@30p;97PT%&uK4TvD6?ozI~}eYqdF@ceY+uzJ6WcSrs@}+YnE= zX?X$hRM}qX5YKG{sY8)E1ZjXgizwO*A{G=CTRnOs3Yol+*9}4#h@lDyGnp|Hgo75$ zXvRS^ZnWUWH&_ddn_!>G>H}dPWb>If|E^hImu+l_w)|3pXd?*O7STZvUFZht-N3#7 zpj%sm*uOq}(~ECn+uP$lKknb&^aq0cL|~H$__qVwft|qa|Gr3KU&ujV7dQ?C+xr9% zwgZHa$Yj#F3gO$~(M-LZ41{X#9=S(!d&Z1AY# zlB#0-0?KmTp@@%ZmB9YUkl~D$53V;D@$rEcdS%Z$5ntucG~boW&B|EmVJtc_?9lsB9HpdnQcjObd2(tPmiMG|o~`tb zcj)EseHz!U|I!1vwe2Tw=F71T5bviYxlS+q7nMyEABDc{t^u?uu%U3&ZYd6q&+)i7)T7Rrz zK}Wslh+bTO*^7wlP29`tMK!_~14)jMSkMb!3PKnu*Y9?P5J?36;Q8I>_dL(<`QAOh z-vz^Gyo012?C=5fLGYmvAId4&tehc)kXRJyd^D?MGIAy&MuY+{sd+}Cvr0B15K%E2 z%|{7=;0wG^Oyr%Rf&Y-z+A8Ug*%a!+!r*&=>6U^z{Rnmq~`1F{663DUL;c zJaTRdx2{4h95h5oD$NWN#OU6VUsnOu23YCQYwex)#|XwEK>(8jMI8x)T{=%2Jf!ml zj^R)ap)*C3F~rEg%}$K@5%Y-mB@7mIo;Fz0d4WpkdlkfziLJiQx zIErCWlKBDR9=!qRi3T?Ua0<1dVtLm$l?HhJ48YmB>vOdLG))4?1G~P>v*o6knwQh( z2T-HYFkwD`%1@fM*$H613$Vj$+V@AAw(}TitN|z~YMxyv=b~)$Ai&?&#>W}ejYH6N zewyz7jn`7;2Ivv+06YuU97UgJAZ4`DI44%KO^<&C+=s@IM8 zdpyU>s&0MOe^{uxb^0FTZMWZk_u70l&>g-xl3tJSfhVKX(#xe2J#S0dqobh;Yi@Yr*ZI=+lXPn5~BKS(+xRtGZjR?04BJdv9Pz+8x!GZS}6st~(Y>Emr54 xwKcmAw_UpKY{YQPS&y}v%mHUdUF#udgEDS8W_4CJjQgzi1E%+Z#o{oW`~m5p^w|Ia diff --git a/htdocs/images/icons/null.gif b/htdocs/images/icons/null.gif deleted file mode 100644 index 4682c2445e3abd9849b34a55eda20b857adf3a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZ?wbhEHb6krfw_`m=HXU?2a{K>+|z`)3$1LA{Z7?}8a`d6NQ%fEQemRsGM?N}MC E0b&{stpET3 diff --git a/htdocs/images/icons/package_add.gif b/htdocs/images/icons/package_add.gif deleted file mode 100644 index 51753bc8019d2210db94fe42580680ba9d2017bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1374 zcmb`HUufG#9LIll(>XEemZh%al!Vz~Nxb0{C0RRV>53esiA#&$btn+-|j>Wz$JNVYCo8ty!@WMoRL6c^R3(I5?l z(WJOy$YL{V>yoKSwOTwYF_tdrG6u>qWW}gA8`vY;2JUrJ$(jmlDU@NUS&=fDRI|w# zDzD3=(V&p6+bU&i6mkq*CLG&9j%li#rDBhcYz>*Bql?IDB3nUL16g%s%C^c_3gfsr zmaQ?!QV_Bba*$C&2Jc|gtm}1BuM}(5sxwSNSB%o_YLx{B{TM-T*(0 zxqCf6?>{5m6X@o>mHwU`8|Oba1QHop34<5;{l1vQkuprV}82ial_?x zj}@0MvUiF;4ztEw=@5BR~LLV*ply01F=i zT)hu4dK2LAHvsG*fTbz$lRy14Jh9sAj?%f!jrB@SC>Embg`u}Lw<=XWmoK)%Pi_*5 zHGC)l^cH`)vQgrMXcFJAA})A=zbF(diD;^vKbDA25XA9z)r32{KO6|$6HD7WrSR|- zY3HNkW7E^SpG;zp#!&f2ae80(X-b+y*0{GotNMJ@k)O% z6z=@hpG@_RN99f_cm3yG-_Ex^zsR#)A0G_O)%%makyu|a9m>SEzv~JPy+1T@-`W$u LKKFfxAEy5TTH%Y0 diff --git a/htdocs/images/icons/package_delete.gif b/htdocs/images/icons/package_delete.gif deleted file mode 100644 index 9e96b17a5e4216bf18e8c1f382502245e86d2ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1372 zcmb`HUu@e%9LIl2Gj$tlXIO!BWScwME}(RC*8(X;;5Mjrwn~__khFl7zr-C`dQGws z-a@*8Tk&9NJOs3dY`_$u37HqCOna3fPuT<4uU`vfLIl$i427!Sho^jqOhZdiHRJeV#>UsgpGRG zY>1{Rn2oT;gRLV?+^JVtOXkc5Z`3)n$(tH=GL|YhR?}*VSPeU>Y^#!vf|e!`yY85Z zV^nRuVrht2img|1g|?Q7Rn_GnHma5`V?!p0G3204!Dt#v&@vQ^XjSmueTVV!q09&5a<@(wm_35a9q5@RG-Y$|%3u@P%XLE;#Wtr5FH zY=t-`acn|ttP8d#Vfy~{gst&}nv`{sV1t+y$E*;$Nh*HFlnGV|ZW7`+hD5MNDA}r| zio{miqW;%q;8&jqU=;>hzegjHQ?t{vqul6m0PkiJp}d!tIa??fsh^E6F0tLWp&Jf# zYA4erG$o325AO8KZJ@OQejIUYJvi?lBYTRpA%LfkM*DId4!WG`@Cz=#TSjG?Bf6ZH zk{QZ$La4ZKDnePI+?(rg!{t4ux$Rpj0bIWZ@c8hyFX#t&GzOrJZTs%M+7`w0*k;YJq0B`u`zh+0Q_P+g*WPUkS zOqR15*1a&1mHbMvgp%oOJN*AG3P5B9y;oe$No975-mffecov;2XNw^=T1X!a zvBx>?nReHZyShId=-#TX*49=7%msPvgO|qp``0&~UyL6p?0a}UaOA|9GpU2Q?9g;? zEfC;OOg+c#e{$%diR`hxI|7TTSB|~0(vzCYKehX{k!P937#hxG5=a_M&mI~YW8!nM zeD0k$L!r}$CMR=8`{S|s)Xn7ST{A*7I(iq+=cR1d(o95rq|d)#C>Pf~2mQ z`LOTv@f+3J#?7Y(uluh+?Zb}_zUEwH f*S_I_C&p42m^*_%Y;+wSxY1;V+Wge}0F!?JS`VWd diff --git a/htdocs/images/icons/page_edit.gif b/htdocs/images/icons/page_edit.gif deleted file mode 100644 index 9f6eb3b84768bf1b06bffce691c43e93f840bcb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmcJPe`p(39KgSc-2!P>Gdo?JZeI4IO*NZo%es`!?Y6MyvJSn}!O|+>(lj=OEbV$?VM7ZP@>zoZ0QwZ$hK7|AZl9@BD9GsO`Do#gPrC&uH9YmB>RT&_Dj<+ASZ>D-Jn7cq_&Thp^eX4uS# zP3KEF)&QrNnv)flHD5Rg@bpOlV`$Cy zFx75~=b4q#TSKhTOgvpj0M^}awI22Y_|5@5sl2!B5oO5B~^K?k%=$A+>-+m(T0FaXBK1LSqHC!4Y^Fc` zn(sn9zJKz?9mhP2+J);MKR>oH@y5R8w2yC$i^A(~ZrQ5yw>}MQ>pVXA%HFG~uXxls z+>zYry)!y`blp=c-*Ov*i^0^<@1vcs9!PTCsnyJV{$S(<|M0d$-M;j*KbU=qLp^); zJvqFPdT{&e54l}8#L#!%_udZ&9=fu_AKBh`dT1 c=U-fYIh6hRavp8p7%RPNeR22NG7tOz0F6+9BLDyZ diff --git a/htdocs/images/icons/resultset_first.gif b/htdocs/images/icons/resultset_first.gif deleted file mode 100644 index f0830ee7aa88dff7555898ee6e7e7c1c7476cd8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcmb`GPiWIn9LIm{oE=-+)va^2+LrMPq71|#h!5V&=ly=a_xmQl z-%DsT=o^mOzy_Ouhs`GnVvWwrVr7?%NTrIx7G$BUSsXK&YSW9{@0JL|Jy$h!W4Gc@Ei$ zscX}OX$wqX(bb|%h8>~l%ZF=!*#eXs;6oqIb$Hw#J!TFG0vPPbYftLjgE^-21RiMe(^y0(2e#=9z^j)4?Og}99tS|%BtUuaz_xcqD~jRxM&|k; zDl{4fa{!?JldA4@0hm?*_61e__FPr>Um%Tb04dEZaEn?jiZ%`d{B5s)oSt280@nFC zvH3UNPHP3g9v}gpg#jiT0mkkDJlO&0ehtvN3P7XYPYi?6_xabzi;cbK4wMO0W-?_T-F}6d-=%uww zXB_=Q>&p#8@4W$6XG^e-XlizuJ3JkhU|ZJ-tFzVZF?9!3QIr*4sUk$&JLL+eg2jr~fegFUf diff --git a/htdocs/images/icons/resultset_last.gif b/htdocs/images/icons/resultset_last.gif deleted file mode 100644 index 752b4e135f03615b41e7fe4cad5c37df1519831d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1081 zcmb`GUr19?9LK+#+Dcc>oH}OK)}J+U##Dk?7TW4=V!=%W&8Ka5YZG-|?yff9_Fyny zbP&M^A7+6Jir7QMUW(g`Ebw6v$$gMm(8GNUgeXdG=j;|jBtdlGocsCxIlu3{zjLl{ zi1G9VO)%jd=rDN-=|W{7C8rCDC05Fp6h14b@=B(tq^Q4aVkIYE@~35gs>~A8Uo?4& z;~AOH$(C`+lPt68vT2~m=PI$RoXl5pl9DYdY+B9~lw@8>VQtz)$c=I?}+cJuiM?-1L!w{JU^``g=gZTK>W7x+Y>g! z77RG7sRg+NKghB-_SgQr1yUP$+eK^bpZCXzQ6PeV&P<}_sK!ppA&vVf-xYb0v zSTIbOOt^&65ij8k;UiIvbCg3G7bwqjQMy+m?2fD9$v81S5yKOXBskIlDkgHgK$7&U zgu7@1$de3l7`V~_)NJngCKABYb)e0$=W|+smNB5%yXV`vRc(r{bu)3Nmo%CTo$)GA z_g+Z}FnkYq_yIWk3}}7^RrguF!Rg765ELU}8@({z+38s! z!3ViWHT?e;F_I*Q0(fWn1z|E86K#X!enp7j3_mAE1ea|n&YgGJdfe^{RaF;V=?{wo z3(^DL@3OA=YSY=1H~X2zbG@qvFV=7y1GYn#*H*4iRaTEZdCipF>z<|MjnJFL`i&*O z{Y%VhZ+9@qJKF7fXPw#H!ql9YYIHc74MwI_Z*Mr$+0tfhVp0vuokr7X3sbl5ZE9@R TF^*H$EJtJVBF^o diff --git a/htdocs/images/icons/resultset_next.gif b/htdocs/images/icons/resultset_next.gif deleted file mode 100644 index 6f845184673dd93f33a1b9eae8e8bcd78504fff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmb`GPe>F|9LK-2nv$q3X|{;f>}A`-8mkhl6tTLIt9F=VQS-F3v(xT^u8-N#rrRD= zga`+`NOV{WVuOgKL+o+rw1$U`{z*to&|!{&5JbuJ-b^7x(#0RVH=p01_r5c~_hw}D zT4Yf4!i#rc=8aa$HLGM;8&xZ*@01NINNPU8@CsFLysDMWXtC}~*1U1U8?9zbW>Pn! zTHQBo6w79Owa#a2zNA4)W`xwkq^^~%2&oCHJEXJ|(dt^sT&;9Q(Rj44qb<%8S#^oU6l*^YH-&ToAYXrtpR!mc-10f|b5u>bA zZqK+}Vw`fh!gx{2u(bx|aNbVm^3?fCok&_PNVEY=OqGa2i#!h~_p%1iCpC2(xN-() z*glBO6o99XfzyG5SkMQYngXf=2eG{yPE)w9?ZT}A+GuKA>o9QalWp$>faY~zU$^Za z4{dw@5!KiQjJ&jyC-Dxs)QRa++rsCN@7iuM~(V$xiy{CRNtxp#ZUY za!1K!vMN7B@0Uyk=g5L8DWJ|_QRrSEV@qOq3*TX>!w^HwQ*IC zCWdem*E+WJlKbcvf}5|Fw|Ft!xwZ6UQ|mg{`1U#Elap;{ds-#~9X%&j0`1)0 JHGK$|egP8b)Or8_ diff --git a/htdocs/images/icons/resultset_previous.gif b/htdocs/images/icons/resultset_previous.gif deleted file mode 100644 index 465328c51cce79feafcc77195c8a7e178a1a207b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmcJOUr19?9LK+##e-PPvXBm$+# z8$pcdVOf|##G;5j?s0{|BC7i!af2Rw6oep3ZohMHAw<$k9r&I5IltfUobS26bI!ov z8DEdcfx|nn#tDU7aa}8}&lik{W(bKg7b?sqsJR7fX{PyY$uzg_lg1iQN=eho zjFn5-&K}@zWBcdq)$K!IIzNrMf8({3RR9)&0Ne`#qxHbhRp8DipzR58-~|xc1B~>* z>HGZ4>|$B-S_0xka$FJBSd?cMCNMQIrKDw1ido@**Qv1#9SRVbl4q4anvn5RqdRrFDOAl`zJz0NydE?o>=!53#5iZ&O zyvg78XrrNh;nlIar<`!(_0r2X*+UCg)Xv#n*RXqk^^xpcZDZ}6-{H8nc)lN}egGFE B%nJYj diff --git a/htdocs/images/icons/table.gif b/htdocs/images/icons/table.gif deleted file mode 100644 index 823543716e654b15dd9cd6280f620c2719d3b5a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmZ?wbhEHb6krfwIF`iVRK7c?<#0&bkm z<&0e~XYF}CjzV(Ha6tB$=~ z14PGPtU3N_?eUjukH1=X;>Cs&FV>xWx$fkv4JTi2IQeSR=~tW2yxMx^#n!X0wx4^o z>-?)-7hdna@OtmX*ZVHL-hcV^jYl7DKlyn3>BoD|Kizx&`O&K{&)$A}_2K*LkKf;Z z`tk1b&-b5ye)#h1FygNvYo2D7-DuaQ~dq$SCd cG}u@|FEl;vnyMAFXhlrtfeGGDjSLLd0Kivt&;S4c diff --git a/htdocs/images/icons/thumb_down.gif b/htdocs/images/icons/thumb_down.gif deleted file mode 100644 index d2e54b015c8a7ee75f02cb138dee3797a6a15bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1085 zcmb`GPe>F|9LImVtGi{Rx%ppHW`oSb8mnTg{dYFtc6aw!Zi z!A22Vc$ku61j)S=OQ*R6bMUZH$sD9M=&;8HA%0OZy|+^ck#zCF@6G4;=e_UD@4e~j zIqU5RltL+d1Uhg&fw4GdGMLhFM!{?rXJj0e@k##dI1~4U-yXbEqho%V7>NmC7scz~uT~U;$_X zm+`a5=Nstax>`IftpL{5fFO)piNZug5=orBaB-M*tbqgSP1yh+6*~R?bKAefw>2Pp z1H5mhdu?C$&kQ3HK>$lR$(DyrZlXM5@^Q-7BtarIe#-o4AV`=PxW&N%AK^IRlCa4# zm8;RKZKTm;SQrkV@RMO|Gy*st0Bpt$i}wmpAx6@wWQkG0q{TH{5W%W^AM=cZ=>PAcs-JD0L_30;AuC&P!T}i9Ke$= z0Eb=zl)VP<7Xu7-fYtl;kD1NNudDS1#>Ym)fD{U{^uqWi$0x<85a2`k^v+FEXoegL zfNxT`E{=sqCAO2?uMiQO5T>M%=w^E&{9!lS>hZMaRo!%^KP=d9o_;8FyK7G^SQc&8 znmOjq(wX+y(bB#5qc^IR5AU>CO>e__}%#1+s;TG^Vl`t+yB`p$v)Z_WhS;?M!8bgKH?hd~cSm>MuFqEVA3mAN6wu#kM_#iqBA`uoHo?uy-PKkItv}Kp zg0A{vQltevMeHF$dTEb?BnFYJkXX>e=xJcYFG_Cb>=r^Ky?D6i+|T*_e&>Ae{hoW> zy=U7yyk#iEJMc!aI0b{0%~CQ$(Kuyu6phhPj7DN4Ni-6qWRfx&N~};iL&-FyGL&M) zDNeUR`8=iA!c;+UCx^Q4y9_`B>a?G| zg3#~ocDJ}%S^?v#SCYn!Oez#sWEOV}T^M$l*I-7iuJ08iQkTbbe*35Swg$F0@V1%n zwSC<`GZvW%0tP$F+5v5mfhDTeaZ$fY)BG;0P+H&FCZ(>59b^E|MrYTA!Snzs3vX{-au zusA7C6>3?vu><(uTz@%zcl{8!&hO5{fAM;_U;xj+1uXXfgC)SZ8DQ}faP%2qdjWW? zz(5C#?Vta2-K@g8YQZ}`HY$4+zt6!x7-3?3LXJpY(O*dK+@ScQ>`(w3-8Xw%c=^G+^!m)udsnq->QJ%CWUUnHWozBdTQerR zV6$8csivB8p~7-wp~hO}wv}40tILj}o`cqq)mCNLv%9yt(rzv>?j3&B(1jDf01tin ADF6Tf diff --git a/htdocs/images/icons/tick.gif b/htdocs/images/icons/tick.gif deleted file mode 100644 index 4e4b5ed3e4f509492e00db83ea3dca8a05cd7c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmYk5Pe>F|9LK-w&gh!|28P_h3{)gEJh(B3vUQbQ@(+s`4dr3LRhCX`?7_rruyI_Z z!xB0QNl=&vi6s`1P_S6Uiy|Z<-Xid#J04m*=?2p4&D+%+h6nFA-}n7}-uK6}cRsv( zuU~+GGe910IRAUDE-FLGu>Y+;w5)2|L$RHx*O1kOqP!1;*VO2?<{gtmi)wf|q$~vF zQCW>EvAw8w(i=*s(H%`5Z3rzY+D15F`a>&JKcsvNgjYi9f-<`o^-p@k2{pE(0XhH& zZ4CVhGO+uLv{DP{5NQ$9faXEu9rziT8Z-NjYt z6*x+seFy73{3^^Do2QF-P6>1Zjebk+!}r^5h%C@cIl0P=o;gR#f@sea$!_?nVFalD zX=dc~%+f`>uO_`pr4PjEZdw=crEk@8&oEDt1o43wAT-=gkmKCslRw}iFet=p%u2A1 zbN;`8mWzPOlW6h5Fl^|nPva&K&&~^Zy;!5EvtiVpu&~;xw)zi8!*rm*K4qPnYx(CkP(z4Q6M5wv7QC!F+zSeu5=_P!=9z0ohI`f-e#+9D& R3C9PwJ~@|pT(_&^{y!A=^q~L% diff --git a/htdocs/images/icons/user_edit.gif b/htdocs/images/icons/user_edit.gif deleted file mode 100644 index a09c161f71341190ec3e045eb04f2a631b23c736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmZ?wbhEHb6krfwcs`xMTTfWkCM(96KiXI{)K)OfT2RJgPoW)Oo`YzqqmaDM5nInr zg@Dc3u1YHYn~Gc{Yn=q!?RZ>5y1G30+r9YPz4@I&=CpeYc6ssldI+`ph)(bpnC{I# z%}>xYVgKY{!I=?4vm=Ds<24c!+vZ0IO^ViPOwo-^nHG^YKR2ancAR`sTE>zj<>eX5 z%X3XuRQv9$l3H2qcf3UNRJqpKO4aQx8ml^;OC~KpSEF&UR`Xn)-u4d9{at!{J3M#w zIGt>D+|%oHyvL(<@#co*8;;KKyfV>k%Dl}xrq^7W7Ig z6N;|Of{?^V{n=77d?|Qzk{ORt#ce|RNoD7|D@&D=*f8OtDetw|)`RVevr*c0Y zo&NSh#n0nY-knfLWo9oc@>cL9Kwh5{Zj%;iN8`Cc?vbT9+6V=QSG^LSE;%LRkL&xWO zw%!WJGzw@`wvFH7Gt>E`zmlCdo0mtkTK81N9F4D*Q=5o#n5Z7OJMYa3}PlWr!MX(^OoEA8s)nrSEI z?(SY@!&7VrM0}o}o@I7CUS3|_-rlu#yjAwXK0ZFazP^5be*XUc0RaIO9uh%8L51F0 zAt525p`mp?QXQWB;o;%6z8aB{k;!3x)j=9jQBjpa=F!p7F)=Z*v9YZoDlMUEadC0U zagp)y@fopU2?+^FNlD4c$tfu*naS~!qg4B24JIe(OiR@5OSaC<&7GB`m!F?sR8&-6 zUOq41v8t+SUa3!AUEQ)W$A*T6=H}+bHK8pnEyqhV+uGVrm1~`?R6SRtaj{nOT%BHj zfB*F9(`U?>v1G}TrAwEdU08B?QSR#1tIutowqwVRyBiuWZlC>XbH%}f2jA|fd$+6U z{hsC*N9Vsix%l0wWv|Yxes^~Hk27<=onQLx!t!qyR(!v*{yzmk@h1x-7ehUR4g(N? z;)H>Hc|(0ub4zQRp{NKihiY51nX;9lB_F4LU%iI8pboz-H^U5eS!Zh&H8$oM(lNbrNXckM z#VLuayBIb5#X7mWXbXtRn;O`}do}qd7z8>w*htj<@c5+2GuhEMCdFgYk&bp{PZf=Z YqNM?i+yW8?0S6oymi0F?F)~;K0DiFlzyJUM diff --git a/htdocs/images/icons/user_suit.gif b/htdocs/images/icons/user_suit.gif deleted file mode 100644 index e0333f1c60a54fe7ad5ddfb3fbc2e761a924ee0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 989 zcmZ?wbhEHb6krfwc;3ViU?37|BoJ*Xm}tfyX(d>x+rU7q~4z8d|W{Dz5>lf(QfgUoGGdQ8%0CdWl)#D>{rPs>b> zcg&yP8E-i=M&2!d&N4q=%hFXgKvcHUrebYPQn_o{Qn%6-ww3ER7ej zzIuaw?Zzdk%8s?09P2l`)NgWX*y7x{)un0M);Q<*%0;ft+kG21Pb>=dY}w)7y3@O5 zn@{_$3(;OaUHg_4h5B{v5AE17t1>XMV|!uKv`YyAA$*R{VlhZ4f zovU1Su6E^x`qdYk*IjB|ce!=_<&F)P&n_&vyeN0d&KnE%0nyEQ`|sS{(70#Ykyo25 zo^0=WyQA*iuBHvA9=+ew{Nm{RwMP%bd=6>4- zhL46#2Nk&_vM2ByoY?H!E5f?{#EOeu)l{TU<;s<- zSFip!xA5AvYuB$|zj5Qnty{Nl-@bkK?%n(M?>~I_@X@13j~_pN^5n_Wr%#_fd-meR zia~dH$tFd1aV6t*x=$7{AK}%L(o5}PTvR(THV{%kV7A3WA{JpcQzJ$D9m%$t*)+?b1^OFNTpJhvRo;rg2CY2++3kh&`Lt7RMPTHxm?ytq^42JyR?E= z%h{^RyD+qT-(vz?XwiT6aomvK=kH)UIstQ0l;trqQ5a9C3W+nqrBSA44Yg=6WJM_{ z_XGk1JHN!YHITi5_w97Ao$LOYu`5InFgZ!q88z5NIb`s8%2!ocB{c!cQcMgJCJwhU zJj4-B6RwLIoS_^tI7@k2iqf@t!fZkh#}j0tk%=c9NlK&vR7{m*g%p{W3AfV*kS8&< zAGmM~uoSmrqe*h4@ZL54)|A&-TDRCL698)YC4eejTb^SkGqd;ZC} zNpF8os543c0q+5uzDh(Qk)j$&r_(IU>bkCJno)?zvSi4Fm=_F*&?Q1sMTTLr*{q@{ zq9|rE89@+AYQ!*%qD&YC#*j&AHDA)Rs;WwoRMIm=bg4|S5SAoSktIbIWmzsDQ>20- zsxo5~SXB}7d9+I?X-rW|myCQ-9W6iCKTQo^D{KJm&|rS=r>LRc?%uXwTRVV#Ey}W! zc2r|3$#ck0j$RofUF+b2LssD^onpJf;fp)Vd|3xn8{l0tuC;UCA0w3<5(Kc-plD6P z;wH@F7N5p^jc0k36UIz4(HLShAixa|QHTY^)d`D5%;OeIm}lt(-m4%ECe7GH5-o~o z5sJlAG-?1A<7t*dN%jYbn{fls9T`6WaHbw$*V?vkECujv1>m56+t-9zRXYM8cWnDM z2g^;ddDl``J5ZyM*($pM93M?{(+}Xf1F$8S=C?*cKK)*)b>p98yp-P3HH$EU&Crv zd0!nBotzlwqI^6?;tz(Jo}A`VY?O|d!~bvM<7sp#0Ms;lotsE7JlTc5uQ(E%VrTd` z7a;qSbW4D24+c+`RReg&KP))s&MvWifx38Zx$W)nk;PoTyMgw#4r(iJjF#F~H=}>J zd3R|&cO?_2fxa{lN0pHK$^H3Z?Qa5&udOBcG})DQOz24DaH diff --git a/htdocs/images/icons/world_go.gif b/htdocs/images/icons/world_go.gif deleted file mode 100644 index 9fad760158067cc3366993c62212af446a88735f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1783 zcmeHHUuYaf9RB5x>BXe+s!1CQDHj{sQ_{L^Eo`vJB^Q%RQgl*as=|P-Gr_n1Bx>1RQD6L4sUM3yTkOP_&9I=WI?Xh(!b+ z9hlkg_xGFmX4v78A+;|XhdA5;=(NEOw3OSKu)!3TPqF4x0B{9S?4;_dCN(_fSj4ob z<5OZ&;$XwUrp0|L$Y_X}+;fD3IY!KNiRn?>r>;jG2kQ>Dh(H1NEMceIxZ=hXTS44$ z8FwiQnCDZ+;|>xoqOOKA8E%+_xm0e$_lRY4%O)0Pp6(|NqU(s7m?@58pp+pjottJL z^QnQEj?|1W3_?syv>;<5RSz^1rA(q{yv~#>O_`H2d|9g-D5DWw^OIOmEKk9h$3ze^ z8U{SXxXf9INtp&583JYel&BCE5)l#_@_-Y>ITff}p{yM63KbHB++o<^0pgzOD1MpP zJa9ul;1tV-!ncH@OMwLUh48q*vX2lb#6blk&R7}qkfE~g3l9kvR#+ey4>=OtK#GZ} z?yIUBcbP1tBIG7g97YYKI@H#@1Sumd5RNt$UEKfUUn$W2YhxY2N6=lpJCaWC8y*_$DE$fjm4k^j-$DyKQX|ObrmcQW+xuX;pT7aw8{q1;sMmw@ z{x;HDl!O3v?K0XvRl~^$Pt@?92%jujC7Gi|IA><_63Yp_#r^xz5_=N2P1P`p@I(#c z2%pGJMYU97rBKZuE=Z#y4K+VGos$AYWTl){lu7mT5^swHkY71UV*t-}0W>V%_Z^%D z_;e9q!!>s@2~< zsaEe@lpHGnw2(VqJh7T9v+Mf+{>iQ#uGYPF2@%g9Gjjh0uM}1Vh$5f>EMx!{OK9tE|1z8vXDgb_aGh zw-bbxW@5WLuJkOnbnJcg!*Yf=bKRNKZMSwbxNQwR4I6y@V$-^h2j93npBg`OrscHx z!`)L?p8sl7*Sp`vM;nF~y0*WGao_c1>}>PN!Oy>>`I+%JI$zx(Oeuc;S} ze!r#hM*C~^jY}6czj*0xtZ{0obL09OH)#&s`H@YFspkCy%@;aiJuj)n!LQH3lgSvI zg<*HBZRMt$-#mBg@ogV?8Pxpt`KGn+>={|;PtRU`YPOZWE8|bh{8R_=rbc-7cNa78#{d8T diff --git a/htdocs/images/icons/wrench.gif b/htdocs/images/icons/wrench.gif deleted file mode 100644 index 6e388b41340bd729a9c0c80d0bdcc86c1bed3133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmZ?wbhEHb6krfwIF`cTT6xjE`l4s;Meo{+zV(;=8!rboUkz`++T7e6+j*&_rKPpC zwY|N)qobp?e&dq+%}ejME`Qju{8szQhdnEAbgq2Z zz4md>x<_l)teLd&$&}4cr)+*UZOhXcTb|9>_H5R+XEV1yo4x(n93Z*l`PQvl=j?nw zcjxn+J9jSL`(oFwT}$`9T)O||o;`b(A9%Uqz^m1VUL81aVD;fwYYx9!d*s!jLxC&YuSFT*Ye*Ny7$v|_CIc(^$_H7%mTb!B*`tD8kQ+xe?jEB<5wG8q|kKzxvl1Cvxw{e0r5dH3`~+e{VPx3Wmp_Dfl2zw+Aj6} PjHnYaA)WKw85yhr8dnmQ diff --git a/htdocs/images/lists_date.png b/htdocs/images/lists_date.png deleted file mode 100644 index 6b8602ac5580734fac283dce16bc9e997602a8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ08bakkcif|m#q1K5-b-FR{Yma z&QH?$bK%T1kqwIa4NEMhvThQUV^7eVQ1j0t{*1r(ku>)^Hf2J*84k=+7aG`17BGUD gE6g`kU;WHuxKvN}>yfSpK(iSoA6 z%}^Mt&mbkt%e@vLj2%##&w z#NcQm4isWwIQsx-2QZZX04-z%CNV)CUzznqKKO-cGgY1Jj03d+iQSh6Mj1c($-<{$6 zuU2+G9%JutV}?jSEe2r$7KWRz85mxFfdn_mLPkbdvH;?LkTeHM10VnpK=2Uw^^*h# z{Qs}P@bh;S11oE!k-Z*ENT5E0mWlwwlefU&eh#sSnGsvMWMKIF4`SaBXb1oV5ZD1< zfSjMiMS%#zpFhP6zyIY(s4MUUhnO;$8HqEz`ozGn>pC!wfrc|NL41v?DE$M>?eBqh zeT6yzAb?mP9wMUf{rfi)7|*%fl46>6ZpI7_wn_}&{xUJ_y$%UZHX_Tf-#`bv`;G_! zfB<5F#|>^hP7FVP)-ZDNIO^K#GB|r0FmQ0OFq{Ntsn0-zm>41WE0MAH3+RA1-w`1I z5I`(gO6*_IcvfTh^Sgn8ktIY_N1N5g!-PRxf{)?)8wQ5AU!g(GNP4vea=`m<&|Co2 z3lKo)4)_U7vJ${}jt4rRl2=ZiPs`4PK}lVb;S*5P@%vC$GeJ@_IfeHxpuVraAXyUx z00Icz0m2Ob{_Wus7uS+7He`@dS7hMkU}U)c0vLDyAQmI1Xa+KJE=WBnvHph|01!av z4&VX>Jv%oK1D})_!%tusfBp#6^dHr7O2Oa%P!9lI0}w#y#y$Z?uH*YVw>Mr{vYO%H zffGR0zZh6JfNGggeZfd($qjB6AcX)x0HHeoSb#DdVPInm`1A8e?2D79u3cNPn&H*u zn;>^Hu&_~~z5*KX4=D-(0*D2R5_WK6WM*Ch#M^&<`jqxy*Y46cSFa1o*_behD#aNF#&C72HMKP4B-O=5DNkIZ-I_z2S&?^FVCLVUt9e=R8m)yOWs_ML0DP{ z6g$B3iL_7wB|r{fIDd!Q3=lwIiWTS@R(wujWV{b7_Y;5-H|P0Z{`vhU{Pw2H)X=myVo)_!WnkrIX88S+LCxj13w=F13xb?FSA2Dgbj1ELma>abpSvBfpY=K0o6#|m`-KmdV5fRhCh4di7jVESNZ zO9qCD_ubRi_O0$-&v1CdSzv1W#ULWUz`zSEL%4uG=3;|jkOM%LgX$7ck^u-Ha0tMH zhQj>43uut@k8j_TPpmt7b6(RLhI5B*GjIdD8=w#Yg$4|RqML;Uk_Z6;2$BX^p^1)p4xfPOW7EuCpJumiW4L+gDTA;O1A_oBk|S6l_5lPCI0V?)piw}r9^rq6 z7vS{4&SLi9(*4!*S~mS$FyRoxyVsu>M1T(A=Y}Li5C8}ua0mzhvydP^GYz_Aj5irL zS;K(MCATxXE*|SHUdyn0;W=PQ`X3lAkb(ywfLMUl9Q*y-FB#svAF12sA1%Ca{GOV=nH;c4W?}^hAVy&Kd_J(D<_!*hHs(D*GKT09fxN^j4s2Uy j0ZWr~1`d{8009O7G9(ESC-ZeF00000NkvXXu0mjf+G_WK diff --git a/htdocs/images/lists_firstia.png b/htdocs/images/lists_firstia.png deleted file mode 100644 index f2794f715cf21d0c51b56378ba949af354bb5e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 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 JPDHLkV1n{%KZ^hW diff --git a/htdocs/images/lists_lastia.png b/htdocs/images/lists_lastia.png deleted file mode 100644 index 205c2cc6d58a6841cf08a7d496e9034d6ca40152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmV-;1Bd*HP)kdg00009a7bBm000XU z000XU0RWnu7ytkRDoI2^R7l5_l}~6?R~W^A_r81In^8d*4T^#m6}2G5ODne z1ckPnQn!It5fZww*g{e$6q`UwQb^sk1)(jiG%BK13{5p!Q!xoqtB%E_T58N_aNfNC z*TrNe$xLQ4ec$T6%RQWPzVp6MG`5CssISG3{Le=mjP^&$85E6=URi#HsXpgZ`G=`- zq5Ld7zw@Q%=*r1ZyvH}Z))Wl{Jz`z`4B~J-FG46uvTUS_FYL`9xc$+G=qi-U-X%|% z1SA9m1ia2+_O5F<OfpVPGu<>j&(Ho*vrR0(Vg9#(T#C&T3ZrZVU^MFyZH1RR7ZZpS%?@ePRgeaOQ2*{Ho zk6S7ak9&+@(@d+_{7yI+cZgM0B?P!72D9bk@i!whu#b0B&$N2|Nei+v5vtG*7i&SI zJf=y}$QI6Sy42~ut=q&Y5HrCx1%R*yKmlZmWo&0FXJ7v7M10h07sIneBp3oB;;NMZ z)7-?+#BOWNTghP5CRP)aBpBjFV=I9y)2w6%ne^x<58s@_K-2*MU}1PnOasd>8%WQQ zkkmIqut^xAkIX5#gNc#^NDzx&S0rS(O7^;&=*XRN$BokcW{u9w*f5m@g zIZ$ZQRXIpB4;W@FFh5ys;(8@G5{+F5S=kh{(0KgGW%3u)N8;T4=_paN44ef3GzlYI z;NflSGyPq$?{m-7MFy$@Kq0xy88WWy(%syvoX!S~Q)J+fn&W}Q;a^TOYN8{mUEHW< zt;WHiKwy!YL6xMK<_rTo`prJ1`)X|mMQYXq0~k`oT;wG8@2Jn6-o=tplAv)AXcQwH zXDlasQr%{JvF$X^gC#6sg5#WvqhIWUV$9UF+-4*gmSgb)CwM$$A8=0ByV?wCRsc%r zA-?6tZT+Rwi(mh8wd{WwMrdo*rfX}mJ*7=F_e)ost_Q9F O0000- diff --git a/htdocs/images/lists_next.png b/htdocs/images/lists_next.png deleted file mode 100644 index 62e6d3689c80a3811f2946dbf409025db205da2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 zcmW+%c~p|=7yeiRluvOfg*2sHvXdoZxugZS%(R&C%cdMH`#@2~CN;-Q%UD7wwaqOt zEwIutvqT%ynQShnoOIJ%CyOX%!HKXhyC%s_rB-6=bm$)=icYZqepyiVZPKH z004_En?rY+B5~nhP^SBrqeo{<0hvhKP6L33KEFlz?@Vt(dRSC?WJ*H%5k?vdpv9*! zS;Q>|8Huc&EJl3Rq5G^L06;fv38n4I9AWB=Mv9yY=K)M69s;bWh>rjdSel9kkX9~& z`~6Izs8B_c9S6uCPV2>HsptrGmn;_bm+#}7nKoMN8O2^B~6!W~K82q~QX{SbyvZi66t(Krh;y(`hGaBQM=UVU}^*D`UJsq+qRl20r;+K8Rxh5KN` z4lUbmjryOplh7)~0>$u-eH5eFG|b_A2|(7)x*%*{TS%UB^9})2fWHh%sB(36!KKT# zp@b_{1pLeFMK$Do)+oP~KcG;)zWhLq;;X@+9k63-k3nstF(b8G`|e|XDmgNlTIqlg zT<3cTZV1db-yFIbm;yIs>woHz_0OE<7k+YDzJUBNY_4W&uuann5U214ijhM@DiG8t z;LnXw_@Dc);eW0#A-v3oyB>kS+M@-R z&X5I7`N-GB6Jl`FMy@k>+9np|UgJY8=3EUlF)XvB`_XM)*$8rEIH>=)-r}ypKy{q9 z5siwoA!uxgk|n+K)Rc_H`?r0zk-u{(BN(KqWU0A1SqDK(?VNzG44{9AlSI?ZIH&^- zhf%weBRcGNybRFIO%FKW*Ld+Cr(r8aRSVNZ=x&=XNiWTb$_c}NL@ZO=vX#&F*J|fe zF#5%8b@4e6EXrqs_cE4(iVi)?|Mzjcy!`+UFVgY|JTY!+(u+d0*=Y#&>=tqjx&ChghOAS# zO=OREedNta9^P%7xr@qs23t_IAAWF&6+_$84LiG){)FeKf9LEVD7qCS5MA+FCUI?o}Hp&ZOw%Z^MwkVQcV|%p(&Ut`9$bUVS&0P}QS!mc+%v1Qq241+>TXGyLs) zh03RAVn8piSe6w%k^wQ};1XwL1VU2eSc0<=4A)Ky5Vd0 z@!XAiw0GrjQK@z9`6Z`1_3&{(5|Y_Uhzjt>b2wVeZ(8T!N+Ua|(|{cJBvza(*N*N_7Ga#dI(QW=m^7nJDtETSkMK zS9>;h$ra7x(qmwYLHL~NTs#Ny_gyYjXB;$Z#OH|rSHW zUf;`bw>ze~XQ<7qG1ZACE8(+j*FqSnPN0Rqk=#fWlN^Tuu6IV+&&WRZxihcpnezEb|xlg03P!a!Zfap`*e+ilMnt4C@ zA3gSjJ8LM|UGrZ&5G#+_A{;)iO}iLx+K4`h--pKB0%5-ow0&lBkdg00009a7bBm000XU z000XU0RWnu7ytkRY)M2xR7l6|l}}7uRTPK6`{%tkGYEkv(~>APwA5l!3%12ll9rm( zv}%k7O*Jug;m)XRT)EMRmc%qM?SdGiP23P`2u4#)EQzhrv@}B-4K~6c(iR##6v`EN#E^qM>b;lMi_$Me^*M)FPgS(9}?&m0*0wenq$JCtcH(vhL zy_;*emnSI?-Z(Jvyh@1ya%;t)rQWS%j3l${&BXEX z@JaI*ntkjbAun;8a%>iuVVoe1Y!$J(_;aFIUd3Mq*y*|?@bU2Q@R=q_8I9OnFL@dkkf z{J~GmQco=*d<+g67$ib`T({YuF%6&v3TFjCVG*N;L8>`O1wJ`68qEkjMANdvYU9?O z-5MkT`~pB>GsO>FBb94bk1p0xqLXf>Blg?k{8A=tpH9AF`jXwM zyVq}NTHC*Hj^A%sr<{+;EFCw_a7WGDusY?mulrF8ZN1HVNp|YfW^|Qhi+Nm}=k|tk c;s4pl-^CbC|2K~g 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 diff --git a/htdocs/images/logo-xnet.png b/htdocs/images/logo-xnet.png deleted file mode 100644 index c071736d16c8e03cab6e625ee79ab0a30077eaad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8772 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 diff --git a/htdocs/images/logo.jpg b/htdocs/images/logo.jpg deleted file mode 100644 index dd97a2088baaf01370ecbd4811af6d3b5a78148a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3524 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 diff --git a/htdocs/images/logo.png b/htdocs/images/logo.png deleted file mode 100644 index b08c016ce36db109297b22cfbb9c70e4ba30eeea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12645 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 TEk#Sp00000NkvXXu0mjf_75zj diff --git a/htdocs/images/logoBR.jpg b/htdocs/images/logoBR.jpg deleted file mode 100644 index 1f50ff7bff6e025e7c3c2e96eac12221898740f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2334 zcmb7Edpy(q7yr&?mWFLiqQd6d9+8z>VjJ+I$izw`O)ea`v3&-=X2>zwtG^*;fGtu@IS0D(Zj z!Hoy3j{%kdVl!MCE{Twql13pBvI<&?3i9#_yRquqwM_5__8a4k49yR^lFf-ntqhGE z0*)L#;punM&(uCB;*58=tB;@8cM=d1g;GE(=qf7edJ&8WUjMhP-vy8`z#Z@fgD`*? z5(Gwq*1G^D01yLzSNmTR2SX(wV&8){2mmAo218+z5)$G+5;hM-kWq&^;j@!+66(+umOCyTUPX+=ofpm`s@|Sgqww%nG2m(_v8r6Xl3fU-`ua^~PjnmNl<0m=^Znqum-< zEr;w}^#9nLd8lqvPq7@zH0nr)-$IN1{y}T8xx|hh3KA>O~(=`G%-rHs#Ee+!}rHk;>!5xcc%)iY5mUie~?jE{#i3mVCLe%Ek(hKB5h4 zUC$Duh5RXd)h^?FON-1i9mKZCqZm{4?eV{0ZYGaW&J~sKRjNkNy(X>>wb1Ef%eLym@3U97$Aq*o*t+lH)k#Q8L- z^p!N{AJsa^gkG&9=ei^5q4nb*8?x#uy2`sjpDa4HW@rr{SFyQasu)jof-w(*WF zUPE3P*$ZptSiC$4`_>x@aKMoJHf8$iro1AkDpCqGhBQ|TD zlk(~i9VCe+K~5nvj+aX88l3X&Nd`5JAC>F@L&{&;@4Wy8JFvH09#&gD>=E|~e=sM- zlX0_Tk#X$)UMq&Au1po_b51Al%&zAT70zc2OgwC#2*d5=?cCB;)_X_lA?hTjA8aL7 zai#Ooq(VO|{ldHiP#;NsJ=U zTQ+?snM6tDJQbvGqj2i;filSfDT%<58do~Ow^#U(IvW3i(a{s+G6XWo6uzvQ7q>lWnmM>`7=C=GXaEu!9^u(y~5LpK-Uhyvu2E$3I?TH=Qf0 zMWN&n`Elsn(gV-J`*zg)E)wmMnlXs12c@Omb?6k6(!=1h{>Ghqb4K}y!a7iI75C!y z(hW|Zdb&^3uEnI7u~tJEY((E0d-@qjyoaArdlS!O1lf8F+u~3ua7R6&mPsIj;~7Pj zZb;v?^y+UvJ4C{B9s1Qu9SGX6&9OdICIDXiX;iWjd1B!Bl@73Fi+ z%i5x9y!_`!DsJk?dp9}{wa>@l0&piAEjD4eB&>7^JZ~Lvc-fqdBO2&^&C^|)PkegE zqcGR8gDqaYa85B)c`;9eIe+Zgt>SHUBHECDp%#jCRYcN`&{#3{UD@LRWapWK_u_cq z-7TU0P0S%CC1PiwTetUq&H=^tBC5-NEG?kHs{s?MZkOfYq+k7j1ikIcH=1u9CeX%Q zcs>_&_t~QRO5LDn#iec%e?<1S7=#y+t>1?)CQ|y7SCCiT`;3kJ@)MP@=qmThd z~+ zG-Gcp*N@p*uD}yC(oR5}de5Pu21`NG7b=as?o%>JFLNz|DAqj%)~3S`}~*y?XTFFYQA@nVrZQakFQ zPdD5#l7Y3y1D3vHEipJ7?sF*Sao$7+%eP-=|ZP#Y(QKlDb$1Cdc5F z3+N}7QOcbsW-o0d^>jtA14+*ZLB)j4o$okNn$_(gI->GWtKp()PH%vRHr<`AD}^3h zX%CNLe!tUD=5e+KBwc_ocb=oW7!X-LUtAJvapt2eC45*xSeEEF+(UjRFGxxFzL+?E zqoagpqbWPbS~~4reN!W{|3@JAS5OdnxK>(I1X8`t>1fSdBs01K-?v5o3Q|6rJ}}~Y zL*ka~BtQ8*H7-U9+g72!0-LU{Dw9#kC?%23HI0kXjHfN&^Xjn?_?6(p)5w4P{_uwX t$f!8LdfvF1*-tK3wQeTuDTIe?1-mx@R5~MT~N3tbr zB#mM;5o3*GChXri&lBM{&l2G$%L-c|lafV=qPTznfkv;j=5p^nXC7{5Rdo|U0}ucq zJbk;+h2F9WQ-&wK}|Nig(2VAUYUaAVJ3V?_JV606qKzR=MKotNK5CH&8(Od3oKrgerV>?(FGJQ8b-i4S6=|}!co}#(=UE? z0mKWhi_mca-vxXZ@csX|%)hbYsjI3gPY|3J32KXCy;l?$@SVTB5A*3UG!Gb#kzHMf z(H!>=d)Kc1`?cZl0>1N9m@gCm`ISpe(MyHWSsjih&Ao>w_aFR<@H>OS-~zsTU!cfUG5Jo&8Xz0brK@I8LHy4otnTbsq!W=~lgRnvr8AfLH@ z-;PJ4`Fu9$58qJuRAh9ruYTsm*PgR{V|#1!b;4Jbv;MZ`xh?V}kXT|&WHk52P?9iW zPz`UW@s{%$)%Pyt$3S6L`-4$)|0^6%ZePE4E3x+Vz}FuR0l;~g)eR*~hJgr>1rPuL z3F3d=H274)kRRT8naD_Y#}EiSVI2zP2&jyClGrB~KXB4)?j0R9sx}KkZdQj!NAtfVdP!B4N5>DJ7e4QupC7P1%*`xcbEONTSvVT=!O`}$tMBxC zeSo%Gv)Xe2K+1N%+#65Id76_4m{$IH+)O5rr#FYg?Kf2S8CGUcP$e{p&66Z^YAq+0 zveZa3ey*)a2yXgdD}S)Lft;pJ(|PUtb4O`;bad~NPiNnJ=X+_IDJW=M0I_ZkNG8wL z-a8t9rK5vUc`~mxgyQziZ|CXI8uNz2S2>ziax^JZ5wwXHs2g=b0U=EYF?qhtNqMEe zfBkBb^^7vsK~iTZWd~p^9UdNidH<8QZoj7zp;Kt#!`OALYZcmNdwDCT9VR9+hV82i zUwi^03^uDX0h3}KU_5QgDtM>8BmsWDd{e5!t2c0aqcAy_!ILO@b^v+p8!z7L z;lZP-dfPCsat{IO#(i=3{zt$4Y)Zl!7RTH!nGryx%v^VG%MgFXww8_WQ30Smhj3TMl z0m>>kr_M>!NL@p3n8mm|8cl!wn~yDXKg$MrPDF!#@2`IN{rh|Sxv_RQ^dZ#FRn9FP zWw-w2!;k*kfBng;f=@eHpsJz*s-g-S!NV@tDH0(70n82#^uZtMqr2r~qT?eE=HcfV zqM@l`C7@Tj%Ufc4hDABv6xj;ab6j%Ij!Sm8Gw$Fq?VC?S8)>LQnwb z8~_B7Nm(}D=Si}*HoUg8^RFL&y48>JP%Gz-XEPzFs=BI{E!j{0@WrcwFWQK9Ac{yQ z6k4B$-4fUM7gR93MYB>_|F3+3ZS`(mds;1eiU8pNU`a zH*EX+$HOKZ^wttiTmUGYRE;l7H=lWF@=M!qwXPTAc?3~yy!RrF_t|(nD$D)x=x{QL zmZ6}=aNf_0BHP|dPzp?Z7&Y_5dcObR|FQP3HZSi!DUD@gv;JF;juA!&V5WlLMMbo! z(a>;v^IdEEK7{BwdMiFbL~4;qSst8>Mzi_JY_>SZWY~Hsik`LO5UTk5*RNf9Rq*Lz zhHa_tC0em6AOI2)l7gnb+6kjU0!#?Qb=bP3dymAHY5@?PYAG=DU>X2|T0zRaM<4us z{-eLnhwJT2ERjPuJFlm$EbuEp|YNU)RG`RsZ(W z&!_Xb^PZTQ*)m(3AThHwuORn0Z;QHkUid>K0VP!xtVW598-bM3^tMx)#_X22^ogM6~>iU2G!#`F{qpH?unxe7B+9XL*Ym;ZG+`I(%Fdmma<|i#V zqgzq%byYSE0SH1C1SD{%0hAH8)`y%hRt+{fJ+7$nh9F@G3f0~{_wKi;E1kFSA*!N? ze)0L}*FT@`->YX+Rwxww-k0OGjd7AHAm;0QWw+=Lvn!W2*wD`Q=KjIaYQ#G_836z@ zr3q}T!KEz{WC2p;Nb=VJAEGKCF4PGU5dcCLLJ$-b0UDsA8oYw2=yW9cW=K|H)?ngio zObm|acsznUKb1J;dH!nQizZ2cfTV>G%>^tAOT8ro1&8==XOOD0Gk>Q?-%R_MX$frUt=aw zx$zD7-na0xe?2BQv+4!Bf(VF$58wh+03@wH<{WNRa4&$zmEu)25>@?r%JG^aFCwCX zqAuW5RE%y<0RSk?cx_XUNI_zP2NEGxO~D(jUER+HMPjCvt3e5%?b%c(&V{HYU1P=d zRB<$)lueV_bbXkA=g&8C%{Q_C?Hf`z&7>|z^ZB%zd36MJ4EzKhKmo`A4B%TM_-7)D z``PYqEBhB&yRP&`@O20mL_kG|2&zV(7-eB(Vn{ZF>8p<0jzjz_1@MXZ_+a@u%05yRCsHo0MJv=TQ;?bmGoHKK3ts$d;X_BpN zu6r#@HvwgAqY)z5C=iHf#k+tk($3TDdrh)A#$Q!HK#kYZ#5#<27uWRrkY(B|cNrss zA$Bpnc-Kp9!e|H>qiY8Z&V*XAP*osMs0Bzt002Rp*ZqTfFtARX*Fb?P*AOxyX$1qx ztg+qebcqWfArhh?Ld2GAo$-o<5W-`n?5nN!;i;#`z>7#B*%dTxO1$E<5mbYSbN$q& zmMwvymVF?B>S^rZGK0+)a-2-FWBRwnUEK7bD~@r9rm0HJ9_k-9*(@G)d*!!Ret zB+Q10i8=!gA|euAKl||18AHGriCY71Nm&oJ<%j|NDgoOhK*Tpqnr4}0Lug33wO?Va zl@Nf~Kwijkmu&+C1^n#eQi1}C0tpZkAR{p#t4)j*gQOZ3^+yCiB(%)d7(~PnAOz7x z+32irVK%RWeXT_9vV$(Jb;>#Vy3NZ%E&EnZaLkg$yT*X#i7|u*!4Mz-XbANPREf|q z=Dk*=V^@xyP2_jKuDuTm-Xta228|~JWE2^=-Ael@B52UI>@&tPGZS{n<-&@WT>)!e zgK$~+KR{?nM?@lm5c4(!P)^fex7E#B>=ZyDMraW6u1Pht@DUgUMgY~OD$}OMG$VpE zUATviN`T_qZ>CwD_hw1Lb-m8m6KIH_6L(9AM`W1DFf$PXNIZM(elH%c*Y_=CJgw-0 zHo)P6mQePuMNzwIA+5#Ny%)POc#e@!5a}$B5Da}t!2Z+)SY?6KLvcPMRg{;R8@%7{s$1zZ(fm8W$Gn@ zA`+Y{5>6~d_QlT-oVq&xkx9g6(s2)0aBL}76cr7G~bXDvBWj5txXH2_wdf6b@d$?>kjQi--^sEu0|{Ap)`MZM5#M zdthh!DiRvE-cK!)?c5)MXgNXe03gjY%Vjm#FQ~V8fMUyQiGhM)1z$kqBtw%$u@gDS z?Wu14Pt<*e`OaH6x3@N4lkuJk#0uI9zcvpcKm{OU^zzMc{Gn(Q6r^*4gl!TPoXZEf zWnw~u$_SPK#38h5f>J;R2+Qb!r^wj72ZMr$f+7>IxI9GU_1)Xq;HH-QMrNorIESnC z<%pdzw{Kqik3anGt((_hKYVSmUJ+xolcjtCF}>PsG?EfY`K}|1P@y7btI%tk5Yd)dH=tchYzkD{al+9BUKOpKxRe+QW59+ zS&SZN5GdP%{vAwmA3|AGb#1jp4{^oufg(iBrV%)iAQFJU;Hnl;P|ZG9cVWg?lSx_kS}%QyUIzt8tSeVgh+4~WPTISEbhiA@a? zBD>;}?0m=cHf!(8dDS#7&4aNaoX!?I&Dmyv(lzWQ2qLYB5d=U9($0|p1W{ZJl(ec# z5g<=r@|7_!aw^&qRy5<&2cZCH%)#1?4?oYZLi)D5|5JJR&Gm6Y&IQk`0s9}#EJrD0=^DGSfwDg{vCU{9rVof z*cqGex%6-EXP@P}cONB5)>8--9HOtvs!0s$h%-TM^oT8d)w*`8V-X@Dh!4TN z^s2!hJ==_{X;YN2pbABX%t1w%4I+=m^Ff}LAuwBJ69CJ~b>p#!00AM(1#nq!XiGal zq9D|D2UJBQgusM^jH|jDKtxDsQ6NBUA(aqBoQi+xiQCIjk6mK9Bw@c`%PJzwhL}f_ zdQhN*5DRl&@MzQ!QAnaMmluGiO+;GIY?#vpR#B!m#riH{`V;oCKu z*eV7@U_`@YnM^DIV8_28pvbuBw6)n#2m%NKFqylq_M;*}LL=VCdF(gKcpn>)<01Ak z-9Pb&*4U)37(o$(s1h3_ip?-0TIdf%x%1uQy+N2gD(VA{p~Da%61H>U%aLJ3VCIF! z1^~2e#Su@Bhe-&C@F!^%J@@K-lY|h8tlep5i^P-Zyq6_)2xN%JI9J!T@8y|*C~!3S z^=;{|9nUAzd%ruLezi+w%1lfgdyhd$Lg?oDaZzvvz+w~44j{F4$U!e@3$cboJj$z@ z(|DQi#df|(@Ih2{*tZ~+iZU}1k0({0Cgm&`v_#yvP&J_)SwzLIMoNkBhU;HH-q$JO zruA3SF{>WhRk8LW+tASz_Nr z_!gv#D+c4Mmp7PBg7?HsZ1;|*@4sXB$3a1jvD2}PCe4jqqHg?ygb;!#AkBoGs&=kE(TcNq|gyl z(GY_7A&5vjSJ|$ebq*2`kcqR@_IoLaS5;#S5>IDU@F7N3A|fU>F%VOpC7|uBKuzV{ z^dC=d{NGF8zq|hSv8HvDbA}mmpIkb+ev52E%dX6dlv-cw3eT)NRlEUp{j^3D(i!OF5yH)6(BYQ zIBhm=KN#*NUwM`Ca+MdtrS=|ZF#;SeuQyqWQ3cTJyIVj0K0Mf)1qoL#U)jApd?Vmn zwC>MN-{7gSjw_c2gMO}xh->}A9-qt-3v(Zcn22ZdG6W%7^e9vW5ET&>B}rO;kGN=B zLYhnH?YZ7u(p16ebn1f(LAwi_R?i>;C=tGWYx~BvO;Al!`_jjo&GQ4-R(zwg)5jzq zE3N@?&|iA%qOiTfPL920OU$CEfP|>sEMC+-gepYaYv$2dKs07!o07$R zBfWWLIP7Ogi0u_O$n6-OqN=qRzlt@K*m^QdOtEei1iS=4cXi_eA)Wzf(OO%%;`~ns z-{R^R39=Y>#U~^6BusB!8w~rY041hB?59a$pld)y`jIN2ifEA=m9VJG`ye7pOol-v zgn$Y@1XtCK4|2AZs{o*gD_`g<;h%XHYmL`ccD_zw*L4iJ>M zot^XH)NJNryV`Q_6*2G0@agJIy6O|_6nH+S_#}*<4k&_QN-Z|^^5XTTafH|_@^0{~ zWt(@=gdel*g$1j|hTSU`E=w`2T}S%yM|=K$;L|62@hLO}0ARv2q0u}@!02^nv$?1m zgQ-OqVsJnNXqoYAPX^|^9l~d& z-{Vm`Mc}KK`ak)>jalg}!`fP&XK7S9%&04x$NMhh#xoHXR{}4*bjw}9r>Y<-r$PiS zrkYntkITm3lgt6nM;q~(+@UeNxzXR;INMes?5=fhjra7Mft{rxE?X!sn~2noJuI+W z6=k?0Y)_@)_(X??XJ*UJPQ`wG(DSSg{QBRVe%&-R8|ys)je~v&$b7bpcluTIYgxd{ zgHOAdk7ovpA9MWY_`!1y|M8^5(*pY(#fS)LYHwWI+*(hGfe6=!*_~TgY+~RX`Hqi8 z^Cg51e3saXXC%Qhh0!PCb&h|03~H?Fr<-fkoG_jX=)-LayFFaq_g}fbnKmO5o;bOg5&G_OzZGS9$7x!s< zQSej|FYeR!N8tBw?}ihv6+F1OPumMw?K1LS+^6k1!^P=ad|uqA?YXJ9a)a6b2R;db U-w(rI5dZ)H07*qoM6N<$g1`|jf&c&j diff --git a/htdocs/images/logo_evenements.png b/htdocs/images/logo_evenements.png deleted file mode 100644 index 2fefaba372d42964429758e0d39c729f087679c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4026 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 diff --git a/htdocs/images/logo_institutions.png b/htdocs/images/logo_institutions.png deleted file mode 100644 index 27e42d482db1807a1db8352c04a2c8f9ff4a6234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6321 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 diff --git a/htdocs/images/logo_plan.png b/htdocs/images/logo_plan.png deleted file mode 100644 index aba9cb3748761245b055158f6e80edcb3bd6f9cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6546 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 Ef>?XdS^xk5 diff --git a/htdocs/images/logo_promotions.png b/htdocs/images/logo_promotions.png deleted file mode 100644 index c425ef3fc9c0d50d9ebb65279aab04013f4d468c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4378 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 UKVbcW+W-In07*qoM6N<$f>Y>P`v3p{ diff --git a/htdocs/images/logo_recherche.png b/htdocs/images/logo_recherche.png deleted file mode 100644 index e90341b762f040ceeeaae52d446b4237253cbfa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3437 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%0D#S4 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 diff --git a/htdocs/images/medals/bundesverdienstkreuz.jpg b/htdocs/images/medals/bundesverdienstkreuz.jpg deleted file mode 100644 index f94f175a368646270502e07f647a13406d60d265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmb7=dpy$%AIE>Y8DnM{Wpd`S<+7$|8p2#6TP2o4ZaGoSNDLK~+!A8sw%8VqnI4Q7 zt)%2BN~wfgrpxHaCDkbra`x!?<9VHbpU?Nt_v`cieqUe3u;Lw{L3g9M0U!_nfYt_3 z$N(2WMG3A9S5i@iD3VUC1`JlwT4M0)arPA+abFmO{W0DF1g99ROMxI1B_sK!yMq4T7LSiU)u$ z06+l9uXFzw5FDnY427&g8w~&ifq-BzB`6H`Uk(C8pa2YQpafs1Y2oCRoL_-4vTC@RdorRO3rDjNS zv|S5HvsqZuZgnjxbCP2GlS|T9x5zE^IB4oi%~7!I(;mJe7WH{fV20z9QRO zE2s}$rMrB)Jf%Ix;vM9rAMvF>qJnUeh( z9f=xX@^X99X;%&23)s)v$F!U3mIf!n=I*8W8aNpfnH61*UEXmHRRcqm?OQ0?cTU$k z_!U(aVJ7TivEEo9mLYOPT#LkbDmf?s<$${83bY_m)p0prBqs9nXzq9ocQMzVDA=B* zfAg)_O9SCKP?VOsLVGlCSQ~1tX|=rPZ$`%aVuY3Cb*n&=V7HenW|uP4^5T|`fg7yI zV*{Wb>6mx2fZRCR@+{SCg<~e{H_a_SIHSGzMgat<7ulK$HOl)&oXU~ABDR$5*6T93 zRFjpvthE%gPuYxyg~e|~4|zzOW!#^VvX;A{gm`Ho`zm#-=-f~xx zOaT;GaV&oHjOVW8{5HRt)8fMyYxXr{r>jme7GlZ7G@B{a3_?l4g(TA9@6*Br*0n>U zs;P9<$%==NJdrM)BiQCQ+}3sHMkfY)QoX{Fw^YDrGWrgy={dIhwoQBRw*>6hzZk7j;)*qu@z z!`B>@m*k8E%surx;=lDh(~prAN_n!yq!uq~{0`Bj(Rnr+9XwHcvcHIuep%C2R$`(VdZMTDAt^0|S z-+H&^Qg|-R)hC|r->mROcgj+)GyGX;8oRz(td`>r4OP!!GPBIi+xe*22Rifq9zTAn zyYHx;<%flLH#}sj7>diL#3+Y`^cn@g{o_y3)w=Z3$-y^>u*P%(jP8#342K7eUTBXk z^gHB|-1^8SGL0a)mM@1mSjCU{8p@iBr!pa=?tR+u1Lz{0WjL$3z4`JTSB};*8Ts7& zZf7r6rbuUhE< z+>LU!qzzdWO@*2MVOW6^V8C;4`x%-OFiDA-p0r(zj&raN+ zX$QxtVA_9gTkL}npBP;@<1t8f^^iYW^Y|w;DJyD(dyW>x$u`=%Ydox}(HLkZm%akiiF>GCt_f2@U^OhYdl7oe8H7AR5OCO}` zS*oX_gX60vkqwI^#bm&}>#dDChCGH+=E7RvV3A|;Z3Lr=Xj{=#LYDkR`+C+)L2z6% zk1oxtV|^-}Cb~=)u`&(drqP8aXAmz>l>MvK?%HN}f%%gm>5KogzfeFaVBMb2M^0+|opBAWPhe>hC#Ju($s{;z4r<(WRgP2tzZX<@a zJ>N512z5V4x_CdDE|){|tl6mp{ko>j<%fMEOVyI9qNw3JXJQgZM4W2~mZ#Uq^W(9t z65El^7v)v6Ij*t7+l*uW6T6*yf|=$>i-DspPjWvk9A$;m4=0*&X0w`7?5y?)k8M8K w`mwc|^z_bbZ=*8(bvGJXAO=2*Yg048Y)gYgMpnQ5{C?qHQy6CLb&8Sy0RPo-#{d8T diff --git a/htdocs/images/medals/croix_1418.jpg b/htdocs/images/medals/croix_1418.jpg deleted file mode 100644 index 1a218aafc27d02095112e71a17525ee43c646e67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5849 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 diff --git a/htdocs/images/medals/croix_cc.jpg b/htdocs/images/medals/croix_cc.jpg deleted file mode 100644 index 3d16ef25de6b704076af820b233abfa1b95a59b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6269 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 diff --git a/htdocs/images/medals/croix_cv.jpg b/htdocs/images/medals/croix_cv.jpg deleted file mode 100644 index ef19bf3fe8ac815c9b8ae8a8342bbeadc8b170d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6666 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 diff --git a/htdocs/images/medals/croix_toe.jpg b/htdocs/images/medals/croix_toe.jpg deleted file mode 100644 index fb9b4e7801bb2d20dd5c5c73f32927a085945724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6330 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 P3ZpU!{#^zu+%NtQ8J)q) diff --git a/htdocs/images/medals/croix_vm.jpg b/htdocs/images/medals/croix_vm.jpg deleted file mode 100644 index ca97cb3ed689f6c9e3f18d90603d8fd045fb3c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6140 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 diff --git a/htdocs/images/medals/honn_acd.jpg b/htdocs/images/medals/honn_acd.jpg deleted file mode 100644 index d3542869ac51833d2373308952f147e8e413f26a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5661 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 WObow4VdSMLBQIS>pefI(1z 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 diff --git a/htdocs/images/medals/honn_agr.jpg b/htdocs/images/medals/honn_agr.jpg deleted file mode 100644 index 34ff92c0c1f6493188b8c07284c53d3c62ecf0e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4813 zcmY*X1yqz>w|-$5T408d?vU;hkdhh%$)Qm~njr*X2q~p&=nxR31O(|C3F%Vl7`hZ` z_z201-+$M??tRW$XP+ICLkaGU+=a9fZzkZfGh|L0$@Y1 zKoG3kZlDqPs|5omxB)J{f?G1;WMwfkF7V zM1Q$=4~yauds=6O5D${?z9dqP!8kZQhNaT zOTob*AO!z?=I;%6qChw-!cefThbOM0Rdpw;2)RC92x>*iI+RV6g3{)t7>7!}Uf5%C zs@pk$81ydz0>}e4HwBlw?K02MpM?DF)|ePl&NJMMEoRX>3>zrwZA*ircyqYu@LVAM zRD(J5V^@d{GTure*TLBe-$BXVTh8OG(asgaSIOwway&mA#r17Q6d;sA>S)l2kIA8% z(&q=$HzyO4b%|L`+`FtITVYmbnOBx>Fs8jA=)T_QkNnv{QLI$bF8Tpo*}Fz3W6+m6T5vM+Mhe<~{2<}R@N3F>Se3vcLabCav$ zHMbB`Mw><5TcdhkJ0)0lvvVrL|JhZ7y@?~n)7bKRQUpgr(nc3%I5M`#J_a^g8h||L zEy&+_!{RjNL+4$39HpP58_oAp;j5LetO}8g{~`1Qk}~gWZZYo4Vjtx13?3@xFOtg|Uy^V8`-{WkS8*C5vd7HgVT)Eaivei%J&rTAAR#z34XD z>`P4l;Vst+f}_pa>TdyM%*Bic(%=@Dl-crsW=0%Ps&JAOztG>OOI?Z)B3mH>w1$5> zDU;UD_V^=<(zUHlkrNWH9*I7!{gxgPSTE7nT^~#o4Nl8B|M|nHUuE{yA(yQ6=V5+TROtKiXl40GPo6qc`En>>8`$Vez&jJ21k++{w4aN_dIyy~P_ z23bQM5f@2si6i>0pv6bl${oxtAP_h4Bu%=GEmcgU6bB4U_#Ukapp}yBiu@PtZH9Oh z_RQnUqb%%(c(-3Ts#u_ABkDqjhlUT8eGIC|LPlwm1uLEnd~sM1Y_g>Ish!Yjbm{ve zDDoCy61i&_(;mz5R12j2bSG5OJFtew5Jbv9v3T5dZ~afj1k&I&^4P5QTUvrY!}^Tz z0WQcbdlkYiZb)f`mZ|tI0FLKhf;}*3g-!1YaTBB!Q}lt zCVBOqeS*%djyx?wf#neo^EDt(4|Jl-po9sZ57XhVi!LTVeu29bU7jaHt55wNTPs`) zra{lcjtWUo6qn9_nqEkmQuVAnG3TKvY)mZbY*d%Y#u<#h1^#G)6*{wZw;xbaTC(zL zON-JXOsNh4k&99v0oC2zEhe!X<^q!hI7$_ocL)uT$~QJuI%Fyn=S(jR;%q6s1(qL< zr&Z10#EU(6JxSWN32$G!?tXN!tVVZc3#;hVUdp6Va;C2|4@D*r9&{n`y6rv;X4r?V zO6qRFw$YxBGvDc8MQbBwE!A)?-Fv2x<-m8>@8stN;vLlYqGO941RBU{dhtmA0vS%}aC38B6hzNbWxqnk6zj1XXoY&DHPtbB)f7g`ix9&ci7-E<;Ms`+dBti>d)X;ar7pn+2uD`P`e7?4AJXnqJReA{V?WZ{VaA z-+se0Idu#CJlVblX3x>SU%F0b{OJd$uY#HiNX>|-7i1n8!J58mmreQ|H|0}29ok(L z^zGBOEXerzp?E~Y%%_j4dPfEc2@TjZU2NfSN>%8F5{7CSbw#u>;cxCSy)p1=P4xG| z8+g+3#sqE`r7ZlA`gObwrgy^cql!sHy(Ya}#cshp4t=MU6bGf4>u4tMqvwyhdfjx7 zpVd(o{T+_A^EgH!}g-@@{sijlDUqAI$$!%=7(KE|QZqBa}v98$N za}lWeC*61xHKmRkyn6V{;VB!;_wYV?#J%Hyl^-uk?Pt=wyA%;W0sO4@+1?{oE(=fM zuOe0NoLHr$^T!oSF#28lBqlKuUNQv*G|v_5kC{qz8ZsY>RJ=9IWIrlPQ~*3`bIVNN zhP%rSrzBl)=)+1(_ea{WT)587mj_Gfv2!0b+Z}lI{VHZPlMl%<0)6UA{elCEO)eCG zd$x^0_<0%r!NJv)+V|zV4rxho0Pf}<{vGomz;b-Ntn!S@wT29 z`9c<$YUacM8snF6eWk*eczMv;A_-?Ade(bU+cS*J2z8^WKG#}?iqI}{q$^8zrN%RG z4%|EXH#vR26OqtVVep_VX?91v6oMaADjI=D-B|0zFkCk2)vLVHfzZs_6c*1-WBwd+ z5lve`@sTq)WN%HMt00@wUM`OUvhyheOTPpZLkk$NolCVFov6+Bdi*2(|?h65!o>xt)bE|^5I6m7@zrR%6#{hgYu5hTDjegxXrBH^1*tEcf2G`Yw zEIXQPB`OLLQQYSMp|fcgiE?Diua+!ZN(|B@g0GCN+5P6NG2Zz1lE~A7xqU4R@drs+ z>nHG~wCFU`<`a9BQjxspoYC@&2OFsMoaD!|Yb700xCuN*l@^L2p8~$sfg=aOli8h7E)m@3}67fbzKXoZ|Wq z{ff)db$RIm<|ttSnMq6`H-S7|GD-kO-?1P)S(}`edeWAX3S~4hWVEpwqU+MP%d5{v z9R8**h-}AVxV5YPP|@|JY|Zm3o0_*EiDug`3RF^wP?IQ1&?2zPQ+d!xN^A<2(@Z!M z5pE&#(v|;(87-7+iJ@Dt+%o3xbFZ|5x?VRwm}I1qq%TaNjc8%M4Dwl)on+||mw?=V zz<;{LVyVT?eXd-wM-!oNiuC5xp#WJj^3D1!GdFiAdRt=S^PB_*Zq-VD-ap9M9#SOE zIOMhVe5I$_O#fm$-@@ZbH)}FX454n-|8ZrK(MBZdyeNC0R^Klg`7)Rk5=y>uvR!x3 z6l++?OCCF5x>8WzXKCwc@)YF&e-KK*QMcu6S_V?VdAV-v{?($`1-m8ll($sIe^noL}3ohb2Ce$w0A}2*?iCB=gUL9O^0v=k7_QWb0mH6ls zuv(m(_JXgGY~am(N1^*_DhlZ!v5&gfnqj+*Z-`3pwb11hIJ9#nP0FK3D3na#BqMjW;{4jB`0|t6mZ=(qO1C zygb#T$S~joKFoF7b9c#MU!*l{XTin%)oSfL=@AXxrDH+p*zdW?7!@~neilbs=q`H_ zxBQftdQlxx5dt1nyKLu1zlt|@?;^>d-P4FQB$F)uhf>4##Uh_r|NqbM35KlT` zM%Fo(xNQ$-fb65N37I$;n&Os0)&*iq^MHM4Qkmyfhk?@zj45J2~vkHus*-_%xSS)bD>Y-9YdQiqa5_ zOeqT|Wkd>0X-3W=lKNaNlX&DF=o)3EvKKGL2~5?vK9PIl&*Y@h;(82kNZhpQ``mZJ z=Bn`cwRJ2jEyg@DYX)h+pcZC9HlEPhZ|-K%8Q3iGsdBLYOlyh#(vkvY9ll2Y2);>9 z(NUwx(WvBEvO3Y5E2fgq99cE6Gqu^WV_&+%Ejg_b*WO?DY_iU5B(e>nuwZESLDrQA ztA8AZrONIxL(K}7zcD!6*k5b;Rad!DhdRAPYCt~>Fmi5%Y92^r4Die+uu3!H&qqyj zsLb-BAHDFYA4wQwm!#qK`D3PZE%if9c^sU9W23BPSoPU`k{qENe+$f+5ReU%_!qoIHB-bM;i_yOEJJO>(Q4ww|@a zeMU`6gsEf=Iu>8$MtHZLRT~AOkM_o^{7@8;l9cTy=`Y$O#Glb;(S-^T@Cwi3jl!`X zretvFCQ&|7!-Wox`&Y%cqff-!4-3~_s-Fd_($kJGpZ+12tMkMZ(pyL3aze~1j*20t4*E57knjkUT)Z&aY^ARX9p?}jp@4dFrt=5 z#O&Z=pd<&lHw z7Efc7jvphE|DikMyLn-=vT^JV!F_vwm$PT}eXr&7jRxbxAG3XKuH*taxD+O2OoZfm zzWDv2iT)oOg)V~}PR~4F-CQ?tng#9Q^=DYhkM2s=LhJYr$S{@enc84maCW^fr6n~F3PV5Yvs02 z1cSe>(ulxO3mxgpTIxx?{pne&>N*kce|R~)FDEq0!^OZ9AWx4K#$ldkfw_AO0_C%m z^f=JzlZdUKl1crH8#}2N_wdoJ`Oqirf~HJnbTr07I^ z8J4m~WyDp-?@5I{x4rc%UAN#d)$fI?8f^sUL}GsrOyvDkS7$n=zrc0-`Gx9A(l~9} zE8m%{5lgPRT*)Z-GcY#<9jRWO#vaDZHQPbp)@-$~dKr_^(bZr-BsbE=#P=sgzGUQa zp9PB(M{e#wVPep#hVqgF_iFL$;~*eZuD=7+Fb!=D07L))_BR8#-UT4)zILtw z00>n;F72KWQ= zgdhk&009v~K-WD$4FC`j-b~Pq(EosxjFBz28B=CTq`!Gyj$K zplS`4xdyoRyOdjBp5a^gVXGmS(EP8oRWz7TbBZ$r z@p{M|v)a_&0RpoTHIgpS+LE!7$PB!;g?5WZ!?geP4A$cs;FQmGO`9fk(q&J=M+rfo z6lI?< zz2w~cpV6z@q>kM6X!)UOot1JDvbTgyb8Ux{aX2CQBl78YM z3~o<`fLp^u zFlaLQBmY*VU$^*8X1RM`_t^Ixse z*jPC%@qGMMG1lV;Kgma0r97!oD1iIa6emr7I34S!oUCssV*8|rpdnedffrPhgYOyj zlNWXRK#?wXFaB&-J{#eH6- zw%yOw${=U&&J6YqPqV8+Is<>9rgu)ZCu8tUr!Qw(ynk+-=KeMoUL(L%Y%sZnX>c^N z|A58Cf?Q$cD&V<}PGr=3* zC_4k)ktk-bt*O-ugA0yl(}fwo*lubon-)Fare`sPSlGk%h>Wfng}C>GcknnF%ZB|r zcing#f^n!^Nb>7J5t$?mk0#X=MK28OL{zRbCKY;7@T~oC*DHUoeatUUxs>NoIgj?r zrkU+1`AJLouCsR{xO$h&H>Cwvx3fmyOekvMtQH#!AK;#jO%Q0Qq&y!8GUztzcP^km z#@Gx4nWEh?z7D=S z#LfRmF*-lOOer>%s4xJfku>w~hVZ}NNt*2!xsYi= z_4r~_;K~obrN^55@{nZGae;hB7!6ZBXg&)IiSiyom%!#K&7<;Ee`p` z!_Z;dbRmdkcd}+e^<~f*TQK;^<)LYrzg&v2+x7xxIZ@FH}391@GLG!DnQWyI7sxI)4o`zUX)R z5axW&c*(*nor{2W!I-0-A?y;z`JO!Cj^ZOWxIl*oOI1oX`FlK=6I6Vyi~6P{qIrl8 z0g={|82!TGi?cnO#_)ce(`7|+5hz2u+WTgvvD9obX&WW_r3I|UX%-?Vhg}n0)%~sJ z!MJ;z8w>b_PX!wG#DbI3p^?~5wH?Do+3e^>w%bLyYGHmiEr!F|IZ+3vF!PJIlkAg4 zZK~D&rlW?QWF1>DK-=eRq!2x+VjjX1B3xtOG%$;h{KMXVAchZtc=NJ)l?85{2G5^Z z%@;vhinE-X&0TbOr<*=#`)quS^Llm3SW&EQ#*h06+tj>xB^NHs!kvbayTh5h&fMN3 zTu;AV7ZBIa9C927h068lvNutzxMO(VAp@?rOr!84X^A}6@u?p?=W@hADzORK)L z;YB`R@S;Y9vgO&3c}__=Qyj`u;z(Tvqd7|agXi*9obqI)yL(`H3g_eJb|0G0k_lJo zG9%b!?8GKEdZF3> zM&c}Xjb!IYb4Y5wm<7DF!>Z6dwUQw6a#ZLUQWg>AW8hrn@_4ZeDk(xqK~+@w{=6JT?|E-g~e#3 z1{W)z=IWE0Dy=gmicFZ7(O}cu`f79k+sn~-3(OFYVA(AwLXHm(=U3J+b3^RLswX_62HccxBZ@rX=mGt3tR3ddzijk{5)T*`O}}0mSaX}9p)#q&aZdLl>1`t!;Oa_8xAf0!jQOt?$JzG3dUM=SUmu}Y&!|+S9(y( z>*Nd-(C4I$WWiLmZ&_)LRT_TYc?`)A(O*ui{acC|$;HTh%YHX@**k<@#k1zf_Rgqa z3WIyvCjta*QR;paXyzmM0R(R;!cT? z;kuEhr7+2To;D6ke54T#D;hK(lM+xsX2q^h_m`W zpoMTbEJv$Uy5#F=R%Mil>-L_|?mhQP!(|`PCaCH0yG*suit8n3fs%bg*UVF!W{FW235rSP_k7!MfFY z;bwY)y5F9*qFh)krSGIvH9U_~zT6>cuVdW|%f+8fKJ68pnjy)u6jHWGsy4Bj^B2o@ zS6aTNYRl#04+{^J==NLHpAptprnjel@-Y_VljrMp=);u5rxtXOT)_jytrJ<+13pA+ z3|Au#-?H?Hp2-lNl>L}{LmtGxl>?UzO6^bj-a0_TWIncKtV3A}SD%VfzVc-l=6;*r z$g!mI$UkO)-nIX&d}^9@qgJZa0R~s0mS&&>VOF2{Jfi6t-tYh`cQHtqM<+KJWk;|P zpcl*CLh8AVxCU-l@6>Nx13V(97B);$o)S`@oea_zed$WdaHLg#Ppoq>48MMCF(w|F zwHl7Bnx1lJoQ|*4xI3GCpIwTlDCEm-U?xm!U0_s5D&iVYc$mL%&rdB(V7}e40RK2= zqUffT<=5ED)|Q;-itNhI_xja1rSFMxV2x)^3i(}WuYtL2xGO{k=O=2o`_;Z;dZ3tI zlsOsCN;Hpu&X3)mYols5rX^j{94empgh^e+Ety>9_WV{zEfQ6nKTrLYh3;x1Pv$6t zAOK$nWlT#dAEg9mDiI&W!*Z%#qqLLTg%-V=>RgJD?7p>tx6c|2=w9u{#0wBTvrJ|c zwN<^-D^g>P-#wefGy z)tp8;{QHwiVqmMv!xn1($&wt^)hDUzN3V-tm@?7J`HlXPp~UOx;AGCA+8!M*PyhWq z5D`&)e6AEsBOQ6Q*R}sjLBLV!8W=W*Qkz{}sRvmJ$o@FK9lf+HGo!mE+ZYN~yW`LP zAZ3)}SbQj(M*Dcux>7eoCT2VRrw2l?kW1bKyhLx)Q>|O(C?0-iuVuWEmg7F!NP$d} zRP9*JC=6GzeMLYU)4!FdS!+8=-66OTyA+#8n+H}K@L~JJ*P%2Iuaac=5D;Ld;4Yp7 z`Zy{;*Gg8iR^+S`hhW=(Fzs;fUDAb%Bza9wz+F!sRrNHSw=iGJtkOD%MUKaGY|OoSD?F7yxJsxJtZjDl4^WYiGl_Uw zrtFtivWQ-PEmB2}QslHVRpPyjs#_wbukh}3My-ii$#8!*3^H?qV#-x}Lwa41$*vi; z7ST{CtOW_P$%?`FUZsz595jjr)i7T@m6?D(gtSK$A281N@d?FZ*V$CmUYX7yw8q$} z`)!Zug*s)}BtyjU)^y29BMp5io;^r6*|oZLrgCn{u3WG28uT|kmPeo`SK9){k@2u0 zlT*kt!HWyJcqn;|kmrt8bAs4zJwuzra z{UqUDqr)7h_MC45L%3SB{nKtC+byK6uF2wtXbdw&vf935gR#`S(J4GZCh3B9*polp z%%Aa51pQa!-qOBSv(|gnr?>MFCe+_?m^@-n4r6TTw8m1UxvdfIyHMU!Mu=GNqrX~8 zlI6?Rc6c)TUZezvIMl-3QfBC!ls&)YZ%^bWsoh7rXc2)rdbX#gUQrLI1h8a7=>mek zC#3g4fS&Mmbp7i)@B?A;>6WbyeQB6il@PWAY zmQYapl@#~FVfFE8yw^;f`-@h})|mMt)g8m#QC8E3?3!&FYSB6%`?M6EBL21{X7+Jo z$>Tg1Kg<`yPEul>1pMD%+d;j)YoOR~u)@174U#aDxZ%vpJ(8yON=rq4_$jpo7%wGR zZ8#2h-D=!UND6^Ix>as87}QJuLuspdEn1AJ;(Y>xI-jYK^WDInvNP^dJ%!V8kJtv0 zVFyWhSbFoc^=0|{E)rYzV0fdKhjX}AMCYAa=jBjEiQm(!#j@`d?|2wxHsIN9j%ME* tD|(F^KB5gxnf_Wca$ARvv>G02b#f{X})L(YH<3i-3Zl$4a5j2uis0j9YMzDjeA_7c~w{af^(K>dH&|N8!$U9kkErj=|LBrK=EaR6r>=~W%v)sDJZXisQ^+k5D5qXk^leFX^Go@-u@2@362!Vsqf=>-3iv5;9U!$}42o z{(Tb&puaTnN-&WBBW9!sjLj+I<7aOBDG3j1e?f`1$YuIH=!!4DqomsbQFaSqQN5T1 zs7XPWy_3=d3V?S2tXc1%q&vNvto(;idC^Sl#DZ4s)pTj(i|^0W3SdIwHJwanQ1^)X zIlXELrYZW~moJ@sHjK`2_rrkb`W*!_i6Y^0gl^q(6n;ElvwDqH|AI8@X zwiPj7rkh)3#gqW4;oD~(9hnz^Gi3H#+VT^B=y!Q=Jc#io_*`?^+z6z7o zy`?sNC12RvhVsN(JBc{i`&v+Mx^Ttz(HH<#qMFn#&zi|f$E-eKJ1sr(?-|Yms?T(cU%EDCo$K=fQ|9Y9pkIwYWMuW zcTU!?p@YSJyUgs)9My+`P8YV)L~j zi^AV*)2OM8Xx2C)PzVO(RWw+SaLZ?`=dFv}r@^P}rx8g7el3k>6*FVQi>6$K=hD9? z>(?7Prq|o{S`w1tPi3<{1-Nyq1?0)Otq*5egkM`UXa4rm9Uhz!wSX_FML2bw*SF3^ zXmLhNTmU!ui)I)68~s%Ld@Yq6+-7C}it(wHxVqqA3FIti!@22kx~Pu+Ux)U|MW7ht z3m`i1?~Hk$;#o}K{Pd*dujH$SOv}f|8`pIaXqJ05{E;+Q6wO$AR5oSKo02k>mdQK#FPCI_uRCdAM^Clva3w=qPQoD-oK9f)<4RH>>(I!!V>lUv}C?8@~(6YwszGseI=> zb+qPaH;McH=gQIzDyXq1^CCIFU)RFOnWwC+vTCV$+wgRTKX2Aa;5v6_(0zSm!dP;v zvU_68*3Hl94~5j>)}Q!tOx>Kc<_h$rOZ_FM%)qM1fPjk=@8YoYC$)cO^F3^Dv0jLc+fCHu(uou6^f2V0TOvL;Nls z!*i|HjHs!#K5d_hQFz3uc!SOC(8+4jX|>Cuhw?3X*m!O>aAh3!JG*44VWsHtr=)jY zq?o%CbT5d4`b-By7r+r}!pETL@HlVaz%;eV$>>1*K~|xbaUB+^-(cV5KIQHN5kb@YG>cHolsbqI5JcBi<2t2! zJlupMBYbNoK3cjcE{41YtGz|__7I9YWQRpp{=VJ+`YfbIa(uH_6lL8WYHFX>XFbBe zM8ydY3d~1q%@fD6Os6n4ANeH~O`7)`jJA@VEd|P2S!O;hb@q|md#48N&8``!J*yS< zNxDs>4la|X7H`(wH<(mlvrBz_+6gi=aKY~8L?3RiB1ez!mpeDwrtrWPrmDFnsZa|S zK*|kMm0GAU{e1EH%)ShTRguS21^;5c$5-?pm_rn1VX2vQZuRp}FnZg7a*`%Th_|+S zLcHkx>D<8_>fIHVFCny_)wT}tydk!o0kTi|W*__xsBn30{35BmvxK%7s;v$GzIXF| zw?&YbR~9!7d{Ru481#S{6D3WIo=9~$)7e1_S|4hf?r%WDGD3gd=BWsJ{Eo}wm-Acw zs(w5UyHZ-^&7hWHQTRDkq;R78Oc9gZ@meqA#eB*nHncs^R!jM-QV434azE5JK5M|` zw5w|8c+5oh2TMN$uQw&{$tvG%m6OPJL!j<8M|UBCR^2W9*qy*(fOIOoze3aACF8c2 z-lcNG+6}t~cAjUpt`Nob)DG>OoO*7Ir8`bY_Dc@)wv1@JMY`jJEUL2gbaiwvseaNO zBUQ<@w34Dtn$yGY>)5gzHGc_mDhi#MY>ls9pEE9gLT2w*?})PSkO~V&71Wl}o%9(d z&esY^!xf1;JYH)>IwOc^GTI4@;`C=FuBB{F%{QRNm3_SFFn;Om8DaN2Jyu^cb78uR z3!W@`qMFCs89UEZ^J-^qbIM0il8lQKcwNdlJLAr~zo_*O&|o&fRF}%vw&pu#h7k%zWB+?4q@7V>_{k=5sH-mh@mW)~~rMBet?Y zK2KLi4xoQ}ACsaI-U;2AS23?0w5U$BRI}xU!s!4cI<^#`0)4EcXcd?KygK}@0s&Fn z6wTsoKi-z=bJ4VZlBpK;WYJjkZ!Rabu+PR_{Y0hk2|41KFU2vURnM!j!KJT(U#MTa z)ZFIKzdKg^CtrK*a|<3!NIV6*a{>jo5}xD`oa2;A@ciywSfr-ydnTeK!}tyqQr0SS z)71KX|5ox$X5Y(KVM!wB$c%3$aoiL6oyA>~hIobv2OjV5(NJwNM~V=-93&qP#r(&& zMg6^<%crv9j>L_tHIGq&{uO`H?tIvyE?9KR5L)$EZ+chv+0f8hYMxL&W7{63j7~t1 z_CL*2Rn(-`{k%2LwCF@w^)unVr6BOECHe?iVVc!eE?DtA19#W2iK=!{JMT?o^BKZW z9$;*Hgy9+GN!1UkAI=wyax537h;767y=S(U!asS37qdRN@9`*N!E1Boo9d`!@d=(Tgd~RV02%2|z}0xz5JP3MEe>Y&(Mud;%|Q^u71&gUhK4s^ZJvsy8=j{+iu#K-CFK zASQY|?+6&@!6-(R9@f*Bu}88hN|~jyG*)SpJvcKaUXGz35{EfTl99B}yOpTP*6Y!1 z@<#*L!jak^BQh)PlzDjLBdiK(k?**n2#D_XW%6jbG%;RPtZ% zwKPr*3c!Qc)N%Cw_zWb;tV1~trwwbl2N{FICExZPgjlv~o2N;rO$Tj8EeLpyquIl- z$t^z5;?{s)0?Tyk<_FQt{%<&#aIfsmXre;vb6|~w)d_h#JZFqnUqnl{<@0T?NA|xz z^|6v}@MvnaMnsFlSrV$4tB3BzU}BzERC(UFivYpkXx=hsMn?u5GM4^Ue|&bpb%-aSZ58tc z+iE4-4{bZO|urr$+9rRO%D>L|M+8d){v9?ZE zc3lVAl4p}%Okg3DEdGi!qp9A4h{^RErAl}+rV86((IJGdm^oNP2aHs~?z@>H+UX)uJh^#J!AS3Bg>M4hsK+jX{hOPyp3M}yO&W!a>XNPDwlCTES{E!=@`)i z4UBaTz9GY69J+wmM_#X&)&Er#6_Pj+g{cxP?#$M+%eV6+4kR=c0u_7&3Y#y$8yRk! zt(n@-lErw7>PeTvCT1cXJfP7KAwb)h$#UbV7yWb9e3}9^B6ZOYw-^K`5nFJGsiA@U;j?( z+?KO!(C*o|Rq_HMXY8jIDu44M{a`CB{#Am&f@D4hXod_G3=;-vE0#G>)OxRvmn&}j zPjvAvnfSzX_qz0U<`ci8Gz(F`oug){89~B}X8S5Ec>yCsklB*J& znY>+&{Pczn^_acGw9r9Ah6H>_@sIpL$PUG;jLIF+hX@0;x;X0^)4VDEDi*y@i#>H; z;@dN9ZG-yyc|$X8vl+(G69hmI&q4J9`zpcWkDFqe5=uIcoaVk$^IX0WezW?EVT3K3 zS-EVR4_YY4@+nD6E*~x#UidkUgjF2dd$u*X?)w=td1pmBf z*foP)s1Xc`uwHz!1Hss;t20B)K2@G3PEFs4lIG{foI3h5pS-C)?%Ru%NDJ1a6-&+6 zpov>z;{S3jG~Y>H`E6Q|-M|2;6=rQrC1>dBZdji#H+O@f%1(*?C|lS1Fr`3YxS=5n zhp_!u7#;KC99BY<6Lu}ASY=-OrE$Z|>YR~qZ<7YDO~W~P-#HigGR-gr>eCGz%e>+z8XkGiyP*n3?*PbV+DnSFEUw zw+|fHx#U5F3bw&oy6aCBl**ytr6aY zYM&j0AyQ$**&H&}VhZ1ITT4~l9&$y$9lzl+k6W0uQgS;v9Qw0Wolx1QE`(wQc(ng! zoY&_z!CHT&HowikOBueD7%EuBo5COQd)nTU0biXM61WC+z~IA!9&GCHSPh3)YG`yl zeDlfmCUcvMWYT=6>!U2LsFC#Cm8thw!VW`G$m=Ua-AXwIctUmSz)Deo%2!V91kiV> zrLPIw;p0swGDo&mLdpVmU@>H>h zZXH(eiu2P42_<`jJ$eU!>)hm(uscPxD{=Gv+L97qdu%AQIr@DTcTP#+tZzQMY3%qcg5SnlsL_C%YJ1qzTFltt2QYaUTCq5in#h!fZj@Ox>Ib~kqOK- zQ()r#2~SQ=$6QyuSN2*3ag%ZP*$4NXj$f>1r>@<4RIT5(pX9HGhT4uZ(ovtJ6$dU- z1|UMXH!GusRYdf>tK2Lokdm?Y3Pn)eXdTm4NLB5m34F>0>{7#ko@WwfiYp`Irc=cu zVmzE$O%uP}sFSyJbfj@lE>V@&O<;26sQqi#yaKl4GA%M(=wDiiuHOEo z0LzGeEavLN)fZayeIaWg8ob`CH*J{QUb~xu~u%Hr+h%9cO)2A}LYm z+}H7M!`KDDCgHhJTeL9ebg27Hpx-fF@4?IU&mq~s)Kfg1a?G8Xb04ax{4_@>3#IB diff --git a/htdocs/images/medals/honn_ef.jpg b/htdocs/images/medals/honn_ef.jpg deleted file mode 100644 index 3e27b5cd98b533c7f35be3026bd8b96d3e3f13ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5200 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 diff --git a/htdocs/images/medals/honn_epi.jpg b/htdocs/images/medals/honn_epi.jpg deleted file mode 100644 index 1da84f6241569d5a30ae3aff70344ff2eb55e422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5162 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 diff --git a/htdocs/images/medals/honn_mci.jpg b/htdocs/images/medals/honn_mci.jpg deleted file mode 100644 index 53d52252ac9e94632adc0ab5151995dd581483a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4777 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 MHVBI{)b;%T0Cps(@Bjb+ diff --git a/htdocs/images/medals/honn_pd.jpg b/htdocs/images/medals/honn_pd.jpg deleted file mode 100644 index 8237bfdad0c03001ce6793b5db63acc885d9eed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4069 zcmY+92{_dMx5vL@7{F z3V;A=001n`TAKi~j+?KGJK*;ItOGhF0Z{S;(e}O<~Y3XQb zAy6niJrv6L{{ex)U>a%~C1q52n;%NeHQ)?Dlh;#vrEegfWTDLUHI|7uUvGdfZD5@Cy59A*Q`<# zNujt&-4?E+gkNDC{0Zb(FO9^jbD^dKh?E@`%6LaI#@FL+V|##^YJBa%rv6k9UI7*K z>GNLPy(T({TWS-t@+qLU@qzo9H}0h%j1;n@%zrZYr@QVHsK#KcKcton8I3JpeFq$ zG_%$w?XWg|nQOy2k+outCr*lcr@-pGX|m1m z(gWX(Qy^IC_w6Jw$?hb1`Or)&V3y5qsS9qp7C?qF8!*+w4hsE5rzOQH7dn3rr5~ zw}{?_SW=37X<&LErPX+jVt`!y&PpS7QXT@q+Z>B ztL0C6;!j2M#VsgYTSG!wmx+n_#*Emulg#RYkw=C^ z*HJIf_uz8NsJ33U&NWz?6+(2}Jvk`#2EW0aS5S0PrvM4{X}F}GYnZ50;=RRt@>%jV z2MmeOv|*Z&A1Iga84rEi$>*V!2`Y>ASYyzu%W1t#dNeV@Ws=|cQ;m^*Prp(YHnhFM zSo5={3C%uPWkg?<4|pjFW(XcS4wMU+j7Ih@TrHTBwF_#a5VmR1y$r|hmrS%#(aLrs zNJSwZwa!P*T>sqtK6++wF<@x_Yk=?S;@_Mh93rgH$zyN7to4Q!(|(Sg z;KCTLKs=Z36&&9rXnlWt&!cUAl7~3O9?T#H7ZcBUx|S2$S2(QUfBv_s3{Q?zX1@VL z3}H6FY3%loLd())jkX`BKy&)<>GL|tznpRpm~UU)oe3r;{5`DojGf5;GdlpaRu6>Y zG^}O?J0~?T&O9d#|J>@~X}jjCIxDH5RL*SiYuhJnc@S4E-%@8Bcn#P8RW?hYBAj<0?cPCeNfv(a0uQGc@2c<{tD{yr{{70)uXunpKZJ?0sa+tarzL=`Y(T~GzLxgtB^)x6w~dNLCK@3!O?ZE{M3q3 z;YzqFBv zRpV+;P^L1b$|l5=bO!N=c6Z3pb9d0C9yxlh__ZE4p6KxORvS~VE*OMv^+nDd+8Hc$ znq`f*8}|zG?9QEVF8dp5W&E9GQGHcTPiWa;>|~s*K47Fj1*CQl_)h{?JXe=ZgFS|l zl~smu3v+AS)d{N>v5DO2Z5-JcFJ0ZrtOdn$KSQ_|gUExhcE6FfZ0w?1{EeK{5MMRi ze7o$g1|K_2O)KUn3eS`TU-)uMa~VU-SV@&LdR?JRNTU;n;Bt_l;AQ@1DO&3u zflp5<4zu)}_S6a6N*`RC5|-qnL|(WN`IND0rTUL9OfI7tjI&uAj3)S4BfP#1P5Lut@vI*0r2;i>W5o(?%b?goZcte^A~&F>4U z*5BX@Xk`vW};E(lUTdc({Y+FJ%`by_+qEz?Rn%!3N-8Y=J7N@nOf{B&r zPMt|SLB$+*EqQNw$H`SM5XZ>Z|A<-}^eD zsiI1xWt7!UsB<23XZ6~ICUW)#ICt3Hz;3xN$Jgp5zb*_X&|p>Pk9r7Kme_iZ*((UN zFED-}SC{Lkm@_OZP#EL*yu^M5)5=O>m@c9px03Bvm;cmz=ukZFPybSweu1xDL?mCj zX7rjcHt4wiy&Zk_$8{^5Zu~^)gU`sP;o@-tl7i@vTNKer0|`Z%zNoa-Yc(pv;tM!6 zteC!zs6dy10wuziTIMf*tF2S{8}qxPdxqr*U%_G83}OXm`AIp=Cw%T`G0i2JbY{q!DQr;KuBjy+}&@U`@7sv20E12btW4ADATC zV=QovwVP}!GH-66W63stbeN(hSkq>=goNkRSNG6iRhdP828raFR^7Kzc<)Wuun%pt{;mUZG@NMc>#+ zujj4O{(X7pq9DS684W`F{*@?^d7H2v`6f|Kyoz%2>d813JZz5?E`}*dSb(!hCxeKa zcNJ8spS@>q3${J#^!XgD7HoajTd8chc_OYiX9T(aw8L{*X2AR2D%^N-6lO8vyfPSe zdoSf<78sZB-4TGY9#A(X=R8wDn^)r-ARJN;;KbD3Bx7gB0hvqQ!Z2i<8I?A5L_(_n z>}TkBy-(u9)Y%SOrdjuXb*JEPx(1`0W$w>UfkEgZH4i)7j2#>O=#X;WVt9wKQtYx= zBx`ujh3;SN0c46Ue!ZsFcJ3Rw_kQUJofIZ&MZ9)J8G1p`uw9mx5l`P1DWNOin_t|b z!j*DR#=Fzpg)#ZUA2ToWtCg)0TRDx>*Ub&Zh}!j$s*qME>0>NKAe2f@2_{QE$hm>E z0r&i^%7Bie_i?D_dp4-or7)Cz-;7I*`v@|AD8ENq)z4zdz*L;YJOf` z7b6uL$cigiQ!rPXZ|FtWIwL%VE+))bl&ws~?wVEO5AsSbgAjvU*;Djn~5U z;DE3)Cv+!e9*vB<)9e!!C_Gnsw{O06ia)h`1;5EneEPK90v6j?(9co$vE_QkIirV{ z#j>hngy}x(Zl2hYQ=gZtWqPpDWF4m&sKp~ZQPoK8Yd4SGQP$c`7P-|y&xjlGA*O=* z`;op^qlMunuW;6ZqKrhPB`foDd7K*@T+SL2mU=5+0R)srXXJ zC(>2XOK7Z&5mo$-9rBSL=a&A``{*zozfrt&u;+nP8WUO08;`3v5E~2}@Ii#q-AzyT zbV|^M-9Rc-s4-evyNuzQbFVggkP>e>X5Aril=vWl!?BiRVNyJ9n*qI@rPjMk%zOyG)nJjc+uOtdXiyqmlmPdmAsq>Mp5lknm)BJmNka&cJ+0Y$8u@)L)dsXUg;r>vf)qFMYrFY?c z@&!F~+dXoVGd#pTgUn&S;_ED#8P>Zro>{=kx0@qY`r^W>Ty28ejRx6-Sm})`NVkFO zpJjz4&BO7fI0rpN=vre5-m%ou$V)rHv9{f4$+zWj*@EmmsW!f&c@;v2+A<=$z;N zmWNwH@bgjX_id9DmoB%80`D=e%@N@@k4O4s<{aWmt~?CB?GUuJtdauzT5KrMqT$3E YwTunx^kKWyih;uD*P*w1gimMw3yK(Ev;Y7A diff --git a/htdocs/images/medals/honn_pen.jpg b/htdocs/images/medals/honn_pen.jpg deleted file mode 100644 index a77d633b835fc0b4af983a0edcaf3b85b3ced76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5631 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 diff --git a/htdocs/images/medals/honn_sm.jpg b/htdocs/images/medals/honn_sm.jpg deleted file mode 100644 index 5e179b9256ae86c5bd877f8fdf53dd1c6c4d8cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4638 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 diff --git a/htdocs/images/medals/mili_aero.jpg b/htdocs/images/medals/mili_aero.jpg deleted file mode 100644 index 743d03e2b1bb14f56e7e0ee4c4b80e225cdf996e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 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 diff --git a/htdocs/images/medals/mili_an.jpg b/htdocs/images/medals/mili_an.jpg deleted file mode 100644 index b929f9d3f7aa16d12c8a5c0fc0874fb5540027b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7455 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 diff --git a/htdocs/images/medals/mili_gn.jpg b/htdocs/images/medals/mili_gn.jpg deleted file mode 100644 index 2f3d2ad5a89bee859701ece3367d82bd808d7f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6112 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 diff --git a/htdocs/images/medals/mili_ib.jpg b/htdocs/images/medals/mili_ib.jpg deleted file mode 100644 index d5039fa9b6eb0587edfd9608f636dc257ad9d681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7306 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 IqaK$34=_EsiU0rr diff --git a/htdocs/images/medals/mili_mili.jpg b/htdocs/images/medals/mili_mili.jpg deleted file mode 100644 index d7c2276c01afeaa6ce545075f7c38a903a063003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6375 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 diff --git a/htdocs/images/medals/mili_ssa.jpg b/htdocs/images/medals/mili_ssa.jpg deleted file mode 100644 index 22786c8b51316c090d0d9dac516ed43937a60989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5833 zcma)AbyU>N*Z=MkOLuom!wQmufJ%!rx^zlNEUgF4G9Si9VICx-Tw*xzmvOmfD{L)0bm#) zQUFW}!XO3Rbpmw&0LB2_)4iepAqWnDg^h^;zGwX_`7i%|#KOSD27@3Z00;w&3C6~P zKydK?*$5&9V*r?}P%>)Ys1Eb{6`N6Op3t@#e|cwJ;cJ6|LMwZ9w4F>S7|}cu|E<> zk-MazJxWP+HwzG8+?z*=K?*zp-iR}f(t~J|V!XU_n*d2JdqZSnVj;F##y0*=jWZb4y!I%ThZnIpfAz4j_-CX-IlrFu@c_e7>`Im2P?<+Hw1B zZ;tuk_L=E|5}J&^anYfO>;zIH zqJZ(E^Wx~-jY>o9e)*x|(18u=^Zd|_{_Vtz%P?hPuf>NMaaFrhhQ_FcrY7{rB?q*_ z38u3N`V&PDhbPR&??NY zl0Q?;Be=0!gc*s9=e%mDYf zc()ztdJ)qQ9ueLFJu^Nk2c@0Xy9?QC-!jQJTZ3Pia{r*JC1%2Mcq#whGNy0)&3qju z8@;!VDx#TIpX?5ho|TGLW<0+h7JE^N(H8ECsNNlPZ#IY*%S4fJ zTzE3e+n<}+Tny*ysVfa#Wx={g=6IXUjk3A=(-1}uBH3cA4~-G!5t@J3Z#J<1GVb%F zonlMsk0FFC*nHKNt%m}FuJ_aYCmbGFL;KB>^tSkBE;2VRLL6)()8|~FDs&o*_#5AA z+-TEb74Nm&o>V*k{iv|N`G~R|gfgEc=6%Iyq=c+h?)FV@5*;%MYn}SbvnBcboPbi+ zd3&-raH)Is6r*a|EPpAl6O(D%-HtM#ZSXXDDOUOj7`oz`nt9UM%oOAKK3HgCr7qp6 z-{km4*6hi1P1*1!=f_mG*UlumHz=oIqlcR%bb3get5Uz7%h(Q@UuH72I#SI1l*|-q zPnh?-L04V!kd26$9(80E zq0RhSkIosV*mBBNy?kMvY{_n{4}3?#jOQOv`#Dt_^pm5=XIIn26<3HiW{q4w#5OTc z*^SBvT|di|xccE=Q*9hS>(tD?Ie%Qh0z6GRqL1>EvQvUBX5(zg1n{^M2;C#f(b_(Q4YX-qig+3r0ZXZT(s~4X7OIbO&(E zHP~tSl7XQzp{q0BTB)}_M7-}e6WC(4qf`CneLG+utU_cU_(gVkF2!KK;tCdiW_b_n z0ySwXuo8esHOOxA^j9_wivvOQNh2%zqWC9UNE^4yOW?P9=l;KT%llRex`yX)vLMj) z^atLS(Vq>9XtCUs9IEV5aqth3Dc)+QC6hrNS^Gg6mK+y1X%-(wBE+Q{M~`d{*dPM) z)BZsa(&V&xJHAV;X|~qEfjb~2m0{<|&D%1ruHUIF(xlCxIOzn@!B|jAMHp!^J$4{= z&L-2=%O_P$lh%~FU%bc(ts|3Yrqp0`EVBaM^mFz+j%+tY=xwtKyXL^rI=t2+*{z4x z#-=Rw)Znp>T=LTw_Qm|lE~kXhZ66;UIma4S2I`x+j|vrD*$j1+D^xgi=XU_NNAz&} zQe;)86#Qo?Uej~_$#eRwJ|iy~z60 z;X|1}cYrgqX{;N8D?!7`6PwgA@^u2Oclq`G=_Q|oCU-4Ml=0^z^7Pj=S_>~VqnFX< z(tV|s(jogd>^OO#X|u8i0y4UY((i0_$;T$_#C4rM8+g84XozWEb>G8_f+GK+Bcm8g zfglw;lfwK^FkiSo!4U-hV2NJ&qybmxRVh9K2L<2J5sW%9`SqhD(IgzJs89$-yy{^` zPyM|M!)AA;W=7bK&Jhg|a+v*0=Bk)7C7+dymYeDdjb46ZE0Lm(9tK;Dq>47{ABr<( zG?cxKN#y_zRKGcs;r_sSHswaSn>TT8gv;t%8Q-AS%7*qK$o4izgqCzm)kXq@Psi`e zms4u~IvIta)#$F({Ja&%wb7=Lob3MkY$@uC&{#|X&Ymn6<#qjU+C~&gO;?Phm|EOS zS~tDyBVx^P_&ib|@x`76JB2`Zv~1c?LHLK3BDujMck7*6jGVU6jRWlbFPp#*bF|yL zk8j&^TX+>|!WM?tgIjNZ&=$~t1MK2f)H^$=fez`5Rop<4W9<4a{7Axro$5(X_ zM*FFvYEp0-+Olw*=KPE))zf_Tg^o>=>l-q7G2KL5({`M`lcFB`+KkC@g9?ttHe8nuFF zp|TUsqQ^H9+Y0p8{el;7E!FC~xCcRBObaewYnwD?_*oC&^*@>Y)^Ko3g^u!t=Z^y|osT>j3lp_Gmr4kzL`I6!-A#)Gf@Pd}LBmQ^ zb<`3VMa4dx(4{ClSi32$g{040t@KxT5Z`o-QWow}DGWZy+P+KuA^N8sr^^*XD7|!oAFt6upM7y; z8iWb?5}Mq#Wt$G7k;cPTNbFhcz$q@4NafoAWo;V9iD70k#U6HdS5e6rtTMaqAUXV$ zFTPD`jBWOjNx@Uj!VQ}oHAt6^&=-$3Dhqnv@;aE}frRUID~r79=9665IbBNm52=-) zz10L%!--wZW}GWRRU!syKh?x!$Ytw*uE}zt@Z+=(^-`!z1 zZdsJ5EjbWjWU2A5Vu)BaoWtD}2*fYllgVA~BO!a`93#J%ixYJj{TKFp>Ro+UMR9Mi^n^4)A!E^8EMNd`a-tk4inPfg|Si#06W+vFwf9j#Q z=YksDVTB^Dea=qCXu0i?4S5T~Q2*xTK9N|SBWEXxX1qpuHl0OGR<~w(<^z=1b86kg zE2)Gz+1_T}ORS_{b+lWh&d}t;g&LFD!=%-ne(h&{SEZf{=qUB5fV5d$32JWGpht6r zfwl>bb?#@)SsETm_e2mkSQAj{rw)!>*qIq%sT#mo%Y2)d`|7BJVK*OL? zN_d8)1N5l=U*gP&eu_;ZC%F&V1Gl9fArOripewM6?=qpfv0wCcDseVCpYqc_0A$>d4M-OW8t%)#mdUFj5!zI}wr>UTAJm z7Nxfra%qPln$Z_DEh;Rc%#G#ONqjha<)_m(KPm z2N(&!SEN#J@CB_a#Vzw6JMaAj!9Hl%5u+kAa;pA~m5R&$jYagt^2;V=|JV4E?oFuU z2>z4LbD`XBSUc%;D!Y%`nWTFx!PLlgn_ouE0nTc6vgKM%M&C+ux7PEuwWD-@aLLXk z(z45wpJo*KV*m&dUA^9O;wQ&dFaMUerZ3_7 zpY!>*s^c{=@8gc_{^Z|CE@q0MbY@H&7H+^WbXjaSXpV6{F?7EixW?wct?H({&#|>p9q8I<_B{9K+V*bSI8@+YOTfNx57j_EF zUsB((eUhm};=`KyGT@5K*~WUV?gCEv^>3{pE%yOG7-G9}Zjl3Gt5wk^ufj7B&Fc`E z3-_j~uZyh7;zr19>kqma!ttAlCc+?KCK*XBTC=HeEcoL^jBWx#XXVj9?y=kNTlIS1 zd_T$3A|UM+fNj0Bu?e1>vhW~1?lQ46&WWpDjk>7wf;*4QS5|p_k4B>S>CDZfuKHyX zx6P4=YLB_(Lp}}qK6gw0GIUFI$R_3Px}}xHS~Px??O1VPZhl@X_}=#fdtvnHrzjOv zxuuj<#Hd`CiyPA4_xS|j#qQ6x0M69C7eZm#hEgcS0cdP^e$*^%EhNcpb{s<4-aPVp z1{vm;`C5m6k&+dxxE0k=^`pB#VY6)9OHX5x^CYvj*|RYC_eeH6b%!*=rvgu$NkW(G z!z=diKSOgqh&r)p-!&urpr~el5FKeSgEUMLU;Bft!fcV3&4u;6W9dq5+;)phA3D;( za$Zr$pF+v5>m^-OfjX|;X`16!{HdD8i>!T_161ALxYsWk2BAhBER)P%$w0%n7txQ# zb&Cw*k0jjCh+tWCj?vB`Ozur^q+?FhH~of3tJIq9#CFs=tv0O#3_7I#`}MBW*9e9v zySMNGJ~qrE!Urv&_q7GG!$a>!Dec)+s?GJg{|OQ(N)UPRSZr~QxkjM&ecEZm^{BC;Np4__mw`__u~@ z)IHVBYN)Gej_74Ow;;K_SDL|>L^2TGXw9#I4fHbTL-bLC7#cRZ@N2uyCeiY{bH+N; zMkK_8&*b}~zGxa!XSi1CzBmqBni#TmJWcS?>FdByXczfrIs4OZP(MP2jmAd-y=9rZ z3M9b}%1p&RV=1*q77Lck;vU|`|77K!rk&y4`;U>uCygy3${aVZ>0lp|8{>;}H{Cr* zqtHK_xlY__QI8Ic3{^N=x8%BOSHKef{-Y{}b~V?Kh*fRdym^6>v$}dh0XJ2dMiNE6 ziTdU+4PMpI=*9Xug=JLt;mWJ&Oy1PAO)tZ4v{)ish~IeHjqx;XR^E>L;ossT&H?I- zOy|l4d7nyW%$bE)>p3Ab9IFaDp8n@A^`>Z#)y^?(^{B_(w&`%MrnhrW11^5l@K37g zgM#%f;h*_Q`w-Z@QxH*m8iD5z=*)bS46Z*6HanF5GMrwh#|-qIed7?uPaOAEqO~zc zfx4_gH6rX#w~U>y=gKJkjo=KdAE#jir9otV$Y_l?F?d;AQ|GuVue41*pLLurxTzEP zZz2Vpg;A7hevE_kkJ@}Z2;O_C*#wqbDu}sYTL(crERjWPek-Rp~f{my!~$nMW- zWe0aV$c*?!^Ro+CYS~M{Q=pwWu%VnBr&6!?cqKb^L({Yd0m7!y% z=!?e$4=mB`c?0V6tB2tgPYVVf%9KAN;FsJl{K9E(drD-qwsSe}cxtG7R?$$=)?_(i zq1izV6i0KLApo;HAp7yxkkTL9O)00u3% zqkABL2tWz|0F?i__5rjSPF@bq0H^l99-?akAOb*6N=iybN=`;bPD%c^-lQNWr?^Q? zMRk*kikhDKU!$j{rK6{#rDkGcW@cjI;^gGy;{9JEx^d$M4K)orJv}=I3j+(s{|@|r zJJ;<11`0qOz?y`J0YJ<^M8ZIH-39pg7atkXU;7L6zeY+%euIL9n23@HKuq#~2LJ$K zB9gy3(ErmClaP^--XJHv@pl#xF$n`H8G!t@B%_AO9i|)h-cp*(Vf-u^p%Ma{0o5ipEbyc$w~ebm571(HVLVu38RL+_Z=xFvasqONt&h( z%=s%U*K+`BlD}9ONEiTWfbqb%3IsvEL8L}1k@Rr~lbMm9TCG8_X41Bu5Sa%2BC#cA z)pB)C+JMVrAo-;M@n=I(4UdT{#nBQLD+g6wAUz4+Cj>XDeG(QOdJr1@YL!t(?fy-@VS(b+Z9CQq|BwAFctX^`n1^)LKG$ z(Z&mHXVsnD-=~Z=*9IHrjzf;xd124=X@GcSxfLcgYPuRnBcqxCG8CElR9J)K zJ&v`p1?~F%lvt&%s+i?`8t;r#Z2_+`ERs2^u2J$ty&TJc8?&iv% zT!%@YxE{SU#Tg<%k%E_qox$w_%euDLsV!LpcM*G6;SKNV=MSy=ttsY=nqquQNo?w2 zr%xeH>DqdJ9hta^=C?yic(JY4=TA0>y=8b<$PiT=xL2r=_wQD}z7J&^>qD4R5v}a0 z4UY=67Y+;*WO9sY<&k9-spoH44+s}%(iPPVV1$zH^n5IrrN8$~R5N5TNPzEXY%}ra zUJMVndJ{%OG3p{`-cMI!PiVMe5v;}1%L;lQP9{27h1ZJUUTqq9=;9?>1h`uh1Lz|A zW(x5TcB4SXj0>G`mI^V#8)E~eE_NJMye7>nDecsgWAw9#Yq zF2?3TYl~JzylmO*-UqHTZY|_m_IC&Tl9Rh#XJ!aSI|Z zGGpfYg+46zf#fymd-}RgWpC{SH@OXJMNn4q4IB7*S`S#=b>K0o;l%vL#Z5NLmWuX# z5a8Q_Np%Q|uhuoX+9>SE&`mAcbItr#@w+sNrckVuzQc|x^yU=3O)l#x5vSN(?2reH zimV&u3-r)7X-*WgP1{N;#OY5uW;$0H8XFJQapx!s@SVK~EY_^<$PwrRCZsX}`(z4y zOpN&3kkJ&Z-StNs>xq7drJ*=UEjtEoeNEbp<=|jA}8|9JgPJ0#0y#zdahfNss5>>srRwyO4aIZOzrl7}lnD3+f zr29Q7PHQmbYbR8B!y(1v$B2+Qu*VO#%LM&E{WIZU4+$l1j>j-BE)&5Z&C-oU_b!y% z*b=OAqqF>^Xty#KvHy^08#W8bK{J~#`7=s1lg*bg-bB@B&WA3f9>dPuIbkA|Q)e1HQ zSVy;^IG6L2Q>P@&6F^}H9XXd;O-{CKr_d7y*kGM~KWJwpFkl%GMZ}dym+>28vvCc9*h)!Naw0qZN@&7ORZyb<-B+kJ1`aPsTc&@T@x z*4h#?2+OQL#&9GTQI9Yh=vZGOkZV;cZ3!@=TbOc~XA#Zi8zNW+&S7xeCzWBSdHYM8 zQsd5-`@%b+s}g%u-{+gJWUz7s?Jv?p0JWpCk}JisO6PMA_tLk!(MB1XOgr)GpqVXe zH`1pk1J)p!r#B3taL@pD3^G_Rlj7pNpfp< zDo3?Y@n(y>?g#>|(M|EapH=?l_i#1Ss-dO4VEAPJ#KAA2jC;h;Ka`2%+&Xua4Y(U{X>oKUrYv}sW<4nZ1E*6u ztW0w9bQ%Yc5GquDiIuOB6k9w4C&A9&8D%k`OIzXTAB^CJTC7*L@LML zr-#4oUj>_81DK4BPT~8m;#r;}uq;wf7%xPv)qrjSu3gW<>v$1`c^JVv6(Vz?X6%D{ z(qh4yl$A>SF*Tu^kNMj&x)`%ohXuB-di=6JlWv`xL0OV*8pNr?#ha$PuK^8%UBOYj zuG7y&j~HU$`@oWD1>DhHN+%N#d#YnRLd+FlvU{@wbqI09%cr>tlKQIQ#U)YWGb|s@ zS{3e53DxA3EMX*s))tOK_+vxw_p0V4#4!<9_ zS>ci?s{COfaU~n)Xl~UgUme~95{Pn8@H--jqH+2DJL~u&eZZd((d>Q7V8A*5g-&oH zf-v8`;`a-=>&rzc&RbMWz1K30AefMwf@6wsoOvi-B9ZJ63ihQ+pG%NL zvA9R|P<*BJ@lVO!MN)vWT>(@6rXL~PYz>u;OcWRc&Y@rd@0;gQB zq$lEC6+N$rcl)t2`*d2D`qMV(nPZls0d#BOWCNw6%{M1s$I9O_41XgN0kIZ zRpYrzOZa_APF<{TurM=2*#lKZ)#s|*zGK6FrxH!J#nAvFjXs}=)X3K~0F5iV8M~dU zasg18+O6Ic-`H1=v+0-x{_K{ooR6GA|HvKS0#8H<#v-2$JTRGV50J+Kj~?*;X60dl zb7{Q^E6e?2J3eUPa}5w!8hj$Ly0uc2<&+D7%&k@Ax~+qQUCmE*C#YI^Y;NGf4(Q@4M7Qj_1_Ph z;cI99!SHVvA#CV@VM7R4YW1V;gy2}p_yKU88HVf4#sHa>p6XHnw^{Ex7+Ay#8>`Gu zH8Q>#8rQ1JU~MG;2b-}N=zejHDH8<=jGwuWxUZWz3tePdj6+gM}A%9D7&h(Kw`Cp37{-7PN0b_xz3#_9u8Q(W= z1`xk6Z}Kz>g*%rpT`pe9%BZA87|fxqoH-lifWf5XG`1GDMS$&+xL46PC6@&NFREy1t^r)9DMQOYLneQPI<_SY9CbIPSric@ zy$+_~PK7jF)PwJ$U-Op&twU?y+0~u9Ba>tI2cJLTa|MhL<&mgU)LO=JeG&Q27Lw~+ zv<_n~?;FKy?1~`X%=k^#mcM^wnm5d*WZmm#2bo)EHwb_(+SH84q5=8ps`P#C#^dM> zpS|kNj$OHUmV#ar2_65vpRlx*qNBn)IsB`oRc|%+rd3<~@ez<<5wxQxU7+Rq{+|!( z*viecjd$BGR84gNzjoGNEH(`coZg%4v+y2CS#agOeX2HWklgB_4b-)>oQ%;m2fCC@{_?HPP@DxqqGx;=mwfD!7 zOMQ2&oEFJ%ZhXO`$#OPCHC7qk9|93zCIovPWdS{(HimO}0Bw!Nsy~>QVMb4hj z-jqT$q$nKFSfowMJJLAF52;jMJoCI>-p`=Pgy*2rdU5mLR?wQ4`ci67ImEYF z7nH2$ZIw?goHFccPrY+IRaFZnJwLfs2B=DbX$|@7{EhCDOb03MOHCVG8SZ_i;Uhf_ zbW>-cms~H5UWLMED-&xczSVzBhJOCfwfmQDlAP`?))D1%MzIH4MITf9fIu!ifujkz zbW_u0)Ph>37+LeNr&gYsTo!|421;%HgZxRfy0TJ7&moZz$GOPa(|4(|c@>$)>hw@e)n2x!% z-8HFsqs=h$S7U)hb8wo^!g_HkcBh>_UIsr`e(6=5y@BgFJ9HPa>7q7`26QY!)n$0A z^ve|-Pej>kGQKMaz7^;1vsR*n4fkeLktD5BIr{CCNUW*56+?BC{HJFwasEp-+%3pt zum+zzM8csyPI5Ux3}d8{3f%$gImM;Vp6mxJ2hDxm?lKAEs0iomra0L&z>Fo=ubI*| zdhTX7h(R8hs^-I9cGvsTI`?J+F$9@31Lgumcp?#ljj(6F(Xq9ALA0b`w*USvYr|5< z?rzS0RuQH{KE5)#B)7<7_`8V)yEgOQ&V+4p&y#W0h@kJu{VkP~i|w81iOfAt&f8|b zqwT#S)1CLd`QX8)yvFUIk8QHg!u~!z<8XWhGB%wdef5HOh!>SiAP%-s2lb&-{W;?&yEeaKD!Xd0at%87(EU|!pBXF zG@`LcN@;NTIH%x{KWHqsJga|3z+3%InT70~kM~qW=MZicEA%$lR;=TLPu(%IS%}BZ z(K^2<*PkbQ7Rv-@zULLgpXGi)s>l1xrD3&GZA)Ukz_kIH51sAlTO;6s7fP9ldiUjT zjtbUMJp7?;)|si8P(SbNX2}ZKtiB|0t5O~FCWNo9*Cl?n7fa4?(O7vA4hjQdH1j6V zG91wR46x+L{u#)cRPvln*N6?F&r~;?+1XjS*_>PDA~Q?OlSf^pIBDZ@;AhcsDo2 zjC~148{WaiZzTQ|qr#5ABJ;y84&>H9_5G1e?YEU*Rd6e5N}e)!Sm}`TQ82y01&+|K z4bgu{H(C_+z)~Z(1t?US`y6LMDKPjP#+CbsCNP*)){}MbZEDU&=exrA&ve2G=pMs|CTmz)%pTRzY;M+tNK}$_hbkpbw$S3TUTun&TChkhJW_gR4v%p5?W=Yi*Z)14 zw>Q?t8BAPj>0r3w)c}(+nR{Nye;Y=n4GE(j#c0BLKg724>_FY**3x@VI-Cg&%dq`}7xMQwH1Zl!V(jaoF9umOzihelMS+6fX`v z!CPtk?90O|rBI83;bkQ&5zWHFUu6jL89P<7a{JGn2Ul?c-#4|Cwyxp~tkWq#mD z&s$VC#7qo2$N~JyR~(-Gr7`=9jvkjsE$3Y>VI);n8t}V?RYar%qV6SAR}5We7q@|t zu4(WPow2wzXN8mWX93!3+tQ4tin!MyZbBC1G}_jc1vNjGv!h`FKCp#OSZ2FTbk!Y) zClbo*+k9x#qt{=kcv4LAN7ehWeoG3wtnMuC0<6biL*}UMHRL1l@QPMp$9Shpg8z5G z1>E_Yq0z??t2=bm>J7HCq~2V{JS*j3W?TzvV@=9r&L{7wVWwUsfw7eF%_%n8Mav&0 zkt3j5e)t0tIZqGR=3I!fuZ?2~;-JRo z0yVBE8B@8^T>4YnqD##-^`4K??TU6GAeji6Q6;@^_dfdYxNEdM(y}0VOxqfr#)c+B zKbnes3q}!@EjXb}(7-Hyrhd*q(;=$2PuC|KUKfY8H5nDjERy@A>80(>PE9>@lX44G zMmkw*PQ@|`Ls6U`E2}^J&T|v?`@uva$IB$XZu`UpjW?G*Nh>6ai+sVhdD%4TS0<%G z_FtAD`(X?w<)bapP;#)nKf2;B}=P9i7Rcb5>pXG zEVB6Vk1$&?8LJMmi8dAL-VLAJ3Jux)r!KcUtcPEu=R=^*CR7*!^H-`cs165|QA^r% zyZfK-qOUDOygs=0>Jk2n<&5B>w0FlevBD#E#*HA*tB)X{qqQ2ce0ANeY&Yu3*Yg@< zxVQLF9>0E%4ply=0x_zdw^p85(071&hKWau_WO5z0*SBrnH`^u<-BQX_Dg$o zSI!1<;j705Rn09dmhM85#2dS9`f06a#z}vaAJuvrBPo>ZYa09$wL8{?m1CH`mC;t) z!gjVly3o;~3wZ_7q$8lA5AK^BDej}gcU4?ut2#|q^EM#j<_r!R zST?WXyN6z41jxJ6j=p=&lORO~?#x&WWbK1_-K!w+(syK+e&&M(97yhGN4I28OdvoPbtO! z)m;B-U($eUz?+d*w@*%Xe<2foojjl?gcd4)K3R$iOkLTy;09g;Xwyj(M90Sz-Nt8) QtR3k7OCC`k-SzDM06FMDfdBvi diff --git a/htdocs/images/medals/ordre_al.jpg b/htdocs/images/medals/ordre_al.jpg deleted file mode 100644 index 55ec97c91e3fbc62a90ce801fdb659c2118fd9a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5779 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 tHaP5B){j-O%2nDwAgl%wa+vFtD8F diff --git a/htdocs/images/medals/ordre_lib.jpg b/htdocs/images/medals/ordre_lib.jpg deleted file mode 100644 index 8c3f109e72f6b07c2438f01dbffc270a4382e884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4758 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 diff --git a/htdocs/images/medals/ordre_onlh.jpg b/htdocs/images/medals/ordre_onlh.jpg deleted file mode 100644 index cbaa9a60049f089e33104ab5135880f497c6b2d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5775 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 CmXeGB diff --git a/htdocs/images/medals/prix_fields.gif b/htdocs/images/medals/prix_fields.gif deleted file mode 100644 index d8cc546f3683d5bb8a284bc91ebc10684af2088c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21070 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

  • ') : ''; - else { - fontStr='o3_'+whichString+'font'; - fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color'; - return (hasDims&&!olNs4) ? (isClose ? '' : '
    ') : ''; - } -} - -// Quotes Multi word font names; needed for CSS Standards adherence in font-family -function quoteMultiNameFonts(theFont) { - var v, pM=theFont.split(','); - for (var i=0; i 0) clearTimeout(o3_timerid); - - o3_timerid=setTimeout("cClick()",(o3_timeout=time)); - } -} - -// Was originally in the placeLayer() routine; separated out for future ease -function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) { - var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount; - var parsedWidth = parseInt(o3_width); - - if (o3_fixx > -1 || o3_relx != null) { - // Fixed position - placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx); - } else { - // If HAUTO, decide what to use. - if (o3_hauto == 1) { - if ((o3_x - winoffset) > (iwidth / 2)) { - o3_hpos = LEFT; - } else { - o3_hpos = RIGHT; - } - } - - // From mouse - if (o3_hpos == CENTER) { // Center - placeX = o3_x+o3_offsetx-(parsedWidth/2); - - if (placeX < winoffset) placeX = winoffset; - } - - if (o3_hpos == RIGHT) { // Right - placeX = o3_x+o3_offsetx; - - if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) { - placeX = iwidth+winoffset - parsedWidth - widthFix; - if (placeX < 0) placeX = 0; - } - } - if (o3_hpos == LEFT) { // Left - placeX = o3_x-o3_offsetx-parsedWidth; - if (placeX < winoffset) placeX = winoffset; - } - - // Snapping! - if (o3_snapx > 1) { - var snapping = placeX % o3_snapx; - - if (o3_hpos == LEFT) { - placeX = placeX - (o3_snapx+snapping); - } else { - // CENTER and RIGHT - placeX = placeX+(o3_snapx - snapping); - } - - if (placeX < winoffset) placeX = winoffset; - } - } - - return placeX; -} - -// was originally in the placeLayer() routine; separated out for future ease -function verticalPlacement(browserHeight,verticalScrollAmount) { - var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount; - var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight)); - - if (o3_fixy > -1 || o3_rely != null) { - // Fixed position - placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy); - } else { - // If VAUTO, decide what to use. - if (o3_vauto == 1) { - if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) { - o3_vpos = ABOVE; - } else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) { - o3_vpos = BELOW; - } - } - - // From mouse - if (o3_vpos == ABOVE) { - if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; - - placeY = o3_y - (o3_aboveheight+o3_offsety); - if (placeY < scrolloffset) placeY = scrolloffset; - } else { - // BELOW - placeY = o3_y+o3_offsety; - } - - // Snapping! - if (o3_snapy > 1) { - var snapping = placeY % o3_snapy; - - if (o3_aboveheight > 0 && o3_vpos == ABOVE) { - placeY = placeY - (o3_snapy+snapping); - } else { - placeY = placeY+(o3_snapy - snapping); - } - - if (placeY < scrolloffset) placeY = scrolloffset; - } - } - - return placeY; -} - -// checks positioning flags -function checkPositionFlags() { - if (olHautoFlag) olHautoFlag = o3_hauto=0; - if (olVautoFlag) olVautoFlag = o3_vauto=0; - return true; -} - -// get Browser window width -function windowWidth() { - var w; - if (o3_frame.innerWidth) w=o3_frame.innerWidth; - else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) - w=eval('o3_frame.'+docRoot+'.clientWidth'); - return w; -} - -// create the div container for popup content if it doesn't exist -function createDivContainer(id,frm,zValue) { - id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000); - var objRef, divContainer = layerReference(id); - - if (divContainer == null) { - if (olNs4) { - divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm); - objRef = divContainer; - } else { - var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]); - if (olIe4&&!document.getElementById) { - body.insertAdjacentHTML("beforeEnd",'
    '); - divContainer=layerReference(id); - } else { - divContainer = frm.document.createElement("DIV"); - divContainer.id = id; - body.appendChild(divContainer); - } - objRef = divContainer.style; - } - - objRef.position = 'absolute'; - objRef.visibility = 'hidden'; - objRef.zIndex = zValue; - if (olIe4&&!olOp) objRef.left = objRef.top = '0px'; - else objRef.left = objRef.top = -10000 + (!olNs4 ? 'px' : 0); - } - - return divContainer; -} - -// get reference to a layer with ID=id -function layerReference(id) { - return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id))); -} -//////// -// UTILITY FUNCTIONS -//////// - -// Checks if something is a function. -function isFunction(fnRef) { - var rtn = true; - - if (typeof fnRef == 'object') { - for (var i = 0; i < fnRef.length; i++) { - if (typeof fnRef[i]=='function') continue; - rtn = false; - break; - } - } else if (typeof fnRef != 'function') { - rtn = false; - } - - return rtn; -} - -// Converts an array into an argument string for use in eval. -function argToString(array, strtInd, argName) { - var jS = strtInd, aS = '', ar = array; - argName=(argName ? argName : 'ar'); - - if (ar.length > jS) { - for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], '; - aS = aS.substring(0, aS.length-2); - } - - return aS; -} - -// Places a hook in the correct position in a hook point. -function reOrder(hookPt, fnRef, order) { - var newPt = new Array(), match, i, j; - - if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt; - - if (typeof order=='function') { - if (typeof fnRef=='object') { - newPt = newPt.concat(fnRef); - } else { - newPt[newPt.length++]=fnRef; - } - - for (i = 0; i < hookPt.length; i++) { - match = false; - if (typeof fnRef == 'function' && hookPt[i] == fnRef) { - continue; - } else { - for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) { - match = true; - break; - } - } - if (!match) newPt[newPt.length++] = hookPt[i]; - } - - newPt[newPt.length++] = order; - - } else if (typeof order == 'object') { - if (typeof fnRef == 'object') { - newPt = newPt.concat(fnRef); - } else { - newPt[newPt.length++] = fnRef; - } - - for (j = 0; j < hookPt.length; j++) { - match = false; - if (typeof fnRef == 'function' && hookPt[j] == fnRef) { - continue; - } else { - for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) { - match = true; - break; - } - } - if (!match) newPt[newPt.length++]=hookPt[j]; - } - - for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i]; - newPt.length = 0; - - for (j = 0; j < hookPt.length; j++) { - match = false; - for (i = 0; i < order.length; i++) { - if (hookPt[j] == order[i]) { - match = true; - break; - } - } - if (!match) newPt[newPt.length++] = hookPt[j]; - } - newPt = newPt.concat(order); - } - - hookPt = newPt; - - return hookPt; -} - -//////// -// PLUGIN ACTIVATION FUNCTIONS -//////// - -// Runs plugin functions to set runtime variables. -function setRunTimeVariables(){ - if (typeof runTime != 'undefined' && runTime.length) { - for (var k = 0; k < runTime.length; k++) { - runTime[k](); - } - } -} - -// Runs plugin functions to parse commands. -function parseCmdLine(pf, i, args) { - if (typeof cmdLine != 'undefined' && cmdLine.length) { - for (var k = 0; k < cmdLine.length; k++) { - var j = cmdLine[k](pf, i, args); - if (j >- 1) { - i = j; - break; - } - } - } - - return i; -} - -// Runs plugin functions to do things after parse. -function postParseChecks(pf,args){ - if (typeof postParse != 'undefined' && postParse.length) { - for (var k = 0; k < postParse.length; k++) { - if (postParse[k](pf,args)) continue; - return false; // end now since have an error - } - } - return true; -} - - -//////// -// PLUGIN REGISTRATION FUNCTIONS -//////// - -// Registers commands and creates constants. -function registerCommands(cmdStr) { - if (typeof cmdStr!='string') return; - - var pM = cmdStr.split(','); - pms = pms.concat(pM); - - for (var i = 0; i< pM.length; i++) { - eval(pM[i].toUpperCase()+'='+pmCount++); - } -} - -// Registers no-parameter commands -function registerNoParameterCommands(cmdStr) { - if (!cmdStr && typeof cmdStr != 'string') return; - pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr; -} - -// Register a function to hook at a certain point. -function registerHook(fnHookTo, fnRef, hookType, optPm) { - var hookPt, last = typeof optPm; - - if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return; - if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference(); - - hookPt = hookPts[fnHookTo]; - - if (hookType != null) { - if (hookType == FREPLACE) { - hookPt.ovload = fnRef; // replace normal overlib routine - if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; - - } else if (hookType == FBEFORE || hookType == FAFTER) { - var hookPt=(hookType == 1 ? hookPt.before : hookPt.after); - - if (typeof fnRef == 'object') { - hookPt = hookPt.concat(fnRef); - } else { - hookPt[hookPt.length++] = fnRef; - } - - if (optPm) hookPt = reOrder(hookPt, fnRef, optPm); - - } else if (hookType == FALTERNATE) { - if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef; - } else if (hookType == FCHAIN) { - hookPt = hookPt.chain; - if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions - else hookPt[hookPt.length++]=fnRef; - } - - return; - } -} - -// Register a function that will set runtime variables. -function registerRunTimeFunction(fn) { - if (isFunction(fn)) { - if (typeof fn == 'object') { - runTime = runTime.concat(fn); - } else { - runTime[runTime.length++] = fn; - } - } -} - -// Register a function that will handle command parsing. -function registerCmdLineFunction(fn){ - if (isFunction(fn)) { - if (typeof fn == 'object') { - cmdLine = cmdLine.concat(fn); - } else { - cmdLine[cmdLine.length++] = fn; - } - } -} - -// Register a function that does things after command parsing. -function registerPostParseFunction(fn){ - if (isFunction(fn)) { - if (typeof fn == 'object') { - postParse = postParse.concat(fn); - } else { - postParse[postParse.length++] = fn; - } - } -} - -//////// -// PLUGIN REGISTRATION FUNCTIONS -//////// - -// Runs any hooks registered. -function runHook(fnHookTo, hookType) { - var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments; - - if (hookType == FREPLACE) { - arS = argToString(ar, 2); - - if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')'); - else rtnVal = eval('l('+arS+')'); - - } else if (hookType == FBEFORE || hookType == FAFTER) { - if (typeof l != 'undefined') { - l=(hookType == 1 ? l.before : l.after); - - if (l.length) { - arS = argToString(ar, 2); - for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')'); - } - } - } else if (hookType == FALTERNATE) { - optPm = ar[2]; - arS = argToString(ar, 3); - - if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') { - rtnVal = eval(fnHookTo+'('+arS+')'); - } else { - rtnVal = eval('l('+arS+')'); - } - } else if (hookType == FCHAIN) { - arS=argToString(ar,2); - l=l.chain; - - for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break; - } - - return rtnVal; -} - -//////// -// OBJECT CONSTRUCTORS -//////// - -// Object for handling hooks. -function FunctionReference() { - this.ovload = null; - this.before = new Array(); - this.after = new Array(); - this.alt = new Array(); - this.chain = new Array(); -} - -// Object for simple access to the overLIB version used. -// Examples: simpleversion:351 major:3 minor:5 revision:1 -function Info(version, prerelease) { - this.version = version; - this.prerelease = prerelease; - - this.simpleversion = Math.round(this.version*100); - this.major = parseInt(this.simpleversion / 100); - this.minor = parseInt(this.simpleversion / 10) - this.major * 10; - this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10; - this.meets = meets; -} - -// checks for Core Version required -function meets(reqdVersion) { - return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion)); -} - - -//////// -// STANDARD REGISTRATIONS -//////// -registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF); -registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF); -registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF); -registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS); -registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS); -registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS); -registerPostParseFunction(checkPositionFlags); -registerHook("hideObject", nbspCleanup, FAFTER); -registerHook("horizontalPlacement", horizontalPlacement, FCHAIN); -registerHook("verticalPlacement", verticalPlacement, FCHAIN); -if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1; -registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); -/////// -// ESTABLISH MOUSECAPTURING -/////// - -// Capture events, alt. diffuses the overlib function. -var olCheckMouseCapture=true; -if ((olNs4 || olNs6 || olIe4)) { - olMouseCapture(); -} else { - overlib = no_overlib; - nd = no_overlib; - ver3fix = true; -} diff --git a/htdocs/javascript/profile.js b/htdocs/javascript/profile.js deleted file mode 100644 index 4c7d01f..0000000 --- a/htdocs/javascript/profile.js +++ /dev/null @@ -1,516 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -// Page initialization - -function wizPage_onLoad(id) -{ - switch (id) { - case 'general': - fillType(document.forms.prof_annu['appli1[type]'], document.forms.prof_annu['appli1[id]'].selectedIndex-1); - selectType(document.forms.prof_annu['appli1[type]'], document.forms.prof_annu['appli1_tmp'].value); - fillType(document.forms.prof_annu['appli2[type]'], document.forms.prof_annu['appli2[id]'].selectedIndex-1); - selectType(document.forms.prof_annu['appli2[type]'], document.forms.prof_annu['appli2_tmp'].value); - break; - case 'poly': - updateGroupSubLink(document.forms.prof_annu.groupesx_sub); - break; - case 'deco': - for (var i in names) { - if (typeof names[i] != 'function') { - if (document.getElementById("medal_" + i) != null) { - getMedalName(i); - buildGrade(i, document.forms.prof_annu["medal_" + i + "_grade"].value); - } - } - } - break; - case 'emploi': - for (var i = 0 ; document.getElementById('job_' + i) != null ; ++i) { - updateJobSecteur(i, 'job_' + i, 'jobs[' + i + ']', - document.forms.prof_annu["jobs[" + i + "][ss_secteur]"].value); - } - registerEnterpriseAutocomplete(-1); - break; - } -} - -var applisType; -var applisTypeAll; - -// General - -var subgrades; -var names; -function fillType(selectCtrl, appli, fill) -{ - var i; - var i0=0; - - for (i = selectCtrl.options.length; i >=0; i--) { - selectCtrl.options[i] = null; - } - - if (fill || appli <0) { - selectCtrl.options[0] = new Option(' '); - i0=1; - } - if (appli>=0) - for (i=0; i < applisType[appli].length; i++) - selectCtrl.options[i0+i] = new Option(applisType[appli][i]); - else if (fill) - for (i=0; i < applisTypeAll.length; i++) - selectCtrl.options[i0+i] = new Option(applisTypeAll[i]); -} - - -function selectType(selectCtrl, type) -{ - for (i = 0; i < selectCtrl.options.length; i++) { - if (selectCtrl.options[i].text == type) - selectCtrl.selectedIndex=i; - } -} - - - -// Addresses - -function removeObject(id, pref) -{ - document.getElementById(id).style.display = "none"; - document.forms.prof_annu[pref + "[removed]"].value = "1"; -} - -function restoreObject(id, pref) -{ - document.getElementById(id).style.display = ''; - document.forms.prof_annu[pref + "[removed]"].value = "0"; -} - -function getAddressElement(adrid, adelement) -{ - return document.forms.prof_annu["addresses[" + adrid + "][" + adelement + "]"]; -} - -function checkCurrentAddress(newCurrent) -{ - var hasCurrent = false; - var i = 0; - while (getAddressElement(i, 'pub') != null) { - var radio = getAddressElement(i, 'current'); - var removed = getAddressElement(i, 'removed'); - if (removed.value == "1" && radio.checked) { - radio.checked = false; - } else if (radio.checked && radio != newCurrent) { - radio.checked = false; - } else if (radio.checked) { - hasCurrent = true; - } - i++; - } - if (!hasCurrent) { - i = 0; - while (getAddressElement(i, 'pub') != null) { - var radio = getAddressElement(i, 'current'); - var removed = getAddressElement(i, 'removed'); - if (removed.value != "1") { - radio.checked= true; - return; - } - i++; - } - } -} - -function removeAddress(id, pref) -{ - removeObject(id, pref); - checkCurrentAddress(null); - if (document.forms.prof_annu[pref + '[datemaj]'].value != '') { - document.getElementById(id + '_grayed').style.display = ''; - } -} - -function restoreAddress(id, pref) -{ - document.getElementById(id + '_grayed').style.display = 'none'; - checkCurrentAddress(null); - restoreObject(id, pref); -} - -function addAddress() -{ - var i = 0; - while (getAddressElement(i, 'pub') != null) { - i++; - } - $("#add_adr").before('
    '); - Ajax.update_html('addresses_' + i + '_cont', 'profile/ajax/address/' + i, checkCurrentAddress); -} - -function addTel(id) -{ - var i = 0; - var adid = 'addresses_' + id; - var tel = adid + '_tel_'; - while (document.getElementById(tel + i) != null) { - i++; - } - $('#' + adid + '_add_tel').before('
    '); - Ajax.update_html(tel + i, 'profile/ajax/tel/' + id + '/' + i); -} - - -// Geoloc - -function validGeoloc(id, pref) -{ - document.getElementById(id + '_geoloc').style.display = 'none'; - document.getElementById(id + '_geoloc_error').style.display = 'none'; - document.getElementById(id + '_geoloc_valid').style.display = 'none'; - document.forms.prof_annu[pref + "[parsevalid]"].value = "1"; - document.forms.prof_annu[pref + "[text]"].value = document.forms.prof_annu[pref + "[geoloc]"].value; - document.forms.prof_annu[pref + "[cityid]"].value = document.forms.prof_annu[pref + "[geoloc_cityid]"].value; - attachEvent(document.forms.prof_annu[pref + "[text]"], "click", - function() { document.forms.prof_annu[pref + "[text]"].blur(); }); - document.forms.prof_annu[pref + "[text]"].className = ''; -} - -function validAddress(id, pref) -{ - document.getElementById(id + '_geoloc').style.display = 'none'; - document.getElementById(id + '_geoloc_error').style.display = 'none'; - document.getElementById(id + '_geoloc_valid').style.display = 'none'; - document.forms.prof_annu[pref + "[parsevalid]"].value = "1"; - attachEvent(document.forms.prof_annu[pref + "[text]"], "click", - function() { document.forms.prof_annu[pref + "[text]"].blur(); }); - document.forms.prof_annu[pref + "[text]"].className = ''; -} - - -// Groups - -function updateGroup(type) -{ - var val = document.forms.prof_annu[type + '_sel'].value; - if (val == '0' || document.getElementById(type + '_' + val) != null) { - document.getElementById(type + '_add').style.display = 'none'; - } else { - document.getElementById(type + '_add').style.display = ''; - } -} - -function removeGroup(cat, id) -{ - $('#' + cat + '_' + id).remove(); - updateGroup(cat); -} - -function addGroup(cat) -{ - var cb = document.forms.prof_annu[cat + '_sel']; - var id = cb.value; - var text = cb.options[cb.selectedIndex].text; - var html = '' - + ' ' - + ' ' - + ' ' - + ' ' - + '
    ' - + text - + '
    ' - + ' ' - + ' cross' - + ' ' - + ' ' - + ''; - $('#' + cat).after(html); - updateGroup(cat); -} - -function updateGroupSubLink(cb) -{ - var href = cb.value ? cb.value : "http://www.polytechnique.net"; - document.getElementById("groupesx_sub").href = href; -} - - -// Medals - -function updateMedal() -{ - var val = document.forms.prof_annu['medal_sel'].value; - if (val == '' || document.getElementById('medal_' + val) != null) { - document.getElementById('medal_add').style.display = 'none'; - } else { - document.getElementById('medal_add').style.display = ''; - } -} - -function getMedalName(id) -{ - document.getElementById('medal_name_' + id).innerHTML = names[id]; -} - -function buildGrade(id, current) -{ - var grade; - var subg = subgrades[id]; - var obj = $('#medal_grade_' + id); - if (!subg) { - obj.prepend(''); - } else { - var html = 'Agrafe : '; - obj.prepend(html); - } -} - -function makeAddProcess(id) -{ - return function(data) - { - $('#medals').after(data); - updateMedal(); - getMedalName(id); - buildGrade(id, 0); - }; -} - -function addMedal() -{ - var id = document.forms.prof_annu['medal_sel'].value; - $.get(platal_baseurl + 'profile/ajax/medal/' + id, makeAddProcess(id)); -} - -function removeMedal(id) -{ - $("#medal_" + id).remove(); - updateMedal(); -} - - -// Jobs - -function removeJob(id, pref) -{ - document.getElementById(id + '_cont').style.display = 'none'; - if (document.forms.prof_annu[pref + '[new]'].value == '0') { - document.getElementById(id + '_grayed').style.display = ''; - document.getElementById(id + '_grayed_name').innerHTML = - document.forms.prof_annu[pref + "[name]"].value.replace('<', '<'); - } - document.forms.prof_annu[pref + "[removed]"].value = "1"; -} - -function restoreJob(id, pref) -{ - document.getElementById(id + '_cont').style.display = ''; - document.getElementById(id + '_grayed').style.display = 'none'; - document.forms.prof_annu[pref + "[removed]"].value = "0"; -} - -function updateJobSecteur(nb, id, pref, sel) -{ - var secteur = document.forms.prof_annu[pref + '[secteur]'].value; - if (secteur == '') { - secteur = '-1'; - } - Ajax.update_html(id + '_ss_secteur', 'profile/ajax/secteur/' +nb + '/' + secteur + '/' + sel); -} - -function makeAddJob(id) -{ - return function(data) - { - $('#add_job').before(data); - registerEnterpriseAutocomplete(id); - updateSecteur('job_' + id, 'jobs[' + id + ']', ''); - }; -} - -function addJob() -{ - var i = 0; - while (document.getElementById('job_' + i) != null) { - ++i; - } - $.get(platal_baseurl + 'profile/ajax/job/' + i, makeAddJob(i)); -} - - -// Skills - -function updateSkill(cat) -{ - var val = document.forms.prof_annu[cat + '_sel'].value; - var show = true; - if (val == '') { - show = false; - } - if (document.getElementById(cat + '_' + val) != null) { - show = false; - } - document.getElementById(cat + '_add').style.display = show ? '' : 'none'; -} - -function addSkill(cat) -{ - var sel = document.forms.prof_annu[cat + '_sel']; - var val = sel.value; - var text = sel.options[sel.selectedIndex].text; - $.get(platal_baseurl + 'profile/ajax/skill/' + cat + '/' + val, - function(data) { - $('#' + cat).append(data); - document.getElementById(cat + '_' + val + '_title').innerHTML = text; - updateSkill(cat); - }); -} - -function removeSkill(cat, id) -{ - $('#' + cat + '_' + id).remove(); - updateSkill(cat); -} - - -// Mentor - -function updateCountry() -{ - var val = document.forms.prof_annu.countries_sel.value; - var show = true; - if (val == '' || val == '00') { - show = false; - } - if (document.getElementById('countries_' + val) != null) { - show = false; - } - document.getElementById('countries_add').style.display = show ? '' : 'none'; -} - -function addCountry() -{ - var cb = document.forms.prof_annu.countries_sel; - var val = cb.value; - var text = cb.options[cb.selectedIndex].text; - var html = '
    ' - + ' ' - + ' ' - + ' ' - + '
    ' + text + '
    ' - + ' ' - + '
    '; - $('#countries').append(html); - updateCountry(); -} - -function removeCountry(id) -{ - $('#countries_' + id).remove(); - updateCountry(); -} -function updateSSecteur() -{ - var s = document.forms.prof_annu.secteur_sel.value; - var ss = document.forms.prof_annu['jobs[-1][ss_secteur]'].value; - var show = true; - if (s == '' || ss == '') { - show = false; - } - if (document.getElementById('secteurs_' + s + '_' + ss) != null) { - show = false; - } - document.getElementById('secteurs_add').style.display = show ? 'block' : 'none'; -} - -function updateSecteur() -{ - var secteur = document.forms.prof_annu.secteur_sel.value; - if (secteur == '') { - secteur = '-1'; - document.getElementById('ss_secteur_sel').innerHTML = ''; - return; - } - $.get(platal_baseurl + 'profile/ajax/secteur/-1/' + secteur, - function(data) { - data = '' + data; - document.getElementById('ss_secteur_sel').innerHTML = data; - attachEvent(document.forms.prof_annu['jobs[-1][ss_secteur]'], 'change', updateSSecteur); - }); -} - -function addSecteur() -{ - var scb = document.forms.prof_annu.secteur_sel; - var s = scb.value; - var st = scb.options[scb.selectedIndex].text; - - var sscb = document.forms.prof_annu['jobs[-1][ss_secteur]']; - var ss = sscb.value; - var sst = sscb.options[sscb.selectedIndex].text; - - var html = '
    ' - + ' ' - + ' ' - + ' ' - + ' ' - + ' ' + sst - + '
    '; - $('#secteurs').append(html); - updateSSecteur(); -} - -function removeSecteur(s, ss) -{ - $('#secteurs_' + s + '_' + ss).remove(); - updateSSecteur(); -} - -function registerEnterpriseAutocomplete(id) -{ - $(".enterprise_name").each( - function() { - if (id == -1 || this.name == "jobs[" + id + "][name]") { - $(this).autocomplete(platal_baseurl + "search/autocomplete/entreprise", - { - selectOnly:1, - field:this.name, - matchSubset:0, - width:$(this).width() - }); - } - } - ); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/secure_hash.js b/htdocs/javascript/secure_hash.js deleted file mode 100644 index 66dca47..0000000 --- a/htdocs/javascript/secure_hash.js +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - -function hash_encrypt(a) { - return hex_sha1(a); -} - -var hexa_h = "0123456789abcdef"; - -function dechex(a) { - return hexa_h.charAt(a); -} - -function hexdec(a) { - return hexa_h.indexOf(a); -} - -function hash_xor(a, b) { - var c,i,j,k; - c = ""; - i = a.length; - j = b.length; - if (i < j) { - var d; - d = a; a = b; b = d; - k = i; i = j; j = k; - } - for (k = 0; k < j; k++) - c += dechex(hexdec(a.charAt(k)) ^ hexdec(b.charAt(k))); - for (; k < i; k++) - c += a.charAt(k); - return c; -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/sha1.js b/htdocs/javascript/sha1.js deleted file mode 100644 index a546ee3..0000000 --- a/htdocs/javascript/sha1.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} -function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} -function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} -function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} -function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} -function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} - -/* - * Perform a simple self-test to see if the VM is working - */ -function sha1_vm_test() -{ - return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; -} - -/* - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ -function core_sha1(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - -/* - * Perform the appropriate triplet combination function for the current - * iteration - */ -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - -/* - * Determine the appropriate additive constant for the current iteration - */ -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - -/* - * Calculate the HMAC-SHA1 of a key and some data - */ -function core_hmac_sha1(key, data) -{ - var bkey = str2binb(key); - if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); - return core_sha1(opad.concat(hash), 512 + 160); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert an 8-bit or 16-bit string to an array of big-endian words - * In 8-bit function, characters >255 have their hi-byte silently ignored. - */ -function str2binb(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); - return bin; -} - -/* - * Convert an array of big-endian words to a string - */ -function binb2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); - return str; -} - -/* - * Convert an array of big-endian words to a hex string. - */ -function binb2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of big-endian words to a base-64 string - */ -function binb2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/wiki.js b/htdocs/javascript/wiki.js deleted file mode 100644 index cf2cc18..0000000 --- a/htdocs/javascript/wiki.js +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003-2008 Polytechnique.org * - * http://opensource.polytechnique.org/ * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - ***************************************************************************/ - - -Nix = { - map: null, - convert: function(a) { - Nix.init(); - var s = ''; - for (i = 0; i < a.length ; i++) { - var b = a.charAt(i); - s += ((b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z') ? Nix.map[b] : b); - } - return s; - }, - init: function() { - if (Nix.map != null) - return; - var map = new Array(); - var s='abcdefghijklmnopqrstuvwxyz'; - for (i = 0; i < s.length; i++) - map[s.charAt(i)] = s.charAt((i+13)%26); - for (i=0; i'+time; -} - -// }}} -// {{{ Search Engine - -function canAddSearchEngine() -{ - if (((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) - || ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function"))) { - return true; - } - return false; -} - -function addSearchEngine() -{ - var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; - if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { - window.sidebar.addSearchEngine( - searchURI, - "http://www.polytechnique.org/images/xorg.png", - "Annuaire Polytechnique.org", - "Academic"); - } else { - try { - window.external.AddSearchProvider(searchURI); - } catch(e) { - alert("Impossible d'installer la barre de recherche"); - } - } -} - -// }}} -// {{{ Events - -function eventClosure(obj, methodName) { - return (function(e) { - e = e || window.event; - return obj[methodName](e); - }); -} - -function attachEvent(obj, evt, f, useCapture) { - if (!useCapture) useCapture = false; - - if (obj.addEventListener) { - obj.addEventListener(evt, f, useCapture); - return true; - } else if (obj.attachEvent) { - return obj.attachEvent("on"+evt, f); - } - return false; -} - -// }}} -// {{{ dynpost() - -function dynpost(action, values) -{ - var body = document.getElementsByTagName('body')[0]; - - var form = document.createElement('form'); - form.action = action; - form.method = 'post'; - - body.appendChild(form); - - for (var k in values) { - var input = document.createElement('input'); - input.type = 'hidden'; - input.name = k; - input.value = values[k]; - form.appendChild(input); - } - - form.submit(); -} - -function dynpostkv(action, k, v) -{ - var dict = {}; - dict[k] = v; - dynpost(action, dict); -} - -// }}} -// {{{ function RegExp.escape() - -RegExp.escape = function(text) { - if (!arguments.callee.sRE) { - var specials = [ - '/', '.', '*', '+', '?', '|', - '(', ')', '[', ']', '{', '}', - '\\', '^' , '$' - ]; - arguments.callee.sRE = new RegExp( - '(\\' + specials.join('|\\') + ')', 'g' - ); - } - return text.replace(arguments.callee.sRE, '\\$1'); -} - -// }}} - -/*************************************************************************** - * POPUP THINGS - */ - -// {{{ function popWin() - -function popWin(theNode,w,h) { - window.open(theNode.href, '_blank', - 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); -} - -// }}} -// {{{ function goodiesPopup() - -function goodiesPopup(node) { - if (node.href.indexOf('ical') > -1) { - __goodies_popup(node, __goodies_ical_sites, 'Calendrier iCal'); - } else if (node.href.indexOf('rss') > -1 && node.href.indexOf('prefs/rss') < 0 && (node.href.indexOf('xml') > -1 || node.href.indexOf('hash'))) { - __goodies_popup(node, __goodies_rss_sites, 'Fil rss'); - } -} - -function disableGoodiesPopups() { - __goodies_active = false; -} - -var __goodies_active = true; -var __goodies_ical_sites = [ - {'url_prefix': '', - 'img': 'images/icons/calendar_view_day.gif', - 'title': 'Calendrier iCal'}, - {'url_prefix': 'http://www.google.com/calendar/render?cid=', - 'img': 'images/goodies/add-google-calendar.gif', - 'title': 'Ajouter à Google Calendar'}, - {'url_prefix': 'https://www.google.com/calendar/hosted/polytechnique.org/render?cid=', - 'img': 'images/goodies/add-google-calendar.gif', - 'title': 'Ajouter à Google Apps / Calendar'} -]; -var __goodies_rss_sites = [ - {'url_prefix': '', - 'img': 'images/icons/feed.gif', - 'title': 'Fil rss'}, - {'url_prefix': 'http://fusion.google.com/add?feedurl=', - 'img': 'images/goodies/add-google.gif', - 'alt': 'Add to Google', - 'title': 'Ajouter à iGoogle/Google Reader'}, - {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=', - 'img': 'images/goodies/add-netvibes.gif', - 'title': 'Ajouter à Netvibes'}, - {'url_prefix': 'http://add.my.yahoo.com/content?.intl=fr&url=', - 'img': 'images/goodies/add-yahoo.gif', - 'alt': 'Add to My Yahoo!', - 'title': 'Ajouter à My Yahoo!'}, - {'url_prefix': 'http://www.newsgator.com/ngs/subscriber/subext.aspx?url=', - 'img': 'images/goodies/add-newsgator.gif', - 'alt': 'Subscribe in NewsGator Online', - 'title': 'Ajouter à Newsgator'} -]; - -function __goodies_popupText(url, sites) { - var text = '
    '; - for (var site in sites) { - var s_alt = (sites[site]["alt"] ? sites[site]["alt"] : ""); - var s_img = sites[site]["img"]; - var s_title = (sites[site]["title"] ? sites[site]["title"] : ""); - var s_url = (sites[site]["url_prefix"].length > 0 ? sites[site]["url_prefix"] + escape(url) : url); - - text += '' + s_alt + '
    '; - } - text += 'Plus de bonus ...
    ' - return text; -} - -function __goodies_popup(node, sites, default_title) { - var mouseover_cb = function() { - if (__goodies_active) { - var rss_text = __goodies_popupText(node.href, sites); - var rss_title = (node.title ? node.title : default_title); - return overlib(rss_text, CAPTION, rss_title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150); - } - } - var mouseout_cb = function() { - nd(); - } - - node.onmouseover = mouseover_cb; - node.onmouseout = mouseout_cb; -} - -// }}} -// {{{ function auto_links() - -function auto_links() { - auto_links_nodes(document.getElementsByTagName('a')); - auto_links_nodes(document.getElementsByTagName('link')); -} - -function auto_links_nodes(nodes) { - url = document.URL; - fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); - light = (url.indexOf('display=light') > url.indexOf('?')); - for(var i=0; i < nodes.length; i++) { - node = nodes[i]; - if(!node.href || node.className == 'xdx' - || node.href.indexOf('mailto:') > -1 || node.href.indexOf('javascript:') > -1) - continue; - if (node.href.indexOf(fqdn) < 0 || node.className == 'popup') { - node.onclick = function () { window.open(this.href); return false; }; - } - if (node.href.indexOf(fqdn) > -1 && light) { - node.href = node.href.replace(/([^\#\?]*)\??([^\#]*)(\#.*)?/, - "$1?display=light&$2$3"); - } - if (node.href.indexOf('rss') > -1 || node.href.indexOf('ical') > -1) { - node.href = node.href.replace(/https/, 'http'); - if (node.href.indexOf('http') < 0) { - node.href = 'http://' + fqdn + '/' + node.href; - } - if (node.nodeName.toLowerCase() == 'a') { - goodiesPopup(node); - } - } - if(node.className == 'popup2') { - node.onclick = function () { popWin(this,840,600); return false; }; - } - if(node.className == 'popup3') { - node.onclick = function () { popWin(this, 640, 800); return false; }; - } - if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(node.className)) { - var w = matches[1], h = matches[2]; - node.onclick = function () { popWin(this,w,h); return false; }; - } - } -} - -// }}} - - -/*************************************************************************** - * Password check - */ - -// {{{ function checkPassword - -function getType(char) { - if (char >= 'a' && char <= 'z') { - return 1; - } else if (char >= 'A' && char <= 'Z') { - return 2; - } else if (char >= '0' && char <= '9') { - return 3; - } else { - return 4; - } -} - -function checkPassword(box) { - var prev = 0; - var prop = 0; - var pass = box.value; - var types = Array(0, 0, 0, 0, 0); - var firstType = true; - for (i = 0 ; i < pass.length ; ++i) { - type = getType(pass.charAt(i)); - if (prev != 0 && prev != type) { - prop += 5; - } - prop += i; - if (types[type] == 0 && !firstType) { - prop += 15; - } else { - firstType = false; - } - types[type]++; - prev = type; - } - if (pass.length < 6) { - prop *= 0.75; - } - if (prop > 100) { - prop = 100; - } else if (prop < 0) { - prop = 0; - } - if (prop >= 60) { - color = "#4f4"; - bgcolor = "#050"; - ok = true; - } else if (prop >= 40) { - color = "#ff4"; - bgcolor = "#750"; - ok = true; - } else { - color = "#f20"; - bgcolor = "#700"; - ok = false; - } - $("#passwords_measure") - .stop() - .animate({ width: prop + "%", - backgroundColor: color - }, 750) - .parent().stop() - .animate({ backgroundColor: bgcolor }, 750); - var submitButton = $(":submit[@name='" + passwordprompt_submit + "']"); - if (ok && pass.length >= 6) { - submitButton.removeAttr("disabled"); - } else { - submitButton.attr("disabled", "disabled"); - } -} - -// }}} - - -/*************************************************************************** - * The real OnLoad - */ - -// {{{ function pa_onload - -if (!attachEvent(window, 'load', auto_links)) { - window.onload = auto_links; -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/listes_redirect.php b/htdocs/listes_redirect.php deleted file mode 100644 index 432ca6f..0000000 --- a/htdocs/listes_redirect.php +++ /dev/null @@ -1,57 +0,0 @@ -fetchOneCell()) { - http_redirect("http://www.polytechnique.net/$gpx/lists/$action/$mbox$sup"); - } -} -?> - - - - 404 Not Found - - -

    Not Found

    - The requested URL was not found on this server.

    -


    -
    Apache Server at www.carva.org Port 80
    - - - diff --git a/htdocs/webredirect.php b/htdocs/webredirect.php deleted file mode 100644 index 0de8baa..0000000 --- a/htdocs/webredirect.php +++ /dev/null @@ -1,61 +0,0 @@ -fetchOneCell()) { - $url = preg_replace('@/+$@', '', $url); - if ($path) { - http_redirect("http://$url/$path"); - } else { - http_redirect("http://$url"); - } -} - -header("HTTP/1.0 404 Not Found"); - -?> - - - - 404 Not Found - - -

    Not Found

    - The requested URL was not found on this server.

    -


    -
    Apache Server at www.carva.org Port 80
    - - - diff --git a/htdocs/xnet.php b/htdocs/xnet.php deleted file mode 100644 index e6daefe..0000000 --- a/htdocs/xnet.php +++ /dev/null @@ -1,38 +0,0 @@ -run(); - - exit; -} - -/*** WIKI CODE ***/ - -include 'wiki/engine.php'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/htdocs/xorg.opensearch.xml b/htdocs/xorg.opensearch.xml deleted file mode 100644 index e9161f8..0000000 --- a/htdocs/xorg.opensearch.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - Annuaire Polytechnique.org - Recherche rapide dans l'annuaire de Polytechnique.org - polytechnique alumni - contact@polytechnique.org - - fr_FR - UTF-8 - UTF-8 - diff --git a/htdocs/xorg.php b/htdocs/xorg.php deleted file mode 100644 index 3dc92b2..0000000 --- a/htdocs/xorg.php +++ /dev/null @@ -1,39 +0,0 @@ - 'Z')) { - $platal = new Platal('auth', 'carnet', 'email', 'events', 'forums', - 'geoloc', 'lists', 'marketing', 'payment', 'platal', - 'profile', 'register', 'search', 'stats', 'admin', - 'newsletter', 'axletter', 'bandeau', 'survey', - 'gadgets', 'googleapps'); - $platal->run(); - exit; -} - -/*** WIKI CODE ***/ - -include 'wiki/engine.php'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/.gitignore b/include/.gitignore deleted file mode 100644 index c68a431..0000000 --- a/include/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/globals.inc.php diff --git a/include/applis.func.inc.php b/include/applis.func.inc.php deleted file mode 100644 index 82235db..0000000 --- a/include/applis.func.inc.php +++ /dev/null @@ -1,91 +0,0 @@ -'; - $res = XDB::iterator("select * from applis_def order by text"); - while ($arr_appli = $res->next()) { - $html .= '\n", - $my_id, ($current==$my_id?"selected='selected'":""), $my_pays); - } - return $html; -} - -/** donne la liste deroulante des regions pour un pays - * @param $pays le pays dont on veut afficher les regions - * @param $current la region actuellement selectionnee - */ -function geoloc_region($country, $current, $avail_only = false) -{ - if ($avail_only) { - $res = XDB::iterRow('SELECT r.region, r.name - FROM geoloc_region AS r - INNER JOIN adresses AS a ON (a.country = r.a2 AND a.region = r.region) - WHERE r.a2 = {?} - GROUP BY r.region - ORDER BY r.name', $country); - } else { - $res = XDB::iterRow('SELECT region,name - FROM geoloc_region - WHERE a2 = {?} - ORDER BY name', $country); - } - $html = ""; - while (list($regid, $regname) = $res->next()) { - $html .= sprintf("\n", - $regid, ($current==$regid?"selected='selected'":""), $regname); - } - return $html; -} -// }}} - -// {{{ get_address_infos($txt) -/** retrieve the infos on a text address - * store on the fly the info of the city concerned - * @param $txt the raw text of an address - */ -function get_address_infos($txt) -{ - global $globals; - $url = $globals->geoloc->webservice_url."address.php?precise=1&txt=" . urlencode($txt); - if (!($f = @fopen($url, 'r'))) return false; - $keys = explode('|',fgets($f)); - $vals = explode('|',fgets($f)); - $infos = array(); - foreach ($keys as $i=>$key) { - if($vals[$i]) { - if ($key == 'sql') { - $infos[$key] = $vals[$i]; - } else { - $val = strtr($vals[$i], array(chr(197).chr(147) => "œ")); - $infos[$key] = $val; - } - } - } - if (isset($infos['sql']) && $infos['sql']) - XDB::execute("REPLACE INTO geoloc_city - VALUES ".$infos['sql']); - if (isset($infos['display']) && $infos['display']) - XDB::execute("UPDATE geoloc_pays - SET display = {?} - WHERE a2 = {?}", $infos['display'], $infos['country']); - if (isset($infos['cityid'])) { - fix_cities_not_on_map(1, $infos['cityid']); - if (floatval($infos['precise_lat']) && floatval($infos['precise_lon'])) { - $res = XDB::query("SELECT c.lat / 100000, c.lon / 100000 - FROM geoloc_city AS c - WHERE c.id = {?}", $infos['cityid']); - if ($res->numRows()) { - list($glat, $glng) = $res->fetchOneRow(); - $infos['precise_lat'] = $glat; - $infos['precise_lon'] = $glng; - } - } - } - return $infos; -} -// }}} - -// {{{ get_cities_maps($array) -/* get all the maps id of the cities contained in an array */ -function get_cities_maps($array) -{ - global $globals; - implode("\n",$array); - $url = $globals->geoloc->webservice_url."findMaps.php?datatext=".urlencode(implode("\n", $array)); - if (!($f = @fopen($url, 'r'))) return false; - $maps = array(); - while (!feof($f)) - { - $l = trim(fgets($f)); - $tab = explode(';', $l); - $i = $tab[0]; - unset($tab[0]); - $maps[$i] = $tab; - } - return $maps; -} -// }}} - -// {{{ get_new_maps($url) -/** set new maps from url **/ -function get_new_maps($url) -{ - if (!($f = @fopen($url, 'r'))) { - return false; - } - XDB::query('TRUNCATE TABLE geoloc_maps'); - $s = ''; - while (!feof($f)) { - $l = fgetcsv($f, 1024, ';', '"'); - foreach ($l as $i => $val) { - if ($val != 'NULL') { - $l[$i] = '\''.addslashes($val).'\''; - } - } - $s .= ',('.implode(',',$l).')'; - } - XDB::execute('INSERT INTO geoloc_maps VALUES '.substr($s, 1)); - return true; -} -// }}} - -// {{{ get_address_text($adr) -/** make the text of an address that can be read by a mailman - * @param $adr an array with all the usual fields - */ -function get_address_text($adr) -{ - $t = ""; - if (isset($adr['adr1']) && $adr['adr1']) $t.= $adr['adr1']; - if (isset($adr['adr2']) && $adr['adr2']) $t.= "\n".$adr['adr2']; - if (isset($adr['adr3']) && $adr['adr3']) $t.= "\n".$adr['adr3']; - $l = ""; - if (isset($adr['display']) && $adr['display']) { - $keys = explode(' ', $adr['display']); - foreach ($keys as $key) { - if (isset($adr[$key])) { - $l .= " ".$adr[$key]; - } else { - $l .= " ".$key; - } - } - if ($l) substr($l, 1); - } elseif ($adr['country'] == 'US' || $adr['country'] == 'CA' || $adr['country'] == 'GB') { - if ($adr['city']) $l .= $adr['city'].",\n"; - if ($adr['region']) $l .= $adr['region']." "; - if ($adr['postcode']) $l .= $adr['postcode']; - } else { - if (isset($adr['postcode']) && $adr['postcode']) $l .= $adr['postcode']." "; - if (isset($adr['city']) && $adr['city']) $l .= $adr['city']; - } - if ($l) $t .= "\n".trim($l); - if ($adr['country'] != '00' && (!$adr['countrytxt'] || $adr['countrytxt'] == strtoupper($adr['countrytxt']))) { - $res = XDB::query("SELECT pays FROM geoloc_pays WHERE a2 = {?}", $adr['country']); - $adr['countrytxt'] = $res->fetchOneCell(); - } - if (isset($adr['countrytxt']) && $adr['countrytxt']) { - $t .= "\n".$adr['countrytxt']; - } - return trim($t); -} -// }}} - -// {{{ compare_addresses_text($a, $b) -/** compares if two address matches - * @param $a the raw text of an address - * @param $b the raw text of a complete valid address - */ -function compare_addresses_text($a, $b) -{ - $ta = strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $a)); - $tb = strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $b)); - - $la = explode("\n", $ta); - $lb = explode("\n", $tb); - - if (count($lb) > count($la) + 1) { - return false; - } - foreach ($la as $i=>$l) { - if (levenshtein(trim($l), trim($lb[$i])) > 3) { - return false; - } - } - return true; -} - -// }}} - -function empty_address() { - return Array( - "adr1" => "", - "adr2" => "", - "adr3" => "", - "cityid" => NULL, - "city" => "", - "postcode" => "", - "region" => "", - "regiontxt" => "", - "country" => "00", - "countrytxt" => "", - "precise_lat" => "", - "precise_lon" => ""); -} - -// create a simple address from a text without geoloc -function cut_address($txt) -{ - $txt = str_replace("\r\n", "\n", $txt); - ereg("^([^\n]*)(\n([^\n]*)(\n(.*))?)?$", trim($txt), $a); - return array("adr1" => trim($a[1]), "adr2" => trim($a[3]), "adr3" => trim(str_replace("\n", " ", $a[5]))); -} - -// {{{ localize_addresses($uid) -/* localize all the address of a user and modify the database - * if the new address match with the old one - * @param $uid the id of the user - */ -function localize_addresses($uid) -{ - $res = XDB::iterator("SELECT * - FROM adresses - WHERE uid = {?} and (cityid IS NULL OR cityid = 0)", $uid); - $erreur = Array(); - - while ($a = $res->next()) { - $new = get_address_infos($ta = get_address_text($a)); - if (compare_addresses_text($ta, get_address_text($new))) { - XDB::execute("UPDATE adresses - SET adr1 = {?}, adr2 = {?}, adr3 = {?}, - cityid = {?}, city = {?}, postcode = {?}, - region = {?}, regiontxt = {?}, country = {?}, - glat = {?}, glng = {?} - WHERE uid = {?} AND adrid = {?}", - $new['adr1'], $new['adr2'], $new['adr3'], - $new['cityid'], $new['city'], $new['postcode'], - $new['region'], $new['regiontxt'], $new['country'], - $new['precise_lat'], $new['precise_lon'], - $uid, $a['adrid']); - $new['store'] = true; - if (!$new['cityid']) { - $erreur[$a['adrid']] = $new; - } - } else { - $new['store'] = false; - $erreur[$a['adrid']] = $new; - } - } - return $erreur; -} -// }}} - -// {{{ synchro_city($id) -/** synchronise the local geoloc_city base to geoloc.org - * @param $id the id of the city to synchronize - */ -function synchro_city($id) -{ - global $globals; - $url = $globals->geoloc->webservice_url."cityFinder.php?method=id&id=".$id."&out=sql"; - if (!($f = @fopen($url, 'r'))) { - return false; - } - $s = fgets($f); - if ($s) { - return XDB::execute("REPLACE INTO geoloc_city VALUES ".$s) > 0; - } -} - // }}} - -// {{{ function fix_cities_not_on_map($limit) -function fix_cities_not_on_map($limit=false, $cityid=false) -{ - $missing = XDB::query("SELECT c.id - FROM geoloc_city AS c - LEFT JOIN geoloc_city_in_maps AS m ON(c.id = m.city_id) - WHERE m.city_id IS NULL" - . ($cityid ? " AND c.id = '" . $cityid . "'" : "" ) - . ($limit ? " LIMIT $limit" : "" )); - $maps = get_cities_maps($missing->fetchColumn()); - if ($maps) { - $values = ""; - foreach ($maps as $cityid => $maps_c) { - foreach ($maps_c as $map_id) { - $values .= ",($cityid, $map_id, '')"; - } - } - XDB::execute("REPLACE INTO geoloc_city_in_maps - VALUES ".substr($values, 1)); - } else { - return false; - } - return true; -} - -function set_smallest_levels() -{ - $maxlengths = XDB::iterRow("SELECT MAX(LENGTH(gm.path)), gcim.city_id - FROM geoloc_city_in_maps AS gcim - INNER JOIN geoloc_maps AS gm USING ( map_id ) - GROUP BY gcim.city_id"); - while (list($length, $id) = $maxlengths->next()) { - XDB::execute("UPDATE geoloc_city_in_maps AS gcim - INNER JOIN geoloc_maps AS gm USING(map_id) - SET gcim.infos = IF(LENGTH(gm.path) = {?}, 'smallest', '') - WHERE gcim.city_id = {?}", $length, $id); - } - return true; -} -// }}} - - -function geoloc_to_x($lon, $lat) -{ - return deg2rad(1) * $lon *100; -} - -function geoloc_to_y($lon, $lat) -{ - if ($lat < -75) { - return latToY(-75); - } - if ($lat > 75) { - return latToY(75); - } - return -100 * log(tan(pi()/4 + deg2rad(1)/2*$lat)); -} - -function size_of_city($nb) -{ - $s = round(log($nb + 1)*2,2); - if ($s < 1) { - return 1; - } - return $s; -} - -function size_of_territory($nb) -{ - return size_of_city($nb); -} - -function geoloc_getData_subcities($mapid, $SFields, &$cities, $direct=true) -{ - if ($SFields instanceof UserSet) { - $set = $SFields; - $SFields = array(); - } else { - $set = new UserSet(); - } - for ($i_mapfield=0; $i_mapfield < count($SFields) ; $i_mapfield++) { - if ($SFields[$i_mapfield]->fieldFormName == 'mapid') { - break; - } - } - $SFields[$i_mapfield] = new MapSField('mapid', - array('gcim.map_id'), - array('adresses','geoloc_city_in_maps'), - array('am','gcim'), - array(getadr_join('am'), 'am.cityid = gcim.city_id'), - $mapid); - $fields = new SFieldGroup(true, $SFields); - $where = $fields->get_where_statement(); - $joins = $fields->get_select_statement(); - if ($where) { - $where .= ' AND '; - } - $cityres = $set->get('gc.id, - gc.lon / 100000 AS x, gc.lat/100000 AS y, - gc.name, - COUNT(u.user_id) AS pop, - SUM(u.promo % 2) AS yellow', - "$joins - LEFT JOIN geoloc_city AS gc ON(gcim.city_id = gc.id)", - $where . ($direct ? "gcim.infos = 'smallest'" : '1'), - 'gc.id, gc.alias', - 'pop DESC'); - while ($c = $cityres->next()) { - if ($c['pop'] > 0) { - $city = $c; - $city['x'] = geoloc_to_x($c['x'], $c['y']); - $city['y'] = geoloc_to_y($c['x'], $c['y']); - $city['size'] = size_of_city($c['pop']); - $cities[$c['id']] = $city; - } - } -} - -function geoloc_getData_subcountries($mapid, $sin, $minentities) -{ - $countries = array(); - $cities = array(); - - if ($mapid === false) { - $wheremapid = "WHERE gm.parent IS NULL"; - } else { - $wheremapid = "WHERE gm.parent = {?}"; - } - $submapres = XDB::iterator( - "SELECT gm.map_id AS id, gm.name, gm.x, gm.y, gm.xclip, gm.yclip, - gm.width, gm.height, gm.scale, 1 AS rat - FROM geoloc_maps AS gm - ". $wheremapid, Env::v('mapid','')); - - global $globals; - - while ($c = $submapres->next()) { - $country = $c; - $country['color'] = 0xFFFFFF; - $country['swf'] = $globals->geoloc->webservice_url."maps/mercator/map_".$c['id'].".swf"; - $countries[$c['id']] = $country; - } - - if ($mapid === false) { - return array($countries, $cities); - } - - geoloc_getData_subcities(Env::i('mapid'), $sin, $cities); - $nbcities = count($cities); - $nocity = $nbcities == 0; - if ($sin instanceof UserSet) { - $set = $sin; - $SFields = array(); - } else { - $set = new UserSet(); - $SFields = $sin; - } - - for ($i_mapfield=0; $i_mapfield < count($SFields) ; $i_mapfield++) { - if ($SFields[$i_mapfield]->fieldFormName == 'mapid') { - break; - } - } - $SFields[$i_mapfield] = new MapSField('mapid', - array('map.parent'), - array('adresses','geoloc_city_in_maps','geoloc_maps'), - array('am','gcim','map'), - array(getadr_join('am'), - 'am.cityid = gcim.city_id', - 'map.map_id = gcim.map_id')); - $fields = new SFieldGroup(true, $SFields); - $where = $fields->get_where_statement(); - $joins = $fields->get_select_statement(); - $countryres = $set->get('map.map_id AS id, - COUNT(u.user_id) AS nbPop, - SUM(u.promo % 2) AS yellow, - COUNT(DISTINCT gcim.city_id) AS nbCities, - SUM(IF(u.user_id IS NULL,0,am.glng)) AS lonPop, - SUM(IF(u.user_id IS NULL, 0,am.glat)) AS latPop', - $joins, - $where, - 'map.map_id', - 'NULL'); - - $maxpop = 0; - $nbentities = $nbcities + $countryres->total(); - while ($c = $countryres->next()) { - $c['latPop'] /= $c['nbPop']; - $c['lonPop'] /= $c['nbPop']; - $c['rad'] = size_of_territory($c['nbPop']); - if ($maxpop < $c['nbPop']) $maxpop = $c['nbPop']; - $c['xPop'] = geoloc_to_x($c['lonPop'], $c['latPop']); - $c['yPop'] = geoloc_to_y($c['lonPop'], $c['latPop']); - @$countries[$c['id']] = array_merge($countries[$c['id']], $c); - - $nbcities += $c['nbCities']; - } - - if ($nocity && $nbcities < $minentities){ - foreach($countries as $i => $c) { - $countries[$i]['nbPop'] = 0; - if (@$c['nbCities'] > 0) { - geoloc_getData_subcities($c['id'], $sin, $cities, false); - } - } - } - - foreach ($countries as $i => $c) { - if (@$c['nbPop'] > 0) { - $lambda = pow($c['nbPop'] / $maxpop,0.3); - $countries[$i]['color'] = 0x0000FF + round((1-$lambda) * 0xFF)*0x010100; - } - } - - return array($countries, $cities); -} -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/globals.inc.php.in b/include/globals.inc.php.in deleted file mode 100644 index 1e15c81..0000000 --- a/include/globals.inc.php.in +++ /dev/null @@ -1,80 +0,0 @@ -bootstrap(array('NbIns'), 'update_NbIns'); - $this->bootstrap(array('NbValid'), 'update_NbValid'); - } - - public function asso($key=null) - { - static $aid = null; - - if (is_null($aid)) { - $gp = Get::v('n'); - if ($p = strpos($gp, '/')) { - $gp = substr($gp, 0, $p); - } - - if ($gp) { - $res = XDB::query('SELECT a.*, d.nom AS domnom, - FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc, - FIND_IN_SET(\'notif_unsub\', a.flags) AS notif_unsub - FROM groupex.asso AS a - LEFT JOIN groupex.dom AS d ON d.id = a.dom - WHERE diminutif = {?}', $gp); - if (!($aid = $res->fetchOneAssoc())) { - $aid = array(); - } - } else { - $aid = array(); - } - } - if (empty($key)) { - return $aid; - } elseif ( isset($aid[$key]) ) { - return $aid[$key]; - } else { - return null; - } - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/googleapps.inc.php b/include/googleapps.inc.php deleted file mode 100644 index 28d9459..0000000 --- a/include/googleapps.inc.php +++ /dev/null @@ -1,455 +0,0 @@ -activate_mail_redirection) { - require_once('emails.inc.php'); - $storage = new EmailStorage($userid, 'googleapps'); - $storage->activate(); - } - - // Sends the 'account created' email to the user, with basic documentation. - $res = XDB::query( - "SELECT FIND_IN_SET('femme', u.flags), prenom - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id) - WHERE a.alias = {?}", - $forlife); - list($sexe, $prenom) = $res->fetchOneRow(); - - $mailer = new PlMailer('googleapps/create.mail.tpl'); - $mailer->assign('account', $account); - $mailer->assign('email', $forlife . '@' . $globals->mail->domain); - $mailer->assign('googleapps_domain', $globals->mailstorage->googleapps_domain); - $mailer->assign('prenom', $prenom); - $mailer->assign('sexe', $sexe); - $mailer->send(); -} - -// Post-processes the successful Google Apps account update queue job. -function post_queue_u_update($job) { - global $globals; - - // If the u_update job was an unsuspend request, re-adds the redirection - // to the Google Apps delivery address, provided the account is active (it might - // have been deleted between the unsuspension and the post-queue processing). - $parameters = json_decode($job['j_parameters'], true); - $forlife = isset($parameters['username']) ? $parameters['username'] : null; - $userid = $job['q_recipient_id']; - if (!$forlife || !$userid) { - return; - } - - if (isset($parameters['suspended']) && $parameters['suspended'] == false) { - require_once('emails.inc.php'); - $account = new GoogleAppsAccount($userid, $forlife); - if ($account->active()) { - // Re-adds the email redirection (if the user did request it). - if ($account->activate_mail_redirection) { - $storage = new EmailStorage($userid, 'googleapps'); - $storage->activate(); - } - - // Sends an email to the account owner. - $res = XDB::query( - "SELECT FIND_IN_SET('femme', u.flags), prenom - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id) - WHERE a.alias = {?}", - $forlife); - list($sexe, $prenom) = $res->fetchOneRow(); - - $mailer = new PlMailer('googleapps/unsuspend.mail.tpl'); - $mailer->assign('account', $account); - $mailer->assign('email', $forlife . '@' . $globals->mail->domain); - $mailer->assign('prenom', $prenom); - $mailer->assign('sexe', $sexe); - $mailer->send(); - } - } -} - -// Reprensentation of an SQL-stored Google Apps account. -// This class is the interface with the gappsd SQL tables: gappsd is the python -// daemon which deals with Google Apps provisioning APIs. -// TODO(vincent.zanotti): add the url of gappsd, when available. -class GoogleAppsAccount -{ - // User identification: user id, and forlife. - private $uid; - public $g_account_name; - - // Local account parameters. - public $sync_password; - public $activate_mail_redirection; - - // Account status, obtained from Google Apps provisioning & reporting APIs. - public $g_account_id; - public $g_status; - public $g_suspension; - public $r_disk_usage; - public $r_creation; - public $r_last_login; - public $r_last_webmail; - public $reporting_date; - - // Pending requests in the gappsd job queue (cf. top note). - public $pending_create; - public $pending_delete; - public $pending_update; - public $pending_update_admin; - public $pending_update_other; - public $pending_update_password; - public $pending_update_suspension; - - // Pending requests in plat/al validation queue. - public $pending_validation_unsuspend; - - // Constructs the account object, by retrieving all informations from the - // GApps account table, from GApps job queue, and from plat/al validation queue. - public function __construct($uid, $account_name = NULL) - { - if ($account_name == NULL) { - require_once 'user.func.inc.php'; - $account_name = get_user_forlife($uid, '_silent_user_callback'); - } - - $this->uid = $uid; - $this->g_account_name = $account_name; - $this->g_status = NULL; - if (!$this->g_account_name) { - return; - } - - $res = XDB::query( - "SELECT l_sync_password, l_activate_mail_redirection, - g_account_name, g_account_id, g_status, g_suspension, r_disk_usage, - UNIX_TIMESTAMP(r_creation) as r_creation, - UNIX_TIMESTAMP(r_last_login) as r_last_login, - UNIX_TIMESTAMP(r_last_webmail) as r_last_webmail - FROM gapps_accounts - WHERE g_account_name = {?}", - $account_name); - if ($account = $res->fetchOneAssoc()) { - $this->sync_password = $account['l_sync_password']; - $this->activate_mail_redirection = $account['l_activate_mail_redirection']; - $this->g_account_id = $account['g_account_id']; - $this->g_status = $account['g_status']; - $this->g_suspension = $account['g_suspension']; - $this->r_disk_usage = $account['r_disk_usage']; - $this->r_creation = $account['r_creation']; - $this->r_last_login = $account['r_last_webmail']; - $this->r_last_webmail = $account['r_last_webmail']; - - $this->load_pending_counts(); - $this->load_pending_validations(); - if ($this->pending_update) { - $this->load_pending_updates(); - } - - $res = XDB::query("SELECT MAX(date) FROM gapps_reporting"); - $this->reporting_date = $res->fetchOneCell(); - } - } - - // Determines if changes to the Google Account are currently waiting in the - // GApps job queue, and initializes the local values accordingly. - private function load_pending_counts() - { - $res = XDB::query( - "SELECT SUM(j_type = 'u_create') AS pending_create, - SUM(j_type = 'u_update') AS pending_update, - SUM(j_type = 'u_delete') AS pending_delete - FROM gapps_queue - WHERE q_recipient_id = {?} AND - p_status IN ('idle', 'active', 'softfail') - GROUP BY j_type", - $this->uid); - $pending = $res->fetchOneAssoc(); - $this->pending_create = $pending['pending_create']; - $this->pending_update = $pending['pending_update']; - $this->pending_delete = $pending['pending_delete']; - - $this->pending_update_admin = false; - $this->pending_update_other = false; - $this->pending_update_password = false; - $this->pending_update_suspension = false; - } - - // Checks for unsuspend requests waiting for validation in plat/al - // validation queue. - private function load_pending_validations() - { - require_once('validations.inc.php'); - $this->pending_validation_unsuspend = - Validate::get_typed_requests_count($this->uid, 'gapps-unsuspend'); - } - - // Retrieves all the pending update job in the gappsd queue for the current - // user, and analyzes the scope of the update (ie. the fields in the user - // account which are going to be updated). - private function load_pending_updates() - { - $res = XDB::iterator( - "SELECT j_parameters - FROM gapps_queue - WHERE q_recipient_id = {?} AND - p_status IN ('idle', 'active', 'softfail') AND - j_type = 'u_update'", - $this->uid); - while ($update = $res->next()) { - $update_data = json_decode($update["j_parameters"], true); - - if (isset($update_data["suspended"])) { - $this->pending_update_suspension = true; - } elseif (isset($update_data["password"])) { - $this->pending_update_password = true; - } elseif (isset($update_data["admin"])) { - $this->pending_update_admin = true; - } else { - $this->pending_update_other = true; - } - } - } - - // Creates a queue job of the @p type, for the user represented by this - // GoogleAppsAccount object, using @p parameters. @p parameters is supposed - // to be a one-dimension array of key-value mappings. - // The created job as a 'immediate' priority, and is scheduled for immediate - // execution. - private function create_queue_job($type, $parameters) { - $parameters["username"] = $this->g_account_name; - XDB::execute( - "INSERT INTO gapps_queue - SET q_owner_id = {?}, q_recipient_id = {?}, - p_entry_date = NOW(), p_notbefore_date = NOW(), - p_priority = 'immediate', - j_type = {?}, j_parameters = {?}", - S::v('uid'), - $this->uid, - $type, - json_encode($parameters)); - } - - - // Returns true if the account is currently active. - public function active() - { - return $this->g_status == 'active'; - } - - // Returns true if the account exists in Google Apps. - public function provisioned() - { - return $this->g_status == 'active' or $this->g_status == 'disabled'; - } - - // Returns true if the account exists, but cannot be used (user-requested - // suspension, or Google-requested suspension). - public function suspended() - { - return $this->g_status == 'disabled'; - } - - - // Changes the GoogleApps password. - public function set_password($password) { - if (!$this->provisioned()) { - return; - } - - if (!$this->pending_update_password) { - $this->create_queue_job('u_update', array('password' => $password)); - $this->pending_update_password = true; - } - } - - - // Changes the password synchronization status ("sync = true" means that the - // Polytechnique.org password will be replicated to the Google Apps account). - public function set_password_sync($sync) { - if (!$this->provisioned()) { - return; - } - - $this->sync_password = $sync; - XDB::execute( - "UPDATE gapps_accounts - SET l_sync_password = {?} - WHERE g_account_name = {?}", - $sync, - $this->g_account_name); - } - - // Suspends the Google Apps account. - public function suspend() { - if (!$this->provisioned()) { - return; - } - - if (!$this->pending_update_suspension) { - $this->create_queue_job('u_update', array('suspended' => true)); - $this->pending_update_suspension = true; - XDB::execute( - "UPDATE gapps_accounts - SET g_status = 'disabled' - WHERE g_account_name = {?} AND g_status = 'active'", - $this->g_account_name); - } - } - - // Adds an unsuspension request to the validation queue (used on user-request). - public function unsuspend($activate_mail_redirection = NULL) { - if (!$this->provisioned()) { - return; - } - if ($activate_mail_redirection !== NULL) { - $this->activate_mail_redirection = $activate_mail_redirection; - XDB::execute( - "UPDATE gapps_accounts - SET l_activate_mail_redirection = {?} - WHERE g_account_name = {?}", - $activate_mail_redirection, - $this->g_account_name); - } - - if (!$this->pending_update_suspension && !$this->pending_validation_unsuspend) { - require_once('validations.inc.php'); - $unsuspend = new GoogleAppsUnsuspendReq($this->uid); - $unsuspend->submit(); - $this->pending_validation_unsuspend = true; - } - } - - // Unsuspends the Google Apps account (used on admin-request, or on validation of - // an user-request). - public function do_unsuspend() { - if (!$this->provisioned()) { - return; - } - - if (!$this->pending_update_suspension) { - if ($this->sync_password) { - $res = XDB::query( - "SELECT password - FROM auth_user_md5 - WHERE user_id = {?}", - $this->uid); - $password = ($res->numRows() > 0 ? $res->fetchOneCell() : false); - } else { - $password = false; - } - - if ($password) { - $this->create_queue_job('u_update', array('suspended' => false, 'password' => $password)); - } else { - $this->create_queue_job('u_update', array('suspended' => false)); - } - $this->pending_update_suspension = true; - return true; - } - return false; - } - - // Creates a new Google Apps account with the @p local parameters. - public function create($password_sync, $password, $redirect_mails) { - if ($this->g_status != NULL) { - return; - } - - if (!$this->pending_create) { - // Retrieves information on the new account. - $res = XDB::query( - "SELECT nom, nom_usage, prenom - FROM auth_user_md5 - WHERE user_id = {?}", - $this->uid); - list($nom, $nom_usage, $prenom) = $res->fetchOneRow(); - - // Adds an 'unprovisioned' entry in the gapps_accounts table. - XDB::execute( - "INSERT INTO gapps_accounts - SET l_userid = {?}, - l_sync_password = {?}, - l_activate_mail_redirection = {?}, - g_account_name = {?}, - g_first_name = {?}, - g_last_name = {?}, - g_status = 'unprovisioned'", - $this->uid, - $password_sync, - $redirect_mails, - $this->g_account_name, - $prenom, - ($nom_usage ? $nom_usage : $nom)); - - // Adds the creation job in the GApps queue. - $this->create_queue_job( - 'u_create', - array( - 'username' => $this->g_account_name, - 'first_name' => $prenom, - 'last_name' => ($nom_usage ? $nom_usage : $nom), - 'password' => $password, - )); - - // Updates the GoogleAppsAccount status. - $this->__construct($this->uid, $this->g_account_name); - } - } - - - // Returns the status of the Google Apps account for @p user, or false - // when no account exists. - static public function account_status($uid) { - $res = XDB::query( - "SELECT g_status - FROM gapps_accounts - WHERE l_userid = {?}", $uid); - return ($res->numRows() > 0 ? $res->fetchOneCell() : false); - } - - // Returns true if the @p user is an administrator of the Google Apps domain. - static public function is_administrator($uid) { - $res = XDB::query( - "SELECT g_admin - FROM gapps_accounts - WHERE l_userid = {?} AND g_status = 'active'", $uid); - return ($res->numRows() > 0 ? (bool)$res->fetchOneCell() : false); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/homonymes.inc.php b/include/homonymes.inc.php deleted file mode 100644 index 13a3076..0000000 --- a/include/homonymes.inc.php +++ /dev/null @@ -1,73 +0,0 @@ -fetchOneRow(); -} - -function send_warning_homonyme($prenom, $nom, $forlife, $loginbis) { - global $globals; - $cc = "support+homonyme@" . $globals->mail->domain; - $FROM = "\"Support Polytechnique.org\" <$cc>"; - $mymail = new PlMailer(); - $mymail->setFrom($FROM); - $mymail->setSubject("Dans 2 semaines, suppression de $loginbis@" . $globals->mail->domain); - $mymail->addTo("$prenom $nom <$forlife@" . $globals->mail->domain . '>'); - $mymail->addCc($cc); - $mymail->setTxtBody(Env::v('mailbody')); - $mymail->send(); -} - -function send_robot_homonyme($prenom, $nom, $forlife, $loginbis) { - global $globals; - $cc = "support+homonyme@" . $globals->mail->domain; - $FROM = "\"Support Polytechnique.org\" <$cc>"; - $mymail = new PlMailer(); - $mymail->setFrom($FROM); - $mymail->setSubject("Mise en place du robot $loginbis@" . $globals->mail->domain); - $mymail->addTo("$prenom $nom <$forlife@" . $globals->mail->domain . '>'); - $mymail->addCc($cc); - $mymail->setTxtBody(Env::v('mailbody')); - $mymail->send(); -} - -function switch_bestalias($uid, $loginbis) { - // check if loginbis was the bestalias - $res = XDB::query("SELECT alias FROM aliases WHERE id = {?} AND FIND_IN_SET('bestalias', flags)", $uid); - $bestalias = $res->fetchOneCell(); - if ($bestalias && $bestalias != $loginbis) return false; - - // select the shortest alias still alive - $res = XDB::query("SELECT alias FROM aliases WHERE id = {?} AND alias != {?} AND expire IS NULL ORDER BY LENGTH(alias) LIMIT 1", $uid, $loginbis); - $newbest = $res->fetchOneCell(); - // change the bestalias flag - XDB::execute("UPDATE aliases SET flags = (flags & (255 - 1)) | IF(alias = {?}, 1, 0) WHERE id = {?}", $newbest, $uid); - - return $newbest; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/ical.inc.php b/include/ical.inc.php deleted file mode 100644 index e9b0db1..0000000 --- a/include/ical.inc.php +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/include/marketing.inc.php b/include/marketing.inc.php deleted file mode 100644 index f397ad0..0000000 --- a/include/marketing.inc.php +++ /dev/null @@ -1,376 +0,0 @@ - array(class name, require data) - 'annuaire' => array('AnnuaireMarketing', false), - 'groupe' => array('GroupMarketing', true), - 'liste' => array('ListMarketing', true), - ); - - private $engine; - public $sender_mail; - public $user; - - private $type; - private $data; - private $from; - private $sender; - - private $hash = ''; - - public function __construct($uid, $email, $type, $data, $from, $sender = null) - { - $this->user = $this->getUser($uid, $email); - $this->sender_mail = $this->getFrom($from, $sender); - $this->engine =& $this->getEngine($type, $data, $from == 'user' ? $sender : null); - - $this->type = $type; - $this->data = $data; - $this->from = $from; - $this->sender = $sender; - } - - private function getUser($uid, $email) - { - $res = XDB::query("SELECT FIND_IN_SET('femme', flags) AS sexe, nom, prenom, promo - FROM auth_user_md5 - WHERE user_id = {?}", $uid); - if ($res->numRows() == 0) { - return null; - } - $user = $res->fetchOneAssoc(); - $user['id'] = $uid; - $user['forlife'] = make_forlife($user['prenom'], $user['nom'], $user['promo']); - $user['mail'] = $email; - $user['to'] = '"' . $user['prenom'] . ' ' . $user['nom'] . '" <' . $email . '>'; - return $user; - } - - private function getFrom($from, $sender) - { - global $globals; - - if ($from == 'staff') { - return '"L\'équipe de Polytechnique.org" mail->domain . '>'; - } else { - $res = XDB::query("SELECT u.nom, u.prenom, a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND FIND_IN_SET('bestalias', a.flags)) - WHERE u.user_id = {?}", $sender); - if (!$res->numRows()) { - return '"L\'équipe de Polytechnique.org" mail->domain . '>'; - } - $sender = $res->fetchOneAssoc(); - return '"' . $sender['prenom'] . ' ' . $sender['nom'] . '" <' . $sender['alias'] . '@' . $globals->mail->domain . '>'; - } - } - - private function &getEngine($type, $data, $from) - { - $class = $type . 'Marketing'; - if (!class_exists($class, false)) { - $class= 'DefaultMarketing'; - } - $engine = new $class($data, $from); - if (!$engine instanceof MarketingEngine) { - $engine = null; - } - return $engine; - } - - public function getTitle() - { - return $this->engine->getTitle(); - } - - public function getText() - { - return $this->engine->getText($this->user); - } - - public function send($title = null, $text = null) - { - $this->hash = rand_url_id(12); - if (!$title) { - $title = $this->engine->getTitle(); - } - if (!$text) { - $text = $this->engine->getText($this->user); - } - $sender = substr($this->sender_mail, 1, strpos($this->sender_mail, '"', 2)-1); - $text = str_replace(array("%%hash%%", "%%sender%%"), - array($this->hash, $this->sender_mail), - $text); - $mailer = new PlMailer(); - $mailer->setFrom($this->sender_mail); - $mailer->addTo($this->user['mail']); - $mailer->setSubject($title); - $mailer->setTxtBody($text); - $mailer->send(); - $this->incr(); - } - - public function add($valid = true) - { - XDB::execute('INSERT IGNORE INTO register_marketing - (uid, sender, email, date, last, nb, type, hash, message, message_data) - VALUES ({?}, {?}, {?}, NOW(), 0, 0, {?}, {?}, {?}, {?})', - $this->user['id'], $this->sender, $this->user['mail'], $this->from, $this->hash, - $this->type, $this->data); - $this->engine->process($this->user); - if ($valid) { - require_once 'validations.inc.php'; - $valid = new MarkReq($this->sender, $this->user['id'], $this->user['mail'], - $this->from == 'user', $this->type, $this->data); - $valid->submit(); - } - return true; - } - - private function incr() - { - XDB::execute('UPDATE register_marketing - SET nb=nb+1, hash={?}, last=NOW() - WHERE uid={?} AND email={?}', - $this->hash, $this->user['id'], $this->user['mail']); - } - - static public function getEngineList($exclude_data = true) - { - $array = array(); - foreach (Marketing::$engines as $e => $d) { - if (!$d[1] || !$exclude_data) { - $array[] = $e; - } - } - return $array; - } - - static public function get($uid, $email, $recentOnly = false) - { - $res = XDB::query("SELECT uid, email, message, message_data, type, sender - FROM register_marketing - WHERE uid = {?} - AND email = {?}".( - $recentOnly ? ' AND DATEDIFF(NOW(), last) < 30' : ''), $uid, $email); - - if ($res->numRows() == 0) { - return null; - } - list ($uid, $email, $type, $data, $from, $sender) = $res->fetchOneRow(); - return new Marketing($uid, $email, $type, $data, $from, $sender); - } - - static public function clear($uid, $email = null) - { - if (!$email) { - XDB::execute("DELETE FROM register_marketing WHERE uid = {?}", $uid); - } else { - XDB::execute("DELETE FROM register_marketing WHERE uid = {?} AND email = {?}", $uid, $email); - } - } - - static public function relance($uid, $nbx = -1) - { - global $globals; - - if ($nbx < 0) { - $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE deces=0"); - $nbx = $res->fetchOneCell(); - } - - $res = XDB::query("SELECT r.date, u.promo, u.nom, u.prenom, r.email, r.bestalias - FROM register_pending AS r - INNER JOIN auth_user_md5 AS u ON u.user_id = r.uid - WHERE hash!='INSCRIT' AND uid={?} AND TO_DAYS(relance) < TO_DAYS(NOW())", $uid); - if (!list($date, $promo, $nom, $prenom, $email, $alias) = $res->fetchOneRow()) { - return false; - } - - require_once('secure_hash.inc.php'); - $hash = rand_url_id(12); - $pass = rand_pass(); - $pass_encrypted = hash_encrypt($pass); - $fdate = strftime('%d %B %Y', strtotime($date)); - - $mymail = new PlMailer('marketing/relance.mail.tpl'); - $mymail->assign('nbdix', $nbx); - $mymail->assign('fdate', $fdate); - $mymail->assign('lusername', $alias); - $mymail->assign('nveau_pass', $pass); - $mymail->assign('baseurl', $globals->baseurl); - $mymail->assign('lins_id', $hash); - $mymail->assign('lemail', $email); - $mymail->assign('subj', $alias.'@'.$globals->mail->domain); - $mymail->send(); - XDB::execute('UPDATE register_pending - SET hash={?}, password={?}, relance=NOW() - WHERE uid={?}', $hash, $pass_encrypted, $uid); - return "$prenom $nom ($promo)"; - } -} - -interface MarketingEngine -{ - public function __construct($data, $from); - public function getTitle(); - public function getText(array $user); - public function process(array $user); -} - -// -class AnnuaireMarketing implements MarketingEngine -{ - protected $titre; - protected $intro; - protected $signature; - - public function __construct($data, $from) - { - $this->titre = "Rejoins la communauté polytechnicienne sur Internet"; - $this->intro = " Tu n'as pas de fiche dans l'annuaire des polytechniciens sur Internet. " - . "Pour y figurer, il te suffit de visiter cette page ou de copier cette adresse " - . "dans la barre de ton navigateur :"; - if ($from === null) { - $this->signature = "L'équipe de Polytechnique.org,\n" - . "Le portail des élèves & anciens élèves de l'École polytechnique"; - } else { - $this->signature = "%%sender%%"; - } - } - - public function getTitle() - { - return $this->titre; - } - - private function getIntro() - { - return $this->intro; - } - - public function getSignature() - { - return $this->signature; - } - - protected function prepareText(PlPage &$page, array $user) - { - $page->assign('intro', $this->getIntro()); - $page->assign('u', $user); - $page->assign('sign', $this->getSignature()); - $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE perms IN ('user', 'admin') AND deces = 0"); - $page->assign('num_users', $res->fetchOneCell()); - } - - public function getText(array $user) - { - $page = new XorgPage(); - $page->changeTpl('marketing/marketing.mail.tpl', NO_SKIN); - $this->prepareText($page, $user); - return $page->raw(); - } - - public function process(array $user) - { - } -} - -class ListMarketing extends AnnuaireMarketing -{ - private $name; - private $domain; - public function __construct($data, $from) - { - list($this->name, $this->domain) = explode('@', $data); - $res = XDB::query("SELECT prenom, IF (nom_usage != '', nom_usage, nom) - FROM auth_user_md5 - WHERE user_id = {?} AND user_id != 0", $from ? $from : 0); - if ($res->numRows()) { - list($prenom, $nom) = $res->fetchOneRow(); - $from = "$prenom $nom"; - } else { - $from = "Je"; - } - $this->titre = "Un camarade solicite ton inscription à $data"; - $this->intro = "Polytechnique.org, l'annuaire des polytechniciens sur internet, " - . "fournit de nombreux services aux groupes X, ainsi que des listes " - . "de diffusion pour les X en faisant la demande.\n\n" - . "$from solicite ton inscription à la liste <$data>. " - . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent " - . "profiter de l'ensemble de nos services, c'est pourquoi nous te " - . "proposons auparavant de t'inscrire sur notre site. Pour cela, il " - . "te suffit de visiter cette page ou de copier cette adresse dans " - . "la barre de ton navigateur :"; - } - - public function process(array $user) - { - return XDB::execute("REPLACE INTO register_subs (uid, type, sub, domain) - VALUES ({?}, 'list', {?}, {?})", - $user['id'], $this->name, $this->domain); - } -} - -class GroupMarketing extends AnnuaireMarketing -{ - private $group; - public function __construct($data, $from) - { - $this->group = $data; - $res = XDB::query("SELECT prenom, IF (nom_usage != '', nom_usage, nom) - FROM auth_user_md5 - WHERE user_id = {?} AND user_id != 0", $from ? $from : 0); - if ($res->numRows()) { - list($prenom, $nom) = $res->fetchOneRow(); - $from = "$prenom $nom vient"; - } else { - $from = "Je viens"; - } - $this->titre = "Profite de ton inscription au groupe \"$data\" pour découvrir Polytechnique.org"; - $this->intro = "Polytechnique.org, l'annuaire des polytechniciens sur internet, fournit " - . "de nombreux services aux groupes X ( listes de diffusion, paiement en " - . "ligne, sites internet...), en particulier pour le groupe \"$data\"\n\n" - . "$from de t'inscrire dans l'annuaire du groupe \"$data\". " - . "Cependant, seuls les X inscrits sur Polytechnique.org peuvent profiter " - . "de l'ensemble de nos services, c'est pourquoi nous te proposons de " - . "t'inscrire sur notre site . Pour cela, il te suffit de visiter cette page " - . "ou de copier cette adresse dans la barre de ton navigateur :"; - } - - public function process(array $user) - { - return XDB::execute("REPLACE INTO register_subs (uid, type, sub, domain) - VALUES ({?}, 'group', {?}, '')", - $user['id'], $this->group); - } -} - -/// Make AnnuaireMarketing to be the default message -class DefaultMarketing extends AnnuaireMarketing -{ -} - -// vim:set et sw=4 sts=4 sws=4 enc=utf-8: -?> diff --git a/include/massmailer.inc.php b/include/massmailer.inc.php deleted file mode 100644 index a1d49f3..0000000 --- a/include/massmailer.inc.php +++ /dev/null @@ -1,257 +0,0 @@ -_tpl = $tpl; - $this->_css = $css; - $this->_prefix = $prefix; - $this->_table = $tbl; - $this->_subscriptionTable = $stbl; - } - - public function id() - { - return is_null($this->_shortname) ? $this->_id : $this->_shortname; - } - - private function selectId($where) - { - $res = XDB::query("SELECT IF (n.short_name IS NULL, n.id, n.short_name) - FROM {$this->_table} AS n - WHERE n.bits != 'new' AND {$where} - LIMIT 1"); - if ($res->numRows() != 1) { - return null; - } - return $res->fetchOneCell(); - } - - public function prev() - { - static $val; - if (!isset($val)) { - $val = $this->selectId("n.id < {$this->_id} ORDER BY n.id DESC"); - } - return $val; - } - - public function next() - { - static $val; - if (!isset($val)) { - $val = $this->selectId("n.id > {$this->_id} ORDER BY n.id"); - } - return $val; - } - - public function last() - { - static $val; - if (!isset($val)) { - $res = XDB::query("SELECT MAX(n.id) - FROM {$this->_table} AS n - WHERE n.bits != 'new' AND n.id > {?}", - $this->_id); - if ($res->numRows() != 1) { - $val = null; - } else { - $val = $res->fetchOneCell(); - } - } - return $val; - } - - public function title($mail = false) - { - return $mail ? $this->_title_mail : $this->_title; - } - - public function head($prenom = null, $nom = null, $sexe = null, $type = 'text') - { - if (is_null($prenom)) { - return $this->_head; - } else { - $head = $this->_head; - $head = str_replace('', $sexe ? 'Chère' : 'Cher', $head); - $head = str_replace('', $prenom, $head); - $head = str_replace('', $nom, $head); - return format_text($head, $type, 2, 64); - } - } - - public function css(&$page = null) - { - if (!is_null($page)) { - $page->addCssLink($this->_css); - return true; - } else { - $css = file_get_contents(dirname(__FILE__) . '/../htdocs/css/' . $this->_css); - return preg_replace('@/\*.*?\*/@us', '', $css); - } - } - - public function toText(&$page, $prenom, $nom, $sexe) - { - $this->css($page); - $page->assign('is_mail', false); - $page->assign('mail_part', 'text'); - $page->assign('prenom', $prenom); - $page->assign('nom', $nom); - $page->assign('sexe', $sexe); - $this->assignData($page); - } - - public function toHtml(&$page, $prenom, $nom, $sexe) - { - $this->css($page); - $page->assign('prefix', $this->_prefix . '/' . $this->id()); - $page->assign('is_mail', false); - $page->assign('mail_part', 'html'); - $page->assign('prenom', $prenom); - $page->assign('nom', $nom); - $page->assign('sexe', $sexe); - $this->assignData($page); - } - - private function createHash($line, $key = null) - { - $hash = implode(time(), $line) . rand(); - $hash = md5($hash); - return $hash; - } - - public function sendTo($prenom, $nom, $login, $sexe, $html, $hash = 0) - { - global $globals; - $alias = $login; - if (strpos($login, '@') === false) { - $login = "$login@{$globals->mail->domain}"; - } - require_once('user.func.inc.php'); - $forlife = get_user_forlife($login, '_silent_user_callback'); - if ($forlife) { - $alias = $forlife; - } - if (strpos($alias, '@') === false && (is_null($hash) || $hash == 0)) { - - $hash = $this->createHash(array($prenom, $nom, $login, $sexe, $html, rand(), "X.org rulez")); - XDB::query("UPDATE {$this->_subscriptionTable} as ni - INNER JOIN aliases AS a ON (ni.user_id = a.id) - SET ni.hash = {?} - WHERE ni.user_id != 0 AND a.alias = {?}", - $hash, $alias); - } - - $mailer = new PlMailer($this->_tpl); - $this->assignData($mailer); - $mailer->assign('is_mail', true); - $mailer->assign('prenom', $prenom); - $mailer->assign('nom', $nom); - $mailer->assign('sexe', $sexe); - $mailer->assign('prefix', null); - $mailer->assign('hash', $hash); - $mailer->assign('email', $login); - $mailer->assign('alias', $alias); - $mailer->addTo("\"$prenom $nom\" <$login>"); - $mailer->send($html); - } - - protected function getAllRecipients() - { - global $globals; - return "SELECT u.user_id, CONCAT(a.alias, '@{$globals->mail->domain}'), - u.prenom, IF(u.nom_usage='', u.nom, u.nom_usage), - FIND_IN_SET('femme', u.flags), - q.core_mail_fmt AS pref, ni.hash AS hash - FROM {$this->_subscriptionTable} AS ni - INNER JOIN auth_user_md5 AS u USING(user_id) - INNER JOIN auth_user_quick AS q ON(q.user_id = u.user_id) - INNER JOIN aliases AS a ON(u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags)) - LEFT JOIN emails AS e ON(e.uid=u.user_id AND e.flags='active') - WHERE ni.last < {?} AND ({$this->subscriptionWhere()}) AND - (e.email IS NOT NULL OR FIND_IN_SET('googleapps', u.mail_storage)) - GROUP BY u.user_id"; - } - - public function sendToAll() - { - $this->setSent(); - $query = $this->getAllRecipients() . " LIMIT {?}"; - while (true) { - $res = XDB::iterRow($query, $this->_id, 60); - if (!$res->total()) { - return; - } - $sent = array(); - while (list($uid, $bestalias, $prenom, $nom, $sexe, $fmt, $hash) = $res->next()) { - $sent[] = "(user_id='$uid'" . (!$uid ? " AND email='$bestalias')": ')'); - $this->sendTo($prenom, $nom, $bestalias, $sexe, $fmt=='html', $hash); - } - XDB::execute("UPDATE {$this->_subscriptionTable} - SET last = {?} - WHERE " . implode(' OR ', $sent), $this->_id); - - sleep(60); - } - } - - abstract protected function assignData(&$smarty); - abstract protected function setSent(); - - abstract protected function subscriptionWhere(); -} - -// }}} -// {{{ Functions - -function format_text($input, $format, $indent = 0, $width = 68) -{ - if ($format == 'text') { - return MiniWiki::WikiToText($input, true, $indent, $width, "title"); - } - return MiniWiki::WikiToHTML($input, "title"); -} - -// function enriched_to_text($input,$html=false,$just=false,$indent=0,$width=68) - -// }}} - -// vim:set et sw=4 sts=4 sws=4 enc=utf-8: -?> diff --git a/include/newsletter.inc.php b/include/newsletter.inc.php deleted file mode 100644 index 9e1a59b..0000000 --- a/include/newsletter.inc.php +++ /dev/null @@ -1,286 +0,0 @@ -fetchOneCell(); - } - $res = XDB::query("SELECT * FROM newsletter WHERE id={?} OR short_name={?} LIMIT 1", $id, $id); - } else { - $res = XDB::query("SELECT * FROM newsletter WHERE bits='new'"); - if (!$res->numRows()) { - Newsletter::create(); - } - $res = XDB::query("SELECT * FROM newsletter WHERE bits='new'"); - } - $nl = $res->fetchOneAssoc(); - - $this->_id = $nl['id']; - $this->_shortname = $nl['short_name']; - $this->_date = $nl['date']; - $this->_title = $nl['titre']; - $this->_title_mail = $nl['titre_mail']; - $this->_head = $nl['head']; - - $res = XDB::iterRow("SELECT cid,titre FROM newsletter_cat ORDER BY pos"); - while (list($cid, $title) = $res->next()) { - $this->_cats[$cid] = $title; - } - - $res = XDB::iterRow( - "SELECT a.title,a.body,a.append,a.aid,a.cid,a.pos - FROM newsletter_art AS a - INNER JOIN newsletter AS n USING(id) - LEFT JOIN newsletter_cat AS c ON(a.cid=c.cid) - WHERE a.id={?} - ORDER BY c.pos,a.pos", $this->_id); - while (list($title, $body, $append, $aid, $cid, $pos) = $res->next()) { - $this->_arts[$cid]["a$aid"] = new NLArticle($title, $body, $append, $aid, $cid, $pos); - } - } - - public function save() - { - XDB::execute('UPDATE newsletter SET date={?},titre={?},titre_mail={?},head={?},short_name={?} WHERE id={?}', - $this->_date, $this->_title, $this->_title_mail, $this->_head, $this->_shortname,$this->_id); - } - - public function getArt($aid) - { - foreach ($this->_arts as $key=>$artlist) { - if (isset($artlist["a$aid"])) { - return $artlist["a$aid"]; - } - } - return null; - } - - public function saveArticle(&$a) - { - if ($a->_aid>=0) { - XDB::execute('REPLACE INTO newsletter_art (id,aid,cid,pos,title,body,append) - VALUES ({?},{?},{?},{?},{?},{?},{?})', - $this->_id, $a->_aid, $a->_cid, $a->_pos, - $a->_title, $a->_body, $a->_append); - $this->_arts['a'.$a->_aid] = $a; - } else { - XDB::execute('INSERT INTO newsletter_art - SELECT {?},MAX(aid)+1,{?},'.($a->_pos ? intval($a->_pos) : 'MAX(pos)+1').',{?},{?},{?} - FROM newsletter_art AS a - WHERE a.id={?}', - $this->_id, $a->_cid, $a->_title, $a->_body, $a->_append, $this->_id); - $this->_arts['a'.$a->_aid] = $a; - } - } - - public function delArticle($aid) - { - XDB::execute('DELETE FROM newsletter_art WHERE id={?} AND aid={?}', $this->_id, $aid); - foreach ($this->_arts as $key=>$art) { - unset($this->_arts[$key]["a$aid"]); - } - } - - protected function assignData(&$smarty) - { - $smarty->assign_by_ref('nl', $this); - } - - protected function setSent() - { - XDB::execute("UPDATE newsletter SET bits='sent' WHERE id={?}", $this->_id); - } - - static public function subscriptionState($uid = null) - { - $user = is_null($uid) ? S::v('uid') : $uid; - $res = XDB::query("SELECT 1 - FROM newsletter_ins - WHERE user_id={?}", $user); - return $res->fetchOneCell(); - } - - static public function unsubscribe($uid = null) - { - $user = is_null($uid) ? S::v('uid') : $uid; - XDB::execute("DELETE FROM newsletter_ins - WHERE user_id={?}", $user); - } - - static public function subscribe($uid = null) - { - $user = is_null($uid) ? S::v('uid') : $uid; - XDB::execute("REPLACE INTO newsletter_ins (user_id,last) - VALUES ({?}, 0)", $user); - } - - protected function subscriptionWhere() - { - return '1'; - } - - static public function create() - { - XDB::execute("INSERT INTO newsletter - SET bits='new',date=NOW(),titre='to be continued',titre_mail='to be continued'"); - } - - static public function listSent() - { - $res = XDB::query("SELECT IF(short_name IS NULL, id,short_name) as id,date,titre_mail AS titre - FROM newsletter - WHERE bits!='new' - ORDER BY date DESC"); - return $res->fetchAllAssoc(); - } - - static public function listAll() - { - $res = XDB::query("SELECT IF(short_name IS NULL, id,short_name) as id,date,titre_mail AS titre - FROM newsletter - ORDER BY date DESC"); - return $res->fetchAllAssoc(); - } -} - -// }}} -// {{{ class NLArticle - -class NLArticle -{ - // {{{ properties - - var $_aid; - var $_cid; - var $_pos; - var $_title; - var $_body; - var $_append; - - // }}} - // {{{ constructor - - function __construct($title='', $body='', $append='', $aid=-1, $cid=0, $pos=0) - { - $this->_body = $body; - $this->_title = $title; - $this->_append = $append; - $this->_aid = $aid; - $this->_cid = $cid; - $this->_pos = $pos; - } - - // }}} - // {{{ function title() - - public function title() - { return trim($this->_title); } - - // }}} - // {{{ function body() - - public function body() - { return trim($this->_body); } - - // }}} - // {{{ function append() - - public function append() - { return trim($this->_append); } - - // }}} - // {{{ function toText() - - public function toText($hash = null, $login = null) - { - $title = '*'.$this->title().'*'; - $body = MiniWiki::WikiToText($this->_body, true); - $app = MiniWiki::WikiToText($this->_append,false,4); - $text = trim("$title\n\n$body\n\n$app")."\n"; - if (!is_null($hash) && !is_null($login)) { - $text = str_replace('%HASH%', "$hash/$login", $text); - } else { - $text = str_replace('%HASH%', '', $text); - } - return $text; - } - - // }}} - // {{{ function toHtml() - - public function toHtml($hash = null, $login = null) - { - $title = "

    ".pl_entities($this->title()).'

    '; - $body = MiniWiki::WikiToHTML($this->_body); - $app = MiniWiki::WikiToHTML($this->_append); - - $art = "$title\n"; - $art .= "
    \n$body\n"; - if ($app) { - $art .= "
    $app
    "; - } - $art .= "
    \n"; - if (!is_null($hash) && !is_null($login)) { - $art = str_replace('%HASH%', "$hash/$login", $art); - } else { - $art = str_replace('%HASH%', '', $art); - } - - return $art; - } - - // }}} - // {{{ function check() - - public function check() - { - $text = MiniWiki::WikiToText($this->_body); - $arr = explode("\n",wordwrap($text,68)); - $c = 0; - foreach ($arr as $line) { - if (trim($line)) { - $c++; - } - } - return $c<9; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 enc=utf-8: -?> diff --git a/include/notifs.inc.php b/include/notifs.inc.php deleted file mode 100644 index 33ae8eb..0000000 --- a/include/notifs.inc.php +++ /dev/null @@ -1,460 +0,0 @@ - Array('wfield' => 'contact', 'ufield' => 'user_id', 'need_contact' => false, - 'freq_sql' => '', - 'contact_sql' => '1' - ), - 'watch_promo' => Array('wfield' => 'promo', 'ufield' => 'promo', 'need_contact' => true, - 'freq_sql' => ' AND ( wc.type = "basic" OR wc.type="near" AND (u.promo <= v.promo_sortie-2 AND u.promo_sortie >= v.promo+2) )', - 'contact_sql' => 'IF(c.contact IS NULL, 0, 1)' - ), - 'watch_nonins' => Array('wfield' => 'ni_id', 'ufield' => 'user_id', 'need_contact' => true, - 'freq_sql' => '', - 'contact_sql' => 'IF(c.contact IS NULL, 0, 1)' - ) - ); - - $our = $cases[$table]; - $sql = " - ( - SELECT u.promo, u.prenom, IF(u.nom_usage='',u.nom,u.nom_usage) AS nom, - u.deces != 0 AS dcd, (u.flags = 'femme') AS sexe, - a.alias AS bestalias, - wo.*, - {$our['contact_sql']} AS contact, - (u.perms IN('admin','user')) AS inscrit"; - if ($mail) { - $sql.=", - w.uid AS aid, v.prenom AS aprenom, IF(v.nom_usage='',v.nom,v.nom_usage) AS anom, - b.alias AS abestalias, (v.flags='femme') AS asexe, q.core_mail_fmt AS mail_fmt"; - } - - $sql .= " - FROM $table AS w - INNER JOIN auth_user_md5 AS u ON(u.{$our['ufield']} = w.{$our['wfield']}) - INNER JOIN auth_user_quick AS q ON(q.user_id = w.uid) - INNER JOIN auth_user_md5 AS v ON(v.user_id = q.user_id)"; - if ($mail) { - $sql .=" - INNER JOIN aliases AS b ON(b.id = q.user_id AND FIND_IN_SET('bestalias', b.flags))"; - } - if ($our['need_contact']) { - $sql .=" - LEFT JOIN contacts AS c ON(c.uid = w.uid AND c.contact = u.user_id)"; - } - - $sql .=" - INNER JOIN watch_ops AS wo ON(wo.uid = u.user_id AND ".($mail ? 'wo.known > q.watch_last' : '( wo.known > {?} OR wo.date=NOW() )').") - INNER JOIN watch_sub AS ws ON(ws.cid = wo.cid AND ws.uid = w.uid) - INNER JOIN watch_cat AS wc ON(wc.id = wo.cid{$our['freq_sql']}) - LEFT JOIN aliases AS a ON(a.id = u.user_id AND FIND_IN_SET('bestalias', a.flags)) - WHERE $where - )"; - - return $sql; -} - -// }}} -// {{{ function select_notifs - -function select_notifs($mail, $uid=null, $last=null, $iterator=true) -{ - $where = $mail ? 'q.watch_flags=3' : 'w.uid = {?}'; - $sql = _select_notifs_base('contacts', $mail, $where.($mail?'':' AND (q.watch_flags=1 OR q.watch_flags=3)')) . " UNION DISTINCT "; - $sql .= _select_notifs_base('watch_promo', $mail, $where) . " UNION DISTINCT "; - $sql .= _select_notifs_base('watch_nonins', $mail, $where); - - if ($iterator) { - return XDB::iterator($sql . ' ORDER BY cid, promo, date DESC, nom', $last, $uid, $last, $uid, $last, $uid); - } else { - return XDB::query($sql, $last, $uid, $last, $uid, $last, $uid); - } -} - -// }}} -// {{{ - -global $prf_desc; -$prf_desc = array('nom' => 'Son patronyme', - 'freetext' => 'Le texte libre', - 'mobile' => 'Son numéro de téléphone portable', - 'nationalite' => 'Sa nationalité', - 'nick' => 'Son surnom', - 'web' => 'L\'adresse de son site web', - 'appli1' => 'Son école d\'application', - 'appli2' => 'Son école de post-application', - 'addresses' => 'Ses adresses', - 'section' => 'Sa section sportive', - 'binets' => 'La liste de ses binets', - 'medals' => 'Ses décorations', - 'cv' => 'Son Curriculum Vitae', - 'jobs' => 'Ses informations professionnelles', - 'photo' => 'Sa photographie'); - -function get_profile_change_details($event, $limit) { - global $prf_desc; - $res = XDB::iterRow("SELECT field - FROM watch_profile - WHERE uid = {?} AND ts > {?} - ORDER BY ts DESC", - $event['uid'], $limit); - if ($res->total() > 0) { - $data = array(); - while (list($field) = $res->next()) { - $data[] .= $prf_desc[$field]; - } - return '
    • ' . implode('
    • ', $data) . '
    '; - } - return null; -} - -// }}} -// {{{ function register_profile_update - -function register_profile_update($uid, $field) { - XDB::execute("REPLACE INTO watch_profile (uid, ts, field) - VALUES ({?}, NOW(), {?})", - $uid, $field); -} - -// {{{ class AllNotifs - -class AllNotifs -{ - public $_cats = Array(); - public $_data = Array(); - - public function __construct() - { - $res = XDB::iterator("SELECT * FROM watch_cat"); - while($tmp = $res->next()) { - $this->_cats[$tmp['id']] = $tmp; - } - - // recupère tous les watchers, avec détails des watchers, a partir du - // watch_last de chacun, seulement ceux qui sont surveillés, ordonnés - $res = select_notifs(true); - - while($tmp = $res->next()) { - $aid = $tmp['aid']; - if (empty($this->_data[$aid])) { - $this->_data[$aid] = Array("prenom" => $tmp['aprenom'], 'nom' => $tmp['anom'], - 'bestalias'=>$tmp['abestalias'], 'sexe' => $tmp['asexe'], 'mail_fmt' => $tmp['mail_fmt'], - 'dcd'=>$tmp['dcd']); - } - unset($tmp['aprenom'], $tmp['anom'], $tmp['abestalias'], $tmp['aid'], $tmp['asexe'], $tmp['mail_fmt'], $tmp['dcd']); - $this->_data[$aid]['data'][$tmp['cid']][] = $tmp; - } - } -} - -// }}} -// {{{ class Notifs - -class Notifs -{ - public $_uid; - public $_cats = Array(); - public $_data = Array(); - - function __construct($uid, $up=false) - { - $this->_uid = $uid; - - $res = XDB::iterator("SELECT * FROM watch_cat"); - while($tmp = $res->next()) { - $this->_cats[$tmp['id']] = $tmp; - } - - $lastweek = date('YmdHis', time() - 7*24*60*60); - - // recupere les notifs du watcher $uid, sans detail sur le watcher, - // depuis la semaine dernière, meme ceux sans surveillance, ordonnés - $res = select_notifs(false, $uid, $lastweek); - while($tmp = $res->next()) { - if ($tmp['cid'] == WATCH_FICHE) { - $tmp['data'] = get_profile_change_details($tmp, $lastweek); - } - $this->_data[$tmp['cid']][$tmp['promo']][] = $tmp; - } - - if($up) { - XDB::execute('UPDATE auth_user_quick SET watch_last=NOW() WHERE user_id={?}', $uid); - } - } -} - -// }}} -// {{{ class Watch - -class Watch -{ - public $_uid; - public $_promos; - public $_nonins; - public $_cats = Array(); - public $_subs; - public $watch_contacts; - public $watch_mail; - - public function __construct($uid) - { - $this->_uid = $uid; - $this->_promos = new PromoNotifs($uid); - $this->_nonins = new NoninsNotifs($uid); - $this->_subs = new WatchSub($uid); - $res = XDB::query("SELECT FIND_IN_SET('contacts',watch_flags),FIND_IN_SET('mail',watch_flags) - FROM auth_user_quick - WHERE user_id={?}", $uid); - list($this->watch_contacts,$this->watch_mail) = $res->fetchOneRow(); - - $res = XDB::iterator("SELECT * FROM watch_cat"); - while($tmp = $res->next()) { - $this->_cats[$tmp['id']] = $tmp; - } - } - - public function saveFlags() - { - $flags = ""; - if ($this->watch_contacts) - $flags = "contacts"; - if ($this->watch_mail) - $flags .= ($flags ? ',' : '')."mail"; - XDB::execute('UPDATE auth_user_quick SET watch_flags={?} WHERE user_id={?}', - $flags, $this->_uid); - } - - public function cats() - { - return $this->_cats; - } - - public function subs($i) - { - return $this->_subs->_data[$i]; - } - - public function promos() - { - return $this->_promos->toRanges(); - } - - public function nonins() - { - return $this->_nonins->_data; - } -} - -// }}} -// {{{ class WatchSub - -class WatchSub -{ - public $_uid; - public $_data = Array(); - - public function __construct($uid) - { - $this->_uid = $uid; - $res = XDB::iterRow('SELECT cid FROM watch_sub WHERE uid={?}', $uid); - while(list($c) = $res->next()) { - $this->_data[$c] = $c; - } - } - - public function update($ind) - { - $this->_data = Array(); - XDB::execute('DELETE FROM watch_sub WHERE uid={?}', $this->_uid); - foreach (Env::v($ind) as $key=>$val) { - XDB::query('INSERT INTO watch_sub SELECT {?},id FROM watch_cat WHERE id={?}', $this->_uid, $key); - if(XDB::affectedRows()) { - $this->_data[$key] = $key; - } - } - } -} - -// }}} -// {{{ class PromoNotifs - -class PromoNotifs -{ - public $_uid; - public $_data = Array(); - - public function __construct($uid) - { - $this->_uid = $uid; - $res = XDB::iterRow('SELECT promo FROM watch_promo WHERE uid={?} ORDER BY promo', $uid); - while (list($p) = $res->next()) { - $this->_data[intval($p)] = intval($p); - } - } - - public function add($p) - { - $promo = intval($p); - XDB::execute('REPLACE INTO watch_promo (uid,promo) VALUES({?},{?})', $this->_uid, $promo); - $this->_data[$promo] = $promo; - asort($this->_data); - } - - public function del($p) - { - $promo = intval($p); - XDB::execute('DELETE FROM watch_promo WHERE uid={?} AND promo={?}', $this->_uid, $promo); - unset($this->_data[$promo]); - } - - public function addRange($_p1,$_p2) - { - $p1 = intval($_p1); - $p2 = intval($_p2); - $values = Array(); - for($i = min($p1,$p2); $i<=max($p1,$p2); $i++) { - $values[] = "('{$this->_uid}',$i)"; - $this->_data[$i] = $i; - } - XDB::execute('REPLACE INTO watch_promo (uid,promo) VALUES '.join(',',$values)); - asort($this->_data); - } - - public function delRange($_p1,$_p2) - { - $p1 = intval($_p1); - $p2 = intval($_p2); - $where = Array(); - for($i = min($p1,$p2); $i<=max($p1,$p2); $i++) { - $where[] = "promo=$i"; - unset($this->_data[$i]); - } - XDB::execute('DELETE FROM watch_promo WHERE uid={?} AND ('.join(' OR ',$where).')', $this->_uid); - } - - public function toRanges() - { - $ranges = Array(); - $I = Array(); - foreach($this->_data as $promo) { - if(!isset($I[0])) { - $I = Array($promo,$promo); - } - elseif($I[1]+1 == $promo) { - $I[1] ++; - } - else { - $ranges[] = $I; - $I = Array($promo,$promo); - } - } - if(isset($I[0])) $ranges[] = $I; - return $ranges; - } -} - -// }}} -// {{{ class NoninsNotifs - -class NoninsNotifs -{ - public $_uid; - public $_data = Array(); - - public function __construct($uid) - { - $this->_uid = $uid; - $res = XDB::iterator("SELECT u.prenom,IF(u.nom_usage='',u.nom,u.nom_usage) AS nom, u.promo, u.user_id - FROM watch_nonins AS w - INNER JOIN auth_user_md5 AS u ON (u.user_id = w.ni_id) - WHERE w.uid = {?} - ORDER BY promo,nom", $uid); - while($tmp = $res->next()) { - $this->_data[$tmp['user_id']] = $tmp; - } - } - - public function del($p) - { - unset($this->_data["$p"]); - XDB::execute('DELETE FROM watch_nonins WHERE uid={?} AND ni_id={?}', $this->_uid, $p); - } - - public function add($p) - { - XDB::execute('INSERT INTO watch_nonins (uid,ni_id) VALUES({?},{?})', $this->_uid, $p); - $res = XDB::query('SELECT prenom,IF(nom_usage="",nom,nom_usage) AS nom,promo,user_id - FROM auth_user_md5 - WHERE user_id={?}', $p); - $this->_data["$p"] = $res->fetchOneAssoc(); - } -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/profil.func.inc.php b/include/profil.func.inc.php deleted file mode 100644 index 8a5edbf..0000000 --- a/include/profil.func.inc.php +++ /dev/null @@ -1,288 +0,0 @@ - $bvar) { - if (isset($a[$val])) { - if ($a[$val] == $bvar) - unset($c[$val]); - else { - switch ($val) { - case 'adr' : if (!($c['adr'] = diff_user_addresses($a[$val], $bvar, $view))) unset($c['adr']); break; - case 'adr_pro' : if (!($c['adr_pro'] = diff_user_pros($a[$val], $bvar, $view))) unset($c['adr_pro']); break; - case 'mobile' : if (same_tel($a[$val], $bvar)) unset($c['mobile']); break; - } - } - } - } - // don't modify mobile if you don't have the right - if (isset($b['mobile_pub']) && !has_user_right($b['mobile_pub'], $view) && isset($c['mobile'])) - unset($c['mobile']); - if (isset($b['web_pub']) && !has_user_right($b['web_pub'], $view) && isset($c['web'])) - unset($c['web']); - if (isset($b['freetext_pub']) && !has_user_right($b['freetext_pub'], $view) && isset($c['freetext'])) - unset($c['freetext']); - if (!count($c)) - return false; - return $c; -} - -function same_tel(&$a, &$b) { - $numbera = preg_replace('/[^0-9]/', '', (string) $a); - $numberb = preg_replace('/[^0-9]/', '', (string) $b); - return $numbera === $numberb; -} -function same_address(&$a, &$b) { - return - (same_field($a['adr1'],$b['adr1'])) && - (same_field($a['adr1'],$b['adr1'])) && - (same_field($a['adr1'],$b['adr1'])) && - (same_field($a['postcode'],$b['postcode'])) && - (same_field($a['city'],$b['city'])) && - (same_field($a['countrytxt'],$b['countrytxt'])) && - true; -} -function same_pro(&$a, &$b) { - return - (same_field($a['entreprise'],$b['entreprise'])) && - (same_field($a['fonction'],$b['fonction'])) && - true; -} -function same_field(&$a, &$b) { - if ($a == $b) return true; - if (is_array($a)) { - if (!is_array($b) || count($a) != count($b)) return false; - foreach ($a as $val => $avar) - if (!isset($b[$val]) || !same_field($avar, $b[$val])) return false; - return true; - } elseif (is_string($a)) - return (strtoupper($a) == strtoupper($b)); -} -function diff_user_tel(&$a, &$b) { - $c = $a; - if (isset($b['tel_pub']) && isset($a['tel_pub']) && has_user_right($b['tel_pub'], $a['tel_pub'])) - $c['tel_pub'] = $b['tel_pub']; - foreach ($b as $val => $bvar) { - if (isset($a[$val])) { - if ($a[$val] == $bvar) - unset($c[$val]); - } - } - if (!count($c)) - return false; - $c['telid'] = $a['telid']; - return $c; -} - -function diff_user_address($a, $b) { - if (isset($b['pub']) && isset($a['pub']) && has_user_right($b['pub'], $a['pub'])) - $a['pub'] = $b['pub']; - if (isset($b['tels'])) { - $bvar = $b['tels']; - - $telids_b = array(); - foreach ($bvar as $i => $telb) $telids_b[$telb['telid']] = $i; - - if (isset($a['tels'])) - $avar = $a['tels']; - else - $avar = array(); - $ctels = $avar; - foreach ($avar as $j => $tela) { - if (isset($tela['telid'])) { - // if b has a tel with the same telid, compute diff - if (isset($telids_b[$tela['telid']])) { - if (!($ctels[$j] = diff_user_tel($tela, $varb[$telids_b[$tela['adrid']]]))) - unset($ctels[$j]); - unset($telids_b[$tela['telid']]); - } - } else { - // try to find a match in b - foreach ($bvar as $i => $telb) { - if (same_tel($tela['tel'], $telb['tel'])) { - $tela['telid'] = $telb['telid']; - if (!($ctels[$j] = diff_user_tel($tela, $telb))) - unset($ctels[$j]); - unset($telids_b[$tela['telid']]); - break; - } - } - } - } - - foreach ($telids_b as $telidb => $i) - $ctels[] = array('telid' => $telidb, 'remove' => 1); - - if (!count($ctels)) { - $b['tels'] = $avar; - } else - $a['tels'] = $ctels; - } - - foreach ($a as $val => $avar) { - if (!isset($b[$val]) || !same_field($avar,$b[$val])) { - return $a; - } - } - return false; -} - -// $b need to use adrids -function diff_user_addresses(&$a, &$b) { - $c = $a; - $adrids_b = array(); - foreach ($b as $i => $adrb) $adrids_b[$adrb['adrid']] = $i; - - foreach ($a as $j => $adra) { - if (isset($adra['adrid'])) { - // if b has an address with the same adrid, compute diff - if (isset($adrids_b[$adra['adrid']])) { - if (!($c[$j] = diff_user_address($adra, $b[$adrids_b[$adra['adrid']]]))) - unset($c[$j]); - unset($adrids_b[$adra['adrid']]); - } - } else { - // try to find a match in b - foreach ($b as $i => $adrb) { - if (same_address($adra, $adrb)) { - $adra['adrid'] = $adrb['adrid']; - if (!($c[$j] = diff_user_address($adra, $adrb))) - unset($c[$j]); - if ($c[$j]) $c[$j]['adrid'] = $adra['adrid']; - unset($adrids_b[$adra['adrid']]); - break; - } - } - } - } - - foreach ($adrids_b as $adridb => $i) - $c[] = array('adrid' => $adridb, 'remove' => 1); - - if (!count($c)) return false; - return $c; -} - -function diff_user_pro($a, &$b, $view = 'private') { - if (isset($b['pub']) && isset($a['pub']) && has_user_right($b['pub'], $a['pub'])) - $a['pub'] = $b['pub']; - if (isset($b['adr_pub']) && !has_user_right($b['adr_pub'], $view)) { - unset($a['adr1']); - unset($a['adr2']); - unset($a['adr3']); - unset($a['postcode']); - unset($a['city']); - unset($a['countrytxt']); - unset($a['region']); - } - if (isset($b['adr_pub']) && isset($a['adr_pub']) && has_user_right($b['adr_pub'], $a['adr_pub'])) - $a['adr_pub'] = $b['adr_pub']; - if (isset($b['tel_pub']) && !has_user_right($b['tel_pub'], $view)) { - unset($a['tel']); - unset($a['fax']); - unset($a['mobile']); - } - if (isset($b['tel_pub']) && isset($a['tel_pub']) && has_user_right($b['tel_pub'], $a['tel_pub'])) - $a['tel_pub'] = $b['tel_pub']; - if (isset($b['email_pub']) && !has_user_right($b['email_pub'], $view)) - unset($a['email']); - if (isset($b['email_pub']) && isset($a['email_pub']) && has_user_right($b['email_pub'], $a['email_pub'])) - $a['email_pub'] = $b['email_pub']; - foreach ($a as $val => $avar) { - if (($avar && !isset($b[$val])) || !same_field($avar,$b[$val])) { - return $a; - } - } - return false; -} - -// $b need to use entrids -function diff_user_pros(&$a, &$b, $view = 'private') { - $c = $a; - $entrids_b = array(); - foreach ($b as $i => $prob) $entrids_b[$prob['entrid']] = $i; - - foreach ($a as $j => $proa) { - if (isset($proa['entrid'])) { - // if b has an address with the same adrid, compute diff - if (isset($entrids_b[$proa['entrid']])) { - if (!($c[$j] = diff_user_pro($proa, $b[$entrids_b[$proa['entrid']]], $view))) - unset($c[$j]); - unset($entrids_b[$proa['entrid']]); - } - } else { - // try to find a match in b - foreach ($b as $i => $prob) { - if (same_pro($proa, $prob)) { - $proa['entrid'] = $prob['entrid']; - if (!($c[$j] = diff_user_pro($proa, $prob, $view))) - unset($c[$j]); - if ($c[$j]) $c[$j]['entrid'] = $proa['entrid']; - unset($entrids_b[$proa['entrid']]); - break; - } - } - } - } - - foreach ($entrids_b as $entridb => $i) - $c[] = array('entrid' => $entridb, 'remove' => 1); - - if (!count($c)) return false; - return $c; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/rss.inc.php b/include/rss.inc.php deleted file mode 100644 index 3b07d78..0000000 --- a/include/rss.inc.php +++ /dev/null @@ -1,61 +0,0 @@ -changeTpl($template, NO_SKIN); - $page->register_modifier('rss_date', '_rss_encode_date'); - - $res = XDB::query( - 'SELECT a.id - FROM aliases AS a - INNER JOIN auth_user_md5 AS u ON (a.id = u.user_id AND u.perms IN ("admin", "user")) - INNER JOIN auth_user_quick AS q ON (a.id = q.user_id AND q.core_rss_hash = {?}) - WHERE a.alias = {?} AND a.type != "homonyme"', $hash, $alias); - $uid = $res->fetchOneCell(); - - if (empty($uid)) { - if ($require_uid) { - exit; - } else { - $uid = null; - } - } - - if ($template) { - $page->assign('rss_hash', $hash); - header('Content-Type: application/rss+xml; charset=utf8'); - } - return $uid; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/secure_hash.inc.php b/include/secure_hash.inc.php deleted file mode 100644 index 52a62cf..0000000 --- a/include/secure_hash.inc.php +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/include/security.inc.php b/include/security.inc.php deleted file mode 100644 index e0b1d14..0000000 --- a/include/security.inc.php +++ /dev/null @@ -1,110 +0,0 @@ -numRows()) { - $state = $res->fetchOneAssoc(); - $_SESSION['check_ip'] = $state['state']; - $_SESSION['check_ip_desc'] = $state['description']; - } else { - $_SESSION['check_ip'] = 'safe'; - } - } - $test = array(); - switch ($level) { - case 'unsafe': $test[] = 'unsafe'; - case 'dangerous': $test[] = 'dangerous'; - case 'ban': $test[] = 'ban'; break; - default: return false; - } - return in_array($_SESSION['check_ip'], $test); -} - -function check_email($email, $message) -{ - $res = XDB::query("SELECT state, description - FROM emails_watch - WHERE state != 'safe' AND email = {?}", $email); - if ($res->numRows()) { - send_warning_mail($message); - return true; - } - return false; -} - -function check_account() -{ - return S::v('watch_account'); -} - -function check_redirect($red = null) -{ - require_once 'emails.inc.php'; - if (is_null($red)) { - $red = new Redirect(S::v('uid')); - } - if ($red->get_uid() == S::v('uid')) { - $_SESSION['no_redirect'] = !$red->other_active(''); - $_SESSION['mx_failures'] = $red->get_broken_mx(); - } -} - -function send_warning_mail($title) -{ - global $globals; - $mailer = new PlMailer(); - $mailer->setFrom("webmaster@" . $globals->mail->domain); - $mailer->addTo($globals->core->admin_email); - $mailer->setSubject("[Plat/al Security Alert] $title"); - $mailer->setTxtBody("Identifiants de session :\n" . var_export($_SESSION, true) . "\n\n" - ."Identifiants de connexion :\n" . var_export($_SERVER, true)); - $mailer->send(); -} - -function kill_sessions() -{ - assert(S::has_perms()); - shell_exec('sudo -u root ' . dirname(dirname(__FILE__)) . '/bin/kill_sessions.sh'); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/synchro_ax.inc.php b/include/synchro_ax.inc.php deleted file mode 100644 index 6b06c12..0000000 --- a/include/synchro_ax.inc.php +++ /dev/null @@ -1,118 +0,0 @@ -webservice->private_key_ax) || !is_file($globals->webservice->private_key_ax); -} - -function get_user_ax($matricule_ax, $raw=false) -{ - require_once('webservices/ax/client.inc'); - - $ancien = recupere_infos_ancien($matricule_ax); - - $userax = Array(); - $userax['matricule_ax'] = $matricule_ax; - - $userax['nom'] = strtoupper($ancien->Nom_patr()); - $userax['nom_usage'] = strtoupper($ancien->Nom_usuel()); - if ($userax['nom_usage'] == $userax['nom']) $userax['nom_usage'] = ''; - $userax['prenom'] = $ancien->Prenom(); - $userax['sexe'] = ($ancien->Civilite() != 'M')?1:0; - $userax['promo'] = $ancien->Promo(); -/* $userax['nationalite'] = $ancien->Nationalite(); - if ($userax['nationalite'] == 'F') $userax['nationalite'] = 'Français'; */ - //$userax['date'] = substr($ancien[12], 0, 10); - $userax['mobile'] = trim($ancien->Mobile(0)); -/* if ($ancien->Corps() == 'D' || $ancien->Corps() == 'Z') { - $userax['corps'] = false; - } else { - $userax['corps'] = $ancien->Corps(); - $userax['corps_grade'] = $ancien->Grade(); - } */ - $userax['adr_pro'] = array(); - - for ($i = 0; $i < $ancien->Num_Activite(); $i++) { - $jobax = array(); - $jobax['entreprise'] = $ancien->Entreprise($i); - if (!$jobax['entreprise']) - $jobax['entreprise'] = $ancien->Adresse_act_adresse1($i); - $jobax['poste'] = $ancien->Fonction($i); - $jobax['adr1'] = $ancien->Adresse_act_adresse1($i); - $jobax['adr2'] = $ancien->Adresse_act_adresse2($i); - $jobax['adr3'] = $ancien->Adresse_act_adresse3($i); - $jobax['postcode'] = $ancien->Adresse_act_code_pst($i); - $jobax['city'] = $ancien->Adresse_act_ville($i); - $jobax['region'] = $ancien->Adresse_act_etat_region($i); - $jobax['countrytxt'] = ucwords(strtolower($ancien->Adresse_act_pays($i))); - $jobax['tel'] = $ancien->Adresse_act_tel($i); - $jobax['fax'] = $ancien->Adresse_act_fax($i); - $jobax['mobile'] = $ancien->Adresse_act_mobile($i); - $jobax['pub'] = 'ax'; - $jobax['tel_pub'] = 'ax'; - $jobax['adr_pub'] = 'ax'; - $jobax['email_pub'] = 'ax'; - $userax['adr_pro'][] = $jobax; - } - - $userax['adr'] = array(); - for($i=$ancien->Num_adresse() - 1; $i >= 0; $i--) { - $adrax = array(); - $adrax['adr1'] = $ancien->Adresse1($i); - $adrax['adr2'] = $ancien->Adresse2($i); - $adrax['adr3'] = $ancien->Adresse3($i); - $adrax['postcode'] = $ancien->Code_pst($i); - $adrax['city'] = $ancien->Ville($i); - $adrax['region'] = $ancien->Etat_region($i); - $adrax['countrytxt'] = ucwords(strtolower($ancien->Pays($i))); - $adrax['pub'] = 'ax'; - if ($ancien->Tel($i) || $ancien->Fax($i)) { - $adrax['tels'] = array(); - if ($tel = $ancien->Tel($i)) - $adrax['tels'][] = array('tel' => $tel, 'tel_type' => 'Tél.', 'tel_pub' => 'ax'); - if ($tel = $ancien->Fax($i)) - $adrax['tels'][] = array('tel' => $tel, 'tel_type' => 'Fax', 'tel_pub' => 'ax'); - } - if ($ancien->Mobile($i)) $userax['mobile'] = $ancien->Mobile($i); - $userax['adr'][$i] = $adrax; - } - -/* $userax['formation'] = array(); - for($i=$ancien->Num_formation() - 1; $i >= 0; $i--) - $userax['formation'][$i] = $ancien->Formation($i);*/ - - return $userax; -} - -function ax_synchronize($login, $uid) { - require_once('user.func.inc.php'); - require_once 'profil.func.inc.php'; - // get details from user, but looking only info that can be seen by ax - $user = get_user_details($login, $uid, 'ax'); - $userax= get_user_ax($user['matricule_ax']); - $diff = diff_user_details($userax, $user, 'ax'); - set_user_details($user['user_id'], $diff); -} -// vim:set et sw=4 sts=4 sws=4 enc=utf-8: -?> diff --git a/include/user.func.inc.php b/include/user.func.inc.php deleted file mode 100644 index 1f8a698..0000000 --- a/include/user.func.inc.php +++ /dev/null @@ -1,844 +0,0 @@ -fetchOneCell(); - - $tables_to_clear = array('uid' => array('competences_ins', 'entreprises', 'langues_ins', 'mentor_pays', - 'mentor_secteurs', 'mentor', 'perte_pass', 'watch_sub'), - 'user_id' => array('requests', 'user_changes')); - - if ($really_del) { - array_push($tables_to_clear['uid'], 'emails', 'groupex.membres', 'contacts', 'adresses', 'tels', - 'photo', 'perte_pass', 'langues_ins', 'forums.abos', 'forums.profils'); - array_push($tables_to_clear['user_id'], 'newsletter_ins', 'auth_user_quick', 'binets_ins'); - $tables_to_clear['id'] = array('aliases'); - $tables_to_clear['contact'] = array('contacts'); - XDB::execute("UPDATE auth_user_md5 - SET date_ins = 0, promo_sortie = 0, nom_usage = '', password = '', perms = 'pending', - nationalite = '', cv = '', section = 0, date = 0, smtppass = '', mail_storage = '' - WHERE user_id = {?}", $uid); - XDB::execute("DELETE virtual.* FROM virtual INNER JOIN virtual_redirect AS r USING(vid) WHERE redirect = {?}", - $alias.'@'.$globals->mail->domain); - XDB::execute("DELETE virtual.* FROM virtual INNER JOIN virtual_redirect AS r USING(vid) WHERE redirect = {?}", - $alias.'@'.$globals->mail->domain2); - } else { - XDB::execute("UPDATE auth_user_md5 SET password='',smtppass='' WHERE user_id={?}", $uid); - XDB::execute("UPDATE auth_user_quick SET watch_flags='' WHERE user_id={?}", $uid); - } - - XDB::execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain); - XDB::execute("DELETE FROM virtual_redirect WHERE redirect = {?}", $alias.'@'.$globals->mail->domain2); - - foreach ($tables_to_clear as $key=>&$tables) { - foreach ($tables as $table) { - XDB::execute("DELETE FROM $table WHERE $key={?}", $uid); - } - } - - $mmlist = new MMList(S::v('uid'), S::v('password')); - $mmlist->kill($alias, $really_del); - - // Deactivates, when available, the Google Apps account of the user. - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - if (GoogleAppsAccount::account_status($uid)) { - $account = new GoogleAppsAccount($uid, $alias); - $account->suspend(); - } - } -} - -// }}} -// {{{ function get_user_login() - -// Defaut callback to call when a login is not found -function _default_user_callback($login) -{ - Platal::page()->trigError("Il n'y a pas d'utilisateur avec l'identifiant : $login"); - return; -} - -function _silent_user_callback($login) -{ - return; -} - -function get_user_login($data, $get_forlife = false, $callback = '_default_user_callback') -{ - global $globals; - - if (is_numeric($data)) { - $res = XDB::query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $data); - if ($res->numRows()) { - return $res->fetchOneCell(); - } else { - call_user_func($callback, $data); - return false; - } - } - - $data = trim(strtolower($data)); - - if (strstr($data, '@')===false) { - $data = $data.'@'.$globals->mail->domain; - } - - list($mbox, $fqdn) = explode('@', $data); - if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) { - - $res = XDB::query("SELECT a.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) - WHERE a.type = 'a_vie'", $mbox); - if ($res->numRows()) { - return $get_forlife ? $res->fetchOneCell() : $mbox; - } - - if (preg_match('/^(.*)\.([0-9]{4})$/u', $mbox, $matches)) { - $res = XDB::query("SELECT a.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) - INNER JOIN auth_user_md5 AS u ON (a.id = u.user_id AND promo = {?}) - WHERE a.type = 'a_vie'", $matches[1], $matches[2]); - if ($res->numRows() == 1) { - return $res->fetchOneCell(); - } - } - call_user_func($callback, $data); - return false; - - } elseif ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) { - - $res = XDB::query("SELECT redirect - FROM virtual_redirect - INNER JOIN virtual USING(vid) - WHERE alias={?}", $mbox.'@'.$globals->mail->alias_dom); - if ($redir = $res->fetchOneCell()) { - list($alias) = explode('@', $redir); - } else { - call_user_func($callback, $data); - $alias = false; - } - return $alias; - } else { - - $res = XDB::query("SELECT alias - FROM aliases AS a - INNER JOIN emails AS e ON e.uid=a.id - WHERE e.email={?} AND a.type='a_vie'", $data); - switch ($i = $res->numRows()) { - case 0: - call_user_func($callback, $data); - return false; - - case 1: - return $res->fetchOneCell(); - - default: - if (S::has_perms()) { - $aliases = $res->fetchColumn(); - Platal::page()->trigError("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases)); - } else { - $res->free(); - } - } - } - - return false; -} - -// }}} -// {{{ function get_user_forlife() - -function get_user_forlife($data, $callback = '_default_user_callback') -{ - return get_user_login($data, true, $callback); -} - -// }}} -// {{{ function get_users_forlife_list() - -function get_users_forlife_list($members, $strict = false, $callback = '_default_user_callback') -{ - if (!is_array($members)) { - if (strlen(trim($members)) == 0) { - return null; - } - $members = explode(' ', $members); - } - if ($members) { - $list = array(); - foreach ($members as $i => $alias) { - if (($login = get_user_forlife($alias, $callback)) !== false) { - $list[$i] = $login; - } else if(!$strict) { - $list[$i] = $alias; - } - } - return $list; - } - return null; -} - -// }}} -// {{{ function has_user_right() -function has_user_right($pub, $view = 'private') { - if ($pub == $view) return true; - // all infos available for private - if ($view == 'private') return true; - // public infos available for all - if ($pub == 'public') return true; - // here we have view = ax or public, and pub = ax or private, and pub != view - return false; -} -// }}} -// {{{ function get_not_registered_user() - -function get_not_registered_user($login, $iterator = false) -{ - global $globals; - @list($login, $domain) = explode('@', $login); - if ($domain && $domain != $globals->mail->domain && $domain != $globals->mail->domain2) { - return null; - } - @list($prenom, $nom, $promo) = explode('.', $login); - $where = 'REPLACE(REPLACE(REPLACE(nom, " ", ""), "-", ""), "\'", "") LIKE CONCAT("%", {?}, "%") - AND REPLACE(REPLACE(REPLACE(prenom, " ", ""), "-", ""), "\'", "") LIKE CONCAT("%", {?}, "%")'; - if ($promo) { - if (preg_match('/^[0-9]{2}$/', $promo)) { - $where .= 'AND MOD(promo, 100) = {?}'; - } elseif (preg_match('/^[0-9]{4}$/', $promo)) { - $where .= 'AND promo = {?}'; - } - } - $sql = "SELECT user_id, nom, prenom, promo - FROM auth_user_md5 - WHERE $where - ORDER BY promo, nom, prenom"; - if ($iterator) { - return XDB::iterator($sql, $nom, $prenom, $promo); - } else { - $res = XDB::query($sql, $nom, $prenom, $promo); - return $res->fetchAllAssoc(); - } -} - -// }}} -// {{{ function get_user_details_pro() - -function get_user_details_pro($uid, $view = 'private') -{ - $sql = "SELECT e.entreprise, s.label as secteur , ss.label as sous_secteur , f.fonction_fr as fonction, - e.poste, e.adr1, e.adr2, e.adr3, e.postcode, e.city, e.entrid, - gp.pays AS countrytxt, gr.name AS region, e.tel, e.fax, e.mobile, e.entrid, - e.pub, e.adr_pub, e.tel_pub, e.email, e.email_pub, e.web - FROM entreprises AS e - LEFT JOIN emploi_secteur AS s ON(e.secteur = s.id) - LEFT JOIN emploi_ss_secteur AS ss ON(e.ss_secteur = ss.id AND e.secteur = ss.secteur) - LEFT JOIN fonctions_def AS f ON(e.fonction = f.id) - LEFT JOIN geoloc_pays AS gp ON (gp.a2 = e.country) - LEFT JOIN geoloc_region AS gr ON (gr.a2 = e.country and gr.region = e.region) - WHERE e.uid = {?} - ORDER BY e.entrid"; - $res = XDB::query($sql, $uid); - $all_pro = $res->fetchAllAssoc(); - foreach ($all_pro as $i => $pro) { - if (!has_user_right($pro['pub'], $view)) - unset($all_pro[$i]); - else { - if (!has_user_right($pro['adr_pub'], $view)) { - if ($pro['adr1'] == '' && - $pro['adr2'] == '' && - $pro['adr3'] == '' && - $pro['postcode'] == '' && - $pro['city'] == '' && - $pro['countrytxt'] == '' && - $pro['region'] == '') { - $all_pro[$i]['adr_pub'] = $view; - } else { - $all_pro[$i]['adr1'] = ''; - $all_pro[$i]['adr2'] = ''; - $all_pro[$i]['adr3'] = ''; - $all_pro[$i]['postcode'] = ''; - $all_pro[$i]['city'] = ''; - $all_pro[$i]['countrytxt'] = ''; - $all_pro[$i]['region'] = ''; - } - } - if (!has_user_right($pro['tel_pub'], $view)) { - // if no tel was defined, then the viewer will be able to write it - if ($pro['tel'] == '' && - $pro['fax'] == '' && - $pro['mobile'] == '') { - $all_pro[$i]['tel_pub'] = $view; - } else { - $all_pro[$i]['tel'] = ''; - $all_pro[$i]['fax'] = ''; - $all_pro[$i]['mobile'] = ''; - } - } - if (!has_user_right($pro['email_pub'], $view)) { - if ($pro['email'] == '') - $all_pro[$i]['email_pub'] = $view; - else - $all_pro[$i]['email'] = ''; - } - if ($all_pro[$i]['adr1'] == '' && - $all_pro[$i]['adr2'] == '' && - $all_pro[$i]['adr3'] == '' && - $all_pro[$i]['postcode'] == '' && - $all_pro[$i]['city'] == '' && - $all_pro[$i]['countrytxt'] == '' && - $all_pro[$i]['region'] == '' && - $all_pro[$i]['entreprise'] == '' && - $all_pro[$i]['fonction'] == '' && - $all_pro[$i]['secteur'] == '' && - $all_pro[$i]['poste'] == '' && - $all_pro[$i]['tel'] == '' && - $all_pro[$i]['fax'] == '' && - $all_pro[$i]['mobile'] == '' && - $all_pro[$i]['email'] == '') - unset($all_pro[$i]); - } - } - if (!count($all_pro)) return false; - return $all_pro; -} - -// }}} -// {{{ function get_user_details_adr() - -function get_user_details_adr($uid, $view = 'private') { - $sql = "SELECT a.adrid, a.adr1,a.adr2,a.adr3,a.postcode,a.city, - gp.pays AS countrytxt,a.region, a.regiontxt, - FIND_IN_SET('active', a.statut) AS active, a.adrid, - FIND_IN_SET('res-secondaire', a.statut) AS secondaire, - a.pub, gp.display - FROM adresses AS a - LEFT JOIN geoloc_pays AS gp ON (gp.a2=a.country) - WHERE uid= {?} AND NOT FIND_IN_SET('pro',a.statut) - ORDER BY NOT FIND_IN_SET('active',a.statut), FIND_IN_SET('temporaire',a.statut), FIND_IN_SET('res-secondaire',a.statut)"; - $res = XDB::query($sql, $uid); - $all_adr = $res->fetchAllAssoc(); - $adrid_index = array(); - foreach ($all_adr as $i => $adr) { - if (!has_user_right($adr['pub'], $view)) - unset($all_adr[$i]); - else - $adrid_index[$adr['adrid']] = $i; - } - - $sql = "SELECT t.adrid, t.tel_pub, t.tel_type, t.tel, t.telid - FROM tels AS t - INNER JOIN adresses AS a ON (a.uid = t.uid) AND (a.adrid = t.adrid) - WHERE t.uid = {?} AND NOT FIND_IN_SET('pro',a.statut) - ORDER BY t.adrid, t.tel_type DESC, t.telid"; - $restel = XDB::iterator($sql, $uid); - while ($nexttel = $restel->next()) { - if (has_user_right($nexttel['tel_pub'], $view)) { - $adrid = $nexttel['adrid']; - unset($nexttel['adrid']); - if (isset($adrid_index[$adrid])) { - if (!isset($all_adr[$adrid_index[$adrid]]['tels'])) - $all_adr[$adrid_index[$adrid]]['tels'] = array($nexttel); - else - $all_adr[$adrid_index[$adrid]]['tels'][] = $nexttel; - } - } - } - return $all_adr; -} - -// }}} -// {{{ function get_user_details() - -function &get_user_details($login, $from_uid = '', $view = 'private') -{ - $reqsql = "SELECT u.user_id, u.promo, u.promo_sortie, u.prenom, u.nom, u.nom_usage, u.date, u.cv, - u.perms IN ('admin','user','disabled') AS inscrit, FIND_IN_SET('femme', u.flags) AS sexe, u.deces != 0 AS dcd, u.deces, - q.profile_nick AS nickname, q.profile_from_ax, q.profile_mobile AS mobile, q.profile_web AS web, q.profile_freetext AS freetext, - q.profile_mobile_pub AS mobile_pub, q.profile_web_pub AS web_pub, q.profile_freetext_pub AS freetext_pub, - q.profile_medals_pub AS medals_pub, - IF(gp.nat='',gp.pays,gp.nat) AS nationalite, gp.a2 AS iso3166, - a.alias AS forlife, a2.alias AS bestalias, - c.uid IS NOT NULL AS is_contact, - s.text AS section, p.x, p.y, p.pub AS photo_pub, - u.matricule_ax, - m.expertise != '' AS is_referent, - (COUNT(e.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - INNER JOIN aliases AS a ON (u.user_id=a.id AND a.type='a_vie') - INNER JOIN aliases AS a2 ON (u.user_id=a2.id AND FIND_IN_SET('bestalias',a2.flags)) - LEFT JOIN contacts AS c ON (c.uid = {?} and c.contact = u.user_id) - LEFT JOIN geoloc_pays AS gp ON (gp.a2 = u.nationalite) - INNER JOIN sections AS s ON (s.id = u.section) - LEFT JOIN photo AS p ON (p.uid = u.user_id) - LEFT JOIN mentor AS m ON (m.uid = u.user_id) - LEFT JOIN emails AS e ON (e.uid = u.user_id AND e.flags='active') - WHERE a.alias = {?} - GROUP BY u.user_id"; - $res = XDB::query($reqsql, $from_uid, $login); - $user = $res->fetchOneAssoc(); - $uid = $user['user_id']; - // hide orange status, cv, nickname, section - if (!has_user_right('private', $view)) { - $user['promo_sortie'] = $user['promo'] + 3; - $user['cv'] = ''; - $user['nickname'] = ''; - $user['section'] = ''; - } - // hide mobile - if (!has_user_right($user['mobile_pub'], $view)) { - if ($user['mobile'] == '') - $user['mobile_pub'] = $view; - else - $user['mobile'] = ''; - } - // hide web - if (!has_user_right($user['web_pub'], $view)) { - if ($user['web'] == '') - $user['web_pub'] = $view; - else - $user['web'] = ''; - } - // hide freetext - if (!has_user_right($user['freetext_pub'], $view)) { - if ($user['freetext'] == '') - $user['freetext_pub'] = $view; - else - $user['freetext'] = ''; - } - - $user['adr_pro'] = get_user_details_pro($uid, $view); - $user['adr'] = get_user_details_adr($uid, $view); - - if (has_user_right('private', $view)) { - $sql = "SELECT text - FROM binets_ins - LEFT JOIN binets_def ON binets_ins.binet_id = binets_def.id - WHERE user_id = {?}"; - $res = XDB::query($sql, $uid); - $user['binets'] = $res->fetchColumn(); - $user['binets_join'] = join(', ', $user['binets']); - - $res = XDB::iterRow("SELECT a.diminutif, a.nom, a.site - FROM groupex.asso AS a - LEFT JOIN groupex.membres AS m ON (m.asso_id = a.id) - WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions') - AND pub = 'public'", $uid); - $user['gpxs'] = Array(); - $user['gpxs_name'] = Array(); - while (list($gxd, $gxt, $gxu) = $res->next()) { - if (!$gxu) { - $gxu = 'http://www.polytechnique.net/' . $gxd; - } - $user['gpxs'][] = '$gxd"; - $user['gpxs_name'][] = $gxt; - } - $user['gpxs_join'] = join(', ', $user['gpxs']); - } - - $res = XDB::iterRow("SELECT applis_def.text, applis_def.url, applis_ins.type - FROM applis_ins - INNER JOIN applis_def ON applis_def.id = applis_ins.aid - WHERE uid={?} - ORDER BY ordre", $uid); - - $user['applis_fmt'] = Array(); - $user['formation'] = Array(); - while (list($txt, $url, $type) = $res->next()) { - $user['formation'][] = $txt." ".$type; - require_once('applis.func.inc.php'); - $user['applis_fmt'][] = applis_fmt($type, $txt, $url); - } - $user['applis_join'] = join(', ', $user['applis_fmt']); - - if (has_user_right($user['medals_pub'], $view)) { - $res = XDB::iterator("SELECT m.id, m.text AS medal, m.type, s.gid, g.text AS grade - FROM profile_medals_sub AS s - INNER JOIN profile_medals AS m ON ( s.mid = m.id ) - LEFT JOIN profile_medals_grades AS g ON ( s.mid = g.mid AND s.gid = g.gid ) - WHERE s.uid = {?}", $uid); - $user['medals'] = Array(); - while ($tmp = $res->next()) { - $user['medals'][] = $tmp; - } - } - - return $user; -} -// }}} -// {{{ function add_user_address() -function add_user_address($uid, $adrid, $adr) { - XDB::execute( - "INSERT INTO adresses (`uid`, `adrid`, `adr1`, `adr2`, `adr3`, `postcode`, `city`, `country`, `datemaj`, `pub`) ( - SELECT u.user_id, {?}, {?}, {?}, {?}, {?}, {?}, gp.a2, NOW(), {?} - FROM auth_user_md5 AS u - LEFT JOIN geoloc_pays AS gp ON (gp.pays LIKE {?} OR gp.country LIKE {?} OR gp.a2 LIKE {?}) - WHERE u.user_id = {?} - LIMIT 1)", - $adrid, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['postcode'], $adr['city'], $adr['pub'], $adr['countrytxt'], $adr['countrytxt'], $adr['countrytxt'], $uid); - if (isset($adr['tels']) && is_array($adr['tels'])) { - $telid = 0; - foreach ($adr['tels'] as $tel) if ($tel['tel']) { - add_user_tel($uid, $adrid, $telid, $tel); - $telid ++; - } - } -} -// }}} -// {{{ function update_user_address() -function update_user_address($uid, $adrid, $adr) { - // update address - XDB::execute( - "UPDATE adresses AS a LEFT JOIN geoloc_pays AS gp ON (gp.pays = {?}) - SET `adr1` = {?}, `adr2` = {?}, `adr3` = {?}, - `postcode` = {?}, `city` = {?}, a.`country` = gp.a2, `datemaj` = NOW(), `pub` = {?} - WHERE adrid = {?} AND uid = {?}", - $adr['country_txt'], - $adr['adr1'], $adr['adr2'], $adr['adr3'], - $adr['postcode'], $adr['city'], $adr['pub'], $adrid, $uid); - if (isset($adr['tels']) && is_array($adr['tels'])) { - $res = XDB::query("SELECT telid FROM tels WHERE uid = {?} AND adrid = {?} ORDER BY telid", $uid, $adrid); - $telids = $res->fetchColumn(); - foreach ($adr['tels'] as $tel) { - if (isset($tel['telid']) && isset($tel['remove']) && $tel['remove']) { - remove_user_tel($uid, $adrid, $tel['telid']); - if (isset($telids[$tel['telid']])) unset($telids[$tel['telid']]); - } else if (isset($tel['telid'])) { - update_user_tel($uid, $adrid, $tel['telid'], $tel); - } else { - for ($telid = 0; isset($telids[$telid]) && ($telids[$telid] == $telid); $telid++); - add_user_tel($uid, $adrid, $telid, $tel); - } - } - } -} -// }}} -// {{{ function remove_user_address() -function remove_user_address($uid, $adrid) { - XDB::execute("DELETE FROM adresses WHERE adrid = {?} AND uid = {?}", $adrid, $uid); - XDB::execute("DELETE FROM tels WHERE adrid = {?} AND uid = {?}", $adrid, $uid); -} -// }}} -// {{{ function add_user_tel() -function add_user_tel($uid, $adrid, $telid, $tel) { - XDB::execute( - "INSERT INTO tels SET uid = {?}, adrid = {?}, telid = {?}, tel = {?}, tel_type = {?}, tel_pub = {?}", - $uid, $adrid, $telid, $tel['tel'], $tel['tel_type'], $tel['tel_pub']); -} -// }}} -// {{{ function update_user_tel() -function update_user_tel($uid, $adrid, $telid, $tel) { - XDB::execute( - "UPDATE tels SET tel = {?}, tel_type = {?}, tel_pub = {?} - WHERE telid = {?} AND adrid = {?} AND uid = {?}", - $tel['tel'], $tel['tel_type'], $tel['tel_pub'], - $telid, $adrid, $uid); -} -// }}} -// {{{ function remove_user_tel() -function remove_user_tel($uid, $adrid, $telid) { - XDB::execute("DELETE FROM tels WHERE telid = {?} AND adrid = {?} AND uid = {?}", - $telid, $adrid, $uid); -} -// }}} -// {{{ function add_user_pro() -function add_user_pro($uid, $entrid, $pro) { - XDB::execute( - "INSERT INTO entreprises (`uid`, `entrid`, `entreprise`, `poste`, `secteur`, `ss_secteur`, `fonction`, - `adr1`, `adr2`, `adr3`, `postcode`, `city`, `country`, `region`, `tel`, `fax`, `mobile`, `email`, `web`, `pub`, `adr_pub`, `tel_pub`, `email_pub`) - SELECT u.user_id, {?}, {?}, {?}, s.id, ss.id, f.id, - {?}, {?}, {?}, {?}, {?}, gp.a2, gr.region, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?} - FROM auth_user_md5 AS u - LEFT JOIN emploi_secteur AS s ON(s.label LIKE {?}) - LEFT JOIN emploi_ss_secteur AS ss ON(s.id = ss.secteur AND ss.label LIKE {?}) - LEFT JOIN fonctions_def AS f ON(f.fonction_fr LIKE {?} OR f.fonction_en LIKE {?}) - LEFT JOIN geoloc_pays AS gp ON (gp.country LIKE {?} OR gp.pays LIKE {?}) - LEFT JOIN geoloc_region AS gr ON (gr.a2 = gp.a2 AND gr.name LIKE {?}) - WHERE u.user_id = {?} - LIMIT 1", - $entrid, $pro['entreprise'], $pro['poste'], - $pro['adr1'], $pro['adr2'], $pro['adr3'], $pro['postcode'], $pro['city'], $pro['tel'], $pro['fax'], $pro['mobile'], $pro['email'], $pro['web'], $pro['pub'], $pro['adr_pub'], $pro['tel_pub'], $pro['email_pub'], - $pro['secteur'], $pro['sous_secteur'], $pro['fonction'], $pro['fonction'], - $pro['countrytxt'], $pro['countrytxt'], $pro['region'], - $uid); -} -// }}} -// {{{ function update_user_pro() -function update_user_pro($uid, $entrid, $pro) { - $join = ""; - $set = ""; - $args_join = array(); - $args_set = array(); - - $join .= "LEFT JOIN emploi_secteur AS s ON(s.label LIKE {?}) - LEFT JOIN emploi_ss_secteur AS ss ON(s.id = ss.secteur AND ss.label LIKE {?}) - LEFT JOIN fonctions_def AS f ON(f.fonction_fr LIKE {?} OR f.fonction_en LIKE {?})"; - $args_join[] = $pro['secteur']; - $args_join[] = $pro['sous_secteur']; - $args_join[] = $pro['fonction']; - $args_join[] = $pro['fonction']; - $set .= ", e.`entreprise` = {?}, e.`secteur` = s.id, e.`ss_secteur` = ss.id, e.`fonction` = f.id, e.`poste`= {?}, e.`web` = {?}, e.`pub` = {?}"; - $args_set[] = $pro['entreprise']; - $args_set[] = $pro['poste']; - $args_set[] = $pro['web']; - $args_set[] = $pro['pub']; - - if (isset($pro['adr1'])) { - $join .= "LEFT JOIN geoloc_pays AS gp ON (gp.country LIKE {?} OR gp.pays LIKE {?}) - LEFT JOIN geoloc_region AS gr ON (gr.a2 = gp.a2 AND gr.name LIKE {?})"; - $args_join[] = $pro['countrytxt']; - $args_join[] = $pro['countrytxt']; - $args_join[] = $pro['region']; - $set .= ", e.`adr1` = {?}, e.`adr2` = {?}, e.`adr3` = {?}, e.`postcode` = {?}, e.`city` = {?}, e.`country` = gp.a2, e.`region` = gr.region, e.`adr_pub` = {?}"; - $args_set[] = $pro['adr1']; - $args_set[] = $pro['adr2']; - $args_set[] = $pro['adr3']; - $args_set[] = $pro['postcode']; - $args_set[] = $pro['city']; - $args_set[] = $pro['adr_pub']; - } - - if (isset($pro['tel'])) { - $set .= ", e.`tel` = {?}, e.`fax` = {?}, e.`mobile` = {?}, e.tel_pub = {?}"; - $args_set[] = $pro['tel']; - $args_set[] = $pro['fax']; - $args_set[] = $pro['mobile']; - $args_set[] = $pro['tel_pub']; - } - if (isset($pro['email'])) { - $set .= ", e.`email` = {?}, e.`email_pub` = {?}"; - $args_set[] = $pro['email']; - $args_set[] = $pro['email_pub']; - } - $query = "UPDATE entreprises AS e ".$join." SET ".substr($set,1)." WHERE e.uid = {?} AND e.entrid = {?}"; - $args_where = array($uid, $entrid); - $args = array_merge(array($query), $args_join, $args_set, $args_where); - call_user_func_array(array('XDB', 'execute'), $args); -} -// }}} -// {{{ function remove_user_pro() -function remove_user_pro($uid, $entrid) { - XDB::execute("DELETE FROM entreprises WHERE entrid = {?} AND uid = {?}", $entrid, $uid); -} -// }}} -// {{{ function set_user_details() -function set_user_details_addresses($uid, $adrs) { - $res = XDB::query("SELECT adrid FROM adresses WHERE uid = {?} AND adrid >= 1 ORDER BY adrid", $uid); - $adrids = $res->fetchColumn(); - foreach ($adrs as $adr) { - if (isset($adr['adrid']) && isset($adr['remove']) && $adr['remove']) { - remove_user_address($uid, $adr['adrid']); - if (isset($adrids[$adr['adrid']])) unset($adrids[$adr['adrid']]); - } else if (isset($adr['adrid'])) { - update_user_address($uid, $adr['adrid'], $adr); - } else { - for ($adrid = 1; isset($adrids[$adrid-1]) && ($adrids[$adrid-1] == $adrid); $adrid++); - add_user_address($uid, $adrid, $adr); - $adrids[$adrid-1] = $adrid; - } - } - require_once 'geoloc.inc.php'; - localize_addresses($uid); -} -// }}} -// {{{ function set_user_details_pro() - -function set_user_details_pro($uid, $pros) -{ - $res = XDB::query("SELECT entrid FROM entreprises WHERE uid = {?} ORDER BY entrid", $uid); - $entrids = $res->fetchColumn(); - foreach ($pros as $pro) { - if (isset($pro['entrid']) && isset($pro['remove']) && $pro['remove']) { - remove_user_pro($uid, $pro['entrid']); - if (isset($entrids[$pro['entrid']])) unset($entrids[$pro['entrid']]); - } else if (isset($pro['entrid'])) { - update_user_pro($uid, $pro['entrid'], $pro); - } else { - for ($entrid = 0; isset($entrids[$entrid]) && ($entrids[$entrid] == $entrid); $entrid++); - add_user_pro($uid, $entrid, $pro); - } - } -} - -// }}} -// {{{ function set_user_details() -function set_user_details($uid, $details) { - if (isset($details['nom_usage'])) { - XDB::execute("UPDATE auth_user_md5 SET nom_usage = {?} WHERE user_id = {?}", strtoupper($details['nom_usage']), $uid); - } - if (isset($details['mobile'])) { - XDB::execute("UPDATE auth_user_quick SET profile_mobile = {?} WHERE user_id = {?}", $details['mobile'], $uid); - } - if (isset($details['nationalite'])) { - XDB::execute( - "UPDATE auth_user_md5 AS u - INNER JOIN geoloc_pays AS gp - SET u.nationalite = gp.a2 - WHERE (gp.a2 = {?} OR gp.nat = {?}) - AND u.user_id = {?}", $details['nationalite'], $details['nationalite'], $uid); - } - if (isset($details['adr']) && is_array($details['adr'])) - set_user_details_addresses($uid, $details['adr']); - if (isset($details['adr_pro']) && is_array($details['adr_pro'])) - set_user_details_pro($uid, $details['adr_pro']); - if (isset($details['binets']) && is_array($details['binets'])) { - XDB::execute("DELETE FROM binets_ins WHERE user_id = {?}", $uid); - foreach ($details['binets'] as $binet) - XDB::execute( - "INSERT INTO binets_ins (`user_id`, `binet_id`) - SELECT {?}, id FROM binets_def WHERE text = {?} LIMIT 1", - $uid, $binet); - } - if (isset($details['gpxs']) && is_array($details['gpxs'])) { - XDB::execute("DELETE FROM groupesx_ins WHERE user_id = {?}", $uid); - foreach ($details['gpxs'] as $groupex) { - if (preg_match('/([^<]+)/u', $groupex, $a)) $groupex = $a[1]; - XDB::execute( - "INSERT INTO groupesx_ins (`user_id`, `binet_id`) - SELECT {?}, id FROM groupesx_def WHERE text = {?} LIMIT 1", - $uid, $groupex); - } - } - // applis - // medals -} -// }}} -// {{{ function _user_reindex - -function _user_reindex($uid, $keys, $muls, $pubs) -{ - foreach ($keys as $i => $key) { - if ($key == '') { - continue; - } - $toks = preg_split('/[ \'\-]+/', $key); - $token = ""; - $first = 5; - while ($toks) { - $token = strtolower(replace_accent(array_pop($toks) . $token)); - $score = ($toks ? 0 : 10 + $first) * $muls[$i]; - XDB::execute("REPLACE INTO search_name (token, uid, soundex, score, flags) - VALUES ({?}, {?}, {?}, {?}, {?})", - $token, $uid, soundex_fr($token), $score, $pubs[$i] ? 'public' : ''); - $first = 0; - } - } - $res = XDB::query("SELECT nom_ini, nom, nom_usage, prenom_ini, prenom, promo, matricule - FROM auth_user_md5 - WHERE user_id = {?}", $uid); - if (!$res->numRows()) { - unset($res); - return; - } - $array = $res->fetchOneRow(); - $promo = intval(array_pop($array)); - $mat = array_shift($array); - array_walk($array, 'soundex_fr'); - XDB::execute("REPLACE INTO recherche_soundex - SET matricule = {?}, nom1_soundex = {?}, nom2_soundex= {?}, nom3_soundex = {?}, - prenom1_soundex = {?}, prenom2_soundex= {?}, promo = {?}", - $mat, $array[0], $array[1], $array[2], $array[3], $array[4], $promo); - unset($res); - unset($array); -} - -// }}} -// {{{ function user_reindex - -function user_reindex($uid) { - XDB::execute("DELETE FROM search_name WHERE uid={?}", $uid); - $res = XDB::query("SELECT prenom, nom, nom_usage, profile_nick FROM auth_user_md5 INNER JOIN auth_user_quick USING(user_id) WHERE auth_user_md5.user_id = {?}", $uid); - if ($res->numRows()) { - _user_reindex($uid, $res->fetchOneRow(), array(1,1,1,0.2), array(true, true, true, false)); - } else { // not in auth_user_quick => still "pending" - $res = XDB::query("SELECT prenom, nom, nom_usage FROM auth_user_md5 WHERE auth_user_md5.user_id = {?}", $uid); - if ($res->numRows()) { - _user_reindex($uid, $res->fetchOneRow(), array(1,1,1), array(true, true, true)); - } - } -} - -// }}} -// {{{ function set_new_usage() - -function set_new_usage($uid, $usage, $alias=false) -{ - XDB::execute("UPDATE auth_user_md5 set nom_usage={?} WHERE user_id={?}",$usage ,$uid); - XDB::execute("DELETE FROM aliases WHERE FIND_IN_SET('usage',flags) AND id={?}", $uid); - if ($alias && $usage) { - XDB::execute("UPDATE aliases SET flags=flags & 255-1 WHERE id={?}", $uid); - XDB::execute("INSERT INTO aliases VALUES({?}, 'alias', 'usage,bestalias', {?}, null)", - $alias, $uid); - } - $r = XDB::query("SELECT alias FROM aliases WHERE FIND_IN_SET('bestalias', flags) AND id = {?}", $uid); - if ($r->numRows() == "") { - XDB::execute("UPDATE aliases SET flags = 1 | flags WHERE id = {?} LIMIT 1", $uid); - $r = XDB::query("SELECT alias FROM aliases WHERE FIND_IN_SET('bestalias', flags) AND id = {?}", $uid); - } - user_reindex($uid); - return $r->fetchOneCell(); -} - -// }}} -// {{{ function get_X_mat -function get_X_mat($ourmat) -{ - if (!preg_match('/^[0-9]{8}$/', $ourmat)) { - // le matricule de notre base doit comporter 8 chiffres - return 0; - } - - $year = intval(substr($ourmat, 0, 4)); - $rang = intval(substr($ourmat, 5, 3)); - if ($year < 1996) { - return; - } elseif ($year < 2000) { - $year = intval(substr(1900 - $year, 1, 3)); - return sprintf('%02u0%03u', $year, $rang); - } else { - $year = intval(substr(1900 - $year, 1, 3)); - return sprintf('%03u%03u', $year, $rang); - } -} - -// }}} - - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/userset.inc.php b/include/userset.inc.php deleted file mode 100644 index ab77c01..0000000 --- a/include/userset.inc.php +++ /dev/null @@ -1,420 +0,0 @@ -search->result_where_statement = ' - LEFT JOIN applis_ins AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0) - LEFT JOIN applis_def AS ad0 ON (ad0.id = ai0.aid) - LEFT JOIN applis_ins AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1) - LEFT JOIN applis_def AS ad1 ON (ad1.id = ai1.aid) - LEFT JOIN entreprises AS e ON (e.entrid = 0 AND e.uid = u.user_id) - LEFT JOIN emploi_secteur AS es ON (e.secteur = es.id) - LEFT JOIN fonctions_def AS ef ON (e.fonction = ef.id) - LEFT JOIN geoloc_pays AS n ON (u.nationalite = n.a2) - LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET(\'active\',adr.statut)) - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) - LEFT JOIN emails AS em ON (em.uid = u.user_id AND em.flags = \'active\')'; - -class UserSet extends PlSet -{ - public function __construct($joins = '', $where = '') - { - global $globals; - parent::__construct('auth_user_md5 AS u', - (!empty($GLOBALS['IS_XNET_SITE']) ? - 'INNER JOIN groupex.membres AS gxm ON (u.user_id = gxm.uid - AND gxm.asso_id = ' . $globals->asso('id') . ') ' : '') - . 'LEFT JOIN auth_user_quick AS q USING (user_id) - LEFT JOIN aliases AS a ON (a.id = u.user_id AND a.type = \'a_vie\') - ' . $joins, - $where, - 'u.user_id'); - } -} - -class SearchSet extends UserSet -{ - public $advanced = false; - private $score = null; - private $order = null; - private $quick = false; - - public function __construct($quick = false, $no_search = false, $join = '', $where = '') - { - require_once dirname(__FILE__).'/../modules/search/search.inc.php'; - - if ($no_search) { - return; - } - - $this->quick = $quick; - if ($quick) { - $this->getQuick($join, $where); - } else { - $this->getAdvanced($join, $where); - } - } - - private function getQuick($join, $where) - { - require_once dirname(__FILE__).'/../modules/search/search.inc.php'; - global $globals; - if (!S::logged()) { - Env::kill('with_soundex'); - } - $qSearch = new QuickSearch('quick'); - $fields = new SFieldGroup(true, array($qSearch)); - if ($qSearch->isEmpty()) { - new ThrowError('Aucun critère de recherche n\'est spécifié.'); - } - $this->score = $qSearch->get_score_statement(); - $pwhere = $fields->get_where_statement(); - if (trim($pwhere)) { - if (trim($where)) { - $where .= ' AND '; - } - $where .= $pwhere; - } - if (S::logged() && Env::has('nonins')) { - if (trim($where)) { - $where .= ' AND '; - } - $where .= 'u.perms="pending" AND u.deces=0'; - } - parent::__construct($join . ' ' . $fields->get_select_statement(), $where); - - $this->order = implode(',',array_filter(array($fields->get_order_statement(), - 'u.promo DESC, NomSortKey, prenom'))); - } - - private function getAdvanced($join, $where) - { - global $globals; - $this->advanced = true; - $fields = new SFieldGroup(true, advancedSearchFromInput()); - if ($fields->too_large()) { - new ThrowError('Recherche trop générale.'); - } - parent::__construct(@$join . ' ' . $fields->get_select_statement(), - @$where . ' ' . $fields->get_where_statement()); - $this->order = implode(',',array_filter(array($fields->get_order_statement(), - 'promo DESC, NomSortKey, prenom'))); - } - - public function &get($fields, $joins, $where, $groupby, $order, $limitcount = null, $limitfrom = null) - { - if ($this->score) { - $fields .= ', ' . $this->score; - } - return parent::get($fields, $joins, $where, $groupby, $order, $limitcount, $limitfrom); - } -} - -class ArraySet extends UserSet -{ - public function __construct(array $users) - { - $where = $this->getUids($users); - if ($where) { - $where = "a.alias IN ($where)"; - } else { - $where = " 0 "; - } - parent::__construct('', $where); - } - - private function getUids(array $users) - { - $users = get_users_forlife_list($users, true, '_silent_user_callback'); - if (is_null($users)) { - return ''; - } - return '\'' . implode('\', \'', $users) . '\''; - } -} - -class MinificheView extends MultipageView -{ - public function __construct(PlSet &$set, $data, array $params) - { - require_once 'applis.func.inc.php'; - global $globals; - $this->entriesPerPage = $globals->search->per_page; - if (@$params['with_score']) { - $this->addSortKey('score', array('-score', '-date', '-promo', 'nom', 'prenom'), 'pertinence'); - } - $this->addSortKey('name', array('nom', 'prenom'), 'nom'); - $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion'); - $this->addSortKey('date_mod', array('-date', '-promo', 'nom', 'prenom'), 'dernière modification'); - parent::__construct($set, $data, $params); - } - - public function fields() - { - return "u.user_id AS id, - u.*, a.alias AS forlife, - u.perms != 'pending' AS inscrit, - u.perms != 'pending' AS wasinscrit, - u.deces != 0 AS dcd, u.deces, u.matricule_ax, - FIND_IN_SET('femme', u.flags) AS sexe, - e.entreprise, es.label AS secteur, ef.fonction_fr AS fonction, - IF(n.nat='',n.pays,n.nat) AS nat, n.a2 AS iso3166, - ad0.text AS app0text, ad0.url AS app0url, ai0.type AS app0type, - ad1.text AS app1text, ad1.url AS app1url, ai1.type AS app1type, - adr.city, gp.a2, gp.pays AS countrytxt, gr.name AS region, - IF(u.nom_usage<>'',u.nom_usage,u.nom) AS sortkey, - (COUNT(em.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif" . - (S::logged() ? ", c.contact AS contact" : ''); - } - - public function joins() - { - return "LEFT JOIN entreprises AS e ON (e.entrid = 0 AND e.uid = u.user_id".(S::logged() ? "" : " AND e.pub = 'public'").") - LEFT JOIN emploi_secteur AS es ON (e.secteur = es.id) - LEFT JOIN fonctions_def AS ef ON (e.fonction = ef.id) - LEFT JOIN geoloc_pays AS n ON (u.nationalite = n.a2) - LEFT JOIN applis_ins AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0) - LEFT JOIN applis_def AS ad0 ON (ad0.id = ai0.aid) - LEFT JOIN applis_ins AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1) - LEFT JOIN applis_def AS ad1 ON (ad1.id = ai1.aid) - LEFT JOIN adresses AS adr ON (u.user_id = adr.uid - AND FIND_IN_SET('active', adr.statut)".(S::logged() ? "" : " AND adr.pub = 'public'").") - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) - LEFT JOIN emails AS em ON (em.uid = u.user_id AND em.flags = 'active')" . - (S::logged() ? - "LEFT JOIN contacts AS c On (c.contact = u.user_id AND c.uid = " . S::v('uid') . ")" - : ""); - } - - public function templateName() - { - return 'include/plview.minifiche.tpl'; - } -} - -class MentorView extends MultipageView -{ - public function __construct(PlSet &$set, $data, array $params) - { - $this->entriesPerPage = 10; - $this->addSortKey('rand', array('RAND(' . S::i('uid') . ')'), 'aléatoirement'); - $this->addSortKey('name', array('nom', 'prenom'), 'nom'); - $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion'); - $this->addSortKey('date_mod', array('-date', '-promo', 'nom', 'prenom'), 'dernière modification'); - parent::__construct($set, $data, $params); - } - - public function fields() - { - return "m.uid, u.prenom, u.nom, u.promo, - a.alias AS forlife, m.expertise, mp.pid, - ms.secteur, ms.ss_secteur"; - } - - public function templateName() - { - return 'include/plview.referent.tpl'; - } -} - -class TrombiView extends MultipageView -{ - public function __construct(PlSet &$set, $data, array $params) - { - $this->entriesPerPage = 24; - $this->order = explode(',', Env::v('order', 'nom,prenom,promo')); - if (@$params['with_score']) { - $this->addSortKey('score', array('-score', '-watch_last', '-promo', 'nom', 'prenom'), 'pertinence'); - } - $this->addSortKey('name', array('nom', 'prenom'), 'nom'); - $this->addSortKey('promo', array('-promo', 'nom', 'prenom'), 'promotion'); - parent::__construct($set, $data, $params); - } - - public function fields() - { - return "u.user_id, IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom, u.prenom, u.promo, a.alias AS forlife "; - } - - public function joins() - { - return "INNER JOIN photo AS p ON (p.uid = u.user_id) "; - } - - public function templateName() - { - return 'include/plview.trombi.tpl'; - } - - public function apply(PlPage &$page) - { - if (!empty($GLOBALS['IS_XNET_SITE'])) { - global $globals; - $page->assign('mainsiteurl', 'https://' . $globals->core->secure_domain . '/'); - } - return parent::apply($page); - } -} - -class GeolocView implements PlView -{ - private $set; - private $type; - private $params; - - public function __construct(PlSet &$set, $data, array $params) - { - $this->params = $params; - $this->set =& $set; - $this->type = $data; - } - - private function use_map() - { - return is_file(dirname(__FILE__) . '/../modules/geoloc/dynamap.swf') && - is_file(dirname(__FILE__) . '/../modules/geoloc/icon.swf'); - } - - public function args() - { - $args = $this->set->args(); - unset($args['initfile']); - unset($args['mapid']); - return $args; - } - - public function apply(PlPage &$page) - { - require_once 'geoloc.inc.php'; - require_once '../modules/search/search.inc.php'; - - switch ($this->type) { - case 'icon.swf': - header("Content-type: application/x-shockwave-flash"); - header("Pragma:"); - readfile(dirname(__FILE__).'/../modules/geoloc/icon.swf'); - exit; - - case 'dynamap.swf': - header("Content-type: application/x-shockwave-flash"); - header("Pragma:"); - readfile(dirname(__FILE__).'/../modules/geoloc/dynamap.swf'); - exit; - - case 'init': - $page->changeTpl('geoloc/init.tpl', NO_SKIN); - header('Content-Type: text/xml'); - header('Pragma:'); - if (!empty($GLOBALS['IS_XNET_SITE'])) { - $page->assign('background', 0xF2E9D0); - } - break; - - case 'city': - $page->changeTpl('geoloc/city.tpl', NO_SKIN); - header('Content-Type: text/xml'); - header('Pragma:'); - $only_current = Env::v('only_current', false)? ' AND FIND_IN_SET(\'active\', adrf.statut)' : ''; - $it =& $this->set->get('u.user_id AS id, u.prenom, u.nom, u.promo, al.alias', - "INNER JOIN adresses AS adrf ON (adrf.uid = u.user_id $only_current) - LEFT JOIN aliases AS al ON (u.user_id = al.id - AND FIND_IN_SET('bestalias', al.flags)) - INNER JOIN adresses AS avg ON (" . getadr_join('avg') . ")", - 'adrf.cityid = ' . Env::i('cityid'), null, null, 11); - $page->assign('users', $it); - break; - - case 'country': - if (Env::has('debug')) { - $page->changeTpl('geoloc/country.tpl', SIMPLE); - } else { - $page->changeTpl('geoloc/country.tpl', NO_SKIN); - header('Content-Type: text/xml'); - header('Pragma:'); - } - $mapid = Env::has('mapid') ? Env::i('mapid', -2) : false; - list($countries, $cities) = geoloc_getData_subcountries($mapid, $this->set, 10); - $page->assign('countries', $countries); - $page->assign('cities', $cities); - break; - - default: - global $globals; - if (!$this->use_map()) { - $page->assign('request_geodesix', true); - } - $page->assign('annu', @$this->params['with_annu']); - $page->assign('protocole', @$_SERVER['HTTPS'] ? 'https' : 'http'); - $this->set->get('u.user_id', null, "u.perms != 'pending' AND u.deces = 0", "u.user_id", null); - return 'include/plview.geoloc.tpl'; - } - } -} - -class GadgetView implements PlView -{ - public function __construct(PlSet &$set, $data, array $params) - { - $this->set =& $set; - } - - public function fields() - { - return "u.user_id AS id, - u.*, a.alias AS forlife," . - (S::logged() ? "q.profile_mobile AS mobile, " : "IF(q.profile_mobile_pub = 'public', q.profile_mobile, NULL) as mobile, ") . - "u.perms != 'pending' AS inscrit, - u.perms != 'pending' AS wasinscrit, - u.deces != 0 AS dcd, u.deces, - FIND_IN_SET('femme', u.flags) AS sexe, - adr.city, gp.a2, gp.pays AS countrytxt, gr.name AS region" . - (S::logged() ? ", c.contact AS contact" : ''); - } - - public function joins() - { - return "LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET('active', adr.statut)".(S::logged() ? "" : " AND adr.pub = 'public'").") - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region)" . - (S::logged() ? - "LEFT JOIN contacts AS c On (c.contact = u.user_id AND c.uid = " . S::v('uid') . ")" - : ""); - } - - public function apply(PlPage &$page) - { - $page->assign_by_ref('set', - $this->set->get($this->fields(), $this->joins(), null, null, null, 5, 0)); - } - - public function args() - { - return null; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations.inc.php b/include/validations.inc.php deleted file mode 100644 index cf2f77c..0000000 --- a/include/validations.inc.php +++ /dev/null @@ -1,406 +0,0 @@ -spoolroot . '/core/classes/xdb.php'; - -/** - * Iterator class, that lists objects through the database - */ -class ValidateIterator extends XOrgDBIterator -{ - // {{{ constuctor - - public function __construct () - { - parent::__construct('SELECT data, DATE_FORMAT(stamp, "%Y%m%d%H%i%s") FROM requests ORDER BY stamp', MYSQL_NUM); - } - - // }}} - // {{{ function next() - - public function next () - { - if (list($result, $stamp) = parent::next()) { - $result = unserialize($result); - $result->stamp = $stamp; - return($result); - } else { - return null; - } - } - - // }}} -} - -/** classe "virtuelle" à dériver pour chaque nouvelle implémentation - */ -abstract class Validate -{ - // {{{ properties - - public $uid; - public $prenom; - public $nom; - public $promo; - public $sexe; - public $bestalias; - public $forlife; - - public $stamp; - public $unique; - // enable the refuse button - public $refuse = true; - - public $type; - public $comments = Array(); - // the validations rules : comments for admins - public $rules = "Mieux vaut laisser une demande de validation à un autre admin que de valider une requête illégale ou que de refuser une demande légitime"; - - // }}} - // {{{ constructor - - /** constructeur - * @param $_uid user id - * @param $_unique requête pouvant être multiple ou non - * @param $_type type de la donnée comme dans le champ type de x4dat.requests - */ - public function __construct($_uid, $_unique, $_type) - { - $this->uid = $_uid; - $this->stamp = date('YmdHis'); - $this->unique = $_unique; - $this->type = $_type; - $res = XDB::query( - "SELECT u.prenom, u.nom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe, a.alias, b.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( u.user_id=a.id AND a.type='a_vie' ) - INNER JOIN aliases AS b ON ( u.user_id=b.id AND b.type!='homonyme' AND FIND_IN_SET('bestalias', b.flags) ) - WHERE u.user_id={?}", $_uid); - list($this->prenom, $this->nom, $this->promo, $this->sexe, $this->forlife, $this->bestalias) = $res->fetchOneRow(); - } - - // }}} - // {{{ function submit() - - /** fonction à utiliser pour envoyer les données à la modération - * cette fonction supprimme les doublons sur un couple ($user,$type) si $this->unique est vrai - */ - public function submit() - { - if ($this->unique) { - XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type); - } - - $this->stamp = date('YmdHis'); - XDB::execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})', - $this->uid, $this->type, $this, $this->stamp); - - global $globals; - update_NbValid(); - return true; - } - - // }}} - // {{{ function update() - - protected function update() - { - XDB::execute('UPDATE requests SET data={?}, stamp=stamp - WHERE user_id={?} AND type={?} AND stamp={?}', - $this, $this->uid, $this->type, $this->stamp); - return true; - } - - // }}} - // {{{ function clean() - - /** fonction à utiliser pour nettoyer l'entrée de la requête dans la table requests - * attention, tout est supprimé si c'est un unique - */ - public function clean() - { - if ($this->unique) { - $success = XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', - $this->uid, $this->type); - } else { - $success = XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}', - $this->uid, $this->type, $this->stamp); - } - update_NbValid(); - return $success; - } - - // }}} - // {{{ function handle_formu() - - /** fonction à réaliser en cas de validation du formulaire - */ - public function handle_formu() - { - if (Env::has('delete')) { - $this->clean(); - $this->trigSuccess('Requête supprimée'); - return true; - } - - // mise à jour des informations - if (Env::has('edit')) { - if ($this->handle_editor()) { - $this->update(); - $this->trigSuccess('Requête mise à jour'); - return true; - } - return false; - } - - // ajout d'un commentaire - if (Env::has('hold') && Env::has('comm')) { - $formid = Env::i('formid'); - foreach ($this->comments as $comment) { - if ($comment[2] === $formid) { - return true; - } - } - if (!strlen(trim(Env::v('comm')))) { - return true; - } - $this->comments[] = Array(S::v('bestalias'), Env::v('comm'), $formid); - - // envoi d'un mail à hotliners - global $globals; - $mailer = new PlMailer(); - $mailer->setSubject("Commentaires de validation {$this->type}"); - $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}"); - $mailer->addTo($globals->core->admin_email); - - $body = "Validation {$this->type} pour {$this->prenom} {$this->nom}\n\n" - . S::v('bestalias')." a ajouté le commentaire :\n\n" - . Env::v('comm')."\n\n" - . "cf la discussion sur : ".$globals->baseurl."/admin/validate"; - - $mailer->setTxtBody(wordwrap($body)); - $mailer->send(); - - $this->update(); - $this->trigSuccess('Commentaire ajouté'); - return true; - } - - if (Env::has('accept')) { - if ($this->commit()) { - $this->sendmail(true); - $this->clean(); - $this->trigSuccess('Mail de validation envoyé'); - return true; - } else { - $this->trigError('Erreur lors de la validation'); - return false; - } - } - - if (Env::has('refuse')) { - if (Env::v('comm')) { - $this->sendmail(false); - $this->clean(); - $this->trigSuccess('Mail de refus envoyé'); - return true; - } else { - $this->trigError('pas de motivation pour le refus !!!'); - } - } - - return false; - } - - // }}} - // {{{ function sendmail - - protected function sendmail($isok) - { - global $globals; - $mailer = new PlMailer(); - $mailer->setSubject($this->_mail_subj()); - $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}"); - $mailer->addTo("\"{$this->prenom} {$this->nom}\" <{$this->bestalias}@{$globals->mail->domain}>"); - $mailer->addCc("validation+{$this->type}@{$globals->mail->domain}"); - - $body = ($this->sexe ? "Chère camarade,\n\n" : "Cher camarade,\n\n") - . $this->_mail_body($isok) - . (Env::has('comm') ? "\n\n".Env::v('comm') : '') - . "\n\nCordialement,\n\n-- \nL'équipe de Polytechnique.org\n"; - - $mailer->setTxtBody(wordwrap($body)); - $mailer->send(); - } - - // }}} - // {{{ function trig() - - protected function trigError($msg) - { - Platal::page()->trigError($msg); - } - - protected function trigWarning($msg) - { - Platal::page()->trigWarning($msg); - } - - protected function trigSuccess($msg) - { - Platal::page()->trigSuccess($msg); - } - - // }}} - // {{{ function get_typed_request() - - /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t - * @param $uid l'id de l'utilisateur concerné - * @param $type le type de la requête - * @param $stamp le timestamp de la requête - * - * XXX fonction "statique" XXX - * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...) - */ - static public function get_typed_request($uid, $type, $stamp = -1) - { - if ($stamp == -1) { - $res = XDB::query('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type); - } else { - $res = XDB::query('SELECT data, DATE_FORMAT(stamp, "%Y%m%d%H%i%s") FROM requests WHERE user_id={?} AND type={?} and stamp={?}', $uid, $type, $stamp); - } - if ($result = $res->fetchOneCell()) { - $result = unserialize($result); - } else { - $result = false; - } - return($result); - } - - // }}} - // {{{ function get_request_by_id() - - static public function get_request_by_id($id) - { - list($uid, $type, $stamp) = explode('_', $id, 3); - return Validate::get_typed_request($uid, $type, $stamp); - } - - // }}} - // {{{ function get_typed_requests() - - /** same as get_typed_request() but return an array of objects - */ - static public function get_typed_requests($uid, $type) - { - $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type); - $array = array(); - while (list($data) = $res->next()) { - $array[] = unserialize($data); - } - return $array; - } - - // }}} - // {{{ function get_typed_requests_count() - - /** same as get_typed_requests() but return the count of available requests. - */ - static public function get_typed_requests_count($uid, $type) - { - $res = XDB::query('SELECT COUNT(data) FROM requests WHERE user_id={?} and type={?}', $uid, $type); - return $res->fetchOneCell(); - } - - // }}} - // {{{ function _mail_body - - abstract protected function _mail_body($isok); - - // }}} - // {{{ function _mail_subj - - abstract protected function _mail_subj(); - - // }}} - // {{{ function commit() - - /** fonction à utiliser pour insérer les données dans x4dat - */ - abstract public function commit(); - - // }}} - // {{{ function formu() - - /** nom du template qui contient le formulaire */ - abstract public function formu(); - - // }}} - // {{{ function editor() - - /** nom du formulaire d'édition */ - public function editor() - { - return null; - } - - // }}} - // {{{ function answers() - - /** automatic answers table for this type of validation */ - public function answers() - { - static $answers_table; - if (!isset($answers_table[$this->type])) { - $r = XDB::query("SELECT id, title, answer FROM requests_answers WHERE category = {?}", $this->type); - $answers_table[$this->type] = $r->fetchAllAssoc($r); - } - return $answers_table[$this->type]; - } - - // }}} - // {{{ function id() - - public function id() - { - return $this->uid . '_' . $this->type . '_' . $this->stamp; - } - - // }}} - // {{{ function ruleText() - - public function ruleText() - { - return str_replace('\'', '\\\'', $this->rules); - } - - // }}} -} - -foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) { - require_once($file); -} - -/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker enc=utf-8: */ -?> diff --git a/include/validations/aliases.inc.php b/include/validations/aliases.inc.php deleted file mode 100644 index 0377694..0000000 --- a/include/validations/aliases.inc.php +++ /dev/null @@ -1,138 +0,0 @@ -alias = $_alias.'@'.$globals->mail->alias_dom; - $this->raison = $_raison; - $this->public = $_public; - - $res = XDB::query(" - SELECT v.alias - FROM virtual_redirect AS vr - INNER JOIN virtual AS v ON (v.vid=vr.vid AND v.alias LIKE '%@{$globals->mail->alias_dom}') - WHERE vr.redirect={?} OR vr.redirect={?}", - "{$this->forlife}@{$globals->mail->domain}", "{$this->forlife}@{$globals->mail->domain2}"); - $this->old = $res->fetchOneCell(); - if (empty($this->old)) { unset($this->old); } - } - - // }}} - // {{{ function get_request() - - static public function get_request($uid) - { - return parent::get_typed_request($uid,'alias'); - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.aliases.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " L'adresse mail {$this->alias} que tu avais demandée vient d'être créée, tu peux désormais l'utiliser à ta convenance.".(($this->public == 'public')?" A ta demande, cette adresse apparaît maintenant sur ta fiche.":""); - } else { - return " La demande que tu avais faite pour l'alias {$this->alias} a été refusée."; - } - } - - // }}} - // {{{ function shorter_domain - - private function shorter_domain() - { - global $globals; - - $mail = $globals->mail; - - if (empty($mail->domain2) || strlen($mail->domain2) > strlen($mail->domain)) { - return $mail->domain; - } else { - return $mail->domain2; - } - } - - // }}} - // {{{ function commit() - - public function commit () - { - XDB::execute("UPDATE auth_user_quick SET emails_alias_pub = {?} WHERE user_id = {?}", - $this->public, $this->uid); - - if ($this->old) { - return XDB::execute('UPDATE virtual SET alias={?} WHERE alias={?}', - $this->alias, $this->old); - } else { - XDB::execute('INSERT INTO virtual SET alias={?},type="user"', $this->alias); - $vid = XDB::insertId(); - $dom = $this->shorter_domain(); - return XDB::query('INSERT INTO virtual_redirect (vid,redirect) VALUES ({?}, {?})', - $vid, $this->forlife.'@'.$dom); - } - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/broken.inc.php b/include/validations/broken.inc.php deleted file mode 100644 index f521865..0000000 --- a/include/validations/broken.inc.php +++ /dev/null @@ -1,168 +0,0 @@ -m_email = $email; - $this->m_comment = trim($comment); - $this->m_forlife = $user['forlife']; - $this->m_bestalias = $user['bestalias']; - $this->m_prenom = $user['prenom']; - $this->m_nom = $user['nom']; - $this->m_promo = $user['promo']; - $this->m_sexe = $user['sexe']; - $this->old_email = $user['email']; - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.broken.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org] Récupération de {$this->m_prenom} {$this->m_nom} ({$this->m_promo})"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok && !$this->m_reactive) { - return " Un mail de contact vient d'être envoyé" - ." à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) pour confirmer sa volonté de" - ." mettre à jour sa redirection Polytechnique.org !\n\n" - ."Merci de ta participation !\n"; - } elseif ($isok) { - return " L'adresse de redirection {$this->m_email} de {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) " - ."vient d'être réactivée. Un mail lui a été envoyé pour l'en informer.\n\n" - ."Merci de ta participation !\n"; - } else { - return " Nous n'utiliserons pas cette adresse pour contacter {$this->m_prenom} {$this->m_nom} ({$this->m_promo})."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - global $globals; - $email = $this->m_bestalias . '@' . $globals->mail->domain; - - XDB::execute("UPDATE emails AS e - INNER JOIN aliases AS a ON (a.id = e.uid) - SET e.flags = 'active', panne_level = 2 - WHERE a.alias = {?} AND e.email = {?}", $this->m_forlife, $this->m_email); - if (XDB::affectedRows() > 0) { - $this->m_reactive = true; - $mailer = new PlMailer(); - $mailer->setFrom('"Association Polytechnique.org" mail->domain . '>'); - $mailer->addTo($email); - $mailer->setSubject("Mise à jour de ton adresse $email"); - $mailer->setTxtBody(wordwrap("Cher Camarade,\n\n" - . "Ton adresse $email étant en panne et ayant été informés que ta redirection {$this->m_email}, jusqu'à présent inactive, " - . "est fonctionnelle, nous venons de réactiver cette adresse.\n\n" - . "N'hésite pas à aller gérer toi-même tes redirections en te rendant à la page :\n" - . "https://www.polytechnique.org/emails/redirect\n" - . "Si tu as perdu ton mot de passe d'accès au site, tu peux également effectuer la procédure de récupération à l'adresse :\n" - . "https://www.polytechnique.org/recovery\n\n" - . "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n")); - $mailer->send(); - return true; - } - - $email = $this->m_bestalias . '@' . $globals->mail->domain; - if ($this->old_email) { - $subject = "Ton adresse $email semble ne plus fonctionner"; - $reason = "Nous avons été informés que ton adresse $email ne fonctionne plus correctement par un camarade"; - } else { - $res = XDB::iterRow("SELECT email - FROM emails AS e - INNER JOIN aliases AS a ON (a.id = e.uid) - WHERE a.alias = {?} AND e.flags = 'panne'", $this->m_forlife); - $redirect = array(); - while (list($red) = $res->next()) { - list(, $redirect[]) = explode('@', $red); - } - $subject = "Ton adresse $email ne fonctionne plus"; - $reason = "Ton adresse $email ne fonctionne plus"; - if (!count($redirect)) { - $reason .= '.'; - } elseif (count($redirect) == 1) { - $reason .= ' car sa redirection vers ' . $redirect[0] . ' est hors-service depuis plusieurs mois.'; - } else { - $reason .= ' car ses redirections vers ' . implode(', ', $redirect) - . ' sont hors-services depuis plusieurs mois.'; - } - } - $body = ($this->m_sexe ? 'Chère ' : 'Cher ') . $this->m_prenom . ",\n\n" - . $reason . "\n\n" - . "L'adresse {$this->m_email} nous a été communiquée, veux-tu que cette adresse devienne ta nouvelle " - . "adresse de redirection ? Si oui, envoie nous des informations qui " - . "nous permettront de nous assurer de ton identité (par exemple ta date de naissance et ta promotion).\n\n" - . "-- \nTrès Cordialement,\nL'Équipe de Polytechnique.org\n"; - $body = wordwrap($body, 78); - $mailer = new PlMailer(); - $mailer->setFrom('"Association Polytechnique.org" mail->domain . '>'); - $mailer->addTo($this->m_email); - $mailer->setSubject($subject); - $mailer->setTxtBody($body); - return $mailer->send(); - } - - // }}} -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/evts.inc.php b/include/validations/evts.inc.php deleted file mode 100644 index c33ce5e..0000000 --- a/include/validations/evts.inc.php +++ /dev/null @@ -1,174 +0,0 @@ -titre = $_titre; - $this->texte = $_texte; - $this->pmin = $_pmin; - $this->pmax = $_pmax; - $this->peremption = $_peremption; - $this->comment = $_comment; - if ($upload) { - $this->readImage($upload); - } - } - - // }}} - // {{{ function readImage() - - private function readImage(PlUpload &$upload) - { - if ($upload->exists() && $upload->isType('image')) { - list($this->imgx, $this->imgy, $this->imgtype) = $upload->imageInfo(); - $this->img = $upload->getContents(); - $upload->rm(); - } - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.evts.tpl'; - } - - // }}} - // {{{ functon editor() - - public function editor() - { - return 'include/form.valid.edit-evts.tpl'; - } - - // }}} - // {{{ function handle_editor() - - protected function handle_editor() - { - $this->titre = Env::v('titre'); - $this->texte = Env::v('texte'); - $this->pmin = Env::i('promo_min'); - $this->pmax = Env::i('promo_max'); - $this->peremption = Env::v('peremption'); - if (@$_FILES['image']['tmp_name']) { - $upload = PlUpload::get($_FILES['image'], S::v('forlife'), 'event'); - if (!$upload) { - $this->trigError("Impossible de télécharger le fichier"); - } elseif (!$upload->isType('image')) { - $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG'); - $upload->rm(); - } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { - $page->trigError('Impossible de retraiter l\'image'); - } else { - $this->readImage($upload); - } - } - return true; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/EVENEMENTS] Proposition d'événement"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " L'annonce que tu avais proposée ({$this->titre}) vient d'être validée."; - } else { - return " L'annonce que tu avais proposée ({$this->titre}) a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - if (XDB::execute("INSERT INTO evenements - SET user_id = {?}, creation_date=NOW(), titre={?}, texte={?}, - peremption={?}, promo_min={?}, promo_max={?}, flags=CONCAT(flags,',valide,wiki')", - $this->uid, $this->titre, $this->texte, - $this->peremption, $this->pmin, $this->pmax)) { - $eid = XDB::insertId(); - if ($this->img) { - XDB::execute("INSERT INTO evenements_photo - SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}", - XDB::insertId(), $this->imgtype, $this->imgx, $this->imgy, $this->img); - } - global $globals; - if ($globals->banana->event_forum) { - require_once 'user.func.inc.php'; - $forlife = get_user_forlife($this->uid); - require_once 'banana/forum.inc.php'; - $banana = new ForumsBanana($forlife); - $post = $banana->post($globals->banana->event_forum, - $globals->banana->event_reply, - $this->titre, MiniWiki::wikiToText($this->texte, false, 0, 80)); - if ($post != -1) { - XDB::execute("UPDATE evenements - SET creation_date = creation_date, post_id = {?} - WHERE id = {?}", $post, $eid); - } - } - return true; - } - return false; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/googleapps.inc.php b/include/validations/googleapps.inc.php deleted file mode 100644 index 7413d73..0000000 --- a/include/validations/googleapps.inc.php +++ /dev/null @@ -1,80 +0,0 @@ -uid, $this->forlife); - return $account->do_unsuspend(); - } - - public function suspension_reason() - { - $res = XDB::query( - "SELECT g_suspension - FROM gapps_accounts - WHERE g_account_name = {?}", - $this->forlife); - return $res->fetchOneCell(); - } -} - -/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker enc=utf-8: */ -?> diff --git a/include/validations/homonymes.inc.php b/include/validations/homonymes.inc.php deleted file mode 100644 index c314fdf..0000000 --- a/include/validations/homonymes.inc.php +++ /dev/null @@ -1,139 +0,0 @@ -warning = $warning; - - parent::__construct($_uid, true, $this->title()); - - $this->refuse = false; - $this->loginbis = $_loginbis; - $this->homonymes_forlife = $_homonymes_forlife; - } - - // }}} - // {{{ title() - - private function title() - { - return $this->warning?'alerte alias':'robot répondeur'; - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.homonymes.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - global $globals; - return "[Polytechnique.org/Support] ".($this->warning?"Dans une semaine : suppression de l'alias":"Mise en place du robot")." $loginbis@" . $globals->mail->domain; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - global $globals; - return -" -Comme nous t'en avons informé par mail il y a quelques temps, -pour respecter nos engagements en terme d'adresses e-mail devinables, -tu te verras bientôt retirer l'alias ".$this->loginbis."@".$globals->mail->domain." pour -ne garder que ".$this->forlife."@".$globals->mail->domain.". - -Toute personne qui écrira à ".$this->loginbis."@".$globals->mail->domain." recevra la -réponse d'un robot qui l'informera que ".$this->loginbis."@".$globals->mail->domain." -est ambigu pour des raisons d'homonymie et signalera ton email exact."; - } - - // }}} - // {{{ function sendmail() - - protected function sendmail($isok) - { - if (!$isok) return false; - global $globals; - $mailer = new PlMailer; - $cc = "support+homonyme@".$globals->mail->domain; - $FROM = "\"Support Polytechnique.org\" <$cc>"; - $mailer->setSubject($this->_mail_subj()); - $mailer->setFrom($FROM); - $mailer->addTo("\"{$this->prenom} {$this->nom}\" <{$this->bestalias}@{$globals->mail->domain}>"); - $mailer->addCc($cc); - - $body = $this->prenom.",\n\n" - . $this->_mail_body($isok) - . (Env::has('comm') ? "\n\n".Env::v('comm') : '') - . "\n\nCordialement,\n\n-- \nL'équipe de Polytechnique.org\n"; - - $mailer->setTxtBody(wordwrap($body)); - $mailer->send(); - } - // }}} - // {{{ function commit() - - public function commit() - { - require_once('homonymes.inc.php'); - - switch_bestalias($this->uid, $this->loginbis); - if (!$this->warning) { - XDB::execute("UPDATE aliases SET type='homonyme',expire=NOW() WHERE alias={?}", $this->loginbis); - XDB::execute("REPLACE INTO homonymes (homonyme_id,user_id) VALUES({?},{?})", $this->uid, $this->uid); - } - - return true; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/listes.inc.php b/include/validations/listes.inc.php deleted file mode 100644 index da635b0..0000000 --- a/include/validations/listes.inc.php +++ /dev/null @@ -1,179 +0,0 @@ -asso = $_asso; - $this->liste = $_liste; - $this->domain = $_domain; - $this->desc = $_desc; - $this->advertise = $_advertise; - $this->modlevel = $_modlevel; - $this->inslevel = $_inslevel; - $this->owners = $_owners; - $this->members = $_members; - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.listes.tpl'; - } - - // }}} - // {{{ function editor() - - public function editor() - { - return 'include/form.valid.edit-listes.tpl'; - } - - // }}} - // {{{ function handle_editor() - - protected function handle_editor() - { - global $globals; - - if (Env::has('listname')) { - $this->liste = trim(Env::v('listname')); - } - if (Env::has('domainname')) { - $this->domain = trim(Env::v('domainname')); - } - if (Env::has('assotype')) { - $this->asso = trim(Env::v('assotype')); - } - if (!$this->asso) { - $this->domain = $globals->mail->domain; - } - return true; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/LISTES] Demande de la liste {$this->liste}"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " La mailing list {$this->liste} que tu avais demandée vient d'être créée."; - } else { - return " La demande que tu avais faite pour la mailing list {$this->liste} a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - global $globals; - - if ($this->asso == "alias") { - $new = $this->liste . '@' . $this->domain; - XDB::query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new); - foreach ($this->members as $member) { - $res = XDB::query( - "SELECT a.alias, b.alias - FROM x4dat.aliases AS a - LEFT JOIN x4dat.aliases AS b ON (a.id=b.id AND b.type = 'a_vie') - WHERE a.alias={?} AND a.type!='homonyme'", $member); - list($alias, $blias) = $res->fetchOneRow(); - $alias = empty($blias) ? $alias : $blias; - XDB::query( - "INSERT INTO x4dat.virtual_redirect (vid,redirect) - SELECT vid, {?} - FROM x4dat.virtual - WHERE alias={?}", $alias . "@" . $globals->mail->domain, $new); - } - return 1; - } - - $list = new MMList(S::v('uid'), S::v('password'), $this->domain); - $ret = $list->create_list($this->liste, utf8_decode($this->desc), $this->advertise, - $this->modlevel, $this->inslevel, - $this->owners, $this->members); - $liste = strtolower($this->liste); - if ($ret && !$this->asso) { - foreach(Array($liste, $liste . "-owner", $liste . "-admin", $liste . "-bounces", $liste . "-unsubscribe") as $l) { - XDB::execute("INSERT INTO aliases (alias,type) VALUES({?}, 'liste')", $l); - } - } elseif ($ret) { - foreach (Array('', 'owner', 'admin', 'bounces', 'unsubscribe') as $app) { - $mdir = $app == '' ? '+post' : '+' . $app; - if (!empty($app)) { - $app = '-' . $app; - } - $red = $this->domain . '_' . $liste; - XDB::execute('INSERT INTO x4dat.virtual (alias,type) - VALUES({?},{?})', $liste . $app . '@' . $this->domain, 'list'); - XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect) - VALUES ({?}, {?})', XDB::insertId(), - $red . $mdir . '@listes.polytechnique.org'); - $list->mass_subscribe($liste, join(' ', $this->members)); - } - } - return $ret; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/marketing.inc.php b/include/validations/marketing.inc.php deleted file mode 100644 index c8fbb9a..0000000 --- a/include/validations/marketing.inc.php +++ /dev/null @@ -1,116 +0,0 @@ -m_id = $mark_id; - $this->m_email = $email; - $this->perso = $perso; - $this->m_type = $type; - $this->m_data = $data; - - $res = XDB::query('SELECT u.nom, u.prenom, u.promo - FROM auth_user_md5 AS u - WHERE user_id = {?} - GROUP BY u.user_id', $mark_id); - list ($this->m_nom, $this->m_prenom, $this->m_promo) = $res->fetchOneRow(); - } - - // }}} - // {{{ function formu() - - public function formu() - { - $res = XDB::query('SELECT IF(MAX(m.last)>p.relance, MAX(m.last), p.relance) - FROM auth_user_md5 AS u - LEFT JOIN register_pending AS p ON p.uid = u.user_id - LEFT JOIN register_marketing AS m ON m.uid = u.user_id - WHERE user_id = {?}', - $this->m_id); - $this->m_relance = $res->fetchOneCell(); - return 'include/form.valid.mark.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org] Marketing de {$this->m_prenom} {$this->m_nom} ({$this->m_promo})"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " Un mail de marketing vient d'être envoyé " - .($this->perso ? 'en ton nom' : 'en notre nom') - ." à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) pour l'encourager à s'inscrire !\n\n" - ."Merci de ta participation !\n"; - } else { - return " Nous n'avons pas jugé bon d'envoyer de mail de marketing à {$this->m_prenom} {$this->m_nom} ({$this->m_promo})."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - $market = Marketing::get($this->m_id, $this->m_email); - if ($market == null) { - return false; - } - $market->send(); - return true; - } - - // }}} -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/medals.inc.php b/include/validations/medals.inc.php deleted file mode 100644 index 98d14d2..0000000 --- a/include/validations/medals.inc.php +++ /dev/null @@ -1,130 +0,0 @@ -mid = $_idmedal; - $this->gid = $_subidmedal; - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.medals.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/Décoration] Demande de décoration : ".$this->medal_name(); - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " La décoration ".$this->medal_name()." vient d'être ajoutée à ta fiche."; - } else { - return " La demande que tu avais faite pour la décoration ".$this->medal_name()." a été refusée."; - } - } - - // }}} - // {{{ function medal_name - - public function medal_name() - { - //var_dump($this); - $r = XDB::query(" - SELECT IF (g.text IS NOT NULL, CONCAT(m.text,' - ', g.text), m.text) - FROM profile_medals AS m - LEFT JOIN profile_medals_grades AS g ON(g.mid = m.id AND g.gid = {?}) - WHERE m.id = {?}", $this->gid, $this->mid); - return $r->fetchOneCell(); - } - - // }}} - // {{{ function submit() - - public function submit() - { - $res = XDB::query("SELECT FIND_IN_SET('validation', flags) - FROM profile_medals - WHERE id = {?}", $this->mid); - if ($res->fetchOneCell()) { - parent::submit(); - } else { - $this->commit(); - } - } - - // }}} - // {{{ function commit() - - public function commit () - { - require_once 'notifs.inc.php'; - register_watch_op($this->uid, WATCH_FICHE, 'medals'); - return XDB::execute('REPLACE INTO profile_medals_sub - VALUES ({?}, {?}, {?})', - $this->uid, $this->mid, $this->gid); - } - - // }}} - // {{{ function get_request($medal) - - static public function get_request($uid, $type) - { - $reqs = Validate::get_typed_requests($uid, 'medal'); - foreach ($reqs as &$req) { - if ($req->mid == $type) { - return $req; - } - } - return null; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/nl.inc.php b/include/validations/nl.inc.php deleted file mode 100644 index 74ff546..0000000 --- a/include/validations/nl.inc.php +++ /dev/null @@ -1,105 +0,0 @@ -art = new NLArticle($title, $body, $append); - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.nl.tpl'; - } - - // }}} - // {{{ function editor() - - public function editor() - { - return 'include/form.valid.edit-nl.tpl'; - } - - // }}} - // {{{ function handle_editor() - - protected function handle_editor() - { - $this->art->_body = Env::v('nl_body'); - $this->art->_title = Env::v('nl_title'); - $this->art->_append = Env::v('nl_append'); - return true; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/NL] Proposition d'article dans la NL"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return ' L\'article que tu avais proposé ('.$this->art->title().') vient d\'être validé.'; - } else { - return ' L\'article que tu avais proposé ('.$this->art->title().') a été refusé.'; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - $nl = new Newsletter(); - $nl->saveArticle($this->art); - return true; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/nomusage.inc.php b/include/validations/nomusage.inc.php deleted file mode 100644 index 788d7c6..0000000 --- a/include/validations/nomusage.inc.php +++ /dev/null @@ -1,124 +0,0 @@ -nom_usage = $_usage; - $this->reason = $_reason; - $this->alias = make_username($this->prenom, $this->nom_usage); - if (!$this->nom_usage) $this->alias = ""; - - $res = XDB::query(" - SELECT e.alias, u.nom_usage, a.id - FROM auth_user_md5 as u - LEFT JOIN aliases as e ON(e.type='alias' AND FIND_IN_SET('usage',e.flags) AND e.id = u.user_id) - LEFT JOIN aliases as a ON(a.alias = {?} AND a.id != u.user_id) - WHERE u.user_id = {?}", $this->alias, $this->uid); - list($this->oldalias, $this->oldusage, $this->homonyme) = $res->fetchOneRow(); - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.nomusage.tpl'; - } - - // }}} - // {{{ function _mail_subj() - - protected function _mail_subj() - { - return "[Polytechnique.org/USAGE] Changement de nom d'usage"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - global $globals; - if ($isok) { - $res = " Le changement de nom d'usage que tu as demandé vient d'être effectué."; - if ($this->oldalias) { - $res .= "\n\n Les alias {$this->oldalias}@{$globals->mail->domain} et @{$globals->mail->domain2} ont été supprimés."; - } - if ($this->nom_usage) { - $res .= "\n\n Les alias {$this->alias}@{$globals->mail->domain} et @{$globals->mail->domain2} sont maintenant à ta disposition !"; - } - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount($this->uid, $this->forlife); - if ($account->active()) { - $res .= "\n\n Si tu utilises Google Apps, tu peux changer ton nom d'usage sur https://mail.google.com/a/polytechnique.org/#settings/accounts"; - } - } - return $res; - } else { - return " La demande de changement de nom d'usage que tu avais faite a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - require_once 'notifs.inc.php'; - register_watch_op($this->uid, WATCH_FICHE, 'nom'); - require_once('user.func.inc.php'); - $this->bestalias = set_new_usage($this->uid, $this->nom_usage, $this->alias); - return true; - } - - // }}} -} -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/orange.inc.php b/include/validations/orange.inc.php deleted file mode 100644 index 1cf625c..0000000 --- a/include/validations/orange.inc.php +++ /dev/null @@ -1,91 +0,0 @@ -promo_sortie = $_sortie; - $res = XDB::query("SELECT promo FROM auth_user_md5 WHERE user_id = {?}", $_uid); - $this->promo = $res->fetchOneCell(); - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.orange.tpl'; - } - - // }}} - // {{{ function _mail_subj() - - protected function _mail_subj() - { - return "[Polytechnique.org/ORANGE] Changement de promo de sortie"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - $res = " La demande de changement de promo de sortie que tu as demandée vient d'être effectuée."; - return $res; - } else { - return " La demande de changement de promo de sortie tu avais faite a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - XDB::execute("UPDATE auth_user_md5 set promo_sortie={?} WHERE user_id={?}",$this->promo_sortie ,$this->uid); - return true; - } - - // }}} -} -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/paiements.inc.php b/include/validations/paiements.inc.php deleted file mode 100644 index 2343ac3..0000000 --- a/include/validations/paiements.inc.php +++ /dev/null @@ -1,217 +0,0 @@ -titre = $_intitule; - $this->site = $_site; - $this->msg_reponse = $_msg; - $this->asso_id = (string)$_asso_id; - $this->evt = (string)$_evt; - $this->montant = $_montant; - $this->montant_min = $_montantmin; - $this->montant_max = $_montantmax; - - if ($_asso_id) { - $res = XDB::query("SELECT nom FROM groupex.asso WHERE id = {?}", $_asso_id); - $this->asso = $res->fetchOneCell(); - } - if ($_asso_id && $_evt) { - $res = XDB::query("SELECT intitule FROM groupex.evenements WHERE asso_id = {?} AND eid = {?}", $_asso_id, $_evt); - $this->evt_intitule = $res->fetchOneCell(); - } - } - - // }}} - // {{{ function same_event() - - static public function same_event($evt, $asso_id) - { - $wevt = 's:3:"evt";s:'.strlen($evt+"").':"'.$evt.'"'; - $wassoid = 's:7:"asso_id";s:'.strlen($asso_id + "").':"'.$asso_id.'"'; - $where = "%".$wassoid."%".$wevt."%"; - return $where; - } - - // }}} - // {{{ function accept() - - // check the message - public function accept() - { - // no text [AI JMIAJM IJA MIJ] - if (preg_match('/\[[-\'"A-Z ]+\]/', $this->msg_reponse)) { - $this->trigError("La demande de paiement n'est pas valide. Merci de compléter le texte avant de la soumettre"); - return false; - } - if (!preg_match('//', $this->msg_reponse)) { - $this->trigError("Le demande de paiement ne contient pas la balise obligatoire <montant>"); - return false; - } - return true; - } - - // }}} - // {{{ function submit() - - // supprime les demandes de paiments pour le meme evenement - public function submit() - { - if ($this->evt) - { - XDB::execute('DELETE FROM requests WHERE type={?} AND data LIKE {?}', 'paiements', PayReq::same_event($this->evt, $this->asso_id)); - } - parent::submit(); - } - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.paiements.tpl'; - } - - // }}} - // {{{ function editor() - - public function editor() - { - return 'include/form.valid.edit-paiements.tpl'; - } - - // }}} - // {{{ function handle_editor() - - protected function handle_editor() - { - $this->titre = Env::v('pay_titre'); - $this->site = Env::v('pay_site'); - $this->montant = Env::i('pay_montant'); - $this->montant_min = Env::i('pay_montant_min'); - $this->montant_max = Env::i('pay_montant_max'); - $this->msg_reponse = Env::v('pay_msg_reponse'); - return true; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/Paiments] Demande de création de paiement {$this->titre}"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " Le paiement que tu avais demandé pour {$this->titre} vient d'être créé.".($this->evt?" Il a bien été associé à la gestion de l'événement du groupe":""); - } else { - return " La demande que tu avais faite pour le paiement de {$this->intitule} a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - global $globals; - $res = XDB::query("SELECT MAX(id) FROM paiement.paiements"); - $id = $res->fetchOneCell()+1; - $ret = XDB::execute("INSERT INTO paiement.paiements VALUES - ( {?}, {?}, {?}, '', - {?}, {?}, {?}, - {?}, {?}, {?} ) - ", - $id, $this->titre, $this->site, - $this->montant, $this->montant_min, $this->montant_max, - $this->bestalias."@".$globals->mail->domain, $this->msg_reponse, $this->asso_id); - if ($this->asso_id && $this->evt) { - XDB::execute("UPDATE groupex.evenements - SET paiement_id = {?} - WHERE asso_id = {?} AND eid = {?}", - $id, $this->asso_id, $this->evt); - $res = XDB::query("SELECT a.nom, a.diminutif, e.intitule - FROM groupex.asso AS a - INNER JOIN groupex.evenements AS e ON (a.id = e.asso_id) - WHERE e.eid = {?}", - $this->evt); - list($nom, $diminutif, $evt) = $res->fetchOneRow(); - require_once dirname(__FILE__) . '/../../modules/xnetevents/xnetevents.inc.php'; - $participants = get_event_participants(get_event_detail($this->evt, false, $this->asso_id), null, 'nom'); - foreach ($participants as &$u) { - if (!$u['notify_payment']) { - continue; - } - $topay = $u['montant'] - $u['paid']; - if ($topay > 0) { - $mailer = new PlMailer('xnetevents/newpayment.mail.tpl'); - $mailer->assign('asso', $nom); - $mailer->assign('diminutif', $diminutif); - $mailer->assign('evt', $evt); - $mailer->assign('payment', $id); - $mailer->assign('prenom', $u['prenom']); - $mailer->assign('topay', $topay); - $mailer->assign('to', $u['email']); - $mailer->send(); - } - } - } - return $ret; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/photos.inc.php b/include/validations/photos.inc.php deleted file mode 100644 index b2fc0a1..0000000 --- a/include/validations/photos.inc.php +++ /dev/null @@ -1,154 +0,0 @@ -read($upload); - } - - // }}} - // {{{ function read - - private function read(PlUpload &$upload) - { - $this->valid = $upload->resizeImage(240, 300, 160, 0, SIZE_MAX); - if (!$this->valid) { - $this->trigError('Le fichier que tu as transmis n\'est pas une image valide, ou est trop gros pour être traité'); - } - $this->data = $upload->getContents(); - list($this->x, $this->y, $this->mimetype) = $upload->imageInfo(); - $upload->rm(); - } - - // }}} - // {{{ function isValid() - - public function isValid() - { - return $this->valid; - } - - // }}} - // {{{ function get_request() - - static public function get_request($uid) - { - return parent::get_typed_request($uid,'photo'); - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.photos.tpl'; - } - - // }}} - // {{{ function editor() - - public function editor() - { - return 'include/form.valid.edit-photo.tpl'; - } - - // }}} - // {{{ function handle_editor() - - protected function handle_editor() - { - if (isset($_FILES['userfile'])) { - $upload =& PlUpload::get($_FILES['userfile'], S::v('forlife'), 'photo'); - if (!$upload) { - $this->trigError('Une erreur est survenue lors du téléchargement du fichier'); - return false; - } - $this->read($upload); - return $this->valid; - } - return false; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/PHOTO] Changement de photo"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return "Le changement de photo que tu as demandé vient d'être effectué."; - } else { - return "La demande de changement de photo que tu avais faite a été refusée."; - } - } - - // }}} - // {{{ function commit() - - public function commit() - { - require_once 'notifs.inc.php'; - XDB::execute('REPLACE INTO photo (uid, attachmime, attach, x, y) - VALUES ({?},{?},{?},{?},{?})', - $this->uid, $this->mimetype, $this->data, $this->x, $this->y); - register_watch_op($this->uid, WATCH_FICHE, 'photo'); - return true; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/validations/surveys.inc.php b/include/validations/surveys.inc.php deleted file mode 100644 index 5a519b4..0000000 --- a/include/validations/surveys.inc.php +++ /dev/null @@ -1,111 +0,0 @@ -title = $_title; - $this->description = $_description; - $this->end = $_end; - $this->mode = $_mode; - $this->promos = $_promos; - $this->questions = $_questions; - } - - // }}} - // {{{ function formu() - - public function formu() - { - return 'include/form.valid.surveys.tpl'; - } - - // }}} - // {{{ function _mail_subj - - protected function _mail_subj() - { - return "[Polytechnique.org/SONDAGES] Proposition de sondage"; - } - - // }}} - // {{{ function _mail_body - - protected function _mail_body($isok) - { - if ($isok) { - return " Le sondage que tu avais proposé vient d'être validé."; - } else { - return " Le sondage que tu avais proposé a été refusé."; - } - } - - // }}} - // {{{ function updateReq() - - public function updateReq($_title, $_description, $_end, $_mode, $_promos, $_questions) - { - $this->title = $_title; - $this->description = $_description; - $this->end = $_end; - $this->mode = $_mode; - $this->promos = $_promos; - $this->questions = $_questions; - return $this->update(); - } - - // }}} - // {{{ function commit() - - public function commit() - { - $sql = 'INSERT INTO survey_surveys - SET questions={?}, - title={?}, - description={?}, - author_id={?}, - end={?}, - mode={?}, - promos={?}'; - return XDB::execute($sql, serialize($this->questions), $this->title, $this->description, $this->uid, $this->end, $this->mode, $this->promos); - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/vcard.inc.php b/include/vcard.inc.php deleted file mode 100644 index cba4092..0000000 --- a/include/vcard.inc.php +++ /dev/null @@ -1,179 +0,0 @@ -freetext = $freetext; - $this->photos = $photos; - } - - public function add_user($user) - { - $this->user_list[] = get_user_forlife($user); - $this->count++; - } - - public function first() - { - return count($this->user_list) == $this->count - 1; - } - - public function last() - { - return count($this->user_list) == 0; - } - - public function total() - { - return $this->count; - } - - public function next() - { - if (!$this->user_list) { - return null; - } - global $globals; - $login = array_shift($this->user_list); - $user = get_user_details($login); - - if (strlen(trim($user['freetext']))) { - $user['freetext'] = pl_entity_decode($user['freetext']); - } - if ($this->freetext) { - if (strlen(trim($user['freetext']))) { - $user['freetext'] = $this->freetext . "\n" . $user['freetext']; - } else { - $user['freetext'] = $this->freetext; - } - } - - // alias virtual - $res = XDB::query( - "SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING(vid) - INNER JOIN auth_user_quick ON ( user_id = {?} AND emails_alias_pub = 'public' ) - WHERE ( redirect={?} OR redirect={?} ) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $user['user_id'], - $user['forlife'].'@'.$globals->mail->domain, - $user['forlife'].'@'.$globals->mail->domain2); - - $user['virtualalias'] = $res->fetchOneCell(); - $user['gpxs_vcardjoin'] = join(',', array_map(array('VCard', 'text_encode'), $user['gpxs_name'])); - $user['binets_vcardjoin'] = join(',', array_map(array('VCard', 'text_encode'), $user['binets'])); - // get photo - if ($this->photos) { - $res = XDB::query( - "SELECT attach, attachmime - FROM photo AS p - INNER JOIN aliases AS a ON (a.id = p.uid AND a.type = 'a_vie') - WHERE a.alias = {?}", $login); - if ($res->numRows()) { - $user['photo'] = $res->fetchOneAssoc(); - } - } - return $user; - } -} - -class VCard -{ - static private $windows = false; - private $iterator = null; - - public function __construct($users, $photos = true, $freetext = null) - { - $this->iterator = new VCardIterator($photos, $freetext); - VCard::$windows = (strpos($_SERVER['HTTP_USER_AGENT'], 'Windows') !== false); - if (is_array($users)) { - foreach ($users as $user) { - $this->iterator->add_user($user); - } - } else { - $this->iterator->add_user($users); - } - } - - public static function escape($text) - { - if (VCard::$windows) { - return str_replace(';', '\\\\;', $text); - } else { - return str_replace(array(';', ','), array('\\\\;', '\\\\,'), $text); - } - } - - public static function format_adr($params, &$smarty) - { - // $adr1, $adr2, $adr3, $postcode, $city, $region, $country - extract($params['adr']); - $adr = trim($adr1); - $adr = trim("$adr\n$adr2"); - $adr = trim("$adr\n$adr3"); - return VCard::text_encode(';;' - . (VCard::$windows ? VCard::escape($adr) : $adr) . ';' - . (VCard::$windows ? VCard::escape($city) : $city) . ';' - . (VCard::$windows ? VCard::escape($region) : $region) . ';' - . (VCard::$windows ? VCard::escape($postcode) : $postcode) . ';' - . (VCard::$windows ? VCard::escape($country) : $country), false); - } - - public static function text_encode($text, $escape = true) - { - if (is_array($text)) { - return implode(',', array_map(array('VCard', 'text_encode'), $text)); - } - if ($escape) { - $text = VCard::escape($text); - } - if (VCard::$windows) { - $text = utf8_decode($text); - } - return str_replace(array("\r\n", "\n", "\r"), '\n', $text); - } - - public function do_page(&$page) - { - $page->changeTpl('core/vcard.tpl', NO_SKIN); - $page->register_modifier('vcard_enc', array($this, 'text_encode')); - $page->register_function('format_adr', array($this, 'format_adr')); - $page->assign_by_ref('users', $this->iterator); - - header("Pragma: "); - header("Cache-Control: "); - header("Content-type: text/x-vcard; charset=UTF-8"); - header("Content-Transfer-Encoding: 8bit"); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/webservices/ax/client.inc b/include/webservices/ax/client.inc deleted file mode 100755 index 69dd47d..0000000 --- a/include/webservices/ax/client.inc +++ /dev/null @@ -1,433 +0,0 @@ -$v) { - if (property_exists($obj, $k)) { - $obj->$k = $v; - } - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker: -class Ancien -{ - public $NOM_PATR; - public $PART_NOM; - public $PRENOM; - public $NOM_USUEL; - public $PART_NOMUS; - public $NOM_COMPLET; - public $CIVILITE; - public $GRADE; - public $CORPS; - public $PROMO; - public $NATIONALITE; - public $CORPS_LIBELLE; - public $EMAIL; - public $TYPE_ANC; - public $ADRESSE = array(); - public $NUM_ADRESSE = 0; - public $ACTIVITE = array(); - public $NUM_ACTIVITE = 0; - public $FORMATION = array(); - public $NUM_FORMATION = 0; - public $Erreur; - - public function __construct($aa) - { - if ($aa<>'') { - ax_load_object($this, $aa); - } - } - function Ajout_adresse ($adresse,$i) { - $this->ADRESSE[$i] = $adresse; - $this->NUM_ADRESSE++; - } - function Ajout_activite ($activite,$i) { - $this->ACTIVITE[$i] = $activite; - $this->NUM_ACTIVITE++; - } - function Ajout_formation ($formation,$i) { - $this->FORMATION[$i] = $formation; - $this->NUM_FORMATION++; - } - function Ajout_erreur ($erreur) { - $this->Erreur = $erreur; - } - function Erreur() { - return $this->Erreur; - } - function Nom_patr() { - return $this->NOM_PATR; - } - function Part_nom() { - return $this->PART_NOM; - } - function Prenom() { - return $this->PRENOM; - } - function Nom_usuel() { - return $this->NOM_USUEL; - } - function Part_nomus() { - return $this->PART_NOMUS; - } - function Nom_complet() { - return $this->NOM_COMPLET; - } - function Civilite() { - return $this->CIVILITE; - } - function Grade() { - return $this->GRADE; - } - function Corps() { - return $this->CORPS; - } - function Corps_Libelle() { - return $this->CORPS_LIBELLE; - } - function Promo() { - return $this->PROMO; - } - function Nationalite() { - return $this->NATIONALITE; - } - function Email() { - return $this->EMAIL; - } - function Type_anc() { - return $this->TYPE_ANC; - } - function Adresse_type($i) { - return $this->ADRESSE[$i]->TYPE; - } - function Adresse1($i) { - return $this->ADRESSE[$i]->ADRESS1; - } - function Adresse2($i) { - return $this->ADRESSE[$i]->ADRESS2; - } - function Adresse3($i) { - return $this->ADRESSE[$i]->ADRESS3; - } - function Code_pst($i) { - return $this->ADRESSE[$i]->CODE_PST; - } - function Ville($i) { - return $this->ADRESSE[$i]->VILLE; - } - function Zip_cedex($i) { - return $this->ADRESSE[$i]->ZIPCEDEX; - } - function Etat_region($i) { - return $this->ADRESSE[$i]->ETATREGION; - } - function Pays($i) { - return $this->ADRESSE[$i]->PAYS; - } - function Mobile($i) { - return $this->ADRESSE[$i]->MOBILE; - } - function Tel($i) { - return $this->ADRESSE[$i]->TEL; - } - function Fax($i) { - return $this->ADRESSE[$i]->FAX; - } - function Num_adresse() { - return $this->NUM_ADRESSE; - } - function Entreprise($i) { - return $this->ACTIVITE[$i]->ENTREPRISE;; - } - function Raison_sociale($i) { - return $this->ACTIVITE[$i]->RAISON_SOCIALE; - } - function Fonction($i) { - return $this->ACTIVITE[$i]->FONCTION; - } - function Adresse_act_type($i) { - return $this->ACTIVITE[$i]->TYPE; - } - function Adresse_act_adresse1($i) { - return $this->ACTIVITE[$i]->ADRESS1; - } - function Adresse_act_adresse2($i) { - return $this->ACTIVITE[$i]->ADRESS2; - } - function Adresse_act_adresse3($i) { - return $this->ACTIVITE[$i]->ADRESS3; - } - function Adresse_act_code_pst($i) { - return $this->ACTIVITE[$i]->CODE_PST; - } - function Adresse_act_ville($i) { - return $this->ACTIVITE[$i]->VILLE; - } - function Adresse_act_zip_cedex($i) { - return $this->ACTIVITE[$i]->ZIPCEDEX; - } - function Adresse_act_etat_region($i) { - return $this->ACTIVITE[$i]->ETATREGION; - } - function Adresse_act_pays($i) { - return $this->ACTIVITE[$i]->PAYS; - } - function Adresse_act_mobile($i) { - return $this->ACTIVITE[$i]->MOBILE; - } - function Adresse_act_tel($i) { - return $this->ACTIVITE[$i]->TEL; - } - function Adresse_act_fax($i) { - return $this->ACTIVITE[$i]->FAX; - } - function Num_activite() { - return $this->NUM_ACTIVITE; - } - function Formation($i) { - return $this->FORMATION[$i]->LIBELLE; - } - function Num_formation() { - return $this->NUM_FORMATION; - } -} - -class Adresse -{ - public $TYPE; - public $ADRESS1; - public $ADRESS2; - public $ADRESS3; - public $CODE_PST; - public $VILLE; - public $ZIPCEDEX; - public $ETATREGION; - public $PAYS; - public $MOBILE; - public $TEL; - public $FAX; - - public function __construct($aa) - { - ax_load_object($this, $aa); - } -} - -class Activite -{ - public $ENTREPRISE; - public $RAISON_SOCIALE; - public $FONCTION; - public $TYPE; - public $ADRESS1; - public $ADRESS2; - public $ADRESS3; - public $CODE_PST; - public $VILLE; - public $ZIPCEDEX; - public $ETATREGION; - public $PAYS; - public $MOBILE; - public $TEL; - public $FAX; - - public function __construct($aa) - { - ax_load_object($this, $aa); - } -} - -class Formation -{ - public $LIBELLE; - - public function __construct($aa) - { - ax_load_object($this, $aa); - } -} - -function xml_get_children($vals, &$i) -{ - $children = array(); - if (isset($vals[$i]['value'])) $children[] = $vals[$i]['value']; - - while (++$i < count($vals)) { - switch ($vals[$i]['type']) { - case 'cdata': - $children[] = $vals[$i]['value']; - break; - - case 'complete': - $children[] = array( - 'tag' => $vals[$i]['tag'], - 'attributes' => isset($vals[$i]['attributes'])? - $vals[$i]['attributes'] : null, - 'value' => $vals[$i]['value'], - ); - break; - - case 'open': - $children[] = array( - 'tag' => $vals[$i]['tag'], - 'attributes' => isset($vals[$i]['attributes'])? - $vals[$i]['attributes'] : null, - 'children' => xml_get_children($vals, $i), - ); - break; - - case 'close': - return $children; - } - } -} - -//fonction principale de récupération des données de l'ancien -//à indiquer: matricule de l'ancien -function recupere_infos_ancien($AX_MATRICULE) -{ - include('config.inc'); - - $id =14;//14 params persos ancien - $id_ad = 11; //12 params adresse - $id_ac = 14; //15 params adresse - $id_fo = 1; //1 params fonction - - $erreur = ""; - - // Génération d'un identifiant de "session" inter-serveurs - $id_session = md5 (uniqid (rand())); - - // Connexion au serveur pour lui fournir l'identifiant et lui demander un challenge - $challenge = file_get_contents ($nom_script_renvoi_challenge."?id_session=".urlencode($id_session)); - if ($challenge == 'ERROR') - { - $erreur = "Erreur lors de la demande du challenge"; - } - else - { - // On va relire la clé privée (codée) - $privkeypass = $phrase; - $pkey_txt = file_get_contents ($chemin_cle_privee); - if (($pkey_res = openssl_pkey_get_private($pkey_txt, $privkeypass)) == false) - { - $erreur = "Erreur lors de l'ouverture de la clé privée"; - } - else - { - // Signature du challenge (cryptage avec clé privée) - if ( openssl_private_encrypt($challenge, $response, $pkey_res) == false ) - { - $erreur = "Erreur lors du cryptage du challenge avec la clé privée"; - } - else - { - // Signature du login (cryptage avec clé privée) - if ( openssl_private_encrypt($AX_MATRICULE, $AX_MATRICULE_CRYPTE, $pkey_res) == false ) - { - $erreur = "Erreur lors du cryptage du matricule avec la clé privée"; - } - else - { - // Envoi de la réponse au serveur avec l'identifiant de l'ancien dont on veut récupérer les infos - $reponse_serveur .= file_get_contents ($nom_script_renvoi_infos."?id_session=".urlencode($id_session)."&AX_MATRICULE_CRYPTE=".urlencode($AX_MATRICULE_CRYPTE)."&response=".urlencode($response)); - - $parser = xml_parser_create(); - xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); - xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); - xml_parse_into_struct($parser, $reponse_serveur, $vals, $index); - xml_parser_free($parser); - - $tree = array(); - $tree[] = array( - 'tag' => $vals[0]['tag'], - 'attributes' => isset($vals[0]['attributes'])? - $vals[0]['attributes'] : null, - 'children' => xml_get_children($vals, $i = 0), - ); - - for ($i=0; $i < $id; $i++) - { - $val_ancien[$tree[0]['children'][0]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$i]['value']; - } - - $Ancien_renvoye = new Ancien($val_ancien); - - //adresse while pour nbre d'adresses - $num_ad = 0; - while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ADRESSE') - { - for ($i=0; $i <= $id_ad; $i++) - { - $val_adresse[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; - } - - $Adresse_renvoyee = new Adresse($val_adresse); - $Ancien_renvoye->Ajout_adresse($Adresse_renvoyee,$num_ad); - - //prochaine adresse - $num_ad = $num_ad + 1; - $id = $id+1; - } - - //idem pour activité - $num_ac = 0; - while ($tree[0]['children'][0]['children'][$id]['tag'] == 'ACTIVITE') - { - for ($i=0; $i <= $id_ac; $i++) - { - $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; - - for ($j=0; $j <= $id_ad; $j++) - { - $val_activite[$tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['children'][$j]['value']; - } - } - - $Activite_renvoyee = new Activite($val_activite); - $Ancien_renvoye->Ajout_activite($Activite_renvoyee,$num_ac); - - //prochaine activité - $num_ac = $num_ac + 1; - $id = $id+1; - } - //idem pour formation - $num_fo = 0; - while ($tree[0]['children'][0]['children'][$id]['tag'] == 'FORMATION') - { - for ($i=0; $i <= $id_fo; $i++) - { - $val_formation[$tree[0]['children'][0]['children'][$id]['children'][$i]['tag']] = $tree[0]['children'][0]['children'][$id]['children'][$i]['value']; - } - - $Formation_renvoyee = new Formation($val_formation); - $Ancien_renvoye->Ajout_formation($Formation_renvoyee,$num_fo); - - //prochaine formation - $num_fo = $num_fo + 1; - $id = $id+1; - } - } - } - } - } - - //erreur indiquée - if ($erreur) //erreur ici - { - $Ancien_renvoye = new Ancien(''); - $Ancien_renvoye->Ajout_erreur($erreur); - } - else - { //renvoyée par le fichier serveur_renvoie_infos - $Ancien_renvoye->Ajout_erreur($tree[0]['children'][1]['value']); - } - - return $Ancien_renvoye; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/webservices/ax/config.inc b/include/webservices/ax/config.inc deleted file mode 100755 index 199e7e9..0000000 --- a/include/webservices/ax/config.inc +++ /dev/null @@ -1,13 +0,0 @@ -webservice->private_key_ax; - //phrase cryptant la clé privée - $phrase = $globals->webservice->pass_ax; -// "Cryptage de la cle pour polytechnique.org"; - - //paramètres serveurs - $nom_script_renvoi_challenge = $globals->webservice->host_ax."serveur_genere_challenge.php"; - $nom_script_renvoi_infos = $globals->webservice->host_ax."serveur_renvoie_infos_ancien_direct.php"; -?> diff --git a/include/webservices/ax/dtd_ancien.dtd b/include/webservices/ax/dtd_ancien.dtd deleted file mode 100755 index f9ac008..0000000 --- a/include/webservices/ax/dtd_ancien.dtd +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/include/webservices/manageurs.client.inc.php b/include/webservices/manageurs.client.inc.php deleted file mode 100644 index 91ece55..0000000 --- a/include/webservices/manageurs.client.inc.php +++ /dev/null @@ -1,33 +0,0 @@ - array(0 => array('adr1' => 'test AX', 'city' => 'Trou perdu'))); - - $client = new XmlrpcClient($url); - - global $globals; - if($array = $client->get_annuaire_infos($globals->webservice->pass, $id_assoce, $adresse)){ - - if( is_string($array) ){ - $erreur = xmlrpc_decode($array); - echo $erreur['erreurstring']."\n"; - return $erreur['erreur']; - } - else{ - manageurs_encrypt_init($id_assoce); - $reply = manageurs_decrypt_array($array); - manageurs_encrypt_close(); - return $reply; - } - } - else return false; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/webservices/manageurs.inc.php b/include/webservices/manageurs.inc.php deleted file mode 100644 index 3c7f3b5..0000000 --- a/include/webservices/manageurs.inc.php +++ /dev/null @@ -1,87 +0,0 @@ -manageurs->manageurs_cipher_key; - if(!$tripledes){ - if(empty($cipher_key)){ - return 1; - } - $tripledes = mcrypt_module_open('tripledes', '', 'ecb', ''); - $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($tripledes), MCRYPT_RAND); - mcrypt_generic_init($tripledes, $cipher_key.$id_assoce, $iv); - return 0; - } -} - -function manageurs_encrypt_close(){ - global $tripledes; - if($tripledes){ - mcrypt_generic_deinit($tripledes); - mcrypt_module_close($tripledes); - $tripledes = ''; - } -} - -function manageurs_encrypt($message){ - global $tripledes; - if (empty($message)) { - return $message; - } - return base64_encode(mcrypt_generic($tripledes, utf8_decode($message))); -} - -function manageurs_decrypt($message){ - global $tripledes; - return trim(mdecrypt_generic($tripledes, base64_decode($message))); -} - -function manageurs_encrypt_array($array){ - foreach($array as $key => $value){ - if(is_array($value)){ - $result[manageurs_encrypt($key)] = manageurs_encrypt_array($value); - } - else{ - $result[manageurs_encrypt($key)] = manageurs_encrypt($value); - } - } - return $result; -} - -function manageurs_decrypt_array($array){ - foreach($array as $key => $value){ - if(is_array($value)){ - $result[manageurs_decrypt($key)] = manageurs_decrypt_array($value); - } - else{ - $result[manageurs_decrypt($key)] = manageurs_decrypt($value); - } - } - return $result; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/webservices/manageurs.server.inc.php b/include/webservices/manageurs.server.inc.php deleted file mode 100644 index 50a5854..0000000 --- a/include/webservices/manageurs.server.inc.php +++ /dev/null @@ -1,178 +0,0 @@ - on ne veut pas d'adresse - 0 => on veut toutes les adresses - n => on veut l'adresse numero n - - IL NE FAUT PAS CHANGER LES NOMS DES CHAMPS DE ADRESSES - S'IL Y A DES MODIFS A FAIRE VOIR AVEC MANAGEURS admin@manageurs.com -*/ -function get_annuaire_infos($method, $params) { - global $error_mat, $error_key, $globals; - - //verif du mdp - if(!isset($params[0]) || ($params[0] != $globals->manageurs->manageurs_pass)){return false;} - //si on a adresse == -1 => on ne recupère aucune adresse - if(isset($params[2]) && ($params[2] == -1)) unset($params[2]); - - if( !empty($params[1]) ){ // on verifie qu'on a bien un matricule - - //on ne recupere pas les adresses inutilement - if(!isset($params[2])){ - $res = XDB::iterRow( - "SELECT q.profile_mobile AS cell, a.naissance AS age - FROM auth_user_md5 AS a - INNER JOIN auth_user_quick AS q USING (user_id) - WHERE a.matricule = {?}", $params[1]); - $array = $res->next(); - } - else{ - $res = XDB::iterRow( - "SELECT q.profile_mobile AS cell, a.naissance AS age, - adr.adr1, adr.adr2, adr.adr3, - adr.postcode, adr.city, adr.country, - adr.uid, adr.adrid - FROM auth_user_md5 AS a - INNER JOIN auth_user_quick AS q USING (user_id) - LEFT JOIN adresses AS adr ON(adr.uid = a.user_id) - WHERE a.matricule = {?} AND - NOT FIND_IN_SET('pro', adr.statut) - ORDER BY NOT FIND_IN_SET('active', adr.statut), - FIND_IN_SET('res-secondaire', adr.statut), - NOT FIND_IN_SET('courrier', adr.statut)", $params[1]); - //traitement des adresses si necessaire - if(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'], - $adr['pays'], $uid, $adr['adrid']) = $res->next()) - { - $array['cell'] = $cell; - $array['age'] = $age; - $array['adresse'][] = $adr; - - - //on clamp le numero au nombre d'adresses dispo - $adresse = min((int) $params[2], $res->total()); - - if ($adresse != 1) { //on ne veut pas la premiere adresse - $i = 2; - while(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'], - $adr['pays'], , $adr['adrid']) = $res->next()) - { - if($adresse == $i){//si on veut cette adresse en particulier - $array['adresse'][0] = $adr; - //$res->free(); - break; - } - elseif($adresse == 0){//si on veut toutes les adresses - $array['adresse'][] = $adr; - } - $i++; - } - } - - // on rajoute les numéros de tél - $adrid_index = array(); - foreach ($array['adresse'] as $i => $a) $adrid_index[$a['adrid']] = $i; - // on rajoute les numéros de tels - $restel = XDB::iterator( - "SELECT t.tel, t.tel_type, t.adrid - FROM tels AS t - INNER JOIN adresses AS a ON (t.adrid = a.adrid AND t.uid = a.uid) - WHERE t.uid = {?} AND NOT FIND_IN_SET('pro', a.statut)", $uid); - while ($tel = $restel->next()) $array['adresse'][$adrid_index[$tel['adrid']]]['tels'][] = $tel; - foreach ($array['adresse'] as $i => $adr) { - unset($lasttel); - foreach($adr['tels'] as $j => $t){ - if (!isset($array['adresse'][$i]['tel']) && (strpos($t['tel_type'], 'Tél') === 0)) $array['adresse'][$i]['tel'] = $t['tel']; - elseif (!isset($array['adresse'][$i]['fax']) && (strpos($t['tel_type'], 'Fax') === 0)) $array['adresse'][$i]['fax'] = $t['tel']; - else $lasttel = $t['tel']; - if (isset($array['adresse'][$i]['tel']) && isset($array['adresse'][$i]['fax'])) break; - } - if (!isset($array['adresse'][$i]['tel']) && isset($lasttel)) - $array['adresse'][$i]['tel'] = $lasttel; - elseif (!isset($array['adresse'][$i]['fax']) && isset($lasttel)) - $array['adresse'][$i]['fax'] = $lasttel; - unset($array['adresse'][$i]['adrid']); - unset($array['adresse'][$i]['tels']); - } - } - else{ - $array = false; - } - } - - if ($array) { // on a bien eu un résultat : le matricule etait bon - - //on n'envoit que l'age à manageurs le format est YYYY-MM-DD 0123-56-89 - $year = (int) substr($array['age'],0,4); - $month = (int) substr($array['age'],5,2); - $day = (int) substr($array['age'],8,2); - $age = (int) date('Y') - $year - 1; - if(( $month < (int)date('m')) || - (($month == (int)date('m')) && ($day >= (int)date('d')))) - { - $age += 1; - } - $array['age'] = $age; - - //on commence le cryptage des donnees - if (manageurs_encrypt_init($params[1]) == 1) {//on a pas trouve la cle pour crypter - $args = array("erreur" => 3, "erreurstring" => $error_key); - $reply = xmlrpc_encode_request(NULL,$args); - } else { - $reply = manageurs_encrypt_array($array); - manageurs_encrypt_close(); - } - } else {//le matricule n'etait pas valide - $args = array("erreur" => 2, "erreurstring" => $erreur_mat); - $reply = xmlrpc_encode_request(NULL,$args); - } - } else {//le matricule n'etait pas en argument - $args = array("erreur" => 1, "erreurstring" => $error_mat); - $reply = xmlrpc_encode_request(NULL,$args); - } - - return $reply; -} - -function get_nouveau_infos($method, $params) { - global $error_mat, $error_key, $globals; - //verif du mdp - if(!isset($params[0]) || ($params[0] != $globals->manageurs->manageurs_pass)){return false;} - if( !empty($params[1]) ){ // on verifie qu'on a bien un matricule - - $res = XDB::query( - "SELECT a.nom, a.nom_usage,a.prenom, FIND_IN_SET('femme', a.flags) as femme ,a.deces!= 0 as decede , - a.naissance, a.promo, concat(al.alias, '@m4x.org') as mail - FROM auth_user_md5 AS a - INNER JOIN aliases as al ON a.user_id=al.id - WHERE al.flags='bestalias' and a.matricule = {?}",$params[1]); - $data=$res->fetchOneAssoc(); - //$data['mail'].='@polytechnique.org'; - - - //on commence le cryptage des donnees - if (manageurs_encrypt_init($params[1]) == 1) {//on a pas trouve la cle pour crypter - $args = array("erreur" => 3, "erreurstring" => $error_key); - $reply = xmlrpc_encode_request(NULL,$args); - } else { - $reply = manageurs_encrypt_array($data); - manageurs_encrypt_close(); - } - - } - else{ - $reply=false; - } - return $reply; - -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/wiki.inc.php b/include/wiki.inc.php deleted file mode 100644 index bba6b11..0000000 --- a/include/wiki.inc.php +++ /dev/null @@ -1,320 +0,0 @@ -spoolroot.'/spool/wiki.d'; -} - -function wiki_clear_all_cache() -{ - system('rm -f '.wiki_work_dir().'/cache_*'); -} - -function wiki_perms_options() { - return array('public' => 'Public', 'logged' => 'Connecté', - 'mdp' => 'Authentifié', 'admin' => 'Admin'); -} - -function wiki_get_perms($n) -{ - $file = wiki_work_dir().'/'.wiki_filename(str_replace('/', '.', $n)); - $lines = explode("\n", @file_get_contents($file)); - foreach ($lines as $line) { - @list($k, $v) = explode('=', $line, 2); - if ($k == 'platal_perms') { - return explode(':', $v); - } - } - return array('logged', 'admin'); -} - -function wiki_putfile($f, $s) -{ - $fp = fopen($f, 'w'); - fputs($fp, $s); - fclose($fp); -} - -function wiki_set_perms($n, $pr, $pw) -{ - $file = wiki_work_dir().'/'.wiki_filename(str_replace('/', '.', $n)); - if (!file_exists($file)) { - return false; - } - - $p = $pr . ':' . $pw; - - $lines = explode("\n", file_get_contents($file)); - foreach ($lines as $i => $line) { - list($k, $v) = explode('=', $line, 2); - if ($k == 'platal_perms') { - $lines[$i] = 'platal_perms='.$p; - wiki_putfile($file, join("\n", $lines)); - return true; - } - } - - array_splice($lines, 1, 0, array('platal_perms='.$p)); - wiki_putfile($file, join("\n", $lines)); - return true; -} - -function wiki_may_have_perms($perm) { - switch ($perm) { - case 'public': return true; - case 'logged': return S::logged(); - case 'mdp': return S::logged(); - default: return S::has_perms(); - } -} - -function wiki_apply_feed_perms($perm) -{ - if ($perm == 'public') { - return; - } - - require_once 'rss.inc.php'; - $uid = init_rss(null, Env::v('user'), Env::v('hash')); - $res = XDB::query('SELECT user_id AS uid, IF (nom_usage <> \'\', nom_usage, nom) AS nom, prenom, perms - FROM auth_user_md5 - WHERE user_id = {?}', $uid); - if (!$res->numRows()) { - exit; - } - $table = $res->fetchOneAssoc(); - $_SESSION = array_merge($_SESSION, $table, array('forlife' => Env::v('user'))); - $_SESSION['perms'] =& XorgSession::make_perms($_SESSION['perms']); - if ($perm == 'logged' || $_SESSION['perms']->hasFlag('admin')) { - return; - } - exit; -} - -function wiki_apply_perms($perm) -{ - global $platal, $globals; - $page =& Platal::page(); - - switch ($perm) { - case 'public': - return; - - case 'logged': - if (!call_user_func(array($globals->session, 'doAuthCookie'))) { - $platal = empty($GLOBALS['IS_XNET_SITE']) ? new Platal() : new Xnet(); - $platal->force_login($page); - } - return; - - default: - if (!call_user_func(array($globals->session, 'doAuth'))) { - $platal = empty($GLOBALS['IS_XNET_SITE']) ? new Platal() : new Xnet(); - $platal->force_login($page); - } - if ($perm == 'admin') { - check_perms(); - } - return; - } -} - -function wiki_require_page($pagename) -{ - global $globals; - $pagename_slashes = str_replace('.','/',$pagename); - $pagename_dots = str_replace('/','.',$pagename); - if (is_file(wiki_work_dir().'/cache_'.$pagename_dots.'.tpl')) { - return; - } - system('wget --no-check-certificate '. escapeshellarg($globals->baseurl.'/'.$pagename_slashes) . ' -O /dev/null'); -} - -function wiki_delete_page($pagename) -{ - $pagename_dots = str_replace('/','.',$pagename); - if (!strpos($pagename_dots, '.')) { - return false; - } - $file = wiki_work_dir().'/'.wiki_filename($pagename_dots); - $cachefile = wiki_work_dir().'/cache_'.$pagename_dots.'.tpl'; - if (is_file($cachefile)) { - unlink($cachefile); - } - if (!is_file($file)) { - return false; - } - unlink($file); - return true; -} - -function wiki_links_in_line($line, $groupname) -{ - $links = array(); - if (preg_match_all('@\[\[([^~][^\]\|\?#]*)((\?|#)[^\]\|]+)?(\\|[^\]]+)?\]\]@', $line, $matches, PREG_OFFSET_CAPTURE)) { - foreach ($matches[1] as $j => $link) if (!preg_match('@http://@', $link[0])) { - $mylink = str_replace('/','.',trim($link[0])); - $sup = trim(substr($matches[2][$j][0],1)); - $alt = trim(substr($matches[4][$j][0],1)); - $newlink = str_replace(' ','',ucwords($mylink)); - if (strpos($newlink,'.') === false) { - $newlink = $groupname.'.'.$newlink; - } - if (!$alt && $mylink != $newlink) { - $alt = trim($link[0]); - } - $links[] = array( - 'pos' => $matches[0][$j][1], - 'size' => strlen($matches[0][$j][0]), - 'href' => $newlink, - 'sup' => $sup, - 'alt' => $alt, - 'group' => substr($mylink, 0, strpos($mylink, '.'))); - } - } - return $links; -} - -function wiki_rename_page($pagename, $newname, $changeLinks = true) -{ - $pagename_dots = str_replace('/','.',$pagename); - $newname_dots = str_replace('/','.',$newname); - if (!strpos($pagename_dots, '.') || !strpos($newname_dots, '.')) { - return false; - } - $groupname = substr($pagename_dots, 0, strpos($pagename_dots,'.')); - $newgroupname = substr($newname_dots, 0, strpos($pagename_dots,'.')); - - $file = wiki_work_dir().'/'.wiki_filename($pagename_dots); - $newfile = wiki_work_dir().'/'.wiki_filename($newname_dots); - if (!is_file($file)) { - // old page doesn't exist - return false; - } - if (!rename($file, $newfile)) { - // impossible to renama page - return false; - } - - if (!$changeLinks) { - return true; - } - - $changedLinks = 0; - // change name inside this folder and ingroup links if changing group - $lines = explode("\n", file_get_contents($newfile)); - $changed = false; - foreach ($lines as $i => $line) { - list($k, $v) = explode('=', $line, 2); - if ($k == 'name' && $v == $pagename_dots) { - $lines[$i] = 'name='.$newname_dots; - $changed = true; - } else if ($groupname != $newgroupname) { - $links = wiki_links_in_line($line, $groupname); - $newline = ''; $last = 0; - foreach ($links as $link) if ($link['group'] == $groupname) { - $newline .= substr($line, $last, $link['pos']); - $newline .= '[['.$link['href'].$link['sup'].($link['alt']?(' |'.$link['alt']):'').']]'; - $last = $link['pos']+$link['size']; - $changedLinks++; - } - if ($last != 0) { - $newline .= substr($line, $last); - $lines[$i] = $newline; - $changed = true; - } - } - } - wiki_putfile($newfile, join("\n", $lines)); - - // change wiki links in all wiki pages - $endname = substr($pagename_dots, strpos($pagename_dots,'.')+1); - $pages = array(); - exec("grep ".$endname." ".wiki_work_dir()."/* -sc", $pages); - foreach($pages as $line) { - if (preg_match('%/([^/:]+):([0-9]+)$%', $line, $vals) && $vals[2] > 0) { - $inpage = $vals[1]; - $lines = explode("\n", file_get_contents(wiki_work_dir().'/'.$inpage)); - $changed = false; - // find all wiki links in page and change if linked to this page - foreach ($lines as $i => $line) { - $links = wiki_links_in_line($line, substr($inpage, 0, strpos($inpage, '.'))); - $newline = ''; $last = 0; - foreach ($links as $link) { - if ($link['href'] == $pagename_dots) { - $newline .= substr($line, $last, $link['pos']); - $newline .= '[['.$newname_dots.$link['sup'].($link['alt']?(' |'.$link['alt']):'').']]'; - $last = $link['pos']+$link['size']; - $changedLinks++; - } - } - if ($last != 0) { - $newline .= substr($line, $last); - $lines[$i] = $newline; - $changed = true; - } - } - if ($changed) - { - wiki_putfile(wiki_work_dir().'/'.$inpage, join("\n", $lines)); - } - } - } - if ($changedLinks > 0) { - return $changedLinks; - } - return true; -} - -function wiki_rename_folder($pagename, $newname, $changeLinks = true) -{ -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/wiki/e-protect.php b/include/wiki/e-protect.php deleted file mode 100644 index c6144c6..0000000 --- a/include/wiki/e-protect.php +++ /dev/null @@ -1,134 +0,0 @@ - mailto:...]] - Jan 7 2005 - * Moved decoding script to Header, due to problem, when SideBar and Main Text - contains addresses to decode (Klonk) - - Nov 17 2004 - * Calling the decoding function as Custom Markup for PmWiki2 - (by Klonk) * made decoding of [[hidden-email:...]] working - BONUS: [[hidden-email:... |DisplayedText]] works also now - * added class='urllink' to decoded output for same CSS formating - as for other links in PmWiki2 - * inserted own function call in array $EditFunctions before 'ReplaceOnSave' - - May 11, 2004 - Working Beta. Still a few improvements to be made, but - the script is ready for public testing. Please feel - free to email me your comments/suggestions. Thanks! - May 8, 2004 - Alpha release. Not released to public. - - * Configuration * - There aren't (yet) any configuration variables for this script. */ - -//---------------------------------------------------------------------- - -## [[hidden-email:target]] -Markup('hidden-email',' hidden-email:target]] -Markup('-hidden-email','$email\");" . "\n//-->\n"; - else - $html .= "" . $AlternateText . ""; - $html .= "\n\n"; - return Keep($html); -} - -//---------------------------------------------------------------------- -function eProtectEncode ($pagename,&$page,&$new) { -//---------------------------------------------------------------------- - global $KeepToken, $KPV, $UrlExcludeChars; - if (!@$_POST['post']) return; // only Encode, when posting - $text = $new['text']; - $text = preg_replace_callback("/\\[\\=(.*?)\\=\\]/s", create_function('$str', 'return Keep($str[0]);'), $text); // extract the [= .. =] and temporarily store in $KPV[] -# $text = preg_replace_callback("/\\[\\[mailto:([^\\s$UrlExcludeChars]*)/", create_function('$m','return "[[hidden-email:".trim(eProtectStrRecode($m[1]));'), $text); - $text = preg_replace_callback("/\\[\\[(.*?)mailto:([^\\s$UrlExcludeChars]*)(.*?)\\]\\]/", create_function('$m','return "[[".$m[1]."hidden-email:".trim(eProtectStrRecode($m[2])).$m[3]."]]";'), $text); - $text = preg_replace("/$KeepToken(\\d+)$KeepToken/e",'$KPV[$1]',$text); // put the [= .. =] back in to the text - $new['text'] = $text; -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/wiki/empty/empty.tmpl b/include/wiki/empty/empty.tmpl deleted file mode 100644 index 51f6f38..0000000 --- a/include/wiki/empty/empty.tmpl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/include/wiki/engine.php b/include/wiki/engine.php deleted file mode 100644 index fb3a61e..0000000 --- a/include/wiki/engine.php +++ /dev/null @@ -1,145 +0,0 @@ -trigSuccess('Permissions mises à jour'); - } -} - -if ($p = Post::v('setwperms')) { - wiki_apply_perms('admin'); - if (wiki_set_perms($n, $perms[0], $p)) { - $perms = wiki_get_perms($n); - $page->trigSuccess('Permissions mises à jour'); - } -} - -// Generate cache even if we don't have access rights -$wiki_cache = wiki_work_dir().'/cache_'.wiki_filename($n).'.tpl'; -$cache_exists = file_exists($wiki_cache); -if (Env::v('action') || !$cache_exists) { - if ($cache_exists && !$feed) { - unlink($wiki_cache); - $files = glob($globals->spoolroot . '/spool/templates_c/*cache_' . wiki_filename($n) . '.tpl*'); - foreach ($files as $file) { - unlink($file); - } - } - - // we leave pmwiki do whatever it wants and store everything - ob_start(); - require_once($globals->spoolroot.'/wiki/pmwiki.php'); - - $wikiAll = ob_get_clean(); - pl_clear_errors(); - - // the pmwiki skin we are using (almost empty) has these keywords: - $i = strpos($wikiAll, ""); - $j = strpos($wikiAll, "", $i); -} - -$wiki_exists = file_exists(wiki_work_dir() . '/' . wiki_filename($n)); - -if ($feed) { - $wikiAll = str_replace('dc:contributor', 'author', $wikiAll); - $wikiAll = preg_replace('!.*?\..*?\.(\d{4})\|(.*?)!u', '$2 (X$1)', $wikiAll); - $wikiAll = str_replace('./', '' . $globals->baseurl . '/' . $platal->ns, $wikiAll); - echo $wikiAll; - pl_clear_errors(); - exit; -} elseif (Env::v('action')) { - $page->assign('pl_extra_header', substr($wikiAll, 0, $i)); - $wikiAll = substr($wikiAll, $j); -} else { - if (!$cache_exists && $wiki_exists) { - $wikiAll = substr($wikiAll, $j); - wiki_putfile($wiki_cache, $wikiAll); - } elseif ($cache_exists) { - $wikiAll = file_get_contents($wiki_cache); - } elseif (S::has_perms()) { - $wikiAll = "

    La page de wiki $n n'existe pas. " - . "Il te suffit de l'éditer

    "; - } else { - $page->changeTpl('core/404.tpl'); - } -} - -// Check user perms -wiki_apply_perms($perms[0]); - -$page->assign('perms', $perms); -$page->assign('perms_opts', wiki_perms_options()); - -$page->assign('canedit', wiki_may_have_perms($perms[1])); -$page->assign('has_perms', wiki_may_have_perms('admin')); - -$page->assign('wikipage', str_replace('.', '/', $n)); -if (!$feed && $perms[1] == 'admin' && !Env::v('action') && $wiki_exists) { - $page->assign('pmwiki_cache', $wiki_cache); -} else { - $page->assign('pmwiki', $wikiAll); - $page->assign('text', true); -} -$page->addCssLink('wiki.css'); -$page->addJsLink('wiki.js'); -if (!Env::v('action')) { - $url = '/' . str_replace('.', '/', $n) . '?action=rss'; - if (S::logged()) { - $url .= '&user=' . S::v('forlife') . '&hash=' . S::v('core_rss_hash'); - } - $page->setRssLink($n, $url); -} - -$page->run(); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/wiki/farmconfig.php b/include/wiki/farmconfig.php deleted file mode 100644 index b867000..0000000 --- a/include/wiki/farmconfig.php +++ /dev/null @@ -1,121 +0,0 @@ - in skin -$PubDirUrl = './wiki'; #/ - -$WorkDir = '../spool/wiki.d'; -$WikiDir = new PageStore('$FarmD/'.$WorkDir.'/$FullName'); -$InterMapFiles[] = $globals->spoolroot.'/configs/pmwiki.intermap.txt'; - -$Skin = 'empty'; - -@include_once("$FarmD/cookbook/e-protect.php"); -include_once($FarmD.'/scripts/xlpage-utf-8.php'); -ResolvePageName(); - -if ($action == 'rss' || $action == 'atom' || $action == 'rdf' || $action == 'dc') { - $FmtPV['$MarkupExcerpt'] = '$page["text"]'; - $FeedFmt[$action]['item']['title'] = '[$Group] {$Title}'; - $FeedFmt[$action]['item']['description'] = '$LastModifiedSummary'; - $FeedFmt[$action]['feed']['title'] = 'Polytechnique.org :: Wiki :: $FullName'; - $pagelist = null; - include_once("$FarmD/scripts/feeds.php"); -} - -// Theme-ing {{{ - -## The following lines make additional editing buttons appear in the -## edit page for subheadings, lists, tables, etc. -$GUIButtons['h2'] = array(400, '\\n!! ', '\\n', '$[Heading]', - '$GUIButtonDirUrlFmt/h2.gif"$[Heading]"'); -$GUIButtons['h3'] = array(402, '\\n!!! ', '\\n', '$[Subheading]', - '$GUIButtonDirUrlFmt/h3.gif"$[Subheading]"'); -$GUIButtons['indent'] = array(500, '\\n->', '\\n', '$[Indented text]', - '$GUIButtonDirUrlFmt/indent.gif"$[Indented text]"'); -$GUIButtons['outdent'] = array(510, '\\n-<', '\\n', '$[Hanging indent]', - '$GUIButtonDirUrlFmt/outdent.gif"$[Hanging indent]"'); -$GUIButtons['ol'] = array(520, '\\n# ', '\\n', '$[Ordered list]', - '$GUIButtonDirUrlFmt/ol.gif"$[Ordered (numbered) list]"'); -$GUIButtons['ul'] = array(530, '\\n* ', '\\n', '$[Unordered list]', - '$GUIButtonDirUrlFmt/ul.gif"$[Unordered (bullet) list]"'); -$GUIButtons['hr'] = array(540, '\\n----\\n', '', '', - '$GUIButtonDirUrlFmt/hr.gif"$[Horizontal rule]"'); -$GUIButtons['table'] = array(600, - '||border=1 width=80%\\n||!Hdr ||!Hdr ||!Hdr ||\\n|| || || ||\\n|| || || ||\\n', '', '', - '$GUIButtonDirUrlFmt/table.gif"$[Table]"'); - -// set default author -$Author = $_SESSION['forlife'].'|'.$_SESSION['prenom'].' '.$_SESSION['nom']; - -$InputTags['e_form'] = array( - ':html' => "
    "); - -// set profiles to point to plat/al fiche -Markup('[[~platal', '<[[~', '/\[\[~([^|\]]*)(?:\|([^\]]*))?\]\]/e', - 'PreserveText("=", doPlatalLink("$1", "$2"), "")'); - -// Preserve javascript -Markup('[[javascript', '<[[javascript:', '/\[\[javascript:([^\|]*)\|([^\]]*)?\]\]/e', - 'PreserveText("=", \'\', "") . "$2" . PreserveText("=", "", "")'); - -// prevent restorelinks before block apply (otherwise [[Sécurité]] will give -// .../Se9'>Sécurité -Markup('restorelinks','<%%',"//", ''); - -## [[#anchor]] in standard XHTML -Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/e', - "Keep(\"\",'L')"); - -Markup('tablebicol', '$2
    '); - -function doBicol($column=false) -{ - global $TableRowIndexMax, $TableRowAttrFmt, $TableCellAttrFmt; - $TableRowAttrFmt = "class='pair_pmwiki_\$TableRowCount'"; - if ($column) { - $TableCellAttrFmt = "class='$column'"; - } -} - -function doPlatalLink($link, $text) -{ - if (strlen(trim($text)) == 0) { - $res = XDB::query("SELECT u.nom, u.prenom, u.promo, q.profile_nick AS surnom - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - INNER JOIN aliases AS a ON u.user_id = a.id - WHERE a.alias = {?}", $link); - $row = $res->fetchOneAssoc(); - $text = $row['prenom'] . ' ' . $row['nom'] . ' X' . $row['promo']; - if ($row['surnom']) { - $text .= ' (alias ' . $row['surnom'] . ')'; - } - } - return '' . $text . ''; -} - -// }}} - -$AuthFunction = 'ReadPage'; - -$HandleAuth['diff'] = 'edit'; -$HandleAuth['source'] = 'edit'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/include/wiki/wiki.d/Site.EditForm b/include/wiki/wiki.d/Site.EditForm deleted file mode 100644 index a2fa0cf..0000000 --- a/include/wiki/wiki.d/Site.EditForm +++ /dev/null @@ -1,12 +0,0 @@ -version=pmwiki-2.0.6 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 -author=pascal.corpet.2001|Pascal CORPET -host=69.109.203.119 -name=Site.EditForm -rev=47 -targets=PmWiki.BasicEditing,PmWiki.TextFormattingRules,PmWiki.DocumentationIndex,PmWiki.SimpleTables,PmWiki.AdvancedTables -text=!!$[Editing `{$FullName}] %25block class=wikiaction%25%0a(:messages:)%0a(:div id='wikiedit':)%0a(:input e_form:)[[#top]](:e_guibuttons:)\\%0a(:input e_textarea:)\\%0a$[Summary]: (:input e_changesummary:)\\%0a(:input e_minorcheckbox:) $[This is a minor edit]\\%0a(:input e_savebutton:) (:input e_saveeditbutton:) (:input e_previewbutton:) (:input e_cancelbutton:)%0a(:input end:)%0a(:divend:)%0a(:include $[{$SiteGroup}/EditQuickReference]:)%0a(:if e_preview:)%0a!!$[Preview `{$FullName}]%0a'''$[Page is unsaved]'''%0a(:e_preview:)%0a----%0a'''$[End of preview -- remember to save]'''\\%0a[[#top | $[Top] ]]%0a(:if:)%0a -time=1127791699 -author:1127791699=pascal.corpet.2001|Pascal CORPET -diff:1127791699:1123765861:=7c7%0a%3c (:input e_minorcheckbox:) $[This is a minor edit]\\%0a---%0a> $[Author]: (:input e_author:) (:input e_minorcheckbox:) $[This is a minor edit]\\%0a -host:1127791699=69.109.203.119 diff --git a/include/wiki/wiki.d/Site.Preferences b/include/wiki/wiki.d/Site.Preferences deleted file mode 100644 index b4835f2..0000000 --- a/include/wiki/wiki.d/Site.Preferences +++ /dev/null @@ -1,12 +0,0 @@ -version=pmwiki-2.0.6 ordered=1 urlencoded=1 -agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7 -author=pascal.corpet.2001|Pascal CORPET -host=69.109.203.119 -name=Site.Preferences -rev=22 -targets=PmWiki.AccessKeys,Site.Preferences,PmWiki.PmWiki -text=These define various default site preferences, including [[PmWiki/access keys]] and component sizes.%0a%0a [=%0a # Access keys - hold Alt (Windows) or Control (Mac) and %0a # tap the indicated key on your keyboard to trigger the %0a # corresponding action.%0a 'ak_edit' => 'e', # edit page%0a 'ak_history' => 'h', # page history%0a 'ak_recentchanges' => 'c', # Recent Changes%0a 'ak_save' => 's', # save page%0a 'ak_saveedit' => 'u', # save and keep editing%0a 'ak_preview' => 'p', # preview page%0a 'ak_em' => 'i', # emphasized text (italic)%0a 'ak_strong' => 'b', # strong text (bold)%0a%0a # Editing components%0a 'e_rows' => '20', # rows in edit textarea%0a 'e_cols' => '90', # columns in edit textarea%0a 'Site.EditForm' => 'Site.EditForm' # location of EditForm%0a =]%0a%0aIf you'd like to customize these preferences, to create personal user (browser) preferences, make a copy of this page somewhere, preferably as @@Profiles.''%25green%25insert your name here%25%25''-Preferences@@, edit that page with your new preferred settings,%0aand then select [[{$FullName}?setprefs={$FullName} | Set Preferences of this Page]] on the page containing your newly created settings. %0aThis sets a cookie on your browser which tells PmWiki where to find your personal preference settings.%0a%0aTo unset this cookie and revert to PmWiki's default preferences,%0aselect [[{$Name}?setprefs=| Revert to PmWiki Default Preferences]].%0a%0aSee also [[Cookbook:UserConfigurations]] about how to customise the edit form for personal use.%0a%0a -time=1127888649 -author:1127888649=pascal.corpet.2001|Pascal CORPET -diff:1127888649:1125513250:minor=18c18%0a%3c 'e_cols' => '90', # columns in edit textarea%0a---%0a> 'e_cols' => '70', # columns in edit textarea%0a -host:1127888649=69.109.203.119 diff --git a/include/xnet.inc.php b/include/xnet.inc.php deleted file mode 100644 index 42b047d..0000000 --- a/include/xnet.inc.php +++ /dev/null @@ -1,46 +0,0 @@ - diff --git a/include/xorg.inc.php b/include/xorg.inc.php deleted file mode 100644 index d463f7d..0000000 --- a/include/xorg.inc.php +++ /dev/null @@ -1,76 +0,0 @@ -fetchOneCell(); - $globals->changeDynamicConfig(array('NbIns' => $cnt)); -} - -function update_NbValid() -{ - global $globals; - $res = XDB::query("SELECT COUNT(*) - FROM requests"); - $globals->changeDynamicConfig(array('NbValid' => $res->fetchOneCell())); -} - -function update_NbNotifs() -{ - require_once 'notifs.inc.php'; - $n = select_notifs(false, S::i('uid'), S::v('watch_last'), false); - $_SESSION['notifs'] = $n->numRows(); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/admin.php b/modules/admin.php deleted file mode 100644 index b4c8137..0000000 --- a/modules/admin.php +++ /dev/null @@ -1,1254 +0,0 @@ - $this->make_hook('phpinfo', AUTH_MDP, 'admin'), - 'admin' => $this->make_hook('default', AUTH_MDP, 'admin'), - 'admin/ax-xorg' => $this->make_hook('ax_xorg', AUTH_MDP, 'admin'), - 'admin/dead-but-active' => $this->make_hook('dead_but_active', AUTH_MDP, 'admin'), - 'admin/deaths' => $this->make_hook('deaths', AUTH_MDP, 'admin'), - 'admin/downtime' => $this->make_hook('downtime', AUTH_MDP, 'admin'), - 'admin/homonyms' => $this->make_hook('homonyms', AUTH_MDP, 'admin'), - 'admin/logger' => $this->make_hook('logger', AUTH_MDP, 'admin'), - 'admin/logger/actions' => $this->make_hook('logger_actions', AUTH_MDP, 'admin'), - 'admin/postfix/blacklist' => $this->make_hook('postfix_blacklist', AUTH_MDP, 'admin'), - 'admin/postfix/delayed' => $this->make_hook('postfix_delayed', AUTH_MDP, 'admin'), - 'admin/postfix/regexp_bounces' => $this->make_hook('postfix_regexpsbounces', AUTH_MDP, 'admin'), - 'admin/postfix/whitelist' => $this->make_hook('postfix_whitelist', AUTH_MDP, 'admin'), - 'admin/mx/broken' => $this->make_hook('mx_broken', AUTH_MDP, 'admin'), - 'admin/skins' => $this->make_hook('skins', AUTH_MDP, 'admin'), - 'admin/synchro_ax' => $this->make_hook('synchro_ax', AUTH_MDP, 'admin'), - 'admin/user' => $this->make_hook('user', AUTH_MDP, 'admin'), - 'admin/promo' => $this->make_hook('promo', AUTH_MDP, 'admin'), - 'admin/validate' => $this->make_hook('validate', AUTH_MDP, 'admin'), - 'admin/validate/answers' => $this->make_hook('validate_answers', AUTH_MDP, 'admin'), - 'admin/wiki' => $this->make_hook('wiki', AUTH_MDP, 'admin'), - 'admin/ipwatch' => $this->make_hook('ipwatch', AUTH_MDP, 'admin'), - 'admin/icons' => $this->make_hook('icons', AUTH_MDP, 'admin'), - ); - } - - function handler_phpinfo(&$page) - { - phpinfo(); - exit; - } - - function handler_default(&$page) - { - $page->changeTpl('admin/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration'); - } - - function handler_postfix_delayed(&$page) - { - $page->changeTpl('admin/postfix_delayed.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Postfix : Retardés'); - - if (Env::has('del')) { - $crc = Env::v('crc'); - XDB::execute("UPDATE postfix_mailseen SET release = 'del' WHERE crc = {?}", $crc); - $page->trigSuccess($crc." verra tous ses mails supprimés !"); - } elseif (Env::has('ok')) { - $crc = Env::v('crc'); - XDB::execute("UPDATE postfix_mailseen SET release = 'ok' WHERE crc = {?}", $crc); - $page->trigSuccess($crc." a le droit de passer !"); - } - - $sql = XDB::iterator( - "SELECT crc, nb, update_time, create_time, - FIND_IN_SET('del', release) AS del, - FIND_IN_SET('ok', release) AS ok - FROM postfix_mailseen - WHERE nb >= 30 - ORDER BY release != ''"); - - $page->assign_by_ref('mails', $sql); - } - - function handler_postfix_regexpsbounces(&$page, $new = null) { - $page->changeTpl('admin/emails_bounces_re.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Postfix : Regexps Bounces'); - $page->assign('new', $new); - - if (Post::has('submit')) { - foreach (Env::v('lvl') as $id=>$val) { - XDB::query( - "REPLACE INTO emails_bounces_re (id,pos,lvl,re,text) VALUES ({?}, {?}, {?}, {?}, {?})", - $id, $_POST['pos'][$id], $_POST['lvl'][$id], $_POST['re'][$id], $_POST['text'][$id] - ); - } - } - - $page->assign('bre', XDB::iterator("SELECT * FROM emails_bounces_re ORDER BY pos")); - } - - // {{{ logger view - - /** Retrieves the available days for a given year and month. - * Obtain a list of days of the given month in the given year - * that are within the range of dates that we have log entries for. - * - * @param integer year - * @param integer month - * @return array days in that month we have log entries covering. - * @private - */ - function _getDays($year, $month) - { - // give a 'no filter' option - $months[0] = "----"; - - if ($year && $month) { - $day_max = Array(-1, 31, checkdate(2, 29, $year) ? 29 : 28 , 31, - 30, 31, 30, 31, 31, 30, 31, 30, 31); - $res = XDB::query("SELECT YEAR (MAX(start)), YEAR (MIN(start)), - MONTH(MAX(start)), MONTH(MIN(start)), - DAYOFMONTH(MAX(start)), - DAYOFMONTH(MIN(start)) - FROM logger.sessions"); - list($ymax, $ymin, $mmax, $mmin, $dmax, $dmin) = $res->fetchOneRow(); - - if (($year < $ymin) || ($year == $ymin && $month < $mmin)) { - return array(); - } - - if (($year > $ymax) || ($year == $ymax && $month > $mmax)) { - return array(); - } - - $min = ($year==$ymin && $month==$mmin) ? intval($dmin) : 1; - $max = ($year==$ymax && $month==$mmax) ? intval($dmax) : $day_max[$month]; - - for($i = $min; $i<=$max; $i++) { - $days[$i] = $i; - } - } - return $days; - } - - - /** Retrieves the available months for a given year. - * Obtains a list of month numbers that are within the timeframe that - * we have log entries for. - * - * @param integer year - * @return array List of month numbers we have log info for. - * @private - */ - function _getMonths($year) - { - // give a 'no filter' option - $months[0] = "----"; - - if ($year) { - $res = XDB::query("SELECT YEAR (MAX(start)), YEAR (MIN(start)), - MONTH(MAX(start)), MONTH(MIN(start)) - FROM logger.sessions"); - list($ymax, $ymin, $mmax, $mmin) = $res->fetchOneRow(); - - if (($year < $ymin) || ($year > $ymax)) { - return array(); - } - - $min = $year == $ymin ? intval($mmin) : 1; - $max = $year == $ymax ? intval($mmax) : 12; - - for($i = $min; $i<=$max; $i++) { - $months[$i] = $i; - } - } - return $months; - } - - - /** Retrieves the available years. - * Obtains a list of years that we have log entries covering. - * - * @return array years we have log entries for. - * @private - */ - function _getYears() - { - // give a 'no filter' option - $years[0] = "----"; - - // retrieve available years - $res = XDB::query("select YEAR(MAX(start)), YEAR(MIN(start)) FROM logger.sessions"); - list($max, $min) = $res->fetchOneRow(); - - for($i = intval($min); $i<=$max; $i++) { - $years[$i] = $i; - } - return $years; - } - - - /** Make a where clause to get a user's sessions. - * Prepare the where clause request that will retrieve the sessions. - * - * @param $year INTEGER Only get log entries made during the given year. - * @param $month INTEGER Only get log entries made during the given month. - * @param $day INTEGER Only get log entries made during the given day. - * @param $uid INTEGER Only get log entries referring to the given user ID. - * - * @return STRING the WHERE clause of a query, including the 'WHERE' keyword - * @private - */ - function _makeWhere($year, $month, $day, $uid) - { - // start constructing the "where" clause - $where = array(); - - if ($uid) - array_push($where, "uid='$uid'"); - - // we were given at least a year - if ($year) { - if ($day) { - $dmin = mktime(0, 0, 0, $month, $day, $year); - $dmax = mktime(0, 0, 0, $month, $day+1, $year); - } elseif ($month) { - $dmin = mktime(0, 0, 0, $month, 1, $year); - $dmax = mktime(0, 0, 0, $month+1, 1, $year); - } else { - $dmin = mktime(0, 0, 0, 1, 1, $year); - $dmax = mktime(0, 0, 0, 1, 1, $year+1); - } - $where[] = "start >= " . date("Ymd000000", $dmin); - $where[] = "start < " . date("Ymd000000", $dmax); - } - - if (!empty($where)) { - return ' WHERE ' . implode($where, " AND "); - } else { - return ''; - } - // WE know it's totally reversed, so better use array_reverse than a SORT BY start DESC - } - - // }}} - - function handler_logger(&$page, $action = null, $arg = null) { - if ($action == 'session') { - - // we are viewing a session - $res = XDB::query("SELECT ls.*, a.alias AS username, sa.alias AS suer - FROM logger.sessions AS ls - LEFT JOIN aliases AS a ON (a.id = ls.uid AND a.type='a_vie') - LEFT JOIN aliases AS sa ON (sa.id = ls.suid AND sa.type='a_vie') - WHERE ls.id = {?}", $arg); - - $page->assign('session', $a = $res->fetchOneAssoc()); - - $res = XDB::iterator('SELECT a.text, e.data, e.stamp - FROM logger.events AS e - LEFT JOIN logger.actions AS a ON e.action=a.id - WHERE e.session={?}', $arg); - while ($myarr = $res->next()) { - $page->append('events', $myarr); - } - - } else { - $loguser = $action == 'user' ? $arg : Env::v('loguser'); - - $res = XDB::query('SELECT id FROM aliases WHERE alias={?}', - $loguser); - $loguid = $res->fetchOneCell(); - - if ($loguid) { - $year = Env::i('year'); - $month = Env::i('month'); - $day = Env::i('day'); - } else { - $year = Env::i('year', intval(date('Y'))); - $month = Env::i('month', intval(date('m'))); - $day = Env::i('day', intval(date('d'))); - } - - if (!$year) - $month = 0; - if (!$month) - $day = 0; - - // smarty assignments - // retrieve available years - $page->assign('years', $this->_getYears()); - $page->assign('year', $year); - - // retrieve available months for the current year - $page->assign('months', $this->_getMonths($year)); - $page->assign('month', $month); - - // retrieve available days for the current year and month - $page->assign('days', $this->_getDays($year, $month)); - $page->assign('day', $day); - - $page->assign('loguser', $loguser); - // smarty assignments - - if ($loguid || $year) { - - // get the requested sessions - $where = $this->_makeWhere($year, $month, $day, $loguid); - $select = "SELECT s.id, s.start, s.uid, - a.alias as username - FROM logger.sessions AS s - LEFT JOIN aliases AS a ON (a.id = s.uid AND a.type='a_vie') - $where - ORDER BY start DESC"; - $res = XDB::iterator($select); - - $sessions = array(); - while ($mysess = $res->next()) { - $mysess['events'] = array(); - $sessions[$mysess['id']] = $mysess; - } - array_reverse($sessions); - - // attach events - $sql = "SELECT s.id, a.text - FROM logger.sessions AS s - LEFT JOIN logger.events AS e ON(e.session=s.id) - INNER JOIN logger.actions AS a ON(a.id=e.action) - $where"; - - $res = XDB::iterator($sql); - while ($event = $res->next()) { - array_push($sessions[$event['id']]['events'], $event['text']); - } - $page->assign_by_ref('sessions', $sessions); - } else { - $page->assign('msg_nofilters', "Sélectionner une annuée et/ou un utilisateur"); - } - } - - $page->changeTpl('admin/logger-view.tpl'); - - $page->assign('pl_title','Polytechnique.org - Administration - Logs des sessions'); - } - - function handler_user(&$page, $login = false) - { - global $globals; - $page->changeTpl('admin/utilisateurs.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Edit/Su/Log'); - require_once("emails.inc.php"); - require_once("user.func.inc.php"); - - if (S::has('suid')) { - $page->kill("Déjà en SUID !!!"); - } - - if (Env::has('user_id')) { - $login = get_user_forlife(Env::i('user_id')); - if (empty($login)) { - $login = Env::i('user_id'); - } - } elseif (Env::has('login')) { - $login = get_user_forlife(Env::v('login')); - } - - if(Env::has('logs_button') && $login) { - pl_redirect("admin/logger?loguser=$login&year=".date('Y')."&month=".date('m')); - } - - if (Env::has('ax_button') && $login) { - pl_redirect("admin/synchro_ax/$login"); - } - - if(Env::has('suid_button') && $login) { - S::logger()->log("suid_start", "login by ".S::v('forlife')); - $r = XDB::query("SELECT id - FROM aliases - WHERE alias={?}", $login); - if($uid = $r->fetchOneCell()) { - if (!Platal::session()->startSUID($uid)) { - $page->trigError('Impossible d\'effectuer un SUID sur ' . $uid); - } else { - $page->kill("coucou"); - pl_redirect(""); - } - } - } - - if ($login) { - if (is_numeric($login)) { - $r = XDB::query("SELECT *, a.alias AS forlife, - FIND_IN_SET('watch', u.flags) AS watch, FIND_IN_SET('femme', u.flags) AS sexe, - (year(naissance) > promo - 15 or year(naissance) < promo - 25) AS naiss_err - FROM auth_user_md5 AS u - LEFT JOIN aliases AS a ON (a.id = u.user_id AND type= 'a_vie') - WHERE u.user_id = {?}", $login); - } else { - $r = XDB::query("SELECT *, a.alias AS forlife, - FIND_IN_SET('watch', u.flags) AS watch, FIND_IN_SET('femme', u.flags) AS sexe, - (year(naissance) > promo - 15 or year(naissance) < promo - 25) AS naiss_err - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( a.id = u.user_id AND a.alias={?} AND type!='homonyme' )", $login); - } - $mr = $r->fetchOneAssoc(); - - // Checks the user has a forlife, as non-registered user can't have redirections. - if ($mr['forlife']) { - $redirect = new Redirect($mr['user_id']); - } - - // Check if there was a submission - foreach($_POST as $key => $val) { - S::assert_xsrf_token(); - - switch ($key) { - case "add_fwd": - $email = trim(Env::v('email')); - if (!isvalid_email_redirection($email)) { - $page->trigError("Email non valide: $email"); - } else { - $redirect->add_email($email); - $page->trigSuccess("Ajout de $email effectué"); - } - break; - - case "del_fwd": - if (!empty($val)) { - $redirect->delete_email($val); - } - break; - - case "del_alias": - if (!empty($val)) { - XDB::execute("DELETE FROM aliases - WHERE id={?} AND alias={?} - AND type!='a_vie' AND type!='homonyme'", $mr['user_id'], $val); - XDB::execute("UPDATE emails - SET rewrite = '' - WHERE uid = {?} AND rewrite LIKE CONCAT({?}, '@%')", - $mr['user_id'], $val); - fix_bestalias($mr['user_id']); - $page->trigSuccess($val." a été supprimé"); - } - break; - case "activate_fwd": - if (!empty($val)) { - $redirect->modify_one_email($val, true); - } - break; - case "deactivate_fwd": - if (!empty($val)) { - $redirect->modify_one_email($val, false); - } - break; - case "disable_fwd": - $redirect->disable(); - break; - case "enable_fwd": - $redirect->enable(); - break; - case "clean_fwd": - if (!empty($val)) { - $redirect->clean_errors($val); - } - break; - case "add_alias": - global $globals; - $alias = trim(Env::v('email')); - if (strpos($alias, '@') !== false) { - list($alias, $domain) = explode('@', $alias); - } else { - $domain = $globals->mail->domain; - } - if (!preg_match('/[-a-z0-9\.]+/s', $alias)) { - $page->trigError("'$alias' n'est pas un alias valide"); - } - if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) { - $req = new AliasReq($mr['user_id'], $alias, 'Admin request', false); - if ($req->commit()) { - $page->trigSuccess("Nouvel alias '$alias@$domain' attribué"); - } else { - $page->trigError("Impossible d'ajouter l'alias '$alias@$domain', il est probablement déjà attribué"); - } - } elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) { - if (XDB::execute("INSERT INTO aliases (id,alias,type) VALUES ({?}, {?}, 'alias')", - $mr['user_id'], $alias)) { - $page->trigSuccess("Nouvel alias '$alias' ajouté"); - } else { - $page->trigError("Impossible d'ajouter l'alias '$alias', il est probablement déjà attribué"); - } - } else { - $page->trigError("Le domaine '$domain' n'est pas valide"); - } - break; - - case "best": - // 'bestalias' is the first bit of the set : 1 - // 255 is the max for flags (8 sets max) - XDB::execute("UPDATE aliases SET flags= flags & (255 - 1) WHERE id={?}", $mr['user_id']); - XDB::execute("UPDATE aliases - SET flags= flags | 1 - WHERE id={?} AND alias={?}", $mr['user_id'], $val); - break; - - - // Editer un profil - case "u_edit": - require_once('secure_hash.inc.php'); - $pass_encrypted = Env::v('newpass_clair') != "********" ? hash_encrypt(Env::v('newpass_clair')) : Env::v('passw'); - $naiss = Env::v('naissanceN'); - $deces = Env::v('decesN'); - $perms = Env::v('permsN'); - $prenm = Env::v('prenomN'); - $nom = Env::v('nomN'); - $nomusage = Env::v('nomusageN'); - $promo = Env::i('promoN'); - $sexe = Env::v('sexeN'); - $comm = trim(Env::v('commentN')); - $watch = Env::v('watchN'); - $flags = ''; - if ($sexe) { - $flags = 'femme'; - } - if ($watch) { - if ($flags) { - $flags .= ','; - } - $flags .= 'watch'; - } - - if ($watch && !$comm) { - $page->trigError("Il est nécessaire de mettre un commentaire pour surveiller un compte"); - break; - } - - $watch = 'SELECT naissance, deces, password, perms, nom_usage, - prenom, nom, flags, promo, comment - FROM auth_user_md5 - WHERE user_id = ' . $mr['user_id']; - $res = XDB::query($watch); - $old_fields = $res->fetchOneAssoc(); - $query = "UPDATE auth_user_md5 SET - naissance = '$naiss', - deces = '$deces', - password = '$pass_encrypted', - perms = '$perms', - prenom = '".addslashes($prenm)."', - nom = '".addslashes($nom)."', - nom_usage = '".addslashes($nomusage)."', - flags = '$flags', - promo = $promo, - comment = '".addslashes($comm)."' - WHERE user_id = '{$mr['user_id']}'"; - if ($perms == 'disabled' && $old_fields['perms'] != 'disabled') { - // A user has been banned ==> ensure his php session has been killed - // This solution is ugly and overkill, but, it should be efficient. - kill_sessions(); - } - if (XDB::execute($query)) { - user_reindex($mr['user_id']); - - $res = XDB::query($watch); - $new_fields = $res->fetchOneAssoc(); - - $mailer = new PlMailer("admin/useredit.mail.tpl"); - $mailer->assign("admin", S::v('forlife')); - $mailer->assign("user", $mr['forlife']); - $mailer->assign('old', $old_fields); - $mailer->assign('new', $new_fields); - $mailer->send(); - - // update number of subscribers (perms or deceased may have changed) - update_NbIns(); - - $page->trigSuccess("updaté correctement."); - } - if (Env::v('nomusageN') != $mr['nom_usage']) { - set_new_usage($mr['user_id'], Env::v('nomusageN'), make_username(Env::v('prenomN'), Env::v('nomusageN'))); - } - if (Env::v('decesN') != $mr['deces']) { - require_once 'notifs.inc.php'; - register_watch_op($mr['user_id'], WATCH_DEATH, $mr['deces']); - user_clear_all_subs($mr['user_id'], false); - } - $r = XDB::query("SELECT *, a.alias AS forlife, - FIND_IN_SET('watch', u.flags) AS watch, FIND_IN_SET('femme', u.flags) AS sexe - FROM auth_user_md5 AS u - LEFT JOIN aliases AS a ON (a.id = u.user_id AND type= 'a_vie') - WHERE u.user_id = {?}", $mr['user_id']); - $mr = $r->fetchOneAssoc(); - - // If GoogleApps is enabled, the user did choose to use synchronized passwords, - // and the password was changed, updates the Google Apps password as well. - if ($globals->mailstorage->googleapps_domain && Env::v('newpass_clair') != "********") { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount($mr['user_id'], $mr['forlife']); - if ($account->active() && $account->sync_password) { - $account->set_password($pass_encrypted); - } - } - - // If GoogleApps is enabled, and the user is now disabled, disables the Google Apps account as well. - if ($globals->mailstorage->googleapps_domain && - $new_fields['perms'] == 'disabled' && - $new_fields['perms'] != $old_fields['perms']) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount($mr['user_id'], $mr['forlife']); - $account->suspend(); - } - break; - - // DELETE FROM auth_user_md5 - case "u_kill": - user_clear_all_subs($mr['user_id']); - // update number of subscribers (perms or deceased may have changed) - update_NbIns(); - $page->trigSuccess("'{$mr['user_id']}' a été désinscrit !"); - $mailer = new PlMailer("admin/useredit.mail.tpl"); - $mailer->assign("admin", S::v('forlife')); - $mailer->assign("user", $mr['forlife']); - $mailer->assign("deletion", true); - $mailer->send(); - break; - - case "b_edit": - XDB::execute("DELETE FROM forums.innd WHERE uid = {?}", $mr['user_id']); - if (Env::v('write_perm') != "" || Env::v('read_perm') != "" || Env::v('commentaire') != "" ) { - XDB::execute("INSERT INTO forums.innd - SET ipmin = '0', - ipmax = '4294967295', - write_perm = {?}, - read_perm = {?}, - comment = {?}, - priority = '200', - uid = {?}", - Env::v('write_perm'), Env::v('read_perm'), Env::v('comment'), $mr['user_id']); - } - break; - } - } - - $res = XDB::query("SELECT start, host - FROM logger.sessions - WHERE uid={?} AND suid=0 - ORDER BY start DESC - LIMIT 1", $mr['user_id']); - list($lastlogin,$host) = $res->fetchOneRow(); - $page->assign('lastlogin', $lastlogin); - $page->assign('host', $host); - - $res = XDB::iterator("SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING(vid) - WHERE type = 'user' AND redirect LIKE '" . $mr['forlife'] . "@%'"); - $page->assign('virtuals', $res); - - $page->assign('aliases', XDB::iterator( - "SELECT alias, type='a_vie' AS for_life,FIND_IN_SET('bestalias',flags) AS best,expire - FROM aliases - WHERE id = {?} AND type!='homonyme' - ORDER BY type!= 'a_vie'", $mr["user_id"])); - if ($mr['perms'] != 'pending' && isset($redirect)) { - $page->assign('emails', $redirect->emails); - } - - $page->assign('mr',$mr); - - // Bans forums - $res = XDB::query("SELECT write_perm, read_perm, comment - FROM forums.innd - WHERE uid = {?}", $mr['user_id']); - $bans = $res->fetchOneAssoc(); - $page->assign('bans', $bans); - } - } - - function getMatricule($line, $key) - { - $mat = $line['matricule']; - $year = intval(substr($mat, 0, 3)); - $rang = intval(substr($mat, 3, 3)); - if ($year > 200) { $year /= 10; }; - if ($year < 96) { - return null; - } else { - return sprintf('%04u%04u', 1900+$year, $rang); - } - } - - function handler_promo(&$page, $action = null, $promo = null) - { - if (Env::has('promo')) { - if(Env::i('promo') > 1900 && Env::i('promo') < 2050) { - $action = Env::v('valid_promo') == 'Ajouter des membres' ? 'add' : 'ax'; - pl_redirect('admin/promo/' . $action . '/' . Env::i('promo')); - } else { - $page->trigError('Promo non valide'); - } - } - - $page->changeTpl('admin/promo.tpl'); - if ($promo > 1900 && $promo < 2050 && ($action == 'add' || $action == 'ax')) { - $page->assign('promo', $promo); - } else { - return; - } - - $importer = new CSVImporter('auth_user_md5', 'matricule'); - $importer->registerFunction('matricule', 'matricle Ecole vers X.org', array($this, 'getMatricule')); - switch ($action) { - case 'add': - $fields = array('nom', 'nom_ini', 'prenom', 'naissance_ini', - 'prenom_ini', 'promo', 'promo_sortie', 'flags', - 'matricule', 'matricule_ax', 'perms'); - $importer->forceValue('promo', $promo); - $importer->forceValue('promo_sortie', $promo + 3); - break; - case 'ax': - $fields = array('matricule', 'matricule_ax'); - break; - } - $importer->apply($page, "admin/promo/$action/$promo", $fields); - } - - function handler_homonyms(&$page, $op = 'list', $target = null) { - $page->changeTpl('admin/homonymes.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Homonymes'); - require_once("homonymes.inc.php"); - - if ($target) { - if (! list($prenom,$nom,$forlife,$loginbis) = select_if_homonyme($target)) { - $target=0; - } else { - $page->assign('nom',$nom); - $page->assign('prenom',$prenom); - $page->assign('forlife',$forlife); - $page->assign('loginbis',$loginbis); - } - } - - $page->assign('op', $op); - $page->assign('target', $target); - - // on a un $target valide, on prepare les mails - if ($target) { - // on examine l'op a effectuer - switch ($op) { - case 'mail': - S::assert_xsrf_token(); - - send_warning_homonyme($prenom, $nom, $forlife, $loginbis); - switch_bestalias($target, $loginbis); - $op = 'list'; - break; - - case 'correct': - S::assert_xsrf_token(); - - switch_bestalias($target, $loginbis); - XDB::execute("UPDATE aliases SET type='homonyme',expire=NOW() WHERE alias={?}", $loginbis); - XDB::execute("REPLACE INTO homonymes (homonyme_id,user_id) VALUES({?},{?})", $target, $target); - send_robot_homonyme($prenom, $nom, $forlife, $loginbis); - $op = 'list'; - break; - } - } - - if ($op == 'list') { - $res = XDB::iterator( - "SELECT a.alias AS homonyme,s.id AS user_id,s.alias AS forlife, - promo,prenom,nom, - IF(h.homonyme_id=s.id, a.expire, NULL) AS expire, - IF(h.homonyme_id=s.id, a.type, NULL) AS type - FROM aliases AS a - LEFT JOIN homonymes AS h ON (h.homonyme_id = a.id) - INNER JOIN aliases AS s ON (s.id = h.user_id AND s.type='a_vie') - INNER JOIN auth_user_md5 AS u ON (s.id=u.user_id) - WHERE a.type='homonyme' OR a.expire!='' - ORDER BY a.alias,promo"); - $hnymes = Array(); - while ($tab = $res->next()) { - $hnymes[$tab['homonyme']][] = $tab; - } - $page->assign_by_ref('hnymes',$hnymes); - } - } - - function handler_ax_xorg(&$page) { - $page->changeTpl('admin/ax-xorg.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - AX/X.org'); - - // liste des différences - $res = XDB::query( - 'SELECT u.promo,u.nom AS nom,u.prenom AS prenom,ia.nom AS nomax,ia.prenom AS prenomax,u.matricule AS mat,ia.matricule_ax AS matax - FROM auth_user_md5 AS u - INNER JOIN identification_ax AS ia ON u.matricule_ax = ia.matricule_ax - WHERE (SOUNDEX(u.nom) != SOUNDEX(ia.nom) AND SOUNDEX(CONCAT(ia.particule,u.nom)) != SOUNDEX(ia.nom) - AND SOUNDEX(u.nom) != SOUNDEX(ia.nom_patro) AND SOUNDEX(CONCAT(ia.particule,u.nom)) != SOUNDEX(ia.nom_patro)) - OR u.prenom != ia.prenom OR (u.promo != ia.promo AND u.promo != ia.promo+1 AND u.promo != ia.promo-1) - ORDER BY u.promo,u.nom,u.prenom'); - $page->assign('diffs', $res->fetchAllAssoc()); - - // gens à l'ax mais pas chez nous - $res = XDB::query( - 'SELECT ia.promo,ia.nom,ia.nom_patro,ia.prenom - FROM identification_ax as ia - LEFT JOIN auth_user_md5 AS u ON u.matricule_ax = ia.matricule_ax - WHERE u.nom IS NULL'); - $page->assign('mank', $res->fetchAllAssoc()); - - // gens chez nous et pas à l'ax - $res = XDB::query('SELECT promo,nom,prenom FROM auth_user_md5 WHERE matricule_ax IS NULL'); - $page->assign('plus', $res->fetchAllAssoc()); - } - - function handler_deaths(&$page, $promo = 0, $validate = false) { - $page->changeTpl('admin/deces_promo.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Deces'); - - if (!$promo) - $promo = Env::i('promo'); - if (Env::has('sub10')) $promo -= 10; - if (Env::has('sub01')) $promo -= 1; - if (Env::has('add01')) $promo += 1; - if (Env::has('add10')) $promo += 10; - - $page->assign('promo',$promo); - - if ($validate) { - S::assert_xsrf_token(); - - $new_deces = array(); - $res = XDB::iterRow("SELECT user_id,matricule,nom,prenom,deces FROM auth_user_md5 WHERE promo = {?}", $promo); - while (list($uid,$mat,$nom,$prenom,$deces) = $res->next()) { - $val = Env::v($mat); - if($val == $deces || empty($val)) { - continue; - } - - XDB::execute('UPDATE auth_user_md5 SET deces={?} WHERE matricule = {?}', $val, $mat); - $new_deces[] = array('name' => "$prenom $nom", 'date' => "$val"); - if($deces == '0000-00-00' || empty($deces)) { - require_once('notifs.inc.php'); - register_watch_op($uid, WATCH_DEATH, $val); - require_once('user.func.inc.php'); - user_clear_all_subs($uid, false); // by default, dead ppl do not loose their email - } - } - $page->assign('new_deces',$new_deces); - } - - $res = XDB::iterator('SELECT matricule, nom, prenom, deces FROM auth_user_md5 WHERE promo = {?} ORDER BY nom,prenom', $promo); - $page->assign('decedes', $res); - } - - function handler_dead_but_active(&$page) { - $page->changeTpl('admin/dead_but_active.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Décédés'); - - $res = XDB::iterator( - "SELECT u.promo, u.nom, u.prenom, u.deces, u.matricule_ax, a.alias, DATE(MAX(s.start)) AS last - FROM auth_user_md5 AS u - LEFT JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') - LEFT JOIN logger.sessions AS s ON (s.uid = u.user_id AND suid = 0) - WHERE perms IN ('admin', 'user') AND deces <> 0 - GROUP BY u.user_id - ORDER BY u.promo, u.nom"); - $page->assign('dead', $res); - } - - function handler_synchro_ax(&$page, $user = null, $action = null) { - $page->changeTpl('admin/synchro_ax.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Synchro AX'); - - require_once('synchro_ax.inc.php'); - - if (is_ax_key_missing()) { - $page->assign('no_private_key', true); - $page->run(); - } - - require_once('user.func.inc.php'); - - if ($user) - $login = get_user_forlife($user); - - if (Env::has('user')) { - $login = get_user_forlife(Env::v('user')); - if ($login === false) { - return; - } - } - - if (Env::has('mat')) { - $res = XDB::query( - "SELECT alias - FROM aliases AS a - INNER JOIN auth_user_md5 AS u ON (a.id=u.user_id AND a.type='a_vie') - WHERE matricule={?}", Env::i('mat')); - $login = $res->fetchOneCell(); - } - - if ($login) { - if ($action == 'import') { - ax_synchronize($login, S::v('uid')); - } - // get details from user, but looking only info that can be seen by ax - $user = get_user_details($login, S::v('uid'), 'ax'); - $userax= get_user_ax($user['matricule_ax']); - require_once 'profil.func.inc.php'; - $diff = diff_user_details($userax, $user, 'ax'); - - $page->assign('x', $user); - $page->assign('diff', $diff); - } - } - - function handler_validate(&$page, $action = 'list', $id = null) - { - $page->changeTpl('admin/valider.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Valider une demande'); - $page->addCssLink('nl.css'); - $page->addJsLink('ajax.js'); - require_once("validations.inc.php"); - - - if ($action == 'edit' and !is_null($id)) { - $page->assign('preview_id', $id); - } - - if(Env::has('uid') && Env::has('type') && Env::has('stamp')) { - S::assert_xsrf_token(); - - $req = Validate::get_typed_request(Env::v('uid'), Env::v('type'), Env::v('stamp')); - $req->handle_formu(); - } - - $r = XDB::iterator('SHOW COLUMNS FROM requests_answers'); - while (($a = $r->next()) && $a['Field'] != 'category'); - $page->assign('categories', $categories = explode(',', str_replace("'", '', substr($a['Type'], 5, -1)))); - - $hidden = array(); - $res = XDB::query('SELECT hidden_requests FROM requests_hidden WHERE user_id = {?}', S::v('uid')); - $hide_requests = $res->fetchOneCell(); - if (Post::has('hide')) { - $hide = array(); - foreach ($categories as $cat) - if (!Post::v($cat)) { - $hidden[$cat] = 1; - $hide[] = $cat; - } - $hide_requests = join(',', $hide); - XDB::query('REPLACE INTO requests_hidden (user_id, hidden_requests) VALUES({?}, {?})', - S::v('uid'), $hide_requests); - } elseif ($hide_requests) { - foreach (explode(',', $hide_requests) as $hide_type) - $hidden[$hide_type] = true; - } - $page->assign('hide_requests', $hidden); - - // Update the count of item to validate here... useful in development configuration - // where several copies of the site use the same DB, but not the same "dynamic configuration" - update_NbValid(); - $page->assign('vit', new ValidateIterator()); - } - - function handler_validate_answers(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Réponses automatiques de validation'); - $page->assign('title', 'Gestion des réponses automatiques'); - $table_editor = new PLTableEditor('admin/validate/answers','requests_answers','id'); - $table_editor->describe('category','catégorie',true); - $table_editor->describe('title','titre',true); - $table_editor->describe('answer','texte',false); - $table_editor->apply($page, $action, $id); - } - function handler_skins(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Skins'); - $page->assign('title', 'Gestion des skins'); - $table_editor = new PLTableEditor('admin/skins','skins','id'); - $table_editor->describe('name','nom',true); - $table_editor->describe('skin_tpl','nom du template',true); - $table_editor->describe('auteur','auteur',false); - $table_editor->describe('comment','commentaire',true); - $table_editor->describe('date','date',false); - $table_editor->describe('ext','extension du screenshot',false); - $table_editor->apply($page, $action, $id); - } - - function handler_postfix_blacklist(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Postfix : Blacklist'); - $page->assign('title', 'Blacklist de postfix'); - $table_editor = new PLTableEditor('admin/postfix/blacklist','postfix_blacklist','email', true); - $table_editor->describe('reject_text','Texte de rejet',true); - $table_editor->describe('email','email',true); - $table_editor->apply($page, $action, $id); - } - function handler_postfix_whitelist(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Postfix : Whitelist'); - $page->assign('title', 'Whitelist de postfix'); - $table_editor = new PLTableEditor('admin/postfix/whitelist','postfix_whitelist','email', true); - $table_editor->describe('email','email',true); - $table_editor->apply($page, $action, $id); - } - function handler_mx_broken(&$page, $action = 'list', $id = null) { - $page->assign('pl_title', 'Polytechnique.org - Administration - MX Défaillants'); - $page->assign('title', 'MX Défaillant'); - $table_editor = new PLTableEditor('admin/mx/broken', 'mx_watch', 'host', true); - $table_editor->describe('host', 'Masque', true); - $table_editor->describe('state', 'Niveau', true); - $table_editor->describe('text', 'Description du problème', false); - $table_editor->apply($page, $action, $id); - } - function handler_logger_actions(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Actions'); - $page->assign('title', 'Gestion des actions de logger'); - $table_editor = new PLTableEditor('admin/logger/actions','logger.actions','id'); - $table_editor->describe('text','intitulé',true); - $table_editor->describe('description','description',true); - $table_editor->apply($page, $action, $id); - } - function handler_downtime(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Coupures'); - $page->assign('title', 'Gestion des coupures'); - $table_editor = new PLTableEditor('admin/downtime','coupures','id'); - $table_editor->describe('debut','date',true); - $table_editor->describe('duree','durée',false); - $table_editor->describe('resume','résumé',true); - $table_editor->describe('services','services affectés',true); - $table_editor->describe('description','description',false); - $table_editor->apply($page, $action, $id); - } - - function handler_wiki(&$page, $action='list', $wikipage='', $wikipage2='') - { - require_once 'wiki.inc.php'; - - if (S::v('core_rss_hash')) { - $page->setRssLink('Changement Récents', - '/Site/AllRecentChanges?action=rss&user=' . S::v('forlife') . '&hash=' . S::v('core_rss_hash')); - } - - // update wiki perms - if ($action == 'update') { - S::assert_xsrf_token(); - - $perms_read = Post::v('read'); - $perms_edot = Post::v('edit'); - if ($perms_read || $perms_edit) { - foreach ($_POST as $wiki_page => $val) if ($val == 'on') { - $wiki_page = str_replace('_', '/', $wiki_page); - if (!$perms_read || !$perms_edit) - list($perms0, $perms1) = wiki_get_perms($wiki_page); - if ($perms_read) - $perms0 = $perms_read; - if ($perms_edit) - $perms1 = $perms_edit; - wiki_set_perms($wiki_page, $perms0, $perms1); - } - } - } - - if ($action == 'delete' && $wikipage != '') { - S::assert_xsrf_token(); - - if (wiki_delete_page($wikipage)) { - $page->trigSuccess("La page ".$wikipage." a été supprimée."); - } else { - $page->trigError("Impossible de supprimer la page ".$wikipage."."); - } - } - - if ($action == 'rename' && $wikipage != '' && $wikipage2 != '' && $wikipage != $wikipage2) { - S::assert_xsrf_token(); - - if ($changedLinks = wiki_rename_page($wikipage, $wikipage2)) { - $s = 'La page '.$wikipage.' a été déplacée en '.$wikipage2.'.'; - if (is_numeric($changedLinks)) { - $s .= $changedLinks.' lien'.(($changedLinks>1)?'s ont été modifiés.':' a été modifié.'); - } - $page->trigSuccess($s); - } else { - $page->trigError("Impossible de déplacer la page ".$wikipage); - } - } - - $perms = wiki_perms_options(); - - // list wiki pages and their perms - $wiki_pages = array(); - $dir = wiki_work_dir(); - if (is_dir($dir)) { - if ($dh = opendir($dir)) { - while (($file = readdir($dh)) !== false) if (substr($file,0,1) >= 'A' && substr($file,0,1) <= 'Z') { - list($read,$edit) = wiki_get_perms($file); - $wiki_pages[$file] = array('read' => $perms[$read], 'edit' => $perms[$edit]); - if (is_file($dir . '/cache_' . wiki_filename($file) . '.tpl')) { - $wiki_pages[$file]['cached'] = true; - } - } - closedir($dh); - } - } - ksort($wiki_pages); - $wiki_tree = array(); - foreach ($wiki_pages as $file => $desc) { - list($cat, $name) = explode('.', $file); - if (!isset($wiki_tree[$cat])) { - $wiki_tree[$cat] = array(); - } - $wiki_tree[$cat][$name] = $desc; - } - - $page->changeTpl('admin/wiki.tpl'); - $page->addJsLink('jquery.js'); - $page->assign('wiki_pages', $wiki_tree); - $page->assign('perms_opts', $perms); - } - - function handler_ipwatch(&$page, $action = 'list', $ip = null) - { - $page->changeTpl('admin/ipwatcher.tpl'); - - $states = array('safe' => 'Ne pas surveiller', - 'unsafe' => 'Surveiller les inscriptions', - 'dangerous' => 'Surveiller tous les accès', - 'ban' => 'Bannir cette adresse'); - $page->assign('states', $states); - - switch (Post::v('action')) { - case 'create': - if (trim(Post::v('ipN')) != '') { - S::assert_xsrf_token(); - Xdb::execute('INSERT IGNORE INTO ip_watch (ip, mask, state, detection, last, uid, description) - VALUES ({?}, {?}, {?}, CURDATE(), NOW(), {?}, {?})', - ip_to_uint(trim(Post::v('ipN'))), ip_to_uint(trim(Post::v('maskN'))), - Post::v('stateN'), S::i('uid'), Post::v('descriptionN')); - }; - break; - - case 'edit': - S::assert_xsrf_token(); - Xdb::execute('UPDATE ip_watch - SET state = {?}, last = NOW(), uid = {?}, description = {?}, mask = {?} - WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), - ip_to_uint(Post::v('maskN')), ip_to_uint(Post::v('ipN'))); - break; - - default: - if ($action == 'delete' && !is_null($ip)) { - S::assert_xsrf_token(); - Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip)); - } - } - if ($action != 'create' && $action != 'edit') { - $action = 'list'; - } - $page->assign('action', $action); - - if ($action == 'list') { - $sql = "SELECT w.ip, IF(s.ip IS NULL, - IF(w.ip = s2.ip, s2.host, s2.forward_host), - IF(w.ip = s.ip, s.host, s.forward_host)), - w.mask, w.detection, w.state, a.alias AS forlife - FROM ip_watch AS w - LEFT JOIN logger.sessions AS s ON (s.ip = w.ip) - LEFT JOIN logger.sessions AS s2 ON (s2.forward_ip = w.ip) - LEFT JOIN aliases AS a ON (a.id = s.uid AND a.type = 'a_vie') - GROUP BY w.ip, a.alias - ORDER BY w.state, w.ip, a.alias"; - $it = Xdb::iterRow($sql); - - $table = array(); - $props = array(); - while (list($ip, $host, $mask, $date, $state, $forlife) = $it->next()) { - $ip = uint_to_ip($ip); - $mask = uint_to_ip($mask); - if (count($props) == 0 || $props['ip'] != $ip) { - if (count($props) > 0) { - $table[] = $props; - } - $props = array('ip' => $ip, - 'mask' => $mask, - 'host' => $host, - 'detection' => $date, - 'state' => $state, - 'users' => array($forlife)); - } else { - $props['users'][] = $forlife; - } - } - if (count($props) > 0) { - $table[] = $props; - } - $page->assign('table', $table); - } elseif ($action == 'edit') { - $sql = "SELECT w.detection, w.state, w.last, w.description, w.mask, - a1.alias AS edit, a2.alias AS forlife, s.host - FROM ip_watch AS w - LEFT JOIN aliases AS a1 ON (a1.id = w.uid AND a1.type = 'a_vie') - LEFT JOIN logger.sessions AS s ON (w.ip = s.ip) - LEFT JOIN aliases AS a2 ON (a2.id = s.uid AND a2.type = 'a_vie') - WHERE w.ip = {?} - GROUP BY a2.alias - ORDER BY a2.alias"; - $it = Xdb::iterRow($sql, ip_to_uint($ip)); - - $props = array(); - while (list($detection, $state, $last, $description, $mask, $edit, $forlife, $host) = $it->next()) { - if (count($props) == 0) { - $props = array('ip' => $ip, - 'mask' => uint_to_ip($mask), - 'host' => $host, - 'detection' => $detection, - 'state' => $state, - 'last' => $last, - 'description' => $description, - 'edit' => $edit, - 'users' => array($forlife)); - } else { - $props['users'][] = $forlife; - } - } - $page->assign('ip', $props); - } - } - - function handler_icons(&$page) - { - $page->changeTpl('admin/icons.tpl'); - $dh = opendir('../htdocs/images/icons'); - if (!$dh) { - $page->trigError('Dossier des icones introuvables.'); - } - $icons = array(); - while (($file = readdir($dh)) !== false) { - if (strlen($file) > 4 && substr($file,-4) == '.gif') { - array_push($icons, substr($file, 0, -4)); - } - } - sort($icons); - $page->assign('icons', $icons); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/auth.php b/modules/auth.php deleted file mode 100644 index d6521e1..0000000 --- a/modules/auth.php +++ /dev/null @@ -1,188 +0,0 @@ - $this->make_hook('chall', AUTH_PUBLIC), - 'groupex/export-econfiance.php' - => $this->make_hook('econf', AUTH_PUBLIC, 'user', NO_HTTPS), - - 'webservices/manageurs.php' - => $this->make_hook('manageurs', AUTH_PUBLIC, 'user', NO_HTTPS), - - 'auth-redirect.php' => $this->make_hook('redirect', AUTH_COOKIE), - 'auth-groupex.php' => $this->make_hook('groupex_old', AUTH_COOKIE), - 'auth-groupex' => $this->make_hook('groupex', AUTH_COOKIE), - 'admin/auth-groupes-x' => $this->make_hook('admin_authgroupesx', AUTH_MDP, 'admin'), - ); - } - - function handler_chall(&$page) - { - $_SESSION["chall"] = uniqid(rand(), 1); - echo $_SESSION["chall"] . "\n" . session_id(); - exit; - } - - function handler_econf(&$page) - { - global $globals; - - $cle = $globals->core->econfiance; - - if (S::v('chall') && $_GET['PASS'] == md5(S::v('chall').$cle)) { - - $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id=10154"); - $pass = $res->fetchOneCell(); - - $list = new MMList(10154, $pass, "x-econfiance.polytechnique.org"); - $members = $list->get_members('membres'); - if (is_array($members)) { - $membres = Array(); - foreach($members[1] as $member) { - if (preg_match('/^([^.]*.[^.]*.(\d\d\d\d))@polytechnique.org$/', - $member[1], $matches)) - { - $membres[] = "a.alias='{$matches[1]}'"; - } - } - } - - $where = join(' OR ',$membres); - - $all = XDB::iterRow( - "SELECT u.prenom,u.nom,a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( u.user_id = a.id AND a.type!='homonyme' ) - WHERE $where - ORDER BY nom"); - - $res = "\n\n\n\n"; - - while (list ($prenom1,$nom1,$email1) = $all->next()) { - $res .= "\n"; - $res .= "\t$nom1\n"; - $res .= "\t$prenom1\n"; - $res .= "\t$email1\n"; - $res .= "\n\n"; - } - - $res .= "\n\n"; - - header('Content-Type: text/xml; charset="UTF-8"'); - echo $res; - } - exit; - } - - function handler_manageurs(&$page) - { - global $globals; - - require_once 'webservices/manageurs.server.inc.php'; - - $ips = array_flip(explode(' ', $globals->manageurs->authorized_ips)); - if ($ips && isset($ips[$_SERVER['REMOTE_ADDR']])) { - $server = xmlrpc_server_create(); - - xmlrpc_server_register_method($server, 'get_annuaire_infos', 'get_annuaire_infos'); - xmlrpc_server_register_method($server, 'get_nouveau_infos', 'get_nouveau_infos'); - - $request = @$GLOBALS['HTTP_RAW_POST_DATA']; - $response = xmlrpc_server_call_method($server, $request, null); - header('Content-Type: text/xml'); - print $response; - xmlrpc_server_destroy($server); - } - - exit; - } - - function handler_redirect(&$page) - { - http_redirect(Env::v('dest', '/')); - } - - function handler_groupex_old(&$page) - { - return $this->handler_groupex($page, 'iso-8859-1'); - } - - function handler_groupex(&$page, $charset = 'utf8') - { - require_once dirname(__FILE__).'/auth/auth.inc.php'; - $page->assign('referer', true); - - $gpex_pass = $_GET["pass"]; - $gpex_url = urldecode($_GET["url"]); - if (strpos($gpex_url, '?') === false) { - $gpex_url .= "?PHPSESSID=" . $_GET["session"]; - } else { - $gpex_url .= "&PHPSESSID=" . $_GET["session"]; - } - - /* a-t-on besoin d'ajouter le http:// ? */ - if (!preg_match("/^(http|https):\/\/.*/",$gpex_url)) { - $gpex_url = "http://$gpex_url"; - } - $gpex_challenge = $_GET["challenge"]; - - // mise à jour de l'heure et de la machine de dernier login sauf quand on est en suid - $uid = S::i('uid'); - if (!isset($_SESSION['suid'])) { - $logger = (isset($_SESSION['log']) && $_SESSION['log']->uid == $uid) - ? $_SESSION['log'] : new PlLogger($uid); - global $platal; - S::logger()->log('connexion_auth_ext', $platal->path); - } - - /* on parcourt les entrees de groupes_auth */ - $res = XDB::iterRow('SELECT privkey, name, datafields FROM groupesx_auth'); - - while (list($privkey,$name,$datafields) = $res->next()) { - if (md5($gpex_challenge.$privkey) == $gpex_pass) { - $returl = $gpex_url . gpex_make_params($gpex_challenge, $privkey, $datafields, $charset); - http_redirect($returl); - } - } - - /* si on n'a pas trouvé, on renvoit sur x.org */ - http_redirect('https://www.polytechnique.org/'); - } - - function handler_admin_authgroupesx(&$page, $action = 'list', $id = null) - { - $page->assign('pl_title','Polytechnique.org - Administration - Auth groupes X'); - $page->assign('title', 'Gestion de l\'authentification centralisée'); - $table_editor = new PLTableEditor('admin/auth-groupes-x','groupesx_auth','id'); - $table_editor->describe('name','nom',true); - $table_editor->describe('privkey','clé privée',false); - $table_editor->describe('datafields','champs renvoyés',true); - $table_editor->apply($page, $action, $id); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/auth/auth.inc.php b/modules/auth/auth.inc.php deleted file mode 100644 index 305e0fc..0000000 --- a/modules/auth/auth.inc.php +++ /dev/null @@ -1,85 +0,0 @@ -fetchOneAssoc(); - - foreach ($fieldarr as $val) { - /* on verifie qu'on n'a pas demandé une variable inexistante ! */ - if ($val == 'perms') { - $params .= gpex_prepare_param($val, S::has_perms() ? 'admin' : 'user', $tohash, $charset); - } else if (S::has($val)) { - $params .= gpex_prepare_param($val, S::v($val), $tohash, $charset); - } else if (isset($personnal_data[$val])) { - $params .= gpex_prepare_param($val, $personnal_data[$val], $tohash, $charset); - } else if ($val == 'username') { - $res = XDB::query("SELECT alias FROM aliases - WHERE id = {?} AND FIND_IN_SET('bestalias', flags)", - S::v('uid')); - $min_username = $res->fetchOneCell(); - $params .= gpex_prepare_param($val, $min_username, $tohash, $charset); - } else if ($val == 'grpauth') { - if (isset($_GET['group'])) { - $res = XDB::query("SELECT perms - FROM groupex.membres - INNER JOIN groupex.asso ON(id = asso_id) - WHERE uid = {?} AND diminutif = {?}", - S::v('uid'), $_GET['group']); - $perms = $res->fetchOneCell(); - } else { - // if no group asked, return main rights - $perms = S::has_perms() ? 'admin' : 'membre'; - } - $params .= gpex_prepare_param($val, $perms, $tohash, $charset); - } - } - $tohash .= "1"; - $auth = md5($tohash); - return array($auth, "&auth=" . $auth . $params); -} - -/* cree les parametres de l'URL de retour avec les champs demandes */ -function gpex_make_params($chlg, $privkey, $datafields, $charset) -{ - list ($auth, $param) = gpex_make($chlg, $privkey, $datafields, $charset); - return $param; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/axletter.php b/modules/axletter.php deleted file mode 100644 index caad25c..0000000 --- a/modules/axletter.php +++ /dev/null @@ -1,378 +0,0 @@ - $this->make_hook('index', AUTH_COOKIE), - 'ax/out' => $this->make_hook('out', AUTH_PUBLIC), - 'ax/show' => $this->make_hook('show', AUTH_COOKIE), - 'ax/edit' => $this->make_hook('submit', AUTH_MDP), - 'ax/edit/cancel' => $this->make_hook('cancel', AUTH_MDP), - 'ax/edit/valid' => $this->make_hook('valid', AUTH_MDP), - 'admin/axletter' => $this->make_hook('admin', AUTH_MDP, 'admin'), - ); - } - - function handler_out(&$page, $hash = null) - { - if (!$hash) { - if (!S::logged()) { - return PL_DO_AUTH; - } else { - return $this->handler_index($page, 'out'); - } - } - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - $page->changeTpl('axletter/unsubscribe.tpl'); - $page->assign('success', AXLetter::unsubscribe($hash, true)); - } - - function handler_index(&$page, $action = null) - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - - $page->changeTpl('axletter/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Envois de l\'AX'); - - switch ($action) { - case 'in': AXLetter::subscribe(); break; - case 'out': AXLetter::unsubscribe(); break; - } - - $perm = AXLetter::hasPerms(); - if ($perm) { - $res = XDB::query("SELECT * FROM axletter_ins"); - $page->assign('count', $res->numRows()); - $page->assign('new', AXLetter::awaiting()); - } - $page->assign('axs', AXLetter::subscriptionState()); - $page->assign('ax_list', AXLetter::listSent()); - $page->assign('ax_rights', $perm); - } - - function handler_submit(&$page, $action = null) - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - if (!AXLetter::hasPerms()) { - return PL_FORBIDDEN; - } - - $page->changeTpl('axletter/edit.tpl'); - - $saved = Post::i('saved'); - $new = false; - $id = Post::i('id'); - $short_name = trim(Post::v('short_name')); - $subject = trim(Post::v('subject')); - $title = trim(Post::v('title')); - $body = rtrim(Post::v('body')); - $signature = trim(Post::v('signature')); - $promo_min = Post::i('promo_min'); - $promo_max = Post::i('promo_max'); - $echeance = Post::has('echeance_date') ? - preg_replace('/^(\d\d\d\d)(\d\d)(\d\d)$/', '\1-\2-\3', Post::v('echeance_date')) . ' ' . Post::v('echeance_time') - : Post::v('echeance'); - $echeance_date = Post::v('echeance_date'); - $echeance_time = Post::v('echeance_time'); - - if (!$id) { - $res = XDB::query("SELECT * FROM axletter WHERE FIND_IN_SET('new', bits)"); - if ($res->numRows()) { - extract($res->fetchOneAssoc(), EXTR_OVERWRITE); - $saved = true; - } else { - XDB::execute("INSERT INTO axletter SET id = NULL"); - $id = XDB::insertId(); - } - if (!$echeance || $echeance == '0000-00-00 00:00:00') { - $saved = false; - $new = true; - } - } elseif (Post::has('valid')) { - S::assert_xsrf_token(); - - if (!$subject && $title) { - $subject = $title; - } - if (!$title && $subject) { - $title = $subject; - } - if (!$subject || !$title || !$body) { - $page->trigError("L'article doit avoir un sujet et un contenu"); - Post::kill('valid'); - } - if (($promo_min > $promo_max && $promo_max != 0)|| - ($promo_min != 0 && ($promo_min <= 1900 || $promo_min >= 2020)) || - ($promo_max != 0 && ($promo_max <= 1900 || $promo_max >= 2020))) - { - $page->trigError("L'intervalle de promotions n'est pas valide"); - Post::kill('valid'); - } - if (empty($short_name)) { - $page->trigError("L'annonce doit avoir un nom raccourci pour simplifier la navigation dans les archives"); - Post::kill('valid'); - } elseif (!preg_match('/^[a-z][-a-z0-9]*[a-z0-9]$/', $short_name)) { - $page->trigError("Le nom raccourci n'est pas valide, il doit comporter au moins 2 caractères et n'être composé " - . "que de chiffres, lettres et tirets"); - Post::kill('valid'); - } elseif ($short_name != Post::v('old_short_name')) { - $res = XDB::query("SELECT id FROM axletter WHERE short_name = {?}", $short_name); - if ($res->numRows() && $res->fetchOneCell() != $id) { - $page->trigError("Le nom $short_name est déjà utilisé, merci d'en choisir un autre"); - $short_name = Post::v('old_short_name'); - if (empty($short_name)) { - Post::kill('valid'); - } - } - } - - switch (@Post::v('valid')) { - case 'Aperçu': - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - $al = new AXLetter(array($id, $short_name, $subject, $title, $body, $signature, - $promo_min, $promo_max, $echeance, 0, 'new')); - $al->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme')); - break; - - case 'Confirmer': - XDB::execute("REPLACE INTO axletter - SET id = {?}, short_name = {?}, subject = {?}, title = {?}, body = {?}, - signature = {?}, promo_min = {?}, promo_max = {?}, echeance = {?}", - $id, $short_name, $subject, $title, $body, $signature, $promo_min, $promo_max, $echeance); - if (!$saved) { - global $globals; - $mailer = new PlMailer(); - $mailer->setFrom("support@" . $globals->mail->domain); - $mailer->setSubject("Un nouveau projet de mail de l'AX vient d'être proposé"); - $mailer->setTxtBody("Un nouveau mail vient d'être rédigé en prévision d'un envoi prochain. Vous pouvez " - . "le modifier jusqu'à ce qu'il soit verrouillé pour l'envoi\n\n" - . "Le sujet du mail : $subject\n" - . "L'échéance d'envoi est fixée à $echeance.\n" - . "Le mail pourra néanmoins partir avant cette échéance si un administrateur de " - . "Polytechnique.org le valide.\n\n" - . "Pour modifier, valider ou annuler le mail :\n" - . "https://www.polytechnique.org/ax/edit\n" - . "-- \n" - . "Association Polytechnique.org\n"); - $res = XDB::iterRow("SELECT IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom, - u.prenom, a.alias AS bestalias - FROM axletter_rights AS ar - INNER JOIN auth_user_md5 AS u USING(user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id - AND FIND_IN_SET('bestalias', a.flags))"); - while (list($nom, $prenom, $alias) = $res->next()) { - $mailer->addTo("$nom $prenom <$alias@{$globals->mail->domain}>"); - } - $mailer->send(); - } - $saved = true; - $echeance_date = null; - $echeance_time = null; - pl_redirect('ax'); - break; - } - } - $page->assign('id', $id); - $page->assign('short_name', $short_name); - $page->assign('subject', $subject); - $page->assign('title', $title); - $page->assign('body', $body); - $page->assign('signature', $signature); - $page->assign('promo_min', $promo_min); - $page->assign('promo_max', $promo_max); - $page->assign('echeance', $echeance); - $page->assign('echeance_date', $echeance_date); - $page->assign('echeance_time', $echeance_time); - $page->assign('saved', $saved); - $page->assign('new', $new); - $page->assign('is_xorg', S::has_perms()); - - if (!$saved) { - $select = ''; - for ($i = 0 ; $i < 24 ; $i++) { - $stamp = sprintf('%02d:00:00', $i); - if ($stamp == $echeance_time) { - $sel = ' selected="selected"'; - } else { - $sel = ''; - } - $select .= "\n"; - } - $page->assign('echeance_time', $select); - } - } - - function handler_cancel(&$page, $force = null) - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - if (!AXLetter::hasPerms() || !S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - - $al = AXLetter::awaiting(); - if (!$al) { - $page->kill("Aucune lettre en attente"); - return; - } - if (!$al->invalid()) { - $page->kill("Une erreur est survenue lors de l'annulation de l'envoi"); - return; - } - - $page->kill("L'envoi de l'annonce {$al->title()} est annulé"); - } - - function handler_valid(&$page, $force = null) - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - if (!AXLetter::hasPerms() || !S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - - $al = AXLetter::awaiting(); - if (!$al) { - $page->kill("Aucune lettre en attente"); - return; - } - if (!$al->valid()) { - $page->kill("Une erreur est survenue lors de la validation de l'envoi"); - return; - } - - $page->kill("L'envoi de l'annonce aura lieu dans l'heure qui vient."); - } - - function handler_show(&$page, $nid = 'last') - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - $page->changeTpl('axletter/show.tpl'); - - $nl = new AXLetter($nid); - if (Get::has('text')) { - $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme')); - } else { - $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme')); - } - if (Post::has('send')) { - $nl->sendTo(S::v('prenom'), S::v('nom'), - S::v('bestalias'), S::v('femme'), - S::v('mail_fmt') != 'texte'); - } - } - - function handler_admin(&$page, $action = null, $uid = null) - { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - if (Post::has('action')) { - $action = Post::v('action'); - $uid = Post::v('uid'); - } - if ($uid) { - S::assert_xsrf_token(); - - $uids = preg_split('/ *[,;\: ] */', $uid); - foreach ($uids as $uid) { - switch ($action) { - case 'add': - $res = AXLetter::grantPerms($uid); - break; - case 'del'; - $res = AXLetter::revokePerms($uid); - break; - } - if (!$res) { - $page->trigError("Personne ne correspond à l'identifiant '$uid'"); - } - } - } - - $page->changeTpl('axletter/admin.tpl'); - $res = XDB::iterator("SELECT IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom, - u.prenom, u.promo, a.alias AS forlife - FROM axletter_rights AS ar - INNER JOIN auth_user_md5 AS u USING(user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type = 'a_vie')"); - $page->assign('admins', $res); - - $importer = new CSVImporter('axletter_ins'); - $importer->registerFunction('user_id', 'email vers Id X.org', array($this, 'idFromMail')); - $importer->forceValue('hash', array($this, 'createHash')); - $importer->apply($page, "admin/axletter", array('user_id', 'email', 'prenom', 'nom', 'promo', 'flag', 'hash')); - } - - function idFromMail($line, $key) - { - static $field; - global $globals; - if (!isset($field)) { - $field = array('email', 'mail', 'login', 'bestalias', 'forlife', 'flag'); - foreach ($field as $fld) { - if (isset($line[$fld])) { - $field = $fld; - break; - } - } - } - $email = $line[$field]; - if (strpos($email, '@') === false) { - $user = $email; - $domain = $globals->mail->domain2; - } else { - list($user, $domain) = explode('@', $email); - } - if ($domain != $globals->mail->domain && $domain != $globals->mail->domain2 - && $domain != $globals->mail->alias_dom && $domain != $globals->mail->alias_dom2) { - $res = XDB::query("SELECT uid FROM emails WHERE email = {?}", $email); - if ($res->numRows() == 1) { - return $res->fetchOneCell(); - } - return '0'; - } - list($user) = explode('+', $user); - list($user) = explode('_', $user); - if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2) { - $res = XDB::query("SELECT a.id - FROM virtual AS v - INNER JOIN virtual_redirect AS r USING(vid) - INNER JOIN aliases AS a ON (a.type = 'a_vie' - AND r.redirect = CONCAT(a.alias, '@{$globals->mail->domain2}')) - WHERE v.alias = CONCAT({?}, '@{$globals->mail->alias_dom}')", $user); - $id = $res->fetchOneCell(); - return $id ? $id : '0'; - } - $res = XDB::query("SELECT id FROM aliases WHERE alias = {?}", $user); - $id = $res->fetchOneCell(); - return $id ? $id : '0'; - } - - function createHash($line, $key) - { - $hash = implode(time(), $line) . rand(); - $hash = md5($hash); - return $hash; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/axletter/axletter.inc.php b/modules/axletter/axletter.inc.php deleted file mode 100644 index f8c7ca1..0000000 --- a/modules/axletter/axletter.inc.php +++ /dev/null @@ -1,243 +0,0 @@ -_head = ' ,'; - - if (!is_array($id)) { - if ($id == 'last') { - $res = XDB::query("SELECT * - FROM axletter - WHERE FIND_IN_SET('sent', bits) - ORDER BY id DESC"); - } else { - $res = XDB::query("SELECT * - FROM axletter - WHERE id = {?} OR short_name = {?}", $id, $id); - } - if (!$res->numRows()) { - $this->_id = null; - return; - } - $id = $res->fetchOneRow(); - } - list($this->_id, $this->_shortname, $this->_title_mail, $this->_title, - $this->_body, $this->_signature, $this->_promo_min, $this->_promo_max, - $this->_echeance, $this->_date, $this->_bits) = $id; - if ($this->_date == '0000-00-00') { - $this->_date = 0; - } - } - - protected function assignData(&$smarty) - { - $smarty->assign_by_ref('am', $this); - } - - public function body($format) - { - return format_text($this->_body, $format); - } - - public function signature($format) - { - return format_text($this->_signature, $format, 10); - } - - public function valid() - { - return XDB::execute("UPDATE axletter - SET echeance = NOW() - WHERE id = {?}", $this->_id); - } - - public function invalid() - { - return XDB::execute("UPDATE axletter - SET bits = 'invalid', date = CURDATE() - WHERE id = {?}", $this->_id); - } - - protected function setSent() - { - XDB::execute("UPDATE axletter - SET bits='sent', date=CURDATE() - WHERE id={?}", $this->_id); - } - - protected function getAllRecipients() - { - return "SELECT ni.user_id, IF(ni.user_id = 0, ni.email, a.alias) AS alias, - IF(ni.user_id = 0, ni.prenom, u.prenom) AS prenom, - IF(ni.user_id = 0, ni.nom, IF(u.nom_usage='', u.nom, u.nom_usage)) AS nom, - FIND_IN_SET('femme', IF(ni.user_id = 0, ni.flag, u.flags)) AS sexe, - IF(ni.user_id = 0, 'html', q.core_mail_fmt) AS pref, - IF(ni.user_id = 0, ni.hash, 0) AS hash - FROM axletter_ins AS ni - LEFT JOIN auth_user_md5 AS u USING(user_id) - LEFT JOIN auth_user_quick AS q ON(q.user_id = u.user_id) - LEFT JOIN aliases AS a ON(u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags)) - LEFT JOIN emails AS e ON(e.uid=u.user_id AND e.flags='active') - WHERE ni.last < {?} AND {$this->subscriptionWhere()} - AND (e.email IS NOT NULL OR FIND_IN_SET('googleapps', u.mail_storage) OR ni.user_id = 0) - GROUP BY u.user_id"; - } - - static public function subscriptionState($uid = null) - { - $user = is_null($uid) ? S::v('uid') : $uid; - $res = XDB::query("SELECT 1 - FROM axletter_ins - WHERE user_id={?}", $user); - return $res->fetchOneCell(); - } - - static public function unsubscribe($uid = null, $hash = false) - { - $user = is_null($uid) ? S::v('uid') : $uid; - $field = !$hash ? 'user_id' : 'hash'; - if (is_null($uid) && $hash) { - return false; - } - $res = XDB::query("SELECT * - FROM axletter_ins - WHERE $field={?}", $user); - if (!$res->numRows()) { - return false; - } - XDB::execute("DELETE FROM axletter_ins - WHERE $field = {?}", $user); - return true; - } - - static public function subscribe($uid = null) - { - $user = is_null($uid) ? S::v('uid') : $uid; - XDB::execute("REPLACE INTO axletter_ins (user_id,last) - VALUES ({?}, 0)", $user); - } - - static public function hasPerms() - { - if (S::has_perms()) { - return true; - } - $res = XDB::query("SELECT 1 - FROM axletter_rights - WHERE user_id = {?}", S::i('uid')); - return $res->fetchOneCell(); - } - - static public function grantPerms($uid) - { - if (!is_numeric($uid)) { - $res = XDB::query("SELECT id FROM aliases WHERE alias = {?}", $uid); - $uid = $res->fetchOneCell(); - } - if (!$uid) { - return false; - } - return XDB::execute("INSERT IGNORE INTO axletter_rights SET user_id = {?}", $uid); - } - - static public function revokePerms($uid) - { - if (!is_numeric($uid)) { - $res = XDB::query("SELECT id FROM aliases WHERE alias = {?}", $uid); - $uid = $res->fetchOneCell(); - } - if (!$uid) { - return false; - } - return XDB::execute("DELETE FROM axletter_rights WHERE user_id = {?}", $uid); - } - - protected function subscriptionWhere() - { - if (!$this->_promo_min && !$this->_promo_max) { - return '1'; - } - $where = array(); - if ($this->_promo_min) { - $where[] = "((ni.user_id = 0 AND ni.promo >= {$this->_promo_min}) OR (ni.user_id != 0 AND u.promo >= {$this->_promo_min}))"; - } - if ($this->_promo_max) { - $where[] = "((ni.user_id = 0 AND ni.promo <= {$this->_promo_max}) OR (ni.user_id != 0 AND u.promo <= {$this->_promo_max}))"; - } - return implode(' AND ', $where); - } - - static public function awaiting() - { - $res = XDB::query("SELECT * - FROM axletter - WHERE FIND_IN_SET('new', bits)"); - if ($res->numRows()) { - return new AXLetter($res->fetchOneRow()); - } - return null; - } - - static public function toSend() - { - $res = XDB::query("SELECT * - FROM axletter - WHERE FIND_IN_SET('new', bits) AND echeance <= NOW() AND echeance != 0"); - if ($res->numRows()) { - return new AXLetter($res->fetchOneRow()); - } - return null; - } - - static public function listSent() - { - $res = XDB::query("SELECT IF(short_name IS NULL, id, short_name) as id, date, subject AS titre - FROM axletter - WHERE NOT FIND_IN_SET('new', bits) AND NOT FIND_IN_SET('invalid', bits) - ORDER BY date DESC"); - return $res->fetchAllAssoc(); - } - - static public function listAll() - { - $res = XDB::query("SELECT IF(short_name IS NULL, id, short_name) as id, date, subject AS titre - FROM axletter - ORDER BY date DESC"); - return $res->fetchAllAssoc(); - } -} - -// vim:set et sw=4 sts=4 sws=4 enc=utf-8: -?> diff --git a/modules/bandeau.php b/modules/bandeau.php deleted file mode 100644 index 24d38be..0000000 --- a/modules/bandeau.php +++ /dev/null @@ -1,56 +0,0 @@ - $this->make_hook('icone',AUTH_PUBLIC, 'user', NO_HTTPS), - 'bandeau' => $this->make_hook('html', AUTH_PUBLIC, 'user', NO_HTTPS), - 'bandeau.css' => $this->make_hook('css', AUTH_PUBLIC, 'user', NO_HTTPS), - ); - } - - function handler_icone(&$page) - { - header("Content-Type: image/png"); - readfile('../htdocs/images/x.png'); - exit(); - } - - function handler_html(&$page, $login = '') - { - $page->changeTpl('skin/common.bandeau.tpl', NO_SKIN); - $page->assign('login', $login); - } - - function handler_css(&$page) - { - header("Content-Type: text/css"); - readfile('../htdocs/css/bandeau.css'); - exit(); - } - -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet.php b/modules/carnet.php deleted file mode 100644 index 345d56d..0000000 --- a/modules/carnet.php +++ /dev/null @@ -1,383 +0,0 @@ - $this->make_hook('index', AUTH_COOKIE), - 'carnet/panel' => $this->make_hook('panel', AUTH_COOKIE), - 'carnet/notifs' => $this->make_hook('notifs', AUTH_COOKIE), - - 'carnet/contacts' => $this->make_hook('contacts', AUTH_COOKIE), - 'carnet/contacts/pdf' => $this->make_hook('pdf', AUTH_COOKIE, 'user', NO_HTTPS), - 'carnet/contacts/ical' => $this->make_hook('ical', AUTH_PUBLIC, 'user', NO_HTTPS), - 'carnet/contacts/vcard' => $this->make_hook('vcard', AUTH_COOKIE, 'user', NO_HTTPS), - - 'carnet/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - ); - } - - function on_subscribe($forlife, $uid, $promo, $password) - { - require_once 'notifs.inc.php'; - register_watch_op($uid, WATCH_INSCR); - inscription_notifs_base($uid); - } - - function _add_rss_link(&$page) - { - if (!S::has('core_rss_hash')) { - return; - } - $page->setRssLink('Polytechnique.org :: Carnet', - '/carnet/rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml'); - } - - function handler_index(&$page) - { - $page->changeTpl('carnet/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Mon carnet'); - $this->_add_rss_link($page); - } - - function handler_panel(&$page) - { - $page->changeTpl('carnet/panel.tpl'); - - if (Get::has('read')) { - $_SESSION['watch_last'] = Get::v('read'); - update_NbNotifs(); - pl_redirect('carnet/panel'); - } - - require_once 'notifs.inc.php'; - - $page->assign('now',date('YmdHis')); - $notifs = new Notifs(S::v('uid'), true); - - $page->assign('notifs', $notifs); - $page->assign('today', date('Y-m-d')); - $this->_add_rss_link($page); - } - - function _handler_notifs_promos(&$page, &$watch, $action, $arg) - { - if(preg_match('!^ *(\d{4}) *$!', $arg, $matches)) { - $p = intval($matches[1]); - if($p<1900 || $p>2100) { - $page->trigError("la promo entrée est invalide"); - } else { - if ($action == 'add_promo') { - $watch->_promos->add($p); - } else { - $watch->_promos->del($p); - } - } - } elseif (preg_match('!^ *(\d{4}) *- *(\d{4}) *$!', $arg, $matches)) { - $p1 = intval($matches[1]); - $p2 = intval($matches[2]); - if($p1<1900 || $p1>2100) { - $page->trigError('la première promo de la plage entrée est invalide'); - } elseif($p2<1900 || $p2>2100) { - $page->trigError('la seconde promo de la plage entrée est invalide'); - } else { - if ($action == 'add_promo') { - $watch->_promos->addRange($p1, $p2); - } else { - $watch->_promos->delRange($p1, $p2); - } - } - } else { - $page->trigError("La promo (ou la plage de promo) entrée est dans un format incorrect."); - } - } - - function handler_notifs(&$page, $action = null, $arg = null) - { - $page->changeTpl('carnet/notifs.tpl'); - - require_once 'notifs.inc.php'; - - $watch = new Watch(S::v('uid')); - - $res = XDB::query("SELECT promo_sortie - FROM auth_user_md5 - WHERE user_id = {?}", - S::v('uid', -1)); - $promo_sortie = $res->fetchOneCell(); - $page->assign('promo_sortie', $promo_sortie); - - if ($action) { - S::assert_xsrf_token(); - } - switch ($action) { - case 'add_promo': - case 'del_promo': - $this->_handler_notifs_promos($page, $watch, $action, $arg); - break; - - case 'del_nonins': - $watch->_nonins->del($arg); - break; - - case 'add_nonins': - $watch->_nonins->add($arg); - break; - } - - if (Env::has('subs')) { - S::assert_xsrf_token(); - $watch->_subs->update('sub'); - } - - if (Env::has('flags_contacts')) { - S::assert_xsrf_token(); - $watch->watch_contacts = Env::b('contacts'); - $watch->saveFlags(); - } - - if (Env::has('flags_mail')) { - S::assert_xsrf_token(); - $watch->watch_mail = Env::b('mail'); - $watch->saveFlags(); - } - - $page->assign_by_ref('watch', $watch); - } - - function _get_list($offset, $limit) { - $uid = S::v('uid'); - $res = XDB::query("SELECT COUNT(*) FROM contacts WHERE uid = {?}", $uid); - $total = $res->fetchOneCell(); - - $order = Get::v('order'); - $orders = Array( - 'nom' => 'nom DESC, u.prenom, u.promo', - 'promo' => 'promo DESC, nom, u.prenom', - 'last' => 'u.date DESC, nom, u.prenom, promo'); - if ($order != 'promo' && $order != 'last') - $order = 'nom'; - $order = $orders[$order]; - if (Get::v('inv') == '') - $order = str_replace(" DESC,", ",", $order); - - $res = XDB::query(" - SELECT u.prenom, IF(u.nom_usage='',u.nom,u.nom_usage) AS nom, a.alias AS forlife, u.promo - FROM contacts AS c - INNER JOIN auth_user_md5 AS u ON (u.user_id = c.contact) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie') - WHERE c.uid = {?} - ORDER BY $order - LIMIT {?}, {?}", $uid, $offset*$limit, $limit); - $list = $res->fetchAllAssoc(); - - return Array($total, $list); - } - - function searchErrorHandler($explain) { - $page =& Platal::page(); - $page->trigError($explain); - $this->handler_contacts($page); - } - - function handler_contacts(&$page, $action = null, $subaction = null, $ssaction = null) - { - $page->assign('pl_title','Polytechnique.org - Mes contacts'); - $this->_add_rss_link($page); - - $uid = S::v('uid'); - $user = Env::v('user'); - - // For XSRF protection, checks both the normal xsrf token, and the special RSS token. - // It allows direct linking to contact adding in the RSS feed. - if (Env::v('action') && Env::v('token') !== S::v('core_rss_hash')) { - S::assert_xsrf_token(); - } - switch (Env::v('action')) { - case 'retirer': - if (is_numeric($user)) { - if (XDB::execute('DELETE FROM contacts - WHERE uid = {?} AND contact = {?}', - $uid, $user)) - { - $page->trigSuccess("Contact retiré !"); - } - } else { - if (XDB::execute( - 'DELETE FROM c - USING contacts AS c - INNER JOIN aliases AS a ON (c.contact=a.id and a.type!="homonyme") - WHERE c.uid = {?} AND a.alias={?}', $uid, $user)) - { - $page->trigSuccess("Contact retiré !"); - } - } - break; - - case 'ajouter': - require_once('user.func.inc.php'); - if (($login = get_user_login($user)) !== false) { - if (XDB::execute( - 'REPLACE INTO contacts (uid, contact) - SELECT {?}, id - FROM aliases - WHERE alias = {?}', $uid, $login)) - { - $page->trigSuccess('Contact ajouté !'); - } else { - $page->trigWarning('Contact déjà dans la liste !'); - } - } - } - - $search = false; - if ($action == 'search') { - $action = $subaction; - $subaction = $ssaction; - $search = true; - } - if ($search && trim(Env::v('quick'))) { - require_once 'userset.inc.php'; - $base = 'carnet/contacts/search'; - - require_once(dirname(__FILE__) . '/search/classes.inc.php'); - ThrowError::$throwHook = array($this, 'searchErrorHandler'); - $view = new SearchSet(true, false, "INNER JOIN contacts AS c2 ON (u.user_id = c2.contact)", "c2.uid = $uid"); - } else { - $base = 'carnet/contacts'; - $view = new UserSet("INNER JOIN contacts AS c2 ON (u.user_id = c2.contact)", " c2.uid = $uid "); - } - $view->addMod('minifiche', 'Mini-Fiches', true); - $view->addMod('trombi', 'Trombinoscope', false, array('with_admin' => false, 'with_promo' => true)); - $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'carnet/contacts/search')); - $view->apply($base, $page, $action, $subaction); - if ($action != 'geoloc' || ($search && !$ssaction) || (!$search && !$subaction)) { - $page->changeTpl('carnet/mescontacts.tpl'); - } - } - - function handler_pdf(&$page, $arg0 = null, $arg1 = null) - { - require_once dirname(__FILE__).'/carnet/contacts.pdf.inc.php'; - require_once 'user.func.inc.php'; - - Platal::session()->close(); - - $sql = "SELECT a.alias - FROM aliases AS a - INNER JOIN auth_user_md5 AS u ON ( a.id = u.user_id ) - INNER JOIN contacts AS c ON ( a.id = c.contact ) - WHERE c.uid = {?} AND a.type='a_vie'"; - if ($arg0 == 'promo') { - $sql .= ' ORDER BY u.promo, u.nom, u.prenom'; - } else { - $sql .= ' ORDER BY u.nom, u.prenom, u.promo'; - } - - $citer = XDB::iterRow($sql, S::v('uid')); - $pdf = new ContactsPDF(); - - while (list($alias) = $citer->next()) { - $user = get_user_details($alias); - foreach ($user as &$value) { - if (is_utf8($value)) { - $value = utf8_decode($value); - } - } - $pdf = ContactsPDF::addContact($pdf, $user, $arg0 == 'photos' || $arg1 == 'photos'); - } - $pdf->Output(); - - exit; - } - - function handler_rss(&$page, $user = null, $hash = null) - { - require_once 'rss.inc.php'; - require_once 'notifs.inc.php'; - - $uid = init_rss('carnet/rss.tpl', $user, $hash); - $notifs = new Notifs($uid, false); - $page->assign('notifs', $notifs); - } - - function handler_ical(&$page, $alias = null, $hash = null) - { - require_once 'rss.inc.php'; - $uid = init_rss(null, $alias, $hash, false); - if (S::logged()) { - if (!$uid) { - $uid = S::i('uid'); - } else if ($uid != S::i('uid')) { - send_warning_email("Récupération d\'un autre utilisateur ($uid)"); - } - } else if (!$uid) { - exit; - } - require_once 'ical.inc.php'; - $page->changeTpl('carnet/calendar.tpl', NO_SKIN); - $page->register_function('display_ical', 'display_ical'); - - $res = XDB::iterRow( - 'SELECT u.prenom, - IF(u.nom_usage = \'\',u.nom,u.nom_usage) AS nom, - u.promo, - u.naissance, - DATE_ADD(u.naissance, INTERVAL 1 DAY) AS end, - u.date_ins, - a.alias AS forlife - FROM contacts AS c - INNER JOIN auth_user_md5 AS u ON (u.user_id = c.contact) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type = \'a_vie\') - WHERE c.uid = {?}', $uid); - - $annivs = Array(); - while (list($prenom, $nom, $promo, $naissance, $end, $ts, $forlife) = $res->next()) { - $naissance = str_replace('-', '', $naissance); - $end = str_replace('-', '', $end); - $annivs[] = array( - 'timestamp' => strtotime($ts), - 'date' => $naissance, - 'tomorrow' => $end, - 'forlife' => $forlife, - 'summary' => 'Anniversaire de '.$prenom - .' '.$nom.' - x '.$promo, - ); - } - $page->assign('events', $annivs); - - header('Content-Type: text/calendar; charset=utf-8'); - } - - function handler_vcard(&$page, $photos = null) - { - $res = XDB::query('SELECT contact - FROM contacts - WHERE uid = {?}', S::v('uid')); - $vcard = new VCard($res->fetchColumn(), $photos == 'photos'); - $vcard->do_page(&$page); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/contacts.pdf.inc.php b/modules/carnet/contacts.pdf.inc.php deleted file mode 100644 index 0ef1509..0000000 --- a/modules/carnet/contacts.pdf.inc.php +++ /dev/null @@ -1,357 +0,0 @@ -report = error_reporting(0); - parent::FPDF(); - error_reporting($this->report); - - $this->AddFont('Vera Sans', '', 'Vera.php'); - $this->AddFont('Vera Sans', 'I', 'VeraIt.php'); - $this->AddFont('Vera Sans', 'B', 'VeraBd.php'); - - $this->AddFont('Vera Mono', '', 'VeraMono.php'); - - $this->SetTitle($this->title); - $this->SetCreator('Site Polytechnique.org'); - $this->AddPage(); - } - - function Output($name='mescontacts.pdf', $dest='I') - { - Header('Pragma: public'); - error_reporting(0); - parent::Output($name, $dest); - error_reporting($this->report); - } - - function Rotate($angle, $x=-1, $y=-1) - { - if ($x==-1) { - $x = $this->x; - } - if ($y==-1) { - $y=$this->y; - } - if (!empty($this->angle)) { - $this->_out('Q'); - } - $this->angle = $angle; - if ($angle != 0) { - $angle*=M_PI/180; - $c = cos($angle); - $s = sin($angle); - $cx = $x*$this->k; - $cy = ($this->h-$y)*$this->k; - $this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm', - $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy)); - } - } - - function Header() - { - - $this->SetFont('Vera Sans', 'B', 20); - $this->SetTextColor(230); - $this->Rotate(45, 55, 190); - $this->Text(55, 190, utf8_decode("informations limitées à un usage")); - $this->Text(40, 210, utf8_decode("strictement personnel et non commercial")); - $this->Rotate(0); - - $this->setLeftMargin(5); - $this->setRightMargin(5); - $this->SetFont('Vera Sans', 'B', 16); - $this->SetY(5); - $this->SetTextColor(51, 102, 153); - $this->SetDrawColor(102, 153, 204); - $this->SetLineWidth(0.2); - $this->SetFillColor(245, 248, 252); - $this->Cell(200, 10, $this->title, 1, 1, 'C', 1); - $this->Image(dirname(__FILE__).'/../../htdocs/images/logo.png', - 5, 5, 10, 10, 'png', 'https://www.polytechnique.org/'); - - $this->Ln(10); - $this->y0 = $this->GetY(); - $this->ColSetup(false); - } - - function Footer() - { - $this->setLeftMargin(5); - $this->setRightMargin(5); - $this->SetY(-15); - $this->SetFont('Vera Sans', 'I', 8); - $this->SetTextColor(128); - $this->Cell(0, 10, 'Page '.$this->PageNo(), 0, 0, 'C'); - $this->Cell(0, 10, '(en date du '.strftime('%d %B %Y').')', 0, 0, 'R'); - } - - function ColSetup($col) - { - $this->col = $col; - $x = 10 + $this->col * 100; - $this->SetLeftMargin($x); - $this->SetRightMargin(120 - $x); - $this->SetX($x); - $this->SetY($this->y0); - } - - function NextCol() - { - $this->ColSetup(1 - $this->col); - if ($this->col == 0) { - $this->AddPage(); - } - } - - function AcceptPageBreak() - { - $this->broken = true; - } - - function Space($w=0.1, $h=0.5) - { - $x = $this->getX(); - $y = $this->getY(); - $this->SetLineWidth($w); - $this->Line($x, $y, $x+90, $y); - $this->Ln($h); - } - - function TableRow($l, $r, $font = 'Sans') - { - $this->SetFont('Vera Sans', 'B', 8); - $y = $this->getY(); - $x = $this->getX(); - $this->MultiCell(25, 4, $l, '', 1); - $y1 = $this->getY(); - - $this->SetFont('Vera '.$font, '', 8); - $this->setY($y); - $first = 1; - - $this->setX($x+25); - $this->MultiCell(65, 4, $r, '', 1); - - $this->setY(max($y1, $this->getY())+0.5); - $this->setX($x); - } - - function Address($a) - { - $l = "adresse\n"; - if ($a['active']) { - $l .= 'actuelle'; - } elseif ($a['secondaire']) { - $l .= 'secondaire'; - } else { - $l .= 'principale'; - } - - $r = ''; - $r = trim("$r\n".$a['adr1']); - $r = trim("$r\n".$a['adr2']); - $r = trim("$r\n".$a['adr3']); - $r = trim("$r\n".trim($a['postcode'].' '.$a['city'])); - - $this->TableRow($l, $r); - - if (!empty($a['tels'])) { - foreach ($a['tels'] as $tel) { - if (!empty($tel['tel'])) { - $this->TableRow(utf8_decode($tel['tel_type']), $tel['tel'], 'Mono'); - } - } - } - } - - function AddressPro($a) - { - if ($a['entreprise']) { - $this->TableRow('Entreprise', $a['entreprise']); - } - - if ($a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) { - $r = ''; - $r = trim("$r\n".$a['adr1']); - $r = trim("$r\n".$a['adr2']); - $r = trim("$r\n".$a['adr3']); - $r = trim("$r\n".trim($a['postcode'].' '.$a['city'])); - $this->TableRow('adresse pro', $r); - } - - if ($a['tel']) { - $this->TableRow(utf8_decode('Téléphone'), $a['tel'], 'Mono'); - } - if ($a['fax']) { - $this->TableRow('Fax', $a['fax'], 'Mono'); - } - } - - function Error($msg) - { - $this->error = true; - } - - function wordwrap($text, $maxwidth = 90) { - $text = trim($text); - if ($text==='') { return 0; } - $space = $this->GetStringWidth(' '); - $lines = explode("\n", $text); - $text = ''; - $count = 0; - - foreach ($lines as $line) { - $words = preg_split('/ +/', $line); - $width = 0; - - foreach ($words as $word) { - $wordwidth = $this->GetStringWidth($word); - if ($width + $wordwidth <= $maxwidth) { - $width += $wordwidth + $space; - $text .= $word.' '; - } else { - $width = $wordwidth + $space; - $text = rtrim($text)."\n".$word.' '; - $count++; - } - } - $text = rtrim($text)."\n"; - $count++; - } - $text = rtrim($text); - return $count; - } - - static function AddContact($self, $x, $wp = true) - { - /* infamous hack : - 1- we store the current state. - 2- at the end, we find out if we triggered the page break, - -> no ? ok - -> yes ? then we have to create a col, and add the contact again. - */ - $old = clone $self; - - $self->SetFont('Vera Sans', '', 10); - $self->SetDrawColor(0); - $self->SetFillColor(245, 248, 252); - $self->SetLineWidth(0.4); - - $nom = $x['prenom'].' ' - .($x['nom_usage'] ? "{$x['nom_usage']} ({$x['nom']})" : $x['nom']) - ." ({$x['promo']})"; - $ok = false; - - if ($wp) { - $res = XDB::query("SELECT * FROM photo WHERE attachmime IN ('jpeg', 'png') AND uid={?}", - $x['user_id']); - if ($i = $res->numRows()) { - $old2 = clone $self; - $photo = $res->fetchOneAssoc(); - $width = $photo['x'] * 20/$photo['y']; - $GLOBALS["p{$x['user_id']}"] = $photo['attach']; - - $_x = $self->getX(); - $_y = $self->getY(); - $self->Cell(0, 20, '', '', 0, '', 1); - error_reporting(0); - $self->Image("var://p{$x['user_id']}", $_x, $_y, $width, 20, $photo['attachmime']); - error_reporting($self->report); - - if ($self->error) { - $self = clone $old2; - } else { - $self->setX($_x); - $self->Cell($width, 20, '', "T"); - $h = 20 / $self->wordwrap($nom, 90-$width); - $self->MultiCell(0, $h, $nom, 'T', 'C'); - $ok = true; - } - } - } - if (!$ok) { - $self->MultiCell(0, 6, $nom, "T", 'C', 1); - } - - if ($x['mobile']) { - $self->Space(); - $self->TableRow('mobile', $x['mobile'], 'Mono'); - } - - foreach ($x['adr'] as $a) { - $self->Space(); - foreach ($a as &$value) { - if (is_utf8($value)) { - $value = utf8_decode($value); - } - } - $self->Address($a); - } - - if (!empty($x['adr_pro'])) { - foreach ($x['adr_pro'] as $a) { - if ( ! ($a['entreprise'] || $a['tel'] || $a['fax'] - || $a['adr1'] || $a['adr2'] || $a['adr3'] || $a['postcode'] || $a['city']) ) - { - continue; - } - foreach ($a as &$value) { - if (is_utf8($value)) { - $value = utf8_decode($value); - } - } - $self->Space(); - $self->AddressPro($a); - } - } - - $self->Space(0.4, 5); - - if ($self->broken) { - $old->NextCol(); - $self = ContactsPDF::AddContact($old, $x, $wp); - } - - return $self; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/README b/modules/carnet/fonts/README deleted file mode 100644 index 81d2df5..0000000 --- a/modules/carnet/fonts/README +++ /dev/null @@ -1,4 +0,0 @@ - -The files here have been generated with fpdf (http://www.fpdf.org/) font tools -from ttf-bitstream-vera fonts. - diff --git a/modules/carnet/fonts/Vera.php b/modules/carnet/fonts/Vera.php deleted file mode 100644 index 6471fd5..0000000 --- a/modules/carnet/fonts/Vera.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>729,'Flags'=>32,'FontBBox'=>'[-183 -236 1287 928]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600); -$up=-104; -$ut=70; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>318,'!'=>401,'"'=>460,'#'=>838,'$'=>636,'%'=>950,'&'=>780,'\''=>275,'('=>390,')'=>390,'*'=>500,'+'=>838, - ','=>318,'-'=>361,'.'=>318,'/'=>337,'0'=>636,'1'=>636,'2'=>636,'3'=>636,'4'=>636,'5'=>636,'6'=>636,'7'=>636,'8'=>636,'9'=>636,':'=>337,';'=>337,'<'=>838,'='=>838,'>'=>838,'?'=>531,'@'=>1000,'A'=>684, - 'B'=>686,'C'=>698,'D'=>770,'E'=>632,'F'=>575,'G'=>775,'H'=>752,'I'=>295,'J'=>295,'K'=>656,'L'=>557,'M'=>863,'N'=>748,'O'=>787,'P'=>603,'Q'=>787,'R'=>695,'S'=>635,'T'=>611,'U'=>732,'V'=>684,'W'=>989, - 'X'=>685,'Y'=>611,'Z'=>685,'['=>390,'\\'=>337,']'=>390,'^'=>838,'_'=>500,'`'=>500,'a'=>613,'b'=>635,'c'=>550,'d'=>635,'e'=>615,'f'=>352,'g'=>635,'h'=>634,'i'=>278,'j'=>278,'k'=>579,'l'=>278,'m'=>974, - 'n'=>634,'o'=>612,'p'=>635,'q'=>635,'r'=>411,'s'=>521,'t'=>392,'u'=>634,'v'=>592,'w'=>818,'x'=>592,'y'=>592,'z'=>525,'{'=>636,'|'=>337,'}'=>636,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>318,chr(161)=>401,chr(162)=>636,chr(163)=>636,chr(164)=>636,chr(165)=>636,chr(166)=>635,chr(167)=>500,chr(168)=>521,chr(169)=>1000,chr(170)=>471,chr(171)=>612,chr(172)=>838,chr(173)=>361,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>401,chr(179)=>401,chr(180)=>685,chr(181)=>636,chr(182)=>636,chr(183)=>318,chr(184)=>525,chr(185)=>401,chr(186)=>471,chr(187)=>612,chr(188)=>1070,chr(189)=>1023,chr(190)=>611,chr(191)=>531,chr(192)=>684,chr(193)=>684,chr(194)=>684,chr(195)=>684,chr(196)=>684,chr(197)=>684, - chr(198)=>974,chr(199)=>698,chr(200)=>632,chr(201)=>632,chr(202)=>632,chr(203)=>632,chr(204)=>295,chr(205)=>295,chr(206)=>295,chr(207)=>295,chr(208)=>775,chr(209)=>748,chr(210)=>787,chr(211)=>787,chr(212)=>787,chr(213)=>787,chr(214)=>787,chr(215)=>838,chr(216)=>787,chr(217)=>732,chr(218)=>732,chr(219)=>732, - chr(220)=>732,chr(221)=>611,chr(222)=>605,chr(223)=>630,chr(224)=>613,chr(225)=>613,chr(226)=>613,chr(227)=>613,chr(228)=>613,chr(229)=>613,chr(230)=>982,chr(231)=>550,chr(232)=>615,chr(233)=>615,chr(234)=>615,chr(235)=>615,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>612,chr(241)=>634, - chr(242)=>612,chr(243)=>612,chr(244)=>612,chr(245)=>612,chr(246)=>612,chr(247)=>838,chr(248)=>612,chr(249)=>634,chr(250)=>634,chr(251)=>634,chr(252)=>634,chr(253)=>592,chr(254)=>635,chr(255)=>592); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='Vera.z'; -$originalsize=65932; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/Vera.z b/modules/carnet/fonts/Vera.z deleted file mode 100644 index dc32a23799a78e28badc379b68d7021f1a83f5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39919 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,'Descent'=>-236,'CapHeight'=>729,'Flags'=>96,'FontBBox'=>'[-278 -236 1401 928]','ItalicAngle'=>-11,'StemV'=>120,'MissingWidth'=>600); -$up=-111; -$ut=126; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>348,'!'=>456,'"'=>521,'#'=>696,'$'=>696,'%'=>1002,'&'=>872,'\''=>306,'('=>457,')'=>457,'*'=>523,'+'=>838, - ','=>380,'-'=>415,'.'=>380,'/'=>365,'0'=>696,'1'=>696,'2'=>696,'3'=>696,'4'=>696,'5'=>696,'6'=>696,'7'=>696,'8'=>696,'9'=>696,':'=>400,';'=>400,'<'=>838,'='=>838,'>'=>838,'?'=>580,'@'=>1000,'A'=>774, - 'B'=>762,'C'=>734,'D'=>830,'E'=>683,'F'=>683,'G'=>821,'H'=>837,'I'=>372,'J'=>372,'K'=>775,'L'=>637,'M'=>995,'N'=>837,'O'=>850,'P'=>733,'Q'=>850,'R'=>770,'S'=>720,'T'=>682,'U'=>812,'V'=>774,'W'=>1103, - 'X'=>771,'Y'=>724,'Z'=>725,'['=>457,'\\'=>365,']'=>457,'^'=>838,'_'=>500,'`'=>500,'a'=>675,'b'=>716,'c'=>593,'d'=>716,'e'=>678,'f'=>435,'g'=>716,'h'=>712,'i'=>343,'j'=>343,'k'=>665,'l'=>343,'m'=>1042, - 'n'=>712,'o'=>687,'p'=>716,'q'=>716,'r'=>493,'s'=>595,'t'=>478,'u'=>712,'v'=>652,'w'=>924,'x'=>645,'y'=>652,'z'=>582,'{'=>712,'|'=>365,'}'=>712,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>348,chr(161)=>456,chr(162)=>696,chr(163)=>696,chr(164)=>696,chr(165)=>696,chr(166)=>720,chr(167)=>500,chr(168)=>595,chr(169)=>1000,chr(170)=>564,chr(171)=>650,chr(172)=>838,chr(173)=>415,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>438,chr(179)=>438,chr(180)=>725,chr(181)=>736,chr(182)=>636,chr(183)=>380,chr(184)=>582,chr(185)=>438,chr(186)=>564,chr(187)=>650,chr(188)=>1167,chr(189)=>1094,chr(190)=>724,chr(191)=>580,chr(192)=>774,chr(193)=>774,chr(194)=>774,chr(195)=>774,chr(196)=>774,chr(197)=>774, - chr(198)=>1085,chr(199)=>734,chr(200)=>683,chr(201)=>683,chr(202)=>683,chr(203)=>683,chr(204)=>372,chr(205)=>372,chr(206)=>372,chr(207)=>372,chr(208)=>845,chr(209)=>837,chr(210)=>850,chr(211)=>850,chr(212)=>850,chr(213)=>850,chr(214)=>850,chr(215)=>838,chr(216)=>850,chr(217)=>812,chr(218)=>812,chr(219)=>812, - chr(220)=>812,chr(221)=>724,chr(222)=>742,chr(223)=>719,chr(224)=>675,chr(225)=>675,chr(226)=>675,chr(227)=>675,chr(228)=>675,chr(229)=>675,chr(230)=>1048,chr(231)=>593,chr(232)=>678,chr(233)=>678,chr(234)=>678,chr(235)=>678,chr(236)=>343,chr(237)=>343,chr(238)=>343,chr(239)=>343,chr(240)=>687,chr(241)=>712, - chr(242)=>687,chr(243)=>687,chr(244)=>687,chr(245)=>687,chr(246)=>687,chr(247)=>838,chr(248)=>687,chr(249)=>712,chr(250)=>712,chr(251)=>712,chr(252)=>712,chr(253)=>652,chr(254)=>716,chr(255)=>652); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraBI.z'; -$originalsize=63208; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraBI.z b/modules/carnet/fonts/VeraBI.z deleted file mode 100644 index 2ee4581d2bfd2cc3649420396f1bc86867e83354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38239 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,'Descent'=>-236,'CapHeight'=>729,'Flags'=>32,'FontBBox'=>'[-199 -236 1417 928]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600); -$up=-111; -$ut=126; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>348,'!'=>456,'"'=>521,'#'=>838,'$'=>696,'%'=>1002,'&'=>872,'\''=>306,'('=>457,')'=>457,'*'=>523,'+'=>838, - ','=>380,'-'=>415,'.'=>380,'/'=>365,'0'=>696,'1'=>696,'2'=>696,'3'=>696,'4'=>696,'5'=>696,'6'=>696,'7'=>696,'8'=>696,'9'=>696,':'=>400,';'=>400,'<'=>838,'='=>838,'>'=>838,'?'=>580,'@'=>1000,'A'=>774, - 'B'=>762,'C'=>734,'D'=>830,'E'=>683,'F'=>683,'G'=>821,'H'=>837,'I'=>372,'J'=>372,'K'=>775,'L'=>637,'M'=>995,'N'=>837,'O'=>850,'P'=>733,'Q'=>850,'R'=>770,'S'=>720,'T'=>682,'U'=>812,'V'=>774,'W'=>1103, - 'X'=>771,'Y'=>724,'Z'=>725,'['=>457,'\\'=>365,']'=>457,'^'=>838,'_'=>500,'`'=>500,'a'=>675,'b'=>716,'c'=>593,'d'=>716,'e'=>678,'f'=>435,'g'=>716,'h'=>712,'i'=>343,'j'=>343,'k'=>665,'l'=>343,'m'=>1042, - 'n'=>712,'o'=>687,'p'=>716,'q'=>716,'r'=>493,'s'=>595,'t'=>478,'u'=>712,'v'=>652,'w'=>924,'x'=>645,'y'=>652,'z'=>582,'{'=>712,'|'=>365,'}'=>712,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>348,chr(161)=>456,chr(162)=>696,chr(163)=>696,chr(164)=>696,chr(165)=>696,chr(166)=>720,chr(167)=>500,chr(168)=>595,chr(169)=>1000,chr(170)=>564,chr(171)=>646,chr(172)=>838,chr(173)=>415,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>438,chr(179)=>438,chr(180)=>725,chr(181)=>736,chr(182)=>636,chr(183)=>380,chr(184)=>582,chr(185)=>438,chr(186)=>564,chr(187)=>646,chr(188)=>1167,chr(189)=>1094,chr(190)=>724,chr(191)=>580,chr(192)=>774,chr(193)=>774,chr(194)=>774,chr(195)=>774,chr(196)=>774,chr(197)=>774, - chr(198)=>1085,chr(199)=>734,chr(200)=>683,chr(201)=>683,chr(202)=>683,chr(203)=>683,chr(204)=>372,chr(205)=>372,chr(206)=>372,chr(207)=>372,chr(208)=>838,chr(209)=>837,chr(210)=>850,chr(211)=>850,chr(212)=>850,chr(213)=>850,chr(214)=>850,chr(215)=>838,chr(216)=>850,chr(217)=>812,chr(218)=>812,chr(219)=>812, - chr(220)=>812,chr(221)=>724,chr(222)=>738,chr(223)=>719,chr(224)=>675,chr(225)=>675,chr(226)=>675,chr(227)=>675,chr(228)=>675,chr(229)=>675,chr(230)=>1048,chr(231)=>593,chr(232)=>678,chr(233)=>678,chr(234)=>678,chr(235)=>678,chr(236)=>343,chr(237)=>343,chr(238)=>343,chr(239)=>343,chr(240)=>687,chr(241)=>712, - chr(242)=>687,chr(243)=>687,chr(244)=>687,chr(245)=>687,chr(246)=>687,chr(247)=>838,chr(248)=>687,chr(249)=>712,chr(250)=>712,chr(251)=>712,chr(252)=>712,chr(253)=>652,chr(254)=>716,chr(255)=>652); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraBd.z'; -$originalsize=58716; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraBd.z b/modules/carnet/fonts/VeraBd.z deleted file mode 100644 index f5fa4d0a3ecf57293138bb0280796a9437676b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36502 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,'Descent'=>-236,'CapHeight'=>729,'Flags'=>96,'FontBBox'=>'[-262 -236 1259 928]','ItalicAngle'=>-11,'StemV'=>70,'MissingWidth'=>600); -$up=-104; -$ut=70; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>318,'!'=>401,'"'=>460,'#'=>838,'$'=>636,'%'=>950,'&'=>780,'\''=>275,'('=>390,')'=>390,'*'=>500,'+'=>838, - ','=>318,'-'=>361,'.'=>318,'/'=>337,'0'=>636,'1'=>636,'2'=>636,'3'=>636,'4'=>636,'5'=>636,'6'=>636,'7'=>636,'8'=>636,'9'=>636,':'=>337,';'=>337,'<'=>838,'='=>838,'>'=>838,'?'=>531,'@'=>1000,'A'=>684, - 'B'=>686,'C'=>698,'D'=>770,'E'=>632,'F'=>575,'G'=>775,'H'=>752,'I'=>295,'J'=>295,'K'=>656,'L'=>557,'M'=>863,'N'=>748,'O'=>787,'P'=>603,'Q'=>787,'R'=>695,'S'=>635,'T'=>611,'U'=>732,'V'=>684,'W'=>989, - 'X'=>685,'Y'=>611,'Z'=>685,'['=>390,'\\'=>337,']'=>390,'^'=>838,'_'=>500,'`'=>500,'a'=>613,'b'=>635,'c'=>550,'d'=>635,'e'=>615,'f'=>352,'g'=>635,'h'=>634,'i'=>278,'j'=>278,'k'=>579,'l'=>278,'m'=>974, - 'n'=>634,'o'=>612,'p'=>635,'q'=>635,'r'=>411,'s'=>521,'t'=>392,'u'=>634,'v'=>592,'w'=>818,'x'=>592,'y'=>592,'z'=>525,'{'=>636,'|'=>337,'}'=>636,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>318,chr(161)=>401,chr(162)=>636,chr(163)=>636,chr(164)=>636,chr(165)=>636,chr(166)=>635,chr(167)=>500,chr(168)=>521,chr(169)=>1000,chr(170)=>471,chr(171)=>617,chr(172)=>838,chr(173)=>361,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>401,chr(179)=>401,chr(180)=>685,chr(181)=>636,chr(182)=>636,chr(183)=>318,chr(184)=>525,chr(185)=>401,chr(186)=>471,chr(187)=>617,chr(188)=>1070,chr(189)=>1028,chr(190)=>611,chr(191)=>531,chr(192)=>684,chr(193)=>684,chr(194)=>684,chr(195)=>684,chr(196)=>684,chr(197)=>684, - chr(198)=>974,chr(199)=>698,chr(200)=>632,chr(201)=>632,chr(202)=>632,chr(203)=>632,chr(204)=>295,chr(205)=>295,chr(206)=>295,chr(207)=>295,chr(208)=>775,chr(209)=>748,chr(210)=>787,chr(211)=>787,chr(212)=>787,chr(213)=>787,chr(214)=>787,chr(215)=>838,chr(216)=>787,chr(217)=>732,chr(218)=>732,chr(219)=>732, - chr(220)=>732,chr(221)=>611,chr(222)=>608,chr(223)=>630,chr(224)=>613,chr(225)=>613,chr(226)=>613,chr(227)=>613,chr(228)=>613,chr(229)=>613,chr(230)=>995,chr(231)=>550,chr(232)=>615,chr(233)=>615,chr(234)=>615,chr(235)=>615,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>612,chr(241)=>634, - chr(242)=>612,chr(243)=>612,chr(244)=>612,chr(245)=>612,chr(246)=>612,chr(247)=>838,chr(248)=>612,chr(249)=>634,chr(250)=>634,chr(251)=>634,chr(252)=>634,chr(253)=>592,chr(254)=>635,chr(255)=>592); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraIt.z'; -$originalsize=63684; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraIt.z b/modules/carnet/fonts/VeraIt.z deleted file mode 100644 index b172197070f8cc1a150cbe5f6265731f9b340524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38504 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 diff --git a/modules/carnet/fonts/VeraMoBI.php b/modules/carnet/fonts/VeraMoBI.php deleted file mode 100644 index f7694fb..0000000 --- a/modules/carnet/fonts/VeraMoBI.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>729,'Flags'=>97,'FontBBox'=>'[-73 -236 681 928]','ItalicAngle'=>-11,'StemV'=>120,'MissingWidth'=>602); -$up=-108; -$ut=120; -$cw=array( - chr(0)=>602,chr(1)=>602,chr(2)=>602,chr(3)=>602,chr(4)=>602,chr(5)=>602,chr(6)=>602,chr(7)=>602,chr(8)=>602,chr(9)=>602,chr(10)=>602,chr(11)=>602,chr(12)=>602,chr(13)=>602,chr(14)=>602,chr(15)=>602,chr(16)=>602,chr(17)=>602,chr(18)=>602,chr(19)=>602,chr(20)=>602,chr(21)=>602, - chr(22)=>602,chr(23)=>602,chr(24)=>602,chr(25)=>602,chr(26)=>602,chr(27)=>602,chr(28)=>602,chr(29)=>602,chr(30)=>602,chr(31)=>602,' '=>602,'!'=>602,'"'=>602,'#'=>602,'$'=>602,'%'=>602,'&'=>602,'\''=>602,'('=>602,')'=>602,'*'=>602,'+'=>602, - ','=>602,'-'=>602,'.'=>602,'/'=>602,'0'=>602,'1'=>602,'2'=>602,'3'=>602,'4'=>602,'5'=>602,'6'=>602,'7'=>602,'8'=>602,'9'=>602,':'=>602,';'=>602,'<'=>602,'='=>602,'>'=>602,'?'=>602,'@'=>602,'A'=>602, - 'B'=>602,'C'=>602,'D'=>602,'E'=>602,'F'=>602,'G'=>602,'H'=>602,'I'=>602,'J'=>602,'K'=>602,'L'=>602,'M'=>602,'N'=>602,'O'=>602,'P'=>602,'Q'=>602,'R'=>602,'S'=>602,'T'=>602,'U'=>602,'V'=>602,'W'=>602, - 'X'=>602,'Y'=>602,'Z'=>602,'['=>602,'\\'=>602,']'=>602,'^'=>602,'_'=>602,'`'=>602,'a'=>602,'b'=>602,'c'=>602,'d'=>602,'e'=>602,'f'=>602,'g'=>602,'h'=>602,'i'=>602,'j'=>602,'k'=>602,'l'=>602,'m'=>602, - 'n'=>602,'o'=>602,'p'=>602,'q'=>602,'r'=>602,'s'=>602,'t'=>602,'u'=>602,'v'=>602,'w'=>602,'x'=>602,'y'=>602,'z'=>602,'{'=>602,'|'=>602,'}'=>602,'~'=>602,chr(127)=>602,chr(128)=>602,chr(129)=>602,chr(130)=>602,chr(131)=>602, - chr(132)=>602,chr(133)=>602,chr(134)=>602,chr(135)=>602,chr(136)=>602,chr(137)=>602,chr(138)=>602,chr(139)=>602,chr(140)=>602,chr(141)=>602,chr(142)=>602,chr(143)=>602,chr(144)=>602,chr(145)=>602,chr(146)=>602,chr(147)=>602,chr(148)=>602,chr(149)=>602,chr(150)=>602,chr(151)=>602,chr(152)=>602,chr(153)=>602, - chr(154)=>602,chr(155)=>602,chr(156)=>602,chr(157)=>602,chr(158)=>602,chr(159)=>602,chr(160)=>602,chr(161)=>602,chr(162)=>602,chr(163)=>602,chr(164)=>602,chr(165)=>602,chr(166)=>602,chr(167)=>602,chr(168)=>602,chr(169)=>602,chr(170)=>602,chr(171)=>602,chr(172)=>602,chr(173)=>602,chr(174)=>602,chr(175)=>602, - chr(176)=>602,chr(177)=>602,chr(178)=>602,chr(179)=>602,chr(180)=>602,chr(181)=>602,chr(182)=>602,chr(183)=>602,chr(184)=>602,chr(185)=>602,chr(186)=>602,chr(187)=>602,chr(188)=>602,chr(189)=>602,chr(190)=>602,chr(191)=>602,chr(192)=>602,chr(193)=>602,chr(194)=>602,chr(195)=>602,chr(196)=>602,chr(197)=>602, - chr(198)=>602,chr(199)=>602,chr(200)=>602,chr(201)=>602,chr(202)=>602,chr(203)=>602,chr(204)=>602,chr(205)=>602,chr(206)=>602,chr(207)=>602,chr(208)=>602,chr(209)=>602,chr(210)=>602,chr(211)=>602,chr(212)=>602,chr(213)=>602,chr(214)=>602,chr(215)=>602,chr(216)=>602,chr(217)=>602,chr(218)=>602,chr(219)=>602, - chr(220)=>602,chr(221)=>602,chr(222)=>602,chr(223)=>602,chr(224)=>602,chr(225)=>602,chr(226)=>602,chr(227)=>602,chr(228)=>602,chr(229)=>602,chr(230)=>602,chr(231)=>602,chr(232)=>602,chr(233)=>602,chr(234)=>602,chr(235)=>602,chr(236)=>602,chr(237)=>602,chr(238)=>602,chr(239)=>602,chr(240)=>602,chr(241)=>602, - chr(242)=>602,chr(243)=>602,chr(244)=>602,chr(245)=>602,chr(246)=>602,chr(247)=>602,chr(248)=>602,chr(249)=>602,chr(250)=>602,chr(251)=>602,chr(252)=>602,chr(253)=>602,chr(254)=>602,chr(255)=>602); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraMoBI.z'; -$originalsize=55032; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraMoBI.z b/modules/carnet/fonts/VeraMoBI.z deleted file mode 100644 index 9ef6a31b9703cd82ba347f3d9bfe2912a11a13d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30364 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,'Descent'=>-236,'CapHeight'=>729,'Flags'=>33,'FontBBox'=>'[-19 -236 606 928]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>602); -$up=-108; -$ut=120; -$cw=array( - chr(0)=>602,chr(1)=>602,chr(2)=>602,chr(3)=>602,chr(4)=>602,chr(5)=>602,chr(6)=>602,chr(7)=>602,chr(8)=>602,chr(9)=>602,chr(10)=>602,chr(11)=>602,chr(12)=>602,chr(13)=>602,chr(14)=>602,chr(15)=>602,chr(16)=>602,chr(17)=>602,chr(18)=>602,chr(19)=>602,chr(20)=>602,chr(21)=>602, - chr(22)=>602,chr(23)=>602,chr(24)=>602,chr(25)=>602,chr(26)=>602,chr(27)=>602,chr(28)=>602,chr(29)=>602,chr(30)=>602,chr(31)=>602,' '=>602,'!'=>602,'"'=>602,'#'=>602,'$'=>602,'%'=>602,'&'=>602,'\''=>602,'('=>602,')'=>602,'*'=>602,'+'=>602, - ','=>602,'-'=>602,'.'=>602,'/'=>602,'0'=>602,'1'=>602,'2'=>602,'3'=>602,'4'=>602,'5'=>602,'6'=>602,'7'=>602,'8'=>602,'9'=>602,':'=>602,';'=>602,'<'=>602,'='=>602,'>'=>602,'?'=>602,'@'=>602,'A'=>602, - 'B'=>602,'C'=>602,'D'=>602,'E'=>602,'F'=>602,'G'=>602,'H'=>602,'I'=>602,'J'=>602,'K'=>602,'L'=>602,'M'=>602,'N'=>602,'O'=>602,'P'=>602,'Q'=>602,'R'=>602,'S'=>602,'T'=>602,'U'=>602,'V'=>602,'W'=>602, - 'X'=>602,'Y'=>602,'Z'=>602,'['=>602,'\\'=>602,']'=>602,'^'=>602,'_'=>602,'`'=>602,'a'=>602,'b'=>602,'c'=>602,'d'=>602,'e'=>602,'f'=>602,'g'=>602,'h'=>602,'i'=>602,'j'=>602,'k'=>602,'l'=>602,'m'=>602, - 'n'=>602,'o'=>602,'p'=>602,'q'=>602,'r'=>602,'s'=>602,'t'=>602,'u'=>602,'v'=>602,'w'=>602,'x'=>602,'y'=>602,'z'=>602,'{'=>602,'|'=>602,'}'=>602,'~'=>602,chr(127)=>602,chr(128)=>602,chr(129)=>602,chr(130)=>602,chr(131)=>602, - chr(132)=>602,chr(133)=>602,chr(134)=>602,chr(135)=>602,chr(136)=>602,chr(137)=>602,chr(138)=>602,chr(139)=>602,chr(140)=>602,chr(141)=>602,chr(142)=>602,chr(143)=>602,chr(144)=>602,chr(145)=>602,chr(146)=>602,chr(147)=>602,chr(148)=>602,chr(149)=>602,chr(150)=>602,chr(151)=>602,chr(152)=>602,chr(153)=>602, - chr(154)=>602,chr(155)=>602,chr(156)=>602,chr(157)=>602,chr(158)=>602,chr(159)=>602,chr(160)=>602,chr(161)=>602,chr(162)=>602,chr(163)=>602,chr(164)=>602,chr(165)=>602,chr(166)=>602,chr(167)=>602,chr(168)=>602,chr(169)=>602,chr(170)=>602,chr(171)=>602,chr(172)=>602,chr(173)=>602,chr(174)=>602,chr(175)=>602, - chr(176)=>602,chr(177)=>602,chr(178)=>602,chr(179)=>602,chr(180)=>602,chr(181)=>602,chr(182)=>602,chr(183)=>602,chr(184)=>602,chr(185)=>602,chr(186)=>602,chr(187)=>602,chr(188)=>602,chr(189)=>602,chr(190)=>602,chr(191)=>602,chr(192)=>602,chr(193)=>602,chr(194)=>602,chr(195)=>602,chr(196)=>602,chr(197)=>602, - chr(198)=>602,chr(199)=>602,chr(200)=>602,chr(201)=>602,chr(202)=>602,chr(203)=>602,chr(204)=>602,chr(205)=>602,chr(206)=>602,chr(207)=>602,chr(208)=>602,chr(209)=>602,chr(210)=>602,chr(211)=>602,chr(212)=>602,chr(213)=>602,chr(214)=>602,chr(215)=>602,chr(216)=>602,chr(217)=>602,chr(218)=>602,chr(219)=>602, - chr(220)=>602,chr(221)=>602,chr(222)=>602,chr(223)=>602,chr(224)=>602,chr(225)=>602,chr(226)=>602,chr(227)=>602,chr(228)=>602,chr(229)=>602,chr(230)=>602,chr(231)=>602,chr(232)=>602,chr(233)=>602,chr(234)=>602,chr(235)=>602,chr(236)=>602,chr(237)=>602,chr(238)=>602,chr(239)=>602,chr(240)=>602,chr(241)=>602, - chr(242)=>602,chr(243)=>602,chr(244)=>602,chr(245)=>602,chr(246)=>602,chr(247)=>602,chr(248)=>602,chr(249)=>602,chr(250)=>602,chr(251)=>602,chr(252)=>602,chr(253)=>602,chr(254)=>602,chr(255)=>602); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraMoBd.z'; -$originalsize=49052; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraMoBd.z b/modules/carnet/fonts/VeraMoBd.z deleted file mode 100644 index 8aae085f4b99e1fbaa5ce508d4273e88241a6e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27244 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 L9Pa-DW-Dhkql|Vd diff --git a/modules/carnet/fonts/VeraMoIt.php b/modules/carnet/fonts/VeraMoIt.php deleted file mode 100644 index eca7446..0000000 --- a/modules/carnet/fonts/VeraMoIt.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>729,'Flags'=>97,'FontBBox'=>'[-71 -236 691 928]','ItalicAngle'=>-11,'StemV'=>70,'MissingWidth'=>602); -$up=-104; -$ut=69; -$cw=array( - chr(0)=>602,chr(1)=>602,chr(2)=>602,chr(3)=>602,chr(4)=>602,chr(5)=>602,chr(6)=>602,chr(7)=>602,chr(8)=>602,chr(9)=>602,chr(10)=>602,chr(11)=>602,chr(12)=>602,chr(13)=>602,chr(14)=>602,chr(15)=>602,chr(16)=>602,chr(17)=>602,chr(18)=>602,chr(19)=>602,chr(20)=>602,chr(21)=>602, - chr(22)=>602,chr(23)=>602,chr(24)=>602,chr(25)=>602,chr(26)=>602,chr(27)=>602,chr(28)=>602,chr(29)=>602,chr(30)=>602,chr(31)=>602,' '=>602,'!'=>602,'"'=>602,'#'=>602,'$'=>602,'%'=>602,'&'=>602,'\''=>602,'('=>602,')'=>602,'*'=>602,'+'=>602, - ','=>602,'-'=>602,'.'=>602,'/'=>602,'0'=>602,'1'=>602,'2'=>602,'3'=>602,'4'=>602,'5'=>602,'6'=>602,'7'=>602,'8'=>602,'9'=>602,':'=>602,';'=>602,'<'=>602,'='=>602,'>'=>602,'?'=>602,'@'=>602,'A'=>602, - 'B'=>602,'C'=>602,'D'=>602,'E'=>602,'F'=>602,'G'=>602,'H'=>602,'I'=>602,'J'=>602,'K'=>602,'L'=>602,'M'=>602,'N'=>602,'O'=>602,'P'=>602,'Q'=>602,'R'=>602,'S'=>602,'T'=>602,'U'=>602,'V'=>602,'W'=>602, - 'X'=>602,'Y'=>602,'Z'=>602,'['=>602,'\\'=>602,']'=>602,'^'=>602,'_'=>602,'`'=>602,'a'=>602,'b'=>602,'c'=>602,'d'=>602,'e'=>602,'f'=>602,'g'=>602,'h'=>602,'i'=>602,'j'=>602,'k'=>602,'l'=>602,'m'=>602, - 'n'=>602,'o'=>602,'p'=>602,'q'=>602,'r'=>602,'s'=>602,'t'=>602,'u'=>602,'v'=>602,'w'=>602,'x'=>602,'y'=>602,'z'=>602,'{'=>602,'|'=>602,'}'=>602,'~'=>602,chr(127)=>602,chr(128)=>602,chr(129)=>602,chr(130)=>602,chr(131)=>602, - chr(132)=>602,chr(133)=>602,chr(134)=>602,chr(135)=>602,chr(136)=>602,chr(137)=>602,chr(138)=>602,chr(139)=>602,chr(140)=>602,chr(141)=>602,chr(142)=>602,chr(143)=>602,chr(144)=>602,chr(145)=>602,chr(146)=>602,chr(147)=>602,chr(148)=>602,chr(149)=>602,chr(150)=>602,chr(151)=>602,chr(152)=>602,chr(153)=>602, - chr(154)=>602,chr(155)=>602,chr(156)=>602,chr(157)=>602,chr(158)=>602,chr(159)=>602,chr(160)=>602,chr(161)=>602,chr(162)=>602,chr(163)=>602,chr(164)=>602,chr(165)=>602,chr(166)=>602,chr(167)=>602,chr(168)=>602,chr(169)=>602,chr(170)=>602,chr(171)=>602,chr(172)=>602,chr(173)=>602,chr(174)=>602,chr(175)=>602, - chr(176)=>602,chr(177)=>602,chr(178)=>602,chr(179)=>602,chr(180)=>602,chr(181)=>602,chr(182)=>602,chr(183)=>602,chr(184)=>602,chr(185)=>602,chr(186)=>602,chr(187)=>602,chr(188)=>602,chr(189)=>602,chr(190)=>602,chr(191)=>602,chr(192)=>602,chr(193)=>602,chr(194)=>602,chr(195)=>602,chr(196)=>602,chr(197)=>602, - chr(198)=>602,chr(199)=>602,chr(200)=>602,chr(201)=>602,chr(202)=>602,chr(203)=>602,chr(204)=>602,chr(205)=>602,chr(206)=>602,chr(207)=>602,chr(208)=>602,chr(209)=>602,chr(210)=>602,chr(211)=>602,chr(212)=>602,chr(213)=>602,chr(214)=>602,chr(215)=>602,chr(216)=>602,chr(217)=>602,chr(218)=>602,chr(219)=>602, - chr(220)=>602,chr(221)=>602,chr(222)=>602,chr(223)=>602,chr(224)=>602,chr(225)=>602,chr(226)=>602,chr(227)=>602,chr(228)=>602,chr(229)=>602,chr(230)=>602,chr(231)=>602,chr(232)=>602,chr(233)=>602,chr(234)=>602,chr(235)=>602,chr(236)=>602,chr(237)=>602,chr(238)=>602,chr(239)=>602,chr(240)=>602,chr(241)=>602, - chr(242)=>602,chr(243)=>602,chr(244)=>602,chr(245)=>602,chr(246)=>602,chr(247)=>602,chr(248)=>602,chr(249)=>602,chr(250)=>602,chr(251)=>602,chr(252)=>602,chr(253)=>602,chr(254)=>602,chr(255)=>602); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraMoIt.z'; -$originalsize=54508; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraMoIt.z b/modules/carnet/fonts/VeraMoIt.z deleted file mode 100644 index de24404318139795e3dd4f68f993977c3d886a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30513 zcmV(xKjWd=ypoFMe;`s_HfAHT%|`PG=!22_YnabRYo&AqhzcAuJ~8bVwi@ zS%AnUDnte$B8tkOAR@ys$S@2_LiTtr&io4QR+LODEN|O?K}6`a zc(@+#ZmwxN@aCWPA#}VDAyVmH*=c+I@*iUnii$x9pRR9P+Wg1I|Iv?-la}AQw5FpC zso;Yy9fE89(x&eElRx@q973^+Ao=Tty5`mIWTaO^{cr@#Z1B|7eR6c~OOXErZLa}t z=}eFe1X5sD0MYwhT4dEnY&gkJeIhNXY3QtSu15aq4a&I=1#5OG z=YARsdJt;Hyauj1HAj_mjMB8x$~lMpwdKk=K`!5Ye%QHyg0;2ExrlPK_bKNpRIN)< z&ebS9^oVkUTHCtY8<#e8+Tz^_w)C{L3|notZE9m@M`ydIra8%0 z(Be+9uj&7^EB7AFSoVU-(HWOw#3uk z+}P34*xEw#H+b4T(B9JanwCyaU6QT7-Q%GJ-3>MEOFc=p&Q@DZOSi4f)7}9ET5CIN z8e1A$mO?vjAe`pxZ1C9XTU&sz8n?T(xec<@44n;7dsCy^(*j(GkDg9*L?=LHb+($0 zj#hVL4YX&gYjt-uds;ecIw?K%jZK~oTRg3i6|j}H)_1O|Y4=1YFiJp|+gt0p+#Xg< zT_bd@v9_zz!)O>$Aj#I);%@4yqm-;_>}+W5>I7n%8f5@_y&YDw%BS$^t81FG^5?t+}iHBW5;cs z-EE%w8fYlROV-Hr=9+HWLUU_fV|^o4wwk6+P(L_FGU@rTavY|PG(w7)150&%6RD*stw3%Y3jB$ zj!<>zPP>O1UzV4ibWm1O*?5PD2lUP(6Thmpy{^L+?Hi5Jv~6#KEt(GAXoYDYokC^Q z)Ouh%(R#Z;4zvp^TN{0(c~*DAxUto=wZR~(scrJm1iAN6_b9QI zKyyPnUT5oSsZ&Uf9%);mR@ zuMPRnRcl03V7P!tPgA{2*35j{^x~p&TUqh+^7*-?`L=>GTS;kgML}MEo-I1J46dV- zZ1W4sXBN*Zw?U55+@kUYw&Llw+@b}x*#$*;Nw)mTlG6OLGFx$}tzb?`VL?9JD=3;) zI4`fDXohVnlq)JOw-px5DJX|Z%Zpi2rK*DbGFsW3{L*PN;WBq>L197pf+XAYg7P9- z=X9tv*H)5ST3#@1USV#jtz=$lNpV>|)R70(78MjtFNId}=j1~tprUETB@0RmX3Q*4 zfo*k~_69U#1PZGOaMTU`~=PFLzGvjQp~pMrbyrJ45WC z1!m+I<(K9bCfUkL@~0Kh6X0V(Y5ufwmJ@gnoG4`EPAe`d%bz1patfxPY1uQ5s*Tk2ceo0YCJ_PINAytcH{wv<&~2OV#1Uz*a; z+1Zwpn!0M$s+3x93n^d<(KOVG+E6!YM~!GHYCxTUN8^zjCBSbw;LbFZ0cW+4!-l3p zo=(&OM?3PM8q|!E;BEnGf&3|OmW!I;V?(9Bx;ogE2Yx+JW+i;rLC)Ljv7riRGDC*Puw%FqoZTNGW0N6~1yua0OYL0Yzs{dO?A+)$=Q z>7NY_dZ!Co@vu@f#mk?1IBQ~ZqcwYJ9BP4TE2X~^tzsPUuoj1SLhrP}cPq5g#poQO zrjGTXlj&S7q;|4YZyR@SA&JS2O1BA0)%kd`is?ZE{GkJPt-3Gbjk<$UClkU=wBws&Mp{91Y>R@BG$yaxy!qt(||NdTkIVV%w z=F{lTQCc_Dqg9L_&Hqsg-qBDGeQ0Oe+QG^UwOGf#X&XuGmvUkmQ z%9n0mADY=HY-D5FYuPCMor?97@5t0rzSa$s{c!D*d)~%ck$KhywbZb3-d@!)YN^ax zhH+#m-XpqG{4vL zMvu}odF&L9@-?+=?6(f1w@VohUMZ}E)W$n-&4X4mUbiSCx(zx$gFJK1rX+Qo8>zL{^8bg`x_hr`m9f&P_{aJY+?t81EsZXx{UEBR=NX>eyAT+{Ozh@w-u zy&@=8&c+ZeM`@8MEr@6LnY63AD^_?gT4EK^&=`Y;{R<-X)I3S>#h6itKQ5@?&|m;rQ^ zGb(6H-Fl+3|7M&pB~L){mW&1C}u58WoeX)l%IvZoTbC0GL7+z%8gQ<$6Cr|94WhF zPrS8_l+K;B!`s3P*1vqlsX~^!4EUH2`3rn^WPL1PeVwN8R<2Xlds!z6hjDir>m!xy zTxd04(WzXlmexE<>ODH3mG z_#%bHU!6cr4n(!7z#;lc0eu+VhZGqVVh460g!<5VI1aTG4~(GjsxN zMNgqB_&tT*f|?}ck2uz9AG*$Ep&L-gVQw;7!_`A8yU}j^Ai9h?cqClLTFCt+mk4#8 zfc6op6)p=;Q99xGvhX$Z?f~445H5>Wl>>jsdUFt;#u;1@&{mE&kws($@8DOFKcimG zPO2dy{y?~ldQ}e8E7s#~zM6g3u-bdYKGDjp;;Zpt(Te^|zJ>2K=q=Vqgidg!LXl7e zeXNJvd)Rlc@_m6rwfkb}kPcBI0eTkfx$a@lbMpBX3Eh zUm|a&lQ&)^udgF#UwcG2E0MEj`Pa@Y5MFzPymmi-<`=QTnFZvGi~mI|IsIy?aQY^B zHIqiC1~>{`02ZK(RGVIF@ya4c%AU`UF3Kj`I$tH{WMHCCXt_p zk)slMaXC36k)OOu4*xhrIDC`*ID{P9MSf%^2PN{tfdJtJi5v(Z&+j7pp9>K7OXRr) zI^nqhvTq&Pn?s(3i)VAlGZNYJL#?n!B0toU-4c0PB2QJAgr~yElYwNHM4s419+$|@ zUF5MJ_z62C@~A|5>-~gYiENk1HitSg)KM9!+O#)-zoIek*AM4WU)jR!S$k7$wDWof)Z6$vOq^Fp^ufhWInKKzLQj#$UKRZ zOQfvSB$P>{)I{b=q(mac5-BoG6^hEp9ElXJCbMU)6J|?f);dz)PiF2SGbEBHk!cc{ znoe?EQ-$2=#5E;Za7`ss?s45R3R9BFJw`HFB9kOCQ6f3nWkSv_l06|_$Sxxj;z^c7 z#!DpgCK>lC$&g68M8--aO(Lm@Iw94cq|}k*cS#alBw0zKj*O8=f|bNeB#uuO;&zc( zi8%d31ZO&lk%&Vg(GsykihV4xMUkjTe<7-lMEaA6aIFxLPQtY$+{K55T7|H15^5zO zLXHr!iv$Nbg#_iVif#C zh@V9C6460k-7cb)hz4rWNJJe-RJTJx*(;9glJoYE_}4fpf& zlIdQl25A@HARIshsZgj(&wq-DmP4)&J4RnyO zfv==pD*tc4X%`a^hry1MYVbq?(x3&d6zHD72?7$ZfRLaTG@?c&h?*QyE|#IWYF<>U z2%(8sP1$2n>Xm`3X+Wt;_?yZ&beMv&7ewO>LL3&7p>lA$-rHEY zKfU98`g_9V!4=XEv1hPPg5Ka#a+rWWWxa`T`3ra+4=o~*6GdJPJ^3x|(Dg}I)6=lY z!9HZe(Thi+mdjisJrH;6CPMs0;SAIfg-TqRVLDV9p%H>ChRP5>PQ?e9q9P;0!$L!X z0t2iTv&m@i_tWb%YLz0_NSij;X1w%1&V)SrH7611m$r(p+yZe&<8h+So8hr{B4 z!=7bl2hrXr`=`0_M&sTFjN)#A+vnmWsbOEkKO6To-a>I0l}l0_<{HQ*={V_;YVcmE zX18?wX{i=JOOK~<(Qdq#?tF`qKIA8YrxhVaNJC97SG*dj5`uZBH8sr`WWmn)F;!9O z%1G;cOBJs4w?`TcVQID~f3*rDbx?4mJw74TsMhh$7+#g6Q-zIXnsD~431p>6t3SQ} z>h-I}Yj5AUW-`OAY!j1X8Yb!EGsnfoSwu0w8VKEsjg89+3=D$b%yBVUSs5z0P{B{$2WA5?$+s~8phVtlGvs)#=LK;PG( znRbxsF~D0o6pA9z7?h1FT&a;+5%JOChA^U8Y=~Z*wIqIV$|A!OvN$+AED@wEY67%K zqjze?X`?iW`Wzz+hym!XbdB~jn{wdVwHt70yk>%K!!0xP-5Qv|dhdu9RpZ8Iqz4Ak zPKu7`SR99goOe&=`WlPoEN?0-YV7IT?CMBKNk7%|@XOLn2X9Uo2x=^z)6_I)&hnnV z9#>a#^4L?Gd;0K{qGikH%xPLy-1ACWN^0knO{Y%c&}zKD`m5qbNLaqC2ojQ$yK*)2&kJMtAQPxe z|J6$a{YJ{LAj%-BAat1D0KUmw16^Vx-sn$m z+HA*|`wCZVNxHXZ>yeGQkIf)k2S1#8Ve293zw19+F=NI@KRtx)OUE^39sMvk=wxhc z$CA_s`wHIbTD32GJi?rj9Olk2OJhEX(Oe#E3~yxi@_IirF5DT#tRRGOm-G#97R@jc zBVGPt16t~@(u#hF=(PSu;7>Lv4wMAjhdIt@hr>@h-T@- z!DpoZdQAGS{lCCD+i@y49|wSFc1hom3|6S1rTc0Ralm@-UGK2h3@>$9a}9n!IETrcg;#w8uNg#Y}FH*3#JJ-GXP?VE47&*N^X z=R8nWiB|C4{7x9raV{%r*5D?gSw-}mACC-bKdq>z6bwvaE{vUkSnL6IXwsf(H*u%& zFQjRQq&$3@-znuCrYDE-X{h(S^d+|k;z9vsxL;!&xh83{@zEK3uUO6js zb;w^SeoBQM7QAmDLHftjM{w!~(nh=ibRZRfPO3P%bJ%*4Lp+Bt0gdUWW(3?t8U|;8 zOE|54@CNtb0mxqq19msiK~SnI0Q3zJpaGE_)WU(AK^!f8#dwwuCz%GtSu#)Qz|Rg$ z8o;U2Md*?7)>PiXbT!JQ&p~)D&tYQ5h&F%KcvjX~s9`~L5YE6xQvTY&;WOgSe>Fpi zTCfh_|&crUk??B(|gd&Rw~z3RQ1z1qFHw7WHM7M;asxwGUfe^xjvo>iSy zpVgezp49~}#)~nt6^cQ&aw>leCnhi>_h7h>!Dfs%E9P0`z>456OR}bIdw;R*2Ot%Q!^wvr6)h@vjnSw%m4G=c3LxAZ;^sNG zFjs}#8jYw1Wg$eX!fHs;>Wr5z^&8Kc6?@90pMIS}v|%a`l)fMuz=V+H%%Ezu2WNjK z?Q`Jj^OA%!?E~iy^Ie5~vu<8KOh>o~p0OSz9EO&-#v(xwg`nV&P(CnB5Je$J)Cpk% z@;9u|xy>~^a&tJqUj&N4X{s#&Bpk@O%8asi!{x3?2d!m;#!>fer6)-GhlA0pGwOLi}_B^~eHvWH3R97kB{H0-pn( zL**7QnXA!hF~{rGDgpW?YIr@E{NKuOT6VP5<_^gMoar!Nt@hdrYzIIJz?uP3GHb9G zf3oM#XWou{XZqXugPUUnZcro_1~LvvdvM)rRA+eLdO1*RL(5zf0QnL%FW8Wc0N}Uf z@G4t`TLrMPHpp${+-R=Rqq5tq1o5F3PK)6ihg!52I~BoMh6%hLqW_8_1F3&F&0fPw z;qox0ag2};hy_=3*X@IE%}ia8bovjC)s?^RZF+TPLiw>Jr>;M@z4(RM!sWx#4x{1s zudMw`MM;T0>Ow~PUyk1YSbQvSei8Jjf!Vn+XrjxeaYqriC9vJ-H(y_CbjR03c@iyv zr1i)WB3hyoeONeKws=7IKi>x3NyFn543d#<#te{fqiCj(Wqb_WA&WYfKlb*0%O8CM z>tk{rp8fiFS$VInIR1J`UeP=Eo&T&TuNIH}VD@&dbj5uGXS%mwJs)?<87F-yeO2H1 zPT#6)Wi{1*`S>8Nf9&Irqd+D{L5og_Vhx zOlMlK9>rM<$PxzrK(rX_X$<_qhvGcSrmIZ46blaL(s)eq8&WvL1|DP5c zt=xWcbKB!DN!`nvaQsKdKYwH2`un9{{q2LlUBu@$9O$ZFb7(cb(D~3?yBpW{;orsX zXnYytmmhuf_X&{)H(iwe{{GJoUgfHvTkCE=x^7_;jeMs-j|vruXSl)?aqB_YApDwm zkT(KJgS=&7o3g#W?W4D;tcL@A4l_M8TNDA0_ZkRJCGynI%%YNBz5LOB>7S0_lAc!d z?tSM!2T4o6{MGD7$VMvZ`yQ6AfAYBfPbWqy;*hjyPgebQX z1mfVGEXpl*B@AH$(Wv58f|2J{Ia~|s;#K2h9r7o=+t2CTQ z0h5*jrb}1OGEKNbqo`5idpHRcKv^h=*$E&@dV23KfEEQvk#~R;hW@qz`dbCsZg-i% zEMg>(RpLq&=1?FXpaNW$&M@ayfSMXE0B2&pd*CQ3{qA$#PF|PJN^hRT`w!y%R1+$3 zHQ!D4Gk%7-^n8=ZH6gWtc?2wj2;MgdLg6DEmAsu+^WEp1{s=eq@Mvnl9CAqDSK*a_ zAOd+rshM=uM~x*DQ*u}(q?Ek=vb5x&wB#h743eD=W4Ic0G6Le&4X&ApLIUcI!@|YD z2nr2sf<4k6B}CeDB0_~@n}HC_PGxp#OjyJ zH%6#M@v#TCOaHpJyb^O?X0M)>Jav1S^o8_7@7fj|yZ0AgXf&Ar@TuySi%-_Ht!tf< z*SF)hID6*gM8`P8`bYNku9Gf5Bi)jI6B7DhR3u)5C!fQ;J09GA@mS=XRN&bz(2y{O z6|`ujYbt{SNZ=?mP{FB4uQdYEs^P$bmS|}rz(;@#DmU&1#30bQDmGQ6(Fqh!_A66W zVBEZ3S3wE#f8}gATp$@12eE^d_*{A%AKicB;5o2B;nC z055VHMr;&HcZEf*MQg&{#JJY5#^To35RWa&hzubi2GK^HAq=-6xBxIG%}M$Y{^DVvTx_1!8V_1l5{(xFYSJr4u|7c+s@3yjuESDISTAsql( z9S;YEl)4;|21IDC+RfjmRqM1Gd9qavC9w|T{3}$2hbe^5wfGcRL66FTD@m7qu)KoX zW*cm8;Lg|wR#9v?{qW%LsWo3jpEU+*G^os#q!u(t1Jr1M8V#jJSmRBUVU2362;p+6k>E zLV`N4tq-t$9tL+W?9-CO$6K$)hMsf;lQg97Fw8KZImKL;3~=pUu(U9+oLe zNI}aeJrsu~(kzZFJ2^N1mtBAQm)+)AGGRF;2TS(ONyzP;TYDrgsVFkq@$8PgCTHO% zk$89YJyWpXzpBo+cKu?SqMK!N$L*YN-}zKm#~9Fw+9Ho4b!kbG0IvIjtVd7#J}TiF74_X~Cr{jQI?dgE>ndxOzMP zeb$WqFuVi758w?dkFfVvatSNXOP{^Bb@1{Q5Xj&juI^?c_s(E8)l&EZsZfdm|MG%H z3;LkdYI3wpH+i=RnyF^`fV5Zz6!iyrgW~ktur|{HI_ro7-vO(IeWdc7`3uTo>QhIbp(ZtYxy#|$*6 zuwd5fklA?YeI>q?1FN@TT;C>tC5FnP>kpvG;0HsJXZ9`KzAgTM^q`%a`PPK5uhqOe z`D$_5W4|PMhX>5k=f6*pZfaXq{Hn>gi$$ z6&GSl0$i}TaO`3Y;w#hU$Gq>VBN#ZWr2Ry=M zdEVsKTTqc6>eizZt~`jsv4+EHh`Lk+4jOqeU#t`K2wWXP`W&r_BS;M_&jBIvnTNA^$9hK91BFFLuRRRhS2d53CgsgnLM()>^QU z7$6fG*FDo`D&F)c=mEp`h8dkzf-1Mc_=`?cU_vA^`$Da=Vl+d6KcQ@~9#K^ACo09K*HioFz7)KbzOuLCFox3%Ebpr5R- z%uz0;~W2ru5k@Bz^n! z8^Y!9GWZKO6Zs3@Wl)S?3ZrNPo5xN7jBY~iFpWE|Cd@NN3^5x*BALa!>K!O)&fBK} zsfSY{c#~o)DIUf*<~^D^Yf)p%yzQxliyFEANluKI7FYS39p~OiRLEO z;SyphBxp329PBnCw`Q){Y%!^6{G$ad72>DC7V9Vmwe!fddmpx+UWA_*EeqNQJ#d|_8(UB~dfHV=U5gg{ z5D%V+=ZQ}6gCVT<(+A?905}iFVOGJibL&DJ4}SlFlu-Za^KY(yn0wuS+0Uc~+`XrEaEoyH=g*(~nwvj(?I+vY8o^42 zz}Q#=5{yGXcjfr$Ie(ogGAdH7;Z#~vR8(Y+Ru>t?IMaG_c* z1cl%bE*{0>c+P2YTAcyTzzJvquCP>CD*`G4Envv7Dh11NTojJP-g(nMY&ch!Pam{Essww^&hF1}NIXRX`@r^Rg1)Gb%N5BB470G=a^_f&iU+?Z zViiCWweiyROR{q@$zyR86tGb50@8e)@3c#ax6u1wfD-`#+`KF#LQ5qe8@kIc60LX5 zHVI~nS*_9P^nU&ZHI%nl%xwFCR^ET0Hv&M#2rMy1ITj;$0jzb0cuaV16bd&P0WQ%B zRH~5hC=izMES)EoXD|VxjPf+YOoU9QC4;~iRNx>CR(kE5(j4D${QS>3F|xU3!P?}& zXsv&SSYI55fr8=qOCK*`bDn1?@D@i-w zJ|hI(OqAn|QfRT7`R+fuX6eG9MQxZyOX!bI3oUBGXe`aE)ZoZ@L9JGC0P4VzgYyDE z4iu`12!34c1AG`F7V5!eq9zSY@;UC2blpzpag~maf<*>xly;)frR{~!Uihd1L+Qda z!CI>>fjHH%x(Q@FpCx3d$Lpr^(}ij3d|ef(5X#l_bjwM-;8r(iJ-YkIN`9rfThpa` zNWDe-pl+x7Y3<`WCw2D}I9Y%v)ZOoRtqK=>Xu#cXOWYe#(zes!EvFOP!2jY;-%KR+ z1G}lO2kk|h3-+W{!$DrX%WJ8+Y$8{9)8sC3^1%JY~H zt#@UPrcez)2`B`yQRxayx;Yf4(DBNtd8Fo58W3cEKQ&~g5jyt$6cUH!&G)Y2fBa@} z)5Z@T1j4$wtpn!!5u*q65#(2c3Bu*w-?bjz&F`SQ4b&t1b05)d{4d5Ka&849b#&l-{TeI}7H2Z>K!9g;(%ZJ~g>&+m!ozgdCAESJl z%O+4;#)ApSA?xu5ffCLG)Wk>y;Wh}8(S51^cCvj`V|x}Td=}X!{ZOim_!=jE9U)r3 z{a?KzPw7T8$sv9Vvpc~qErDQQt_l#AibhS8()U5^G}M6q-0S$=LUO1a@BbU)Y!F7dPNNt64gMB0XEnhMqhK)j=jb&k z-02@`(x5G&njUNHeCNZ_Jqeqwo=`|la)yT){q#s>3XLUVlqw0ZSgO%C^~RQSQUSpY z$O}4j8;^PTlJ97QIqDmX-o7|$^u}k#q&d@KGvoH5eRvG%1)5WFvBU+BIt z!$EWqALI^_gZx4LLBB&G2SX2r{WMNToj%|}e=IwrDID=l;KtZ9ywkU$N?y{Z%d{s} zbtdMOF0Fk0<5=}O>-uan`&*tqi8HbKhMwcrcU8R8>S%gn!Kn}QT!z6Mwx*!Wed(2i z!oiIPmw0~kgZ{rx)>zH+7G`9eh>JV0!`48#KasA0f~J~~6K!`Dnv5JW2r&-ont6>s zoJGSCW#c04f+NOZwQvDuxZxCHVjMYkGt%?~pq@xiz~-2((a{d4Xs|oXF`_OwCc+V` zU`4iXN1jSzSb13NKAOKHnahF~@2tJN18->njcja-a{-s`pw?yPu*?PpGN8WHRC^(`A>O4bo_{UC-3~{ zk%Avpees9o3m1RBX~Dr_=hR2$wH%%_Vak?=tAAFO5ts1gZ=b+XweH%)#Ful%FIZ6e zVZ)<4?wJD8Sp{@`HC#Fdg8YR5D~N|^{NN-cmCoqdWX@{QDkBqDHpGF@bC^YF$K~2 zr>v2z;Eq;qP8mDC-ZO7Y+Sm!rhdcVDi+y3aFVsE%Qc3>o^J{A!BcIQoU-ebT{r6W@ z&i`Zk>dpS#w0~XQR$lR6r+cxzY31tqR7>gZoqB#9c%4|Z$Q6yYglp%=E^zetg+C(p z1a9{8#6=(tv4zKKi7LdVGRCn%o}E23YjlOl>ROsBv_aDl!L_1R+{(3*R!wV2YiMg& zYj|sfmhP(Y4LYohM6+-7sqEg7nneza`~#h9&L?qQjqfh~{7+fgPYjqZ*Mn)nUWUwNgl`cq{m@$)Q zTj+eD@mjh$`}PSJ=1f$ycPe?yu06|6<-~s$^{acUtpRvrsI=j=zBAJ02%KPyef?F@ z`gEDc-8+yw~U^Knc+ZLW&^;(^)ZIFr-99a<&Ng4GrT$ zz=|7ElHnp@Od^R-qWN;d4Yr6R4GNea7=n6iAw6ad*lU}4d-Ar_WHCG<$-t-Rbt#Ti zHq?TYv38|jHqpk*boMvfd?zg(ZKI91+YuUh17;Z7agjAjUxTtTI8?kTWo%Yk-R=+D zIZLMW&;KdiJKI_COvw`moWVIqTXw%(GIQ3iT0KuihxP5KDzExt*{V&_Pj9X2DUkm0 zkMOXUlT!Ab>YBgsY44TU-Wg3+LiYJ<@L zW0?e+;g$(B!jR)RV9szUi-hiO zYDWa*pbEevMe`vh&+zT_;4^yqdN5~LJb%M+`$sN(XK^Qa?Tom& z^G_Wb>=CVl2Wo0}JYZV_S~3|Saus^30k7WR%F@!=UOzg^tEQ+*#WsiOAJwY2plu?z zMcd2slogaKqQ9ROKoQp4bpEtcm-?x=gOpxfrE}0Dm)wVgJKt1v26%>g{P7vw95K)m zft#O`eusPelKc4Tfz;k!GL@V5XP}aoD#)imr61VWc9+Yaa-K09Q>+ahkght?kWGLf z-uS4$wnvS(kZtPi{=H_CKaH6L7BQK5qm4J1*+7&x0C~5Fn9R3LR1eWBu$gMmKei={ z(frL>>CJF_oPSH0goa{2W=tHhuDnd(v%om&IC>54;++D>B_ z`>^?HdAeFRV!nDC+Nu?`y6>5=zA`F|Q4gQC0i?4Edb;@JN^TwD+Bi&2C5^;1$`tmN z*A8>ee++($yDm!?4pqJ;S_gLFm!+z~>D=^9(iDmtvp^>UEH0j}CJN1RAu+Ax3GP)@T%^4NPKNi>?^2rLaBs3@gdenlEOXH0cjF zCS6OH-SnO3(1$6O%z)X)^yPrPlNk0+f{%i|eU1!Tb#p3~ngcc* zT4%PTWXvv4Tz6=l#gsaB*4*TEhdw!ENosY?UPP|t6*Mmz|M2p`Rouo!UBOc(Z2Ww1 z1GlkeMbPA&Rev7bz*kpKnljsK|A4o5w|@qo0sKDux9tx0&w3~Ocjb=u@3vuhNBaj{ zxQqS!w9j^D^T$^o@>#zwKr2%(VU5Gvonp0 zjT?q;WuL_L9r(1Z4UT*JFO<$I{@u=3-z%M6{5kntIxKy=aU-t4>Wv%seDup7NPll$ zx$@KVJ=lLmCylFaNm2#h09052JNCMYoG}h!jRwOI8D%38c7f1YG{Tw87Ggv+j#pec z;dq(`HZQ{3V~XfeZ#H@GcCsxN$2#bAV5m+<06hY`Qz#IYr`@jnTV!t>3GJzmQH@0N zS+~J`>}>7B$$jCIkJRlyUOavF`}fst`_tUb$zvxht!H?$ZQI~EQQKQu`KwoZr7v1m z-d8?z!MsI(T(Mz8Rb}Os_BERrb_71GQTWi|nrsxzCcU3O(HR7j*#t}=Jc3&m!E83= z7?3rhhgcctH*Ys?i?xIrO(@jhFh`g|b)pQK+4#&h{bwCl)}==v4D7Jn2A+vH`Gxue zeWf#JUwojh#}U>iUGC%OvB;*r^atq>*#IW~;MMIox^3m^dGmVzbwk)vDaSPn=g<3V z+nNWdXZQq0*_+T;6ZN_(y62X#DO^FL_V?2hgHBL(;pT`i_>hUX{Woj2slYyoyh)`o zX{>59bqi+iw%hAh>7=jeuEPk%PVA^b6U6UJUR8MDFR{z}KIw~}cDZLpM?C3HO8V-Z z!B6?>Pgk#ZI+Xn;nLud*`n7AKzaMAN3wE1Y1NdDh*zC3(o!(~W1JQh3#RF2T0+`76 z#BDZv#@KXreYgsvaFs!&iWzf<$$F#oPa2h(N6yxJC+mZQz>m4AtyYMU0Ibp~_>b|=th;dgVp6KvtusDP-z zu%I|(Lvh%KQv*^1Gf^gp zi`?UQVz%GE^zb>mJZH$)3D2Ss)aG(wAvh!$2_YfD^31xZ7ieh6(_k^jD(C{p78HcH z>9+U<1%`$M2UzJGJe|Pk`;E#fgdJ!Ck z2^*~bI4USq34e!HZk45jJ9h6jrDux>zAYsg#25CC@7?rDk4n9G-iBlLHLv`p&t7o6 z@xiAw_%QVs&b;8_d9VDK>;7)vq1u|A>*E&FG5az|>-{GZ927nXwg8YLVjM7CSCtOSTlH(tr^t&X${&a62(Vp$7pA1 zd$?Yc)^5T@D$in;}e7=jp0Qm8P7o9H<+#Ze2H7 zEznhi2i04&_v@Y}PYOHLhsg8lL)v{hJ6k=l46Pn4I%dH7{bTX6*QC%FCP^P31SYNG zrVgGVTfW=JwGPrb=v${iIuJIMvLi>P7D0f*wvJ2BHcnp zc$G@b(W-dNt3h%c9e~uoaWbgy@t?5y1HygHD<>!L6NTso8tQIu@aj$QX*V-6nz1#AKvPeoHxr#Y? z7U*PU5h?;=zGvwV$LBmz{dh#v+^$K9pPW2`e}4ftEPqM*TS4Kh-HTV0^F;&u$r7aO zf1$QOgR)%VgzBc6b|;4hkYtN@)qyQKy#H_49Hx*I`@rA1u84tG?Zh~E0HE8zr#lZ3 zCvB-uI?g`@vDG+q%vBG%uMvghlw`tlFd|b@lG&ruLZDHIvPH4wOF?50Y__NzTV`Cc zfHetG1|x|J6jKs#;QHVl3G3r_;Pq%}W=p8p>hfY8S5eGJ)rr^k?P`|-`}i1LJ*(Zfq3GwiEd z3rbX~RFTIOHAN9KUwvMsO2(YFcEvprlXt9-Ob?kkKJ^EiL~C#Hu7Q0!0?bQihqz*| z+cQF@WIx)xCMwT)m1xqF=gr>Pvg`Vq-neMGg2kDo2=0s+p*&ss*s!Nd2i{knEwaAcCd9cPumB zqHx{>(uf-qAC4&NQp6~Ln+%Il8!&h*lxAd7Y66X{&#dnuq(T_X^oAseQa{Y zEXww^+vB1m=`MbJmG35c6oz75W~}24$e(WtF{373IPwn&HxBgEm7Re}m*^u^w1+r= zy05s{I2p@j$~X=_&@aAwc5iXjia_0*r5VNB3W^>p%dDHF59nMxeGAbaotTxO%DoA;= zIN7scifjIS*OUdnpu5J;Wn}E_Xn(F``fhpixL7r1!TbRlH|5CODV3Gi25ypS$MXF4 z=bmeyyTNvI7u!yL>lW&ey4YUpI25b=wVuyV1EMKx|FCK~q{J(n<54y40-mxRYpNxX zGFC|uP%2H4cZ4x+r~9~_$Wqvz3zjm$my*R&=$hLyu^v+L6biP{zssbgOc{|f?XD>w zk4P~NOW8gwrAo{imh$W2Wf*PVl;0{Tdw@H1EhY|4_i<+xOJS=3jDndys?l9irrkB= z;}I#wVJX{{l*z#B0#@cDZ#%bs?@b|BN2E-I4os5 zO`-A1t%-aq+nuq5>LF@n&q#?xt+vvg$yek6 z#iYc3^eNFhuX#NVO2f zL-f0V*UVQh5PI}{Pe@qsW`o}2=ZuOB3k`utjiMgxhYZ0eI$CFT$~&RXdY?c|r}3Jy zK&e=H_NEf>QtY`W2YZQ$S=j*<7>F%wUm`!nHg?U-!?{~$+h=c?l2xB|^8NkWrvI>F zLVebxbyE1D7ryG^Gmpe3i37WZd=K!*KqRd0vBlbV6WE0Z1&UhYdwK78(zUMcnPVSKUo8s@J@ zfb{BaW%0?v9|5^cMJrwTG0v!|lO|@y>P53NNyp>x%CIM+o(jg5=t=&m^qSylG0se# z-poe_OmfC1@u^cMMyoI~sGO)Z&wVI51tp(LbrZ`J7pLjF;ySFo1vohP3WQ=Re%BU_w7*D|$$qwEQ zZLMF-_o6eWGGpQ#2AdvbgoN^$abuE=Hoe9o>f_>UDob3l$|7ctryWurBa}NNYmC{qZS#tB z%_v>I#$J7N+rreyZLN6NE@rA8LGn9}hCi$x7Zn( zD-Hgy8Jlw>CvKYY;FII$O|F`7{x~5Gi@LXme)=lE;?f8Ep0H1k3FxVgotzXmZ`1sf zABO}Vu-Vr&jVqm!nzv}mgJ)w55r*OgJzKupN$~+%$6pkR*#72ms1R*(6+n1OjQSM1 zD3d}TV$o~GK#ewVpTW8hnY4RzpGiQ^W~1{b7-=bB+ZC- zm=h+(JI17@{z3Z6DE*T@ZJ92=1xkL~%hiD^M(JW#ko3c^||J3UW{g zP2a~AvSzt)zDtA6wSz^hFZSP$^c5-so1AnToubMS0 zZ^Lh@sunF=xbQdY*Zl^57FAXKX8p34X3w58XLjLBjmustESz09d-h9wVXbGzVt--U z#8XF0#z?>BUM~OB_$l{f;)<%Og};@{(puK7|Lwx6s-?4L&+c2+aB_Ab{Rh?b&7M6A zqBSp{LjY|SpgdQc-}C<3=S?rfK64L#9`Vly?GJtCo;~TiXQ`5{eke65euC8&KVeKB z@bE38^c65m<{aG^Zj=Urbr5634gu?|0PlPms94-xI1zUj&XMYz)|{@MM;@54G<{tA zgSW&`|rSu<#*s2pV|~2_Qd@UZ4U`;2nu}n$cygI>L$JZDCj#E5Rin89Mgv_ZHu;U!nZ{aB8aI|t6H^DI ztCxW(@N@lxpOHM%74t>nv*&DAL~PK3ySq(pBBFqzMKCH?7}3M%}=i-VDpSsRGVz&gTG6Db=1lUPj7BD=^Udi>`Sa;yObi9uf2fM#rci z+a|b)&TTScH=3(*n|?&@^V6_*@eS>TCmc3gk-v4=j$`_8XgW3WBT&xBhn#)$UPDid zvPT1hu-zhr*`=cuIKwVoScdEDgTI?C?K{@Ton9pE!I`^!Pmtmb(nh!#7$7`-bB6z| zQ~WV82hPfz)XngD4@|x&bqYQY464RWDZJ-a)#9=)2fN@YDd&`Y) zOJH19?C{05AUxH&WNO=UlhemzJlM_EM=YGM;<-ubIUFW25#fzxm0v$Qw`cqk_o}ea zhVsh4@167D`0~21lF|g(sfgm6*8B#ojQ2Zt{o7*X()aR61W76RZg!hvV!&F=!4ahaF1OqnKc` zm>y|PACsoMl0#m*8i0{P54y;LhrbYJxaAx_1c~B?8By-#?1htOEG(ZswekFfMQ~P@ zH*MMa)SU}g9eI9z+5JVi56xS5@R^5}Jj``GT(`Mt`Tbp;o86n1HE&#bt82rj`+jt( z?!mRoKYHQCUv{uJNdRJ}?<6Cj%_**6%@Lidi9g~epe9blern#JM}GcVBOBY4Vv4_& zmy>0|*ctwUGWLE5uFm(Cvcre@ozls}(g|F67#BcW70}iyehLzi7R9>)<+o1Yqx_4i zCbg*IQJ{tk&@tYmD>J+Ft!wnv69EF-o4ks?#A4v{|J~k~$460R|DIc0@B5Zccc;_c zNtzI{lZ0%fldyykL)Z}l1VR)7Au1rmfC>l!F`|Hi$S5Kc7-SF?m0=tP1w};!1`tsY z9k+2FgF8P)lghjIR&~;eILqhv-hWhbySi(=OV!!#Ip4$L`=FOzLKQpF@cmzk>Rr3K zTheuP31LIn!{V!}kdm`27@$`#xEyhHOME;5x3Ce63^veyF^rReUi$l&`^6V`iu=Zq z`07-A?Q8grkAiKX$wuB}HyL=n!A@32gHor|^E#c9;aMf7j7rvliybRJN+p|T(5N`r z>k!PEy;hY`H&K(k1mOS%whH{O|8KwxZ zgP!5RJ?2_a*xxURbslPgCyww~58|}q!s$n+i}M_)Rmc&K*{>cyaS0teEzW7Ti*L?V zqt%SI;|E6D7}(gzq<73@Hg%k6+!&DO7h1R)NPr!oYC1zFIca0UmcS#BL%lHxCv=Qg z5tnyqdM?UfLr$+dUd3u{NY!Gi^}ESL9XuFJ2s)$8nEDAUqteHNSC8=VL8|9VR$AHL z0Bg6GB@=nrXXf8|9?(u;QO|k1uJ5wTg+xQxAWHt@DnV$tW%YL7JqLEOtTRd#>-F?0 z_mz&wS~Is+nK)FI2K~eaZ!CSali0Rm;&Oj#&?bHnq;j#EL?|Q zb<7?lWFa$t?G<6KM!cOZHyDPMwPFQV$X~$}EIAaV;k7Dw zk5Rp+ILn;VlBgN{b_y&(B|Op{l1)bd;rAsAp)5iHPzCdC`zR*9<3o0HM}Sd_XIEFV z8`-L<542w-_t=E*k&Ex40Cz~ozlT^*autkFL7-|R@0cSQGF~sHBc@I4Q;&B%B33B2 zU7Mnax%O8YQFfktf~&w(wkYJ&SoLbo#3)|S+s(`i@SOfdD@57UD9hBJwe+`TMj44H z`q>eAt{3yq4C=NavwbXI^^i;HT?18IdTV-)p`Rj99)EkaIA-5ku3|$+sH})bD|FiB zdzszsW$b>^nx$eZS0U&j9uh*<*z*vrJ8y~pK=FQp`X)!E=O!*8Y&2@WeBm?WM_9AX zuw>_$&E2G&ka$*5FiaOk$FeV4U9V@5_Tbx9GeS9ib2Wm>I9tzgrav7SQ8%d2mu66D z#GjbGb8;CLy)vdayC@-GDC>CS)w!ZioIbjEK#|978bf%}C3Ke4^50+@m_+jHg^E;y z#-SG=<&}Q$vLo;Z|9-FVa=!ywhv_Bn%L&ucv?<9NF43LZFU=aIQ>%d2I|8iRZ)M%t ziEOr2W?S@ylqXAMXw1t$9656NvXQu2(}zNWk_|I28sX5zv@-kW`~s7Q%+WFDH>?>} z(74ehY#F!Kp0#0I!@ZY|?m_H?n!&5e9K+WYZ+Mt*|C-tE=&0tZs>bD%tX%9V6hpTa z4O(=|15Yvvmu_f@FL00Bz2qK8W=C7I-2OxwHBAtSazdWiS7Hv>UWS)kFRP~cW6jE9=i2f0 zTWZJ8e*8SGE_2|;-;960w7l}ACnoGIDX&ChW-WSuGqBlNNp-cwt~D z5cR6^P>fm6qSuVT#JKdP0$WUh%TQ>`)8s>;E052K#r2||?f5V3^>)RParH`CW>zKz zUd_w^6PApyM4LqfCx(&=v%^;YWAj`T`^|UA*VuebOkcEe-{#FPtX#BvC5n9o<)B7! zo%rS};-wY4cUPccAANyT;{SZ{k@#}OZu~5Dp6dLRJ4oYooG=1ag;r4XXx?TBMvu@3 zM?{Yx@!dg}+ojbp8VI`GuKc{*0Xcj@b}-5rl@)Y4qweo0^ zTPNSU>D!MNm^p6jP3bEt0weApFzQZk#sgJNYfUC}pv)WeP0uVCu@XI0?ivs~WW+s7 zN3ESS*IhXwFJpIN(&(G2s@65Xd47U5DY{~8QsPd(zockj>E`9Zd#VWyO6}arJ<7cT zDmsVN5XuW?_@nHW^gdYObgGl$xdgw%!nOF5S}ZI5bs52o1htOtOmRBgiue?rT@j_w zxKlK`j0p81Y#0rDB2vHWLljt4!VQp^C>5uPhb8K%9VmM04pgro?wAgCZO7kZD*Hcu zf$MO4+*QLzURqzdDCM@v&9PqUhFRX6xv-jz_YUj7{X>>zb32yCc+hyHh)(IKNxQe| zL8PC%a6w$$>YLVO+&e~c&Ww+5tzZwjo#IaM2W!wwq|>#XpR>EL1WBmU(op$-hLbir z);Qj9v$ob!7dz756DmzbVA51hJ0)Rqc#q7aNsOELZ;;Y5$;^PFw@@U_XcOd|OlIw$ zJ?5&$`msYBXN)*fA3x_<-KN*3FPk~0kRYWU;|6V>ynOP_*Fj1{dWvhm0zU}zXoRH- zri4<%F_sLXvF8dUBdBQnxdKKrBRM6ojDiy|IbjH*EQu)n;j=^CriIiW+K>FIcRdPF zM@uZ^u_d@_;>BZ2Cu~dS&WS%IF>6ts_&Bv2pm|&qI|X=%3Te1G3<#_NflV;BOD59w=IAI?2JSd_z<1mkSYrITxBjUncfl4|9Sa8Utx1;Jmxs8ZCfD#t3s8^ zVo!{Rg5~f?Q5+NF3HzcKJENVN;^=5+o>Oa4D`HTzdbQFr!F<@h+JGj&VQ#f=jlr#q zi}ARkofO?)4d&E$q$#3|Bkf&Su^GLk=wA>)Vug}jJ&ARM0_+5{WXK(2nxd~1w>NH7 zzgy;+lToU;e@4>L1G%@Pq|ZpJX^LLZjx6cXZ)`}f<-ghP_AFi|zO}Yvg?RM~n|-_2 z_vl9E*|n(rxwp&|$1oj_%3*Lp4h#<^c!II%X-RCBo47JKHFM11oTKOZ#?HwK&Pj0( zNKbP^U;O}T%n2Ku&Jf7%cKoFamG$4bIasc<&yo4-E)c`jcH#n2F7Fv#n_k&kK4RUd znq^3X_YAt9J^U4NgjnQC1cG9p$07bTbOZ#V#_|f5Is(d`x|dDYbtJplA3&KZ z#wResDMs0`R(y#0gkSs9?cCv?zakW<99p?iT!3a*$PBqujD~w%0SicU3#%p8CsqNa zyrPr<^0rGr!?LI+LERt)vM5lFMOtyAlEiI41;i!Bt}k5Rw0KSYaWC373T^B9O7K?j zohL@#SplzWxX3$$wp78Ff^=td?>pz@AT|dnSZOsX2~GJafR^jWguk?&Mgr396{n06 zr*wVA^2WpKDD?wbEq&RQF;R6RO9rH-B-=EKO0`M= zy^F21W(0-Gpl_rUUn+%NcDX|qgriKuV9@fc;=hUxc)l@(_@i4Im5r)Kb)%-;6ydeCGvifXfo$bQ*@ z{QHJZUFFYPJMy8&3`To?aKOF=Rg3$hVFp1cDI7i9DdrT^c+7ol7IRr?@l?0HkJ)4` zXWNTHn^q((A2YFA{u>-B9@Mradu3(QABWyDdyqJ;!aE>(Xyv{4c5E41((jS_IW4g_ zjTt;7YeUVrb#Wud1L{1EE^`N%Cj2J4LRw}uyuo3HFHKGyF?A(-AkU10JLUd4m1%12 zaaMFlgU|ZqNoRVWgrEDX>{0Gv%ug|6hPqH@Po!TuZ*0^E8iE3>$rGSa#onq#8nr?z zf&OY3fx)`}@l;T+MkQ;LKLPv&1_ErH2U0Ec;#fFF(bt|6zU#X1kQ1LasS}Dki|AToczQ)AwM=!W;$esGyt!YORV#gD^d(#;f*% zBNE8&85)I!Wik^kJTYEf`4KN-JvI5R`H?+;bsM!MFAxJbr7yt8zKcD83F%73a+SD_ux|eSj zMSr0las^%9d%2i~|8MeOFmN0Tg%w;0?wM3r5-N$cyBzvH$-1Z*m#VKeIq0()I9Bzh z*Wr4LeKS#)oaRl8i`6;IdS5V3Fxbp}W1_U20E6v%^AKThpV&Bpj-GM39T!vgL{7xy zU-wRP&z(K6(^**)BUov{9uqm)Il&wU71Y=niziK7vSi|<#Zhe&+hRO1-knq0QYK}j z)ue5&Zu5G)((lZaDa`VT&CL_5m)wo!w@q$KpPZI4DY4|NblT$J#C$~-A ziGP#0)GTOa8>k%O4(S>0by%RF!bd4VP`NCdwYmfywjoJ;>Y7h%Hbn?F_$r0?D)YLo z0OvYoU43DL)uG{Bm!_!V zEqWd+A)J!8Sg;bLH|w>$*{sh~S~!DdwTf$jH6~T7jxpMGCIhRtP_c~%R%OPoiCJ&Q z&*X(8J=*%~hzUJgD*OKUy73dF<}ugM*W#)D$Sj^F4Md3^@qAbF1nWO9^UXa_6o~#P zc|DSu;tD;lWy#R8W}eluCi0EJn-KYxXH>SR%|Z+4)mkifZqSaT;uvv=1Ee-6)mUHV ztO~3xum+`)wf&er_eJDylk>W_v_B)K_wp z>^nIV&AlX6qwSj+?_+4YSp8VXC-^Nm%A_(PThlYw4@*G&xn8+`jAwdb91*O35cAvF z8u7&cx9mks=QrXf>>7IA|BTbl{amSZ`Jw}&~|AxvI>)Cb(gJpYiP z{rw@e-#(P{8~y&2p+>hq)CY^^N5UHZ)hpfdD76%4T*;7fzGcWrt!b7Za{Mywn>0aT z`IYUzc6?bpXAQQOO&vUFdTr_8sZGCKw5V;z!lvyN(*_TohPO;>YHM25*0!jrjnz&Y zJfvp&AZgQ%9e5LyGYvgi(@{QjTJ7M{+G&HEev1#>*~Xq8JZ&1?Ko8rwqr*RR+O(l` z1G&`B9btVbQ_&Ei6)9w`Nb;_4i14mg$lmqjoWVVGEUw2nl@aH#(mB`h)fePF6knO{ z>DP6&+=x955qlIp_EbjfVSDU}yqX~Ik+i(o5n3K6d;Uv%8Y1>6dhCfjN9YkPFgqez zfRm#Iq&*E0dlWtPM4ls%J^1~l{_r$nt2E?~K>d&*KRBvMgP53anTf>+a~&C z@93>AXpdg79$`ce!pU2?D;y`>f_d<$kRHFT%U~&H!ua|^IA9X<;Edd!E>8;T@}wXT zn39)~?3JXT-bV_uU-mw-5az}lU%!3Df={SF)VJS~yFSdjs29HrPKA8nH0w1SQYu)d z*`VRf>z&+so5pQ3=oMH-v@6|RGGakHonz{rhalC`jv-Ye)pFBnx$&P=tx%x~)M~Xx ztySv`7K7DbGuRD|XoyD9Of(zKxzsL=OY73P^e%(T=rXy?E{n(Nv3cwshtm~dvHK*n^dW}J2)R;78^<)&JALbH5V4Cf#BlUb$+WHzCz-s=R6SdMaz}=cjW?{8dcl z>>(BNPVek-m!<4+XPI%Hj$QoK4fu?+d?Hsalz|E6hRh7`?`V}^1_M%-sZbfgT)BMV zvP6u}6cA4usTXk*&9no}_)qRYn*pC@P#RPQlNY?mtMsb8CiUd7x0#uCiJ6=ykGHIF zXNFa6^!}ppW2@>t3u9kcv+`jil$nYLl~=T`yZ26$5fHPGAH+6L&$#@MnrVaM;l{m_ z+l`DzZ^hADam3qBs+x*8#}UUkZZeUfn61YXj|;|kh{gOGZodc91>#LKGh}4f+ul{J zCoccmVS?Wr6`of%4hSJ~?mRRv|w$VSI6D{DdO%d;XJ8l89z;0W%L%0}CXCOe#UG zTQ2|@S+&YyWK~#1IdkDi7^dS)JIRpc`-P`^LXb&{540}qHzn2CXIO0MaE~W6Ic{=; z!LZa~DadwLX5+rukKgyVs9&Q3>-1WIS;oOqWw#SzI7cp!cRl=KDd}^eB;JKm=O=nO zFYgt+ig5P549GwkTn1kPC8&fe;m5&fG?p97TM6b3mj7^J_WnuyOAAx+y7)?qgk(s( zBN2RwTRwrd+#fP%^lHU=Jz#kozg8wI%~(Ypy~3@|{N+pwx@TcwC^gwv66^F2^-r5K zJg+VxKEYsEp;lK7%~?d=p>w#^m6XcmVJZj9ct)af0@F?93NHUUDi>fg9XXk-e*O04 z3qRSyT|tY!|DMEZe2Te^o<9vb+@k{sj*t#?L<7+Y1owvEj8Z3SjhbYO5MZQGtHkXT zRK&d!AE#9SQW4;$BPp`VCqc`Zt{>)1<-T|aMGmkig7IkH+jpSEVdCw#GpAzPXWag1 zIpX-!9eYpB5Wng;v6IQ1Ib)yX?+M&Q!Ha3`y`kaVSVC5Vi;s3;;uys{qpSu8Z?zio zqMcF1Wkz8TtgGz=UdS2cP%8LntKDWcac-jlSb{SYZMACMT{uILu2vLh=z4Je*M}S8 zgNOn<;b!%K9m*GvmZP2XDEQDklwU4RK%3&TjTC|?Frp8N`LGtnF^La#oI5{V{E%1x zD4sRtyV){#Rmz;7pl4LlNUL$O)!<{vY9QgW(sK%XokL@&={b`l&jE%pi`$rkRQ8m- zaZYe>0x7Y0Ef8>0>fR?Mjv^7e7Ab0X_ilbuhnl(C4&*a3Pm2M(Fguj5;bXipYToOO zG2k(Y*7Gh`be>DMTBE8pj)Yo|#!1po8~9i$xCazYqgQZRyeK+00`^@pFlW$ts_RLDKLK=^Fb#||WF01eHEN$+}=^`dQ((y@mS{LT^N0?@ikr?Z- zHtK^kSP`ml^3hHN7OTzf;G>9-n};;l&AZ$LXxta;b-SVkk3HTAp7<7XQj4n2>{*lU z^b%Alp-(Jphm=0P6b;))qm}bf%OS@Sd>ED5!yd4`UmUDu&^O0!j=&0%+)^BNM?yl7 z55@;G9r*c6=ynb>^-o}LX}*2i5FMc{6vMG4rXTz#AJfT|DTFl~`9gFTm z#R!G!x-C|-BP>?3+$&qTZi%pRwMx$(%@fc<5v*;nCN#`|jCuk_WJ6Y67@`PkU=*N8 zz#?Q9JQ2(3Ye84bb0d+B%!P7-837|;CEBTC5n~TOLy~&{nJcETREPcpH^DF@6mqbc zQW}A-oJ(j(*)bG2mig_8^Ws7AZ#A?2zWt5G%TR;3oEPlN<7_ItSeA0se@8yFu6 z^Y^bIn3nIq<6lBBDc#-}=$LafkL#nb zhs)>2V2LLsWTtR zs@Rj9>J)R5uh9r91*>E*>jO?h)7WZ^QutW++~noY&h#c#B#SN99uzsm@0O%sd3V8= z_A9GfkJ~!Vv1+C^aelBPX)dluCa%XN{u?Za)rYe1@2HblMY20i5|0RnS z{-i;3k~w9b=5$2SG`7GRqFCi{8}SqF%3>=$7e9O!PF!iaZh8hOg-;O^*UJ$P3sINR z8b`-z+b$oEdU^!`1pH%%tchV+!PsaYmeNs3Tm?mYgl@r(wXPv_%6WBWB`r_yKjmZ49z4D`8 zH-9b5l~ta6w&b4tsM47kw=ElcbD6Dd+MVOZ^{p$g54|g=Y55&owRY0bL2M|{`mx$ZS+Ml8yo`^tMXGJmGXs#wzr5;%aw&udnJ)3(=TISnmIsuq7;(n`k~kKJu?I(UyOIx5CyHDGQK<@E^B z9uy^L;%UMbYO^!R>854Dj?&DI0vhl4FKoZp$Ns(^05b8f&s5M1#Qz2ed7!w@iH3Ri z#~iZ1`qRHbL`GRnk37=!(@#B7k^lQl?ElZKvz=GTsN?4@85W019dVv`+g^)jaZGb` ztxvI7Xja#%b(H@lO|^|f|zP^1< z6c?O+eNIw!|GC-Eyc{Y#(YFuMAtrfl{>?#>e-~}#^_-JGPo?JvLM9H{u-Gg`#37c> z3SJ;4fS%ECG<7^Tf}aXg(Nu0KubeC^sU}HD?H&5|E1_~oG8vh!tJ#L*<=Dz&!DHgq zcM{*`&mTK>4CIJFGquA^dJ)32=XAO*Eo4uGMAVn*%W}kELQEwjJ-sj)O%9t@dPfP; zs$a*hL8AvtPKw93@>j)cmhOUC}OA ztd=pb2F}16)CP?~YtX6n(gmnVh@l{4#2BFVYP?#n&Z`e!z%8}Edx(0Q(D2)s@T;b> zPyI~a1b?<=Nnr6<|G+@N9B1h>K(i$F?rLuipX)@inHddp?apYuE<2@Rt_}Cp58M^D zkdDyJF9G7hueLl!W=vsO29FPm>&@cvVTEx0t}_n5Hf}T-!>;vf4wB))6djKbelCE& z1_DeDsYpIn1xJmiN91TpJOmbMM&oFIapcKJ{;#ELbiHu2ZQ ztIt1=?|%T_Ka1YK7T+JgK?;tVHROh8;QKobWCVGGKt~IYRVtIp62p!5zpsUC1W7*o z#Hux?HgZ>xn$!Zf=^EF-61$Q!q(;QOgao&CS@OvHOy^35IJkfdU7LfLIhYPuvGlf! zN|8F49~!7tgIc500H~Ga#J9B^OL3ZVlJpSisA#DHEpt-I38$cj!Y(R!74iBLSbe1WLELFUTwHx!MF0P;q>X6Z3K7rc}B&?>^2r;MgZu>-4QK7SxC zJ|WmAu`iZ9Qc}~>Gcx;UW#o+{|=*CTtZGL>qZ=QH^>r>mF-u~OR9Xo%w>zUoZ-}CI= z=bnFI--|E3y#Ege{`ktD4*vPjtFIkC^7xd?0f1l{OIT;9iJYv&aFS=u?X(@KV*{c8J%03Sd4@rsYfU8*NrKDzy*sQ@2* z&HtGW9+^k_fgDIj>?e8Tev*Ept`SACh|ap95_!XJcpC1574RplKYj@-;Xzmfzk%Pu zc6`zM;XEvd^;k;(4okEfVHF(4((pI%1nh$E@!fueZSZ?|3y#7bm=3k@5X^vMPzP_q z+i(Kjf#dKl{0(k_zraa21<%5*@HIRPXW=xQftm1kxD2bI9%jL8Xn;8|7q&tp+zz+F z9WW0TzAk3+bRQDH>C z;d`Q^(sSAQP4|81SjcNya(k6g5v3}k;A^8+Tpq>+k2N}r`wc%&=$iCAkZpjUV{}e> z?rA-p()iOhSIW=FHTgL_EVm(3e$L48xLyc9R|s!IUb!E`rBd$4-0thrvL#}@P=0@L zyE}2ep{?@Rw&3!EygndZ4_R@+bzq23p+xPIs7*J_fV-Klj&AMB<%{JnC8)5JgykPB zdFa6aMlgXHEI@p{?BIYXaAMx&!osx&V!(?zkq`V3fH)FgOZ_bpp)VvsKdgVIKq{m` zI%Gg5^oK0Sh8)a8axn+YhXN>sfl!16iDD>$QWyk-VF(O`G8hKsFdQo2Ca8oFPz57l z6pV&3Fc!wac$fe;!$g<_)i4>Rz*MM#X_PO_z&zm=O#NqKT3?T;{Txj1=VDra8>aSz z*3ZY(p3wS5n9kpYDg9zh>+i;No>2K^m;(|1v=Yjz9aHT#*nw&K?=a_j2J^h%V~+JK?1kqj zUm%=-aE1Nw2h36ah^hUb;2``N4#BIKHyp;?;&pffbGbJ$uX`JFIEk~Jpj?gcva^`) zoWoq^yv%VfVt#W8^Pf-Puap;k4qss2`ZvtW{*JlUWz4s(U{3fA<*VOgF8Tvp#k`Af zuAec#CLFC3VO~Q#_YjA8EKMko5~+|HX|PWizcg$*>QCl~6 ze%&2)Gq}ME?r7v|v-@Y|lF#fk`k78Y2awMkx+N!re&*0mX?qs^l&oQX`R`WT-~T}K z(f=@8m=~B&SR*@`UCqA89%sMfjNG4i#Mkhz2`=G2;d6ymu|)BK(ypvlE>k|OJgOR~ zdS9KQ-m3nGrc`sk=9son`>6Jm&ZBG8{YLN5&)2_c@EMjH8RO%|lco|=vsq`ZH}5n5 z-Qu?lwcKslYI)Ie(YnRvwavDDZJ%i0=csZVjf#%CGwPJn?>rejBzm<==UVQ1-+iC^ zE6-%lBQgDA?vMG}8|OXd{cG&X*f(NN`^NcdeYg3R`0n>@^lkS&=R4>-=6m1wx$iq) zr(f%L`V;(_{*eDB|3v?-{`vl;{s;Y!`*-?Z^uOjm;lB`w57Y$SjVp?~5Z4|*BL4e? z9l`#=2ZQ^9oqdY?JeN2)aYy3CzS_QdeGeoJPijkgKk1+Siu$chHY86^elg`#>ZH`u zX|A-Kw3%sNq)$!Xl72qJmeGL!?#gJ%*pP`bKgj&Czp?++{?GJ3pT%coWL0O)%DOXa zL$)V7lwF(sRnGXF!#RH&U>#7C%jcSNy}A8zb90B}j?S&gZOFYVw&5=e z2v*UGHY*y?rxBDBuS>v#=`2?RC{Rlhy^gE9W7_CxbLZXEIJa@cbUM%5ncdkbW@ii- zmX-#%@^rxxHZrP6cK91hcmcH_fN*08FQ8EhsT)?W;g7(G|Ucjc)f$qi< zUci2%KOz@!==Gq#v4j_hy3rqz3pfo1Fx*(e3q%`@V7#$}7jWI^kH`hwCKH%$Ea8RN zQ5jGI@qwV8C1ie!+cgPIH5B{^UL`fO9ys(JMd>*3+VriRjiQHdQ8duAWE<}P1s36t E>Y*DPLI3~& diff --git a/modules/carnet/fonts/VeraMono.php b/modules/carnet/fonts/VeraMono.php deleted file mode 100644 index 9806559..0000000 --- a/modules/carnet/fonts/VeraMono.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'Descent'=>-236,'CapHeight'=>729,'Flags'=>33,'FontBBox'=>'[-5 -236 606 928]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>602); -$up=-104; -$ut=69; -$cw=array( - chr(0)=>602,chr(1)=>602,chr(2)=>602,chr(3)=>602,chr(4)=>602,chr(5)=>602,chr(6)=>602,chr(7)=>602,chr(8)=>602,chr(9)=>602,chr(10)=>602,chr(11)=>602,chr(12)=>602,chr(13)=>602,chr(14)=>602,chr(15)=>602,chr(16)=>602,chr(17)=>602,chr(18)=>602,chr(19)=>602,chr(20)=>602,chr(21)=>602, - chr(22)=>602,chr(23)=>602,chr(24)=>602,chr(25)=>602,chr(26)=>602,chr(27)=>602,chr(28)=>602,chr(29)=>602,chr(30)=>602,chr(31)=>602,' '=>602,'!'=>602,'"'=>602,'#'=>602,'$'=>602,'%'=>602,'&'=>602,'\''=>602,'('=>602,')'=>602,'*'=>602,'+'=>602, - ','=>602,'-'=>602,'.'=>602,'/'=>602,'0'=>602,'1'=>602,'2'=>602,'3'=>602,'4'=>602,'5'=>602,'6'=>602,'7'=>602,'8'=>602,'9'=>602,':'=>602,';'=>602,'<'=>602,'='=>602,'>'=>602,'?'=>602,'@'=>602,'A'=>602, - 'B'=>602,'C'=>602,'D'=>602,'E'=>602,'F'=>602,'G'=>602,'H'=>602,'I'=>602,'J'=>602,'K'=>602,'L'=>602,'M'=>602,'N'=>602,'O'=>602,'P'=>602,'Q'=>602,'R'=>602,'S'=>602,'T'=>602,'U'=>602,'V'=>602,'W'=>602, - 'X'=>602,'Y'=>602,'Z'=>602,'['=>602,'\\'=>602,']'=>602,'^'=>602,'_'=>602,'`'=>602,'a'=>602,'b'=>602,'c'=>602,'d'=>602,'e'=>602,'f'=>602,'g'=>602,'h'=>602,'i'=>602,'j'=>602,'k'=>602,'l'=>602,'m'=>602, - 'n'=>602,'o'=>602,'p'=>602,'q'=>602,'r'=>602,'s'=>602,'t'=>602,'u'=>602,'v'=>602,'w'=>602,'x'=>602,'y'=>602,'z'=>602,'{'=>602,'|'=>602,'}'=>602,'~'=>602,chr(127)=>602,chr(128)=>602,chr(129)=>602,chr(130)=>602,chr(131)=>602, - chr(132)=>602,chr(133)=>602,chr(134)=>602,chr(135)=>602,chr(136)=>602,chr(137)=>602,chr(138)=>602,chr(139)=>602,chr(140)=>602,chr(141)=>602,chr(142)=>602,chr(143)=>602,chr(144)=>602,chr(145)=>602,chr(146)=>602,chr(147)=>602,chr(148)=>602,chr(149)=>602,chr(150)=>602,chr(151)=>602,chr(152)=>602,chr(153)=>602, - chr(154)=>602,chr(155)=>602,chr(156)=>602,chr(157)=>602,chr(158)=>602,chr(159)=>602,chr(160)=>602,chr(161)=>602,chr(162)=>602,chr(163)=>602,chr(164)=>602,chr(165)=>602,chr(166)=>602,chr(167)=>602,chr(168)=>602,chr(169)=>602,chr(170)=>602,chr(171)=>602,chr(172)=>602,chr(173)=>602,chr(174)=>602,chr(175)=>602, - chr(176)=>602,chr(177)=>602,chr(178)=>602,chr(179)=>602,chr(180)=>602,chr(181)=>602,chr(182)=>602,chr(183)=>602,chr(184)=>602,chr(185)=>602,chr(186)=>602,chr(187)=>602,chr(188)=>602,chr(189)=>602,chr(190)=>602,chr(191)=>602,chr(192)=>602,chr(193)=>602,chr(194)=>602,chr(195)=>602,chr(196)=>602,chr(197)=>602, - chr(198)=>602,chr(199)=>602,chr(200)=>602,chr(201)=>602,chr(202)=>602,chr(203)=>602,chr(204)=>602,chr(205)=>602,chr(206)=>602,chr(207)=>602,chr(208)=>602,chr(209)=>602,chr(210)=>602,chr(211)=>602,chr(212)=>602,chr(213)=>602,chr(214)=>602,chr(215)=>602,chr(216)=>602,chr(217)=>602,chr(218)=>602,chr(219)=>602, - chr(220)=>602,chr(221)=>602,chr(222)=>602,chr(223)=>602,chr(224)=>602,chr(225)=>602,chr(226)=>602,chr(227)=>602,chr(228)=>602,chr(229)=>602,chr(230)=>602,chr(231)=>602,chr(232)=>602,chr(233)=>602,chr(234)=>602,chr(235)=>602,chr(236)=>602,chr(237)=>602,chr(238)=>602,chr(239)=>602,chr(240)=>602,chr(241)=>602, - chr(242)=>602,chr(243)=>602,chr(244)=>602,chr(245)=>602,chr(246)=>602,chr(247)=>602,chr(248)=>602,chr(249)=>602,chr(250)=>602,chr(251)=>602,chr(252)=>602,chr(253)=>602,chr(254)=>602,chr(255)=>602); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraMono.z'; -$originalsize=49224; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraMono.z b/modules/carnet/fonts/VeraMono.z deleted file mode 100644 index 4c6eb767813d6cb2331f4229853a234c329cc301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27930 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

    [toutes les archives]

    - - - -MY-ESCSUBJ -$SUBJECTNA$ - - - -MY-SUBJ -$MY-ESCSUBJ$ - - - -MY-SUBJNA -$MY-ESCSUBJ$ - - - - - - - - - - -précédent - - - -précedent - - - -suivant - - - -suivant - - - -début - - - -fin - - - - -précédent - - - -précedent - - - -suivant - - - -suivant - - - -début - - - -fin - - - - -précédent - - - -précedent - - - -suivant - - - -suivant - - - -début - - - -fin - - - -début - - - -fin - - - - - - - - - - - - - - - - - - - - - -

    Vue de message

    - $TOP-ARCH$ - - - - - - - - - - - - - - - -
    fil précédentmsg. précédentvue par dates/filsmsg. suivantfil suivant
    $BUTTON(TPREVTOP)$$BUTTON(TPREVIN)$ - par dates - / - par fils - $BUTTON(TNEXTIN)$$BUTTON(TNEXTTOP)$
    -
    - - - - - - - - - - - - - - - - - - - - -
    - - --default-: - - - - - -subject -from -to -date - - -subject:strong --default-: - - -
    - - - - - - - -
    {literal} - - - - {/literal}
    - $TSLICE$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Archives de la liste {$$smarty.request.liste} ($PAGENUM$/$NUMOFPAGES$)

    - $TOP-ARCH$ - - - - - - - - - - - - - - - -
     précédentvue par datesuivant 
    $PGLINK(TFIRST)$$PGLINK(TPREV)$par dates$PGLINK(TNEXT)$$PGLINK(TLAST)$
    - - - - -
    - - - - - - - - - - - - - - - - - - - - $MSGLOCALDATE$ - $MY-SUBJ$ - $FROMNAME$ - - - - - - - - -   - [...] -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $MSGLOCALDATE$ - $MY-SUBJ$ - $FROMNAME$ - - - - - - $MSGLOCALDATE$ - $MY-SUBJ$ - $FROMNAME$ - - - - - - - - - <non disponnible> -   - - - - - - - -10;10;1 - - - - - - -
    - - - - - $MSGLOCALDATE$ - $MY-SUBJ$ - $FROMNAME$ - - - - - - $MSGLOCALDATE$ - $MY-SUBJNA$ - $FROMNAME$ - - - - - - - - - - $MSGLOCALDATE$ - $MY-SUBJNA$ - $FROMNAME$ - - - - - - - - - - - - - - -dates.html - - -date - - - - - - - - - - - - - - - - -

    Archives de la liste {$$smarty.request.liste} ($PAGENUM$/$NUMOFPAGES$)

    - $TOP-ARCH$ - - - - - - - - - - - - - - - -
     précédentvue par filssuivant 
    $PGLINK(FIRST)$$PGLINK(PREV)$par fils$PGLINK(NEXT)$$PGLINK(LAST)$
    - - - - -
    - - - - - - - - - - - - $MSGLOCALDATE$ - $MY-SUBJ$ - $FROMNAME$ - - - - - diff --git a/modules/marketing.php b/modules/marketing.php deleted file mode 100644 index 8cb7bbe..0000000 --- a/modules/marketing.php +++ /dev/null @@ -1,350 +0,0 @@ - $this->make_hook('marketing', AUTH_MDP, 'admin'), - 'marketing/promo' => $this->make_hook('promo', AUTH_MDP, 'admin'), - 'marketing/relance' => $this->make_hook('relance', AUTH_MDP, 'admin'), - 'marketing/this_week' => $this->make_hook('week', AUTH_MDP, 'admin'), - 'marketing/volontaire' => $this->make_hook('volontaire', AUTH_MDP, 'admin'), - - 'marketing/private' => $this->make_hook('private', AUTH_MDP, 'admin'), - 'marketing/public' => $this->make_hook('public', AUTH_COOKIE), - 'marketing/broken' => $this->make_hook('broken', AUTH_COOKIE), - ); - } - - function handler_marketing(&$page) - { - $page->changeTpl('marketing/index.tpl'); - - $page->assign('pl_title','Polytechnique.org - Marketing'); - - // Quelques statistiques - - $res = XDB::query( - "SELECT COUNT(*) AS vivants, - COUNT(NULLIF(perms='admin' OR perms='user', 0)) AS inscrits, - 100*COUNT(NULLIF(perms='admin' OR perms='user', 0))/COUNT(*) AS ins_rate, - COUNT(NULLIF(promo >= 1972, 0)) AS vivants72, - COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) AS inscrits72, - 100 * COUNT(NULLIF(promo >= 1972 AND (perms='admin' OR perms='user'), 0)) / - COUNT(NULLIF(promo >= 1972, 0)) AS ins72_rate, - COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS vivantes, - COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) AS inscrites, - 100 * COUNT(NULLIF(FIND_IN_SET('femme', flags) AND (perms='admin' OR perms='user'), 0)) / - COUNT(NULLIF(FIND_IN_SET('femme', flags), 0)) AS inse_rate - FROM auth_user_md5 - WHERE deces = 0"); - $stats = $res->fetchOneAssoc(); - $page->assign('stats', $stats); - - $res = XDB::query("SELECT count(*) FROM auth_user_md5 WHERE date_ins > ". - date('Ymd000000', strtotime('1 week ago'))); - $page->assign('nbInsSem', $res->fetchOneCell()); - - $res = XDB::query("SELECT count(*) FROM register_pending WHERE hash != 'INSCRIT'"); - $page->assign('nbInsEnCours', $res->fetchOneCell()); - - $res = XDB::query("SELECT count(*) FROM register_marketing"); - $page->assign('nbInsMarket', $res->fetchOneCell()); - - $res = XDB::query("SELECT count(*) FROM register_mstats - WHERE TO_DAYS(NOW()) - TO_DAYS(success) <= 7"); - $page->assign('nbInsMarkOK', $res->fetchOneCell()); - } - - function handler_private(&$page, $uid = null, - $action = null, $value = null) - { - global $globals; - $page->changeTpl('marketing/private.tpl'); - - if (is_null($uid)) { - return PL_NOT_FOUND; - } - - $page->assign('path', 'marketing/private/'.$uid); - - $res = XDB::query("SELECT nom, prenom, promo, matricule - FROM auth_user_md5 - WHERE user_id={?} AND perms='pending'", $uid); - - if (list($nom, $prenom, $promo, $matricule) = $res->fetchOneRow()) { - require_once('user.func.inc.php'); - $matricule_X = get_X_mat($matricule); - $page->assign('nom', $nom); - $page->assign('prenom', $prenom); - $page->assign('promo', $promo); - $page->assign('matricule', $matricule); - $page->assign('matricule_X',$matricule_X); - } else { - $page->kill('uid invalide'); - } - - if ($action == 'del') { - Marketing::clear($uid, $value); - } - - if ($action == 'rel') { - $market = Marketing::get($uid, $value); - if ($market == null) { - $page->trigWarning("Aucun marketing n'a été effectué vers $value"); - } else { - $to = $market->user['to']; - $title = $market->getTitle(); - $text = $market->getText(); - $from = $market->sender_mail; - $page->assign('rel_from_user', $from); - $page->assign('rel_from_staff', - '"Equipe Polytechnique.org" mail->domain . '>'); - $page->assign('rel_to', $to); - $page->assign('rel_title', $title); - $page->assign('rel_text', $text); - $page->assign('rel_email', $value); - } - } - - if ($action == 'relforce') { - $market = Marketing::get($uid, Post::v('to')); - if (is_null($market)) { - $market = new Marketing($uid, Post::v('to'), 'default', null, 'staff'); - } - $market->send(Post::v('title'), Post::v('message')); - $page->trigSuccess("Mail envoyé"); - } - - if ($action == 'insrel') { - if (Marketing::relance($uid)) { - $page->trigSuccess('relance faite'); - } - } - - if ($action == 'add' && Post::has('email') && Post::has('type')) { - $market = new Marketing($uid, Post::v('email'), 'default', null, Post::v('type'), S::v('uid')); - $market->add(false); - } - - $res = XDB::iterator( - "SELECT r.*, a.alias - FROM register_marketing AS r - INNER JOIN aliases AS a ON (r.sender=a.id AND a.type = 'a_vie') - WHERE uid={?} - ORDER BY date", $uid); - $page->assign('addr', $res); - - $res = XDB::query("SELECT date, relance FROM register_pending - WHERE uid = {?}", $uid); - if (list($pending, $relance) = $res->fetchOneRow()) { - $page->assign('pending', $pending); - $page->assign('relance', $relance); - } - } - - function handler_broken(&$page, $uid = null) - { - require_once('user.func.inc.php'); - $page->changeTpl('marketing/broken.tpl'); - - if (is_null($uid)) { - return PL_NOT_FOUND; - } - $forlife = get_user_forlife($uid); - if (!$forlife) { - return PL_NOT_FOUND; - } elseif ($forlife == S::v('forlife')) { - pl_redirect('emails/redirect'); - } - - $res = Xdb::query("SELECT u.nom, u.prenom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe, - u.deces = '0000-00-00' AS alive, a.alias AS forlife, b.alias AS bestalias, - IF(e.email IS NOT NULL, e.email, IF(FIND_IN_SET('googleapps', u.mail_storage), 'googleapps', NULL)) AS email, e.last - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') - INNER JOIN aliases AS b ON (b.id = u.user_id AND FIND_IN_SET('bestalias', b.flags)) - LEFT JOIN emails AS e ON (e.flags = 'active' AND e.uid = u.user_id) - WHERE a.alias = {?} - ORDER BY e.panne_level, e.last", $forlife); - if (!$res->numRows()) { - return PL_NOT_FOUND; - } - $user = $res->fetchOneAssoc(); - $page->assign('user', $user); - - $email = null; - if (Post::has('mail')) { - require_once 'emails.inc.php'; - $email = valide_email(Post::v('mail')); - } - if (Post::has('valide') && isvalid_email_redirection($email)) { - // security stuff - check_email($email, "Proposition d'une adresse surveillee pour " . $user['forlife'] . " par " . S::v('forlife')); - $res = XDB::query("SELECT e.flags - FROM emails AS e - INNER JOIN aliases AS a ON (a.id = e.uid) - WHERE e.email = {?} AND a.alias = {?}", $email, $user['forlife']); - $state = $res->numRows() ? $res->fetchOneCell() : null; - if ($state == 'panne') { - $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user['prenom']} et est en panne."); - } elseif ($state == 'active') { - $page->trigWarning("L'adresse que tu as fournie est l'adresse actuelle de {$user['prenom']}"); - } elseif ($user['email'] && !trim(Post::v('comment'))) { - $page->trigError("Il faut que tu ajoutes un commentaire à ta proposition pour justifier le " - ."besoin de changer la redirection de " . $user['prenom']); - } else { - require_once 'validations.inc.php'; - $valid = new BrokenReq(S::i('uid'), $user, $email, trim(Post::v('comment'))); - $valid->submit(); - $page->assign('sent', true); - } - } elseif ($email) { - $page->trigError("L'adresse proposée n'est pas une adresse acceptable pour une redirection"); - } - } - - function handler_promo(&$page, $promo = null) - { - $page->changeTpl('marketing/promo.tpl'); - - if (is_null($promo)) { - $promo = S::v('promo'); - } - $page->assign('promo', $promo); - - $sql = "SELECT u.user_id, u.nom, u.prenom, u.last_known_email, u.matricule_ax, - IF(MAX(m.last) > p.relance, MAX(m.last), p.relance) AS dern_rel, p.email - FROM auth_user_md5 AS u - LEFT JOIN register_pending AS p ON p.uid = u.user_id - LEFT JOIN register_marketing AS m ON m.uid = u.user_id - WHERE u.promo = {?} AND u.deces = 0 AND u.perms='pending' - GROUP BY u.user_id - ORDER BY nom, prenom"; - $page->assign('nonins', XDB::iterator($sql, $promo)); - } - - function handler_public(&$page, $uid = null) - { - $page->changeTpl('marketing/public.tpl'); - - if (is_null($uid)) { - return PL_NOT_FOUND; - } - - $res = XDB::query("SELECT nom, prenom, promo FROM auth_user_md5 - WHERE user_id={?} AND perms='pending'", $uid); - - if (list($nom, $prenom, $promo) = $res->fetchOneRow()) { - $page->assign('prenom', $prenom); - $page->assign('nom', $nom); - $page->assign('promo', $promo); - - if (Post::has('valide')) { - $email = trim(Post::v('mail')); - - if (!isvalid_email_redirection($email)) { - $page->trigError("Email invalide !"); - } else { - // On cherche les marketings précédents sur cette adresse - // email, en se restreignant au dernier mois - - if (Marketing::get($uid, $email, true)) { - $page->assign('already', true); - } else { - $page->assign('ok', true); - check_email($email, "Une adresse surveillée est proposée au marketing par " . S::v('forlife')); - $market = new Marketing($uid, $email, 'default', null, Post::v('origine'), S::v('uid')); - $market->add(); - } - } - } - } - } - - function handler_week(&$page, $sorting = 'per_promo') - { - $page->changeTpl('marketing/this_week.tpl'); - - $sort = $sorting == 'per_promo' ? 'promo' : 'date_ins'; - - $sql = "SELECT a.alias AS forlife, u.date_ins, u.promo, u.nom, u.prenom - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie') - WHERE u.date_ins > ".date("Ymd000000", strtotime ('1 week ago'))." - ORDER BY u.$sort DESC"; - $page->assign('ins', XDB::iterator($sql)); - } - - function handler_volontaire(&$page, $promo = null) - { - $page->changeTpl('marketing/volontaire.tpl'); - - $res = XDB::query( - "SELECT - DISTINCT a.promo - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS a ON a.user_id = m.uid - ORDER BY a.promo"); - $page->assign('promos', $res->fetchColumn()); - - - if (!is_null($promo)) { - $sql = "SELECT a.nom, a.prenom, a.user_id, - m.email, sa.alias AS forlife - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS a ON a.user_id = m.uid AND a.promo = {?} - INNER JOIN aliases AS sa ON (m.sender = sa.id AND sa.type='a_vie') - ORDER BY a.nom"; - $page->assign('addr', XDB::iterator($sql, $promo)); - } - } - - function handler_relance(&$page) - { - $page->changeTpl('marketing/relance.tpl'); - - if (Post::has('relancer')) { - $res = XDB::query("SELECT COUNT(*) FROM auth_user_md5 WHERE deces=0"); - $nbdix = $res->fetchOneCell(); - - $sent = Array(); - foreach (array_keys($_POST['relance']) as $uid) { - if ($tmp = Marketing::relance($uid, $nbdix)) { - $sent[] = $tmp.' a été relancé'; - } - } - $page->assign('sent', $sent); - } - - $sql = "SELECT r.date, r.relance, r.uid, u.promo, u.nom, u.prenom - FROM register_pending AS r - INNER JOIN auth_user_md5 AS u ON r. uid = u.user_id - WHERE hash!='INSCRIT' - ORDER BY date DESC"; - $page->assign('relance', XDB::iterator($sql)); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/newsletter.php b/modules/newsletter.php deleted file mode 100644 index 46cc935..0000000 --- a/modules/newsletter.php +++ /dev/null @@ -1,170 +0,0 @@ - $this->make_hook('nl', AUTH_COOKIE), - 'nl/show' => $this->make_hook('nl_show', AUTH_COOKIE), - 'nl/submit' => $this->make_hook('nl_submit', AUTH_MDP), - 'admin/newsletter' => $this->make_hook('admin_nl', AUTH_MDP, 'admin'), - 'admin/newsletter/categories' => $this->make_hook('admin_nl_cat', AUTH_MDP, 'admin'), - 'admin/newsletter/edit' => $this->make_hook('admin_nl_edit', AUTH_MDP, 'admin'), - ); - } - - function handler_nl(&$page, $action = null) - { - require_once 'newsletter.inc.php'; - - $page->changeTpl('newsletter/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Lettres mensuelles'); - - switch ($action) { - case 'out': Newsletter::unsubscribe(); break; - case 'in': Newsletter::subscribe(); break; - default: ; - } - - $page->assign('nls', Newsletter::subscriptionState()); - $page->assign('nl_list', Newsletter::listSent()); - } - - function handler_nl_show(&$page, $nid = 'last') - { - $page->changeTpl('newsletter/show.tpl'); - - require_once 'newsletter.inc.php'; - - $nl = new NewsLetter($nid); - if (Get::has('text')) { - $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme')); - } else { - $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme')); - } - if (Post::has('send')) { - $res = XDB::query("SELECT hash FROM newsletter_ins WHERE user_id = {?}", S::i('uid')); - $nl->sendTo(S::v('prenom'), S::v('nom'), - S::v('bestalias'), S::v('femme'), - S::v('mail_fmt') != 'texte', - $res->fetchOneCell()); - } - } - - function handler_nl_submit(&$page) - { - $page->changeTpl('newsletter/submit.tpl'); - - require_once 'newsletter.inc.php'; - require_once 'wiki.inc.php'; - wiki_require_page('Xorg.LettreMensuelle'); - - if (Post::has('see') || (Post::has('valid') && (!trim(Post::v('title')) || !trim(Post::v('body'))))) { - if (!Post::has('see')) { - $page->trigError("L'article doit avoir un titre et un contenu"); - } - $art = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append')); - $page->assign('art', $art); - } elseif (Post::has('valid')) { - require_once('validations.inc.php'); - $art = new NLReq(S::v('uid'), Post::v('title'), - Post::v('body'), Post::v('append')); - $art->submit(); - $page->assign('submited', true); - } - $page->addCssLink('nl.css'); - } - - function handler_admin_nl(&$page, $new = false) { - $page->changeTpl('newsletter/admin.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : liste'); - require_once("newsletter.inc.php"); - - if($new) { - Newsletter::create(); - pl_redirect("admin/newsletter"); - } - - $page->assign('nl_list', Newsletter::listAll()); - } - - function handler_admin_nl_edit(&$page, $nid = 'last', $aid = null, $action = 'edit') { - $page->changeTpl('newsletter/edit.tpl'); - $page->addCssLink('nl.css'); - $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : Edition'); - require_once("newsletter.inc.php"); - - $nl = new NewsLetter($nid); - - if($action == 'delete') { - $nl->delArticle($aid); - pl_redirect("admin/newsletter/edit/$nid"); - } - - if($aid == 'update') { - $nl->_title = Post::v('title'); - $nl->_title_mail= Post::v('title_mail'); - $nl->_date = Post::v('date'); - $nl->_head = Post::v('head'); - $nl->_shortname = strlen(Post::v('shortname')) ? Post::v('shortname') : null; - if (preg_match('/^[-a-z0-9]*$/i', $nl->_shortname) && !is_numeric($nl->_shortname)) { - $nl->save(); - } else { - $page->trigError('Le nom de la NL n\'est pas valide'); - pl_redirect('admin/newsletter/edit/' . $nl->_id); - } - } - - if(Post::v('save')) { - $art = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append'), - $aid, Post::v('cid'), Post::v('pos')); - $nl->saveArticle($art); - pl_redirect("admin/newsletter/edit/$nid"); - } - - if($action == 'edit' && $aid != 'update') { - $eaid = $aid; - if(Post::has('title')) { - $art = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append'), - $eaid, Post::v('cid'), Post::v('pos')); - } else { - $art = ($eaid == 'new') ? new NLArticle() : $nl->getArt($eaid); - } - $page->assign('art', $art); - } - - $page->assign_by_ref('nl',$nl); - } - - function handler_admin_nl_cat(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : Catégories'); - $page->assign('title', 'Gestion des catégories de la newsletter'); - $table_editor = new PLTableEditor('admin/newsletter/categories','newsletter_cat','cid'); - $table_editor->describe('titre','intitulé',true); - $table_editor->describe('pos','position',true); - $table_editor->apply($page, $action, $id); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/payment.php b/modules/payment.php deleted file mode 100644 index 38c34f5..0000000 --- a/modules/payment.php +++ /dev/null @@ -1,489 +0,0 @@ -addTo($globals->money->email); - $mymail->setFrom("webmaster@" . $globals->mail->domain); - $mymail->setSubject("erreur lors d'un télépaiement (CyberPaiement)"); - $mymail->setTxtBody("\n\n".var_export($_REQUEST,true)); - $mymail->send(); - exit; -} - -/* sort en affichant une erreur */ -function paypal_erreur($text, $send=true) -{ - global $erreur, $globals; - if ($erreur) return; - $erreur = $text; - if (!$send) return; - - $mymail = new PlMailer(); - $mymail->addTo($globals->money->email); - $mymail->setFrom("webmaster@" . $globals->mail->domain); - $mymail->setSubject("erreur lors d'un télépaiement (PayPal)"); - $mymail->setTxtBody("\n\n".var_export($_REQUEST,true)); - $mymail->send(); - - Platal::page()->trigError($text); -} - -/* http://fr.wikipedia.org/wiki/Formule_de_Luhn */ -function luhn($nombre) { - $s = strrev($nombre); - $sum = 0; - for ($i = 0; $i < strlen($s); $i++) { - $dgt = $s{$i}; - $sum += ($i % 2) ? (2*$dgt) % 9 : $dgt; - } - return $sum % 10; -} - -/* calcule la clé d'acceptation a partir de 5 champs */ -function cle_accept($d1,$d2,$d3,$d4,$d5) -{ - $m1 = luhn($d1.$d5); - $m2 = luhn($d2.$d5); - $m3 = luhn($d3.$d5); - $m4 = luhn($d4.$d5); - $n = $m1 + $m2 + $m3 + $m4; - $alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - return $alpha{$n-1}.$m1.$m2.$m3.$m4; -} - -/* decode the comment */ -function comment_decode($comment) { - $comment = urldecode($comment); - if (is_utf8($comment)) { - return $comment; - } else { - return utf8_encode($comment); - } -} - - -class PaymentModule extends PLModule -{ - function handlers() - { - return array( - 'payment' => $this->make_hook('payment', AUTH_MDP), - 'payment/cyber_return' => $this->make_hook('cyber_return', AUTH_PUBLIC), - 'payment/paypal_return' => $this->make_hook('paypal_return', AUTH_PUBLIC), - '%grp/paiement' => $this->make_hook('xnet_payment', AUTH_MDP), - '%grp/payment' => $this->make_hook('xnet_payment', AUTH_MDP), - '%grp/payment/cyber_return' => $this->make_hook('cyber_return', AUTH_PUBLIC), - '%grp/payment/paypal_return' => $this->make_hook('paypal_return', AUTH_PUBLIC), - 'admin/payments' => $this->make_hook('admin', AUTH_MDP, 'admin'), - - ); - } - - function handler_payment(&$page, $ref = -1) - { - global $globals; - - require_once 'profil.func.inc.php' ; - require_once dirname(__FILE__).'/payment/money.inc.php' ; - - if (!empty($GLOBALS['IS_XNET_SITE'])) { - if (!$globals->asso('id')) { - return PL_NOT_FOUND; - } - $res = XDB::query("SELECT asso_id - FROM paiement.paiements - WHERE asso_id = {?} AND id = {?}", - $globals->asso('id'), $ref); - if (!$res->numRows()) { - return PL_FORBIDDEN; - } - } - $page->changeTpl('payment/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Télépaiements'); - - // initialisation - $op = Env::v('op', 'select'); - $meth = new PayMethod(Env::i('methode', -1)); - $pay = new Payment($ref); - - if($pay->flags->hasflag('old')){ - $page->trigError("La transaction selectionnée est périmée."); - $pay = new Payment(); - } - $val = Env::v('montant') != 0 ? Env::v('montant') : $pay->montant_def; - - if (($e = $pay->check($val)) !== true) { - $page->trigError($e); - } - - if ($op=='submit') { - $pay->init($val, $meth); - $pay->prepareform($pay); - } else { - $res = XDB::iterator("SELECT timestamp, montant - FROM paiement.transactions - WHERE uid = {?} AND ref = {?} - ORDER BY timestamp DESC", - S::v('uid', -1), $ref); - - if ($res->total()) $page->assign('transactions', $res); - } - - $val = floor($val).".".substr(floor(($val - floor($val))*100+100),1); - $page->assign('montant',$val); - $page->assign('comment',Env::v('comment')); - - $page->assign('meth', $meth); - $page->assign('pay', $pay); - $page->assign('evtlink', $pay->event()); - - $page->assign('prefix', $globals->money->mpay_tprefix); - } - - function handler_cyber_return(&$page, $uid = null) - { - /* reference banque (numero de transaction) */ - $champ901 = Env::s('CHAMP901'); - /* cle d'acceptation */ - $champ905 = Env::s('CHAMP905'); - /* code retour */ - $champ906 = Env::s('CHAMP906'); - /* email renvoye par la banque */ - $champ104 = Env::s('CHAMP104'); - /* reference complete de la commande */ - $champ200 = Env::s('CHAMP200'); - /* montant de la transaction */ - $champ201 = Env::s('CHAMP201'); - /* devise */ - $champ202 = Env::s('CHAMP202'); - $montant = "$champ201 $champ202"; - - /* on extrait les informations sur l'utilisateur */ - $res = XDB::query(" - SELECT a.prenom,a.nom,a.promo,l.alias,FIND_IN_SET('femme', a.flags) - FROM auth_user_md5 AS a - INNER JOIN aliases AS l ON (a.user_id=l.id AND type!='homonyme') - WHERE a.user_id={?}", $uid); - if (!list($prenom,$nom,$promo,$forlife,$femme) = $res->fetchOneRow()) { - cb_erreur("uid invalide"); - } - - - /* on extrait la reference de la commande */ - if (!ereg('-xorg-([0-9]+)$',$champ200,$matches)) { - cb_erreur("référence de commande invalide"); - } - - echo ($ref = $matches[1]); - $res = XDB::query("SELECT mail,text,confirmation - FROM paiement.paiements - WHERE id={?}", $ref); - if (!list($conf_mail,$conf_title,$conf_text) = $res->fetchOneRow()) { - cb_erreur("référence de commande inconnue"); - } - - /* on extrait le code de retour */ - if ($champ906 != "0000") { - $res = XDB::query("SELECT rcb.text,c.id,c.text - FROM paiement.codeRCB AS rcb - LEFT JOIN paiement.codeC AS c ON rcb.codeC=c.id - WHERE rcb.id='$champ906'"); - if (list($rcb_text, $c_id, $c_text) = $res->fetchOneRow()) { - cb_erreur("erreur lors du paiement : $c_text ($c_id)"); - } else{ - cb_erreur("erreur inconnue lors du paiement"); - } - } - - /* on fait l'insertion en base de donnees */ - XDB::execute("INSERT INTO paiement.transactions (id,uid,ref,fullref,montant,cle,comment) - VALUES ({?},{?},{?},{?},{?},{?},{?})", - $champ901, $uid, $ref, $champ200, $montant, $champ905,Env::v('comment')); - - /* on genere le mail de confirmation */ - $conf_text = str_replace("",$prenom,$conf_text); - $conf_text = str_replace("",$nom,$conf_text); - $conf_text = str_replace("",$promo,$conf_text); - $conf_text = str_replace("",$montant,$conf_text); - $conf_text = str_replace("",$femme ? "Chère" : "Cher",$conf_text); - $conf_text = str_replace("",$femme ? "Chère" : "Cher",$conf_text); - - global $globals; - $mymail = new PlMailer(); - $mymail->setFrom($conf_mail); - $mymail->addTo("\"$prenom $nom\" <$forlife@" . $globals->mail->domain . '>'); - $mymail->addCc($conf_mail); - $mymail->setSubject($conf_title); - $mymail->setWikiBody($conf_text); - $mymail->send(S::v('mail_fmt') == 'html'); - - /* on envoie les details de la transaction à telepaiement@ */ - $mymail = new PlMailer(); - $mymail->setFrom("webmaster@" . $globals->mail->domain); - $mymail->addTo($globals->money->email); - $mymail->setSubject($conf_title); - $msg = "utilisateur : $prenom $nom ($uid)\n". - "mail : $forlife@polytechnique.org\n\n". - "paiement : $conf_title ($conf_mail)\n". - "reference : $champ200\n". - "montant : $montant\n\n". - "dump de REQUEST:\n". - var_export($_REQUEST,true); - $mymail->setTxtBody($msg); - $mymail->send(); - exit; - } - - function handler_paypal_return(&$page, $uid = null) - { - $page->changeTpl('payment/retour_paypal.tpl'); - - /* reference banque (numero de transaction) */ - $no_transaction = Env::s('tx'); - /* token a renvoyer pour avoir plus d'information */ - $clef = Env::s('sig'); - /* code retour */ - $status = Env::s('st'); - /* raison */ - $reason = ($status == 'Pending')? Env::s('pending_reason'): Env::s('reason_code'); - /* reference complete de la commande */ - $fullref = Env::s('cm'); - /* montant de la transaction */ - $montant_nb = Env::s('amt'); - /* devise */ - $montant_dev = Env::s('cc'); - $montant = "$montant_nb $montant_dev"; - - /* on extrait le code de retour */ - if ($status != "Completed") { - if ($status) - paypal_erreur("erreur lors du paiement : $status - $reason"); - else - paypal_erreur("Paiement annulé", false); - } - - /* on extrait les informations sur l'utilisateur */ - $res = XDB::query(" - SELECT a.prenom,a.nom,a.promo,l.alias,FIND_IN_SET('femme', a.flags) - FROM auth_user_md5 AS a - INNER JOIN aliases AS l ON (a.user_id=l.id AND type!='homonyme') - WHERE a.user_id={?}", $uid); - if (!list($prenom,$nom,$promo,$forlife,$femme) = $res->fetchOneRow()) { - paypal_erreur("uid invalide"); - } - - /* on extrait la reference de la commande */ - if (!ereg('-xorg-([0-9]+)$',$fullref,$matches)) { - paypal_erreur("référence de commande invalide"); - } - - $ref = $matches[1]; - $res = XDB::query("SELECT mail,text,confirmation - FROM paiement.paiements - WHERE id={?}", $ref); - if (!list($conf_mail,$conf_title,$conf_text) = $res->fetchOneRow()) { - paypal_erreur("référence de commande inconnue"); - } - - /* on fait l'insertion en base de donnees */ - XDB::execute("INSERT INTO paiement.transactions (id,uid,ref,fullref,montant,cle,comment) - VALUES ({?},{?},{?},{?},{?},{?},{?})", - $no_transaction, $uid, $ref, $fullref, $montant, $clef, Env::v('comment')); - - /* on genere le mail de confirmation */ - $conf_text = str_replace("",$prenom,$conf_text); - $conf_text = str_replace("",$nom,$conf_text); - $conf_text = str_replace("",$promo,$conf_text); - $conf_text = str_replace("",$montant,$conf_text); - $conf_text = str_replace("",$femme ? "Chère" : "Cher",$conf_text); - $conf_text = str_replace("",$femme ? "Chère" : "Cher",$conf_text); - - global $globals; - $mymail = new PlMailer(); - $mymail->setFrom($conf_mail); - $mymail->addTo("\"$prenom $nom\" <$forlife@" . $globals->mail->domain . '>'); - $mymail->addCc($conf_mail); - $mymail->setSubject($conf_title); - $mymail->setWikiBody($conf_text); - $mymail->send(S::v('mail_fmt') == 'html'); - - /* on envoie les details de la transaction à telepaiement@ */ - $mymail = new PlMailer(); - $mymail->setFrom("webmaster@" . $globals->mail->domain); - $mymail->addTo($globals->money->email); - $mymail->setSubject($conf_title); - $msg = "utilisateur : $prenom $nom ($uid)\n". - "mail : $forlife@polytechnique.org\n\n". - "paiement : $conf_title ($conf_mail)\n". - "reference : $no_transaction\n". - "montant : $montant\n\n". - "dump de REQUEST:\n". - var_export($_REQUEST,true); - $mymail->setTxtBody($msg); - $mymail->send(); - - $page->assign('texte', $conf_text); - $page->assign('erreur', $erreur); - } - - function handler_xnet_payment(&$page, $pid = null) - { - global $globals; - - $perms = S::v('perms'); - if (!$perms->hasFlag('groupmember')) { - if (is_null($pid)) { - return PL_FORBIDDEN; - } - $res = XDB::query("SELECT 1 - FROM groupex.evenements AS e - INNER JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND uid = {?}) - WHERE e.paiement_id = {?} AND e.asso_id = {?}", - S::i('uid'), $pid, $globals->asso('id')); - if ($res->numRows() == 0) { - return PL_FORBIDDEN; - } - } - - if (!is_null($pid)) { - return $this->handler_payment($page, $pid); - } - $page->changeTpl('payment/xnet.tpl'); - - $res = XDB::query( - "SELECT id, text, url - FROM {$globals->money->mpay_tprefix}paiements - WHERE asso_id = {?} AND NOT FIND_IN_SET('old', flags) - ORDER BY id DESC", $globals->asso('id')); - $tit = $res->fetchAllAssoc(); - $page->assign('titres', $tit); - - $order = Env::v('order', 'timestamp'); - $orders = array('timestamp', 'nom', 'promo', 'montant', 'comment'); - if (!in_array($order, $orders)) { - $order = 'timestamp'; - } elseif ($order == 'comment') { - $order = 't.comment'; - } - $inv_order = Env::v('order_inv', 0); - $page->assign('order', $order); - $page->assign('order_inv', !$inv_order); - - if ($order == 'timestamp') { - $inv_order = !$inv_order; - } - - if ($inv_order) { - $inv_order = ' DESC'; - } else { - $inv_order = ''; - } - if ($order == 'montant') { - $order = 'LENGTH(montant) '.$inv_order.', montant'; - } - - $orderby = 'ORDER BY '.$order.$inv_order; - if ($order != 'nom') { - $orderby .= ', nom'; $inv_order = ''; - } - $orderby .= ', prenom'.$inv_order; - if ($order != 'timestamp') { - $orderby .= ', timestamp DESC'; - } - - $trans = array(); - $event = array(); - foreach($tit as $foo) { - $pid = $foo['id']; - if (may_update()) { - $res = XDB::query("SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, - u.prenom, u.promo, a.alias, timestamp AS `date`, t.comment, montant - FROM {$globals->money->mpay_tprefix}transactions AS t - INNER JOIN auth_user_md5 AS u ON ( t.uid = u.user_id ) - INNER JOIN aliases AS a ON ( t.uid = a.id AND a.type='a_vie' ) - WHERE ref = {?} ".$orderby, $pid); - $trans[$pid] = $res->fetchAllAssoc(); - $sum = 0; - foreach ($trans[$pid] as $i => $t) { - $sum += strtr(substr($t['montant'], 0, strpos($t['montant'], 'EUR')), ',', '.'); - $trans[$pid][$i]['montant'] = str_replace('EUR', '€', $t['montant']); - } - $trans[$pid][] = array('nom' => 'somme totale', - 'montant' => strtr($sum, '.', ',').' €'); - } - $res = XDB::iterRow("SELECT e.eid, e.short_name, e.intitule, ep.nb, ei.montant, ep.paid - FROM groupex.evenements AS e - LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND uid = {?}) - INNER JOIN groupex.evenements_items AS ei ON (ep.eid = ei.eid AND ep.item_id = ei.item_id) - WHERE e.paiement_id = {?}", - S::v('uid'), $pid); - $event[$pid] = array(); - $event[$pid]['paid'] = 0; - if ($res->total()) { - $event[$pid]['topay'] = 0; - while(list($eid, $shortname, $title, $nb, $montant, $paid) = $res->next()) { - $event[$pid]['topay'] += ($nb * $montant); - $event[$pid]['eid'] = $eid; - $event[$pid]['shortname'] = $shortname; - $event[$pid]['title'] = $title; - $event[$pid]['ins'] = !is_null($nb); - $event[$pid]['paid'] = $paid; - } - } - $res = XDB::query("SELECT montant - FROM {$globals->money->mpay_tprefix}transactions AS t - WHERE ref = {?} AND uid = {?}", $pid, S::v('uid')); - $montants = $res->fetchColumn(); - - foreach ($montants as $m) { - $p = strtr(substr($m, 0, strpos($m, 'EUR')), ',', '.'); - $event[$pid]['paid'] += trim($p); - } - } - $page->register_modifier('decode_comment', 'decode_comment'); - $page->assign('trans', $trans); - $page->assign('event', $event); - } - - function handler_admin(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Paiements'); - $page->assign('title', 'Gestion des télépaiements'); - $table_editor = new PLTableEditor('admin/payments','paiement.paiements','id'); - $table_editor->add_join_table('paiement.transactions','ref',true); - $table_editor->add_sort_field('flags'); - $table_editor->add_sort_field('id', true, true); - $table_editor->on_delete("UPDATE paiement.paiements SET flags = 'old' WHERE id = {?}", "Le paiement a été archivé"); - $table_editor->describe('text','intitulé',true); - $table_editor->describe('url','site web',false); - $table_editor->describe('montant_def','montant par défaut',false); - $table_editor->describe('montant_min','montant minimum',false); - $table_editor->describe('montant_max','montant maximum',false); - $table_editor->describe('mail','email contact',true); - $table_editor->describe('confirmation','message confirmation',false); - $table_editor->apply($page, $action, $id); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/payment/money.inc.php b/modules/payment/money.inc.php deleted file mode 100644 index c38d1c3..0000000 --- a/modules/payment/money.inc.php +++ /dev/null @@ -1,131 +0,0 @@ -money->mpay_def_id : $ref; - $res = XDB::query("SELECT id, text, url, flags, mail, montant_min, montant_max, montant_def, asso_id - FROM {$globals->money->mpay_tprefix}paiements WHERE id={?}", $r); - list($this->id, $this->text, $this->url, $flags, $this->mail, - $this->montant_min, $this->montant_max, $this->montant_def, $this->asso_id) = $res->fetchOneRow(); - - $this->montant_min = (float)$this->montant_min; - $this->montant_max = (float)$this->montant_max; - $this->flags = new PlFlagSet($flags); - } - - // }}} - // {{{ function check() - - function check($value) - { - $v = (float)strtr($value, ',', '.'); - if ($this->montant_min > $v) { - return "Montant inférieur au minimum autorisé ({$this->montant_min})."; - } elseif ($v > $this->montant_max) { - return "Montant supérieur au maximum autorisé ({$this->montant_max})."; - } else { - return true; - } - } - - // }}} - // {{{ function init() - - function init($val, &$meth) - { - require_once dirname(__FILE__).'/money/'.$meth->inc; - $this->api = new $api($val); - } - - // }}} - // {{{ function prepareform() - - function prepareform() - { - return $this->api->prepareform($this); - } - - function event() - { - if ($this->asso_id) { - $res = XDB::query("SELECT e.eid, a.diminutif - FROM groupex.evenements AS e - INNER JOIN groupex.asso AS a ON (e.asso_id = a.id) - LEFT JOIN groupex.evenements_participants AS p ON (p.eid = e.eid AND p.uid = {?}) - WHERE e.paiement_id = {?} AND p.uid IS NULL", S::i('uid'), $this->id); - if ($res->numRows()) { - return $res->fetchOneAssoc(); - } - } - return null; - } - // }}} -} - -// {{{ class PayMethod - -class PayMethod -{ - // {{{ properties - - var $id; - var $text; - var $inc; - - // }}} - // {{{ constructor - - function PayMethod($id=-1) - { - global $globals; - $i = $id==-1 ? $globals->money->mpay_def_meth : $id; - $res = XDB::query("SELECT id,text,include FROM {$globals->money->mpay_tprefix}methodes WHERE id={?}", $i); - list($this->id, $this->text, $this->inc) = $res->fetchOneRow(); - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/payment/money/cyberpaiement.inc.php b/modules/payment/money/cyberpaiement.inc.php deleted file mode 100644 index c79935c..0000000 --- a/modules/payment/money/cyberpaiement.inc.php +++ /dev/null @@ -1,96 +0,0 @@ -val = strtr(sprintf("%.02f", (float)$val), '.', ','); - } - - // }}} - // {{{ function form() - - function prepareform(&$pay) - { - // toute la doc se trouve sur - // http://www.cyberpaiement.tm.fr/donnees.htm - - global $globals, $platal; - - $roboturl = str_replace("https://","http://", $globals->baseurl) - . '/' . $platal->ns . "payment/cyber_return/".S::v('uid')."?comment=".urlencode(Env::v('comment'))."&CHAMPBPX"; - $req = XDB::query("SELECT IF(nom_usage!='', nom_usage, nom) AS nom - FROM auth_user_md5 - WHERE user_id = {?}",S::v('uid')); - $name = $req->fetchOneCell(); - - // on constuit la reference de la transaction - $prefix = ($pay->flags->hasflag('unique')) ? str_pad("",15,"0") : rand_url_id(); - $fullref = substr("$prefix-xorg-{$pay->id}",-15); - - $this->urlform = "https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01.exe"; - $this->infos['commercant'] = Array( - 'CHAMP000' => 510879, - 'CHAMP001' => 5965, - 'CHAMP002' => 5429159012, - 'CHAMP003' => "I", - 'CHAMP004' => "Polytechnique.org", - 'CHAMP005' => $roboturl, - 'CHAMP006' => "Polytechnique.org", - 'CHAMP007' => $pay->url ? $pay->url : $globals->baseurl . '/' . $platal->ns, - 'CHAMP008' => $pay->mail); - $this->infos['client'] = Array( - 'CHAMP100' => replace_accent($name), - 'CHAMP101' => replace_accent(S::v('prenom')), - 'CHAMP102' => '.', - 'CHAMP103' => '.', - 'CHAMP104' => S::v('bestalias').'@' . $globals->mail->domain, - 'CHAMP106' => '.', - 'CHAMP107' => '.', - 'CHAMP108' => '.', - 'CHAMP109' => '.', - 'CHAMP110' => '.'); - $this->infos['commande'] = Array( - 'CHAMP200' => $fullref, - 'CHAMP201' => $this->val, - 'CHAMP202' => "EUR"); - $this->infos['divers'] = Array('CHAMP900' => '01'); - } - - // }}} -} - -$api = 'CyberPayment'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/payment/money/paypal.inc.php b/modules/payment/money/paypal.inc.php deleted file mode 100644 index e1b4d0f..0000000 --- a/modules/payment/money/paypal.inc.php +++ /dev/null @@ -1,110 +0,0 @@ -val_number = $val; - } - - // }}} - // {{{ function form() - - function prepareform(&$pay) - { - // toute la doc sur : - // https://www.paypal.com/fr_FR/pdf/integration_guide.pdf - // attention : le renvoi automatique ne fonctionne que si - // on oblige les gens à créer un compte paypal - // nous ne l'utilisons pas ; il faut donc que l'utilisateur - // revienne sur le site - global $globals, $platal; - - $this->urlform = 'https://'.$globals->money->paypal_site.'/cgi-bin/webscr'; - $req = XDB::query("SELECT IF(nom_usage!='', nom_usage, nom) AS nom - FROM auth_user_md5 - WHERE user_id = {?}",S::v('uid')); - $name = $req->fetchOneCell(); - - $roboturl = str_replace("https://","http://",$globals->baseurl) - . '/' . $platal->ns . "payment/paypal_return/".S::v('uid')."?comment=".urlencode(Env::v('comment')); - - $this->infos = Array(); - - $this->infos['commercant'] = Array( - 'business' => $globals->money->paypal_compte, - 'rm' => 2, - 'return' => $roboturl, - 'cn' => 'Commentaires', - 'no_shipping' => 1, - 'cbt' => empty($GLOBALS['IS_XNET_SITE']) ? - 'Revenir sur polytechnique.org' : - 'Revenir sur polytechnique.net'); - - $info_client = Array( - 'first_name' => S::v('prenom'), - 'last_name' => $name, - 'email' => S::v('bestalias').'@' . $globals->mail->domain); - - $res = XDB::query( - "SELECT a.adr1 AS address1, a.adr2 AS address2, - a.city, a.postcode AS zip, a.country, - IF(t.tel, t.tel, q.profile_mobile) AS night_phone_b - FROM auth_user_quick AS q - LEFT JOIN adresses AS a ON (q.user_id = a.uid AND FIND_IN_SET('active', a.statut)) - LEFT JOIN tels AS t ON (t.uid = a.uid AND t.adrid = a.adrid) - WHERE q.user_id = {?} - LIMIT 1", S::v('uid')); - $this->infos['client'] = array_map('replace_accent', array_merge($info_client, $res->fetchOneAssoc())); - - // on constuit la reference de la transaction - $prefix = ($pay->flags->hasflag('unique')) ? str_pad("",15,"0") : rand_url_id(); - $fullref = substr("$prefix-xorg-{$pay->id}",-15); - - $this->infos['commande'] = Array( - 'item_name' => replace_accent($pay->text), - 'amount' => $this->val_number, - 'currency_code' => 'EUR', - 'custom' => $fullref); - - $this->infos['divers'] = Array('cmd' => '_xclick'); - } - - // }}} -} - -$api = 'PayPal'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/platal.php b/modules/platal.php deleted file mode 100644 index 092d63e..0000000 --- a/modules/platal.php +++ /dev/null @@ -1,476 +0,0 @@ -$bug"; - } - - return join(',', $ans); -} - - -class PlatalModule extends PLModule -{ - function handlers() - { - return array( - 'index' => $this->make_hook('index', AUTH_PUBLIC), - 'cacert.pem' => $this->make_hook('cacert', AUTH_PUBLIC), - 'changelog' => $this->make_hook('changelog', AUTH_PUBLIC), - - // Preferences thingies - 'prefs' => $this->make_hook('prefs', AUTH_COOKIE), - 'prefs/rss' => $this->make_hook('prefs_rss', AUTH_COOKIE), - 'prefs/webredirect' - => $this->make_hook('webredir', AUTH_MDP), - 'prefs/skin' => $this->make_hook('skin', AUTH_COOKIE), - - // password related thingies - 'password' => $this->make_hook('password', AUTH_MDP), - 'tmpPWD' => $this->make_hook('tmpPWD', AUTH_PUBLIC), - 'password/smtp' => $this->make_hook('smtppass', AUTH_MDP), - 'recovery' => $this->make_hook('recovery', AUTH_PUBLIC), - 'exit' => $this->make_hook('exit', AUTH_PUBLIC), - 'review' => $this->make_hook('review', AUTH_PUBLIC), - 'deconnexion.php' => $this->make_hook('exit', AUTH_PUBLIC), - ); - } - - function handler_index(&$page) - { - if (S::logged()) { - pl_redirect('events'); - } else if (!@$GLOBALS['IS_XNET_SITE']) { - pl_redirect('review'); - } - } - - function handler_cacert(&$page) - { - $data = file_get_contents("/etc/ssl/xorgCA/cacert.pem","r"); - header("Pragma:"); - header("Set-Cookie:"); - header("Cache-Control:"); - header("Expires:"); - header("Content-Type: application/x-x509-ca-cert"); - header("Content-Length: ".strlen($data)); - echo $data; - exit; - } - - function handler_changelog(&$page) - { - $page->changeTpl('platal/changeLog.tpl'); - - $clog = pl_entities(file_get_contents(dirname(__FILE__).'/../ChangeLog')); - $clog = preg_replace('/=+\s*/', '
    ', $clog);
    -        // url catch only (not all wiki syntax)
    -        $clog = preg_replace(array(
    -            '/((?:https?|ftp):\/\/(?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/ui',
    -            '/(\s|^)www\.((?:\.*,*[\w@~%$£µ&i#\-+=_\/\?;])*)/iu',
    -            '/(?:mailto:)?([a-z0-9.\-+_]+@([\-.+_]?[a-z0-9])+)/i'),
    -          array(
    -            '\\0',
    -            '\\1www.\\2',
    -            '\\0'),
    -          $clog);
    -        $clog = preg_replace('!(#[0-9]+(,[0-9]+)*)!e', 'bugize("\1")', $clog);
    -        $clog = preg_replace('!vim:.*$!', '', $clog);
    -        $clog = preg_replace("!(
    (\\s|\n)*)?
    (\s|\n)*
    ((\\s|\n)*
    )?!m", "", "
    $clog
    "); - $page->assign('ChangeLog', $clog); - } - - function __set_rss_state($state) - { - if ($state) { - $_SESSION['core_rss_hash'] = rand_url_id(16); - XDB::execute('UPDATE auth_user_quick - SET core_rss_hash={?} WHERE user_id={?}', - S::v('core_rss_hash'), S::v('uid')); - } else { - XDB::execute('UPDATE auth_user_quick - SET core_rss_hash="" WHERE user_id={?}', - S::v('uid')); - S::kill('core_rss_hash'); - } - } - - function handler_prefs(&$page) - { - $page->changeTpl('platal/preferences.tpl'); - $page->assign('pl_title','Polytechnique.org - Mes préférences'); - - if (Post::has('mail_fmt')) { - $fmt = Post::v('mail_fmt'); - if ($fmt != 'texte') $fmt = 'html'; - XDB::execute("UPDATE auth_user_quick - SET core_mail_fmt = '$fmt' - WHERE user_id = {?}", - S::v('uid')); - $_SESSION['mail_fmt'] = $fmt; - } - - if (Post::has('rss')) { - $this->__set_rss_state(Post::b('rss')); - } - } - - function handler_webredir(&$page) - { - $page->changeTpl('platal/webredirect.tpl'); - - $page->assign('pl_title','Polytechnique.org - Redirection de page WEB'); - - $log =& S::v('log'); - $url = Env::v('url'); - - if (Env::v('submit') == 'Valider' and Env::has('url')) { - XDB::execute('UPDATE auth_user_quick - SET redirecturl = {?} WHERE user_id = {?}', - $url, S::v('uid')); - S::logger()->log('carva_add', 'http://'.Env::v('url')); - $page->trigSuccess("Redirection activée vers $url"); - } elseif (Env::v('submit') == "Supprimer") { - XDB::execute("UPDATE auth_user_quick - SET redirecturl = '' - WHERE user_id = {?}", - S::v('uid')); - S::logger()->log("carva_del", $url); - Post::kill('url'); - $page->trigSuccess('Redirection supprimée'); - } - - $res = XDB::query('SELECT redirecturl - FROM auth_user_quick - WHERE user_id = {?}', - S::v('uid')); - $page->assign('carva', $res->fetchOneCell()); - } - - function handler_prefs_rss(&$page) - { - $page->changeTpl('platal/filrss.tpl'); - - $page->assign('goback', Env::v('referer', 'login')); - - if (Env::v('act_rss') == 'Activer') { - $this->__set_rss_state(true); - $page->trigSuccess("Ton Fil RSS est activé."); - } - } - - function handler_password(&$page) - { - global $globals; - - if (Post::has('response2')) { - require_once 'secure_hash.inc.php'; - S::assert_xsrf_token(); - - $_SESSION['password'] = $password = Post::v('response2'); - - XDB::execute('UPDATE auth_user_md5 - SET password={?} - WHERE user_id={?}', $password, - S::v('uid')); - - // If GoogleApps is enabled, and the user did choose to use synchronized passwords, - // updates the Google Apps password as well. - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife')); - if ($account->active() && $account->sync_password) { - $account->set_password($password); - } - } - - $log =& S::v('log'); - S::logger()->log('passwd', ''); - - if (Cookie::v('ORGaccess')) { - setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0); - } - - $page->changeTpl('platal/motdepasse.success.tpl'); - $page->run(); - } - - $page->changeTpl('platal/motdepasse.tpl'); - $page->addJsLink('motdepasse.js'); - $page->assign('pl_title','Polytechnique.org - Mon mot de passe'); - } - - function handler_smtppass(&$page) - { - $page->changeTpl('platal/acces_smtp.tpl'); - $page->assign('pl_title','Polytechnique.org - Acces SMTP/NNTP'); - - require_once 'wiki.inc.php'; - wiki_require_page('Xorg.SMTPSécurisé'); - wiki_require_page('Xorg.NNTPSécurisé'); - - $uid = S::v('uid'); - $pass = Env::v('smtppass1'); - $log = S::v('log'); - - if (Env::v('op') == "Valider" && strlen($pass) >= 6 - && Env::v('smtppass1') == Env::v('smtppass2')) - { - XDB::execute('UPDATE auth_user_md5 SET smtppass = {?} - WHERE user_id = {?}', $pass, $uid); - $page->trigSuccess('Mot de passe enregistré'); - S::logger()->log("passwd_ssl"); - } elseif (Env::v('op') == "Supprimer") { - XDB::execute('UPDATE auth_user_md5 SET smtppass = "" - WHERE user_id = {?}', $uid); - $page->trigSuccess('Compte SMTP et NNTP supprimé'); - S::logger()->log("passwd_del"); - } - - $res = XDB::query("SELECT IF(smtppass != '', 'actif', '') - FROM auth_user_md5 - WHERE user_id = {?}", $uid); - $page->assign('actif', $res->fetchOneCell()); - } - - function handler_recovery(&$page) - { - global $globals; - - $page->changeTpl('platal/recovery.tpl'); - - if (!Env::has('login') || !Env::has('birth')) { - return; - } - - if (!ereg('[0-3][0-9][0-1][0-9][1][9]([0-9]{2})', Env::v('birth'))) { - $page->trigError('Date de naissance incorrecte ou incohérente'); - return; - } - - $birth = sprintf('%s-%s-%s', - substr(Env::v('birth'), 4, 4), - substr(Env::v('birth'), 2, 2), - substr(Env::v('birth'), 0, 2)); - - $mailorg = strtok(Env::v('login'), '@'); - - // paragraphe rajouté : si la date de naissance dans la base n'existe pas, on l'update - // avec celle fournie ici en espérant que c'est la bonne - - $res = XDB::query( - "SELECT user_id, naissance - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id=a.id AND type != 'homonyme') - WHERE a.alias={?} AND u.perms IN ('admin','user') AND u.deces=0", $mailorg); - list($uid, $naissance) = $res->fetchOneRow(); - - if ($naissance == $birth) { - $res = XDB::query("SELECT COUNT(*) - FROM emails - WHERE uid = {?} AND flags != 'panne' AND flags != 'filter'", $uid); - $count = intval($res->fetchOneCell()); - if ($count == 0) { - $page->assign('no_addr', true); - return; - } - - $page->assign('ok', true); - - $url = rand_url_id(); - XDB::execute('INSERT INTO perte_pass (certificat,uid,created) - VALUES ({?},{?},NOW())', $url, $uid); - $res = XDB::query('SELECT email - FROM emails - WHERE uid = {?} AND email = {?}', - $uid, Post::v('email')); - if ($res->numRows()) { - $mails = $res->fetchOneCell(); - } else { - $res = XDB::query('SELECT email - FROM emails - WHERE uid = {?} AND NOT FIND_IN_SET("filter", flags)', $uid); - $mails = implode(', ', $res->fetchColumn()); - } - $mymail = new PlMailer(); - $mymail->setFrom('"Gestion des mots de passe" mail->domain . '>'); - $mymail->addTo($mails); - $mymail->setSubject('Ton certificat d\'authentification'); - $mymail->setTxtBody("Visite la page suivante qui expire dans six heures : -{$globals->baseurl}/tmpPWD/$url - -Si en cliquant dessus tu n'y arrives pas, copie intégralement l'adresse dans la barre de ton navigateur. Si tu n'as pas utilisé ce lien dans six heures, tu peux tout simplement recommencer cette procédure. - --- -Polytechnique.org -\"Le portail des élèves & anciens élèves de l'Ecole polytechnique\" - -Mail envoyé à ".Env::v('login') . (Post::has('email') ? " -Adresse de secours : " . Post::v('email') : "")); - $mymail->send(); - - // on cree un objet logger et on log l'evenement - $logger = $_SESSION['log'] = new PlLogger($uid); - S::logger()->log('recovery', $mails); - } else { - $page->trigError('Les informations que tu as rentrées ne permettent pas de récupérer ton mot de passe.
    '. - 'Si tu as un homonyme, utilise prenom.nom.promo comme login'); - } - } - - function handler_tmpPWD(&$page, $certif = null) - { - global $globals; - XDB::execute('DELETE FROM perte_pass - WHERE DATE_SUB(NOW(), INTERVAL 380 MINUTE) > created'); - - $res = XDB::query('SELECT uid FROM perte_pass WHERE certificat={?}', $certif); - $ligne = $res->fetchOneAssoc(); - if (!$ligne) { - $page->changeTpl('platal/index.tpl'); - $page->kill("Cette adresse n'existe pas ou n'existe plus sur le serveur."); - } - - $uid = $ligne["uid"]; - if (Post::has('response2')) { - $password = Post::v('response2'); - XDB::query('UPDATE auth_user_md5 SET password={?} - WHERE user_id={?} AND perms IN("admin","user")', - $password, $uid); - XDB::query('DELETE FROM perte_pass WHERE certificat={?}', $certif); - - // If GoogleApps is enabled, and the user did choose to use synchronized passwords, - // updates the Google Apps password as well. - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount($uid); - if ($account->active() && $account->sync_password) { - $account->set_password($password); - } - } - - $logger = new PlLogger($uid); - S::logger()->log("passwd",""); - $page->changeTpl('platal/tmpPWD.success.tpl'); - } else { - $page->changeTpl('platal/motdepasse.tpl'); - $page->addJsLink('motdepasse.js'); - } - } - - function handler_skin(&$page) - { - global $globals; - - $page->changeTpl('platal/skins.tpl'); - $page->assign('pl_title','Polytechnique.org - Skins'); - - if (Env::has('newskin')) { // formulaire soumis, traitons les données envoyées - XDB::execute('UPDATE auth_user_quick - SET skin={?} WHERE user_id={?}', - Env::i('newskin'), S::v('uid')); - S::kill('skin'); - Platal::session()->setSkin(); - } - - $res = XDB::query('SELECT id FROM skins WHERE skin_tpl={?}', S::v('skin')); - $page->assign('skin_id', $res->fetchOneCell()); - - $sql = "SELECT s.*,auteur,count(*) AS nb - FROM skins AS s - LEFT JOIN auth_user_quick AS a ON s.id=a.skin - WHERE skin_tpl != '' AND ext != '' - GROUP BY id ORDER BY s.date DESC"; - $page->assign('skins', XDB::iterator($sql)); - } - - function handler_exit(&$page, $level = null) - { - if (S::has('suid')) { - $a4l = S::v('forlife'); - $suid = S::v('suid'); - $log = S::v('log'); - S::logger()->log("suid_stop", S::v('forlife') . " by " . $suid['forlife']); - Platal::session()->stopSUID(); - pl_redirect('admin/user/' . $a4l); - } - - if ($level == 'forget' || $level == 'forgetall') { - setcookie('ORGaccess', '', time() - 3600, '/', '', 0); - Cookie::kill('ORGaccess'); - if (isset($_SESSION['log'])) - S::logger()->log("cookie_off"); - } - - if ($level == 'forgetuid' || $level == 'forgetall') { - setcookie('ORGuid', '', time() - 3600, '/', '', 0); - Cookie::kill('ORGuid'); - setcookie('ORGdomain', '', time() - 3600, '/', '', 0); - Cookie::kill('ORGdomain'); - } - - if (isset($_SESSION['log'])) { - $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; - S::logger()->log('deconnexion',$ref); - } - Platal::session()->destroy(); - - if (Get::has('redirect')) { - http_redirect(rawurldecode(Get::v('redirect'))); - } else { - $page->changeTpl('platal/exit.tpl'); - } - } - - function handler_review(&$page, $action = null, $mode = null) - { - require_once 'wiki.inc.php'; - require_once dirname(__FILE__) . '/platal/review.inc.php'; - $dir = wiki_work_dir(); - $dom = 'Review'; - if (@$GLOBALS['IS_XNET_SITE']) { - $dom .= 'Xnet'; - } - if (!is_dir($dir)) { - $page->kill("Impossible de trouver le wiki"); - } - if (!file_exists($dir . '/' . $dom . '.Admin')) { - $page->kill("Impossible de trouver la page d'administration"); - } - $conf = preg_grep('/^text=/', explode("\n", file_get_contents($dir . '/' . $dom . '.Admin'))); - $conf = preg_split('/(text\=|\%0a)/', array_shift($conf), -1, PREG_SPLIT_NO_EMPTY); - $wiz = new PlWizard('Tour d\'horizon', 'core/plwizard.tpl', true); - foreach ($conf as $line) { - $list = preg_split('/\s*[*|]\s*/', $line, -1, PREG_SPLIT_NO_EMPTY); - $wiz->addPage('ReviewPage', $list[0], $list[1]); - } - $wiz->apply($page, 'review', $action, $mode); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/platal/review.inc.php b/modules/platal/review.inc.php deleted file mode 100644 index 6111253..0000000 --- a/modules/platal/review.inc.php +++ /dev/null @@ -1,41 +0,0 @@ -assign('cacheExists', wiki_work_dir() . '/cache_' . $dom . '.tpl'); - $page->assign('article', $dom); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile.php b/modules/profile.php deleted file mode 100644 index b6cd695..0000000 --- a/modules/profile.php +++ /dev/null @@ -1,838 +0,0 @@ - $this->make_hook('photo', AUTH_PUBLIC), - 'photo/change' => $this->make_hook('photo_change', AUTH_MDP), - - 'fiche.php' => $this->make_hook('fiche', AUTH_PUBLIC), - 'profile' => $this->make_hook('profile', AUTH_PUBLIC), - 'profile/private' => $this->make_hook('profile', AUTH_COOKIE), - 'profile/ax' => $this->make_hook('ax', AUTH_COOKIE, 'admin'), - 'profile/edit' => $this->make_hook('p_edit', AUTH_MDP), - 'profile/ajax/address' => $this->make_hook('ajax_address', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/tel' => $this->make_hook('ajax_tel', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/medal' => $this->make_hook('ajax_medal', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/job' => $this->make_hook('ajax_job', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/secteur' => $this->make_hook('ajax_secteur', AUTH_COOKIE, 'user', NO_AUTH), - 'profile/ajax/skill' => $this->make_hook('ajax_skill', AUTH_COOKIE, 'user', NO_AUTH), - 'javascript/applis.js' => $this->make_hook('applis_js', AUTH_COOKIE), - 'javascript/grades.js' => $this->make_hook('grades_js', AUTH_COOKIE), - 'profile/medal' => $this->make_hook('medal', AUTH_PUBLIC), - 'profile/orange' => $this->make_hook('p_orange', AUTH_MDP), - 'profile/usage' => $this->make_hook('p_usage', AUTH_MDP), - - 'referent' => $this->make_hook('referent', AUTH_COOKIE), - 'emploi' => $this->make_hook('ref_search', AUTH_COOKIE), - 'referent/search' => $this->make_hook('ref_search', AUTH_COOKIE), - 'referent/ssect' => $this->make_hook('ref_sect', AUTH_COOKIE, 'user', NO_AUTH), - 'referent/country' => $this->make_hook('ref_country', AUTH_COOKIE, 'user', NO_AUTH), - - 'groupes-x' => $this->make_hook('xnet', AUTH_COOKIE), - - 'vcard' => $this->make_hook('vcard', AUTH_COOKIE, 'user', NO_HTTPS), - 'admin/binets' => $this->make_hook('admin_binets', AUTH_MDP, 'admin'), - 'admin/medals' => $this->make_hook('admin_medals', AUTH_MDP, 'admin'), - 'admin/formations' => $this->make_hook('admin_formations', AUTH_MDP, 'admin'), - 'admin/sections' => $this->make_hook('admin_sections', AUTH_MDP, 'admin'), - 'admin/secteurs' => $this->make_hook('admin_secteurs', AUTH_MDP, 'admin'), - 'admin/trombino' => $this->make_hook('admin_trombino', AUTH_MDP, 'admin'), - 'admin/ss_secteurs' => $this->make_hook('admin_ss_secteurs', AUTH_MDP, 'admin'), - 'admin/fonctions' => $this->make_hook('admin_fonctions', AUTH_MDP, 'admin'), - - ); - } - - /* XXX COMPAT */ - function handler_fiche(&$page) - { - return $this->handler_profile($page, Env::v('user')); - } - - function handler_photo(&$page, $x = null, $req = null) - { - if (is_null($x)) { - return PL_NOT_FOUND; - } - - $res = XDB::query("SELECT id, pub FROM aliases - LEFT JOIN photo ON(id = uid) - WHERE alias = {?}", $x); - list($uid, $photo_pub) = $res->fetchOneRow(); - - if ($req && S::logged()) { - include 'validations.inc.php'; - $myphoto = PhotoReq::get_request($uid); - Header('Content-type: image/'.$myphoto->mimetype); - echo $myphoto->data; - } else { - $res = XDB::query( - "SELECT attachmime, attach - FROM photo - WHERE uid={?}", $uid); - - if ((list($type, $data) = $res->fetchOneRow()) - && ($photo_pub == 'public' || S::logged())) { - Header("Content-type: image/$type"); - echo $data; - } else { - Header('Content-type: image/png'); - echo file_get_contents(dirname(__FILE__).'/../htdocs/images/none.png'); - } - } - exit; - } - - function handler_medal(&$page, $mid) - { - $thumb = ($mid == 'thumb'); - $mid = $thumb ? @func_get_arg(2) : $mid; - - $res = XDB::query("SELECT img - FROM profile_medals - WHERE id = {?}", - $mid); - $img = $thumb ? - dirname(__FILE__).'/../htdocs/images/medals/thumb/' . $res->fetchOneCell() : - dirname(__FILE__).'/../htdocs/images/medals/' . $res->fetchOneCell(); - $type = mime_content_type($img); - header("Content-Type: $type"); - echo file_get_contents($img); - exit; - } - - function handler_photo_change(&$page) - { - $page->changeTpl('profile/trombino.tpl'); - - require_once('validations.inc.php'); - - $trombi_x = '/home/web/trombino/photos'.S::v('promo') - .'/'.S::v('forlife').'.jpg'; - - if (Env::has('upload')) { - $upload = new PlUpload(S::v('forlife'), 'photo'); - if (!$upload->upload($_FILES['userfile']) && !$upload->download(Env::v('photo'))) { - $page->trigError('Une erreur est survenue lors du téléchargement du fichier'); - } else { - $myphoto = new PhotoReq(S::v('uid'), $upload); - if ($myphoto->isValid()) { - $myphoto->submit(); - } - } - } elseif (Env::has('trombi')) { - $upload = new PlUpload(S::v('forlife'), 'photo'); - if ($upload->copyFrom($trombi_x)) { - $myphoto = new PhotoReq(S::v('uid'), $upload); - if ($myphoto->isValid()) { - $myphoto->commit(); - $myphoto->clean(); - } - } - } elseif (Env::v('suppr')) { - XDB::execute('DELETE FROM photo - WHERE uid = {?}', - S::v('uid')); - XDB::execute('DELETE FROM requests - WHERE user_id = {?} AND type="photo"', - S::v('uid')); - update_NbValid(); - } elseif (Env::v('cancel')) { - $sql = XDB::query('DELETE FROM requests - WHERE user_id={?} AND type="photo"', - S::v('uid')); - update_NbValid(); - } - - $sql = XDB::query('SELECT COUNT(*) - FROM requests - WHERE user_id={?} AND type="photo"', - S::v('uid')); - $page->assign('submited', $sql->fetchOneCell()); - $page->assign('has_trombi_x', file_exists($trombi_x)); - } - - function handler_profile(&$page, $x = null) - { - if (is_null($x)) { - return PL_NOT_FOUND; - } - - global $globals; - require_once 'user.func.inc.php'; - - $page->changeTpl('profile/profile.tpl', SIMPLE); - - $view = 'private'; - if (!S::logged() || Env::v('view') == 'public') $view = 'public'; - if (S::logged() && Env::v('view') == 'ax') $view = 'ax'; - - if (is_numeric($x)) { - $res = XDB::query( - "SELECT alias - FROM aliases AS a - INNER JOIN auth_user_md5 AS u ON (a.id=u.user_id AND a.type='a_vie') - WHERE matricule={?}", $x); - $login = $res->fetchOneCell(); - } else { - $login = get_user_forlife($x, S::logged() ? '_default_user_callback' - : '_silent_user_callback'); - } - - if (empty($login)) { - $user = get_not_registered_user($x, true); - if ($user->total() != 1) { - return PL_NOT_FOUND; - } - $user = $user->next(); - if (S::logged()) { - pl_redirect('marketing/public/' . $user['user_id']); - } - $user['forlife'] = $x; - } else { - $new = Env::v('modif') == 'new'; - $user = get_user_details($login, S::v('uid'), $view); - } - - if (S::logged()) { - S::logger()->log('view_profile', $login); - } - - $title = $user['prenom'] . ' ' . ( empty($user['nom_usage']) ? $user['nom'] : $user['nom_usage'] ); - $page->assign('pl_title', $title); - - // photo - - $photo = 'photo/'.$user['forlife'].($new ? '/req' : ''); - - if (!isset($user['y']) and !isset($user['x'])) { - list($user['x'], $user['y']) = getimagesize("images/none.png"); - } - if (!isset($user['y']) or $user['y'] < 1) $user['y']=1; - if (!isset($user['x']) or $user['x'] < 1) $user['x']=1; - if ($user['x'] > 240) { - $user['y'] = (integer)($user['y']*240/$user['x']); - $user['x'] = 240; - } - if ($user['y'] > 300) { - $user['x'] = (integer)($user['x']*300/$user['y']); - $user['y'] = 300; - } - if ($user['x'] < 160) { - $user['y'] = (integer)($user['y']*160/$user['x']); - $user['x'] = 160; - } - - $page->assign('logged', has_user_right('private', $view)); - if (!has_user_right($user['photo_pub'], $view)) { - $photo = ""; - } - - $page->assign_by_ref('x', $user); - $page->assign('photo_url', $photo); - // alias virtual - $res = XDB::query( - "SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING(vid) - INNER JOIN auth_user_quick ON ( user_id = {?} AND emails_alias_pub = 'public' ) - WHERE ( redirect={?} OR redirect={?} ) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $user['user_id'], - $user['forlife'].'@'.$globals->mail->domain, - $user['forlife'].'@'.$globals->mail->domain2); - $page->assign('virtualalias', $res->fetchOneCell()); - $page->assign('view', $view); - - $page->addJsLink('close_on_esc.js'); - header('Last-Modified: ' . date('r', strtotime($user['date']))); - } - - function handler_ax(&$page, $user = null) - { - require_once 'user.func.inc.php'; - $user = get_user_forlife($user); - if (!$user) { - return PL_NOT_FOUND; - } - $res = XDB::query('SELECT matricule_ax - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.type = "a_vie" AND a.id = u.user_id) - WHERE a.alias = {?}', $user); - $mat = $res->fetchOneCell(); - if (!intval($mat)) { - $page->kill("Le matricule AX de $user est inconnu"); - } - http_redirect("http://www.polytechniciens.com/?page=AX_FICHE_ANCIEN&anc_id=$mat"); - } - - function handler_p_edit(&$page, $opened_tab = null, $mode = null) - { - global $globals; - - // AX Synchronization - require_once 'synchro_ax.inc.php'; - if (is_ax_key_missing()) { - $page->assign('no_private_key', true); - } - if (Env::v('synchro_ax') == 'confirm' && !is_ax_key_missing()) { - ax_synchronize(S::v('bestalias'), S::v('uid')); - $page->trigSuccess('Ton profil a été synchronisé avec celui du site polytechniciens.com'); - } - - // Build the page - $page->addJsLink('ajax.js'); - $page->addJsLink('applis.js'); - $page->addJsLink('grades.js'); - $page->addJsLink('profile.js'); - $page->addJsLink('jquery.autocomplete.js'); - $wiz = new PlWizard('Profil', 'core/plwizard.tpl', true, true); - require_once dirname(__FILE__) . '/profile/page.inc.php'; - $wiz->addPage('ProfileGeneral', 'Général', 'general'); - $wiz->addPage('ProfileAddresses', 'Adresses personnelles', 'adresses'); - $wiz->addPage('ProfileGroups', 'Groupes X - Binets', 'poly'); - $wiz->addPage('ProfileDecos', 'Décorations - Medailles', 'deco'); - $wiz->addPage('ProfileJobs', 'Informations professionnelles', 'emploi'); - $wiz->addPage('ProfileSkills', 'Compétences diverses', 'skill'); - $wiz->addPage('ProfileMentor', 'Mentoring', 'mentor'); - $wiz->apply($page, 'profile/edit', $opened_tab, $mode); - - // Misc checks - $res = XDB::query("SELECT user_id - FROM auth_user_md5 - WHERE user_id = {?} AND naissance = '0000-00-00'", S::i('uid')); - if ($res->numRows()) { - $page->trigWarning("Ta date de naissance n'est pas renseignée, ce qui t'empêcheras de réaliser" - . " la procédure de récupération de mot de passe si un jour tu le perdais"); - } - - $page->assign('pl_title', 'Polytechnique.org - Mon Profil'); - } - - function handler_applis_js(&$page) - { - header('Content-Type: text/javascript; charset=utf-8'); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - $page->changeTpl('profile/applis.js.tpl', NO_SKIN); - require_once "applis.func.inc.php"; - } - - function handler_grades_js(&$page) - { - header('Content-Type: text/javascript; charset=utf-8'); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - $page->changeTpl('profile/grades.js.tpl', NO_SKIN); - $res = XDB::iterator("SELECT * - FROM profile_medals_grades - ORDER BY mid, pos"); - $grades = array(); - while ($tmp = $res->next()) { - $grades[$tmp['mid']][] = $tmp; - } - $page->assign('grades', $grades); - - $res = XDB::iterator("SELECT *, FIND_IN_SET('validation', flags) AS validate - FROM profile_medals - ORDER BY type, text"); - $mlist = array(); - while ($tmp = $res->next()) { - $mlist[$tmp['type']][] = $tmp; - } - $page->assign('medal_list', $mlist); - } - - function handler_ajax_address(&$page, $adid) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/adresses.address.tpl', NO_SKIN); - $page->assign('i', $adid); - $page->assign('adr', array()); - } - - function handler_ajax_tel(&$page, $adid, $telid) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/adresses.tel.tpl', NO_SKIN); - $page->assign('i', $adid); - $page->assign('adid', "addresses_$adid"); - $page->assign('adpref', "addresses[$adid]"); - $page->assign('t', $telid); - $page->assign('tel', array()); - } - - function handler_ajax_medal(&$page, $id) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/deco.medal.tpl', NO_SKIN); - $page->assign('id', $id); - $page->assign('medal', array('valid' => 0, 'grade' => 0)); - } - - function handler_ajax_job(&$page, $id) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/jobs.job.tpl', NO_SKIN); - $page->assign('i', $id); - $page->assign('job', array()); - $page->assign('new', true); - $page->assign('secteurs', XDB::iterator("SELECT id, label - FROM emploi_secteur")); - $page->assign('fonctions', XDB::iterator("SELECT id, fonction_fr, FIND_IN_SET('titre', flags) AS title - FROM fonctions_def - ORDER BY id")); - } - - function handler_ajax_secteur(&$page, $id, $sect, $ssect = -1) - { - header('Content-Type: text/html; charset=utf-8'); - $res = XDB::iterator("SELECT id, label - FROM emploi_ss_secteur - WHERE secteur = {?}", $sect); - $page->changeTpl('profile/jobs.secteur.tpl', NO_SKIN); - $page->assign('id', $id); - $page->assign('ssecteurs', $res); - $page->assign('sel', $ssect); - } - - function handler_ajax_skill(&$page, $cat, $id) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('profile/skill.skill.tpl', NO_SKIN); - $page->assign('cat', $cat); - $page->assign('id', $id); - if ($cat == 'competences') { - $page->assign('levels', array('initié' => 'initié', - 'bonne connaissance' => 'bonne connaissance', - 'expert' => 'expert')); - } else { - $page->assign('levels', array(1 => 'connaissance basique', - 2 => 'maîtrise des bases', - 3 => 'maîtrise limitée', - 4 => 'maîtrise générale', - 5 => 'bonne maîtrise', - 6 => 'maîtrise complète')); - } - } - - function handler_p_orange(&$page) - { - $page->changeTpl('profile/orange.tpl'); - - require_once 'validations.inc.php'; - - $res = XDB::query( - "SELECT u.promo, u.promo_sortie - FROM auth_user_md5 AS u - WHERE user_id={?}", S::v('uid')); - - list($promo, $promo_sortie_old) = $res->fetchOneRow(); - $page->assign('promo_sortie_old', $promo_sortie_old); - $page->assign('promo', $promo); - - if (!Env::has('promo_sortie')) { - return; - } - - $promo_sortie = Env::i('promo_sortie'); - - if ($promo_sortie < 1000 || $promo_sortie > 9999) { - $page->trigError('L\'année de sortie doit être un nombre de quatre chiffres'); - } - elseif ($promo_sortie < $promo + 3) { - $page->trigError('Trop tôt'); - } - elseif ($promo_sortie == $promo_sortie_old) { - $page->trigWarning('Tu appartiens déjà à la promotion correspondante à cette année de sortie.'); - } - elseif ($promo_sortie == $promo + 3) { - XDB::execute( - "UPDATE auth_user_md5 set promo_sortie={?} - WHERE user_id={?}", $promo_sortie, S::v('uid')); - $page->trigSuccess('Ton statut "orange" a été supprimé.'); - $page->assign('promo_sortie_old', $promo_sortie); - } - else { - $page->assign('promo_sortie', $promo_sortie); - - if (Env::has('submit')) { - $myorange = new OrangeReq(S::v('uid'), - $promo_sortie); - $myorange->submit(); - $page->assign('myorange', $myorange); - } - } - } - - function handler_referent(&$page, $x = null) - { - require_once 'user.func.inc.php'; - - if (is_null($x)) { - return PL_NOT_FOUND; - } - - $page->changeTpl('profile/fiche_referent.tpl', SIMPLE); - - $res = XDB::query( - "SELECT prenom, nom, user_id, promo, cv, a.alias AS bestalias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id=a.id - AND FIND_IN_SET('bestalias', a.flags)) - INNER JOIN aliases AS a1 ON (u.user_id=a1.id - AND a1.alias = {?} - AND a1.type!='homonyme')", $x); - - if ($res->numRows() != 1) { - return PL_NOT_FOUND; - } - - list($prenom, $nom, $user_id, $promo, $cv, $bestalias) = $res->fetchOneRow(); - - $page->assign('prenom', $prenom); - $page->assign('nom', $nom); - $page->assign('promo', $promo); - $page->assign('cv', MiniWiki::WikiToHTML($cv, true)); - $page->assign('bestalias', $bestalias); - $page->assign('adr_pro', get_user_details_pro($user_id)); - - ///// recuperations infos referent - - //expertise - $res = XDB::query("SELECT expertise FROM mentor WHERE uid = {?}", $user_id); - $page->assign('expertise', $res->fetchOneCell()); - - //secteurs - $secteurs = $ss_secteurs = Array(); - $res = XDB::iterRow( - "SELECT s.label, ss.label - FROM mentor_secteurs AS m - LEFT JOIN emploi_secteur AS s ON(m.secteur = s.id) - LEFT JOIN emploi_ss_secteur AS ss ON(m.secteur = ss.secteur AND m.ss_secteur = ss.id) - WHERE uid = {?}", $user_id); - while (list($sec, $ssec) = $res->next()) { - $secteurs[] = $sec; - $ss_secteurs[] = $ssec; - } - $page->assign_by_ref('secteurs', $secteurs); - $page->assign_by_ref('ss_secteurs', $ss_secteurs); - - //pays - $res = XDB::query( - "SELECT gp.pays - FROM mentor_pays AS m - LEFT JOIN geoloc_pays AS gp ON(m.pid = gp.a2) - WHERE uid = {?}", $user_id); - $page->assign('pays', $res->fetchColumn()); - - $page->addJsLink('close_on_esc.js'); - } - - function handler_ref_search(&$page, $action = null, $subaction = null) - { - require_once 'wiki.inc.php'; - wiki_require_page('Docs.Emploi'); - $page->assign('pl_title', 'Polytechnique.org - Conseil Pro'); - - //recuperation des noms de secteurs - $res = XDB::iterRow("SELECT id, label FROM emploi_secteur"); - $secteurs[''] = ''; - while (list($tmp_id, $tmp_label) = $res->next()) { - $secteurs[$tmp_id] = $tmp_label; - } - $page->assign_by_ref('secteurs', $secteurs); - - // nb de mentors - $res = XDB::query("SELECT count(*) FROM mentor"); - $page->assign('mentors_number', $res->fetchOneCell()); - - // On vient d'un formulaire - $where = array(); - $pays_sel = XDB::escape(Env::v('pays_sel')); - $secteur_sel = XDB::escape(Env::v('secteur')); - $ss_secteur_sel = XDB::escape(Env::v('ss_secteur')); - $expertise_champ = XDB::escape(Env::v('expertise')); - - if ($pays_sel != "''") { - $where[] = "mp.pid = $pays_sel"; - } - if ($secteur_sel != "''") { - $where[] = "ms.secteur = $secteur_sel"; - if ($ss_secteur_sel != "''") { - $where[] = "ms.ss_secteur = $ss_secteur_sel"; - } - } - if ($expertise_champ != "''") { - $where[] = "MATCH(m.expertise) AGAINST($expertise_champ)"; - } - - if ($where) { - $where = join(' AND ', $where); - - $set = new UserSet("INNER JOIN mentor AS m ON (m.uid = u.user_id) - LEFT JOIN mentor_pays AS mp ON (mp.uid = m.uid) - LEFT JOIN mentor_secteurs AS ms ON (ms.uid = m.uid)", - $where); - $set->addMod('mentor', 'Référents'); - $set->apply('referent/search', $page, $action, $subaction); - if ($set->count() > 100) { - $page->assign('recherche_trop_large', true); - } - } - $page->changeTpl('profile/referent.tpl'); - } - - function handler_ref_sect(&$page, $sect) - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('include/field.select.tpl', NO_SKIN); - $page->assign('onchange', 'setSSecteurs()'); - $page->assign('id', 'ssect_field'); - $page->assign('name', 'ss_secteur'); - $it = XDB::iterator("SELECT id,label AS field - FROM emploi_ss_secteur - WHERE secteur = {?}", $sect); - $page->assign('list', $it); - } - - function handler_ref_country(&$page, $sect, $ssect = '') - { - header('Content-Type: text/html; charset=utf-8'); - $page->changeTpl('include/field.select.tpl', NO_SKIN); - $page->assign('name', 'pays_sel'); - $where = ($ssect ? ' AND ms.ss_secteur = {?}' : ''); - $it = XDB::iterator("SELECT a2 AS id, pays AS field - FROM geoloc_pays AS g - INNER JOIN mentor_pays AS mp ON (mp.pid = g.a2) - INNER JOIN mentor_secteurs AS ms ON (ms.uid = mp.uid) - WHERE ms.secteur = {?} $where - GROUP BY a2 - ORDER BY pays", $sect, $ssect); - $page->assign('list', $it); - } - - function handler_p_usage(&$page) - { - $page->changeTpl('profile/nomusage.tpl'); - - require_once 'validations.inc.php'; - - $res = XDB::query( - "SELECT u.nom, u.nom_usage, u.flags, e.alias - FROM auth_user_md5 AS u - LEFT JOIN aliases AS e ON(u.user_id = e.id - AND FIND_IN_SET('usage', e.flags)) - WHERE user_id={?}", S::v('uid')); - - list($nom, $usage_old, $flags, $alias_old) = $res->fetchOneRow(); - $flags = new PlFlagSet($flags); - $page->assign('usage_old', $usage_old); - $page->assign('alias_old', $alias_old); - - $nom_usage = replace_accent(trim(Env::v('nom_usage'))); - $nom_usage = strtoupper($nom_usage); - $page->assign('usage_req', $nom_usage); - - if (Env::has('submit') && ($nom_usage != $usage_old)) { - // on vient de recevoir une requete, differente de l'ancien nom d'usage - if ($nom_usage == $nom) { - $page->assign('same', true); - } else { // le nom de mariage est distinct du nom à l'X - // on calcule l'alias pour l'afficher - $reason = Env::v('reason'); - if ($reason == 'other') { - $reason = Env::v('other_reason'); - } - $myusage = new UsageReq(S::v('uid'), $nom_usage, $reason); - $myusage->submit(); - $page->assign('myusage', $myusage); - } - } - } - - function handler_xnet(&$page) - { - $page->changeTpl('profile/groupesx.tpl'); - $page->assign('pl_title', 'Polytechnique.org - Promo, Groupes X, Binets'); - - $req = XDB::query(' - SELECT m.asso_id, a.nom, diminutif, a.logo IS NOT NULL AS has_logo, - COUNT(e.eid) AS events, mail_domain AS lists - FROM groupex.membres AS m - INNER JOIN groupex.asso AS a ON(m.asso_id = a.id) - LEFT JOIN groupex.evenements AS e ON(e.asso_id = m.asso_id AND e.archive = 0) - WHERE uid = {?} GROUP BY m.asso_id ORDER BY a.nom', S::i('uid')); - $page->assign('assos', $req->fetchAllAssoc()); - } - - function handler_vcard(&$page, $x = null) - { - if (is_null($x)) { - return PL_NOT_FOUND; - } - - global $globals; - - if (substr($x, -4) == '.vcf') { - $x = substr($x, 0, strlen($x) - 4); - } - - $vcard = new VCard($x); - $vcard->do_page($page); - } - - function handler_admin_trombino(&$page, $uid = null, $action = null) { - $page->changeTpl('profile/admin_trombino.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Trombino'); - $page->assign('uid', $uid); - - $q = XDB::query( - "SELECT a.alias,promo - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( u.user_id = a.id AND type='a_vie' ) - WHERE user_id = {?}", $uid); - list($forlife, $promo) = $q->fetchOneRow(); - - switch ($action) { - - case "original": - header("Content-type: image/jpeg"); - readfile("/home/web/trombino/photos".$promo."/".$forlife.".jpg"); - exit; - break; - - case "new": - $data = file_get_contents($_FILES['userfile']['tmp_name']); - list($x, $y) = getimagesize($_FILES['userfile']['tmp_name']); - $mimetype = substr($_FILES['userfile']['type'], 6); - unlink($_FILES['userfile']['tmp_name']); - XDB::execute( - "REPLACE INTO photo SET uid={?}, attachmime = {?}, attach={?}, x={?}, y={?}", - $uid, $mimetype, $data, $x, $y); - break; - - case "delete": - XDB::execute('DELETE FROM photo WHERE uid = {?}', $uid); - break; - } - - $page->assign('forlife', $forlife); - } - function handler_admin_binets(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Binets'); - $page->assign('title', 'Gestion des binets'); - $table_editor = new PLTableEditor('admin/binets', 'binets_def', 'id'); - $table_editor->add_join_table('binets_ins','binet_id',true); - $table_editor->describe('text','intitulé',true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_formations(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Formations'); - $page->assign('title', 'Gestion des formations'); - $table_editor = new PLTableEditor('admin/formations','applis_def','id'); - $table_editor->add_join_table('applis_ins','aid',true); - $table_editor->describe('text','intitulé',true); - $table_editor->describe('url','site web',false); - $table_editor->apply($page, $action, $id); - } - function handler_admin_sections(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Sections'); - $page->assign('title', 'Gestion des sections'); - $table_editor = new PLTableEditor('admin/sections','sections','id'); - $table_editor->describe('text','intitulé',true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_ss_secteurs(&$page, $action = 'list', $id = null) { - $page->assign('pl_title', 'Polytechnique.org - Administration - Sous-secteurs'); - $page->assign('title', 'Gestion des sous-secteurs'); - $table_editor = new PLTableEditor('admin/ss_secteurs', 'emploi_ss_secteur', 'id', true); - $table_editor->describe('label', 'intitulé', true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_fonctions(&$page, $action = 'list', $id = null) { - $page->assign('pl_title', 'Polytechnique.org - Administration - Fonctions'); - $page->assign('title', 'Gestion des fonctions'); - $table_editor = new PLTableEditor('admin/fonctions', 'fonctions_def', 'id', true); - $table_editor->describe('fonction_fr', 'intitulé', true); - $table_editor->describe('fonction_en', 'intitulé (ang)', true); - $table_editor->describe('flags', 'titre', true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_secteurs(&$page, $action = 'list', $id = null) { - $page->assign('pl_title', 'Polytechnique.org - Administration - Secteurs'); - $page->assign('title', 'Gestion des secteurs'); - $table_editor = new PLTableEditor('admin/secteurs', 'emploi_secteur', 'id', true); - $table_editor->describe('label', 'intitulé', true); - $table_editor->apply($page, $action, $id); - } - function handler_admin_medals(&$page, $action = 'list', $id = null) { - $page->assign('pl_title','Polytechnique.org - Administration - Distinctions'); - $page->assign('title', 'Gestion des Distinctions'); - $table_editor = new PLTableEditor('admin/medals','profile_medals','id'); - $table_editor->describe('text', 'intitulé', true); - $table_editor->describe('img', 'nom de l\'image', false); - $table_editor->describe('flags', 'valider', true); - $table_editor->apply($page, $action, $id); - if ($id && $action == 'edit') { - $page->changeTpl('profile/admin_decos.tpl'); - - $mid = $id; - - if (Post::v('act') == 'del') { - XDB::execute('DELETE FROM profile_medals_grades - WHERE mid={?} AND gid={?}', $mid, Post::i('gid')); - } else { - foreach (Post::v('grades', array()) as $gid=>$text) { - if ($gid === 0) { - if (!empty($text)) { - $res = XDB::query('SELECT MAX(gid) - FROM profile_medals_grades - WHERE mid = {?}', $mid); - $gid = $res->fetchOneCell() + 1; - - XDB::execute('INSERT INTO profile_medals_grades (mid, gid, text, pos) - VALUES ({?}, {?}, {?}, {?})', - $mid, $gid, $text, $_POST['pos']['0']); - } - } else { - XDB::execute('UPDATE profile_medals_grades - SET pos={?}, text={?} - WHERE gid={?} AND mid={?}', $_POST['pos'][$gid], $text, $gid, $mid); - } - } - } - $res = XDB::iterator('SELECT gid, text, pos FROM profile_medals_grades WHERE mid={?} ORDER BY pos', $mid); - $page->assign('grades', $res); - } - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/addresses.inc.php b/modules/profile/addresses.inc.php deleted file mode 100644 index 780ee03..0000000 --- a/modules/profile/addresses.inc.php +++ /dev/null @@ -1,239 +0,0 @@ -bool = new ProfileBool(); - $this->pub = new ProfilePub(); - $this->tel = new ProfileTel(); - } - - private function cleanAddress(ProfilePage &$page, array &$address, &$success) - { - if (@$address['changed']) { - $address['datemaj'] = time(); - } - $success = true; - foreach ($address['tel'] as $t=>&$tel) { - if (@$tel['removed'] || !trim($tel['tel'])) { - unset($address['tel'][$t]); - } else { - $tel['pub'] = $this->pub->value($page, 'pub', $tel['pub'], $s); - $tel['tel'] = $this->tel->value($page, 'tel', $tel['tel'], $s); - if (!$s) { - $tel['error'] = true; - $success = false; - } - } - unset($tel['removed']); - } - $address['checked'] = $this->bool->value($page, 'checked', $address['checked'], $s); - $address['secondaire'] = $this->bool->value($page, 'secondaire', $address['secondaire'], $s); - $address['mail'] = $this->bool->value($page, 'mail', $address['mail'], $s); - $address['temporary'] = $this->bool->value($page, 'temporary', $address['temporary'], $s); - $address['current'] = $this->bool->value($page, 'current', @$address['current'], $s); - $address['pub'] = $this->pub->value($page, 'pub', $address['pub'], $s); - unset($address['parsevalid']); - unset($address['changed']); - unset($address['removed']); - unset($address['display']); - } - - public function value(ProfilePage &$page, $field, $value, &$success) - { - $init = false; - if (is_null($value)) { - $value = $page->values['addresses']; - $init = true; - } - foreach ($value as $key=>&$adr) { - if (@$adr['removed']) { - unset($value[$key]); - } - } - $current = 0; - $success = true; - foreach ($value as $key=>&$adr) { - if (@$adr['current']) { - $current++; - } - } - if ($current == 0 && count($value) > 0) { - foreach ($value as $key=>&$adr) { - $adr['current'] = true; - break; - } - } else if ($current > 1) { - $success = false; - } - foreach ($value as $key=>&$adr) { - $ls = true; - $this->geolocAddress($adr, $s); - $ls = ($ls && $s); - $this->cleanAddress($page, $adr, $s); - $ls = ($ls && $s); - if (!trim($adr['text'])) { - unset($value[$key]); - } else if (!$init) { - $success = ($success && $ls); - } - } - return $value; - } - - private function saveTel($adrid, $telid, array &$tel) - { - XDB::execute("INSERT INTO tels (uid, adrid, telid, - tel_type, tel_pub, tel) - VALUES ({?}, {?}, {?}, - {?}, {?}, {?})", - S::i('uid'), $adrid, $telid, - $tel['type'], $tel['pub'], $tel['tel']); - } - - private function saveAddress($adrid, array &$address) - { - $flags = new PlFlagSet(); - if ($address['secondaire']) { - $flags->addFlag('res-secondaire'); - } - if ($address['mail']) { - $flags->addFlag('courrier'); - } - if ($address['temporary']) { - $flags->addFlag('temporaire'); - } - if ($address['current']) { - $flags->addFlag('active'); - } - if ($address['checked']) { - $flags->addFlag('coord-checked'); - } - XDB::execute("INSERT INTO adresses (adr1, adr2, adr3, - postcode, city, cityid, - country, region, regiontxt, - pub, datemaj, statut, - uid, adrid, glat, glng) - VALUES ({?}, {?}, {?}, - {?}, {?}, {?}, - {?}, {?}, {?}, - {?}, FROM_UNIXTIME({?}), {?}, - {?}, {?}, {?}, {?})", - $address['adr1'], $address['adr2'], $address['adr3'], - $address['postcode'], $address['city'], $address['cityid'], - $address['country'], $address['region'], $address['regiontxt'], - $address['pub'], $address['datemaj'], $flags, - S::i('uid'), $adrid, $address['precise_lat'], $address['precise_lon']); - foreach ($address['tel'] as $telid=>&$tel) { - $this->saveTel($adrid, $telid, $tel); - } - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("DELETE FROM adresses - WHERE uid = {?}", - S::i('uid')); - XDB::execute("DELETE FROM tels - WHERE uid = {?}", - S::i('uid')); - foreach ($value as $adrid=>&$address) { - $this->saveAddress($adrid, $address); - } - } -} - -class ProfileAddresses extends ProfilePage -{ - protected $pg_template = 'profile/adresses.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['addresses'] = new ProfileAddress(); - $this->watched['addresses'] = true; - } - - protected function _fetchData() - { - // Build the addresses tree - $res = XDB::query("SELECT a.adrid AS id, a.adr1, a.adr2, a.adr3, - UNIX_TIMESTAMP(a.datemaj) AS datemaj, - a.postcode, a.city, a.cityid, a.region, a.regiontxt, - a.pub, a.country, gp.pays AS countrytxt, gp.display, - FIND_IN_SET('coord-checked', a.statut) AS checked, - FIND_IN_SET('res-secondaire', a.statut) AS secondaire, - FIND_IN_SET('courrier', a.statut) AS mail, - FIND_IN_SET('temporaire', a.statut) AS temporary, - FIND_IN_SET('active', a.statut) AS current, - a.glat AS precise_lat, a.glng AS precise_lon - FROM adresses AS a - INNER JOIN geoloc_pays AS gp ON(gp.a2 = a.country) - WHERE uid = {?} AND NOT FIND_IN_SET('pro', statut) - ORDER BY adrid", - S::i('uid')); - if ($res->numRows() == 0) { - $this->values['addresses'] = array(); - } else { - $this->values['addresses'] = $res->fetchAllAssoc(); - } - - $res = XDB::iterator("SELECT adrid, tel_type AS type, tel_pub AS pub, tel - FROM tels - WHERE uid = {?} - ORDER BY adrid", - S::i('uid')); - $i = 0; - $adrNb = count($this->values['addresses']); - while ($tel = $res->next()) { - $adrid = $tel['adrid']; - unset($tel['adrid']); - while ($i < $adrNb && $this->values['addresses'][$i]['id'] < $adrid) { - $i++; - } - if ($i >= $adrNb) { - break; - } - $address =& $this->values['addresses'][$i]; - if (!isset($address['tel'])) { - $address['tel'] = array(); - } - if ($address['id'] == $adrid) { - $address['tel'][] = $tel; - } - } - foreach ($this->values['addresses'] as $id=>&$address) { - if (!isset($address['tel'])) { - $address['tel'] = array(); - } - unset($address['id']); - } - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/decos.inc.php b/modules/profile/decos.inc.php deleted file mode 100644 index df97147..0000000 --- a/modules/profile/decos.inc.php +++ /dev/null @@ -1,138 +0,0 @@ -next()) { - $value[$id] = array('grade' => $grade, - 'valid' => '1'); - } - - // Fetch not yet validated medals - require_once('validations.inc.php'); - $medals = Validate::get_typed_requests(S::i('uid'), 'medal'); - foreach ($medals as &$medal) { - $value[$medal->mid] = array('grade' => $medal->gid, - 'valid' => '0'); - } - } else if (!is_array($value)) { - $value = array(); - } - ksort($value); - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - require_once('validations.inc.php'); - - $orig =& $page->orig[$field]; - - // Remove old ones - foreach ($orig as $id=>&$val) { - if (!isset($value[$id]) || $val['grade'] != $value[$id]['grade']) { - if ($val['valid']) { - XDB::execute("DELETE FROM profile_medals_sub - WHERE uid = {?} AND mid = {?}", - S::i('uid'), $id); - } else { - $req = MedalReq::get_request(S::i('uid'), $id); - if ($req) { - $req->clean(); - } - } - } - } - - // Add new ones - foreach ($value as $id=>&$val) { - if (!isset($orig[$id]) || $orig[$id]['grade'] != $val['grade']) { - $req = new MedalReq(S::i('uid'), $id, $val['grade']); - $req->submit(); - } - } - } -} - -class ProfileDecos extends ProfilePage -{ - protected $pg_template = 'profile/deco.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['medals'] = new ProfileDeco(); - $this->settings['medals_pub'] = new ProfilePub(); - $this->watched['medals'] = true; - } - - protected function _fetchData() - { - $res = XDB::query("SELECT profile_medals_pub - FROM auth_user_quick - WHERE user_id = {?}", - S::i('uid')); - $this->values['medals_pub'] = $res->fetchOneCell(); - } - - protected function _saveData() - { - if ($this->changed['medals_pub']) { - XDB::execute("UPDATE auth_user_quick - SET profile_medals_pub = {?} - WHERE user_id = {?}", - $this->values['medals_pub'], S::i('uid')); - } - } - - public function _prepare(PlPage &$page, $id) - { - $res = XDB::iterator("SELECT *, FIND_IN_SET('validation', flags) AS validate - FROM profile_medals - ORDER BY type, text"); - $mlist = array(); - while ($tmp = $res->next()) { - $mlist[$tmp['type']][] = $tmp; - } - $page->assign('medal_list', $mlist); - $trad = Array('ordre' => 'Ordres', - 'croix' => 'Croix', - 'militaire' => 'Médailles militaires', - 'honneur' => 'Médailles d\'honneur', - 'resistance' => 'Médailles de la résistance', - 'prix' => 'Prix'); - $page->assign('trad', $trad); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php deleted file mode 100644 index 8227f36..0000000 --- a/modules/profile/general.inc.php +++ /dev/null @@ -1,206 +0,0 @@ -prepareField($init); - $old = $this->prepareField($current); - $new = $this->prepareField($value); - $newLen = strlen($new); - $success = $this->matchWord($old, $new, $newLen) - || $this->matchWord($ini, $new, $newLen) - || ($field == 'nom' && $new == 'DE ' . $old); - if (!$success) { - Platal::page()->trigError("Le $field que tu as choisi ($value) est trop loin de ton $field initial ($init)" - . (($init == $current)? "" : " et de ton prénom précédent ($current)")); - } - return $success ? $value : $current; - } - - public function save(ProfilePage &$page, $field, $new_value) - { - $_SESSION[$field] = $new_value; - } -} - -class ProfileAppli implements ProfileSetting -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - $success = true; - if (is_null($value)) { - return $page->values[$field]; - } - return $value; - } - - public function save(ProfilePage &$page, $field, $new_value) - { - $index = ($field == 'appli1' ? 0 : 1); - if ($new_value['id'] > 0) { - XDB::execute("REPLACE INTO applis_ins - SET uid = {?}, aid = {?}, type = {?}, ordre = {?}", - S::i('uid'), $new_value['id'], $new_value['type'], $index); - } else { - XDB::execute("DELETE FROM applis_ins - WHERE uid = {?} AND ordre = {?}", - S::i('uid'), $index); - } - } -} - -class ProfileGeneral extends ProfilePage -{ - protected $pg_template = 'profile/general.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['nom'] = $this->settings['prenom'] - = new ProfileNom(); - $this->settings['naissance'] = new ProfileDate(); - $this->settings['mobile_pub'] - = $this->settings['web_pub'] - = $this->settings['freetext_pub'] - = $this->settings['photo_pub'] - = new ProfilePub(); - $this->settings['freetext'] - = $this->settings['nationalite'] - = $this->settings['nick'] - = null; - $this->settings['synchro_ax'] - = new ProfileBool(); - $this->settings['mobile'] = new ProfileTel(); - $this->settings['web'] = new ProfileWeb(); - $this->settings['appli1'] - = $this->settings['appli2'] - = new ProfileAppli(); - $this->watched= array('nom' => true, 'freetext' => true, 'mobile' => true, 'web' => true, - 'appli1' => true, 'appli2' => true, 'nationalite' => true, 'nick' => true); - } - - protected function _fetchData() - { - // Checkout all data... - $res = XDB::query("SELECT u.promo, u.promo_sortie, u.nom_usage, u.nationalite, u.naissance, - q.profile_mobile as mobile, q.profile_mobile_pub as mobile_pub, - q.profile_web as web, q.profile_web_pub as web_pub, - q.profile_freetext as freetext, q.profile_freetext_pub as freetext_pub, - q.profile_nick as nick, q.profile_from_ax as synchro_ax, u.matricule_ax, - IF(a1.aid IS NULL, -1, a1.aid) as appli_id1, a1.type as appli_type1, - IF(a2.aid IS NULL, -1, a2.aid) as appli_id2, a2.type as appli_type2 - FROM auth_user_md5 AS u - INNER JOIN auth_user_quick AS q USING(user_id) - LEFT JOIN applis_ins AS a1 ON(a1.uid = u.user_id and a1.ordre = 0) - LEFT JOIN applis_ins AS a2 ON(a2.uid = u.user_id and a2.ordre = 1) - WHERE u.user_id = {?}", S::v('uid', -1)); - $this->values = $res->fetchOneAssoc(); - - // Reformat formation data - $this->values['appli1'] = array('id' => $this->values['appli_id1'], - 'type' => $this->values['appli_type1']); - unset($this->values['appli_id1']); - unset($this->values['appli_type1']); - $this->values['appli2'] = array('id' => $this->values['appli_id2'], - 'type' => $this->values['appli_type2']); - unset($this->values['appli_id2']); - unset($this->values['appli_type2']); - - // Retreive photo informations - $res = XDB::query("SELECT pub - FROM photo - WHERE uid = {?}", S::v('uid')); - $this->values['photo_pub'] = $res->fetchOneCell(); - - $res = XDB::query("SELECT COUNT(*) - FROM requests - WHERE type='photo' AND user_id = {?}", - S::v('uid')); - $this->values['nouvellephoto'] = $res->fetchOneCell(); - } - - protected function _saveData() - { - if ($this->changed['nationalite'] || $this->changed['nom'] || $this->changed['prenom'] - || $this->changed['naissance']) { - XDB::execute("UPDATE auth_user_md5 - SET nationalite = {?}, nom={?}, prenom={?}, naissance={?} - WHERE user_id = {?}", - $this->values['nationalite'], $this->values['nom'], $this->values['prenom'], - preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '\3-\2-\1', $this->values['naissance']), - S::v('uid')); - } - if ($this->changed['nick'] || $this->changed['mobile'] || $this->changed['mobile_pub'] - || $this->changed['web'] || $this->changed['web_pub'] || $this->changed['freetext'] - || $this->changed['freetext_pub'] || $this->changed['synchro_ax']) { - XDB::execute("UPDATE auth_user_quick - SET profile_nick= {?}, profile_mobile={?}, profile_mobile_pub={?}, - profile_web={?}, profile_web_pub={?}, profile_freetext={?}, - profile_freetext_pub={?}, profile_from_ax = {?} - WHERE user_id = {?}", - $this->values['nick'], $this->values['mobile'], $this->values['mobile_pub'], - $this->values['web'], $this->values['web_pub'], - $this->values['freetext'], $this->values['freetext_pub'], - $this->values['synchro_ax'], S::v('uid')); - } - if ($this->changed['nick']) { - require_once('user.func.inc.php'); - user_reindex(S::v('uid')); - } - if ($this->changed['photo_pub']) { - XDB::execute("UPDATE photo - SET pub = {?} - WHERE uid = {?}", - $this->values['photo_pub'], S::v('uid')); - } - } - - public function _prepare(PlPage &$page, $id) - { - require_once "applis.func.inc.php"; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/groups.inc.php b/modules/profile/groups.inc.php deleted file mode 100644 index cd2c447..0000000 --- a/modules/profile/groups.inc.php +++ /dev/null @@ -1,128 +0,0 @@ -fetchOneCell()); - } - return intval($value); - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("UPDATE auth_user_md5 - SET section = {?} - WHERE user_id = {?}", - $value, S::i('uid')); - } -} - -class ProfileGroup implements ProfileSetting -{ - private $table; - private $user_field; - private $group_field; - - public function __construct($table, $user, $group) - { - $this->table = $table; - $this->user_field = $user; - $this->group_field = $group; - } - - public function value(ProfilePage &$page, $field, $value, &$success) - { - if (is_null($value)) { - $value = array(); - $res = XDB::iterRow("SELECT g.id, g.text - FROM {$this->table}_def AS g - INNER JOIN {$this->table}_ins AS i ON (i.{$this->group_field} = g.id) - WHERE i.{$this->user_field} = {?}", - S::i('uid')); - while (list($gid, $text) = $res->next()) { - $value[intval($gid)] = $text; - } - } - if (!is_array($value)) { - $value = array(); - } - ksort($value); - $success = true; - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("DELETE FROM {$this->table}_ins - WHERE {$this->user_field} = {?}", - S::i('uid')); - if (!count($value)) { - return; - } - $insert = array(); - foreach ($value as $id=>$text) { - $insert[] = '(' . S::i('uid') . ", $id)"; - } - XDB::execute("INSERT INTO {$this->table}_ins ({$this->user_field}, {$this->group_field}) - VALUES " . implode(',', $insert)); - } -} - -class ProfileGroups extends ProfilePage -{ - protected $pg_template = 'profile/groups.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['section'] = new ProfileSection(); - $this->settings['binets'] = new ProfileGroup('binets', 'user_id', 'binet_id'); - $this->watched['section'] = $this->watched['binets'] = true; - } - - public function _prepare(PlPage &$page, $id) - { - $page->assign('mygroups', XDB::iterator("SELECT a.nom, a.site, a.diminutif, a.unsub_url, a.pub, m.perms - FROM groupex.asso AS a - INNER JOIN groupex.membres AS m ON (m.asso_id = a.id) - WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')", - S::i('uid'))); - $page->assign('listgroups', XDB::iterator("SELECT a.nom, a.diminutif, a.sub_url, - IF (a.cat = 'Institutions', a.cat, d.nom) AS dom - FROM groupex.asso AS a - LEFT JOIN groupex.dom AS d ON (d.id = a.dom) - WHERE a.inscriptible != 0 - AND (a.cat = 'GroupesX' OR a.cat = 'Institutions') - ORDER BY a.cat, a.dom, a.nom")); - $page->assign('old', (int)date('Y') >= S::i('promo_sortie')); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/jobs.inc.php b/modules/profile/jobs.inc.php deleted file mode 100644 index ad1e921..0000000 --- a/modules/profile/jobs.inc.php +++ /dev/null @@ -1,216 +0,0 @@ -pub = new ProfilePub(); - $this->mail = new ProfileEmail(); - $this->web = new ProfileWeb(); - $this->tel = new ProfileTel(); - $this->bool = new ProfileBool(); - $this->checks = array('web' => array('web'), - 'mail' => array('email'), - 'tel' => array('tel', 'fax', 'mobile'), - 'pub' => array('pub', 'tel_pub', 'email_pub')); - } - - private function cleanJob(ProfilePage &$page, array &$job, &$success) - { - $success = true; - foreach ($this->checks as $obj=>&$fields) { - $chk =& $this->$obj; - foreach ($fields as $field) { - $job[$field] = $chk->value($page, $field, $job[$field], $s); - if (!$s) { - $success = false; - $job[$field . '_error'] = true; - } - } - } - $job['adr']['pub'] = $this->pub->value($page, 'adr_pub', @$job['adr']['pub'], $s); - $job['adr']['checked'] = $this->bool->value($page, 'adr_checked', @$job['adr']['checked'], $s); - unset($job['removed']); - unset($job['new']); - unset($job['adr']['changed']); - unset($job['adr']['parsevalid']); - unset($job['adr']['display']); - } - - public function value(ProfilePage &$page, $field, $value, &$success) - { - $init = false; - if (is_null($value)) { - $value = $page->values['jobs']; - $init = true; - } - $success = true; - foreach ($value as $key=>&$job) { - if (@$job['removed'] || !trim($job['name'])) { - unset($value[$key]); - } - } - foreach ($value as $key=>&$job) { - $ls = true; - $this->geolocAddress($job['adr'], $s); - $ls = ($ls && $s); - $this->cleanJob($page, $job, $s); - $ls = ($ls && $s); - if (!$init) { - $success = ($success && $ls); - } - } - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("DELETE FROM entreprises - WHERE uid = {?}", - S::i('uid')); - $i = 0; - foreach ($value as &$job) { - XDB::execute("INSERT INTO entreprises (uid, entrid, entreprise, secteur, ss_secteur, - fonction, poste, adr1, adr2, adr3, postcode, - city, cityid, country, region, regiontxt, - tel, fax, mobile, email, web, - pub, adr_pub, tel_pub, email_pub, flags, - glat, glng) - VALUES ({?}, {?}, {?}, {?}, {?}, - {?}, {?}, {?}, {?}, {?}, {?}, - {?}, {?}, {?}, {?}, {?}, - {?}, {?}, {?}, {?}, {?}, - {?}, {?}, {?}, {?}, {?}, - {?}, {?})", - S::i('uid'), $i++, $job['name'], $job['secteur'], $job['ss_secteur'], - $job['fonction'], $job['poste'], $job['adr']['adr1'], $job['adr']['adr2'], $job['adr']['adr3'], - $job['adr']['postcode'], - $job['adr']['city'], $job['adr']['cityid'], $job['adr']['country'], $job['adr']['region'], - $job['adr']['regiontxt'], - $job['tel'], $job['fax'], $job['mobile'], $job['email'], $job['web'], - $job['pub'], $job['adr']['pub'], $job['tel_pub'], $job['email_pub'], - $job['adr']['checked'] ? 'geoloc' : '', $job['adr']['precise_lat'], - $job['adr']['precise_lon']); - } - } -} - -class ProfileJobs extends ProfilePage -{ - protected $pg_template = 'profile/jobs.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['cv'] = null; - $this->settings['jobs'] = new ProfileJob(); - $this->watched['cv'] = $this->watched['jobs'] = true; - } - - protected function _fetchData() - { - // Checkout the CV - $res = XDB::query("SELECT cv - FROM auth_user_md5 - WHERE user_id = {?}", - S::i('uid')); - $this->values['cv'] = $res->fetchOneCell(); - - // Build the jobs tree - $res = XDB::iterRow("SELECT e.entreprise, e.secteur, e.ss_secteur, - e.fonction, e.poste, e.adr1, e.adr2, e.adr3, - e.postcode, e.city, e.cityid, e.region, e.regiontxt, - e.country, gp.pays, gp.display, - FIND_IN_SET('geoloc', flags), - e.tel, e.fax, e.mobile, e.email, e.web, e.pub, - e.adr_pub, e.tel_pub, e.email_pub, - e.glat AS precise_lat, e.glng AS precise_lon - FROM entreprises AS e - LEFT JOIN geoloc_pays AS gp ON(gp.a2 = e.country) - WHERE uid = {?} AND entreprise != '' - ORDER BY entrid", S::i('uid')); - $this->values['jobs'] = array(); - while (list($name, $secteur, $ss_secteur, $fonction, $poste, - $adr1, $adr2, $adr3, $postcode, $city, $cityid, - $region, $regiontxt, $country, $countrytxt, $display, - $checked, $tel, $fax, $mobile, $email, $web, - $pub, $adr_pub, $tel_pub, $email_pub, $glat, $glng) = $res->next()) { - $this->values['jobs'][] = array('name' => $name, - 'secteur' => $secteur, - 'ss_secteur' => $ss_secteur, - 'fonction' => $fonction, - 'poste' => $poste, - 'adr' => array('adr1' => $adr1, - 'adr2' => $adr2, - 'adr3' => $adr3, - 'postcode' => $postcode, - 'city' => $city, - 'cityid' => $cityid, - 'region' => $region, - 'regiontxt' => $regiontxt, - 'country' => $country, - 'countrytxt' => $countrytxt, - 'display' => $display, - 'pub' => $adr_pub, - 'checked' => $checked, - 'precise_lat'=> $glat, - 'precise_lon'=> $glng), - 'tel' => $tel, - 'fax' => $fax, - 'mobile' => $mobile, - 'email' => $email, - 'web' => $web, - 'pub' => $pub, - 'tel_pub' => $tel_pub, - 'email_pub' => $email_pub); - } - } - - protected function _saveData() - { - if ($this->changed['cv']) { - XDB::execute("UPDATE auth_user_md5 - SET cv = {?} - WHERE user_id = {?}", - $this->values['cv'], S::i('uid')); - } - } - - public function _prepare(PlPage &$page, $id) - { - $page->assign('secteurs', XDB::iterator("SELECT id, label - FROM emploi_secteur")); - $page->assign('fonctions', XDB::iterator("SELECT id, fonction_fr, FIND_IN_SET('titre', flags) AS title - FROM fonctions_def - ORDER BY id")); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/mentor.inc.php b/modules/profile/mentor.inc.php deleted file mode 100644 index bf577d9..0000000 --- a/modules/profile/mentor.inc.php +++ /dev/null @@ -1,160 +0,0 @@ -next()) { - if (!isset($value[$s])) { - $value[$s] = array($ss => $ssname); - } else { - $value[$s][$ss] = $ssname; - } - } - } else if (!is_array($value)) { - $value = array(); - } else if (count($value) > 10) { - Platal::page()->trigError("Le nombre de secteurs d'expertise est limité à 10"); - $success = false; - } - ksort($value); - foreach ($value as &$sss) { - ksort($sss); - } - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - - XDB::execute("DELETE FROM mentor_secteurs - WHERE uid = {?}", - S::i('uid')); - if (!count($value)) { - return; - } - foreach ($value as $id=>&$sect) { - foreach ($sect as $sid=>&$name) { - XDB::execute("INSERT INTO mentor_secteurs (uid, secteur, ss_secteur) - VALUES ({?}, {?}, {?})", - S::i('uid'), $id, $sid); - } - } - } -} - -class ProfileCountry implements ProfileSetting -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - $success = true; - if (is_null($value)) { - $value = array(); - $res = XDB::iterRow("SELECT m.pid, p.pays - FROM mentor_pays AS m - INNER JOIN geoloc_pays AS p ON(m.pid = p.a2) - WHERE m.uid = {?}", - S::i('uid')); - while (list($id, $name) = $res->next()) { - $value[$id] = $name; - } - } else if (!is_array($value)) { - $value = array(); - } else if (count($value) > 10) { - Platal::page()->trigError("Le nombre de secteurs d'expertise est limité à 10"); - $success = false; - } - ksort($value); - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("DELETE FROM mentor_pays - WHERE uid = {?}", - S::i('uid')); - foreach ($value as $id=>&$name) { - XDB::execute("INSERT INTO mentor_pays (uid, pid) - VALUES ({?}, {?})", - S::i('uid'), $id); - } - } -} - - -class ProfileMentor extends ProfilePage -{ - protected $pg_template = 'profile/mentor.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['expertise'] = null; - $this->settings['secteurs'] = new ProfileSecteurs(); - $this->settings['countries'] = new ProfileCountry(); - } - - protected function _fetchData() - { - $res = XDB::query("SELECT expertise - FROM mentor - WHERE uid = {?}", - S::i('uid')); - $this->values['expertise'] = $res->fetchOneCell(); - } - - protected function _saveData() - { - if ($this->changed['expertise']) { - $expertise = trim($this->values['expertise']); - if (empty($expertise)) { - XDB::execute("DELETE FROM mentor - WHERE uid = {?}", - S::i('uid')); - $this->values['expertise'] = null; - } else { - XDB::execute("REPLACE INTO mentor (uid, expertise) - VALUES ({?}, {?})", - S::i('uid'), $expertise); - $this->values['expertise'] = $expertise; - } - } - } - - public function _prepare(PlPage &$page, $id) - { - $page->assign('secteurs_sel', XDB::iterator("SELECT id, label - FROM emploi_secteur")); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php deleted file mode 100644 index 433947e..0000000 --- a/modules/profile/page.inc.php +++ /dev/null @@ -1,341 +0,0 @@ -values[$field]) ? $page->values[$field] : S::v($field); - } - $value = trim($value); - $success = empty($value) || preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $value); - if (!$success) { - Platal::page()->trigError('URL Incorrecte : une url doit commencer par http:// ou https:// ou ftp://' - . ' et ne pas contenir de caractères interdits'); - } - return $value; - } -} - -class ProfileEmail extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - if (is_null($value)) { - return isset($page->values[$field]) ? $page->values[$field] : S::v($field); - } - $value = trim($value); - $success = empty($value) || isvalid_email($value); - if (!$success) { - Platal::page()->trigError('Adresse Email invalide'); - } - return $value; - } -} - - -class ProfileTel extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - if (is_null($value)) { - return isset($page->values[$field]) ? $page->values[$field] : S::v($field); - } - $success = !preg_match('/[<>{}@&#~\/:;?,!§*_`\[\]|%$^=]/', $value, $matches); - if (!$success) { - Platal::page()->trigError('Le numéro de téléphone contient un caractère interdit : ' . pl_entities($matches[0][0])); - } - return $value; - } -} - -class ProfilePub extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - $success = true; - if (is_null($value)) { - return isset($page->values[$field]) ? $page->values[$field] : S::v($field); - } - if (is_null($value) || !$value) { - $value = 'private'; - } else if ($value == 'on') { // Checkbox - $value = 'public'; - } - return $value; - } -} - -class ProfileBool extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - $success = true; - if (is_null($value)) { - $value = @$page->values[$field]; - } - return $value ? "1" : ""; - } -} - -class ProfileDate extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - $success = true; - if (is_null($value)) { - $value = preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '\3/\2/\1', @$page->values[$field]); - } else { - $success = preg_match('@(\d{2})/(\d{2})/(\d{4})@', $value, $matches); - if (!$success) { - Platal::page()->trigError("Les dates doivent être au format jj/mm/aaaa"); - } else { - $day = (int)$matches[1]; - $month = (int)$matches[2]; - $year = (int)$matches[3]; - $success = ($day > 0 && $day <= 31) && ($month > 0 && $month <= 12) && ($year > 1900 && $year <= 2020); - if (!$success) { - Platal::page()->trigError("La date n'a pas une valeur valide"); - } - } - } - return $value; - } -} - -abstract class ProfileGeoloc implements ProfileSetting -{ - protected function geolocAddress(array &$address, &$success) - { - require_once 'geoloc.inc.php'; - $success = true; - unset($address['geoloc']); - unset($address['geoloc_cityid']); - if (@$address['parsevalid'] - || (@$address['text'] && @$address['changed']) - || (@$address['text'] && !@$address['cityid'])) { - $address = array_merge($address, empty_address()); - $new = get_address_infos(@$address['text']); - if (compare_addresses_text(@$address['text'], $geotxt = get_address_text($new)) - || (@$address['parsevalid'] && @$address['cityid'])) { - $address = array_merge($address, $new); - $address['checked'] = true; - } else if (@$address['parsevalid']) { - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = true; - $mailer = new PlMailer('geoloc/geoloc.mail.tpl'); - $mailer->assign('text', get_address_text($address)); - $mailer->assign('geoloc', $geotxt); - $mailer->send(); - } else if (@$address['changed'] || !@$address['checked']) { - $success = false; - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = false; - $address['geoloc'] = $geotxt; - $address['geoloc_cityid'] = $new['cityid']; - } else { - $address = array_merge($address, cut_address(@$address['text'])); - $address['checked'] = true; - } - } - $address['precise_lat'] = rtrim($address['precise_lat'], '.0'); - $address['precise_lon'] = rtrim($address['precise_lon'], '.0'); - $address['text'] = get_address_text($address); - } -} - - -abstract class ProfilePage implements PlWizardPage -{ - protected $wizard; - protected $pg_template; - protected $settings = array(); // A set ProfileSetting objects - protected $errors = array(); // A set of boolean with the value check errors - protected $changed = array(); // A set of boolean indicating wether the value has been changed - protected $watched = array(); // A set of boolean indicating the fields that are watched - - public $orig = array(); - public $values = array(); - - public function __construct(PlWizard &$wiz) - { - $this->wizard =& $wiz; - } - - protected function _fetchData() - { - } - - protected function fetchData() - { - if (count($this->orig) > 0) { - $this->values = $this->orig; - return; - } - - $this->_fetchData(); - foreach ($this->settings as $field=>&$setting) { - $success = false; - if (!is_null($setting)) { - $this->values[$field] = $setting->value($this, $field, null, $success); - } else if (!isset($this->values[$field])) { - $this->values[$field] = S::v($field); - } - $this->errors[$field] = false; - } - $this->orig = $this->values; - } - - protected function _saveData() - { - } - - protected function saveData() - { - require_once 'notifs.inc.php'; - foreach ($this->settings as $field=>&$setting) { - if (!is_null($setting) && $this->changed[$field]) { - $setting->save($this, $field, $this->values[$field]); - } - if ($this->changed[$field] && @$this->watched[$field]) { - register_profile_update(S::i('uid'), $field); - } - } - $this->_saveData(); - - // Update the last modification date - XDB::execute('REPLACE INTO user_changes - SET user_id = {?}', S::v('uid')); - if (!S::has('suid')) { - register_watch_op(S::i('uid'), WATCH_FICHE); - } - global $platal; - $log =& $_SESSION['log']; - S::logger()->log('profil', $platal->pl_self(1)); - } - - protected function checkChanges() - { - $newvalues = $this->values; - $this->values = array(); - $this->fetchData(); - $this->values = $newvalues; - $changes = false; - foreach ($this->settings as $field=>&$setting) { - if ($this->orig[$field] != $this->values[$field]) { - $this->changed[$field] = true; - $changes = true; - } else { - $this->changed[$field] = false; - } - } - return $changes; - } - - protected function markChange() - { - } - - public function template() - { - return 'profile/base.tpl'; - } - - protected function _prepare(PlPage &$page, $id) - { - } - - public function prepare(PlPage &$page, $id) - { - if (count($this->values) == 0) { - $this->fetchData(); - } - foreach ($this->values as $field=>&$value) { - $page->assign($field, $value); - } - $this->_prepare($page, $id); - $page->assign('profile_page', $this->pg_template); - $page->assign('errors', $this->errors); - } - - public function process() - { - $global_success = true; - $this->fetchData(); - foreach ($this->settings as $field=>&$setting) { - $success = false; - if (!is_null($setting)) { - $this->values[$field] = $setting->value($this, $field, Post::v($field, ''), $success); - } else { - $success = true; - $this->values[$field] = Post::v($field, ''); - } - $this->errors[$field] = !$success; - $global_success = $global_success && $success; - } - if ($global_success) { - if ($this->checkChanges()) { - $this->saveData(); - $this->markChange(); - } - return Post::has('next_page') ? PlWizard::NEXT_PAGE : PlWizard::CURRENT_PAGE; - } - Platal::page()->trigError("Certains champs n'ont pas pu être validés, merci de corriger les informations " - . "de ton profil et de revalider ta demande"); - return PlWizard::CURRENT_PAGE; - } -} - -require_once dirname(__FILE__) . '/general.inc.php'; -require_once dirname(__FILE__) . '/addresses.inc.php'; -require_once dirname(__FILE__) . '/groups.inc.php'; -require_once dirname(__FILE__) . '/decos.inc.php'; -require_once dirname(__FILE__) . '/jobs.inc.php'; -require_once dirname(__FILE__) . '/skills.inc.php'; -require_once dirname(__FILE__) . '/mentor.inc.php'; - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/skills.inc.php b/modules/profile/skills.inc.php deleted file mode 100644 index c3da4f9..0000000 --- a/modules/profile/skills.inc.php +++ /dev/null @@ -1,111 +0,0 @@ -table = $table; - $this->skill_field = $skill; - $this->text_field = $text; - } - - public function value(ProfilePage &$page, $field, $value, &$success) - { - if (is_null($value)) { - $value = array(); - $res = XDB::iterRow("SELECT s.id, s.{$this->text_field}, i.level - FROM {$this->table}_def AS s - INNER JOIN {$this->table}_ins AS i ON(s.id = i.{$this->skill_field}) - WHERE i.uid = {?}", - S::i('uid')); - while (list($sid, $text, $level) = $res->next()) { - $value[$sid] = array('text' => $text, 'level' => $level); - } - } - if (!is_array($value)) { - $value = array(); - } else { - foreach ($value as $id=>&$skill) { - if (!isset($skill['text']) || empty($skill['text'])) { - $res = XDB::query("SELECT {$this->text_field} - FROM {$this->table}_def - WHERE id = {?}", $id); - $skill['text'] = $res->fetchOneCell(); - } - } - } - ksort($value); - $success = true; - return $value; - } - - public function save(ProfilePage &$page, $field, $value) - { - XDB::execute("DELETE FROM {$this->table}_ins - WHERE uid = {?}", - S::i('uid')); - if (!count($value)) { - return; - } - foreach ($value as $id=>&$skill) { - XDB::execute("INSERT INTO {$this->table}_ins (uid, {$this->skill_field}, level) - VALUES ({?}, {?}, {?})", - S::i('uid'), $id, $skill['level']); - } - } -} - -class ProfileSkills extends ProfilePage -{ - protected $pg_template = 'profile/skill.tpl'; - - public function __construct(PlWizard &$wiz) - { - parent::__construct($wiz); - $this->settings['competences'] = new ProfileSkill('competences', 'cid', 'text_fr'); - $this->settings['langues'] = new ProfileSkill('langues', 'lid', 'langue_fr'); - } - - public function _prepare(PlPage &$page, $id) - { - $page->assign('comp_list', XDB::iterator("SELECT id, text_fr, FIND_IN_SET('titre',flags) AS title - FROM competences_def")); - $page->assign('comp_level', array('initié' => 'initié', - 'bonne connaissance' => 'bonne connaissance', - 'expert' => 'expert')); - $page->assign('lang_list', XDB::iterator("SELECT id, langue_fr - FROM langues_def")); - $page->assign('lang_level', array(1 => 'connaissance basique', - 2 => 'maîtrise des bases', - 3 => 'maîtrise limitée', - 4 => 'maîtrise générale', - 5 => 'bonne maîtrise', - 6 => 'maîtrise complète')); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/register.php b/modules/register.php deleted file mode 100644 index a0d27dc..0000000 --- a/modules/register.php +++ /dev/null @@ -1,501 +0,0 @@ - $this->make_hook('register', AUTH_PUBLIC), - 'register/end' => $this->make_hook('end', AUTH_PUBLIC), - 'register/end.php' => $this->make_hook('end_old', AUTH_PUBLIC), - 'register/success' => $this->make_hook('success', AUTH_MDP), - 'register/save' => $this->make_hook('save', AUTH_MDP), - ); - } - - function handler_register(&$page, $hash = null) - { - $alert = null; - $sub_state = S::v('sub_state', Array()); - if (!isset($sub_state['step'])) { - $sub_state['step'] = 0; - } - if (!isset($sub_state['backs'])) { - $sub_state['backs'] = array(); - } - if (Get::has('back') && Get::i('back') < $sub_state['step']) { - $sub_state['step'] = max(0,Get::i('back')); - $state = $sub_state; - unset($state['backs']); - $sub_state['backs'][] = $state; - if (count($sub_state['backs']) == 3) { - $alert .= "Tentative d'inscription tres hesitante - "; - } - } - - // Compatibility with old sources, keep it atm - if (!$hash && Env::has('hash')) { - $hash = Env::v('hash'); - } - - if ($hash) { - $res = XDB::query( - "SELECT m.uid, u.promo, u.nom, u.prenom, u.matricule, u.naissance_ini, FIND_IN_SET('watch', u.flags) - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS u ON u.user_id = m.uid - WHERE m.hash={?}", $hash); - if (list($uid, $promo, $nom, $prenom, $ourmat, $naiss, $watch) = $res->fetchOneRow()) { - $sub_state['uid'] = $uid; - $sub_state['hash'] = $hash; - $sub_state['promo'] = $promo; - $sub_state['nom'] = $nom; - $sub_state['prenom'] = $prenom; - $sub_state['ourmat'] = $ourmat; - $sub_state['watch'] = $watch; - $sub_state['naissance_ini'] = $naiss; - - XDB::execute( - "REPLACE INTO register_mstats (uid,sender,success) - SELECT m.uid, m.sender, 0 - FROM register_marketing AS m - WHERE m.hash", $sub_state['hash']); - } - } - - switch ($sub_state['step']) { - case 0: - require_once('wiki.inc.php'); - wiki_require_page('Reference.Charte'); - if (Post::has('step1')) { - $sub_state['step'] = 1; - if (isset($sub_state['hash'])) { - $sub_state['step'] = 3; - require_once(dirname(__FILE__) . '/register/register.inc.php'); - create_aliases($sub_state); - } - } - break; - - case 1: - if (Post::has('promo')) { - $promo = Post::i('promo'); - $res = XDB::query("SELECT COUNT(*) - FROM auth_user_md5 - WHERE perms='pending' AND deces = '0000-00-00' - AND promo = {?}", - $promo); - if (!$res->fetchOneCell()) { - $err = "La promotion saisie est incorrecte ou tous les camardes de cette promo sont inscrits !"; - } else { - $sub_state['step'] = 2; - $sub_state['promo'] = $promo; - if ($promo >= 1996 && $promo<2000) { - $sub_state['mat'] = ($promo % 100)*10 . '???'; - } elseif($promo >= 2000) { - $sub_state['mat'] = 100 + ($promo % 100) . '???'; - } - } - } - break; - - case 2: - if (count($_POST)) { - require_once(dirname(__FILE__) . '/register/register.inc.php'); - $sub_state['prenom'] = Post::v('prenom'); - $sub_state['nom'] = Post::v('nom'); - $sub_state['mat'] = Post::v('mat'); - $err = check_new_user($sub_state); - - if ($err !== true) { break; } - $err = create_aliases($sub_state); - if ($err === true) { - unset($err); - $sub_state['step'] = 3; - } - } - break; - - case 3: - if (count($_POST)) { - require_once(dirname(__FILE__) . '/register/register.inc.php'); - if (!isvalid_email(Post::v('email'))) { - $err[] = "Le champ 'E-mail' n'est pas valide."; - } elseif (!isvalid_email_redirection(Post::v('email'))) { - $err[] = $sub_state['forlife']." doit renvoyer vers un email existant ". - "valide, en particulier, il ne peut pas être renvoyé vers lui-même."; - } - $birth = trim(Env::v('naissance')); - if (!preg_match('@^[0-3]?\d/[01]?\d/(19|20)?\d{2}$@', $birth)) { - $err[] = "La 'Date de naissance' n'est pas correcte."; - } else { - $birth = explode('/', $birth, 3); - for ($i = 0; $i < 3; $i++) - $birth[$i] = intval($birth[$i]); - if ($birth[2] < 100) $birth[2] += 1900; - $year = $birth[2]; - $promo = (int)$sub_state['promo']; - if ($year > $promo - 15 || $year < $promo - 30) { - $err[] = "La 'Date de naissance' n'est pas correcte."; - $alert = "Date de naissance incorrecte a l'inscription - "; - $sub_state['wrong_naissance'] = $birth; - } - } - - // Check if the given email is known as dangerous - $res = XDB::query("SELECT w.state, w.description - FROM emails_watch AS w - WHERE w.email = {?} AND w.state != 'safe'", - Post::v('email')); - $email_banned = false; - if ($res->numRows()) { - list($state, $description) = $res->fetchOneRow(); - $alert .= "Email surveille propose a l'inscription - "; - $sub_state['email_desc'] = $description; - if ($state == 'dangerous') { - $email_banned = true; - } - } - if ($sub_state['watch']) { - $alter .= "Inscription d'un utilisateur surveillé - "; - } - - if (check_ip('unsafe')) { - unset($err); - } - - if (isset($err)) { - $err = join('
    ', $err); - } else { - $sub_state['naissance'] = sprintf("%04d-%02d-%02d", - intval($birth[2]), intval($birth[1]), intval($birth[0])); - if ($sub_state['naissance_ini'] != '0000-00-00' && $sub_state['naissance'] != $sub_state['naissance_ini']) { - $alert .= "Date de naissance incorrecte à l'inscription - "; - } - $sub_state['email'] = Post::v('email'); - $ip_banned = check_ip('unsafe'); - if ($ip_banned) { - $alert .= "Tentative d'inscription depuis une IP surveillee"; - } - if ($email_banned || $ip_banned) { - global $globals; - $err = "Une erreur s'est produite lors de l'inscription." - . " Merci de contacter = 3) { - $alert .= "Fin d'une inscription hésitante"; - } - finish_ins($sub_state); - } - } - } - break; - } - - $_SESSION['sub_state'] = $sub_state; - if ($alert) { - send_warning_mail($alert); - } - $page->changeTpl('register/step'.intval($sub_state['step']).'.tpl'); - if (isset($err)) { - $page->trigError($err); - } - } - - function handler_end_old(&$page) - { - return $this->handler_end($page, Env::v('hash')); - } - - function handler_end(&$page, $hash = null) - { - global $globals; - - - $page->changeTpl('register/end.tpl'); - $_SESSION['sub_state'] = array('step' => 5); - - if (check_ip('unsafe')) { - send_warning_mail('Une IP surveillée a tenté de finaliser son inscription'); - XDB::execute('DELETE FROM register_pending - WHERE hash = {?} AND hash != \'INSCRIT\'', $hash); - return PL_FORBIDDEN; - } - - require_once('user.func.inc.php'); - - if ($hash) { - $res = XDB::query( - "SELECT r.uid, r.forlife, r.bestalias, r.mailorg2, - r.password, r.email, r.naissance, u.nom, u.prenom, - u.promo, FIND_IN_SET('femme', u.flags), u.naissance_ini - FROM register_pending AS r - INNER JOIN auth_user_md5 AS u ON r.uid = u.user_id - WHERE hash={?} AND hash!='INSCRIT'", $hash); - } - - if (!$hash || !list($uid, $forlife, $bestalias, $mailorg2, $password, $email, - $naissance, $nom, $prenom, $promo, $femme, $naiss_ini) = $res->fetchOneRow()) - { - $page->kill("

    Cette adresse n'existe pas, ou plus, sur le serveur.

    -

    Causes probables :

    -
      -
    1. Vérifie que tu visites l'adresse du dernier - e-mail reçu s'il y en a eu plusieurs.
    2. -
    3. Tu as peut-être mal copié l'adresse reçue par - mail, vérifie-la à la main.
    4. -
    5. Tu as peut-être attendu trop longtemps pour - confirmer. Les pré-inscriptions sont annulées - tous les 30 jours.
    6. -
    7. Tu es en fait déjà inscrit.
    8. -
    "); - } - - - - /***********************************************************/ - /****************** REALLY CREATE ACCOUNT ******************/ - /***********************************************************/ - - XDB::execute('UPDATE auth_user_md5 - SET password={?}, perms="user", - date=NOW(), naissance={?}, date_ins = NOW() - WHERE user_id={?}', $password, $naissance, $uid); - XDB::execute('REPLACE INTO auth_user_quick (user_id) VALUES ({?})', $uid); - XDB::execute('INSERT INTO aliases (id,alias,type) - VALUES ({?}, {?}, "a_vie")', $uid, - $forlife); - XDB::execute('INSERT INTO aliases (id,alias,type,flags) - VALUES ({?}, {?}, "alias", "bestalias")', - $uid, $bestalias); - if ($mailorg2) { - XDB::execute('INSERT INTO aliases (id,alias,type) - VALUES ({?}, {?}, "alias")', $uid, - $mailorg2); - } - - require_once('emails.inc.php'); - $redirect = new Redirect($uid); - $redirect->add_email($email); - - // on cree un objet logger et on log l'inscription - $logger = new PlLogger($uid); - S::logger()->log('inscription', $email); - - XDB::execute('UPDATE register_pending SET hash="INSCRIT" WHERE uid={?}', $uid); - - global $platal; - $platal->on_subscribe($forlife, $uid, $promo, $password); - - $mymail = new PlMailer('register/inscription.reussie.tpl'); - $mymail->assign('forlife', $forlife); - $mymail->assign('prenom', $prenom); - $mymail->send(); - - require_once('user.func.inc.php'); - user_reindex($uid); - - // update number of subscribers (perms has changed) - update_NbIns(); - - if (!start_connexion($uid, false)) { - return PL_FORBIDDEN; - } - $_SESSION['auth'] = AUTH_MDP; - - /***********************************************************/ - /************* envoi d'un mail au démarcheur ***************/ - /***********************************************************/ - $res = XDB::iterRow( - "SELECT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom, - s.prenom, FIND_IN_SET('femme', s.flags) AS femme, - GROUP_CONCAT(m.email) AS mails, MAX(m.last) AS dateDernier - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS s ON ( m.sender = s.user_id ) - INNER JOIN aliases AS sa ON ( sa.id = m.sender - AND FIND_IN_SET('bestalias', sa.flags) ) - WHERE m.uid = {?} - GROUP BY m.sender", $uid); - XDB::execute("UPDATE register_mstats SET success=NOW() WHERE uid={?}", $uid); - - $market = array(); - while (list($salias, $snom, $sprenom, $sfemme, $mails, $dateDernier) = $res->next()) { - $market[] = " - par $snom $sprenom sur $mails (le plus récemment le $dateDernier)"; - $mymail = new PlMailer(); - $mymail->setSubject("$prenom $nom s'est inscrit à Polytechnique.org !"); - $mymail->setFrom('"Marketing Polytechnique.org" mail->domain . '>'); - $mymail->addTo("\"$sprenom $snom\" <$salias@{$globals->mail->domain}>"); - $msg = ($sfemme?'Chère':'Cher')." $sprenom,\n\n" - . "Nous t'écrivons pour t'informer que $prenom $nom (X$promo), " - . "que tu avais incité".($femme?'e':'')." à s'inscrire à Polytechnique.org, " - . "vient à l'instant de terminer son inscription.\n\n" - . "Merci de ta participation active à la reconnaissance de ce site !!!\n\n" - . "Bien cordialement,\n" - . "L'équipe Polytechnique.org"; - $mymail->setTxtBody(wordwrap($msg, 72)); - $mymail->send(); - } - - /**** send a mail to X.org administrators ****/ - if ($globals->register->notif) { - $mymail = new PlMailer(); - $mymail->setSubject("Inscription de $prenom $nom (X$promo)"); - $mymail->setFrom('"Webmaster Polytechnique.org" mail->domain . '>'); - $mymail->addTo($globals->register->notif); - $mymail->addHeader('Reply-To', $globals->register->notif); - $msg = "$prenom $nom (X$promo) a terminé son inscription avec les données suivantes :\n" - . " - nom : $nom\n" - . " - prenom : $prenom\n" - . " - promo : $promo\n" - . " - naissance : $naissance (date connue : $naiss_ini)\n" - . " - forlife : $forlife\n" - . " - email : $email\n" - . " - sexe : $femme\n" - . " - ip : {$logger->ip} ({$logger->host})\n" - . ($logger->proxy_ip ? " - proxy : {$logger->proxy_ip} ({$logger->proxy_host})\n" : "") - . "\n\n"; - if (count($market) > 0) { - $msg .= "Les marketings suivants avaient été effectués :\n" - . implode("\n", $market); - } else { - $msg .= "$prenom $nom n'a jamais reçu de mail de marketing."; - } - $mymail->setTxtBody($msg); - $mymail->send(); - } - - Marketing::clear($uid); - - pl_redirect('register/success'); - $page->assign('uid', $uid); - } - - function handler_success(&$page) - { - global $globals; - $page->changeTpl('register/success.tpl'); - - $_SESSION['sub_state'] = array('step' => 5); - if (Env::has('response2')) { - $_SESSION['password'] = $password = Post::v('response2'); - - XDB::execute('UPDATE auth_user_md5 SET password={?} - WHERE user_id={?}', $password, - S::v('uid')); - - // If GoogleApps is enabled, and the user did choose to use synchronized passwords, - // and if the (stupid) user has decided to user /register/success another time, - // updates the Google Apps password as well. - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife')); - if ($account->active() && $account->sync_password) { - $account->set_password($password); - } - } - - $log = S::v('log'); - S::logger()->log('passwd', ''); - - if (Cookie::v('ORGaccess')) { - require_once('secure_hash.inc.php'); - setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0); - } - - $page->assign('mdpok', true); - } - - $res = XDB::iterRow("SELECT sub, domain - FROM register_subs - WHERE uid = {?} AND type = 'list' - ORDER BY domain", - S::i('uid')); - $current_domain = null; - $lists = array(); - while (list($sub, $domain) = $res->next()) { - if ($current_domain != $domain) { - $current_domain = $domain; - $client = new MMList(S::v('uid'), S::v('password'), $domain); - } - list($details, ) = $client->get_members($sub); - $lists["$sub@$domain"] = $details; - } - $page->assign_by_ref('lists', $lists); - - $page->addJsLink('motdepasse.js'); - } - - function handler_save(&$page) - { - global $globals; - - // Finish registration procedure - if (Post::v('register_from_ax_question')) { - XDB::execute('UPDATE auth_user_quick - SET profile_from_ax = 1 - WHERE user_id = {?}', - S::v('uid')); - } - if (Post::v('add_to_nl')) { - require_once 'newsletter.inc.php'; - NewsLetter::subscribe(); - } - if (Post::v('add_to_ax')) { - require_once dirname(__FILE__) . '/axletter/axletter.inc.php'; - AXLetter::subscribe(); - } - if (Post::v('add_to_promo')) { - $r = XDB::query('SELECT id FROM groupex.asso WHERE diminutif = {?}', - S::v('promo')); - $asso_id = $r->fetchOneCell(); - XDB::execute('REPLACE INTO groupex.membres (uid,asso_id) - VALUES ({?}, {?})', - S::v('uid'), $asso_id); - $mmlist = new MMList(S::v('uid'), S::v('password')); - $mmlist->subscribe("promo".S::v('promo')); - } - if (Post::v('sub_ml')) { - $subs = array_keys(Post::v('sub_ml')); - $current_domain = null; - foreach ($subs as $list) { - list($sub, $domain) = explode('@', $list); - if ($domain != $current_domain) { - $current_domain = $domain; - $client = new MMList(S::v('uid'), S::v('password'), $domain); - } - $client->subscribe($sub); - } - } - if (Post::v('imap')) { - require_once 'emails.inc.php'; - $storage = new EmailStorage(S::v('uid'), 'imap'); - $storage->activate(); - } - - pl_redirect('profile/edit'); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/register/register.inc.php b/modules/register/register.inc.php deleted file mode 100644 index e1a98c9..0000000 --- a/modules/register/register.inc.php +++ /dev/null @@ -1,253 +0,0 @@ - 2 || $maxlen == strlen($_nom)); -} - -// }}} -// {{{ function check_mat - -function check_mat($promo, $mat, $nom, $prenom, &$ourmat, &$ourid, &$watch, &$naiss) -{ - if (!preg_match('/^[0-9][0-9][0-9][0-9][0-9][0-9]$/', $mat)) { - return "Le matricule doit comporter 6 chiffres."; - } - - $year = intval(substr($mat, 0, 3)); - $rang = intval(substr($mat, 3, 3)); - if ($year > 200) { $year /= 10; }; - if ($year < 96) { - return "ton matricule est incorrect"; - } else { - $ourmat = sprintf('%04u%04u', 1900+$year, $rang); - } - - $res = XDB::query( - 'SELECT user_id, promo, perms IN ("admin","user"), nom, prenom, FIND_IN_SET(\'watch\', flags), naissance_ini - FROM auth_user_md5 - WHERE matricule={?} and deces = 0', $ourmat); - list ($uid, $_promo, $_already, $_nom, $_prenom, $watch, $naiss) = $res->fetchOneRow(); - if ($_already) { return "tu es déjà inscrit ou ton matricule est incorrect !"; } - if ($_promo != $promo) { return "erreur de matricule"; } - - if (!user_cmp($prenom, $nom, $_prenom, $_nom)) { - return "erreur dans l'identification. Réessaie, il y a une erreur quelque part !"; - } - - $ourid = $uid; - return true; -} - -// }}} -// {{{ function check_old_mat - -function check_old_mat($promo, $mat, $nom, $prenom, &$ourmat, &$ourid, &$watch, &$naiss) -{ - $res = XDB::iterRow( - 'SELECT user_id, nom, prenom, matricule, FIND_IN_SET(\'watch\', flags), naissance_ini - FROM auth_user_md5 - WHERE promo={?} AND deces=0 AND perms="pending"', $promo); - while (list($_uid, $_nom, $_prenom, $_mat, $watch, $naiss) = $res->next()) { - if (user_cmp($prenom, $nom, $_prenom, $_nom)) { - $ourid = $_uid; - $ourmat = $_mat; - return true; - } - } - - $res = XDB::iterRow( - 'SELECT user_id, nom, prenom, matricule, alias, FIND_IN_SET(\'watch\', u.flags), naissance_ini - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id = a.id and FIND_IN_SET("bestalias", a.flags)) - WHERE promo={?} AND deces=0 AND perms IN ("user","admin")', $promo); - while (list($_uid, $_nom, $_prenom, $_mat, $alias, $watch, $naiss) = $res->next()) { - if (user_cmp($prenom, $nom, $_prenom, $_nom)) { - $ourid = $_uid; - $ourmat = $_mat; - return "Tu es vraisemblablement déjà inscrit !"; - } - } - return "erreur: vérifie que tu as bien orthographié ton nom !"; -} - -// }}} -// {{{ function check_new_user - -function check_new_user(&$sub) -{ - extract($sub); - - $prenom = preg_replace("/[ \t]+/", ' ', trim($prenom)); - $prenom = preg_replace("/--+/", '-', $prenom); - $prenom = preg_replace("/''+/", '\'', $prenom); - $prenom = make_firstname_case($prenom); - - $nom = preg_replace("/[ \t]+/", ' ', trim($nom)); - $nom = preg_replace("/--+/", '-', $nom); - $nom = preg_replace("/''+/", '\'', $nom); - $nom = strtoupper(replace_accent($nom)); - - if ($promo >= 1996) { - $res = check_mat($promo, $mat, $nom, $prenom, $ourmat, $ourid, $watch, $naiss); - } else { - $res = check_old_mat($promo, $mat, $nom, $prenom, $ourmat, $ourid, $watch, $naiss); - } - if ($res !== true) { return $res; } - - $sub['nom'] = $nom; - $sub['prenom'] = $prenom; - $sub['ourmat'] = $ourmat; - $sub['uid'] = $ourid; - $sub['watch'] = $watch; - $sub['naissance_ini'] = $naiss; - - return true; -} - -// }}} -// {{{ function create_aliases - -function create_aliases (&$sub) -{ - global $globals; - extract ($sub); - - $mailorg = make_username($prenom, $nom); - $mailorg2 = $mailorg.sprintf(".%02u", ($promo%100)); - $forlife = make_forlife($prenom, $nom, $promo); - - $res = XDB::query('SELECT COUNT(*) FROM aliases WHERE alias={?}', $forlife); - if ($res->fetchOneCell() > 0) { - return "Tu as un homonyme dans ta promo, il faut traiter ce cas manuellement.
    ". - "envoie un mail à
    mail->domain}\">" . - "support@{$globals->mail->domain} en expliquant ta situation."; - } - - $res = XDB::query('SELECT id, type, expire FROM aliases WHERE alias={?}', $mailorg); - - if ( $res->numRows() ) { - - list($h_id, $h_type, $expire) = $res->fetchOneRow(); - - if ( $h_type != 'homonyme' and empty($expire) ) { - XDB::execute('UPDATE aliases SET expire=ADDDATE(NOW(),INTERVAL 1 MONTH) WHERE alias={?}', $mailorg); - XDB::execute('REPLACE INTO homonymes (homonyme_id,user_id) VALUES ({?},{?})', $h_id, $h_id); - XDB::execute('REPLACE INTO homonymes (homonyme_id,user_id) VALUES ({?},{?})', $h_id, $uid); - $res = XDB::query("SELECT alias FROM aliases WHERE id={?} AND expire IS NULL", $h_id); - $als = $res->fetchColumn(); - - $mailer = new PlMailer(); - $mailer->setFrom('"Support Polytechnique.org" mail->domain . '>'); - $mailer->addTo("$mailorg@" . $globals->mail->domain); - $mailer->setSubject("perte de ton alias $mailorg dans un mois !"); - $mailer->addCc('"Support Polytechnique.org" mail->domain . '>'); - $msg = - "Bonjour,\n\n". - - "Un homonyme vient de s'inscrire. La politique de Polytechnique.org est de fournir des\n". - "adresses mail devinables, nous ne pouvons donc pas conserver ton alias '$mailorg' qui\n". - "correspond maintenant à deux personnes.\n\n". - - "Tu gardes tout de même l'usage de cet alias pour un mois encore à compter de ce jour.\n\n". - - "Lorsque cet alias sera désactivé, l'adresse $mailorg@polytechnique.org renverra vers un \n". - "robot qui indiquera qu'il y a plusieurs personnes portant le même nom ;\n". - "cela évite que l'un des homonymes reçoive des courriels destinés à l'autre.\n\n". - - "Pour te connecter au site, tu pourras utiliser comme identifiant n'importe lequel de tes\n". - "autres alias :\n". - " ".join(', ', $als)."\n"; - "Commence dès aujourd'hui à communiquer à tes correspondants la nouvelle adresse que tu comptes utiliser !\n\n". - - "En nous excusant pour le désagrément occasionné,\n". - "Cordialement,\n\n". - - "-- \n". - "L'équipe de Polytechnique.org\n". - "\"Le portail des élèves & anciens élèves de l'X\""; - $mailer->SetTxtBody(wordwrap($msg,72)); - $mailer->send(); - } - - $sub['forlife'] = $forlife; - $sub['bestalias'] = $mailorg2; - $sub['mailorg2'] = null; - } else { - $sub['forlife'] = $forlife; - $sub['bestalias'] = $mailorg; - $sub['mailorg2'] = $mailorg2; - } - - return true; -} - -// }}} -// {{{ function finish_ins - -function finish_ins($sub_state) -{ - global $globals; - extract($sub_state); - require_once('secure_hash.inc.php'); - - $pass = rand_pass(); - $pass_encrypted = hash_encrypt($pass); - $hash = rand_url_id(12); - - XDB::execute('UPDATE auth_user_md5 SET last_known_email={?} WHERE matricule = {?}', $email, $mat); - - XDB::execute( - "REPLACE INTO register_pending (uid, forlife, bestalias, mailorg2, password, email, date, relance, naissance, hash) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, NOW(), 0, {?}, {?})", - $uid, $forlife, $bestalias, $mailorg2, $pass_encrypted, $email, $naissance, $hash); - - $mymail = new PlMailer('register/inscrire.mail.tpl'); - $mymail->assign('mailorg', $bestalias); - $mymail->assign('lemail', $email); - $mymail->assign('pass', $pass); - $mymail->assign('baseurl', $globals->baseurl); - $mymail->assign('hash', $hash); - $mymail->assign('subj', $bestalias."@" . $globals->mail->domain); - $mymail->send(); -} - -// }}} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/search.php b/modules/search.php deleted file mode 100644 index 7e2dfea..0000000 --- a/modules/search.php +++ /dev/null @@ -1,486 +0,0 @@ - $this->make_hook('quick', AUTH_PUBLIC), - 'search/adv' => $this->make_hook('advanced', AUTH_COOKIE), - 'advanced_search.php' => $this->make_hook('redir_advanced', AUTH_PUBLIC), - 'search/autocomplete' => $this->make_hook('autocomplete', AUTH_COOKIE, 'user', NO_AUTH), - 'search/list' => $this->make_hook('list', AUTH_COOKIE, 'user', NO_AUTH), - ); - } - - function handler_redir_advanced(&$page, $mode = null) - { - pl_redirect('search/adv'); - exit; - } - - function on_subscribe($forlife, $uid, $promo, $pass) - { - require_once 'user.func.inc.php'; - user_reindex($uid); - } - - - function form_prepare() - { - Platal::page()->assign('formulaire',1); - } - - function get_diplomas($school = null) - { - if (is_null($school) && Env::has('school')) { - $school = Env::i('school'); - } - - if (!is_null($school)) { - $sql = 'SELECT type FROM applis_def WHERE id=' . $school; - } else { - $sql = 'DESCRIBE applis_def type'; - } - - $res = XDB::query($sql); - $row = $res->fetchOneRow(); - if (!is_null($school)) { - $types = $row[0]; - } else { - $types = explode('(',$row[1]); - $types = str_replace("'","",substr($types[1],0,-1)); - } - Platal::page()->assign('choix_diplomas', explode(',',$types)); - } - - function handler_quick(&$page, $action = null, $subaction = null) - { - global $globals; - - $res = XDB::query("SELECT MIN(`diminutif`), MAX(`diminutif`) - FROM `groupex`.`asso` - WHERE `cat` = 'Promotions'"); - list($min, $max) = $res->fetchOneRow(); - $page->assign('promo_min', $min); - $page->assign('promo_max', $max); - - if (Env::has('quick') || $action == 'geoloc') { - $quick = trim(Env::v('quick')); - if (S::logged() && !Env::has('page')) { - S::logger()->log('search', 'quick=' . $quick); - } - $list = 'profile|prf|fiche|fic|referent|ref|mentor'; - if (S::has_perms()) { - $list .= '|admin|adm|ax'; - } - if (preg_match('/^(' . $list . '):([-a-z]+(\.[-a-z]+(\.\d{2,4})?)?)$/', replace_accent($quick), $matches)) { - $forlife = $matches[2]; - switch($matches[1]) { - case 'admin': case 'adm': - $base = 'admin/user/'; - break; - case 'ax': - $base = 'profile/ax/'; - break; - case 'profile': case 'prf': case 'fiche': case 'fic': - $base = 'profile/'; - break; - case 'referent': case 'ref': case 'mentor': - $base = 'referent/'; - break; - } - - require_once 'user.func.inc.php'; - $login = get_user_forlife($forlife, '_silent_user_callback'); - if ($login) { - pl_redirect($base . $login); - } - $_REQUEST['quick'] = $forlife; - $_GET['quick'] = $forlife; - } elseif (strpos($quick, 'doc:') === 0) { - $url = 'Docs/Recherche?'; - $url .= 'action=search&q=' . urlencode(substr($quick, 4)); - $url .= '&group=' . urlencode('-Equipe,-Main,-PmWiki,-Site,-Review'); - pl_redirect($url); - } - - $page->assign('formulaire', 0); - - require_once 'userset.inc.php'; - $view = new SearchSet(true, $action == 'geoloc' && substr($subaction, -3) == 'swf'); - $view->addMod('minifiche', 'Minifiches', true, array('with_score' => true)); - if (S::logged() && !Env::i('nonins')) { - $view->addMod('trombi', 'Trombinoscope', false, array('with_promo' => true, 'with_score' => true)); - $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'search/adv')); - } - $view->apply('search', $page, $action, $subaction); - - $nb_tot = $view->count(); - $page->assign('search_results_nb', $nb_tot); - if ($subaction) { - return; - } - if (!S::logged() && $nb_tot > $globals->search->public_max) { - new ThrowError('Votre recherche a généré trop de résultats pour un affichage public.'); - } elseif ($nb_tot > $globals->search->private_max) { - new ThrowError('Recherche trop générale. Une recherche avancée permet de préciser la recherche.'); - } elseif (empty($nb_tot)) { - new ThrowError('Il n\'existe personne correspondant à ces critères dans la base !'); - } - } else { - $page->assign('formulaire',1); - $page->addJsLink('ajax.js'); - } - - require_once dirname(__FILE__) . '/search/search.inc.php'; - $page->changeTpl('search/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Annuaire'); - } - - function handler_advanced(&$page, $action = null, $subaction = null) - { - global $globals; - require_once 'geoloc.inc.php'; - require_once dirname(__FILE__) . '/search/search.inc.php'; - $page->assign('advanced',1); - $page->addJsLink('jquery.autocomplete.js'); - - if (!Env::has('rechercher') && $action != 'geoloc') { - $this->form_prepare(); - } else { - $textFields = array( - 'country' => array('field' => 'a2', 'table' => 'geoloc_pays', 'text' => 'pays', 'exact' => false), - 'fonction' => array('field' => 'id', 'table' => 'fonctions_def', 'text' => 'fonction_fr', 'exact' => true), - 'secteur' => array('field' => 'id', 'table' => 'emploi_secteur', 'text' => 'label', 'exact' => false), - 'nationalite' => array('field' => 'a2', 'table' => 'geoloc_pays', 'text' => 'nat', 'exact' => 'false'), - 'binet' => array('field' => 'id', 'table' => 'binets_def', 'text' => 'text', 'exact' => false), - 'groupex' => array('field' => 'id', 'table' => 'groupex.asso', - 'text' => "(a.cat = 'GroupesX' OR a.cat = 'Institutions') AND pub = 'public' AND nom", - 'exact' => false), - 'section' => array('field' => 'id', 'table' => 'sections', 'text' => 'text', 'exact' => false), - 'school' => array('field' => 'id', 'table' => 'applis_def', 'text' => 'text', 'exact' => false), - 'city' => array('table' => 'geoloc_city', 'text' => 'name', 'exact' => false) - ); - if (!Env::has('page')) { - S::logger()->log('search', 'adv=' . var_export($_GET, true)); - } - foreach ($textFields as $field=>&$query) { - if (!Env::v($field) && Env::v($field . 'Txt')) { - $res = XDB::query("SELECT {$query['field']} - FROM {$query['table']} - WHERE {$query['text']} " . ($query['exact'] ? " = {?}" : - " LIKE CONCAT('%', {?}, '%')"), - Env::v($field . 'Txt')); - $_REQUEST[$field] = $res->fetchOneCell(); - } - } - - require_once 'userset.inc.php'; - $view = new SearchSet(false, $action == 'geoloc' && substr($subaction, -3) == 'swf'); - $view->addMod('minifiche', 'Minifiches', true); - $view->addMod('trombi', 'Trombinoscope', false, array('with_promo' => true)); - //$view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'search/adv')); - $view->apply('search/adv', $page, $action, $subaction); - - if ($subaction) { - return; - } - $nb_tot = $view->count(); - if ($nb_tot > $globals->search->private_max) { - $this->form_prepare(); - new ThrowError('Recherche trop générale.'); - } - } - - $page->changeTpl('search/index.tpl', $action == 'mini' ? SIMPLE : SKINNED); - $page->addJsLink('ajax.js'); - $page->assign('public_directory',0); - } - - function handler_autocomplete(&$page, $type = null) - { - // Autocompletion : according to type required, return - // a list of results matching with the number of matches. - // The output format is : - // result1|nb1 - // result2|nb2 - // ... - header('Content-Type: text/plain; charset="UTF-8"'); - $q = preg_replace(array('/\*+$/', // always look for $q* - '/([\^\$\[\]])/', // escape special regexp char - '/\*/'), // replace joker by regexp joker - array('', - '\\\\\1', - '.*'), - $_REQUEST['q']); - if (!$q) exit(); - - // try to look in cached results - $cache = XDB::query('SELECT `result` - FROM `search_autocomplete` - WHERE `name` = {?} AND - `query` = {?} AND - `generated` > NOW() - INTERVAL 1 DAY', - $type, $q); - if ($res = $cache->fetchOneCell()) { - echo $res; - die(); - } - - // default search - $unique = '`user_id`'; - $db = '`auth_user_md5`'; - $realid = false; - $beginwith = true; - $field2 = false; - $qsearch = str_replace(array('%', '_'), '', $q); - - switch ($type) { - case 'binetTxt': - $db = '`binets_def` INNER JOIN - `binets_ins` ON(`binets_def`.`id` = `binets_ins`.`binet_id`)'; - $field='`binets_def`.`text`'; - if (strlen($q) > 2) - $beginwith = false; - $realid = '`binets_def`.`id`'; - break; - case 'city': - $db = '`geoloc_city` INNER JOIN - `adresses` ON(`geoloc_city`.`id` = `adresses`.`cityid`)'; - $unique='`uid`'; - $field='`geoloc_city`.`name`'; - break; - case 'countryTxt': - $db = '`geoloc_pays` INNER JOIN - `adresses` ON(`geoloc_pays`.`a2` = `adresses`.`country`)'; - $unique='`uid`'; - $field = '`geoloc_pays`.`pays`'; - $field2 = '`geoloc_pays`.`country`'; - $realid='`geoloc_pays`.`a2`'; - break; - case 'entreprise': - $db = '`entreprises`'; - $field = '`entreprise`'; - $unique='`uid`'; - break; - case 'firstname': - $field = '`prenom`'; - $beginwith = false; - break; - case 'fonctionTxt': - $db = '`fonctions_def` INNER JOIN - `entreprises` ON(`entreprises`.`fonction` = `fonctions_def`.`id`)'; - $field = '`fonction_fr`'; - $unique = '`uid`'; - $realid = '`fonctions_def`.`id`'; - $beginwith = false; - break; - case 'groupexTxt': - $db = "groupex.asso AS a INNER JOIN - groupex.membres AS m ON(a.id = m.asso_id - AND (a.cat = 'GroupesX' OR a.cat = 'Institutions') - AND a.pub = 'public')"; - $field='a.nom'; - $field2 = 'a.diminutif'; - if (strlen($q) > 2) - $beginwith = false; - $realid = 'a.id'; - $unique = 'm.uid'; - break; - case 'name': - $field = '`nom`'; - $field2 = '`nom_usage`'; - $beginwith = false; - break; - case 'nationaliteTxt': - $db = '`geoloc_pays` INNER JOIN - `auth_user_md5` ON(`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite`)'; - $field = 'IF(`geoloc_pays`.`nat`=\'\', - `geoloc_pays`.`pays`, - `geoloc_pays`.`nat`)'; - $realid = '`geoloc_pays`.`a2`'; - break; - case 'nickname': - $field = '`profile_nick`'; - $db = '`auth_user_quick`'; - $beginwith = false; - break; - case 'poste': - $db = '`entreprises`'; - $field = '`poste`'; - $unique='`uid`'; - break; - case 'schoolTxt': - $db = '`applis_def` INNER JOIN - `applis_ins` ON(`applis_def`.`id` = `applis_ins`.`aid`)'; - $field='`applis_def`.`text`'; - $unique = '`uid`'; - $realid = '`applis_def`.`id`'; - if (strlen($q) > 2) - $beginwith = false; - break; - case 'secteurTxt': - $db = '`emploi_secteur` INNER JOIN - `entreprises` ON(`entreprises`.`secteur` = `emploi_secteur`.`id`)'; - $field = '`emploi_secteur`.`label`'; - $realid = '`emploi_secteur`.`id`'; - $unique = '`uid`'; - $beginwith = false; - break; - case 'sectionTxt': - $db = '`sections` INNER JOIN - `auth_user_md5` ON(`auth_user_md5`.`section` = `sections`.`id`)'; - $field = '`sections`.`text`'; - $realid = '`sections`.`id`'; - $beginwith = false; - break; - default: exit(); - } - - function make_field_test($fields, $beginwith) { - $tests = array(); - $tests[] = $fields . ' LIKE CONCAT({?}, \'%\')'; - if (!$beginwith) { - $tests[] = $fields . ' LIKE CONCAT(\'% \', {?}, \'%\')'; - $tests[] = $fields . ' LIKE CONCAT(\'%-\', {?}, \'%\')'; - } - return '(' . implode(' OR ', $tests) . ')'; - } - $field_select = $field; - $field_t = make_field_test($field, $beginwith); - if ($field2) { - $field2_t = make_field_test($field2, $beginwith); - $field_select = 'IF(' . $field_t . ', ' . $field . ', ' . $field2. ')'; - } - $list = XDB::iterator('SELECT ' . $field_select . ' AS field, - COUNT(DISTINCT ' . $unique . ') AS nb - ' . ($realid ? (', ' . $realid . ' AS id') : '') . ' - FROM ' . $db . ' - WHERE ' . $field_t . - ($field2 ? (' OR ' . $field2_t) : '') . ' - GROUP BY ' . $field_select . ' - ORDER BY nb DESC - LIMIT 11', - $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, - $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch, $qsearch); - $nbResults = 0; - $res = ""; - while ($result = $list->next()) { - $nbResults++; - if ($nbResults == 11) { - $res .= $q."|-1\n"; - } else { - $res .= $result['field'].'|'; - $res .= $result['nb']; - if (isset($result['id'])) { - $res .= '|'.$result['id']; - } - $res .= "\n"; - } - } - XDB::query('REPLACE INTO `search_autocomplete` - VALUES ({?}, {?}, {?}, NOW())', - $type, $q, $res); - echo $res; - exit(); - } - - function handler_list(&$page, $type = null, $idVal = null) - { - // Give the list of all values possible of type and builds a select input for it - $field = '`text`'; - $id = '`id`'; - $where = ''; - - switch ($type) { - case 'binet': - $db = '`binets_def`'; - break; - case 'country': - $db = '`geoloc_pays`'; - $field = '`pays`'; - $id = '`a2`'; - $page->assign('onchange', 'changeCountry(this.value)'); - break; - case 'fonction': - $db = '`fonctions_def`'; - $field = '`fonction_fr`'; - break; - case 'diploma': - header('Content-Type: text/xml; charset="UTF-8"'); - $this->get_diplomas(); - $page->changeTpl('search/adv.grade.form.tpl', NO_SKIN); - return; - case 'groupex': - $db = 'groupex.asso'; - $where = " WHERE (cat = 'GroupesX' OR cat = 'Institutions') AND pub = 'public'"; - $field = 'nom'; - break; - case 'nationalite': - $db = '`geoloc_pays` INNER JOIN - `auth_user_md5` ON (`geoloc_pays`.`a2` = `auth_user_md5`.`nationalite`)'; - $field = 'IF(`nat`=\'\', `pays`, `nat`)'; - $id = '`a2`'; - break; - case 'region': - $db = '`geoloc_region`'; - $field = '`name`'; - $id = '`region`'; - if (isset($_REQUEST['country'])) { - $where .= ' WHERE `a2` = "'.$_REQUEST['country'].'"'; - } - break; - case 'school': - $db = '`applis_def`'; - $page->assign('onchange', 'changeSchool(this.value)'); - break; - case 'section': - $db = '`sections`'; - break; - case 'secteur': - $db = '`emploi_secteur`'; - $field = '`label`'; - break; - default: exit(); - } - if (isset($idVal)) { - header('Content-Type: text/plain; charset="UTF-8"'); - $result = XDB::query('SELECT '.$field.' AS field FROM '.$db.' WHERE '.$id.' = {?} LIMIT 1',$idVal); - echo $result->fetchOneCell(); - exit(); - } - header('Content-Type: text/xml; charset="UTF-8"'); - $page->changeTpl('include/field.select.tpl', NO_SKIN); - $page->assign('name', $type); - $page->assign('list', XDB::iterator('SELECT '.$field.' AS field, - '.$id.' AS id - FROM '.$db.$where.' - GROUP BY '.$field.' - ORDER BY '.$field)); - $page->assign('with_text_value', true); - $page->assign('onchange', "document.forms.recherche.{$type}Txt.value = this.options[this.selectedIndex].text"); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php deleted file mode 100644 index db5a414..0000000 --- a/modules/search/classes.inc.php +++ /dev/null @@ -1,870 +0,0 @@ -search->result_fields = ' - u.user_id, u.promo, u.matricule, u.matricule_ax, - if(u.nom_usage=\'\', u.nom, u.nom_usage) AS NomSortKey, - u.nom_usage,u.date, - u.deces!=0 AS dcd,u.deces, - u.perms IN (\'admin\',\'user\', \'disabled\') AS inscrit, - u.perms != \'pending\' AS wasinscrit, - FIND_IN_SET(\'femme\', u.flags) AS sexe, - a.alias AS forlife, - ad0.text AS app0text, ad0.url AS app0url, ai0.type AS app0type, - ad1.text AS app1text, ad1.url AS app1url, ai1.type AS app1type, - es.label AS secteur, ef.fonction_fr AS fonction, - IF(n.nat=\'\',n.pays,n.nat) AS nat, n.a2 AS iso3166, - (COUNT(em.email) > 0 OR FIND_IN_SET("googleapps", u.mail_storage) > 0) AS actif,'; -// hide private information if not logged -if (S::logged()) - $globals->search->result_fields .=' - q.profile_web AS web, - q.profile_mobile AS mobile, - q.profile_freetext AS freetext, - adr.city, gp.pays AS countrytxt, gr.name AS region, - e.entreprise,'; -else - $globals->search->result_fields .=" - IF(q.profile_web_pub='public', q.profile_web, '') AS web, - IF(q.profile_mobile_pub='public', q.profile_mobile, '') AS mobile, - IF(q.profile_freetext_pub='public', q.profile_freetext, '') AS freetext, - IF(adr.pub='public', adr.city, '') AS city, - IF(adr.pub='public', gp.pays, '') AS countrytxt, - IF(adr.pub='public', gr.name, '') AS region, - IF(e.pub='public', e.entreprise, '') AS entreprise,"; -@$globals->search->result_where_statement = ' - LEFT JOIN applis_ins AS ai0 ON (u.user_id = ai0.uid AND ai0.ordre = 0) - LEFT JOIN applis_def AS ad0 ON (ad0.id = ai0.aid) - LEFT JOIN applis_ins AS ai1 ON (u.user_id = ai1.uid AND ai1.ordre = 1) - LEFT JOIN applis_def AS ad1 ON (ad1.id = ai1.aid) - LEFT JOIN entreprises AS e ON (e.entrid = 0 AND e.uid = u.user_id) - LEFT JOIN emploi_secteur AS es ON (e.secteur = es.id) - LEFT JOIN fonctions_def AS ef ON (e.fonction = ef.id) - LEFT JOIN geoloc_pays AS n ON (u.nationalite = n.a2) - LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET(\'active\',adr.statut)) - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) - LEFT JOIN emails AS em ON (em.uid = u.user_id AND em.flags = \'active\')'; - -// }}} -// {{{ class ThrowError - -/** handle errors for end-users queries - * assign the error message and runs the templates - * - * @author Jean-Sebastien Bedo - */ -class ThrowError -{ - public static $throwHook = array('ThrowError', 'defaultHandler'); - - /** constuctor - * @param $explain string the error (in natural language) - */ - public function __construct($explain) - { - call_user_func(ThrowError::$throwHook, $explain); - } - - /** defaut error handler - */ - private static function defaultHandler($explain) - { - global $globals; - $page =& Platal::page(); - $page->changeTpl('search/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Annuaire'); - $page->assign('baseurl', $globals->baseurl); - $page->trigError($explain); - $page->run(); - } -} - -// }}} -// {{{ class SField [Base class] - -/** classe de base représentant un champ de recherche - * (correspond à un champ du formulaire mais peut être à plusieurs champs de la bdd) - * interface étendue pour chaque type de champ particulier - */ -class SField -{ - // {{{ properties - - /** le nom du champ dans le formulaire HTML */ - var $fieldFormName; - /** champs de la bdd correspondant à ce champ sous forme d'un tableau */ - var $fieldDbName; - /** champ résultat dans la requête MySQL correspondant à ce champ - * (alias utilisé pour la clause ORDER BY) */ - var $fieldResultName; - /** valeur du champ instanciée par l'utilisateur */ - var $value; - - // }}} - // {{{ constructor - - /** constructeur - * (récupère la requête de l'utilisateur pour ce champ) */ - function SField($_fieldFormName, $_fieldDbName='', $_fieldResultName='') - { - $this->fieldFormName = $_fieldFormName; - $this->fieldDbName = $_fieldDbName; - $this->fieldResultName = $_fieldResultName; - $this->get_request(); - } - - // }}} - // {{{ function get_request() - - /** récupérer la requête de l'utilisateur - * on met une chaîne vide si le champ n'a pas été complété */ - function get_request() - { - $this->value = trim(Env::v($this->fieldFormName)); - } - - // }}} - // {{{ function get_where_statement() - - /** récupérer la clause correspondant au champ dans la clause WHERE de la requête - * on parcourt l'ensemble des champs de la bdd de $fieldDbName et on associe - * à chacun d'entre eux une clause spécifique - * la clause totale et la disjonction de ces clauses spécifiques */ - function get_where_statement() - { - if ($this->value=='') { - return false; - } - $res = implode(' OR ', array_filter(array_map(array($this, 'get_single_where_statement'), $this->fieldDbName))); - return empty($res) ? '' : "($res)"; - } - - // }}} - // {{{ function get_order_statement() - - /** récupérer la clause correspondant au champ dans la clause ORDER BY de la requête - * utilisé par exemple pour placer d'abord le nom égal à la requête avant les approximations */ - function get_order_statement() - { - return false; - } - - // }}} - // {{{ function get_select_statement() - - function get_select_statement() - { - return false; - } - - // }}} - // {{{ function get_url() - - /** récupérer le bout d'URL correspondant aux paramètres permettant d'imiter une requête d'un - * utilisateur assignant la valeur $this->value à ce champ */ - function get_url() - { - if (empty($this->value)) { - return false; - } else { - return $this->fieldFormName.'='.urlencode($this->value); - } - } - - // }}} -} - -// }}} -// {{{ class QuickSearch [Google Like] - -class QuickSearch extends SField -{ - // {{{ properties - - /** stores tokens */ - var $strings; - /** stores numerical ranges */ - var $ranges; - /** stores admin searches */ - var $email; - var $ip; - - // }}} - // {{{ constructor - - function QuickSearch($_fieldFormName) - { - $this->fieldFormName = $_fieldFormName; - $this->get_request(); - if (preg_match(":[\]\[{}~/§_`|%$^=+]|\*\*:u", $this->value)) { - new ThrowError('Un champ contient un caractère interdit rendant la recherche impossible.'); - } - } - - // }}} - // {{{ function isempty() - - function isempty() - { - return empty($this->strings) && empty($this->ranges) && empty($this->email) && empty($this->ip); - } - - // }}} - // {{{ function get_request() - - function get_request() - { - parent::get_request(); - $s = replace_accent(trim($this->value)); - $r = $s = str_replace('*','%',$s); - - if (S::has_perms() && strpos($s, '@') !== false) { - $this->email = $s; - } else if (S::has_perms() && preg_match('/[0-9]+\.([0-9]+|%)\.([0-9]+|%)\.([0-9]+|%)/', $s)) { - $this->ip = $s; - } - if ($this->email || $this->ip) { - $this->strings = $this->ranges = array(); - return; - } - - $s = preg_replace('!\d+!', ' ', $s); - $this->strings = preg_split("![^a-zA-Z%]+!",$s, -1, PREG_SPLIT_NO_EMPTY); - if (count($this->strings) > 5) { - Platal::page()->trigWarning("Tu as indiqué trop d'éléments dans ta recherche, seuls les 5 premiers seront pris en compte"); - $this->strings = array_slice($this->strings, 0, 5); - } - - $s = preg_replace('! *- *!', '-', $r); - $s = preg_replace('!([<>]) *!', ' \1', $s); - $s = preg_replace('![^0-9\-><]!', ' ', $s); - $s = preg_replace('![<>\-] !', '', $s); - $ranges = preg_split('! +!', $s, -1, PREG_SPLIT_NO_EMPTY); - $this->ranges=Array(); - foreach ($ranges as $r) { - if (preg_match('!^([<>]\d{4}|\d{4}(-\d{4})?)$!', $r)) $this->ranges[] = $r; - } - } - - // }}} - // {{{ function get_where_statement() - - function get_where_statement() - { - $where = Array(); - foreach ($this->strings as $i => $s) { - if (Env::i('with_soundex') && strlen($s) > 1) { - $t = soundex_fr($s); - $where[] = "sn$i.soundex = '$t'"; - } else { - $t = str_replace('*', '%', $s).'%'; - $t = str_replace('%%', '%', $t); - $where[] = "sn$i.token LIKE '$t'"; - } - } - - $wherep = Array(); - foreach ($this->ranges as $r) { - if (preg_match('!^\d{4}$!', $r)) { - $wherep[] = "u.promo=$r"; - } elseif (preg_match('!^(\d{4})-(\d{4})$!', $r, $matches)) { - $p1=min(intval($matches[1]), intval($matches[2])); - $p2=max(intval($matches[1]), intval($matches[2])); - $wherep[] = "(u.promo>=$p1 AND u.promo<=$p2)"; - } elseif (preg_match('!^<(\d{4})!', $r, $matches)) { - $wherep[] = "u.promo<={$matches[1]}"; - } elseif (preg_match('!^>(\d{4})!', $r, $matches)) { - $wherep[] = "u.promo>={$matches[1]}"; - } - } - if (!empty($wherep)) { - $where[] = '('.join(' OR ',$wherep).')'; - } - if (!empty($this->email)) { - $where[] = 'ems.email = ' . XDB::escape($this->email); - } - if (!empty($this->ip)) { - $ip = ip_to_uint($this->ip); - $where[] = "( ls.ip = $ip OR ls.forward_ip = $ip ) AND ls.suid = 0"; - } - - return join(" AND ", $where); - } - - // }}} - // {{{ get_select_statement - function get_select_statement() - { - $join = ""; - $and = ''; - $uniq = ''; - foreach ($this->strings as $i => $s) { - if (!S::logged()) { - $and = "AND FIND_IN_SET('public', sn$i.flags)"; - } - $myu = str_replace('snv', "sn$i", $uniq); - $join .= "INNER JOIN search_name AS sn$i ON (u.user_id = sn$i.uid $and$myu)\n"; - $uniq .= " AND sn$i.token != snv.token"; - } - if (!empty($this->email)) { - $join .= "LEFT JOIN emails AS ems ON (ems.uid = u.user_id)"; - } - if (!empty($this->ip)) { - $join .= "INNER JOIN logger.sessions AS ls ON (ls.uid = u.user_id)\n"; - } - return $join; - } - // }}} - // {{{ function get_order_statement() - - function get_order_statement() - { - return false; - } - - // }}} - // {{{ function get_score_statement - - function get_score_statement() - { - $sum = array('0'); - foreach ($this->strings as $i => $s) { - $sum[] .= "SUM(sn$i.score + IF('$s'=sn$i.token,5,0))"; - } - return join('+', $sum).' AS score'; - } - - // }}} -} - -// }}} -// {{{ class NumericSField [Integer fields] - -/** classe de champ numérique entier (offset par exemple) - */ -class NumericSField extends SField -{ - // {{{ constructor - - /** constructeur - * (récupère la requête de l'utilisateur pour ce champ) */ - function NumericSField($_fieldFormName) - { - $this->fieldFormName = $_fieldFormName; - $this->get_request(); - } - - // }}} - // {{{ function get_request() - - /** récupère la requête de l'utilisateur et échoue s'il ne s'agit pas d'un entier */ - function get_request() - { - parent::get_request(); - if (empty($this->value)) { - $this->value = 0; - } - if (!preg_match("/^[0-9]+$/", $this->value)) { - new ThrowError('Un champ numérique contient des caractères alphanumériques.'); - } - } - - // }}} -} - -// }}} -// {{{ class RefSField [ ??? ] - -class RefSField extends SField -{ - // {{{ properties - - var $refTable; - var $refAlias; - var $refCondition; - var $exact = true; - - // }}} - // {{{ constructor - - function RefSField($_fieldFormName, $_fieldDbName='', $_refTable, $_refAlias, $_refCondition, $_exact=true) - { - $this->fieldFormName = $_fieldFormName; - $this->fieldDbName = $_fieldDbName; - $this->refTable = $_refTable; - $this->refAlias = $_refAlias; - $this->refCondition = $_refCondition; - $this->exact = $_exact; - $this->get_request(); - } - - // }}} - // {{{ function get_request() - - function get_request() { - parent::get_request(); - if ($this->value=='00' || $this->value=='0') { - $this->value=''; - } - } - - // }}} - // {{{ function too_large() - - function too_large() - { - return ($this->value==''); - } - - // }}} - // {{{ function compare() - - function compare() - { - $val = addslashes($this->value); - return $this->exact ? "='$val'" : " LIKE '%$val%'"; - } - - // }}} - // {{{ function get_single_match_statement() - - function get_single_match_statement($field) - { - return $field.$this->compare(); - } - - // }}} - // {{{ function get_single_where_statement() - - function get_single_where_statement($field) - { - return $this->refTable=='' ? $this->get_single_match_statement($field) : false; - } - - // }}} - // {{{ function get_select_statement() - - function get_select_statement() - { - if ($this->value=='' || $this->refTable=='') { - return false; - } - $res = implode(' OR ', array_filter(array_map(array($this, 'get_single_match_statement'), $this->fieldDbName))); - if (is_array($this->refTable)) { - foreach ($this->refTable as $i => $refT) - $last = $i; - $inner = ""; - foreach ($this->refTable as $i => $refT) - $inner .= " INNER JOIN {$refT} AS {$this->refAlias[$i]} ON ({$this->refCondition[$i]} ".(($i == $last)?"AND ($res) ":"").")\n"; - return $inner; - } else { - return "INNER JOIN {$this->refTable} AS {$this->refAlias} ON ({$this->refCondition} AND ($res) )"; - } - } - - // }}} -} - -// }}} - -// {{{ class RefSFieldMultipleTable -class MapSField extends RefSField -{ - var $mapId; - - function MapSField($_fieldFormName, $_fieldDbName='', $_refTable, $_refAlias, $_refCondition, $_mapId=false) - { - if ($_mapId === false) - $this->mapId = Env::v($_fieldFormName, ''); - else - $this->mapId = $_mapId; - $this->value = $this->mapId; - $this->RefSField($_fieldFormName, $_fieldDbName, $_refTable, $_refAlias, $_refCondition, true, false); - } - - function get_select_statement() - { - if ($this->mapId === '') return false; - $res = implode(' OR ', array_filter(array_map(array($this, 'get_single_match_statement'), $this->fieldDbName))); - foreach ($this->refTable as $i => $refT) - $last = $i; - $inner = ""; - foreach ($this->refTable as $i => $refT) - $inner .= " INNER JOIN {$refT} AS {$this->refAlias[$i]} ON ({$this->refCondition[$i]} ".(($i == $last)?"AND ($res) ":"").")"; - return $inner; - } - function get_request() - { - $this->value = $this->mapId; - } -} - -// {{{ class RefWithSoundexSField [ ??? ] - -class RefWithSoundexSField extends RefSField -{ - // {{{ function compare() - - function compare() - { - return "='".soundex_fr($this->value)."'"; - } - - // }}} -} - -// }}} -// {{{ class StringSField [String fields] - -/** classe de champ texte (nom par exemple) - */ -class StringSField extends SField -{ - // {{{ function get_request() - - /** récupère la requête de l'utilisateur et échoue si la chaîne contient des caractères - * interdits */ - function get_request() - { - parent::get_request(); - if (preg_match(":[\]\[<>{}~/§_`|%$^=+]|\*\*:u", $this->value)) { - new ThrowError('Un champ contient un caractère interdit rendant la recherche impossible.'); - } - } - - // }}} - // {{{ function length() - - /** donne la longueur de la requête de l'utilisateur - * (au sens strict i.e. pas d'* ni d'espace ou de trait d'union -> les contraintes réellement - * imposées par l'utilisateur) */ - function length() - { - $cleaned = replace_accent(strtolower($this->value)); - $length = strlen(ereg_replace('[a-z0-9]', '', $cleaned)); - return strlen($this->value) - $length; - } - - // }}} - // {{{ function too_large() - - function too_large() - { - return ($this->length()<2); - } - - // }}} - // {{{ function get_single_where_statement() - - /** clause WHERE correspondant à un champ de la bdd et à ce champ de formulaire - * @param field nom de champ de la bdd concerné par la clause */ - function get_single_where_statement($field) - { - $regexp = strtr(addslashes($this->value), '-*', '_%'); - return "$field LIKE '$regexp%'"; - } - - // }}} - // {{{ function get_order_statement() - - /** clause ORDER BY correspondant à ce champ de formulaire */ - function get_order_statement() - { - if ($this->value!='' && $this->fieldResultName!='') { - return "{$this->fieldResultName}!='".addslashes($this->value)."'"; - } else { - return false; - } - } - - // }}} -} - -// }}} -// {{{ class NameSField [Names : serach 'n%' + '% b'] - -/** classe pour les noms : on cherche en plus du like 'foo%' le like '% foo' (particules) -+*/ -class NameSField extends StringSField -{ - // {{{ function get_single_where_statement() - - function get_single_where_statement($field) - { - $regexp = strtr(addslashes($this->value), '-*', '_%'); - return "$field LIKE '$regexp%' OR $field LIKE '% $regexp%' OR $field LIKE '%-$regexp%'"; - } - - // }}} - // {{{ function get_order_statement() - - function get_order_statement() - { - if ($this->value!='' && $this->fieldResultName!='') { - return "{$this->fieldResultName} NOT LIKE '".addslashes($this->value)."'"; - } else { - return false; - } - } - - // }}} -} - -// }}} -// {{{ class StringWithSoundexSField [Strings + soundex] - -/** classe de champ texte avec soundex (nom par exemple) - */ -class StringWithSoundexSField extends StringSField -{ - // {{{ function get_single_where_statement() - - /** clause WHERE correspondant à un champ de la bdd et à ce champ de formulaire - * @param field nom de champ de la bdd concerné par la clause */ - function get_single_where_statement($field) { - return $field.'="'.soundex_fr($this->value).'"'; - } - - // }}} -} - -// }}} -// {{{ class PromoSField [Prom field] - -/** classe de champ de promotion */ -class PromoSField extends SField -{ - // {{{ properties - - /** opérateur de comparaison (<,>,=) de la promo utilisé pour ce champ de formulaire */ - var $compareField; - - // }}} - // {{{ constructor - - /** constructeur - * compareField est un champ de formulaire très simple qui ne sert qu'à la construction de la - * clause WHERE de la promo */ - function PromoSField($_fieldFormName, $_compareFieldFormName, $_fieldDbName, $_fieldResultName) - { - parent::SField($_fieldFormName, $_fieldDbName, $_fieldResultName); - $this->compareField = new SField($_compareFieldFormName); - } - - // }}} - // {{{ function get_request() - - /** récupère la requête utilisateur et échoue si le champ du formulaire ne représente pas une - * promotion (nombre à 4 chiffres) */ - function get_request() - { - parent::get_request(); - if (preg_match('/^[0-9]{2}$/', $this->value)){ - $this->value = intval($this->value) + 1900; - } - if (!(empty($this->value) or preg_match('/^[0-9]{4}$/', $this->value))) { - new ThrowError('La promotion est une année à quatre chiffres.'); - } - } - - // }}} - // {{{ function is_a_single_promo() - - /** teste si la requête est de la forme =promotion -> contrainte forte imposée -> elle suffit - * pour autoriser un affichage des résultats alors que compareField->value=='=' && $this->value!=''); - } - - // }}} - // {{{ function too_large() - - function too_large() - { - return !$this->is_a_single_promo(); - } - - // }}} - // {{{ function get_single_where_statement() - - /** clause WHERE correspondant à ce champ */ - function get_single_where_statement($field) - { - return $field.$this->compareField->value.$this->value; - } - - // }}} - // {{{ function get_url() - - /** récupérer le bout d'URL correspondant aux paramètres permettant d'imiter une requête - * d'un utilisateur assignant la valeur $this->value à ce champ et assignant l'opérateur de - * comparaison adéquat */ - function get_url() - { - if (!($u=parent::get_url())) { - return false; - } - return $u.'&'.$this->compareField->get_url(); - } - - // }}} -} - -// }}} -// {{{ class SFieldGroup [Group fields] - -/** classe groupant des champs de formulaire de recherche */ -class SFieldGroup -{ - // {{{ properties - - /** tableau des classes correspondant aux champs groupés */ - var $fields; - /** type de groupe : ET ou OU */ - var $and; - - // }}} - // {{{ constuctor - - /** constructeur */ - function SFieldGroup($_and, $_fields) - { - $this->fields = $_fields; - $this->and = $_and; - foreach ($this->fields as $key=>&$field) { - if (is_null($field)) { - unset($this->fields[$key]); - } - } - } - - // }}} - // {{{ function too_large() - - function too_large() - { - $b = true; - for ($i=0 ; $b && $ifields) ; $i++) { - if (!is_null($this->fields[$i])) { - $b = $b && $this->fields[$i]->too_large(); - } - } - return $b; - } - - // }}} - // {{{ function field_get_select() - - function field_get_select($f) - { - return $f->get_select_statement(); - } - - // }}} - // {{{ function field_get_where() - - /** récupérer la clause WHERE d'un objet champ de recherche */ - function field_get_where($f) - { - return $f->get_where_statement(); - } - - // }}} - // {{{ function field_get_order() - - /** récupérer la clause ORDER BY d'un objet champ de recherche */ - function field_get_order($f) - { - return $f->get_order_statement(); - } - - // }}} - // {{{ function field_get_url() - - /** récupérer le bout d'URL correspondant à un objet champ de recherche */ - function field_get_url($f) - { - return $f->get_url(); - } - - // }}} - // {{{ function get_select_statement() - - function get_select_statement() - { - return implode(' ', array_filter(array_map(array($this, 'field_get_select'), $this->fields))); - } - - // }}} - // {{{ function get_where_statement() - - /** récupérer la clause WHERE du groupe de champs = conjonction (ET) ou disjonction (OU) de - * clauses des champs élémentaires */ - function get_where_statement() - { - $joinText = $this->and ? ' AND ' : ' OR '; - $res = implode($joinText, array_filter(array_map(array($this, 'field_get_where'), $this->fields))); - return $res == '' ? '' : "($res)"; - } - - // }}} - // {{{ function get_order_statement() - - /** récupérer la clause ORDER BY du groupe de champs = conjonction (ET) ou disjonction (OU) de - * clauses des champs élémentaires */ - function get_order_statement() - { - $order = array_filter(array_map(array($this, 'field_get_order'), $this->fields)); - return count($order)>0 ? implode(',', $order) : false; - } - - // }}} - // {{{ function get_url() - - /** récupérer le bout d'URL correspondant à ce groupe de champs = concaténation des bouts d'URL - * des champs élémentaires */ - function get_url($others=Array()) - { - $url = array_filter(array_map(array($this, 'field_get_url'), $this->fields)); - foreach ($url as $key=>$val) { - if (empty($val)) { - unset($url[$key]); - } - } - foreach ($others as $key=>$val) { - if (!empty($val)) { - $url[] = "$key=$val"; - } - } - return count($url)>0 ? implode('&', $url) : false; - } - - // }}} -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/search/search.inc.php b/modules/search/search.inc.php deleted file mode 100644 index 0d23a78..0000000 --- a/modules/search/search.inc.php +++ /dev/null @@ -1,88 +0,0 @@ - diff --git a/modules/stats.php b/modules/stats.php deleted file mode 100644 index f5c6c17..0000000 --- a/modules/stats.php +++ /dev/null @@ -1,326 +0,0 @@ - 'site web', 'mail'=> 'redirection mail', - 'smtp' => 'serveur sécurisé d\'envoi de mails', - 'nntp' => 'serveur des forums de discussion'); - $ret = Array(); - foreach ($flags as $flag) { - $ret[] = $trad[$flag]; - } - return implode(', ',$ret); -} - -class StatsModule extends PLModule -{ - function handlers() - { - return array( - 'stats' => $this->make_hook('stats', AUTH_COOKIE), - 'stats/evolution' => $this->make_hook('evolution', AUTH_COOKIE), - 'stats/graph' => $this->make_hook('graph', AUTH_COOKIE), - 'stats/graph/evolution' - => $this->make_hook('graph_evo', AUTH_COOKIE), - 'stats/promos' => $this->make_hook('promos', AUTH_COOKIE), - 'stats/profile' => $this->make_hook('profile', AUTH_COOKIE), - - 'stats/coupures' => $this->make_hook('coupures', AUTH_PUBLIC), - ); - } - - function handler_stats(&$page) - { - $page->changeTpl('stats/index.tpl'); - } - - function handler_evolution(&$page, $jours = 365) - { - $page->changeTpl('stats/evolution_inscrits.tpl'); - $page->assign('jours', $jours); - } - - function handler_graph_evo(&$page, $jours = 365) - { - define('DUREEJOUR',24*3600); - - //recupere le nombre d'inscriptions par jour sur la plage concernée - $res = XDB::iterRow( - "SELECT IF( date_ins>DATE_SUB(NOW(),INTERVAL $jours DAY), - TO_DAYS(date_ins)-TO_DAYS(NOW()), - ".(-($jours+1)).") AS jour, - COUNT(user_id) AS nb - FROM auth_user_md5 - WHERE perms IN ('admin','user') AND deces = 0 - GROUP BY jour"); - - //genere des donnees compatibles avec GNUPLOT - $inscrits=''; - - // la première ligne contient le total des inscrits avant la date de départ (J - $jours) - list(,$init_nb) = $res->next(); - $total = $init_nb; - $numjour = - $jours - 1; - - for ($i = -$jours; $i<=0; $i++) { - if ($numjour<$i) { - if(!list($numjour, $nb) = $res->next()) { - $numjour = 0; - $nb = 0; - } - } - if ($numjour==$i) $total+=$nb; - $inscrits .= date('d/m/y',$i*DUREEJOUR+time())." ".$total."\n"; - } - - //Genere le graphique à la volée avec GNUPLOT - header( "Content-type: image/png"); - - $delt = ($total - $init_nb)/10; - $delt = $delt ? $delt : 5; - $ymin = round($init_nb - $delt,0); - $ymax = round($total + $delt,0); - - $gnuplot = <<= $depart AND deces = 0 - GROUP BY promo"); - - //genere des donnees compatibles avec GNUPLOT - $inscrits=''; - - // la première ligne contient le total des inscrits avant la date de départ - list($annee, $nb) = $res->next(); - - for ($i = $depart; $i <= date("Y"); $i++) { - if ($annee < $i) { - if(!list($annee, $nb) = $res->next()) { - $annee = 0; - $nb = 0; - } - } - if ($nb > 0 || $i < date('Y')) - $inscrits .= $i.' '.$nb."\n"; - } - - //Genere le graphique à la volée avec GNUPLOT - $fin = $i+2; - - $gnuplot = <<fetchOneCell(); - - //recupere le nombre d'inscriptions par jour sur la plage concernée - $res = XDB::iterRow( - "SELECT IF( date_ins>DATE_SUB(NOW(),INTERVAL $jours DAY), - TO_DAYS(date_ins)-TO_DAYS(NOW()), - ".(-($jours+1)).") AS jour, - COUNT(user_id) AS nb - FROM auth_user_md5 - WHERE promo = {?} AND perms IN ('admin','user') AND deces = 0 - GROUP BY jour", $promo); - - //genere des donnees compatibles avec GNUPLOT - $inscrits=''; - - // la première ligne contient le total des inscrits avant la date de départ (J - $jours) - list(,$init_nb) = $res->next(); - $total = $init_nb; - - list($numjour, $nb) = $res->next(); - - for ($i = -$jours;$i<=0;$i++) { - if ($numjour<$i) { - if(!list($numjour, $nb) = $res->next()) { - $numjour = 0; - $nb = 0; - } - } - if ($numjour==$i) $total+=$nb; - $inscrits .= date('d/m/y',$i*DUREEJOUR+time())." ".$total."\n"; - } - - //Genere le graphique à la volée avec GNUPLOT - $delt = ($total - $init_nb) / 10; - $delt += ($delt < 1); - $ymin = round($init_nb - $delt,0); - $ymax = round($total + $delt,0); - - $gnuplot = <<changeTpl('stats/nb_by_promo.tpl'); - - $res = XDB::iterRow( - "SELECT promo,COUNT(*) - FROM auth_user_md5 - WHERE promo > 1900 AND perms IN ('admin','user') AND deces = 0 - GROUP BY promo - ORDER BY promo"); - $max=0; $min=3000; - - while (list($p,$nb) = $res->next()) { - $p = intval($p); - if(!isset($nbpromo[$p/10])) { - $nbpromo[$p/10] = Array('','','','','','','','','',''); // tableau de 10 cases vides - } - $nbpromo[$p/10][$p%10]=Array('promo' => $p, 'nb' => $nb); - } - - $page->assign_by_ref('nbs', $nbpromo); - $page->assign('min', $min-$min % 10); - $page->assign('max', $max+10-$max%10); - $page->assign('promo', $promo); - } - - function handler_coupures(&$page, $cp_id = null) - { - $page->changeTpl('stats/coupure.tpl'); - - if (!is_null($cp_id)) { - $res = XDB::query("SELECT debut, - TIME_FORMAT(duree,'%kh%i') AS duree, - resume, description, services - FROM coupures - WHERE id = {?}", $cp_id); - $cp = $res->fetchOneAssoc(); - } - - if(@$cp) { - $cp['lg_services'] = serv_to_str($cp['services']); - $page->assign_by_ref('cp',$cp); - } else { - $beginning_date = date("Ymd", time() - 3600*24*21) . "000000"; - $sql = "SELECT id, debut, resume, services - FROM coupures where debut > '$beginning_date' order by debut desc"; - $page->assign('coupures', XDB::iterator($sql)); - $res = XDB::iterator("SELECT host, text - FROM mx_watch - WHERE state != 'ok'"); - $page->assign('mxs', $res); - } - } - - function handler_profile(&$page, $period = 'overall') - { - $page->changeTpl('stats/profile.tpl'); - - $time = ''; - switch ($period) { - case 'week': case 'month': case 'year': - $time = ' AND e.stamp > DATE_SUB(CURDATE(), INTERVAL 1 ' . strtoupper($period) . ')'; - break; - } - $rows = XDB::iterator("SELECT IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom, - u.prenom, u.promo, e.data AS forlife, COUNT(*) AS count - FROM logger.events AS e - INNER JOIN logger.actions AS act ON (e.action = act.id) - INNER JOIN aliases AS a ON (a.alias = e.data) - INNER JOIN auth_user_md5 AS u ON (u.user_id = a.id) - WHERE act.text = 'view_profile' $time - GROUP BY e.data - ORDER BY count DESC - LIMIT 10"); - $page->assign('profiles', $rows); - $page->assign('period', $period); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/survey.php b/modules/survey.php deleted file mode 100644 index ff3bb05..0000000 --- a/modules/survey.php +++ /dev/null @@ -1,479 +0,0 @@ - $this->make_hook('index', AUTH_PUBLIC), - 'survey/vote' => $this->make_hook('vote', AUTH_PUBLIC), - 'survey/result' => $this->make_hook('result', AUTH_PUBLIC), - 'survey/edit' => $this->make_hook('edit', AUTH_COOKIE), - 'survey/ajax' => $this->make_hook('ajax', AUTH_COOKIE), - 'survey/admin' => $this->make_hook('admin', AUTH_MDP, 'admin'), - 'survey/admin/edit' => $this->make_hook('adminEdit', AUTH_MDP, 'admin'), - 'survey/admin/valid' => $this->make_hook('adminValidate', AUTH_MDP, 'admin'), - 'survey/admin/del' => $this->make_hook('adminDelete', AUTH_MDP, 'admin'), - ); - } - // }}} - - // {{{ function handler_index() : lists all available surveys - function handler_index(&$page, $action = null) - { - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $page->changeTpl('survey/index.tpl'); - $page->assign('survey_current', Survey::retrieveList('c')); - $page->assign('survey_old', Survey::retrieveList('o')); - $page->assign('survey_modes', Survey::getModes(false)); - } - // }}} - - // {{{ function handler_vote() : handles the vote to a survey - function handler_vote(&$page, $id = -1) - { - if (Post::has('survey_cancel')) { // if the user cancels, returns to index - return $this->handler_index(&$page); - } - $id = intval($id); - if ($id == -1) { - return $this->show_error($page, "Un identifiant de sondage doit être précisé.", 'survey'); - } - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $survey = Survey::retrieveSurvey($id); // retrieves the survey object structure - if ($survey == null || !$survey->isValid()) { - return $this->show_error($page, "Sondage ".$id." introuvable.", 'survey'); - } elseif ($survey->isEnded()) { - return $this->show_error($page, "Le sondage ".$survey->getTitle()." est terminé.", 'survey'); - } - if (!$this->check_surveyPerms($page, $survey)) { - return; - } - if (Post::has('survey_submit')) { // checks if the survey has already been filled in - $uid = 0; - if (!$survey->isMode(Survey::MODE_ALL)) { // if survey is restriced to alumni - $uid = S::v('uid'); - if ($survey->hasVoted($uid)) { // checks whether the user has already voted - return $this->show_error($page, "Tu as déjà voté à ce sondage.", 'survey'); - } - } - $survey->vote($uid, Post::v('survey'.$id)); // performs vote - $this->show_success($page, "Ta réponse a bien été prise en compte. Merci d'avoir participé à ce sondage.", 'survey'); - } else { // offers to fill in the survey - if ($survey->isMode(Survey::MODE_ALL) || !$survey->hasVoted(S::v('uid'))) { - $page->assign('survey_votemode', true); - } else { - $page->assign('survey_warning', "Tu as déjà voté à ce sondage."); - } - //$page->assign('survey_id', $id); - $this->show_survey($page, $survey); - } - } - // }}} - - // {{{ function handler_result() : show the results of the votes to a survey - function handler_result($page, $id = -1, $show = 'all') - { - $id = intval($id); - if ($id == -1) { - return $this->show_error($page, "Un identifiant de sondage doit être précisé.", 'survey'); - } - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $survey = Survey::retrieveSurvey($id); // retrieves the survey object structure - if ($survey == null || !$survey->isValid()) { - return $this->show_error($page, "Sondage ".$id." introuvable.", 'survey'); - } elseif (!$survey->isEnded()) { - return $this->show_error($page, "Le sondage ".$survey->getTitle()." n'est pas encore terminé.", 'survey'); - } - if (!$this->check_surveyPerms($page, $survey)) { - return; - } - if ($show == 'csv') { - header('Content-Type: text/csv; charset="UTF-8"'); - echo $survey->toCSV(); - exit; - } else { - $page->assign('survey_resultmode', true); - $this->show_survey($page, $survey); - } - } - // }}} - - // {{{ function handler_admin() : index of admin mode - function handler_admin(&$page, $id = -1) - { - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $this->clear_session(); - if ($id == -1) { - $page->changeTpl('survey/admin.tpl'); - $page->assign('survey_waiting', Survey::retrieveList('w')); - $page->assign('survey_current', Survey::retrieveList('c')); - $page->assign('survey_old', Survey::retrieveList('o')); - $page->assign('survey_modes', Survey::getModes(false)); - } else { - $id = intval($id); - $survey = Survey::retrieveSurvey($id); // retrieves all survey object structure - if ($survey == null) { - $this->show_error($page, "Sondage ".$id." introuvable.", 'survey/admin'); - } - $page->assign('survey_adminmode', true); - $this->show_survey($page, $survey); - } - } - // }}} - - // {{{ function handler_adminEdit() : edits a survey in admin mode - function handler_adminEdit(&$page, $id = -1, $req = -1) - { - if ($id == -1 || ($id == 'req' && $req == -1)) { - return $this->show_error($page, "Un identifiant de sondage doit être précisé.", 'survey/admin'); - } - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $this->clear_session(); // cleans session (in case there would have been a problem before) - if ($id == 'req') { - $survey = Survey::retrieveSurveyReq($req); - if ($survey == null) { - return $this->show_error($page, "Sondage introuvable.", 'survey/admin'); - } - $this->store_session($survey, $req, true); - } else { - $id = intval($id); - $survey = Survey::retrieveSurvey($id); // retrieves the survey in database - if ($survey == null) { - return $this->show_error($page, "Sondage ".$id." introuvable.", 'survey/admin'); - } - $this->store_session($survey, $id); - } - $this->handler_edit($page, 'show'); // calls handler_edit, but in admin mode since 'survey_id' is in session - } - // }}} - - // {{{ function handler_adminValidate() : validates a survey (admin mode) - function handler_adminValidate(&$page, $id = -1) - { - $id = Post::i('survey_id', $id); - if (Post::has('survey_cancel')) { // if the admin cancels the validation, returns to the admin index - $this->clear_session(); - return $this->handler_admin(&$page, $id); - } - if ($id == -1) { - return $this->show_error($page, "Un identifiant de sondage doit être précisé.", 'survey/admin'); - } - $id = intval($id); - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $surveyInfo = Survey::retrieveSurveyInfo($id); // retrieves information about the survey (does not retrieve and unserialize the object structure) - if ($surveyInfo == null) { - return $this->show_error($page, "Sondage ".$id." introuvable.", 'survey/admin'); - } - if (Post::has('survey_submit')) { // needs a confirmation before validation - if (Survey::validateSurvey($id)) { // validates the survey (in the database) - $this->show_success($page, "Le sondage \"".$surveyInfo['title']."\" a bien été validé, les votes sont maintenant ouverts.", 'survey/admin'); - } else { - $this->show_error($page, '', 'survey/admin'); - } - } else { // asks for a confirmation - $this->show_confirm($page, "Êtes-vous certain de vouloir valider le sondage \"".$surveyInfo['title']."\" ? " - ."Les votes seront immédiatement ouverts.", 'admin/valid', array('id' => $id)); - } - } - // }}} - - // {{{ function handler_adminDelete() : deletes a survey (admin mode) - function handler_adminDelete(&$page, $id = -1) - { - $id = Post::i('survey_id', $id); - if (Post::has('survey_cancel')) { // if the admin cancels the suppression, returns to the admin index - return $this->handler_admin(&$page, $id); - } - if ($id == -1) { - return $this->show_error($page, "Un identifiant de sondage doit être précisé.", 'survey/admin'); - } - $id = intval($id); - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $surveyInfo = Survey::retrieveSurveyInfo($id); // retrieves information about the survey (does not retrieve and unserialize the object structure) - if ($surveyInfo == null) { - return $this->show_error($page, "Sondage ".$id." introuvable.", 'survey/admin'); - } - if (Post::has('survey_submit')) { // needs a confirmation before suppression - if (Survey::deleteSurvey($id)) { // deletes survey in database - $this->show_success($page, "Le sondage \"".$surveyInfo['title']."\" a bien été supprimé, ainsi que tous les votes le concernant.", 'survey/admin'); - } else { - $this->show_error($page, '', 'survey/admin'); - } - } else { // asks for a confirmation - $this->show_confirm($page, "Êtes-vous certain de vouloir supprimer le sondage \"".$surveyInfo['title']."\" ?", 'admin/del', array('id' => $id)); - } - } - // }}} - - // {{{ function handler_edit() : edits a survey (in normal mode unless called by handler_adminEdit() ) - function handler_edit(&$page, $action = 'show', $qid = 'root') - { - require_once dirname(__FILE__).'/survey/survey.inc.php'; - $action = Post::v('survey_action', $action); - $qid = Post::v('survey_qid', $qid); - if (Post::has('survey_cancel')) { // after cancelling changes, shows the survey - if (S::has('survey')) { - $action = 'show'; - } else { // unless no editing has been done at all (shows to the surveys index page) - return $this->handler_index($page); - } - } - $page->assign('survey_editmode', true); - if (S::has('survey_id')) { // if 'survey_id' is in session, it means we are modifying a survey in admin mode - $page->assign('survey_updatemode', true); - } - if ($action == 'show' && !S::has('survey')) { - $action = 'new'; - } - if ($action == 'question') { // {{{ modifies an existing question - if (Post::has('survey_submit')) { // if the form has been submitted, makes the modifications - $survey = unserialize(S::v('survey')); - $args = Post::v('survey_question'); - if (!$survey->editQuestion($qid, $args)) { // update the survey object structure - return $this->show_error($page, '', 'survey/edit'); - } - $this->show_survey($page, $survey); - $this->store_session($survey); - } else { // if a form has not been submitted, shows modification form - $survey = unserialize(S::v('survey')); - $current = $survey->toArray($qid); // gets the current parameters of the question - if ($current == null) { - return $this->show_error($page, '', 'survey/edit'); - } - $this->show_form($page, $action, $qid, $current['type'], $current); - } // }}} - } elseif ($action == 'new') { // {{{ create a new survey : actually store the root question - if (Post::has('survey_submit')) { // if the form has been submitted, creates the survey - $this->clear_session(); - $survey = new Survey(Post::v('survey_question')); // creates the object structure - $this->show_survey($page, $survey); - $this->store_session($survey); - } else { - $this->clear_session(); - $this->show_form($page, $action, 'root', 'newsurvey'); - } // }}} - } elseif ($action == 'add') { // {{{ adds a new question - if (Post::has('survey_submit')) { // if the form has been submitted, adds the question - $survey = unserialize(S::v('survey')); - if (!$survey->addQuestion($qid, $survey->factory(Post::v('survey_type'), Post::v('survey_question')))) { - return $this->show_error($page, '', 'survey/edit'); - } - $this->show_survey($page, $survey); - $this->store_session($survey); - } else { - $this->show_form($page, $action, $qid); - } // }}} - } elseif ($action == 'del') { // {{{ deletes a question - if (Post::has('survey_submit')) { // if a confirmation has been sent, deletes the question - $survey = unserialize(S::v('survey')); - if (!$survey->delQuestion(Post::v('survey_qid'))) { // deletes the node in the survey object structure - return $this->show_error($page, '', 'survey/edit'); - } - $this->show_survey($page, $survey); - $this->store_session($survey); - } else { // if user has not confirmed, shows a confirmation form - $survey = unserialize(S::v('survey')); - $current = $survey->toArray($qid); // needed to get the title of the question to delete (more user-friendly than an id) - if ($current == null) { - return $this->show_error($page, '', 'survey/edit'); - } - $this->show_confirm($page, 'Êtes-vous certain de vouloir supprimer la question intitulé "'.$current['question'].'" ? ' - .'Attention, cela supprimera en même temps toutes les questions qui dépendent de celle-ci.', - 'edit', array('action' => 'del', 'qid' => $qid)); - } // }}} - } elseif ($action == 'show') { // {{{ simply shows the survey in its current state - $this->show_survey($page, unserialize(S::v('survey'))); // }}} - } elseif ($action == 'valid') { // {{{ validates the proposition, i.e stores the proposition in the database - // but an admin will still need to validate the survey before it is activated - if (Post::has('survey_submit')) { // needs a confirmation before storing the proposition - $survey = unserialize(S::v('survey')); - if (S::has('survey_id')) { // if 'survey_id' is in session, we are modifying an existing survey (in admin mode) instead of proposing a new one - $link = (S::has('survey_validate'))? 'admin/validate' : 'survey/admin'; - if ($survey->updateSurvey()) { // updates the database according the new survey object structure - $this->show_success($page, "Les modifications sur le sondage ont bien été enregistrées.", $link); - } else { - $this->show_error($page, '', $link); - } - } else { // if no 'survey_id' is in session, we are indeed proposing a new survey - if ($survey->proposeSurvey()) { // stores the survey object structure in database - $this->show_success($page, "Votre proposition de sondage a bien été enregistrée, - elle est en attente de validation par un administrateur du site.", 'survey'); - } else { - $this->show_error($page, '', 'survey'); - } - } - $this->clear_session(); - } else { // asks for a confirmation if it has not been sent - $survey = unserialize(S::v('survey')); - $errors = $survey->checkSyntax(); - if (!is_null($errors)) { - $this->show_error($page, "", 'survey/edit', $errors); - } else { - if (S::has('survey_id')) { - $this->show_confirm($page, "Veuillez confirmer l'enregistrement des modifications apportées à ce sondage.", 'edit', array('action' => 'valid')); - } else { - $this->show_confirm($page, "Veuillez confirmer l'envoi de cette proposition de sondage.", 'edit', array('action' => 'valid')); - } - } - } // }}} - } elseif ($action == 'cancel') { // {{{ cancels the creation/modification of a survey - if (Post::has('survey_submit')) { // needs a confirmation - if (S::has('survey_id')) { // only possible when modifying a survey in admin mode - if (S::has('survey_validate')) { // if a link has been supplied, uses it - $this->clear_session(); - return $this->show_success($page, "Les modifications effectuées ont été annulées", 'admin/validate'); - } else { // else shows the admin index - $this->clear_session(); - return $this->handler_admin($page); - } - } else { - $this->clear_session(); - return $this->handler_index($page); // else shows the 'normal' index - } - } else { // asks for a confirmation if it has not been sent - $this->show_confirm(&$page, "Êtes-vous certain de vouloir annuler totalement l'édition de ce sondage ? Attention, " - ."toutes les données éditées jusque là seront définitivement perdues.", - 'edit', array('action' => $action)); - } - } // }}} - } - // }}} - - // {{{ function handler_ajax() : some ajax in editing a new question (for now, there may be a little more later) - function handler_ajax(&$page, $type) - { - require_once dirname(__FILE__).'/survey/survey.inc.php'; - header('Content-Type: text/html; charset="UTF-8"'); - if (Survey::isType($type)) { // when type has been chosen, the form is updated to fit exactly the type of question chosen - $page->changeTpl('survey/edit_new.tpl', NO_SKIN); - $page->assign('survey_types', Survey::getTypes()); - $page->assign('survey_type', $type); - } - } - // }}} - - // {{{ function clear_session() : clears the data stored in session - function clear_session() - { - S::kill('survey'); - S::kill('survey_id'); - S::kill('survey_validate'); - } - // }}} - - // {{{ function store_session() : serializes and stores survey (and survey_id) in session - function store_session($survey, $survey_id = -1, $survey_validate = false) - { - $_SESSION['survey'] = serialize($survey); - if ($survey_id != -1) { - $_SESSION['survey_id'] = $survey_id; - } - if ($survey_validate) { - $_SESSION['survey_validate'] = true; - } - } - // }}} - - // {{{ function check_surveyPerms() : checks the particular surveys access permissions - function check_surveyPerms(&$page, $survey) - { - require_once dirname(__FILE__).'/survey/survey.inc.php'; - if (!$survey->isMode(Survey::MODE_ALL)) { // if the survey is reserved to alumni - global $globals; - if (!call_user_func(array($globals->session, 'doAuth'))) { // checks authentification - global $platal; - $platal->force_login($page); - } - if (!$survey->checkPromo(S::v('promo'))) { // checks promotion - $this->show_error($page, "Tu n'as pas accès à ce sondage car il est réservé à d'autres promotions.", 'survey'); - return false; - } - } - return true; - } - // }}} - - // {{{ function show_survey() : calls the template to display a survey, for editing, voting, or consulting the results - function show_survey(&$page, $survey) - { - $page->changeTpl('survey/show_root.tpl'); - $page->assign('survey', $survey->toArray()); - $page->assign('survey_modes', Survey::getModes()); - } - // }}} - - // {{{ function show_form() : calls the template to display the editing form - function show_form(&$page, $action, $qid, $type = 'new', $current = null) - { - $page->changeTpl('survey/edit_survey.tpl'); - $page->assign('survey_action', $action); - $page->assign('survey_qid', $qid); - $page->assign('survey_formaction', './survey/edit'); - $page->assign('survey_type', $type); - if (!is_null($current) && is_array($current)) { - $page->assign('survey_current', $current); - } elseif ($type == 'new') { - $page->addJsLink('ajax.js'); - $page->assign('survey_types', Survey::getTypes()); - } - if ($type == 'root' || $type == 'newsurvey') { - $page->assign('survey_modes', Survey::getModes()); - } - } - // }}} - - // {{{ function show_confirm() : calls the template to display a confirm form - function show_confirm(&$page, $message, $formaction, $formhidden = null) - { - $page->changeTpl('survey/confirm.tpl'); - $page->assign('survey_message', $message); - $page->assign('survey_formaction', './survey/'.$formaction); - $page->assign('survey_formhidden', $formhidden); - } - // }}} - - // {{{ function show_error() : calls the template to display an error message - function show_error(&$page, $message, $link = "", $errArray = null) - { - $page->changeTpl('survey/error.tpl'); - $page->assign('survey_message', $message); - $page->assign('survey_link', $link); // 'return' link to let the user leave the page - if (!is_null($errArray)) { - $page->assign('survey_errors', $errArray); - } - } - // }}} - - // {{{ function show_success() : calls the template to display a success message - function show_success(&$page, $message = "", $link = "") - { - $page->changeTpl('survey/success.tpl'); - $page->assign('survey_message', $message); - $page->assign('survey_link', $link); // 'return' link to let the user leave the page - } - // }}} -} - -// vim:set et sw=4 sts=4 ts=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/survey/survey.inc.php b/modules/survey/survey.inc.php deleted file mode 100644 index 89d674b..0000000 --- a/modules/survey/survey.inc.php +++ /dev/null @@ -1,823 +0,0 @@ - "sondage ouvert à tout le monde, anonyme", - self::MODE_XANON => "sondage restreint aux polytechniciens, anonyme", - self::MODE_XIDENT => "sondage restreint aux polytechniciens, non anonyme"); - private static $shortModes = array(self::MODE_ALL => "tout le monde, anonyme", - self::MODE_XANON => "polytechniciens, anonyme", - self::MODE_XIDENT => "polytechniciens, non anonyme"); - - public static function getModes($long = true) { - return ($long)? self::$longModes : self::$shortModes; - } - - private static $types = array('text' => 'Texte court', - 'textarea' => 'Texte long', - 'num' => 'Numérique', - 'radio' => 'Choix multiples (une réponse)', - 'checkbox' => 'Choix multiples (plusieurs réponses)', - 'radiotable' => 'Questions multiples à choix multiples (une réponse)', - 'checkboxtable' => 'Questions multiples à choix mutliples (plusieurs réponses)'); - - public static function getTypes() - { - return self::$types; - } - - public static function isType($t) - { - return array_key_exists($t, self::$types); - } - // }}} - - // {{{ properties, constructor and basic methods - private $id; - private $title; - private $description; - private $end; - private $mode; - private $promos; - private $valid; - private $questions; - - public function __construct($args, $id = -1, $valid = false, $questions = null) - { - $this->update($args); - $this->id = $id; - $this->valid = $valid; - $this->questions = ($questions == null)? array() : $questions; - } - - public function update($args) - { - $this->title = $args['title']; - $this->description = $args['description']; - $this->end = $args['end']; - $this->mode = (isset($args['mode']))? $args['mode'] : self::MODE_ALL; - if ($this->mode == self::MODE_ALL) { - $args['promos'] = ''; - } - $this->promos = ($args['promos'] == '' || preg_match('#^(\d{4}-?|(\d{4})?-\d{4})(,(\d{4}-?|(\d{4})?-\d{4}))*$#', $args['promos']))? $args['promos'] : '#'; - } - // }}} - - // {{{ functions to access general information - public function isMode($mode) - { - return ($this->mode == $mode); - } - - public function checkPromo($promo) - { - if ($this->promos == '') { - return true; - } - $promos = explode(',', $this->promos); - foreach ($promos as $p) { - if ((preg_match('#^\d{4}$#', $p) && $p == $promo) || - (preg_match('#^\d{4}-$#', $p) && intval(substr($p, 0, 4)) <= $promo) || - (preg_match('#^-\d{4}$#', $p) && intval(substr($p, 1)) >= $promo) || - (preg_match('#^\d{4}-\d{4}$#', $p) && intval(substr($p, 0, 4)) <= $promo && intval(substr($p, 5)) >= $promo)) { - return true; - } - } - return false; - } - - public function isValid() - { - return $this->valid; - } - - public function isEnded() - { - return (strtotime($this->end) - time() <= 0); - } - - public function getTitle() - { - return $this->title; - } - // }}} - - // {{{ function toArray() : converts a question (or the whole survey) to array, with results if the survey is ended - public function toArray($i = 'all') - { - if ($i != 'all' && $i != 'root') { // if a specific question is requested, then just returns this question converted to array - $i = intval($i); - if (array_key_exists($i, $this->questions)) { - return $this->questions[$i]->toArray(); - } else { - return null; - } - } else { // else returns the root converted to array in any case - $a = array('title' => $this->title, - 'description' => $this->description, - 'end' => $this->end, - 'mode' => $this->mode, - 'promos' => $this->promos, - 'valid' => $this->valid, - 'type' => 'root'); - if ($this->id != -1) { - $a['id'] = $this->id; - } - if ($this->isEnded()) { // if the survey is ended, then adds here the number of votes - $sql = 'SELECT COUNT(id) - FROM survey_votes - WHERE survey_id={?};'; - $tot = XDB::query($sql, $this->id); - $a['votes'] = $tot->fetchOneCell(); - } - if ($i == 'all' && count($this->questions) > 0) { // if the whole survey is requested, then returns all the questions converted to array - $qArr = array(); - for ($k = 0; $k < count($this->questions); $k++) { - $q = $this->questions[$k]->toArray(); - $q['id'] = $k; - if ($this->isEnded()) { // if the survey is ended, then adds here the results of this question - $q['result'] = $this->questions[$k]->getResultArray($this->id, $k); - } - $qArr[$k] = $q; - } - $a['questions'] = $qArr; - } - return $a; - } - } - // }}} - - // {{{ function toCSV() : builds a CSV file containing all the results of the survey - public function toCSV($sep = ',', $enc = '"', $asep='|') - { - $nbq = count($this->questions); - //require_once dirname(__FILE__) . '/../../classes/varstream.php'; - VarStream::init(); - global $csv_output; - $csv_output = ''; - $csv = fopen('var://csv_output', 'w'); - $line = ($this->isMode(self::MODE_XIDENT))? array('id', 'Nom', 'Prenom', 'Promo') : array('id'); - $qids = array(); - for ($qid = 0; $qid < $nbq; $qid++) { - $qids[$qid] = count($line); // stores the first id of a question (in case of questions with subquestions) - array_splice($line, count($line), 0, $this->questions[$qid]->getCSVColumns()); // the first line contains the questions - } - $nbf = count($line); - $users = array(); - if ($this->isMode(self::MODE_XIDENT)) { // if the mode is non anonymous - $sql = 'SELECT v.id AS vid, a.nom, a.prenom, a.promo - FROM survey_votes AS v - INNER JOIN auth_user_md5 AS a - ON a.user_id=v.user_id - WHERE v.survey_id={?} - ORDER BY vid ASC;'; - $res = XDB::iterator($sql, $this->id); // retrieves all users data - for ($u = $res->next(); $u != null; $u = $res->next()) { - $users[$u['vid']] = array('nom' => $u['nom'], 'prenom' => $u['prenom'], 'promo' => $u['promo']); - } - } - $sql = 'SELECT v.id AS vid, a.question_id AS qid, a.answer AS answer - FROM survey_votes AS v - LEFT JOIN survey_answers AS a - ON a.vote_id=v.id - WHERE v.survey_id={?} - ORDER BY vid ASC, qid ASC, answer ASC;'; - $res = XDB::iterator($sql, $this->id); // retrieves all answers from database - $cur = $res->next(); - $vid = -1; - $vid_ = 0; - while ($cur != null) { - if ($vid != $cur['vid']) { // if the vote id changes, then starts a new line - fputcsv($csv, $line, $sep, $enc); // stores the former line into $csv_output - $vid = $cur['vid']; - $line = array_fill(0, $nbf, ''); // creates an array full of empty string - $line[0] = $vid_; // the first field is a 'clean' vote id (not the one stored in database) - if ($this->isMode(self::MODE_XIDENT)) { // if the mode is non anonymous - if (array_key_exists($vid, $users) && is_array($users[$vid])) { // and if the user data can be found - $line[1] = $users[$vid]['nom']; // adds the user data (in the first fields of the line) - $line[2] = $users[$vid]['prenom']; - $line[3] = $users[$vid]['promo']; - } - } - $vid_++; - } - $ans = $this->questions[$cur['qid']]->formatAnswer($cur['answer']); // formats the current answer - if (!is_null($ans)) { - if (is_array($ans)) { - $fid = $qids[$cur['qid']] + $ans['id']; // computes the field id - $a = $ans['answer']; - } else { - $fid = $qids[$cur['qid']]; - $a = $ans; - } - if ($line[$fid] != '') { // if this field already contains something - $line[$fid] .= $asep; // then adds a separator before adding the new answer - } - $line[$fid] .= $a; // adds the current answer to the correct field - } - $cur = $res->next(); // gets next answer - } - fputcsv($csv, $line, $sep, $enc); // stores the last line into $csv_output - return $csv_output; - } - // }}} - - // {{{ function factory($type, $args) : builds a question according to the given type - public function factory($t, $args) - { - switch ($t) { - case 'text': - return new SurveyText($args); - case 'textarea': - return new SurveyTextarea($args); - case 'num': - return new SurveyNum($args); - case 'radio': - return new SurveyRadio($args); - case 'checkbox': - return new SurveyCheckbox($args); - case 'radiotable': - return new SurveyRadioTable($args); - case 'checkboxtable': - return new SurveyCheckboxTable($args); - default: - return null; - } - } - // }}} - - // {{{ questions manipulation functions - public function addQuestion($i, $c) - { - $i = intval($i); - if ($this->valid || $i > count($this->questions)) { - return false; - } else { - array_splice($this->questions, $i, 0, array($c)); - return true; - } - } - - public function delQuestion($i) - { - $i = intval($i); - if ($this->valid || !array_key_exists($i, $this->questions)) { - return false; - } else { - array_splice($this->questions, $i, 1); - return true; - } - } - - public function editQuestion($i, $a) - { - if ($i == 'root') { - $this->update($a); - } else { - $i = intval($i); - if ($this->valid ||!array_key_exists($i, $this->questions)) { - return false; - } else { - $this->questions[$i]->update($a); - } - } - return true; - } - // }}} - - // {{{ function checkSyntax() : checks syntax of the questions (currently the root only) before storing the survey in database - private static $errorMessages = array( - "datepassed" => "la date de fin de sondage est déjà dépassée : vous devez préciser une date future", - "promoformat" => "les restrictions à certaines promotions sont mal formattées" - ); - - public function checkSyntax() - { - $rArr = array(); - // checks that the end date given is not already passed - // (unless the survey has already been validated : an admin can have a validated survey expired) - if (!$this->valid && $this->isEnded()) { - $rArr[] = array('question' => 'root', 'error' => self::$errorMessages["datepassed"]); - } - if ($this->promos != '' && !preg_match('#^(\d{4}-?|(\d{4})?-\d{4})(,(\d{4}-?|(\d{4})?-\d{4}))*$#', $this->promos)) { - $rArr[] = array('question' => 'root', 'error' => self::$errorMessages["promoformat"]); - } - return (empty($rArr))? null : $rArr; - } - // }}} - - // {{{ functions that manipulate surveys in database - // {{{ static function retrieveList() : gets the list of available survey (current, old and not validated surveys) - public static function retrieveList($type, $tpl = true) - { - switch ($type) { - case 'c': - case 'current': - $where = 'end > NOW()'; - break; - case 'o': - case 'old': - $where = 'end <= NOW()'; - break; - default: - return null; - } - $sql = 'SELECT id, title, end, mode - FROM survey_surveys - WHERE '.$where.' - ORDER BY end DESC;'; - if ($tpl) { - return XDB::iterator($sql); - } else { - return XDB::iterRow($sql); - } - } - // }}} - - // {{{ static function retrieveSurvey() : gets a survey in database (and unserialize the survey object structure) - public static function retrieveSurvey($sid) - { - $sql = 'SELECT questions, title, description, end, mode, promos - FROM survey_surveys - WHERE id={?}'; - $res = XDB::query($sql, $sid); - $data = $res->fetchOneAssoc(); - if (is_null($data) || !is_array($data)) { - return null; - } - $survey = new Survey($data, $sid, true, unserialize($data['questions'])); - return $survey; - } - // }}} - - // {{{ static function retrieveSurveyInfo() : gets information about a survey (title, description, end date, restrictions) but does not unserialize the survey object structure - public static function retrieveSurveyInfo($sid) - { - $sql = 'SELECT title, description, end, mode, promos - FROM survey_surveys - WHERE id={?}'; - $res = XDB::query($sql, $sid); - return $res->fetchOneAssoc(); - } - // }}} - - // {{{ static function retrieveSurveyReq() : gets a survey request to validate - public static function retrieveSurveyReq($id) - { - require_once 'validations.inc.php'; - $surveyreq = Validate::get_request_by_id($id); - if ($surveyreq == null) { - return null; - } - $data = array('title' => $surveyreq->title, - 'description' => $surveyreq->description, - 'end' => $surveyreq->end, - 'mode' => $surveyreq->mode, - 'promos' => $surveyreq->promos); - $survey = new Survey($data, $id, false, $surveyreq->questions); - return $survey; - } - // }}} - - // {{{ function proposeSurvey() : stores a proposition of survey in database (before validation) - public function proposeSurvey() - { - require_once 'validations.inc.php'; - $surveyreq = new SurveyReq($this->title, $this->description, $this->end, $this->mode, $this->promos, $this->questions, S::v('uid')); - return $surveyreq->submit(); - } - // }}} - - // {{{ function updateSurvey() : updates a survey in database (before validation) - public function updateSurvey() - { - if ($this->valid) { - $sql = 'UPDATE survey_surveys - SET questions={?}, - title={?}, - description={?}, - end={?}, - mode={?}, - promos={?} - WHERE id={?};'; - return XDB::execute($sql, serialize($this->questions), $this->title, $this->description, $this->end, $this->mode, $this->promos, $this->id); - } else { - require_once 'validations.inc.php'; - $surveyreq = Validate::get_request_by_id($this->id); - if ($surveyreq == null) { - return false; - } - return $surveyreq->updateReq($this->title, $this->description, $this->end, $this->mode, $this->promos, $this->questions); - } - } - // }}} - - // {{{ functions vote() and hasVoted() : handles vote to a survey - public function vote($uid, $args) - { - XDB::execute('INSERT INTO survey_votes - SET survey_id={?}, user_id={?};', $this->id, $uid); // notes the user as having voted - $vid = XDB::insertId(); - for ($i = 0; $i < count($this->questions); $i++) { - $ans = $this->questions[$i]->checkAnswer($args[$i]); - if (!is_null($ans) && is_array($ans)) { - foreach ($ans as $a) { - XDB::execute('INSERT INTO survey_answers - SET vote_id = {?}, - question_id = {?}, - answer = {?}', $vid, $i, $a); - } - } - } - } - - public function hasVoted($uid) - { - $res = XDB::query('SELECT id - FROM survey_votes - WHERE survey_id={?} AND user_id={?};', $this->id, $uid); // checks whether the user has already voted - return ($res->numRows() != 0); - } - // }}} - - // {{{ static function deleteSurvey() : deletes a survey (and all its votes) - public static function deleteSurvey($sid) - { - $sql = 'DELETE s.*, v.*, a.* - FROM survey_surveys AS s - LEFT JOIN survey_votes AS v - ON v.survey_id=s.id - LEFT JOIN survey_answers AS a - ON a.vote_id=v.id - WHERE s.id={?};'; - return XDB::execute($sql, $sid); - } - // }}} - - // {{{ static function purgeVotes() : clears all votes concerning a survey (I'm not sure whether it's really useful) - public static function purgeVotes($sid) - { - $sql = 'DELETE v.*, a.* - FROM survey_votes AS v - LEFT JOIN survey_answers AS a - ON a.vote_id=v.id - WHERE v.survey_id={?};'; - return XDB::execute($sql, $sid); - } - // }}} - - // }}} -} -// }}} - -// {{{ abstract class SurveyQuestion -abstract class SurveyQuestion -{ - // {{{ common properties, constructor, and basic methods - private $question; - private $comment; - - public function __construct($args) - { - $this->update($args); - } - - public function update($a) - { - $this->question = $a['question']; - $this->comment = $a['comment']; - } - - abstract protected function getQuestionType(); - // }}} - - // {{{ function toArray() : converts to array - public function toArray() - { - return array('type' => $this->getQuestionType(), 'question' => $this->question, 'comment' => $this->comment); - } - // }}} - - // {{{ function checkSyntax() : checks question elements (before storing into database), not currently needed (with new structure) - protected function checkSyntax() - { - return null; - } - // }}} - - // {{{ function checkAnswer : returns a correct answer (or a null value if error) - public function checkAnswer($ans) - { - return null; - } - // }}} - - // {{{ functions regarding the results of a survey - abstract public function getResultArray($sid, $qid); - - public function formatAnswer($ans) - { - return $ans; - } - - public function getCSVColumns() - { - return $this->question; - } - // }}} -} -// }}} - -// {{{ abstract class SurveySimple and its derived classes : "open" questions -// {{{ abstract class SurveySimple extends SurveyQuestion -abstract class SurveySimple extends SurveyQuestion -{ - public function checkAnswer($ans) - { - return array($ans); - } - - public function getResultArray($sid, $qid) - { - $sql = 'SELECT answer - FROM survey_answers - WHERE vote_id IN (SELECT id FROM survey_votes WHERE survey_id={?}) - AND question_id={?} - ORDER BY RAND() - LIMIT 5;'; - $res = XDB::query($sql, $sid, $qid); - return $res->fetchAllAssoc(); - } -} -// }}} - -// {{{ class SurveyText extends SurveySimple : simple text field, allowing a few words -class SurveyText extends SurveySimple -{ - public function getQuestionType() - { - return "text"; - } -} -// }}} - -// {{{ class SurveyTextarea extends SurveySimple : textarea field, allowing longer comments -class SurveyTextarea extends SurveySimple -{ - public function getQuestionType() - { - return "textarea"; - } -} -// }}} - -// {{{ class SurveyNum extends SurveySimple : allows numerical answers -class SurveyNum extends SurveySimple -{ - public function checkAnswer($ans) - { - return array(intval($ans)); - } - - protected function getQuestionType() - { - return "num"; - } -} -// }}} -// }}} - -// {{{ abstract class SurveyList and its derived classes : restricted questions that allows only a list of possible answers -// {{{ abstract class SurveyList extends SurveyQuestion -abstract class SurveyList extends SurveyQuestion -{ - protected $choices; - - public function update($args) - { - parent::update($args); - $this->choices = array(); - foreach ($args['choices'] as $val) { - if (trim($val) || trim($val) == '0') { - $this->choices[] = $val; - } - } - } - - public function toArray() - { - $rArr = parent::toArray(); - $rArr['choices'] = $this->choices; - return $rArr; - } - - public function getResultArray($sid, $qid) - { - $sql = 'SELECT answer, COUNT(id) AS count - FROM survey_answers - WHERE vote_id IN (SELECT id FROM survey_votes WHERE survey_id={?}) - AND question_id={?} - GROUP BY answer ASC'; - $res = XDB::query($sql, $sid, $qid); - return $res->fetchAllAssoc(); - } - - public function formatAnswer($ans) - { - if (array_key_exists($ans, $this->choices)) { - return $this->choices[$ans]; - } else { - return null; - } - } -} -// }}} - -// {{{ class SurveyRadio extends SurveyList : radio question, allows one answer among the list offered -class SurveyRadio extends SurveyList -{ - public function checkAnswer($ans) - { - $a = intval($ans); - return (array_key_exists($a, $this->choices))? array($a) : null; - } - - protected function getQuestionType() - { - return "radio"; - } -} -// }}} - -// {{{ class SurveyCheckbox extends SurveyList : checkbox question, allows any number of answers among the list offered -class SurveyCheckbox extends SurveyList -{ - public function checkAnswer($ans) - { - $rep = array(); - foreach ($ans as $a) { - $a = intval($a); - if (array_key_exists($a, $this->choices)) { - $rep[] = $a; - } - } - return (count($rep) == 0)? null : $rep; - } - - protected function getQuestionType() - { - return "checkbox"; - } -} -// }}} -// }}} - -// {{{ abstract class SurveyTable and its derived classes : table question, each column represents a choice, each line represents a question -// {{{ abstract class SurveyTable extends SurveyList -abstract class SurveyTable extends SurveyList -{ - protected $subquestions; - - public function update($args) - { - parent::update($args); - $this->subquestions = array(); - foreach ($args['subquestions'] as $val) { - if (trim($val) || trim($val) == '0') { - $this->subquestions[] = $val; - } - } - } - - public function toArray() - { - $rArr = parent::toArray(); - $rArr['subquestions'] = $this->subquestions; - return $rArr; - } - - public function getResultArray($sid, $qid) - { - $sql = 'SELECT answer, COUNT(id) AS count - FROM survey_answers - WHERE vote_id IN (SELECT id FROM survey_votes WHERE survey_id={?}) - AND question_id={?} - GROUP BY answer ASC'; - $res = XDB::iterator($sql, $sid, $qid); - $result = array(); - for ($i = 0; $i < count($this->subquestions); $i++) { - $result[$i] = array_fill(0, count($this->choices), 0); - } - while ($r = $res->next()) { - list($i, $j) = explode(':', $r['answer']); - $result[$i][$j] = $r['count']; - } - return $result; - } - - public function formatAnswer($ans) - { - list($q, $c) = explode(':', $ans); - if (array_key_exists($q, $this->subquestions) && array_key_exists($c, $this->choices)) { - return array('id' => $q, 'answer' => $this->choices[$c]); - } else { - return null; - } - } - - public function getCSVColumns() - { - $q = parent::getCSVColumns(); - if (empty($this->subquestions)) { - return $q; - } - $a = array(); - for ($k = 0; $k < count($this->subquestions); $k++) { - $a[$k] = $q.' : '.$this->subquestions[$k]; - } - return $a; - } -} -// }}} - -// {{{ class SurveyRadioTable extends SurveyTable : SurveyTable with radio type choices -class SurveyRadioTable extends SurveyTable -{ - public function checkAnswer($ans) - { - $rep = array(); - foreach ($ans as $k => $a) { - if (!array_key_exists($k, $this->subquestions)) { - continue; - } - $a = intval($a); - if (array_key_exists($a, $this->choices)) { - $rep[] = $k . ':' . $a; - } - } - return (count($rep) == 0)? null : $rep; - } - - protected function getQuestionType() - { - return "radiotable"; - } - -} -// }}} - -// {{{ class SurveyCheckboxTable extends SurveyTable : SurveyTable with checkbox type choices -class SurveyCheckboxTable extends SurveyTable -{ - public function checkAnswer($ans) - { - $rep = array(); - foreach ($ans as $k => $aa) { - if (!array_key_exists($k, $this->subquestions)) { - continue; - } - foreach ($aa as $a) { - $a = intval($a); - if (array_key_exists($a, $this->choices)) { - $rep[] = $k . ':' . $a; - } - } - } - return (count($rep) == 0)? null : $rep; - } - - protected function getQuestionType() - { - return "checkboxtable"; - } - -} -// }}} -// }}} - -// vim:set et sw=4 sts=4 ts=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnet.php b/modules/xnet.php deleted file mode 100644 index d3c9c4e..0000000 --- a/modules/xnet.php +++ /dev/null @@ -1,217 +0,0 @@ - $this->make_hook('index', AUTH_PUBLIC), - 'exit' => $this->make_hook('exit', AUTH_PUBLIC), - - 'admin' => $this->make_hook('admin', AUTH_MDP, 'admin'), - 'groups' => $this->make_hook('groups', AUTH_PUBLIC), - 'groupes.php' => $this->make_hook('groups2', AUTH_PUBLIC), - 'plan' => $this->make_hook('plan', AUTH_PUBLIC), - 'photo' => $this->make_hook('photo', AUTH_MDP), - 'autologin' => $this->make_hook('autologin', AUTH_MDP), - ); - } - - function handler_photo(&$page, $x = null) - { - if (is_null($x)) { - return PL_NOT_FOUND; - } - - $res = XDB::query("SELECT attachmime, attach - FROM aliases - INNER JOIN photo ON(id = uid) - WHERE alias = {?}", $x); - - if ((list($type, $data) = $res->fetchOneRow())) { - Header("Content-type: image/$type"); - echo $data; - } else { - Header('Content-type: image/png'); - echo file_get_contents(dirname(__FILE__).'/../htdocs/images/none.png'); - } - exit; - } - - function handler_index(&$page) - { - $page->nomenu = true; - $page->changeTpl('xnet/index.tpl'); - } - - function handler_exit(&$page) - { - Platal::session()->stopSUID(); - Platal::session()->destroy(); - $page->changeTpl('xnet/deconnexion.tpl'); - } - - function handler_admin(&$page) - { - $page->changeTpl('xnet/admin.tpl'); - - if (Get::has('del')) { - $res = XDB::query('SELECT id, nom, mail_domain - FROM groupex.asso WHERE diminutif={?}', - Get::v('del')); - list($id, $nom, $domain) = $res->fetchOneRow(); - $page->assign('nom', $nom); - if ($id && Post::has('del')) { - S::assert_xsrf_token(); - - XDB::query('DELETE FROM groupex.membres WHERE asso_id={?}', $id); - $page->trigSuccess('membres supprimés'); - - if ($domain) { - XDB::query('DELETE FROM virtual_domains WHERE domain={?}', $domain); - XDB::query('DELETE FROM virtual, virtual_redirect - USING virtual INNER JOIN virtual_redirect USING (vid) - WHERE alias LIKE {?}', '%@'.$domain); - $page->trigSuccess('suppression des alias mails'); - - $mmlist = new MMList(S::v('uid'), S::v('password'), $domain); - if ($listes = $mmlist->get_lists()) { - foreach ($listes as $l) { - $mmlist->delete_list($l['list'], true); - } - $page->trigSuccess('mail lists surpprimées'); - } - } - - XDB::query('DELETE FROM groupex.asso WHERE id={?}', $id); - $page->trigSuccess("Groupe $nom supprimé"); - Get::kill('del'); - } - if (!$id) { - Get::kill('del'); - } - } - - if (Post::has('diminutif')) { - S::assert_xsrf_token(); - - XDB::query('INSERT INTO groupex.asso (id,diminutif) - VALUES(NULL,{?})', Post::v('diminutif')); - pl_redirect('../'.Post::v('diminutif').'/edit'); - } - - $res = XDB::query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM'); - $page->assign('assos', $res->fetchAllAssoc()); - } - - function handler_plan(&$page) - { - $page->changeTpl('xnet/plan.tpl'); - - $page->setType('plan'); - - $res = XDB::iterator( - 'SELECT dom.id, dom.nom as domnom, asso.diminutif, asso.nom - FROM groupex.dom - INNER JOIN groupex.asso ON dom.id = asso.dom - WHERE FIND_IN_SET("GroupesX", dom.cat) AND FIND_IN_SET("GroupesX", asso.cat) - ORDER BY dom.nom, asso.nom'); - $groupesx = array(); - while ($tmp = $res->next()) { $groupesx[$tmp['id']][] = $tmp; } - $page->assign('groupesx', $groupesx); - - $res = XDB::iterator( - 'SELECT dom.id, dom.nom as domnom, asso.diminutif, asso.nom - FROM groupex.dom - INNER JOIN groupex.asso ON dom.id = asso.dom - WHERE FIND_IN_SET("Binets", dom.cat) AND FIND_IN_SET("Binets", asso.cat) - ORDER BY dom.nom, asso.nom'); - $binets = array(); - while ($tmp = $res->next()) { $binets[$tmp['id']][] = $tmp; } - $page->assign('binets', $binets); - - $res = XDB::iterator( - 'SELECT asso.diminutif, asso.nom - FROM groupex.asso - WHERE cat LIKE "%Promotions%" - ORDER BY diminutif'); - $page->assign('promos', $res); - - $res = XDB::iterator( - 'SELECT asso.diminutif, asso.nom - FROM groupex.asso - WHERE FIND_IN_SET("Institutions", cat) - ORDER BY diminutif'); - $page->assign('inst', $res); - } - - function handler_groups2(&$page) - { - $this->handler_groups(&$page, Get::v('cat'), Get::v('dom')); - } - - function handler_groups(&$page, $cat = null, $dom = null) - { - if (!$cat) { - $this->handler_index(&$page); - } - - $cat = strtolower($cat); - - $page->changeTpl('xnet/groupes.tpl'); - $page->assign('cat', $cat); - $page->assign('dom', $dom); - - $res = XDB::query("SELECT id,nom FROM groupex.dom - WHERE FIND_IN_SET({?}, cat) - ORDER BY nom", $cat); - $doms = $res->fetchAllAssoc(); - $page->assign('doms', $doms); - - if (empty($doms)) { - $res = XDB::query("SELECT diminutif, nom, site FROM groupex.asso - WHERE FIND_IN_SET({?}, cat) - ORDER BY nom", $cat); - $page->assign('gps', $res->fetchAllAssoc()); - } elseif (!is_null($dom)) { - $res = XDB::query("SELECT diminutif, nom, site FROM groupex.asso - WHERE FIND_IN_SET({?}, cat) AND dom={?} - ORDER BY nom", $cat, $dom); - $page->assign('gps', $res->fetchAllAssoc()); - } - - $page->setType($cat); - } - - function handler_autologin(&$page) - { - $allkeys = func_get_args(); - unset($allkeys[0]); - $url = join('/',$allkeys); - header("Content-type: text/javascript; charset=utf-8"); - echo '$.ajax({ url: "'.$url.'?forceXml=1", dataType: "xml", success: function(xml) { $("body",xml).insertBefore("body"); $("body:eq(1)").remove(); }});'; - exit; - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnetevents.php b/modules/xnetevents.php deleted file mode 100644 index 417fb3f..0000000 --- a/modules/xnetevents.php +++ /dev/null @@ -1,664 +0,0 @@ - $this->make_hook('events', AUTH_MDP), - '%grp/events/sub' => $this->make_hook('sub', AUTH_MDP), - '%grp/events/csv' => $this->make_hook('csv', AUTH_MDP, 'user', NO_HTTPS), - '%grp/events/ical' => $this->make_hook('ical', AUTH_MDP, 'user', NO_HTTPS), - '%grp/events/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'), - '%grp/events/admin' => $this->make_hook('admin', AUTH_MDP, 'groupmember'), - ); - } - - function handler_events(&$page, $archive = null) - { - global $globals; - - $page->changeTpl('xnetevents/index.tpl'); - $action = null; - $archive = ($archive == 'archive' && may_update()); - - if (Post::has('del')) { - $action = 'del'; - $eid = Post::v('del'); - } elseif (Post::has('archive')) { - $action = 'archive'; - $eid = Post::v('archive'); - } elseif (Post::has('unarchive')) { - $action = 'unarchive'; - $eid = Post::v('unarchive'); - } - - if (!is_null($action)) { - if (!may_update()) { - return PL_FORBIDDEN; - } - - $res = XDB::query("SELECT asso_id, short_name FROM groupex.evenements - WHERE eid = {?} AND asso_id = {?}", - $eid, $globals->asso('id')); - - $tmp = $res->fetchOneRow(); - if (!$tmp) { - return PL_FORBIDDEN; - } - } - - if ($action == 'del') { - // deletes the event mailing aliases - if ($tmp[1]) { - XDB::execute( - "DELETE FROM virtual WHERE type = 'evt' AND alias LIKE {?}", - $tmp[1].'-absents@%'); - XDB::execute( - "DELETE FROM virtual WHERE type = 'evt' AND alias LIKE {?}", - $tmp[1].'-participants@%'); - } - - // deletes the event items - XDB::execute("DELETE FROM groupex.evenements_items WHERE eid = {?}", $eid); - - // deletes the event participants - XDB::execute("DELETE FROM groupex.evenements_participants - WHERE eid = {?}", $eid); - - // deletes the event - XDB::execute("DELETE FROM groupex.evenements - WHERE eid = {?} AND asso_id = {?}", - $eid, $globals->asso('id')); - - // delete the requests for payments - require_once 'validations.inc.php'; - XDB::execute("DELETE FROM requests - WHERE type = 'paiements' AND data LIKE {?}", - PayReq::same_event($eid, $globals->asso('id'))); - update_NbValid(); - } - - if ($action == 'archive') { - XDB::execute("UPDATE groupex.evenements - SET archive = 1 - WHERE eid = {?} AND asso_id = {?}", - $eid, $globals->asso('id')); - } - - if ($action == 'unarchive') { - XDB::execute("UPDATE groupex.evenements - SET archive = 0 - WHERE eid = {?} AND asso_id = {?}", - $eid, $globals->asso('id')); - } - - $page->assign('archive', $archive); - $evenements = XDB::iterator( - "SELECT e.*, LEFT(10, e.debut) AS debut_day, LEFT(10, e.fin) AS fin_day, - IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10), - 1) AS inscr_open, e.deadline_inscription, - u.nom, u.prenom, u.promo, a.alias, - MAX(ep.nb) IS NOT NULL AS inscrit, MAX(ep.paid) AS paid - FROM groupex.evenements AS e - INNER JOIN x4dat.auth_user_md5 AS u ON u.user_id = e.organisateur_uid - INNER JOIN x4dat.aliases AS a ON (a.type = 'a_vie' AND a.id = u.user_id) - LEFT JOIN groupex.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?}) - WHERE asso_id = {?} - AND archive = " . ($archive ? "1 " : "0 ") - . "GROUP BY e.eid - ORDER BY inscr_open DESC, debut DESC", S::v('uid'), $globals->asso('id')); - - $evts = array(); - $undisplayed_events = 0; - - while ($e = $evenements->next()) { - if (!is_member() && !may_update() && !$e['accept_nonmembre']) { - $undisplayed_events ++; - continue; - } - - $e['show_participants'] = ($e['show_participants'] && (is_member() || may_update())); - $res = XDB::query( - "SELECT titre, details, montant, ei.item_id, nb, ep.paid - FROM groupex.evenements_items AS ei - LEFT JOIN groupex.evenements_participants AS ep - ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND uid = {?}) - WHERE ei.eid = {?}", - S::v('uid'), $e['eid']); - $e['moments'] = $res->fetchAllAssoc(); - - $e['topay'] = 0; - $e['paid'] = $e['moments'][0]['paid']; - foreach ($e['moments'] as $m) { - $e['topay'] += $m['nb'] * $m['montant']; - } - - $query = XDB::query( - "SELECT montant - FROM {$globals->money->mpay_tprefix}transactions AS t - WHERE ref = {?} AND uid = {?}", $e['paiement_id'], S::v('uid')); - $montants = $query->fetchColumn(); - - foreach ($montants as $m) { - $p = strtr(substr($m, 0, strpos($m, 'EUR')), ',', '.'); - $e['paid'] += trim($p); - } - - if (Env::has('updated') && $e['eid'] == Env::i('updated')) { - $page->assign('updated', $e); - } - $evts[] = $e; - } - - $page->assign('evenements', $evts); - $page->assign('undisplayed_events', $undisplayed_events); - } - - function handler_sub(&$page, $eid = null) - { - require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php'; - $page->changeTpl('xnetevents/subscribe.tpl'); - - $evt = get_event_detail($eid); - if (!$evt) { - return PL_NOT_FOUND; - } - - if (!$evt['inscr_open']) { - $page->kill('Les inscriptions pour cet événement sont closes'); - } - if (!$evt['accept_nonmembre'] && !is_member() && !may_update()) { - $page->kill('Cet événement est fermé aux non-membres du groupe'); - } - - global $globals; - $res = XDB::query("SELECT stamp FROM requests - WHERE type = 'paiements' AND data LIKE {?}", - PayReq::same_event($evt['eid'], $globals->asso('id'))); - $page->assign('validation', $res->numRows()); - $page->assign('event', $evt); - - if (!Post::has('submit')) { - return; - } - - $moments = Post::v('moment', array()); - $pers = Post::v('personnes', array()); - $subs = array(); - - foreach ($moments as $j => $v) { - $subs[$j] = intval($v); - - // retreive ohter field when more than one person - if ($subs[$j] == 2) { - if (!isset($pers[$j]) || !is_numeric($pers[$j]) - || $pers[$j] < 0) - { - $page->trigError('Tu dois choisir un nombre d\'invités correct !'); - return; - } - $subs[$j] = 1 + $pers[$j]; - } - } - - // impossible to unsubscribe if you already paid sthing - if (!array_sum($subs) && $evt['paid'] != 0) { - $page->trigError("Impossible de te désinscrire complètement ". - "parce que tu as fait un paiement par ". - "chèque ou par liquide. Contacte un ". - "administrateur du groupe si tu es sûr de ". - "ne pas venir"); - return; - } - - // update actual inscriptions - $updated = false; - $total = 0; - $paid = $evt['paid'] ? $evt['paid'] : 0; - $telepaid= $evt['telepaid'] ? $evt['telepaid'] : 0; - foreach ($subs as $j => $nb) { - if ($nb >= 0) { - XDB::execute( - "REPLACE INTO groupex.evenements_participants - VALUES ({?}, {?}, {?}, {?}, {?}, {?})", - $eid, S::v('uid'), $j, $nb, Env::has('notify_payment') ? 'notify_payment' : '', - $j == 1 ? $paid - $telepaid : 0); - $updated = $eid; - } else { - XDB::execute( - "DELETE FROM groupex.evenements_participants - WHERE eid = {?} AND uid = {?} AND item_id = {?}", - $eid, S::v("uid"), $j); - $updated = $eid; - } - $total += $nb; - } - if ($updated !== false) { - subscribe_lists_event($total, S::i('uid'), $evt); - } - $page->assign('event', get_event_detail($eid)); - } - - function handler_csv(&$page, $eid = null, $item_id = null) - { - require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php'; - - if (!is_numeric($item_id)) { - $item_id = null; - } - - $evt = get_event_detail($eid, $item_id); - if (!$evt) { - return PL_NOT_FOUND; - } - - header('Content-type: text/x-csv; encoding=UTF-8'); - header('Pragma: '); - header('Cache-Control: '); - - $page->changeTpl('xnetevents/csv.tpl', NO_SKIN); - - $admin = may_update(); - - $tri = (Env::v('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo'); - - $page->assign('participants', - get_event_participants($evt, $item_id, $tri)); - - $page->assign('admin', $admin); - $page->assign('moments', $evt['moments']); - $page->assign('money', $evt['money']); - $page->assign('telepayment', $evt['paiement_id']); - $page->assign('tout', !Env::v('item_id', false)); - } - - function handler_ical(&$page, $eid = null) - { - global $globals; - - require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php'; - $evt = get_event_detail($eid); - if (!$evt) { - return PL_FORBIDDEN; - } - $evt['debut'] = preg_replace('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', "\\1\\2\\3T\\4\\5\\6", $evt['debut']); - $evt['fin'] = preg_replace('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', "\\1\\2\\3T\\4\\5\\6", $evt['fin']); - - foreach ($evt['moments'] as $m) { - $evt['descriptif'] .= "\n\n** " . $m['titre'] . " **\n" . $m['details']; - } - - $page->changeTpl('xnetevents/calendar.tpl', NO_SKIN); - - require_once('ical.inc.php'); - $page->assign('asso', $globals->asso()); - $page->assign('timestamp', time()); - $page->assign('admin', may_update()); - - if (may_update()) { - $page->assign('participants', get_event_participants($evt, null, 'promo, nom, prenom')); - } - $page->register_function('display_ical', 'display_ical'); - $page->assign_by_ref('e', $evt); - - header('Content-Type: text/calendar; charset=utf-8'); - } - - function handler_edit(&$page, $eid = null) - { - global $globals; - - // get eid if the the given one is a short name - if (!is_null($eid) && !is_numeric($eid)) { - $res = XDB::query("SELECT eid - FROM groupex.evenements - WHERE asso_id = {?} AND short_name = {?}", - $globals->asso('id'), $eid); - if ($res->numRows()) { - $eid = (int)$res->fetchOneCell(); - } - } - - // check the event is in our group - if (!is_null($eid)) { - $res = XDB::query("SELECT short_name - FROM groupex.evenements - WHERE eid = {?} AND asso_id = {?}", - $eid, $globals->asso('id')); - if ($res->numRows()) { - $infos = $res->fetchOneAssoc(); - } else { - return PL_FORBIDDEN; - } - } - - $page->changeTpl('xnetevents/edit.tpl'); - - $moments = range(1, 4); - $error = false; - $page->assign('moments', $moments); - - if (Post::v('intitule')) { - require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php'; - $short_name = event_change_shortname($page, $eid, - $infos['short_name'], - Env::v('short_name', '')); - if ($short_name != Env::v('short_name')) { - $error = true; - } - $evt = array( - 'eid' => $eid, - 'asso_id' => $globals->asso('id'), - 'paiement_id' => Post::v('paiement_id') > 0 ? Post::v('paiement_id') : null, - 'debut' => Post::v('deb_Year').'-'.Post::v('deb_Month') - .'-'.Post::v('deb_Day').' '.Post::v('deb_Hour') - .':'.Post::v('deb_Minute').':00', - 'fin' => Post::v('fin_Year').'-'.Post::v('fin_Month') - .'-'.Post::v('fin_Day').' '.Post::v('fin_Hour') - .':'.Post::v('fin_Minute').':00', - 'short_name' => $short_name, - ); - - $trivial = array('intitule', 'descriptif', 'noinvite', - 'show_participants', 'accept_nonmembre', 'organisateur_uid'); - foreach ($trivial as $k) { - $evt[$k] = Post::v($k); - } - if (!$eid) { - $evt['organisateur_uid'] = S::v('uid'); - } - - if (Post::v('deadline')) { - $evt['deadline_inscription'] = Post::v('inscr_Year').'-' - . Post::v('inscr_Month').'-' - . Post::v('inscr_Day'); - } else { - $evt['deadline_inscription'] = null; - } - - // Store the modifications in the database - XDB::execute('REPLACE INTO groupex.evenements - SET eid={?}, asso_id={?}, organisateur_uid={?}, intitule={?}, - paiement_id = {?}, descriptif = {?}, debut = {?}, - fin = {?}, show_participants = {?}, short_name = {?}, - deadline_inscription = {?}, noinvite = {?}, - accept_nonmembre = {?}', - $evt['eid'], $evt['asso_id'], $evt['organisateur_uid'], - $evt['intitule'], $evt['paiement_id'], $evt['descriptif'], - $evt['debut'], $evt['fin'], $evt['show_participants'], - $evt['short_name'], $evt['deadline_inscription'], - $evt['noinvite'], $evt['accept_nonmembre']); - - // if new event, get its id - if (!$eid) { - $eid = XDB::insertId(); - } - - $nb_moments = 0; - $money_defaut = 0; - - foreach ($moments as $i) { - if (Post::v('titre'.$i)) { - $nb_moments++; - - $montant = strtr(Post::v('montant'.$i), ',', '.'); - $money_defaut += (float)$montant; - XDB::execute(" - REPLACE INTO groupex.evenements_items - VALUES ({?}, {?}, {?}, {?}, {?})", - $eid, $i, Post::v('titre'.$i), - Post::v('details'.$i), $montant); - } else { - XDB::execute("DELETE FROM groupex.evenements_items - WHERE eid = {?} AND item_id = {?}", $eid, $i); - } - } - // request for a new payment - if (Post::v('paiement_id') == -1 && $money_defaut >= 0) { - require_once 'validations.inc.php'; - $p = new PayReq(S::v('uid'), - Post::v('intitule')." - ".$globals->asso('nom'), - Post::v('site'), $money_defaut, - Post::v('confirmation'), 0, 999, - $globals->asso('id'), $eid); - if ($p->accept()) { - $p->submit(); - } else { - $page->assign('paiement_message', Post::v('confirmation')); - $page->assign('paiement_site', Post::v('site')); - $error = true; - } - } - - // events with no sub-event: add a sub-event with no name - if ($nb_moments == 0) { - XDB::execute("INSERT INTO groupex.evenements_items - VALUES ({?}, {?}, '', '', 0)", $eid, 1); - } - - if (!$error) { - pl_redirect('events'); - } - } - - // get a list of all the payment for this asso - $res = XDB::iterator("SELECT id, text - FROM {$globals->money->mpay_tprefix}paiements - WHERE asso_id = {?}", $globals->asso('id')); - $paiements = array(); - while ($a = $res->next()) $paiements[$a['id']] = $a['text']; { - $page->assign('paiements', $paiements); - } - - // when modifying an old event retreive the old datas - if ($eid) { - $res = XDB::query( - "SELECT eid, intitule, descriptif, debut, fin, organisateur_uid, - show_participants, paiement_id, short_name, - deadline_inscription, noinvite, accept_nonmembre - FROM groupex.evenements - WHERE eid = {?}", $eid); - $evt = $res->fetchOneAssoc(); - // find out if there is already a request for a payment for this event - require_once 'validations.inc.php'; - $res = XDB::query("SELECT stamp FROM requests - WHERE type = 'paiements' AND data LIKE {?}", - PayReq::same_event($eid, $globals->asso('id'))); - $stamp = $res->fetchOneCell(); - if ($stamp) { - $evt['paiement_id'] = -2; - $evt['paiement_req'] = $stamp; - } - $page->assign('evt', $evt); - // get all the different moments infos - $res = XDB::iterator( - "SELECT item_id, titre, details, montant - FROM groupex.evenements_items AS ei - INNER JOIN groupex.evenements AS e ON(e.eid = ei.eid) - WHERE e.eid = {?} - ORDER BY item_id", $eid); - $items = array(); - while ($item = $res->next()) { - $items[$item['item_id']] = $item; - } - $page->assign('items', $items); - } - $page->assign('url_ref', $eid); - } - - function handler_admin(&$page, $eid = null, $item_id = null) - { - global $globals; - - require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php'; - - $evt = get_event_detail($eid, $item_id); - if (!$evt) { - return PL_NOT_FOUND; - } - - $page->changeTpl('xnetevents/admin.tpl'); - if (!$evt['show_participants'] && !may_update()) { - return PL_FORBIDDEN; - } - - if (may_update() && Post::v('adm')) { - $member = get_infos(Post::v('mail')); - if (!$member) { - $page->trigError("Membre introuvable"); - } - - // change the price paid by a participant - if (Env::v('adm') == 'prix' && $member) { - XDB::execute("UPDATE groupex.evenements_participants - SET paid = IF(paid + {?} > 0, paid + {?}, 0) - WHERE uid = {?} AND eid = {?} AND item_id = 1", - strtr(Env::v('montant'), ',', '.'), - strtr(Env::v('montant'), ',', '.'), - $member['uid'], $evt['eid']); - } - - // change the number of personns coming with a participant - if (Env::v('adm') == 'nbs' && $member) { - $res = XDB::query("SELECT paid - FROM groupex.evenements_participants - WHERE uid = {?} AND eid = {?}", - $member['uid'], $evt['eid']); - - $paid = intval($res->fetchOneCell()); - $nbs = Post::v('nb', array()); - - foreach ($nbs as $id => $nb) { - $nb = max(intval($nb), 0); - XDB::execute("REPLACE INTO groupex.evenements_participants - VALUES ({?}, {?}, {?}, {?}, {?}, {?})", - $evt['eid'], $member['uid'], $id, $nb, '', $id == 1 ? $paid : 0); - } - - $res = XDB::query("SELECT COUNT(uid) AS cnt, SUM(nb) AS nb - FROM groupex.evenements_participants - WHERE uid = {?} AND eid = {?} - GROUP BY uid", - $member['uid'], $evt['eid']); - $u = $res->fetchOneAssoc(); - $u = $u['cnt'] ? $u['nb'] : null; - subscribe_lists_event($u, $member['uid'], $evt); - } - - $evt = get_event_detail($eid, $item_id); - } - - $page->assign_by_ref('evt', $evt); - $page->assign('tout', is_null($item_id)); - - if (count($evt['moments'])) { - $page->assign('moments', $evt['moments']); - } - - $tri = (Env::v('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo'); - $whereitemid = is_null($item_id) ? '' : "AND ep.item_id = $item_id"; - $res = XDB::iterRow( - 'SELECT UPPER(SUBSTRING(IF(u.nom IS NULL, m.nom, - IF(u.nom_usage<>"", u.nom_usage, u.nom)), 1, 1)), - COUNT(DISTINCT ep.uid) - FROM groupex.evenements_participants AS ep - INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid) - LEFT JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id) - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = ep.uid ) - WHERE ep.eid = {?} '.$whereitemid . ' - GROUP BY UPPER(SUBSTRING(IF(u.nom IS NULL,m.nom,u.nom), 1, 1))', $evt['eid']); - - $alphabet = array(); - $nb_tot = 0; - while (list($char, $nb) = $res->next()) { - $alphabet[ord($char)] = $char; - $nb_tot += $nb; - if (Env::has('initiale') && $char == strtoupper(Env::v('initiale'))) { - $tot = $nb; - } - } - ksort($alphabet); - $page->assign('alphabet', $alphabet); - - if ($evt['paiement_id']) { - $res = XDB::iterator( - "SELECT IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, u.prenom, - u.promo, a.alias AS email, t.montant - FROM {$globals->money->mpay_tprefix}transactions AS t - INNER JOIN auth_user_md5 AS u ON(t.uid = u.user_id) - INNER JOIN aliases AS a ON (a.id = t.uid AND a.type='a_vie' ) - LEFT JOIN groupex.evenements_participants AS ep ON(ep.uid = t.uid AND ep.eid = {?}) - WHERE t.ref = {?} AND ep.uid IS NULL", - $evt['eid'], $evt['paiement_id']); - $page->assign('oublis', $res->total()); - $page->assign('oubliinscription', $res); - } - - $absents = XDB::iterator("SELECT p.uid, - IF(m.origine = 'X', IF(u.nom_usage != '', u.nom_usage, u.nom), m.nom) AS nom, - IF(m.origine = 'X', u.prenom, u.prenom) AS prenom, - IF(m.origine = 'X', u.promo, m.origine) AS promo, - IF(m.origine = 'X', FIND_IN_SET('femme', u.flags), m.sexe) AS sexe, - IF(m.origine = 'X', a.alias, m.email) AS email - FROM groupex.evenements_participants AS p - INNER JOIN groupex.membres AS m USING(uid) - LEFT JOIN groupex.evenements_participants AS p2 ON (p2.uid = m.uid AND p2.eid = p.eid - AND p2.nb != 0) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid) - LEFT JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') - WHERE p.eid = {?} AND p2.eid IS NULL - " . (Env::v('initiale') ? " AND IF(u.nom IS NULL, m.nom, - IF(u.nom_usage<>'', u.nom_usage, u.nom)) LIKE '" . Env::v('initiale') . "%'" - : "") . " - GROUP BY m.uid - ORDER BY nom, prenom, promo", $evt['eid']); - - $ofs = Env::i('offset'); - $tot = (Env::v('initiale') ? $tot : $nb_tot) - $absents->total(); - $nbp = intval(($tot-1)/NB_PER_PAGE); - $links = array(); - if ($ofs) { - $links['précédent'] = $ofs-1; - } - for ($i = 0; $i <= $nbp; $i++) { - $links[(string)($i+1)] = $i; - } - if ($ofs < $nbp) { - $links['suivant'] = $ofs+1; - } - if (count($links)>1) { - $page->assign('links', $links); - } - - - $page->assign('absents', $absents); - $page->assign('participants', - get_event_participants($evt, $item_id, $tri, - "LIMIT ".($ofs*NB_PER_PAGE).", ".NB_PER_PAGE)); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnetevents/xnetevents.inc.php b/modules/xnetevents/xnetevents.inc.php deleted file mode 100644 index d179a70..0000000 --- a/modules/xnetevents/xnetevents.inc.php +++ /dev/null @@ -1,349 +0,0 @@ -asso('id'); - } - $res = XDB::query( - "SELECT SUM(nb) AS nb_tot, COUNT(DISTINCT ep.uid) AS nb, e.*, - IF(e.deadline_inscription, e.deadline_inscription >= LEFT(NOW(), 10), - 1) AS inscr_open, - LEFT(10, e.debut) AS debut_day, LEFT(10, e.fin) AS fin_day, - LEFT(NOW(), 10) AS now, - ei.titre, - al.vid AS absent_list, pl.vid AS participant_list, - a.nom, a.prenom, a.promo, aa.alias - FROM groupex.evenements AS e - INNER JOIN x4dat.auth_user_md5 AS a ON a.user_id = e.organisateur_uid - INNER JOIN x4dat.aliases AS aa ON (aa.type = 'a_vie' AND aa.id = a.user_id) - INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid) - LEFT JOIN groupex.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id) - LEFT JOIN virtual AS al ON(al.type = 'evt' AND al.alias = CONCAT(short_name, {?})) - LEFT JOIN virtual AS pl ON(pl.type = 'evt' AND pl.alias = CONCAT(short_name, {?})) - WHERE (e.eid = {?} OR e.short_name = {?}) AND ei.item_id = {?} AND e.asso_id = {?} - GROUP BY ei.item_id", - '-absents@'.$globals->xnet->evts_domain, - '-participants@'.$globals->xnet->evts_domain, - $eid, $eid, $item_id ? $item_id : 1, $asso_id); - - $evt = $res->fetchOneAssoc(); - - if (!$evt || ($GLOBALS['IS_XNET_SITE'] && $evt['accept_nonmembre'] == 0 && !is_member() && !may_update())) { - return null; - } - - // smart calculation of the total number - if (!$item_id) { - $res = XDB::query( - "SELECT MAX(nb) - FROM groupex.evenements AS e - INNER JOIN groupex.evenements_items AS ei ON (e.eid = ei.eid) - LEFT JOIN groupex.evenements_participants AS ep - ON (e.eid = ep.eid AND ei.item_id = ep.item_id) - WHERE e.eid = {?} - GROUP BY ep.uid", $evt['eid']); - $evt['nb_tot'] = array_sum($res->fetchColumn()); - $evt['titre'] = ''; - $evt['item_id'] = 0; - } - - $res = XDB::query( - "SELECT titre, details, montant, ei.item_id, nb, ep.paid, FIND_IN_SET('notify_payment', ep.flags) AS notify_payment - FROM groupex.evenements_items AS ei - LEFT JOIN groupex.evenements_participants AS ep - ON (ep.eid = ei.eid AND ep.item_id = ei.item_id AND uid = {?}) - WHERE ei.eid = {?}", - S::v('uid'), $evt['eid']); - $evt['moments'] = $res->fetchAllAssoc(); - - $evt['topay'] = 0; - $evt['paid'] = 0; - $evt['notify_payment'] = false; - foreach ($evt['moments'] as $m) { - $evt['topay'] += $m['nb'] * $m['montant']; - if ($m['montant']) { - $evt['money'] = true; - } - $evt['paid'] = $m['paid']; - $evt['notify_payment'] = $evt['notify_payment'] || $m['notify_payment']; - } - - $req = XDB::query( - "SELECT montant - FROM {$globals->money->mpay_tprefix}transactions AS t - WHERE ref = {?} AND uid = {?}", $evt['paiement_id'], S::v('uid')); - $montants = $req->fetchColumn(); - - $evt['telepaid'] = 0; - foreach ($montants as $m) { - $p = strtr(substr($m, 0, strpos($m, 'EUR')), ',', '.'); - $evt['paid'] += trim($p); - $evt['telepaid'] += trim($p); - } - - return $evt; -} - -// }}} - -// {{{ function get_event_participants() -function get_event_participants(&$evt, $item_id, $tri, $limit = '') { - global $globals; - - if (Env::has('initiale')) { - $where = 'AND IF(u.nom IS NULL, m.nom, - IF(u.nom_usage<>"", u.nom_usage, u.nom)) - LIKE "'.addslashes(Env::v('initiale')).'%"'; - } else { - $where = ''; - } - - $eid = $evt['eid']; - $money = $evt['money'] && (function_exists('may_update')) && may_update(); - $pay_id = $evt['paiement_id']; - - $query = - "SELECT IF(m.origine != 'X',m.nom,IF(u.nom_usage<>'', u.nom_usage, u.nom)) AS nom, - IF(m.origine != 'X',m.prenom,u.prenom) AS prenom, - IF(m.origine != 'X','extérieur',u.promo) AS promo, - IF(m.origine != 'X' OR u.perms = 'pending',m.email,a.alias) AS email, - IF(m.origine != 'X',m.sexe,FIND_IN_SET('femme', u.flags)) AS femme, - m.perms='admin' AS admin, - (m.origine = 'X' OR m.origine IS NULL) AS x, - ep.uid, SUM(ep.paid) AS paid, SUM(ep.nb) AS nb, - FIND_IN_SET('notify_payment', ep.flags) AS notify_payment - FROM groupex.evenements_participants AS ep - INNER JOIN groupex.evenements AS e ON (ep.eid = e.eid) - LEFT JOIN groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id) - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = ep.uid ) - LEFT JOIN aliases AS a ON ( a.id = ep.uid AND a.type='a_vie' ) - WHERE ep.eid = {?} - ".(($item_id)?" AND item_id = $item_id":"")." - $where - GROUP BY ep.uid - ORDER BY $tri $limit"; - - if ($item_id) { - $res = XDB::query($query, $eid); - return $res->fetchAllAssoc(); - } - - $res = XDB::iterator($query, $eid); - $tab = array(); - $user = 0; - - $evt['adminpaid'] = 0; - $evt['telepaid'] = 0; - $evt['topay'] = 0; - $evt['paid'] = 0; - while ($u = $res->next()) { - if ($u['nb'] == 0) { - continue; - } - $u['adminpaid'] = $u['paid']; - $u['montant'] = 0; - if ($money && $pay_id) { - $res_ = XDB::query( - "SELECT montant - FROM {$globals->money->mpay_tprefix}transactions AS t - WHERE ref = {?} AND uid = {?}", - $pay_id, $u['uid']); - $montants = $res_->fetchColumn(); - foreach ($montants as $m) { - $p = strtr(substr($m, 0, strpos($m, "EUR")), ",", "."); - $u['paid'] += trim($p); - } - } - $u['telepayment'] = $u['paid'] - $u['adminpaid']; - $res_ = XDB::iterator( - "SELECT ep.nb, ep.item_id, ei.montant - FROM groupex.evenements_participants AS ep - INNER JOIN groupex.evenements_items AS ei ON (ei.eid = ep.eid AND ei.item_id = ep.item_id) - WHERE ep.eid = {?} AND ep.uid = {?}", - $eid, $u['uid']); - while ($i = $res_->next()) { - $u[$i['item_id']] = $i['nb']; - $u['montant'] += $i['montant']*$i['nb']; - } - $tab[] = $u; - $evt['telepaid'] += $u['telepayment']; - $evt['adminpaid'] += $u['adminpaid']; - $evt['paid'] += $u['paid']; - $evt['topay'] += $u['montant']; - } - return $tab; -} -// }}} - -// {{{ function subscribe_lists_event() -function subscribe_lists_event($participate, $uid, $evt) -{ - require_once('user.func.inc.php'); - global $globals; - $page =& Platal::page(); - - $participant_list = $evt['participant_list']; - $absent_list = $evt['absent_list']; - - $email = get_user_forlife($uid, '_silent_user_callback'); - - if ($email) { - $email .= '@'.$globals->mail->domain; - } else { - $res = XDB::query("SELECT email - FROM groupex.membres - WHERE uid = {?} AND asso_id = {?}", - S::v('uid'), $globals->asso('id')); - $email = $res->fetchOneCell(); - } - - function subscribe($list, $email) - { - if ($list && $email) { - XDB::execute("REPLACE INTO virtual_redirect - VALUES ({?},{?})", - $list, $email); - } - } - - function unsubscribe($list, $email) - { - if ($list && $email) { - XDB::execute("DELETE FROM virtual_redirect - WHERE vid = {?} AND redirect = {?}", - $list, $email); - } - } - - if (is_null($participate)) { - unsubscribe($participant_list, $email); - subscribe($absent_list, $email); - } elseif ($participate) { - subscribe($participant_list, $email); - unsubscribe($absent_list, $email); - } else { - unsubscribe($participant_list, $email); - unsubscribe($absent_list, $email); - } -} -// }}} - -function event_change_shortname(&$page, $eid, $old, $new) -{ - global $globals; - - if (is_null($old)) { - $old = ''; - } - // Quelques vérifications sur l'alias (caractères spéciaux) - if ($new && !preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $new)) { - $page->trigError("Le raccourci demandé n'est pas valide. - Vérifie qu'il comporte entre 3 et 20 caractères - et qu'il ne contient que des lettres non accentuées, - des chiffres ou les caractères - et ."); - return $old; - } - - //vérifier que l'alias n'est pas déja pris - if ($new && $old != $new) { - $res = XDB::query('SELECT COUNT(*) - FROM groupex.evenements - WHERE short_name = {?}', - $new); - if ($res->fetchOneCell() > 0) { - $page->trigError("Le raccourci demandé est déjà utilisé. Choisis en un autre."); - return $old; - } - } - - if ($old == $new) { - return $new; - } - - if ($old && $new) { - // if had a previous shortname change the old lists - foreach (array('-absents@', '-participants@') as $v) { - $v .= $globals->xnet->evts_domain; - XDB::execute("UPDATE virtual SET alias = {?} - WHERE type = 'evt' AND alias = {?}", - $new.$v, $old.$v); - } - return $new; - } - - if (!$old && $new) { - // if we have a first new short_name create the lists - - XDB::execute("INSERT INTO virtual SET type = 'evt', alias = {?}", - $new.'-participants@'.$globals->xnet->evts_domain); - - $lastid = XDB::insertId(); - XDB::execute( - "INSERT INTO virtual_redirect ( - SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect - FROM groupex.evenements_participants AS ep - LEFT JOIN groupex.membres AS m ON (ep.uid = m.uid) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = ep.uid) - LEFT JOIN aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie') - WHERE ep.eid = {?} AND ep.nb > 0 - GROUP BY ep.uid)", - $lastid, '@'.$globals->mail->domain, $eid); - - XDB::execute("INSERT INTO virtual SET type = 'evt', alias = {?}", - $new.'-absents@'.$globals->xnet->evts_domain); - - $lastid = XDB::insertId(); - XDB::execute("INSERT INTO virtual_redirect ( - SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect - FROM groupex.membres AS m - LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?}) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid) - LEFT JOIN aliases AS a ON (a.id = m.uid AND a.type = 'a_vie') - WHERE m.asso_id = {?} AND ep.uid IS NULL - GROUP BY m.uid)", - $lastid, "@".$globals->mail->domain, $eid, $globals->asso('id')); - - return $new; - } - - if ($old && !$new) { - // if we delete the old short name, delete the lists - foreach (array('-absents@', '-participants@') as $v) { - $v .= $globals->xnet->evts_domain; - XDB::execute("DELETE virtual, virtual_redirect FROM virtual - LEFT JOIN virtual_redirect USING(vid) - WHERE virtual.alias = {?}", - $infos['short_name'].$v); - } - return $new; - } - - // cannot happen - return $old; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php deleted file mode 100644 index 543c8d3..0000000 --- a/modules/xnetgrp.php +++ /dev/null @@ -1,1311 +0,0 @@ -asso('id')); - - if ($res->numRows()) { - $user = $res->fetchOneAssoc(); - if ($user['origine'] == 'X') { - $res = XDB::query("SELECT nom, prenom, promo, FIND_IN_SET('femme', flags) AS sexe - FROM auth_user_md5 - WHERE user_id = {?}", $user['uid']); - $user = array_merge($user, $res->fetchOneAssoc()); - } - return $user; - } elseif ($dom == 'polytechnique.org' || $dom == 'm4x.org') { - $res = XDB::query( - "SELECT user_id AS uid, u.promo, - IF(u.nom_usage<>'', u.nom_usage, u.nom) AS nom, - u.prenom, b.alias, - CONCAT(b.alias, '@m4x.org') AS email, - CONCAT(b.alias, '@polytechnique.org') AS email2, - m.perms = 'admin' AS perms, m.origine, - FIND_IN_SET('femme', u.flags) AS sexe - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( u.user_id = a.id AND a.type != 'homonyme' ) - INNER JOIN aliases AS b ON ( u.user_id = b.id AND b.type = 'a_vie' ) - LEFT JOIN groupex.membres AS m ON ( m.uid = u.user_id AND asso_id={?}) - WHERE a.alias = {?} AND u.user_id < 50000", $globals->asso('id'), $mbox); - return $res->fetchOneAssoc(); - } - - return null; -} - - -class XnetGrpModule extends PLModule -{ - function handlers() - { - return array( - '%grp' => $this->make_hook('index', AUTH_PUBLIC), - '%grp/asso.php' => $this->make_hook('index', AUTH_PUBLIC), - '%grp/logo' => $this->make_hook('logo', AUTH_PUBLIC), - '%grp/site' => $this->make_hook('site', AUTH_PUBLIC), - '%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'), - '%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'), - '%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'), - '%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP, 'groupannu'), - '%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP, 'groupmember:groupannu'), - '%grp/trombi' => $this->make_hook('trombi', AUTH_MDP, 'groupannu'), - '%grp/geoloc' => $this->make_hook('geoloc', AUTH_MDP, 'groupannu'), - '%grp/subscribe' => $this->make_hook('subscribe', AUTH_MDP), - '%grp/unsubscribe' => $this->make_hook('unsubscribe', AUTH_MDP, 'groupmember'), - - '%grp/change_rights' => $this->make_hook('change_rights', AUTH_MDP), - - '%grp/admin/annuaire' - => $this->make_hook('admin_annuaire', AUTH_MDP, 'groupadmin'), - - '%grp/member' - => $this->make_hook('admin_member', AUTH_MDP, 'groupadmin'), - '%grp/member/new' - => $this->make_hook('admin_member_new', AUTH_MDP, 'groupadmin'), - '%grp/member/new/ajax' - => $this->make_hook('admin_member_new_ajax', AUTH_MDP, 'user', NO_AUTH), - '%grp/member/del' - => $this->make_hook('admin_member_del', AUTH_MDP, 'groupadmin'), - - '%grp/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - '%grp/announce/new' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), - '%grp/announce/edit' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), - '%grp/announce/photo' => $this->make_hook('photo_announce', AUTH_PUBLIC), - '%grp/admin/announces' => $this->make_hook('admin_announce', AUTH_MDP, 'groupadmin'), - ); - } - - function handler_index(&$page, $arg = null) - { - global $globals, $platal; - - if (!is_null($arg)) { - return PL_NOT_FOUND; - } - $page->changeTpl('xnetgrp/asso.tpl'); - - if (S::logged()) { - if (Env::has('read')) { - XDB::query('DELETE r.* - FROM groupex.announces_read AS r - INNER JOIN groupex.announces AS a ON a.id = r.announce_id - WHERE peremption < CURRENT_DATE()'); - XDB::query('INSERT INTO groupex.announces_read - VALUES ({?}, {?})', - Env::i('read'), S::i('uid')); - pl_redirect(""); - } - if (Env::has('unread')) { - XDB::query('DELETE FROM groupex.announces_read - WHERE announce_id={?} AND user_id={?}', - Env::i('unread'), S::i('uid')); - pl_redirect("#art" . Env::i('unread')); - } - $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, l.alias AS forlife, - FIND_IN_SET('photo', a.flags) AS photo - FROM groupex.announces AS a - INNER JOIN auth_user_md5 AS u USING(user_id) - INNER JOIN aliases AS l ON (u.user_id = l.id AND l.type = 'a_vie') - LEFT JOIN groupex.announces_read AS r ON (r.user_id = {?} AND r.announce_id = a.id) - WHERE asso_id = {?} AND peremption >= CURRENT_DATE() - AND (promo_min = 0 OR promo_min <= {?}) - AND (promo_max = 0 OR promo_max >= {?}) - AND r.announce_id IS NULL - ORDER BY a.peremption", - S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo')); - $index = XDB::iterator("SELECT a.id, a.titre, r.user_id IS NULL AS nonlu - FROM groupex.announces AS a - LEFT JOIN groupex.announces_read AS r ON (a.id = r.announce_id AND r.user_id = {?}) - WHERE asso_id = {?} AND peremption >= CURRENT_DATE() - AND (promo_min = 0 OR promo_min <= {?}) - AND (promo_max = 0 OR promo_max >= {?}) - ORDER BY a.peremption", - S::i('uid'), $globals->asso('id'), S::i('promo'), S::i('promo')); - $page->assign('article_index', $index); - } else { - $arts = XDB::iterator("SELECT a.*, u.nom, u.prenom, u.promo, FIND_IN_SET('photo', a.flags) AS photo - FROM groupex.announces AS a - INNER JOIN auth_user_md5 AS u USING(user_id) - WHERE asso_id = {?} AND peremption >= CURRENT_DATE() - AND FIND_IN_SET('public', u.flags)", - $globals->asso('id')); - } - - if (!S::has('core_rss_hash')) { - $page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News publiques", - $platal->ns . "rss/rss.xml"); - } else { - $page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News", - $platal->ns . 'rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml'); - } - - $page->assign('articles', $arts); - } - - function handler_logo(&$page) - { - global $globals; - - $res = XDB::query("SELECT logo, logo_mime - FROM groupex.asso WHERE id = {?}", - $globals->asso('id')); - list($logo, $logo_mime) = $res->fetchOneRow(); - - if (!empty($logo)) { - header("Content-type: $mime"); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - echo $logo; - } else { - header('Content-type: image/jpeg'); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - header('Last-Modified:' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Cache-Control: no-cache, must-revalidate'); - header('Pragma: no-cache'); - readfile(dirname(__FILE__).'/../htdocs/images/dflt_carre.jpg'); - } - - exit; - } - - function handler_site(&$page) - { - global $globals; - $site = $globals->asso('site'); - if (!$site) { - $page->trigError('Le groupe n\'a pas de site web.'); - return $this->handler_index($page); - } - http_redirect($site); - exit; - } - - function handler_edit(&$page) - { - global $globals; - $page->changeTpl('xnetgrp/edit.tpl'); - - if (Post::has('submit')) { - S::assert_xsrf_token(); - - $flags = new PlFlagSet('wiki_desc'); - if (Post::has('notif_unsub') && Post::i('notif_unsub') == 1) { - $flags->addFlag('notif_unsub'); - } - if (S::has_perms()) { - if (Post::v('mail_domain') && (strstr(Post::v('mail_domain'), '.') === false)) { - $page->trigError("le domaine doit être un FQDN (aucune modif effectuée) !!!"); - return; - } - XDB::execute( - "UPDATE groupex.asso - SET nom={?}, diminutif={?}, cat={?}, dom={?}, - descr={?}, site={?}, mail={?}, resp={?}, - forum={?}, mail_domain={?}, ax={?}, pub={?}, - sub_url={?}, inscriptible={?}, unsub_url={?}, - flags={?} - WHERE id={?}", - Post::v('nom'), Post::v('diminutif'), - Post::v('cat'), Post::i('dom'), - Post::v('descr'), Post::v('site'), - Post::v('mail'), Post::v('resp'), - Post::v('forum'), Post::v('mail_domain'), - Post::has('ax'), Post::v('pub'), - Post::v('sub_url'), Post::v('inscriptible'), - Post::v('unsub_url'), $flags, $globals->asso('id')); - if (Post::v('mail_domain')) { - XDB::execute('INSERT IGNORE INTO virtual_domains (domain) VALUES({?})', - Post::v('mail_domain')); - } - } else { - XDB::execute( - "UPDATE groupex.asso - SET descr={?}, site={?}, mail={?}, resp={?}, - forum={?}, ax={?}, pub= {?}, sub_url={?}, - unsub_url={?},flags={?} - WHERE id={?}", - Post::v('descr'), Post::v('site'), - Post::v('mail'), Post::v('resp'), - Post::v('forum'), Post::has('ax'), - Post::v('pub'), - Post::v('sub_url'), Post::v('unsub_url'), - $flags, $globals->asso('id')); - } - - if ($_FILES['logo']['name']) { - $logo = file_get_contents($_FILES['logo']['tmp_name']); - $mime = $_FILES['logo']['type']; - XDB::execute('UPDATE groupex.asso - SET logo={?}, logo_mime={?} - WHERE id={?}', $logo, $mime, - $globals->asso('id')); - } - - pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit'); - } - - if (S::has_perms()) { - $dom = XDB::iterator('SELECT * FROM groupex.dom ORDER BY nom'); - $page->assign('dom', $dom); - $page->assign('super', true); - } - if (!$globals->asso('wiki_desc') && $globals->asso('descr')) { - $page->trigWarning("Attention, le format de la description a changé et utilise désormais la syntaxe wiki " - . "intégrée au site. Il te faudra probablement adapter le formatage du texte actuel pour " - . "qu'il s'affiche correctement avec cette nouvelle syntaxe."); - } - } - - function handler_mail(&$page) - { - global $globals; - - $page->changeTpl('xnetgrp/mail.tpl'); - $mmlist = new MMList(S::v('uid'), S::v('password'), - $globals->asso('mail_domain')); - $page->assign('listes', $mmlist->get_lists()); - $page->addJsLink('ajax.js'); - - if (Post::has('send')) { - $from = Post::v('from'); - $sujet = Post::v('sujet'); - $body = Post::v('body'); - - $mls = array_keys(Env::v('ml', array())); - $mbr = array_keys(Env::v('membres', array())); - - require_once dirname(__FILE__) . '/xnetgrp/mail.inc.php'; - set_time_limit(120); - $tos = get_all_redirects($mbr, $mls, $mmlist); - $upload = PlUpload::get($_FILES['uploaded'], S::v('forlife'), 'xnet.emails', true); - send_xnet_mails($from, $sujet, $body, Env::v('wiki'), $tos, Post::v('replyto'), $upload, @$_FILES['uploaded']['name']); - if ($upload) { - $upload->rm(); - } - $page->kill("Mail envoyé !"); - $page->assign('sent', true); - } - } - - function handler_forum(&$page, $group = null, $artid = null) - { - global $globals; - $page->changeTpl('xnetgrp/forum.tpl'); - if (!$globals->asso('forum')) { - return PL_NOT_FOUND; - } - require_once 'banana/forum.inc.php'; - $get = array(); - get_banana_params($get, $globals->asso('forum'), $group, $artid); - run_banana($page, 'ForumsBanana', $get); - } - - function handler_annuaire(&$page, $action = null, $subaction = null) - { - global $globals; - - if ($action == 'search') { - http_redirect("https://www.polytechnique.org/search/adv?rechercher=Chercher&groupex={$globals->asso('id')}" - . "&cityid=" . Env::v('cityid') . "&mapid=" . Env::v('mapid')); - } else if ($action == 'geoloc' || $action == 'trombi') { - $view = new UserSet(); - $view->addMod('trombi', 'Trombinoscope'); - $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'annuaire/search')); - $view->apply('annuaire', $page, $action, $subaction); - if ($action == 'geoloc' && $subaction) { - return; - } - } - $page->changeTpl('xnetgrp/annuaire.tpl'); - - $sort = Env::v('order'); - switch (Env::v('order')) { - case 'promo' : $group = 'promo'; $tri = 'promo_o DESC, nom, prenom'; break; - case 'promo_inv': $group = 'promo'; $tri = 'promo_o, nom, prenom'; break; - case 'alpha_inv': $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break; - default : $group = 'initiale'; $tri = 'nom, prenom, promo'; $sort = 'alpha'; - } - $page->assign('sort', $sort); - - if ($group == 'initiale') { - $res = XDB::iterRow( - 'SELECT UPPER(SUBSTRING( - IF(m.origine="X", IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), - 1, 1)) as letter, COUNT(*) - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid) - WHERE asso_id = {?} and (u.perms != \'pending\' OR m.email IS NOT NULL) - GROUP BY letter - ORDER BY letter', $globals->asso('id')); - } else { - $res = XDB::iterRow( - 'SELECT IF(m.origine="X",u.promo, - IF(m.origine="ext", "extérieur", "personne morale")) AS promo, - COUNT(*), IF(m.origine="X",u.promo,"") AS promo_o - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - WHERE asso_id = {?} - GROUP BY promo - ORDER BY promo_o DESC', $globals->asso('id')); - } - $alphabet = array(); - $nb_tot = 0; - while (list($char, $nb) = $res->next()) { - $alphabet[] = $char; - $nb_tot += $nb; - if (Env::has($group) && $char == strtoupper(Env::v($group))) { - $tot = $nb; - } - } - $page->assign('group', $group); - $page->assign('request_group', Env::v($group)); - $page->assign('only_admin', Env::has('admin')); - $page->assign('alphabet', $alphabet); - $page->assign('nb_tot', $nb_tot); - - $ofs = Env::i('offset'); - $tot = Env::v($group) ? $tot : $nb_tot; - $nbp = intval(($tot-1)/NB_PER_PAGE); - $links = array(); - if ($ofs) { - $links['précédent'] = $ofs-1; - } - for ($i = 0; $i <= $nbp; $i++) { - $links[(string)($i+1)] = $i; - } - if ($ofs < $nbp) { - $links['suivant'] = $ofs+1; - } - if (count($links)>1) { - $page->assign('links', $links); - } - - $ini = ''; - if (Env::has('initiale')) { - $ini = 'AND IF(m.origine="X", - IF(u.nom_usage<>"", u.nom_usage, u.nom), - m.nom) LIKE "'.addslashes(Env::v('initiale')).'%"'; - } elseif (Env::has('promo')) { - $ini = 'AND IF(m.origine="X", u.promo, IF(m.origine="ext", "extérieur", "personne morale")) = "' - .addslashes(Env::v('promo')).'"'; - } elseif (Env::has('admin')) { - $ini = 'AND m.perms = "admin"'; - } - - $ann = XDB::iterator( - "SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom, - IF(m.origine='X',u.prenom,m.prenom) AS prenom, - IF(m.origine='X', u.promo, IF(m.origine='ext', 'extérieur', 'personne morale')) AS promo, - IF(m.origine='X',u.promo,'') AS promo_o, - IF(m.origine='X' AND u.perms != 'pending',a.alias,m.email) AS email, - IF(m.origine='X',FIND_IN_SET('femme', u.flags), m.sexe) AS femme, - m.perms='admin' AS admin, - m.origine='X' AS x, - u.perms!='pending' AS inscrit, - m.uid, IF(e.email IS NULL AND FIND_IN_SET('googleapps', u.mail_storage) = 0, NULL, 1) AS actif - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' ) - LEFT JOIN emails AS e ON ( e.flags = 'active' AND e.uid = m.uid) - WHERE m.asso_id = {?} $ini - AND (m.origine != 'X' OR u.perms != 'pending' OR m.email IS NOT NULL) - GROUP BY m.uid - ORDER BY $tri - LIMIT {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE); - $page->assign('ann', $ann); - $page->jsonAssign('ann', $ann); - } - - function handler_trombi(&$page) - { - pl_redirect('annuaire/trombi'); - } - - function handler_geoloc(&$page) - { - pl_redirect('annuaire/geoloc'); - } - - function handler_vcard(&$page, $photos = null) - { - global $globals; - $res = XDB::query('SELECT uid - FROM groupex.membres - WHERE asso_id = {?}', $globals->asso('id')); - $vcard = new VCard($res->fetchColumn(), $photos == 'photos', 'Membre du groupe ' . $globals->asso('nom')); - $vcard->do_page($page); - } - - function handler_subscribe(&$page, $u = null) - { - global $globals; - $page->changeTpl('xnetgrp/inscrire.tpl'); - - if (!$globals->asso('inscriptible')) - $page->kill("Il n'est pas possible de s'inscire en ligne à ce " - ."groupe. Essaie de joindre le contact indiqué " - ."sur la page de présentation."); - - if (!is_null($u) && may_update()) { - $page->assign('u', $u); - $res = XDB::query("SELECT u.nom, u.prenom, u.promo, u.user_id, FIND_IN_SET('femme', u.flags) - FROM auth_user_md5 AS u - INNER JOIN aliases AS al ON (al.id = u.user_id AND al.type != 'liste') - WHERE al.alias = {?}", $u); - - if (list($nom, $prenom, $promo, $uid, $sexe) = $res->fetchOneRow()) { - $res = XDB::query("SELECT COUNT(*) - FROM groupex.membres AS m - INNER JOIN aliases AS a ON (m.uid = a.id AND a.type != 'homonyme') - WHERE a.alias = {?} AND m.asso_id = {?}", - $u, $globals->asso('id')); - $n = $res->fetchOneCell(); - if ($n) { - $page->kill("$prenom $nom est déjà membre du groupe !"); - return; - } - elseif (Env::has('accept')) - { - XDB::execute("INSERT INTO groupex.membres (asso_id, uid) - VALUES ({?}, {?})", - $globals->asso('id'), $uid); - $mailer = new PlMailer(); - $mailer->addTo("$u@polytechnique.org"); - $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom') - .'" <'.S::v('forlife').'@polytechnique.org>'); - $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription'); - $message = ($sexe ? 'Chère' : 'Cher') . " Camarade,\n" - . "\n" - . " Suite à ta demande d'adhésion à ".$globals->asso('nom').",\n" - . "j'ai le plaisir de t'annoncer que ton inscription a été validée !\n" - . "\n" - . "Bien cordialement,\n" - . "-- \n" - . "{$_SESSION["prenom"]} {$_SESSION["nom"]}."; - $mailer->setTxtBody($message); - $mailer->send(); - pl_redirect("member/$u"); - } - elseif (Env::has('refuse')) - { - $mailer = new PlMailer(); - $mailer->addTo("$u@polytechnique.org"); - $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom') - .'" <'.S::v('forlife').'@polytechnique.org>'); - $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée'); - $mailer->setTxtBody(Env::v('motif')); - $mailer->send(); - $page->kill("La demande de $prenom $nom a bien été refusée."); - } else { - $page->assign('show_form', true); - $page->assign('prenom', $prenom); - $page->assign('nom', $nom); - $page->assign('promo', $promo); - $page->assign('uid', $uid); - } - return; - } - return PL_NOT_FOUND; - } - - if (is_member()) { - $page->kill("Tu es déjà membre !"); - return; - } - - if (Post::has('inscrire')) { - $res = XDB::query('SELECT IF(m.email IS NULL, - CONCAT(al.alias,"@polytechnique.org"), - m.email) - FROM groupex.membres AS m - INNER JOIN aliases AS al ON (al.type = "a_vie" - AND al.id = m.uid) - WHERE perms="admin" AND m.asso_id = {?}', - $globals->asso('id')); - $emails = $res->fetchColumn(); - $to = implode(',', $emails); - - $append = "\n" - . "-- \n" - . "Ce message a été envoyé suite à la demande d'inscription de\n" - . S::v('prenom').' '.S::v('nom').' (X'.S::v('promo').")\n" - . "Via le site www.polytechnique.net. Tu peux choisir de valider ou\n" - . "de refuser sa demande d'inscription depuis la page :\n" - . - "http://www.polytechnique.net/".$globals->asso("diminutif")."/subscribe/" - .S::v('forlife')."\n" - . "\n" - . "En cas de problème, contacter l'équipe de Polytechnique.org\n" - . "à l'adresse : support@polytechnique.org\n"; - - if (!$to) { - $to = $globals->asso("mail").", support@polytechnique.org"; - $append = "\n-- \nLe groupe ".$globals->asso("nom") - ." n'a pas d'administrateur, l'équipe de" - ." Polytechnique.org a été prévenue et va rapidement" - ." résoudre ce problème.\n"; - } - - $mailer = new PlMailer(); - $mailer->addTo($to); - $mailer->setFrom('"'.S::v('prenom').' '.S::v('nom') - .'" <'.S::v('forlife').'@polytechnique.org>'); - $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription'); - $mailer->setTxtBody(Post::v('message').$append); - $mailer->send(); - } - } - - function handler_change_rights(&$page) - { - if (Env::has('right') && (may_update() || S::has('suid'))) { - switch (Env::v('right')) { - case 'admin': - Platal::session()->stopSUID(); - break; - case 'anim': - Platal::session()->doSelfSuid(); - may_update(true); - is_member(true); - break; - case 'member': - Platal::session()->doSelfSuid(); - may_update(false, true); - is_member(true); - break; - case 'logged': - Platal::session()->doSelfSuid(); - may_update(false, true); - is_member(false, true); - break; - } - } -// var_dump($_SESSION); - http_redirect($_SERVER['HTTP_REFERER']); - } - - function handler_admin_annuaire(&$page) - { - global $globals; - - require_once dirname(__FILE__) . '/xnetgrp/mail.inc.php'; - $page->changeTpl('xnetgrp/annuaire-admin.tpl'); - $mmlist = new MMList(S::v('uid'), S::v('password'), - $globals->asso('mail_domain')); - $lists = $mmlist->get_lists(); - if (!$lists) $lists = array(); - $listes = array_map(create_function('$arr', 'return $arr["list"];'), $lists); - - $subscribers = array(); - - foreach ($listes as $list) { - list(,$members) = $mmlist->get_members($list); - $mails = array_map(create_function('$arr', 'return $arr[1];'), $members); - $subscribers = array_unique(array_merge($subscribers, $mails)); - } - - $not_in_group_x = array(); - $not_in_group_ext = array(); - - foreach ($subscribers as $mail) { - $res = XDB::query( - 'SELECT COUNT(*) - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON (m.uid=u.user_id AND m.uid<50000) - LEFT JOIN aliases AS a ON (a.id=u.user_id and a.type="a_vie") - WHERE asso_id = {?} AND - (m.email = {?} OR CONCAT(a.alias, "@polytechnique.org") = {?})', - $globals->asso('id'), $mail, $mail); - if ($res->fetchOneCell() == 0) { - if (strstr($mail, '@polytechnique.org') === false) { - $not_in_group_ext[] = $mail; - } else { - $not_in_group_x[] = $mail; - } - } - } - - $page->assign('not_in_group_ext', $not_in_group_ext); - $page->assign('not_in_group_x', $not_in_group_x); - $page->assign('lists', $lists); - } - - function handler_admin_member_new(&$page, $email = null) - { - global $globals; - - $page->changeTpl('xnetgrp/membres-add.tpl'); - $page->addJsLink('ajax.js'); - - if (is_null($email)) { - return; - } - - if (strpos($email, '@') === false) { - $x = true; - } else { - list(,$fqdn) = explode('@', $email, 2); - $fqdn = strtolower($fqdn); - $x = ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' || - $fqdn == 'm4x.org' || $fqdn == 'melix.net'); - } - if ($x) { - require_once 'user.func.inc.php'; - if ($forlife = get_user_forlife($email)) { - XDB::execute( - 'INSERT INTO groupex.membres (uid,asso_id,origine) - SELECT user_id,{?},"X" - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id = a.id) - WHERE a.alias={?}', $globals->asso('id'), $forlife); - pl_redirect("member/$forlife"); - } else { - $page->trigError($email." n'est pas un alias polytechnique.org valide."); - } - } else { - if (isvalid_email($email)) { - if (Env::v('x') && Env::has('userid') && Env::i('userid')) { - $uid = Env::i('userid'); - $res = XDB::query("SELECT * - FROM auth_user_md5 - WHERE user_id = {?} AND perms = 'pending'", $uid); - if ($res->numRows() == 1) { - if (Env::v('market')) { - $market = Marketing::get($uid, $email); - if (!$market) { - $market = new Marketing($uid, $email, 'group', $globals->asso('nom'), - Env::v('market_from'), S::v('uid')); - $market->add(); - } - } - XDB::execute('INSERT INTO groupex.membres (uid, asso_id, origine, email) - VALUES ({?}, {?}, "X", {?})', - $uid, $globals->asso('id'), $email); - pl_redirect("member/$email"); - } - $page->trigError("Utilisateur invalide"); - } else { - $res = XDB::query('SELECT MAX(uid)+1 FROM groupex.membres'); - $uid = max(intval($res->fetchOneCell()), 50001); - XDB::execute('INSERT INTO groupex.membres (uid,asso_id,origine,email) - VALUES({?},{?},"ext",{?})', $uid, - $globals->asso('id'), $email); - pl_redirect("member/$email"); - } - } else { - $page->trigError("« $email » n'est pas une adresse mail valide."); - } - } - } - - function handler_admin_member_new_ajax(&$page) - { - header('Content-Type: text/html; charset="UTF-8"'); - $page->changeTpl('xnetgrp/membres-new-search.tpl', NO_SKIN); - $res = null; - if (Env::has('login')) { - require_once 'user.func.inc.php'; - $res = get_not_registered_user(Env::v('login'), true); - } - if (is_null($res)) { - list($nom, $prenom) = str_replace(array('-', ' ', "'"), '%', array(Env::v('nom'), Env::v('prenom'))); - $where = "perms = 'pending'"; - if (!empty($nom)) { - $where .= " AND nom LIKE '%$nom%'"; - } - if (!empty($prenom)) { - $where .= " AND prenom LIKE '%$prenom%'"; - } - if (preg_match('/^[0-9]{4}$/', Env::v('promo'))) { - $where .= " AND promo = " . Env::i('promo'); - } elseif (preg_match('/^[0-9]{2}$/', Env::v('promo'))) { - $where .= " AND MOD(promo, 100) = " . Env::i('promo'); - } elseif (Env::has('promo')) { - return; - } - $res = XDB::iterator("SELECT user_id, nom, prenom, promo - FROM auth_user_md5 - WHERE $where"); - } - if ($res && $res->total() < 30) { - $page->assign("choix", $res); - } - } - - function unsubscribe(&$user) - { - global $globals; - XDB::execute( - "DELETE FROM groupex.membres WHERE uid={?} AND asso_id={?}", - $user['uid'], $globals->asso('id')); - - if ($globals->asso('notif_unsub')) { - $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl'); - $res = XDB::iterRow("SELECT a.alias, u.prenom, IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom - FROM groupex.membres AS m - INNER JOIN aliases AS a ON (m.uid = a.id AND FIND_IN_SET('bestalias', a.flags)) - INNER JOIn auth_user_md5 AS u ON (u.user_id = a.id) - WHERE m.asso_id = {?} AND m.perms = 'admin'", - $globals->asso('id')); - while (list($alias, $prenom, $nom) = $res->next()) { - $mailer->addTo("\"$prenom $nom\" <$alias@{$globals->mail->domain}>"); - } - $mailer->assign('group', $globals->asso('nom')); - $mailer->assign('prenom', $user['prenom']); - $mailer->assign('nom', $user['nom']); - $mailer->assign('mail', $user['email2']); - $mailer->assign('selfdone', $user['uid'] == S::i('uid')); - $mailer->send(); - } - - $user_same_email = get_infos($user['email']); - $domain = $globals->asso('mail_domain'); - - if (!$domain || (!empty($user_same_email) && $user_same_email['uid'] != $user['uid'])) { - return true; - } - - $mmlist = new MMList(S::v('uid'), S::v('password'), $domain); - $listes = $mmlist->get_lists($user['email2']); - - $may_update = may_update(); - $warning = false; - foreach ($listes as $liste) { - if ($liste['sub'] == 2) { - if ($may_update) { - $mmlist->mass_unsubscribe($liste['list'], Array($user['email2'])); - } else { - $mmlist->unsubscribe($liste['list']); - } - } elseif ($liste['sub']) { - Platal::page()->trigWarning("{$user['prenom']} {$user['nom']} a une" - ." demande d'inscription en cours sur la" - ." liste {$liste['list']}@ !"); - $warning = true; - } - } - - XDB::execute( - "DELETE FROM virtual_redirect - USING virtual_redirect - INNER JOIN virtual USING(vid) - WHERE redirect={?} AND alias LIKE {?}", $user['email'], '%@'.$domain); - return !$warning; - } - - function handler_unsubscribe(&$page) - { - $page->changeTpl('xnetgrp/membres-del.tpl'); - $user = get_infos(S::v('forlife')); - if (empty($user)) { - return PL_NOT_FOUND; - } - $page->assign('self', true); - $page->assign('user', $user); - - if (!Post::has('confirm')) { - return; - } - - if ($this->unsubscribe($user)) { - $page->trigSuccess('Vous avez été désinscrit du groupe avec succès.'); - } else { - $page->trigWarning('Vous avez été désinscrit du groupe, mais des erreurs se sont produites lors des désinscriptions des alias et des mailing-lists.'); - } - $page->assign('is_member', is_member(true)); - } - - function handler_admin_member_del(&$page, $user = null) - { - $page->changeTpl('xnetgrp/membres-del.tpl'); - $user = get_infos($user); - if (empty($user)) { - return PL_NOT_FOUND; - } - $page->assign('user', $user); - - if (!Post::has('confirm')) { - return; - } - - if ($this->unsubscribe($user)) { - $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné du groupe !"); - } else { - $page->trigWarning("{$user['prenom']} {$user['nom']} a été désabonné du groupe, mais des erreurs subsistent !"); - } - } - - private function changeLogin(PlPage &$page, array &$user, MMList &$mmlist, $login) - { - require_once 'user.func.inc.php'; - // Search the uid of the user... - $res = XDB::query("SELECT f.id, f.alias - FROM aliases AS a - INNER JOIN aliases AS f ON (f.id = a.id AND f.type = 'a_vie') - WHERE a.alias = {?}", - $login); - if ($res->numRows() == 0) { - $x = get_not_registered_user($login); - if (!$x) { - $page->trigError("Le login $login ne correspond à aucun X."); - return false; - } else if (count($x) > 1) { - $page->trigError("Le login $login correspond a plusieurs camarades."); - return false; - } - $uid = $x[0]['user_id']; - $sub = false; - } else { - list($uid, $login) = $res->fetchOneRow(); - $sub = true; - } - - // Check if the user is already in the group - global $globals; - $res = XDB::query("SELECT uid, email - FROM groupex.membres - WHERE uid = {?} AND asso_id = {?}", - $uid, $globals->asso('id')); - if ($res->numRows()) { - list($uid, $email) = $res->fetchOneRow(); - XDB::execute("DELETE FROM groupex.membres - WHERE uid = {?}", - $user['uid']); - } else { - $email = $user['email']; - XDB::execute("UPDATE groupex.membres - SET uid = {?}, origine = 'X' - WHERE uid = {?} AND asso_id = {?}", - $uid, $user['uid'], $globals->asso('id')); - } - if ($sub) { - $email = $login . '@' . $globals->mail->domain; - } - - // Update subscription to aliases - if ($email != $user['email']) { - XDB::execute("UPDATE IGNORE virtual_redirect AS vr - INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', -1) = {?}) - SET vr.redirect = {?} - WHERE vr.redirect = {?}", - $globals->asso('mail_domain'), $email, $user['email']); - XDB::execute("DELETE vr.* - FROM virtual_redirect AS vr - INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', -1) = {?}) - WHERE vr.redirect = {?}", - $globals->asso('mail_domain'), $user['email']); - foreach (Env::v('ml1', array()) as $ml => $state) { - $mmlist->replace_email($ml, $user['email'], $email); - } - } - if ($sub) { - return $login; - } - return $user['email']; - } - - function handler_admin_member(&$page, $user) - { - global $globals; - - $page->changeTpl('xnetgrp/membres-edit.tpl'); - - $user = get_infos($user); - if (empty($user)) { - return PL_NOT_FOUND; - } - - $mmlist = new MMList(S::v('uid'), S::v('password'), - $globals->asso('mail_domain')); - - if (Post::has('change')) { - // Convert user status to X - if ($user['origine'] == 'ext' && trim(Post::v('login_X'))) { - $forlife = $this->changeLogin($page, $user, $mmlist, trim(Post::v('login_X'))); - if ($forlife) { - pl_redirect('member/' . $forlife); - } - } - - // Update user info - $email_changed = ($user['origine'] != 'X' && strtolower($user['email']) != strtolower(Post::v('email'))); - $from_email = $user['email']; - if ($user['origine'] != 'X') { - $user['nom'] = Post::v('nom'); - $user['prenom'] = (Post::v('origine') == 'ext') ? Post::v('prenom') : ''; - $user['sexe'] = (Post::v('origine') == 'ext') ? Post::v('sexe') : 0; - $user['origine'] = Post::v('origine'); - XDB::query('UPDATE groupex.membres - SET prenom={?}, nom={?}, email={?}, sexe={?}, origine={?} - WHERE uid={?} AND asso_id={?}', - $user['prenom'], $user['nom'], Post::v('email'), - $user['sexe'], $user['origine'], $user['uid'], - $globals->asso('id')); - $user['email'] = Post::v('email'); - $user['email2'] = Post::v('email'); - } - - $perms = Post::i('is_admin'); - if ($user['perms'] != $perms) { - XDB::query('UPDATE groupex.membres SET perms={?} - WHERE uid={?} AND asso_id={?}', - $perms ? 'admin' : 'membre', - $user['uid'], $globals->asso('id')); - $user['perms'] = $perms; - $page->trigSuccess('Permissions modifiées !'); - } - - // Update ML subscriptions - foreach (Env::v('ml1', array()) as $ml => $state) { - $ask = empty($_REQUEST['ml2'][$ml]) ? 0 : 2; - if ($ask == $state) { - if ($state && $email_changed) { - $mmlist->replace_email($ml, $from_email, $user['email2']); - $page->trigSuccess("L'abonnement de {$user['prenom']} {$user['nom']} à $ml@ a été mis à jour."); - } - continue; - } - if ($state == '1') { - $page->trigWarning("{$user['prenom']} {$user['nom']} a " - ."actuellement une demande d'inscription en " - ."cours sur $ml@ !!!"); - } elseif ($ask) { - $mmlist->mass_subscribe($ml, Array($user['email2'])); - $page->trigSuccess("{$user['prenom']} {$user['nom']} a été abonné à $ml@."); - } else { - if ($email_changed) { - $mmlist->mass_unsubscribe($ml, Array($from_email)); - } else { - $mmlist->mass_unsubscribe($ml, Array($user['email2'])); - } - $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné de $ml@."); - } - } - - // Change subscriptioin to aliases - foreach (Env::v('ml3', array()) as $ml => $state) { - $ask = !empty($_REQUEST['ml4'][$ml]); - if($state == $ask) continue; - if($ask) { - XDB::query("INSERT INTO virtual_redirect (vid,redirect) - SELECT vid,{?} FROM virtual WHERE alias={?}", - $user['email'], $ml); - $page->trigSuccess("{$user['prenom']} {$user['nom']} a été abonné à $ml."); - } else { - XDB::query("DELETE FROM virtual_redirect - USING virtual_redirect - INNER JOIN virtual USING(vid) - WHERE redirect={?} AND alias={?}", - $user['email'], $ml); - $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné de $ml."); - } - } - } - - $page->assign('user', $user); - echo $user['email2']; - $listes = $mmlist->get_lists($user['email2']); - $page->assign('listes', $listes); - - $res = XDB::query( - 'SELECT alias, redirect IS NOT NULL as sub - FROM virtual AS v - LEFT JOIN virtual_redirect AS vr ON(v.vid=vr.vid AND (redirect = {?} OR redirect = {?})) - WHERE alias LIKE {?} AND type="user"', - $user['email'], $user['email2'], '%@'.$globals->asso('mail_domain')); - $page->assign('alias', $res->fetchAllAssoc()); - } - - function handler_rss(&$page, $user = null, $hash = null) - { - global $globals; - require_once('rss.inc.php'); - $uid = init_rss('xnetgrp/announce-rss.tpl', $user, $hash, false); - - if ($uid) { - $rss = XDB::iterator("SELECT a.id, a.titre, a.texte, a.contacts, a.create_date, - IF(u2.nom_usage != '', u2.nom_usage, u2.nom) AS nom, u2.prenom, u2.promo, - FIND_IN_SET('photo', a.flags) AS photo - FROM auth_user_md5 AS u - INNER JOIN groupex.announces AS a ON ( (a.promo_min = 0 OR a.promo_min <= u.promo) - AND (a.promo_max = 0 OR a.promo_max <= u.promo)) - INNER JOIN auth_user_md5 AS u2 ON (u2.user_id = a.user_id) - WHERE u.user_id = {?} AND peremption >= NOW() AND a.asso_id = {?}", - $uid, $globals->asso('id')); - } else { - $rss = XDB::iterator("SELECT a.id, a.titre, a.texte, a.create_date, - IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom, u.prenom, u.promo - FROM groupex.announces AS a - INNER JOIN auth_user_md5 AS u USING(user_id) - WHERE FIND_IN_SET('public', a.flags) AND peremption >= NOW() AND a.asso_id = {?}", - $globals->asso('id')); - } - $page->assign('asso', $globals->asso()); - $page->assign('rss', $rss); - } - - private function upload_image(PlPage &$page, PlUpload &$upload) - { - if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) { - return true; - } - if (!$upload->upload($_FILES['image']) && !$upload->download(Env::v('image_url'))) { - $page->trigError('Impossible de télécharger l\'image'); - return false; - } elseif (!$upload->isType('image')) { - $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.'); - $upload->rm(); - return false; - } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { - $page->trigError('Impossible de retraiter l\'image'); - return false; - } - return true; - } - - function handler_photo_announce(&$page, $eid = null) { - if ($eid) { - $res = XDB::query("SELECT * FROM groupex.announces_photo WHERE eid = {?}", $eid); - if ($res->numRows()) { - $photo = $res->fetchOneAssoc(); - header('Content-Type: image/' . $photo['attachmime']); - echo $photo['attach']; - exit; - } - } else { - $upload = new PlUpload(S::v('forlife'), 'xnetannounce'); - if ($upload->exists() && $upload->isType('image')) { - header('Content-Type: ' . $upload->contentType()); - echo $upload->getContents(); - exit; - } - } - global $globals; - header('Content-Type: image/png'); - echo file_get_contents($globals->spoolroot . '/htdocs/images/logo.png'); - exit; - } - - function handler_edit_announce(&$page, $aid = null) - { - global $globals, $platal; - $page->changeTpl('xnetgrp/announce-edit.tpl'); - $page->assign('new', is_null($aid)); - $art = array(); - - if (Post::v('valid') == 'Visualiser' || Post::v('valid') == 'Enregistrer' - || Post::v('valid') == 'Supprimer l\'image' || Post::v('valid') == 'Pas d\'image') { - if (!is_null($aid)) { - $art['id'] = $aid; - } - $art['titre'] = Post::v('titre'); - $art['texte'] = Post::v('texte'); - $art['contacts'] = Post::v('contacts'); - $art['promo_min'] = Post::i('promo_min'); - $art['promo_max'] = Post::i('promo_max'); - $art['nom'] = S::v('nom'); - $art['prenom'] = S::v('prenom'); - $art['promo'] = S::v('promo'); - $art['forlife'] = S::v('forlife'); - $art['peremption'] = Post::v('peremption'); - $art['public'] = Post::has('public'); - $art['xorg'] = Post::has('xorg'); - $art['nl'] = Post::has('nl'); - $art['event'] = Post::v('event'); - $upload = new PlUpload(S::v('forlife'), 'xnetannounce'); - $this->upload_image($page, $upload); - - $art['contact_html'] = $art['contacts']; - if ($art['event']) { - $art['contact_html'] .= "\n{$globals->baseurl}/{$platal->ns}events/sub/{$art['event']}"; - } - - if (!$art['public'] && - (($art['promo_min'] > $art['promo_max'] && $art['promo_max'] != 0) || - ($art['promo_min'] != 0 && ($art['promo_min'] <= 1900 || $art['promo_min'] >= 2020)) || - ($art['promo_max'] != 0 && ($art['promo_max'] <= 1900 || $art['promo_max'] >= 2020)))) - { - $page->trigError("L'intervalle de promotions est invalide."); - Post::kill('valid'); - } - - if (!trim($art['titre']) || !trim($art['texte'])) { - $page->trigError("L'article doit avoir un titre et un contenu."); - Post::kill('valid'); - } - - if (Post::v('valid') == 'Supprimer l\'image') { - $upload->rm(); - Post::kill('valid'); - } - $art['photo'] = $upload->exists() || Post::i('photo'); - if (Post::v('valid') == 'Pas d\'image' && !is_null($aid)) { - XDB::query("DELETE FROM groupex.announces_photo WHERE eid = {?}", $aid); - $upload->rm(); - Post::kill('valid'); - $art['photo'] = false; - } - } - - if (Post::v('valid') == 'Enregistrer') { - $promo_min = ($art['public'] ? 0 : $art['promo_min']); - $promo_max = ($art['public'] ? 0 : $art['promo_max']); - $flags = new PlFlagSet(); - if ($art['public']) { - $flags->addFlag('public'); - } - if ($art['photo']) { - $flags->addFlag('photo'); - } - if (is_null($aid)) { - $fulltext = $art['texte']; - if (!empty($art['contact_html'])) { - $fulltext .= "\n\n'''Contacts :'''\\\\\n" . $art['contact_html']; - } - $post = null;/* - if ($globals->asso('forum')) { - require_once 'banana/forum.inc.php'; - $banana = new ForumsBanana(S::v('forlife')); - $post = $banana->post($globals->asso('forum'), null, - $art['titre'], MiniWiki::wikiToText($fulltext, false, 0, 80)); - }*/ - XDB::query("INSERT INTO groupex.announces - (user_id, asso_id, create_date, titre, texte, contacts, - peremption, promo_min, promo_max, flags, post_id) - VALUES ({?}, {?}, NOW(), {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", - S::i('uid'), $globals->asso('id'), $art['titre'], $art['texte'], $art['contact_html'], - $art['peremption'], $promo_min, $promo_max, $flags, $post); - $aid = XDB::insertId(); - if ($art['photo']) { - list($imgx, $imgy, $imgtype) = $upload->imageInfo(); - XDB::execute("INSERT INTO groupex.announces_photo - SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}", - $aid, $imgtype, $imgx, $imgy, $upload->getContents()); - } - if ($art['xorg']) { - require_once('validations.inc.php'); - $article = new EvtReq("[{$globals->asso('nom')}] " . $art['titre'], $fulltext, - $art['promo_min'], $art['promo_max'], $art['peremption'], "", S::v('uid'), - $upload); - $article->submit(); - $page->trigWarning("L'affichage sur la page d'accueil de Polytechnique.org est en attente de validation."); - } else if ($upload && $upload->exists()) { - $upload->rm(); - } - if ($art['nl']) { - require_once('validations.inc.php'); - $article = new NLReq(S::v('uid'), $globals->asso('nom') . " : " .$art['titre'], - $art['texte'], $art['contact_html']); - $article->submit(); - $page->trigWarning("La parution dans la Lettre Mensuelle est en attente de validation."); - } - } else { - XDB::query("UPDATE groupex.announces - SET titre={?}, texte={?}, contacts={?}, peremption={?}, - promo_min={?}, promo_max={?}, flags={?} - WHERE id={?} AND asso_id={?}", - $art['titre'], $art['texte'], $art['contacts'], $art['peremption'], - $promo_min, $promo_max, $flags, - $art['id'], $globals->asso('id')); - if ($art['photo'] && $upload->exists()) { - list($imgx, $imgy, $imgtype) = $upload->imageInfo(); - XDB::execute("REPLACE INTO groupex.announces_photo - SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}", - $aid, $imgtype, $imgx, $imgy, $upload->getContents()); - $upload->rm(); - } - } - } - if (Post::v('valid') == 'Enregistrer' || Post::v('valid') == 'Annuler') { - pl_redirect(""); - } - - if (empty($art) && !is_null($aid)) { - $res = XDB::query("SELECT a.*, u.nom, u.prenom, u.promo, l.alias AS forlife, - FIND_IN_SET('public', a.flags) AS public, - FIND_IN_SET('photo', a.flags) AS photo - FROM groupex.announces AS a - INNER JOIN auth_user_md5 AS u USING(user_id) - INNER JOIN aliases AS l ON (l.id = u.user_id AND l.type = 'a_vie') - WHERE asso_id = {?} AND a.id = {?}", - $globals->asso('id'), $aid); - if ($res->numRows()) { - $art = $res->fetchOneAssoc(); - $art['contact_html'] = $art['contacts']; - } else { - $page->kill("Aucun article correspond à l'identifiant indiqué."); - } - } - - if (is_null($aid)) { - $events = XDB::iterator("SELECT * - FROM groupex.evenements - WHERE asso_id = {?} AND archive = 0", - $globals->asso('id')); - if ($events->total()) { - $page->assign('events', $events); - } - } - - $art['contact_html'] = @MiniWiki::WikiToHTML($art['contact_html']); - $page->assign('art', $art); - $page->assign_by_ref('upload', $upload); - } - - function handler_admin_announce(&$page) - { - global $globals; - $page->changeTpl('xnetgrp/announce-admin.tpl'); - - if (Env::has('del')) { - XDB::execute("DELETE FROM groupex.announces - WHERE id = {?} AND asso_id = {?}", - Env::i('del'), $globals->asso('id')); - } - $res = XDB::iterator("SELECT a.id, a.titre, a.peremption, a.peremption < CURRENT_DATE() AS perime - FROM groupex.announces AS a - WHERE a.asso_id = {?} - ORDER BY a.peremption DESC", - $globals->asso('id')); - $page->assign('articles', $res); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnetgrp/mail.inc.php b/modules/xnetgrp/mail.inc.php deleted file mode 100644 index a998e99..0000000 --- a/modules/xnetgrp/mail.inc.php +++ /dev/null @@ -1,128 +0,0 @@ - "", u.nom, m.nom) AS nom, - IF(u.prenom <> "", u.prenom, m.prenom) AS prenom, - IF(m.email <> "", m.email, CONCAT(a.alias, "@polytechnique.org")) as email, - IF(m.sexe IS NULL, FIND_IN_SET("femme", u.flags), m.sexe) AS sexe - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON (m.uid=u.user_id AND m.uid<50000) - LEFT JOIN aliases AS a ON (a.id=u.user_id and a.type="a_vie") - WHERE asso_id = {?} - AND m.origine IN (' . $membres . ') - AND (m.email <> "" OR u.perms <> "pending")', $globals->asso('id')); - $tos = $res->fetchAllAssoc(); - } - - foreach ($mls as $ml) { - if (list(,$members) = $client->get_members($ml)) { - foreach ($members as $mem) { - list($m, $dom) = explode('@',$mem[1]); - if ($dom == $globals->mail->domain || $dom == $globals->mail->domain2) { - $res = XDB::query('SELECT prenom, nom, FIND_IN_SET("femme", u.flags) AS sexe - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON u.user_id = a.id - WHERE a.alias = {?}', $m); - if ($person = $res->fetchOneAssoc()) { - $person['email'] = $mem[1]; - $tos[] = $person; - } - } else { - $res = XDB::query('SELECT prenom, nom, sexe FROM groupex.membres WHERE email={?}', $mem[1]); - if ($person = $res->fetchOneAssoc()) { - $person['email'] = $mem[1]; - $tos[] = $person; - } else { - $tos[] = array('email' => $mem[1]); - } - } - } - } - } - - return $tos; -} - -// }}} -// {{{ _send_xnet_mail - -function _send_xnet_mail($user, $body, $wiki, $mailer, $replyto = null) -{ - $cher = isset($user['sexe']) ? ($user['sexe'] ? 'Chère' : 'Cher') : 'Cher(e)'; - $nom = isset($user['nom']) ? $user['nom'] : ""; - $pnom = isset($user['prenom']) ? $user['prenom'] : preg_replace('!@.*!u', '', $user['email']); - $to = isset($user['prenom']) ? "\"{$user['prenom']} {$user['nom']}\" <{$user['email']}>" : $user['email']; - - $text = $body; - $text = preg_replace('!!i', $cher, $text); - $text = preg_replace('!!i', $nom, $text); - $text = preg_replace('!!i', $pnom, $text); - - $mailer->addHeader('To', $to); - if ($replyto) { - $mailer->addHeader('Reply-To', $replyto); - } - if ($wiki) { - $mailer->setWikiBody($text); - } else { - $mailer->setTxtBody(wordwrap($text, 72)); - } - $mailer->send(); -} - -// }}} -// {{{ send_xnet_mails - -function send_xnet_mails($from, $sujet, $body, $wiki, $tos, $replyto = null, $upload = null, $name = null) -{ - global $globals; - $sent = array(); - - $mailer = new PlMailer(); - $mailer->setSubject($sujet); - $mailer->setFrom($from); - if ($upload && $upload->exists()) { - $mailer->addUploadAttachment($upload, $name); - } - - foreach ($tos as $user) { - if ($sent[$user['email']]) continue; - _send_xnet_mail($user, $body, $wiki, $mailer, $replyto); - $sent[$user['email']] = true; - } -} - -// }}} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/xnetlists.php b/modules/xnetlists.php deleted file mode 100644 index f442fea..0000000 --- a/modules/xnetlists.php +++ /dev/null @@ -1,344 +0,0 @@ - $this->make_hook('lists', AUTH_MDP, 'groupmember'), - '%grp/lists/create' => $this->make_hook('create', AUTH_MDP, 'groupmember'), - - '%grp/lists/members' => $this->make_hook('members', AUTH_COOKIE), - '%grp/lists/annu' => $this->make_hook('annu', AUTH_COOKIE), - '%grp/lists/archives' => $this->make_hook('archives', AUTH_COOKIE), - '%grp/lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC), - - '%grp/lists/moderate' => $this->make_hook('moderate', AUTH_MDP), - '%grp/lists/admin' => $this->make_hook('admin', AUTH_MDP), - '%grp/lists/options' => $this->make_hook('options', AUTH_MDP), - '%grp/lists/delete' => $this->make_hook('delete', AUTH_MDP), - - '%grp/lists/soptions' => $this->make_hook('soptions', AUTH_MDP), - '%grp/lists/check' => $this->make_hook('check', AUTH_MDP), - '%grp/lists/sync' => $this->make_hook('sync', AUTH_MDP), - - '%grp/alias/admin' => $this->make_hook('aadmin', AUTH_MDP, 'groupadmin'), - '%grp/alias/create' => $this->make_hook('acreate', AUTH_MDP, 'groupadmin'), - - /* hack: lists uses that */ - 'profile' => $this->make_hook('profile', AUTH_PUBLIC), - ); - } - - function prepare_client(&$page) - { - global $globals; - - require_once dirname(__FILE__).'/lists/lists.inc.php'; - - $this->client = new MMList(S::v('uid'), S::v('password'), - $globals->asso('mail_domain')); - - $page->assign('asso', $globals->asso()); - $page->setType($globals->asso('cat')); - - return $globals->asso('mail_domain'); - } - - function handler_lists(&$page) - { - global $globals; - - if (!$globals->asso('mail_domain')) { - return PL_NOT_FOUND; - } - $this->prepare_client($page); - $page->changeTpl('xnetlists/index.tpl'); - - if (Get::has('del')) { - $this->client->unsubscribe(Get::v('del')); - pl_redirect('lists'); - } - if (Get::has('add')) { - $this->client->subscribe(Get::v('add')); - pl_redirect('lists'); - } - - if (Post::has('del_alias') && may_update()) { - $alias = Post::v('del_alias'); - // prevent group admin from erasing aliases from other groups - $alias = substr($alias, 0, strpos($alias, '@')).'@'.$globals->asso('mail_domain'); - XDB::query( - 'DELETE FROM r, v - USING x4dat.virtual AS v - LEFT JOIN x4dat.virtual_redirect AS r USING(vid) - WHERE v.alias={?}', $alias); - $page->trigSuccess(Post::v('del_alias')." supprimé !"); - } - - $listes = $this->client->get_lists(); - $page->assign('listes',$listes); - - $alias = XDB::iterator( - 'SELECT alias,type - FROM x4dat.virtual - WHERE alias - LIKE {?} AND type="user" - ORDER BY alias', '%@'.$globals->asso('mail_domain')); - $page->assign('alias', $alias); - - $page->assign('may_update', may_update()); - } - - function handler_create(&$page) - { - global $globals; - - if (!$globals->asso('mail_domain')) { - return PL_NOT_FOUND; - } - $this->prepare_client($page); - $page->changeTpl('xnetlists/create.tpl'); - - if (!Post::has('submit')) { - return; - } - - if (!Post::has('liste')) { - $page->trigError('champs «adresse souhaitée» vide'); - return; - } - - $liste = strtolower(Post::v('liste')); - - if (!preg_match("/^[a-zA-Z0-9\-]*$/", $liste)) { - $page->trigError('le nom de la liste ne doit contenir que des lettres non accentuées, chiffres et tirets'); - return; - } - - $new = $liste.'@'.$globals->asso('mail_domain'); - $res = XDB::query('SELECT alias FROM x4dat.virtual WHERE alias={?}', $new); - - if ($res->numRows()) { - $page->trigError('cet alias est déjà pris'); - return; - } - if (!Post::v('desc')) { - $page->trigError('le sujet est vide'); - return; - } - - $ret = $this->client->create_list( - $liste, utf8_decode(Post::v('desc')), Post::v('advertise'), - Post::v('modlevel'), Post::v('inslevel'), - array(S::v('forlife')), array(S::v('forlife'))); - - $dom = strtolower($globals->asso("mail_domain")); - $red = $dom.'_'.$liste; - - if (!$ret) { - $page->kill("Un problème est survenu, contacter " - ."support@m4x.org"); - return; - } - foreach (array('', 'owner', 'admin', 'bounces', 'unsubscribe') as $app) { - $mdir = $app == '' ? '+post' : '+' . $app; - if (!empty($app)) { - $app = '-' . $app; - } - XDB::execute('INSERT INTO x4dat.virtual (alias,type) - VALUES({?},{?})', $liste. $app . '@'.$dom, 'list'); - XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect) - VALUES ({?}, {?})', XDB::insertId(), - $red . $mdir . '@listes.polytechnique.org'); - } - pl_redirect('lists/admin/'.$liste); - } - - function handler_sync(&$page, $liste = null) - { - global $globals; - - if (!$globals->asso('mail_domain')) { - return PL_NOT_FOUND; - } - $this->prepare_client($page); - $page->changeTpl('xnetlists/sync.tpl'); - - if (Env::has('add')) { - $this->client->mass_subscribe($liste, array_keys(Env::v('add'))); - } - - list(,$members) = $this->client->get_members($liste); - $mails = array_map(create_function('$arr', 'return $arr[1];'), $members); - $subscribers = array_unique($mails); - - $not_in_group_x = array(); - $not_in_group_ext = array(); - - $ann = XDB::iterator( - "SELECT if (m.origine='X',if (u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom, - if (m.origine='X',u.prenom,m.prenom) AS prenom, - if (m.origine='X',u.promo,'extérieur') AS promo, - if (m.origine='X',CONCAT(a.alias, '@{$globals->mail->domain}'),m.email) AS email, - if (m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme, - m.perms='admin' AS admin, - m.origine='X' AS x - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' ) - WHERE m.asso_id = {?} - ORDER BY promo, nom, prenom", $globals->asso('id')); - - $not_in_list = array(); - - while ($tmp = $ann->next()) { - if (!in_array(strtolower($tmp['email']), $subscribers)) { - $not_in_list[] = $tmp; - } - } - - $page->assign('not_in_list', $not_in_list); - } - - function handler_aadmin(&$page, $lfull = null) - { - global $globals; - - if (!$globals->asso('mail_domain') || is_null($lfull)) { - return PL_NOT_FOUND; - } - $page->changeTpl('xnetlists/alias-admin.tpl'); - - if (Env::has('add_member')) { - $add = Env::v('add_member'); - if (strstr($add, '@')) { - list($mbox,$dom) = explode('@', strtolower($add)); - } else { - $mbox = $add; - $dom = 'm4x.org'; - } - if ($dom == 'polytechnique.org' || $dom == 'm4x.org') { - $res = XDB::query( - "SELECT a.alias, b.alias - FROM x4dat.aliases AS a - LEFT JOIN x4dat.aliases AS b ON (a.id=b.id AND b.type = 'a_vie') - WHERE a.alias={?} AND a.type!='homonyme'", $mbox); - if (list($alias, $blias) = $res->fetchOneRow()) { - $alias = empty($blias) ? $alias : $blias; - XDB::query( - "INSERT INTO x4dat.virtual_redirect (vid,redirect) - SELECT vid, {?} - FROM x4dat.virtual - WHERE alias={?}", "$alias@m4x.org", $lfull); - $page->trigSuccess("$alias@m4x.org ajouté"); - } else { - $page->trigError("$mbox@{$globals->mail->domain} n'existe pas."); - } - } else { - XDB::query( - "INSERT INTO x4dat.virtual_redirect (vid,redirect) - SELECT vid,{?} - FROM x4dat.virtual - WHERE alias={?}", "$mbox@$dom", $lfull); - $page->trigSuccess("$mbox@$dom ajouté"); - } - } - - if (Env::has('del_member')) { - XDB::query( - "DELETE FROM x4dat.virtual_redirect - USING x4dat.virtual_redirect - INNER JOIN x4dat.virtual USING(vid) - WHERE redirect={?} AND alias={?}", Env::v('del_member'), $lfull); - pl_redirect('alias/admin/'.$lfull); - } - - global $globals; - $res = XDB::iterator("SELECT IF(r.login IS NULL, m.nom, IF(u.nom_usage != '', u.nom_usage, u.nom)) AS nom, - IF(r.login IS NULL, m.prenom, u.prenom) AS prenom, - IF(r.login IS NULL, 'extérieur', u.promo) AS promo, - m.perms = 'admin' AS admin, r.redirect, r.login AS alias - FROM (SELECT redirect AS redirect, - IF(SUBSTRING_INDEX(redirect, '@', -1) IN ({?}, {?}), - SUBSTRING_INDEX(redirect, '@', 1), NULL) AS login - FROM x4dat.virtual_redirect AS vr - INNER JOIN x4dat.virtual AS v USING(vid) - WHERE v.alias = {?} - ORDER BY redirect) AS r - LEFT JOIN aliases AS a ON (r.login IS NOT NULL AND r.login = a.alias) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = a.id) - LEFT JOIN groupex.membres AS m ON (m.asso_id = {?} AND IF(r.login IS NULL, m.email = r.redirect, m.uid = u.user_id))", - $globals->mail->domain, $globals->mail->domain2, - $lfull, $globals->asso('id')); - $page->assign('mem', $res); - } - - function handler_acreate(&$page) - { - global $globals; - - if (!$globals->asso('mail_domain')) { - return PL_NOT_FOUND; - } - $page->changeTpl('xnetlists/alias-create.tpl'); - - if (!Post::has('submit')) { - return; - } - - if (!Post::has('liste')) { - $page->trigError('champs «adresse souhaitée» vide'); - return; - } - $liste = Post::v('liste'); - if (!preg_match("/^[a-zA-Z0-9\-\.]*$/", $liste)) { - $page->trigError('le nom de l\'alias ne doit contenir que des lettres,' - .' chiffres, tirets et points'); - return; - } - - $new = $liste.'@'.$globals->asso('mail_domain'); - $res = XDB::query('SELECT COUNT(*) FROM x4dat.virtual WHERE alias={?}', $new); - $n = $res->fetchOneCell(); - if ($n) { - $page->trigError('cet alias est déjà pris'); - return; - } - - XDB::query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new); - - pl_redirect("alias/admin/$new"); - } - - function handler_profile(&$page, $user = null) - { - http_redirect('https://www.polytechnique.org/profile/'.$user); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/plugins/compiler.icon.php b/plugins/compiler.icon.php deleted file mode 100644 index d464900..0000000 --- a/plugins/compiler.icon.php +++ /dev/null @@ -1,46 +0,0 @@ -_parse_attrs($tag_attrs)); - - $alt = 'alt=""'; - - if (isset($title)) { - $title = pl_entities(trim($title, '\'"'), ENT_QUOTES); - $alt = 'alt="'.$title.'"'; - $title = 'title="'. $title.'" '; - } - - $name = pl_entities(trim($name, '\'"'), ENT_QUOTES); - $name = "images/icons/$name.gif"; - if ($full) { - global $globals; - $name = $globals->baseurl . '/' . $name; - } - - return "?> diff --git a/plugins/function.display_address.php b/plugins/function.display_address.php deleted file mode 100644 index 07ce7c3..0000000 --- a/plugins/function.display_address.php +++ /dev/null @@ -1,96 +0,0 @@ -\"Google"; - if ($restore) { - array_unshift($lines, $idt); - } - if ($param['titre']) - { - if ($param['titre_div']) - $txthtml .= "
    ".pl_entity_decode($param['titre'])." ".$map."
    \n"; - else - $txthtml .= "".pl_entity_decode($param['titre'])." ".$map."
    \n"; - } - foreach ($lines as $line) - { - $txthtml .= "".$line."
    \n"; - } - if ($param['adr']['tel']) - $txthtml .= "
    \nTél : \n".$param['adr']['tel']."\n
    \n"; - if ($param['adr']['fax']) - $txthtml .= "
    \nFax : \n".$param['adr']['fax']."\n
    \n"; - if ($param['adr']['mobile']) - $txthtml .= "
    \nTél : \n".$param['adr']['mobile']."\n
    \n"; - if ($param['adr']['tels'] && count($param['adr']['tels'])) { - foreach ($param['adr']['tels'] as $tel) - $txthtml .= "
    \n".$tel['tel_type']." : \n".$tel['tel']."\n
    \n"; - } - if (!$param['nodiv']) { - $pos = $param['pos'] ? " style='float: " . $param['pos'] . "'" : ''; - $txthtml = "
    \n".$txthtml."
    \n"; - } - return $txthtml; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/plugins/function.geoloc_country.php b/plugins/function.geoloc_country.php deleted file mode 100644 index b3960c7..0000000 --- a/plugins/function.geoloc_country.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/plugins/function.geoloc_region.php b/plugins/function.geoloc_region.php deleted file mode 100644 index 5064bdf..0000000 --- a/plugins/function.geoloc_region.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/plugins/function.make_forlife.php b/plugins/function.make_forlife.php deleted file mode 100644 index faa8684..0000000 --- a/plugins/function.make_forlife.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/plugins/function.select_nat.php b/plugins/function.select_nat.php deleted file mode 100644 index bc0401c..0000000 --- a/plugins/function.select_nat.php +++ /dev/null @@ -1,48 +0,0 @@ -\n"; - } - while (list($my_id,$my_text) = $res->next()) { - $html .= sprintf("\n",$my_id,($valeur==$my_id?$sel:""),$my_text); - } - return $html; -} - -function smarty_function_select_nat($params, &$smarty) { - if(empty($params['pad']) || !($params['pad'])) - $pad = false; - else - $pad = true; - return select_nat($params['valeur'], $pad); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/plugins/function.test_email.php b/plugins/function.test_email.php deleted file mode 100644 index 80ad621..0000000 --- a/plugins/function.test_email.php +++ /dev/null @@ -1,36 +0,0 @@ -' - . '

    ' - . ' ' - . ' ' - . '
    ' - . ' ' - . ''; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/plugins/insert.getName.php b/plugins/insert.getName.php deleted file mode 100644 index bd7ac0f..0000000 --- a/plugins/insert.getName.php +++ /dev/null @@ -1,33 +0,0 @@ -fetchOneCell(); -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/plugins/insert.getUserName.php b/plugins/insert.getUserName.php deleted file mode 100644 index 08dd7df..0000000 --- a/plugins/insert.getUserName.php +++ /dev/null @@ -1,54 +0,0 @@ -fetchOneCell(); - } else { - $res = XDB::query(" - SELECT v.alias - FROM virtual AS v - INNER JOIN virtual_redirect USING(vid) - INNER JOIN aliases AS a ON(id={?} AND a.type='a_vie') - WHERE redirect = CONCAT(a.alias, {?}) - OR redirect = CONCAT(a.alias, {?})", - $id, "@".$globals->mail->domain, "@".$globals->mail->domain2); - $alias = $res->fetchOneCell(); - return substr($alias, 0, strpos($alias, "@")); - } - - return $login; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/templates/admin/ax-xorg.tpl b/templates/admin/ax-xorg.tpl deleted file mode 100644 index 98e4bec..0000000 --- a/templates/admin/ax-xorg.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Vérifier notre table de correspondance entre l'annuaire de l'AX et le nôtre -

    - -

    - Liste des camarades qui n'apparaissent pas sous le même nom dans les deux annuaires -

    - - - - - - - -{foreach item=x from=$diffs} - - - - - -{/foreach} -
    PromoNom X.org Prénom X.org Mat X.orgNom AX Prénom AX Mat AX
    {$x.promo}{$x.nom} {$x.prenom} {$x.mat}{$x.nomax} {$x.prenomax} {$x.matax}
    - -

    - {$diffs|@count} camarades ont un état civil différent dans les 2 annuaires. -

    - -
    -
    - -

    - Liste des camarades de l'annuaire de l'AX qui manquent à notre annuaire -

    - - - - - -{foreach item=x from=$mank} - - - - - -{/foreach} -
    Promo Nom Prénom
    {$x.promo}{$x.nom} {if $x.nom_patro neq $x.nom}({$c.nom_patro}){/if}{$x.prenom}
    -

    - {$mank|@count} camarades sont absents de notre annuaire. -

    - -
    -
    - -

    - Liste des camarades de notre annuaire qui ne sont pas dans l'annuaire de l'AX -

    - - - - - -{foreach item=x from=$plus} - - - -{/foreach} -
    Promo Nom Prénom
    {$x.promo} {$x.nom} {$x.prenom}
    - -

    - {$plus|@count} camarades sont absents de l'annuaire de l'AX. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/dead_but_active.tpl b/templates/admin/dead_but_active.tpl deleted file mode 100644 index b7ecb11..0000000 --- a/templates/admin/dead_but_active.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Décédés encore actifs

    - -

    - Liste des polytechniciens décédés, mais dont le compte est encore actif - (veufs/veuves, ...). -

    - - - - - - - - - {iterate from=$dead item=d} - - - - - - - - {/iterate} -
    PromoÉtat civilDécèsDernière activité
    {$d.promo} - {icon name=user_suit title='Afficher la fiche'} - {* - *}{icon name=user_gray title="fiche AX"} - {icon name=wrench title='Administrer user'} - {$d.prenom} {$d.nom}{$d.deces} - {if $d.last gt $d.deces}{$d.last}{elseif $d.last}{$d.last}{else}-{/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/deces_promo.tpl b/templates/admin/deces_promo.tpl deleted file mode 100644 index 9a64ba3..0000000 --- a/templates/admin/deces_promo.tpl +++ /dev/null @@ -1,93 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{foreach from=$new_deces item=i} -

    Ajout du décès de {$i.name} le {$i.date}.

    -{/foreach} - -
    - - - - - - - - -
    - - - - Promotion : - - - - - -
    -
    - -
    - {xsrf_token_field} - - - - - - {iterate item=x from=$decedes} - - - - - {/iterate} - - - -
    NomDate de décès
    {$x.nom} {$x.prenom} - -
    - -
    -
    - - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/emails_bounces_re.tpl b/templates/admin/emails_bounces_re.tpl deleted file mode 100644 index fc71ae8..0000000 --- a/templates/admin/emails_bounces_re.tpl +++ /dev/null @@ -1,97 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Regexps pour les détections de bounces

    - -

    -Rappel sur les niveaux : -

    -
      -
    • 0: IGNORE == ignorer le bounce
    • -
    • 1: NOTICE == forwarder le bounce (typiquement vacation)
    • -
    • 2: ERREUR == erreur
    • -
    - - -
    - - - - - - {if $new} - - - - - - - - - {else} - - - - {/if} - {iterate from=$bre item=re} - - - - - - - - - {/iterate} - - - -
    Position/NiveauRegexp/Raison
    - - - -
    - - - - - -
    - nouveau -
    - - - -
    - - - - -
    -
    - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/forums-promo.mail.tpl b/templates/admin/forums-promo.mail.tpl deleted file mode 100644 index 9f1c04e..0000000 --- a/templates/admin/forums-promo.mail.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="forums_promo"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=#to#} -{subject text="Création du forum promo $promo"} -{elseif $mail_part eq 'text'} - -Création du forum promo {$promo} à faire ! -(+ de 20% d'inscrits) -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/homonymes.tpl b/templates/admin/homonymes.tpl deleted file mode 100644 index b254bcc..0000000 --- a/templates/admin/homonymes.tpl +++ /dev/null @@ -1,148 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Gestion des homonymes

    - -{if $op eq 'mail'} -

    mail envoyé à {$forlife}

    -{elseif $op eq 'correct'} -

    mail envoyé à {$forlife}, alias supprimé

    -{/if} - -{if $op eq 'list' || $op eq 'mail' || $op eq 'correct'} - -

    - Les utilisateurs signalés en rouge sont ceux qui conservent actuellement - l'alias prenom.nom et empêchent donc la mise en place du robot détrompeur. -

    - - - - - - - - {foreach from=$hnymes key=login item=row} - - - - {foreach from=$row item=user} - - - - - - {/foreach} - {/foreach} -
    alias concernédate de péremption de l'aliasop
    - {$login} -
       - {if $user.type eq 'alias'} - {$user.forlife} - {else} - {$user.forlife} - {/if} - {$user.expire|date_format} - fiche - edit - {if $user.type eq 'alias'} - mailer - corriger - {/if} -
    - -{elseif $op eq 'mail-conf'} - -
    - {xsrf_token_field} - - - - - - - - - - -
    Envoyer un mail pour prévenir l'utilisateur
    - -
    - -
    -
    - -{elseif $op eq 'correct-conf'} - -
    - {xsrf_token_field} - - - - - - - - - - -
    Mettre en place le robot {$loginbis}@{#globals.mail.domain#}
    - -
    - -
    -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/icons.tpl b/templates/admin/icons.tpl deleted file mode 100644 index 1b1064e..0000000 --- a/templates/admin/icons.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Icônes installées sur plat/al

    -

    -{foreach from=$icons item='icon'} - -{/foreach} -

    -

    Pour en installer d'autres du même goût, il faut aller sur -www.famfamfam.com, choisir -son icône, l'enregistrer en GIF (pour la transparence sous Internet Explorer) puis -de l'ajouter au projet plat/al dans le dossier htdocs/images/icons. -

    diff --git a/templates/admin/index.tpl b/templates/admin/index.tpl deleted file mode 100644 index f6b59cc..0000000 --- a/templates/admin/index.tpl +++ /dev/null @@ -1,179 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Administration Polytechnique.org

    - - - - - - - - - -
    Système
    - Postfix :   - Blacklist -   |   - Whitelist -   |   - Retardés -   |   - Regexps Bounces -
    - Sécurité :   - Logs des sessions -   |   - Actions -   |   - Emails -   |   - Perdus de vue -   |   - IPs -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Contenu du site
    - Utilisateurs :   - Ajout -   |   - Edit/Su/Logs -   |   - Homonymes -   |   - AX/X.org -   |   - Décès -   |   - Décédés actifs -   |   - Synchro AX -   |   - Google Apps -
    - Infos dynamiques :   - Coupures -   |   - MX défaillants -   |   - Astuces -   |   - Icônes -
    - Champs profil :   - Formations -   |   - Binets -   |   - Skins -   |   - Décorations -   |   - Sections -   |   - Secteurs -   |   - Sous-secteurs -   |   - Fonctions -
    - Newsletter :   - Liste -   |   - Catégories -
    - Administrer :   - Auth Groupes X -   |   - Listes -
    - Valider demandes :   - Valider -   |   - Événements -   |   - Réponses automatiques -
    - Trésorerie :   - Paiements -
    - Géoloc :   - Synchro -   |   - Dynamap -
    - Wiki :   - Pages et permissions -
    - AX-Letter :   - Edition -   |   - Inscriptions et Permissions -
    - Sondages :   - Gestion des sondages -
    - Forums :   - Gestion des mises au ban -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/ipwatcher.tpl b/templates/admin/ipwatcher.tpl deleted file mode 100644 index 0a526b9..0000000 --- a/templates/admin/ipwatcher.tpl +++ /dev/null @@ -1,141 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Gestion des IPs surveillées

    - -{if $action eq "list"} - - - - - - - - - - - - {foreach from=$table item=ip} - - - - - - - {/foreach} -
    AdresseEtatUtilisateurs
    - Ajouter une entrée - - créer{icon name=add} -
    - {$ip.ip}/{$ip.mask}
    - {$ip.host}
    - Ajoutée le {$ip.detection|date_format} -
    - {$ip.state} - - {foreach from=$ip.users item=user name=all} - {if $user} - {$user} - {icon name=wrench title=Administrer} - {icon name=information title="Logs"}{if !$smarty.foreach.all.last}
    {/if} - {/if} - {/foreach} -
    - {icon name=page_edit title="Editer"} - {icon name=delete title="Supprimer"} -
    -{elseif $action eq "create" || $action eq "edit"} -[Retour à la liste des IPs surveillées]

    -
    -{xsrf_token_field} - - - - - - {if $action eq "create"} - - - {else} - - - {foreach from=$ip.users key=i name=all item=user} - {if $user} - {if $i is even}{/if} - - {if $i is even && $smarty.foreach.all.last}{/if} - {if $i is odd || $smarty.foreach.all.last}{/if} - {/if} - {/foreach} - - - - {/if} - - - - - - - - - - - - {if $ip.edit} - - - - {/if} - - - - - - - -
    Commenter une adresse IP
    Adresse IP - {$ip.ip} ({$ip.host}) - -
    - {$user} - {icon name=wrench title="Administrer} - {icon name=information title="Logs"}{if !$smarty.foreach.all.last}
    {/if} -
    Date de détection{$ip.detection|date_format}
    Masque d'influence
    Danger - -
    Description
    - Dernière édition par {$ip.edit} le {$ip.last|date_format} -
    - -
    - - -
    -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/logger-view.tpl b/templates/admin/logger-view.tpl deleted file mode 100644 index aefc855..0000000 --- a/templates/admin/logger-view.tpl +++ /dev/null @@ -1,137 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Parcours des logs du site

    - -{if $events} - - - - - - - - - -{if $session.forward_ip} - - - - - - - - -{else} - - - - -{/if} - - - - -
    Propriétés de la session
    utilisateur{$session.username} {if $session.suer}(suid by {$session.suer}){/if} - [user's log]
    Hôte{$session.forward_host} IP: {$session.forward_ip|uint_to_ip}
    Proxy{$session.host} IP: {$session.ip|uint_to_ip}
    {if $session.flags}Proxy{else}Hôte{/if}{$session.host} IP: {$session.ip|uint_to_ip}
    Navigateur{$session.browser}
    - -
    - - - - - - - -{foreach from=$events item=myevent} - - - - - -{/foreach} -
    dateactiondonnée
    {$myevent.stamp|date_format:"%x %X"}{$myevent.text}{$myevent.data}
    - -{else} - -
    - - - - - - - - - -
    Date - Année - -  Mois - -  Jour - -
    Utilisateur - - -
    - -
    - -
    - - - - - - - - -{foreach from=$sessions item=mysess} - - - - - - - {/foreach} -{if $msg_nofilters} - - - -{/if} -
    débututilisateurrésuméactions
    {$mysess.start|date_format:"%x %X"}{$mysess.username} - {foreach from=$mysess.events item=myevent}{$myevent}
    {/foreach} -
    - session - user's log -
    {$msg_nofilters}
    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/postfix_delayed.tpl b/templates/admin/postfix_delayed.tpl deleted file mode 100644 index a39e482..0000000 --- a/templates/admin/postfix_delayed.tpl +++ /dev/null @@ -1,54 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Mails en attente de décision

    - - - - - - - - - - - {iterate from=$mails item=m} - - - - - - - - - {/iterate} -
    ChecksumNb mails reçusDernier reçuPremier reçuEtatActions
    {$m.crc}{$m.nb}{$m.update_time|date_format}{$m.create_time|date_format}{if $m.del}Poubelle{elseif $m.ok}Autorisé{else}En attente{/if} -
    -
    - - - -
    -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/promo.tpl b/templates/admin/promo.tpl deleted file mode 100644 index d92c1c5..0000000 --- a/templates/admin/promo.tpl +++ /dev/null @@ -1,42 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Mise à jour de l'annuaire

    - -
    - - - -
    - Promotion : -
    - - -
    -
    -
    - -{if $promo} -{include file="include/csv-importer.tpl"} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/synchro_ax.tpl b/templates/admin/synchro_ax.tpl deleted file mode 100644 index b2961f1..0000000 --- a/templates/admin/synchro_ax.tpl +++ /dev/null @@ -1,148 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Synchronisation depuis l'AX -

    - -{if $no_private_key} -

    - Impossible d'utiliser ce service, il manque la clef privée AX dans la configuration de plat/al. -

    -{else} -
    - - - - - - - -
    Synchroniser un utilisateur
    - - -
    -
    -{/if} -{if $x} -
    -{if $x.profile_from_ax} -
    -Cet utilisateur a accepeté la synchronisation -
    -{else} -
    -ATTENTION ! Cet utilisateur n'a pas accepté la synchronisation -
    -{/if} -
    Les fiches de cet utilisateur : - -
    -{if $diff} - -{foreach from=$diff key='k' item='i'} -{if ($k neq 'adr') and ($k neq 'adr_pro')} - - - - - - -{/if} -{/foreach} - -{if $diff.adr} - -{foreach from=$diff.adr item='adr'} - -{/foreach} -{/if} - -{if $diff.adr_pro} - -{foreach from=$diff.adr_pro item='pro'} - -{/foreach} -{/if} -
    - {$k} - - {$x[$k]} - - - {$i} -
    -Adresses -
    -{if $adr.remove} - Effacer l'adresse {$adr.adrid}. -{else} - {if $adr.adrid}Modifier l'adresse {$adr.adrid} :{else}Ajouter l'adresse :{/if} - {include file='geoloc/address.tpl' address=$adr no_div=1 for="`$x.prenom` `$x.nom`"} -{/if} -
    -Emplois -
    -{if $pro.remove} - Effacer l'emploi {$pro.entrid}. -{else} - {if $pro.entrid || $pro.entrid === 0}Modifier l'emploi {$pro.entrid} :{else}Ajouter l'emploi :{/if} - {if $pro.entreprise} -
    - Entreprise/Organisme : {$pro.entreprise} -
    - {/if} - {if $pro.secteur} -
    - Secteur : - {$pro.secteur}{if $pro.ss_secteur} ({$pro.ss_secteur}){/if} -
    - {/if} - {if $pro.fonction} -
    - Fonction : {$pro.fonction} -
    - {/if} - {if $pro.poste} -
    - Poste : {$pro.poste} -
    - {/if} - {include file='geoloc/address.tpl' address=$pro no_div=1 for=$pro.entreprise} -{/if} -
    -
    - -
    -{else} -
    - Le profil actuel est synchronisé avec les données de l'AX. -
    -{/if} - -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/useredit.mail.tpl b/templates/admin/useredit.mail.tpl deleted file mode 100644 index 3023779..0000000 --- a/templates/admin/useredit.mail.tpl +++ /dev/null @@ -1,49 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="intervention_admin"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=#to#} -{subject text="INTERVENTION de $admin"} -{elseif $mail_part eq 'wiki'} -{if $deletion} -L'utilisateur {$user} a été désinscrit de plat/al. -{else} -Le profil du camarade {$old.prenom} {$old.nom} ({$old.promo}) a été édité.\\ -Les champs suivants ont été changés : -{foreach from=$old item=value key=field} -{if $value neq $new[$field]} -* '''{$field}''' : {$value} -> {$new[$field]} -{/if} -{/foreach} - -Et ceux qui n'ont pas changé : -{foreach from=$old item=value key=field} -{if $value eq $new[$field]} -* '''{$field}''' : {$value} -{/if} -{/foreach} -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/admin/utilisateurs.tpl b/templates/admin/utilisateurs.tpl deleted file mode 100644 index d03415e..0000000 --- a/templates/admin/utilisateurs.tpl +++ /dev/null @@ -1,470 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Gestion des utilisateurs -

    - - -{if $smarty.post.u_kill_conf} -
    - {xsrf_token_field} -
    - - Confirmer la suppression de {$smarty.request.user_id}   - -
    -
    -{else} - -
    - {xsrf_token_field} - - - - - {if !$smarty.request.login && !$mr.forlife} - - - - {/if} - - - - - - -
    - Administrer -
    - Il est possible d'entrer ici n'importe quelle adresse mail : redirection, melix, ou alias. -
    - -
    - -    -    -    - -
    -
    - -{if $mr} - -

    -Dernière connexion le {$lastlogin|date_format:"%d %B %Y, %T"} -depuis {$host}. -

    - -{literal} - -{/literal} - -
    - {xsrf_token_field} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {if $mr.perms neq 'pending'} - - - - - {/if} - - - - - - - - - - - - - - - - - {if $mr.perms eq 'pending'} - - - - {else} - - - - - - - - - {/if} -
    -
    - Matricule = {$mr.matricule}
    - Matricule AX = {$mr.matricule_ax} -
    -
    - UID = {$mr.user_id}
    - Inscription = {$mr.date_ins|date_format} -
    - -
    - Mot de passe - -
    - - - -
    -
    - {checkpasswd prompt="newpass_clair" submit="dummy_none"} -
    -
    - Nom - - -
    - Nom d'usage - - -
    - Prénom - - -
    - Sexe - - femme - homme -
    - Droits - - -
    - {if $mr.naiss_err}{/if} - Date de naissance - {if $mr.naiss_err}{/if} - - - {if $mr.naissance_ini neq '0000-00-00' && $mr.naissance neq $mr.naissance_ini} - ({icon name=error}Date de naissance connue : {$mr.naissance_ini}) - {elseif $mr.naiss_err} - ({icon name=error}Date de naissance incohérente) - {/if} -
    - Date de décès - - -
    - Promo - - -
    - Surveillance - - - Surveiller l'activité de ce compte
    - Cette option permet d'avoir des logs complets de l'activité - du compte via le logger, et d'être alerté lors des connexions de l'utilisateur. -
    - Commentaire - - -
    - - -
    - [Voir fiche] - - -
    - [Trombino] - - -
    -
    -{if $mr.perms neq 'pending'} -

    -Ne pas utiliser [Désinscrire] si le but est d'exclure la personne. -Pour ceci changer ses permissions en 'disabled'. -

    -
    - {xsrf_token_field} - - - - - {iterate from=$aliases item=a} - - - - {if $a.for_life} - - {else} - - {/if} - - {/iterate} - {iterate from=$virtuals item=virtual} - - - - - - {/iterate} - - - - -
    - Alias e-mail -
    - - - {if $a.for_life}{$a.alias}{else}{$a.alias}{/if} - {if $a.expire}(expire le {$a.expire|date_format}){/if} - garanti à vie* - delete -
    {$virtual.alias}
    - - - - - -
    -
    - -

    * à ne modifier qu'avec l'accord express de l'utilisateur !!!

    - -
    - {xsrf_token_field} - - - - - - - - - - - - - - - - - - - - - -
    - Permissions sur les forums -
    - Poster - - - - Bannir -
    - Lire - - - - Bannir -
    - Commentaire - - -
    - - -
    -
    - -{javascript name="ajax"} -{test_email forlife=$mr.forlife} - -
    - {xsrf_token_field} - - - - - {assign var=actives value=false} - {assign var=disabled value=false} - {foreach item=mail from=$emails} - {cycle assign=class values="impair,pair"} - - {if $mail->active && $mail->has_disable()} - {assign var=actives value=true} - {elseif $mail->disabled && $mail->has_disable()} - {assign var=disabled value=true} - {/if} - - - - - - {if $mail->panne && $mail->panne neq "0000-00-00"} - - - - - {/if} - {/foreach} - {cycle assign=class values="impair,pair"} - - - - - - - - -
    - Redirections -
    - {if $mail->active}active{elseif $mail->disabled}suspendue{/if} - - - {if !$mail->disabled} - - {if $mail->active}des{elseif $mail->broken}ré{/if}activer - - {/if} - - - {if $mail->broken}{/if} - {if $mail->email == 'googleapps'}{/if} - {$mail->display_email} - {if $mail->email == 'googleapps'}{/if} - {if $mail->broken} (en panne){/if} - - {if $mail->is_removable()} - delete - {/if} -
    - {icon name=error title="Panne"} - Panne de {$mail->display_email} le {$mail->panne|date_format} - {if $mail->panne neq $mail->last}confirmée le {$mail->last|date_format}{/if} - - effacer les pannes -
    - Ajouter un email - - - - - - - - - -
    - {if $actives} - - {/if} - {if $disabled} - - {/if} -
    -
    - -{/if} -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/valider.tpl b/templates/admin/valider.tpl deleted file mode 100644 index df42a75..0000000 --- a/templates/admin/valider.tpl +++ /dev/null @@ -1,188 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} - -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    Validation

    - - -{if $vit->total()} - -{counter print=false start=0 assign=hidden} - -{iterate item=valid from=$vit} -{assign var=type value=$valid->type} -{if !$hide_requests[$type]} -
    - - - - - - - - - - - - - {include file=$valid->formu()} - {if $valid->editor()} - - - - id()}style="display: none"{/if} id="edit_{$valid->id()}"> - - - {/if} - - - - {foreach from=$valid->comments item=c} - - - - - {/foreach} - comments|@count eq 0}style="display: none"{/if} id="comment_{$valid->id()}"> - - - - - - - - -
    {$valid->type}
    Demandeur : - - {$valid->prenom} {$valid->nom} (X{$valid->promo}) - -
    Date de demande : - {$valid->stamp|date_format} -
    - {if $preview_id neq $valid->id()} -
    - {icon name="add"} -
    - {/if} - Éditer -
    -
    - {xsrf_token_field} -
    - {include file=$valid->editor()} - - - -
    - -
    -
    -
    - {if $valid->comments|@count eq 0} -
    - {icon name="add"} -
    - {/if} - Commentaires -
    - {$c[0]} - {$c[1]|nl2br}
    -
    - {xsrf_token_field} -
    - - - - - -
    - -
    -
    -
    - {if $preview_id neq $valid->id()} -
    - {icon name="null"} -
    - {/if} - Réponse -
    ruleText()}> -
    - {xsrf_token_field} -
    - Réponse préremplie : - - {icon name="page_edit" title="Éditer les réponses automatiques"} -
    -
    - Ajouté dans l'email :
    -
    - - - - - - {if $valid->refuse}{/if} - -
    -
    -
    -{else} -{counter print=false assign=hidden} -{/if} -{/iterate} - -{if $hidden} -

    {$hidden} validation{if $hidden > 1}s ont été masquées{else} a été masquée{/if}.

    -{/if} - -{else} - -

    Rien à valider

    - -{/if} - -

    - Afficher seulement les validation suivantes : -

    - -
    - {foreach from=$categories item=type} -
    -
    - {/foreach} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/admin/wiki.tpl b/templates/admin/wiki.tpl deleted file mode 100644 index 45de786..0000000 --- a/templates/admin/wiki.tpl +++ /dev/null @@ -1,156 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Pages wiki du site

    - -{literal} - -{/literal} - -

    - {icon name=feed title='fil rss'} - {icon name=magnifier} Voir les changements récents -

    - -
    -{xsrf_token_field} - - - - - - - -{foreach from=$wiki_pages key=cat item=pages} - - - -{foreach from=$pages item=perm key=page name=pages} - - - - - - -{/foreach} -{/foreach} - - - - - - - - - -
    - page - - lecture - - écriture - - action -
    - - - {$cat} ({$pages|@count}) {icon name=magnifier title="Changements récents"} -
    - {if $smarty.foreach.pages.last} - L - {else} - | - {/if} - {$page}{if $perm.cached}*{/if} {icon name=page_edit title='éditer'} - - {$perm.read} - - {$perm.edit} - - {icon name=book_next title='déplacer'} - {icon name=cross title='supprimer'} - -
    - {icon name=tick title='tout cocher'} - {icon name=cross title='tout décocher'} - {icon name=arrow_refresh title='toggle'} -
    - Attribue les permissions aux pages cochées : - - - - - - -
    -
    - -

    - * : les pages marquées d'une astérisque sont actuellement disponibles en cache (accès plus rapide) -

    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/admin.tpl b/templates/axletter/admin.tpl deleted file mode 100644 index a4ab3e3..0000000 --- a/templates/axletter/admin.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Droits d'administration des lettres de l'AX

    - -
    - {xsrf_token_field} - - - - - - - - - {iterate item=a from=$admins} - - - - - {/iterate} -
    NomAction
    - - -
    {$a.prenom} {$a.nom} (X{$a.promo}){icon name=user_suit}{icon name=cross title="Retirer"}
    -
    - -

    Ajout d'utilisateurs

    - -{include file="include/csv-importer.tpl"} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/edit.tpl b/templates/axletter/edit.tpl deleted file mode 100644 index cea59d5..0000000 --- a/templates/axletter/edit.tpl +++ /dev/null @@ -1,105 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Edition de message

    - -
    - {xsrf_token_field} - {if $am} - {include file="axletter/letter.tpl"} - -

    - - - - {if $echeance} - - {/if} - {if !$new} - - {/if} -

    - {/if} - -
    - Sujet du mail : -

    - - {icon name=information title="Syntaxe wiki"} Voir les marqueurs de mise en forme autorisés -
    - Titre :
    -
    - Signature : -

    -
    - - - - - - - - - - {include file="include/field.promo.tpl" prefix=""} - {if !$saved} - - - - - {else} - - - - {/if} -
    Options du message
    Nom raccourci - - (uniquement lettres, chiffres ou -) -
    Echéance d'envoi - le {valid_date name="echeance_date" value=$echeance_date from=3 to=15} - vers -
    - Envoi au plus tard le {$echeance|date_format:"%x vers %Hh"}
    - {if $is_xorg} - [{* - *}{icon name=thumb_up} Valider l'envoi] - {else} - [{* - *}{icon name=thumb_down} Annuler l'envoi] - {/if} -
    - -

    - - - - {if $echeance} - - {/if} - - {if !$new} - - {/if} -

    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/index.tpl b/templates/axletter/index.tpl deleted file mode 100644 index 0cd6172..0000000 --- a/templates/axletter/index.tpl +++ /dev/null @@ -1,83 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Envoi exceptionnel de l'AX -

    - -

    Ton statut

    - -{if $axs} -

    -Tu es actuellement inscrit aux envois exceptionnels de l'AX (pour choisir le format HTML ou texte, rends toi sur la page des préférences). -

    - -{else} -

    -Tu n'es actuellement pas inscrit aux envois exceptionnels de l'AX. -

    - -{/if} - -

    Les archives

    - - - - - - - {if $ax_rights && !$new} - - - - {elseif $ax_rights && $new} - - - - - {/if} - {foreach item=al from=$ax_list} - - - - - {/foreach} -
    datetitre
    - {icon name=page_edit} Proposer un nouveau mail -
    {icon name=page_edit} Éditer la demande - {if $new->title()} - {$new->title(true)} - {/if} -
    {$al.date|date_format} - {$al.titre} -
    - -{if $ax_rights} -

    Il y a actuellement {$count} inscrits aux envois.

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/letter.mail.tpl b/templates/axletter/letter.mail.tpl deleted file mode 100644 index 5ae5706..0000000 --- a/templates/axletter/letter.mail.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="mails_ax"} -{if $mail_part eq 'head'} -{from full=#from#} -{subject text=$am->title(true)} -{if isset(#replyto#)}{add_header name='Reply-To' value=#replyto#}{/if} -{if isset(#retpath#)}{add_header name='Return-Path' value=#retpath#}{/if} -{elseif $mail_part eq 'text'} -{if !$is_mail} -
    -{/if}
    -====================================================================
    -{$am->title()}
    -====================================================================
    -
    -{$am->head($prenom, $nom, $sexe, 'text')}
    -
    -{$am->body('text')}
    -
    -{$am->signature('text')}
    -
    ---------------------------------------------------------------------
    -Cette lettre est envoyée par l'AX grâce aux outils de Polytechnique.org.
    -
    -{if $is_mail}
    -archives         : 
    -ne plus recevoir : 
    -{else}
    -archives         : <https://www.polytechnique.org/ax>
    -ne plus recevoir : <https://www.polytechnique.org/ax/out{if $hash}/{$hash}{/if}>
    -{/if}
    -
    -{if !$is_mail}
    -
    -{/if} -{elseif $mail_part eq 'html'} -{if $is_mail} - - - - - Lettre d'information de l'AX - - - -
    -{/if} -
    -
    {$am->title()}
    -
    {$am->head($prenom, $nom, $sexe, 'html')|smarty:nodefaults}
    -
    {$am->body('html')|smarty:nodefaults}
    -
    {$am->signature('html')|smarty:nodefaults}
    -
    - Cette lettre est envoyée par l'AX grâce aux outils de Polytechnique.org. -
    - -
    -{if $is_mail} -
    - - -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/show.tpl b/templates/axletter/show.tpl deleted file mode 100644 index 16f9942..0000000 --- a/templates/axletter/show.tpl +++ /dev/null @@ -1,59 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - {if $am->_date} - Lettre de l'AX du {$am->_date|date_format} - {else} - Lettre de l'AX en préparation - {/if} -

    - -

    -{if $smarty.get.text} -[version HTML] -{else} -[version Texte] -{/if} -{if !$am->_date} -[éditer] -{/if} -

    - -{include file="include/massmailer-nav.tpl" mm=$am base=ax} - -
    -
    - -
    -
    - - - - - - -
    {$am->title(true)}
    - {include file="axletter/letter.mail.tpl"} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/axletter/unsubscribe.tpl b/templates/axletter/unsubscribe.tpl deleted file mode 100644 index 4473714..0000000 --- a/templates/axletter/unsubscribe.tpl +++ /dev/null @@ -1,41 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2006 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Désinscription des envois de l'AX

    - -{if $success} -

    - Votre inscription aux envois exceptionnels de l'AX a été réalisée avec - succès. Si vous désirez vous réinscrire, merci de contacter - l'AX. Vous pouvez également - le faire en vous inscrivant à Polytechnique.org (pour - les X uniquement). -

    -{else} -

    - Votre inscription aux envois de l'AX n'a pu être résiliée. Merci de contacter - au plus vite l'AX pour faire - part de ce problème. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/banana/index.tpl b/templates/banana/index.tpl deleted file mode 100644 index 0e811d5..0000000 --- a/templates/banana/index.tpl +++ /dev/null @@ -1,94 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if isset($banana|smarty:nodefaults)} -{$banana|smarty:nodefaults} -{else} - -

    - Tu peux régler quelques paramètres qui apparaîtront sur les messages lorsque - tu posteras sur les forums. Cela ne te permettra pas d'être anonyme, puisque - tout le monde pourra remonter à ton identité en regardant ta fiche. L'objectif - est simplement de permettre plus de convivialité. -

    -

    - Tu pourras voir dans les forums les nouveaux messages mis en valeur (en - général en gras). Si tu consultes les forums régulièrement, tu peux en avoir - assez de voir tout le contenu du forum : la dernière option te permet de - n'afficher que les fils de discussion contenant des messages lus. -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Profil Banana
    Nom
    Adresse électronique
    Signature
    Affichage des fils de discussion - Afficher tous les messages
    - Afficher seulement les fils de discussion contenant des messages non lus -
    Mise à jour des messages non lus - Automatique
    - Manuelle -
    - - -
    -
    -
    -{/if} -{if !$it_is_xnet} -

    - {icon name="lightbulb" title="Astuce"}Astuce : - tu peux également consulter les forums en utilisant un client NNTP tel que - Outlook Express ou Thunderbird.
    N'hésite pas à - consulter la documentation et à activer ton accès pour utiliser ce service. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/calendar.tpl b/templates/carnet/calendar.tpl deleted file mode 100644 index 73dec2e..0000000 --- a/templates/carnet/calendar.tpl +++ /dev/null @@ -1,40 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -BEGIN:VCALENDAR -{display_ical name="prodid" value="-//Polytechnique.org//Plat-al//FR"} -VERSION:2.0 -CALSCALE:GREGORIAN -METHOD:PUBLISH -{display_ical name="x-wr-calname" value="Anniversaires des X"} -X-WR-TIMEZONE:Europe/Paris -{foreach from=$events item=e} -BEGIN:VEVENT -DTSTAMP:{$e.timestamp|date_format:"%Y%m%dT%H%M%SZ"} -DTSTART;VALUE=DATE:{$e.date} -DTEND;VALUE=DATE:{$e.tomorrow} -UID:anniv-{$e.date}-{$e.forlife}@{#globals.mail.domain#} -RRULE:FREQ=YEARLY;INTERVAL=1 -CLASS:PUBLIC -{display_ical name="summary" value=$e.summary} -END:VEVENT -{/foreach} -END:VCALENDAR{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/index.tpl b/templates/carnet/index.tpl deleted file mode 100644 index b16445f..0000000 --- a/templates/carnet/index.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Carnet polytechnicien

    - - - - - - - - - -
    - Tes contacts -
    -

    - Page de tes contacts -

    -
    - Tu peux ici lister tes contacts, en ajouter et en retirer. -
    -
    -

    - Le trombi de tes contacts -

    -
    - La même chose que la page de tes contacts... en images ! -
    -
    - -
    - - - - - - - - - -
    - {if $smarty.session.core_rss_hash} - - {icon name=feed title='fil rss'} - - {else} - - {icon name=feed_add title='Activer mon fil rss'} - - {/if} - Notifications -
    -

    - Tous les évenements de la semaine -

    -
    - Affichage de tous les évenements de camarades/promos -
    -
    -

    - Configurer tes notifications -

    -
    - Être notifié des inscriptions, décès, changement de fiche, ... -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/mescontacts.tpl b/templates/carnet/mescontacts.tpl deleted file mode 100644 index 7264691..0000000 --- a/templates/carnet/mescontacts.tpl +++ /dev/null @@ -1,106 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    - Ma liste personnelle de contacts -

    - -
    -Ajouter la personne suivante à ma liste de contacts : -
    -
    - {xsrf_token_field} - -

    -
    -
    -
    -

    - Tu peux également rajouter des camarades dans tes contacts lors d'une recherche dans l'annuaire : - il te suffit de cliquer sur l'icône {icon name=add} en face de son nom dans les résultats ! -

    - -{if $plset_count || $smarty.request.quick} -

    -Pour récupérer ta liste de contacts dans un PDF imprimable :
    -(attention, les photos font beaucoup grossir les fichiers !) -

    - - -

    - Tu peux télécharger des informations sur tes contacts : -

    - - -

    -

    - Tu peux faire une recherche sur tes contacts : -

    - -{include file="core/plset.tpl"} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/notif.mail.tpl b/templates/carnet/notif.mail.tpl deleted file mode 100644 index 24b32ce..0000000 --- a/templates/carnet/notif.mail.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="carnet"} -{if $mail_part eq 'head'} -{from full=#from#} -{subject text="Notifications de la semaine `$week`"} -{if isset(#replyto#)}{add_header name='Reply-To' value=#replyto#}{/if} -{if isset(#retpath#)}{add_header name='Return-Path' value=#retpath#}{/if} -{elseif $mail_part eq 'wiki'} -{if $u.sexe}Chère{else}Cher{/if} {$u.prenom}, - -Voici les événements survenus dans la semaine écoulée, et depuis ta dernière visite sur le site. - -Tu trouveras les mêmes informations sur [[https://www.polytechnique.org/carnet/panel|cette page]]. - -{foreach from=$u.data key=cid item=d} - -!{if $d|@count eq 1}{if $d[0].sexe}{$cats[$cid].mail_sg_xette}{else}{$cats[$cid].mail_sg}{/if}{else}{$cats[$cid].mail}{/if}: - -{foreach from=$d item=x} -* (X{$x.promo}), le {$x.date|date_format:"%d %B %Y"}, [[https://www.polytechnique.org/profile/private/{$x.bestalias}|{$x.prenom} {$x.nom}]] -{/foreach} - -{/foreach} --- -L'Équipe de Polytechnique.org - -'''''Note:''''' Tu reçois ce mail car tu as activé la notification automatique par mail des événements que tu surveilles.\\ -Tu peux changer cette option sur la [[https://www.polytechnique.org/carnet/notifs|page de configuration des notifications]]. - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/notifs.tpl b/templates/carnet/notifs.tpl deleted file mode 100644 index 17c9068..0000000 --- a/templates/carnet/notifs.tpl +++ /dev/null @@ -1,128 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Notifications automatiques

    - -

    Les mails sont hebdomadaires (pour éviter une trop grosse charge du serveur de mails et de ta boite mail). -S'il n'y a rien à te signaler le mail ne t'est pas envoyé.

    - -
    - {xsrf_token_field} -
    - Mail - watch_mail}checked="checked"{/if} /> - Recevoir un mail hebdomadaire des événements que je n'ai pas déjà vus sur le site
    - -
    -
    - -
    - {xsrf_token_field} -
    - Événements à surveiller - {foreach from=$watch->cats() item=s key=i} - subs($i)}checked="checked"{/if} /> - {$s.short} {if $s.type eq near}o{elseif $s.type eq often}*{/if}
    - {/foreach} - *: ne concerne pas les promos (événements très fréquents).
    - o: ne concerne que les promos entre {$smarty.session.promo-1} et {$promo_sortie-2} que tu surveilles. -
    -
    - -
    -
    - -

    Qui/Que surveiller ?

    - -

    Surveiller ses contacts

    - -
    - {xsrf_token_field} -
    - Contacts - watch_contacts}checked="checked"{/if} /> Surveiller mes contacts
    - -
    -
    - -
    - -

    Surveiller des promos

    - -

    -Attention : pour les promos, tu n'es pas notifié des événements trop fréquents (par exemple les changements de fiche). -

    - -
    - {xsrf_token_field} -
    - Ajouter une promo - Tu peux surveiller des promos (mettre la promo sur 4 chiffres), - ou des plages de promos (par ex. 1990-1992) :
    - - - -
    - {if $watch->promos()|@count eq 0} -

    Tu ne surveilles actuellement aucune promo.

    - {else} -

    Tu surveilles les promos suivantes :

    -
      - {foreach from=$watch->promos() item=p} -
    • {if $p.0 eq $p.1}{$p.0}{else}{$p.0} à {$p.1}{/if}
    • - {/foreach} -
    - {/if} -
    -
    - -

    Surveiller des non inscrits

    - -

    -Si un non-inscrit que tu surveilles s'inscrit, il sera automatiquement ajouté à tes contacts. -

    - -

    -Pour surveiller des membres non-inscrits, il faut passer par la recherche -et cliquer sur les icones {icon name=add} pour les ajouter à cette liste. -

    - -
    - Non-inscrits - {if $watch->nonins()|@count eq 0} - Tu ne surveilles actuellement aucun non-inscrit. - {elseif $watch->nonins()|@count} - Tu surveilles {if $watch->nonins()|@count eq 1}le non-inscrit{else}les non-inscrits{/if} : - - {/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/panel.tpl b/templates/carnet/panel.tpl deleted file mode 100644 index 446d644..0000000 --- a/templates/carnet/panel.tpl +++ /dev/null @@ -1,98 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Bilan des Notifications

    - -

    -Cette page récapitule tous les événements que tu surveilles de la semaine écoulée. -

    - -

    -Les lignes en gras sont les événements qui ont été porté à notre connaissance -depuis ta dernière connexion sur cette page.
    -Tu peux les marquer comme vus sans te déconnecter. -

    - -

    -Tu peux choisir plus finement les données affichées sur cette page. -Il faut pour cela se rendre sur la page de configuration des notifications. -

    - -
    -{if $smarty.session.core_rss_hash} -{icon name=feed title='fil rss'} -{/if} -
    - -{foreach from=$notifs->_data item=c key=cid} -

    {if ($c|@count) > 1} -{$notifs->_cats[$cid].mail} : -{else} - {foreach from=$c item=promo} - {if ($promo|@count) > 1} - {$notifs->_cats[$cid].mail} : - {else} - {if $promo[0].sexe} - {$notifs->_cats[$cid].mail_sg_xette} : - {else} - {$notifs->_cats[$cid].mail_sg} : - {/if} - {/if} - {/foreach} -{/if}

    - -
    - - - {foreach from=$c key=p item=promo} - {section name=row loop=$promo} - $smarty.session.watch_last ) || ( $promo[row].date eq $today ) }style="font-weight: bold"{/if}> - - - - {if $promo[row].data} - - {/if} - - {/section} - {/foreach} -
    {if $smarty.section.row.first}{$p}{/if} - {if $promo[row].inscrit} - - {$promo[row].prenom} {$promo[row].nom} - - {if !$promo[row].contact} - {* - *}{icon name=add title="ajouter à mes contacts"} - {/if} - {else} - {$promo[row].prenom} {$promo[row].nom} - {/if} - - {$promo[row].date|date_format} -
    {$promo[row].data|smarty:nodefaults}
    - -
    -{/foreach} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/rss.tpl b/templates/carnet/rss.tpl deleted file mode 100644 index 0ec701e..0000000 --- a/templates/carnet/rss.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - Polytechnique.org :: Carnet - fr - {#globals.baseurl#}/carnet/panel - Ton carnet polytechnicien... - - Polytechnique.org - {#globals.baseurl#}/images/logo.png - {#globals.baseurl#}/ - - {foreach from=$notifs->_data item=c key=cid} - {foreach from=$c item=promo} - {foreach from=$promo item=x} - - - [{$notifs->_cats[$cid].short}] {$x.prenom} {$x.nom} ({$x.promo}) - le {$x.date|date_format} - - {#globals.baseurl#}/profile/private/{$x.bestalias} - carnet{$x.known}{$cid}{$x.bestalias} - {$x.data}
    {/if} - {if !$x.contact and !$x.dcd} - - {icon name=add title="Ajouter" full=true} Ajouter à mes contacts -
    - {/if} - {if !$x.dcd} - - {icon name=vcard title="Carte de visite" full=true} Télécharger la carte de visite électronique - - {/if} - ]]>
    - {$x.prenom} {$x.nom} (X{$x.promo}) - {$x.known|rss_date} -
    - {/foreach} - {/foreach} - {/foreach} -
    -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/carnet/tricontacts.tpl b/templates/carnet/tricontacts.tpl deleted file mode 100644 index 9f4872c..0000000 --- a/templates/carnet/tricontacts.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    -Trier par : -{if ($order eq 'nom') and not($smarty.request.inv)} -[nom decr.] -{else} -[{if ($order eq 'nom')}nom crois.{else}nom{/if}] -{/if} -{if ($order eq 'promo') and ($smarty.request.inv)} -[promo decr.] -{else} -[{if ($order eq 'promo')}promo crois.{else}promo{/if}] -{/if} -{if ($order eq 'last') and ($smarty.request.inv)} -[dernière modification decr.] -{else} -[{if ($order eq 'last')}dernière modification crois.{else}dernière modification{/if}] -{/if} -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/403.tpl b/templates/core/403.tpl deleted file mode 100644 index aeea268..0000000 --- a/templates/core/403.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Tu n'as pas les permissions nécessaires pour accéder à cette page.

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/404.tpl b/templates/core/404.tpl deleted file mode 100644 index a606b54..0000000 --- a/templates/core/404.tpl +++ /dev/null @@ -1,30 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Cette page n'existe pas !!!

    - -{if $near} -

    L'adresse suivante semble correspondre à ta demande :
    -{icon name="lightbulb" title="Cherchais-tu ?"} {$globals->baseurl}/{$near} -

    -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/bug.tpl b/templates/core/bug.tpl deleted file mode 100644 index 15f36d8..0000000 --- a/templates/core/bug.tpl +++ /dev/null @@ -1,86 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -
    -{if $bug_sent} -

    - Ton message a bien été envoyé au support de Polytechnique.org, tu devrais en - recevoir une copie d'ici quelques minutes. Nous allons le traiter et y répondre - dans les plus brefs délais. -

    - -
    -{else} -
    - {xsrf_token_field} -

    Signaler un bug ou demander une amélioration

    -
    - -   Sujet : - - -
    - - -
    -
    -
    - -
    -{/if} - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/core/password_prompt.tpl b/templates/core/password_prompt.tpl deleted file mode 100644 index 704bca4..0000000 --- a/templates/core/password_prompt.tpl +++ /dev/null @@ -1,197 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $referer || $platal->pl_self() neq 'login'} -

    - Accès restreint -

    -

    - Bonjour,
    - la page que vous avez demandée - ({if $referer}{$smarty.server.HTTP_REFERER}{else}{$globals->baseurl}/{$platal->pl_self()}{/if}) - nécessite une authentification. -

    -{else} -

    - Accès réservé aux polytechniciens -

    -{/if} -{if $smarty.session.auth ge AUTH_COOKIE} -

    -Merci de rentrer ton mot de passe pour démarrer une connexion au site. -Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi sur -la page d'inscription. -

    -{/if} - -{if $smarty.request.response} -
    - Erreur d'identification. Essaie à nouveau ! -
    -
    -{/if} - - - -{if !$smarty.session.auth} -

    -Tu ne connais pas ton mot de passe ? -

    -
      -
    • - Si tu viens de terminer ta pré-inscription, il est dans le mail que - nous t'avons envoyé (expéditeur pre-inscription@{#globals.mail.domain#}). -
    • -
    • - Si tu n'es jamais venu sur le site, il faut t'enregistrer auprès de - nous pour obtenir un accès. {#globals.core.sitename#} c'est l'e-mail des X, - l'annuaire en ligne, plus un tas d'autres services. Nous te fournirons un accès le plus - rapidement possible. Clique ici pour nous demander tes - paramètres personnels. -
    • -
    -{/if} - -
    - Pour assurer la confidentialité de ton mot de passe, il est chiffré sur ta machine - avant de nous être transmis. Pour cela, il faut - activer javascript - dans ton navigateur, ce qui n'est actuellement pas le cas. -
    - Active le javascript et recharge cette page pour pouvoir te connecter. -
    -
    - -

    - Problème de connexion ? La réponse est là. -

    - - - -
    - -
    - {if $smarty.server.HTTPS} - {icon name=lock} Tu utilises actuellement une connexion HTTPS sécurisée. Aucune information ne circule - en clair entre chez toi et Polytechnique.org, ce qui assure une confidentialité maximale. - {else} - {icon name=lock_open} Tu utilises actuellement une connexion HTTP non sécurisée. Toutes les informations - (excepté le mot de passe de connexion au site) circulent en clair entre chez toi et - Polytechnique.org. Tu peux basculer sur une connexion sécurisée en cliquant sur le lien -
    - Plus d'informations sur la connexion sécurisée se trouvent - sur cette page. - {/if} -
    - - -
    -
    - - - - - - -
    -
    - -{literal} - -{/literal} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/password_prompt_logged.tpl b/templates/core/password_prompt_logged.tpl deleted file mode 100644 index 363959e..0000000 --- a/templates/core/password_prompt_logged.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -
    - - - - - - -
    - {icon name=error} - - - - Pour des raisons de sécurité, il est obligatoire de taper ton mot de passe, même - avec l'accès permanent, pour certaines opérations sensibles. - - - - {icon name=error} -
    -
    -
    - -
    - - - - - - - - - -
    - Mot de passe : - - -  Perdu ? - - -
    strictement personnelle'} colspan="2"> - Garder l'accès aux services après déconnexion. -
    -
    -
    -{if $smarty.request.response} -
    - Erreur d'identification. Essaie à nouveau ! -
    -{/if} - - -
    -
    - {xsrf_token_field} - - - - - -
    -
    - -{literal} - -{/literal} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/plset.tpl b/templates/core/plset.tpl deleted file mode 100644 index 75a8628..0000000 --- a/templates/core/plset.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -

    - {$plset_mods[$plset_mod]} - {if $plset_mods|@count > 1}[ - {assign var=has_prev value=false} - {foreach from=$plset_mods key=mod item=desc name=mods} - {if $mod neq $plset_mod} - {if $has_prev}| {/if} - {$desc} - {assign var=has_prev value=true} - {/if} - {/foreach} - ] - {/if} -

    -

    - {if !$plset_count} - Aucune entrée - {elseif $plset_count eq 1} - 1 entrée - {else} - {$plset_count} entrées - {/if} -

    -
    - -
    -{include file=$plset_content} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/plwizard.tpl b/templates/core/plwizard.tpl deleted file mode 100644 index df409dd..0000000 --- a/templates/core/plwizard.tpl +++ /dev/null @@ -1,106 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -
    -
    - {foreach from=$pages item=title key=id} - {if $stateless || $id gt $current} - {assign var=tag value="a"} - {else} - {assign var=tag value="div"} - {/if} - <{$tag} class="wiz_tab {if $id eq $current}active{/if} {if !$stateless && $current gt $id}grayed{/if}" - style="display: block; float: left; width: {$tab_width}%; vertical-align: middle" - id="wiz_tab_{$lookup[$id]}" - {if $tag eq "a"} - href="{$wiz_baseurl}/{$lookup[$id]}" - onclick="return changePage(this, '{$lookup[$id]}')" - {/if} - > - {$title} - - {/foreach} -
    -
    -
    - {include file="skin/common.triggers.tpl"} - {include file=$wiz_page} -
    -
    - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/table-editor.tpl b/templates/core/table-editor.tpl deleted file mode 100644 index df3b459..0000000 --- a/templates/core/table-editor.tpl +++ /dev/null @@ -1,160 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    {$title}

    - -{if $list} - - - - {foreach from=$t->vars item=myval key=myvar}{if $myval.display} - - {/if}{/foreach} - {if !$hideactions} - - {/if} - -{if !$readonly} - - - - -{/if} -{iterate from=$list item=myrow} - -{foreach from=$t->vars item=myval}{if $myval.display} - -{/if}{/foreach} - {if !$hideactions} - - {/if} - -{/iterate} -
    {$myval.desc}{if $t->sortfield eq $myvar}{if $t->sortdesc}{icon name="bullet_arrow_down"}{else}{icon name="bullet_arrow_up"}{/if}{/if}action
    - - Nouvelles entrées : ManuellementDepuis un CSV - - - {icon name=add title='nouvelle entrée'} -
    - {assign var="myfield" value=$myval.Field} - {if $myfield eq $t->idfield} - {assign var="idval" value=$myrow.$myfield} - {/if} - {if $myval.Type eq 'timestamp'} - {$myrow.$myfield|date_format:"%x %X"} - {elseif $myval.Type eq 'checkbox'} - - {elseif $myval.Type eq 'ip_address'} - {$myrow.$myfield|uint_to_ip} - {else} - {$myrow.$myfield} - {/if} - - {if !$readonly} - {icon name=page_edit title='éditer'} - {icon name=delete title='supprimer'} - {/if} -
    - -{if ($p_prev > -1) || ($p_next > -1)} - -{/if} - -{elseif $massadd} -{include file="include/csv-importer.tpl"} - -

    -back -

    - -{else} - -
    - {xsrf_token_field} - - - - - {foreach from=$t->vars item=myval}{assign var="myfield" value=$myval.Field}{if ($myfield neq $t->idfield) or ($t->idfield_editable)} - - - - - {/if}{/foreach} -
    - {if $id} - modification de l'entrée - {else} - nouvelle entrée - {/if} -
    - {$myval.desc} - - {if $myval.Type eq 'set'} - - {elseif $myval.Type eq 'enum'} - - {elseif ($myval.Type eq 'textarea') or ($myval.Type eq 'varchar200')} - - {elseif ($myval.Type eq 'checkbox')} - - {else} - - {if $myval.Type eq 'timestamp'}jj/mm/aaaa hh:mm:ss{/if} - {if $myval.Type eq 'date'}jj/mm/aaaa{/if} - {if $myval.Type eq 'time'}hh:mm:ss{/if} - {/if} -
    - -

    - -

    - -
    - -

    -back -

    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/vcard.tpl b/templates/core/vcard.tpl deleted file mode 100644 index c3e3097..0000000 --- a/templates/core/vcard.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -{iterate from=$users item=vcard} -BEGIN:VCARD -VERSION:3.0 -{if $vcard.nom_usage} -FN:{$vcard.prenom|vcard_enc} {$vcard.nom_usage|vcard_enc} ({$vcard.nom|vcard_enc}) -{else} -FN:{$vcard.prenom|vcard_enc} {$vcard.nom|vcard_enc} -{/if} -N:{$vcard.nom|vcard_enc};{$vcard.prenom|vcard_enc};{$vcard.nom_usage|vcard_enc};; -{if $vcard.nickname} -NICKNAME:{$vcard.nickname|vcard_enc} -{/if} -EMAIL;TYPE=internet,pref:{$vcard.bestalias}@{#globals.mail.domain#} -EMAIL;TYPE=internet:{$vcard.bestalias}@{#globals.mail.domain2#} -{if $vcard.bestalias neq $vcard.forlife} -EMAIL;TYPE=internet:{$vcard.forlife}@{#globals.mail.domain#} -EMAIL;TYPE=internet:{$vcard.forlife}@{#globals.mail.domain2#} -{/if} -{if $vcard.virtualalias} -EMAIL;TYPE=internet:{$vcard.virtualalias} -{/if} -{if $vcard.mobile} -TEL;TYPE=cell:{$vcard.mobile|vcard_enc} -{/if} -{if $vcard.adr_pro} -{if $vcard.adr_pro[0].entreprise} -ORG:{$vcard.adr_pro[0].entreprise|vcard_enc} -{/if} -{if $vcard.adr_pro[0].poste} -TITLE:{$vcard.adr_pro[0].poste|vcard_enc} -{/if} -{if $vcard.adr_pro[0].fonction} -ROLE:{$vcard.adr_pro[0].fonction|vcard_enc} -{/if} -{if $vcard.adr_pro[0].tel} -TEL;TYPE=work:{$vcard.adr_pro[0].tel|vcard_enc} -{/if} -{if $vcard.adr_pro[0].fax} -FAX;TYPE=work:{$vcard.adr_pro[0].fax|vcard_enc} -{/if} -ADR;TYPE=work:{format_adr adr=$vcard.adr_pro[0]} -{/if} -{foreach item=adr from=$vcard.adr} -ADR;TYPE=home{if $adr.courier},postal{/if}:{format_adr adr=$adr} -{foreach item=tel from=$adr.tels} -{if $tel.tel} -{if $tel.tel_type neq 'Fax'}TEL{else}FAX{/if};TYPE=home:{$tel.tel} -{/if} -{/foreach} -{/foreach} -{if $vcard.web} -URL:{$vcard.web} -{/if} -{if strlen(trim($vcard.freetext)) == 0} -NOTE:(X{$vcard.promo}) -{else} -NOTE:(X{$vcard.promo})\n{$vcard.freetext|vcard_enc} -{/if} -{if $vcard.section} -X-SECTION:{$vcard.section} -{/if} -{if $vcard.binets_vcardjoin} -X-BINETS:{$vcard.binets_vcardjoin} -{/if} -{if $vcard.gpxs_vcardjoin} -X-GROUPS:{$vcard.gpxs_vcardjoin} -{/if} -{if $vcard.photo} -PHOTO;ENCODING=b;TYPE={$vcard.photo.attachmime}:{$vcard.photo.attach|base64_encode|vcard_enc} -{/if} -SORT-STRING:{$vcard.nom|vcard_enc} -REV:{$vcard.date|date_format:"%Y%m%dT000000Z"} -END:VCARD{"\n"} -{/iterate} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/core/wiki.help.tpl b/templates/core/wiki.help.tpl deleted file mode 100644 index 216c6d9..0000000 --- a/templates/core/wiki.help.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Syntaxe wiki

    - - - - {foreach from=$wiki_help key=syntax item=html} - - - - - {/foreach} -
    SyntaxeApparence
    {$syntax|nl2br}{$html|smarty:nodefaults}
    - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/core/wiki.tpl b/templates/core/wiki.tpl deleted file mode 100644 index 8a76fa3..0000000 --- a/templates/core/wiki.tpl +++ /dev/null @@ -1,64 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $canedit || $has_perms} - - - - {if $canedit} - - {/if} - {if $has_perms} - - - - - - - - {/if} - -
    - Voir la page - - Éditer la page - - Historique - - Upload -
    - - - - <-- Droits associés
    -{/if} - -{if $text} -{$pmwiki|smarty:nodefaults} -{else} -{include file=$pmwiki_cache} -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/alias.tpl b/templates/emails/alias.tpl deleted file mode 100644 index 929e443..0000000 --- a/templates/emails/alias.tpl +++ /dev/null @@ -1,139 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $success} -

    - La demande de création des alias {$success}@{#globals.mail.alias_dom#} et - {$success}@{#globals.mail.alias_dom2#} a bien été enregistrée. Après - vérification, tu recevras un mail te signalant l'ouverture de ces adresses. -

    -

    - Encore merci de nous faire confiance pour tes e-mails ! -

    -{else} -

    - Adresses e-mail personnalisées -

    - -{if $actuel} - {javascript name=ajax} - - - - - -
    - - - Ton alias est actuellement : {$actuel}. Il est pour l'instant - {if $mail_public}public et apparaît donc sur ta fiche.{else}privé et n'apparaît nulle part sur le site.{/if} -
    - -{else} -

    - Pour plus de convivialité dans l'utilisation de tes mails, tu peux choisir une adresse - e-mail discrète et personnalisée. Ce nouvel e-mail peut par exemple correspondre à ton surnom. -

    -{/if} - -

    - Pour de plus amples informations sur ce service, nous t'invitons à consulter - cette documentation qui répondra - sans doute à toutes tes questions. -

    - - {if $actuel} -

    - Note : tu as déjà l'alias {$actuel}, or tu ne peux avoir qu'un seul alias à la fois. - Si tu effectues une nouvelle demande l'ancien alias sera effacé. -

    - {/if} - - {if $demande} -

    - Note : tu as déjà effectué une demande pour {$demande->alias}, dont le traitement est - en cours. Si tu souhaites modifier ceci refais une demande, sinon ce n'est pas la peine. -

    - {/if} - -
    -
    - {xsrf_token_field} - - - - - - - - - - - - - - - - - - - - - - -
    Demande d'alias
    Alias demandé :
    @{#globals.mail.alias_dom#} et @{#globals.mail.alias_dom2#}
    - - - - - -
    - - - adresse publique (apparaît sur ta fiche). -
    -
    Brève explication :
    -
    - {if $actuel} -
    - {xsrf_token_field} - - - - - - - -
    Suppression d'alias
    - -
    -
    - {/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/antispam.tpl b/templates/emails/antispam.tpl deleted file mode 100644 index 9f27486..0000000 --- a/templates/emails/antispam.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include wiki=Xorg.Antispam part=1} - -{javascript name=ajax} - -
    - Choisis ton propre réglage : - - -
    - - -
    - - -
    - - -
    - -

    - -{include wiki=Xorg.Antispam part=2} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/broken.mail.tpl b/templates/emails/broken.mail.tpl deleted file mode 100644 index f94ceed..0000000 --- a/templates/emails/broken.mail.tpl +++ /dev/null @@ -1,60 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="emails_broken"} -{if $mail_part eq 'head'} -{from full=#from#} -{subject text=#subject#} -{elseif $mail_part eq 'text'} -Bonjour ! - - Nous t'écrivons car lors de l'envoi de la lettre d'information mensuelle -de Polytechnique.org à ton adresse polytechnicienne : - - {$x.alias}@{$globals->mail->domain}, - -l'adresse {$email}, sur laquelle tu rediriges ton courrier, ne fonctionnait pas. - - Estimant que cette information serait susceptible de t'intéresser, nous -avons préféré t'en informer. Il n'est pas impossible qu'il ne s'agisse que -d'une panne temporaire. Si tu souhaites changer la liste des adresses sur -lesquelles tu reçois le courrier qui t'es envoyé à ton adresse -polytechnicienne, il te suffit de te rendre sur la page : - - https://www.polytechnique.org/emails/redirect - - -À bientôt sur Polytechnique.org ! -L'équipe d'administration - ---------------------------------------------------------------------------- - - PS : si jamais tu ne disposes plus du mot de passe te permettant -d'accéder au site, rends toi sur la page - - https://www.polytechnique.org/recovery - -elle te permettra de créer un nouveau mot de passe après avoir rentré ton -login ({$x.alias}) et ta date de naissance !"; -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/broken.tpl b/templates/emails/broken.tpl deleted file mode 100644 index c3ee22d..0000000 --- a/templates/emails/broken.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Indiquer

    - -{if $neuneu} -

    Erreur !

    - -

    -Tu as entré une adresse @{#globals.mail.domain#}, @{#globals.mail.domain2#} ou @{#globals.mail.alias_dom#}, -ce qui est invalide. -

    - -

    -En effet, il faut nous donner l'adresse qui se cache derrière l'adresse polytechnicienne de ton -correspondant si tu veux que nous puissions te répondre. -

    -{elseif $x && $x.nb_mails} -

    Patte Cassée

    -

    - Ton correspondant a à l'heure actuelle {$x.nb_mails} adresse(s) email(s) de redirection active(s) - en dehors de celle que tu nous as communiquée. Cela ne veut pas forcément dire qu'il les avait - déjà activées lorsque tu as envoyé ton email, mais c'est fort probable. -

    -

    - Nous pensons qu'il serait une bonne idée de le prévenir que cette adresse email ne fonctionne plus. - Si tu veux que nous lui envoyions un mail automatique de ta part pour le prévenir, - clique sur ce lien. -

    -{elseif $x} -

    Patte Cassée

    -

    - Désolé, mais ton correspondant, {$x.prenom} {$x.nom} (X{$x.promo}), - n'a actuellement aucune adresse email de redirection - active autre que celle que tu viens de rentrer. - Nous t'invitons à prendre contact avec lui autrement que par email, - l'idéal étant de l'informer si possible que sa patte Polytechnique.org est cassée...! -

    -

    - Si tu connais une autre adresse email où le contacter, nous pouvons l'inviter à mettre à jour sa redirection - Polytechnique.org. Pour ceci il suffit que tu remplisses ce formulaire. -

    -{elseif $email} -

    - Désolé mais plus personne n'utilise l'adresse {$email} comme adresse de redirection. - Nous ne pouvons donc malheureusement te fournir aucune information... -

    -{/if} -
    -
    -
    - {xsrf_token_field} - - - - - - - - - - -
    Adresse email défectueuse
    -
    -
    - -{include wiki=Xorg.PatteCassee} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/duplicated.tpl b/templates/emails/duplicated.tpl deleted file mode 100644 index 3da2e30..0000000 --- a/templates/emails/duplicated.tpl +++ /dev/null @@ -1,135 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Gestion des adresses en doublon

    - -{if $action eq "list"} - - - - - - - - - - - - {foreach from=$table item=doublon} - - - - - - - {/foreach} -
    AdresseEtatUtilisateurs
    - Ajouter une entrée manuellement - - créer{icon name=add} -
    - {$doublon.mail}
    - Détecté le {$doublon.detection|date_format} -
    - {$doublon.state} - - {foreach from=$doublon.users item=user name=all} - {if $user} - {$user}{icon name=user_suit title="Fiche"} - {icon name=wrench title="Administrer}{if !$smarty.foreach.all.last}
    {/if} - {/if} - {/foreach} -
    - {icon name=page_edit title="Editer"} - {icon name=delete title="Supprimer"} -
    -{elseif $action eq "create" || $action eq "edit"} -[Retour à la liste des doublons]

    -
    -{xsrf_token_field} - - - - - - - {if $action eq "create"} - - {else} - - - {foreach from=$doublon.users key=i name=all item=user} - {if $user} - {if $i is even}{/if} - - {if $i is even && $smarty.foreach.all.last}{/if} - {if $i is odd || $smarty.foreach.all.last}{/if} - {/if} - {/foreach} - - - - {/if} - - - - - - - - {if $doublon.edit} - - - - {/if} - - - - - - - -
    Commenter le doublon
    Adresse mail - {icon name=email title="Envoyer un mail"} -  {$doublon.mail} - -
    - {$user}{icon name=user_suit title="Fiche"} - {icon name=wrench title="Administrer}{if !$smarty.foreach.all.last}
    {/if} -
    Date de détection{$doublon.detection|date_format}
    Danger - -
    Description
    - Dernière édition par {$doublon.edit} le {$doublon.last|date_format} -
    - -
    - - -
    -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/imap_register.tpl b/templates/emails/imap_register.tpl deleted file mode 100644 index cf29b4a..0000000 --- a/templates/emails/imap_register.tpl +++ /dev/null @@ -1,44 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $ok} -

    - {if $sexe}Chère{else}Cher{/if} {$prenom}, -

    - -

    -le stockage de secours de tes emails a été activé avec succès. Tu trouveras davantage d'informations à ce -sujet sur la page de documentation. -

    - -

    -Tu peux également modifier à tout moment ton abonnement à ce service en te rendant sur la page de -gestion de tes redirections. -

    -{else} -

    -Une erreur s'est produite lors de ton inscription au service de stockage de secours. N'hésite pas à nous signaler le -problème en écrivant à support@polytechnique.org. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/index.tpl b/templates/emails/index.tpl deleted file mode 100644 index d4d2159..0000000 --- a/templates/emails/index.tpl +++ /dev/null @@ -1,157 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Gestion de mes courriers électroniques

    - -{javascript name=ajax} -{literal} - -{/literal} - - - - - - - - - - -
    Mes adresses polytechniciennes à vie
    - Tes adresses polytechniciennes sont :

    -
    - {iterate from=$aliases item=a} - - {if $a.a_vie}(**){/if}{if $a.cent_ans}(*){/if} {$a.alias}@{#globals.mail.domain#} et @{#globals.mail.domain2#} - {if $a.expire}(expire le {$a.expire|date_format}){/if} -
    - {/iterate} -
    -
    -
    - L'adresse cochée est celle que tu utilises le plus (et qui sera donc affichée sur ta carte de visite, ta fiche, etc...). - Coche une autre case pour en changer ! -
    - (M4X signifie mail for X, son intérêt est de te doter d'une adresse à vie - moins "voyante" que l'adresse @{#globals.mail.domain#}). -
    - -

    -(*) cette adresse email t'est réservée pour une période 100 ans après ton entrée à l'X (dans ton cas, jusqu'en -{$smarty.session.promo+100}). -

    -

    -(**) cette adresse email t'est réservée à vie. -

    -

    -{if $homonyme} -Tu as un homonyme X donc tu ne peux pas profiter de l'alias {$homonyme}@{#globals.mail.domain#}. Si quelqu'un essaie -d'envoyer un mail à cette adresse par mégarde il recevra une réponse d'un robot lui expliquant l'ambiguité et lui -proposant les adresses des différents homonymes. -{else} -Si tu venais à avoir un homonyme X, l'alias prenom.nom@{#globals.mail.domain#} sera désactivé. Si bien que -ton homonyme et toi-même ne disposeraient plus que des adresses de la forme prenom.nom.promo@{#globals.mail.domain#}. -{/if} -

    - -
    - - - - - - - - -
    Où est-ce que je reçois le courrier qui m'y est adressé ?
    - {if count($mails) eq 0} -

    - Tu n'as actuellement aucune adressse de redirection. Tout courrier électronique qui t'es adresses - ci-dessus génère une erreur. Modifie au plus vite ta liste de redirection.
    -

    - {else} - Actuellement, tout courrier électronique qui t'y est adressé, est envoyé - {if count($mails) eq 1} à l'adresse{else} aux adresses{/if} : -
      - {foreach from=$mails item=m} -
    • {$m->display_email}
    • - {/foreach} -
    - {/if} - {test_email} - Si tu souhaites modifier ce reroutage de ton courrier, - il te suffit de te rendre ici ! -
    - -
    - - - - - - - - - -
    Antivirus, antispam
    - Tous les courriers qui te sont envoyés sur tes adresses polytechniciennes sont - filtrés par un logiciel antivirus très performant. Il te protège de ces - vers très gênants, qui se propagent souvent par le courrier électronique. - - De même, un service antispam évolué est en place. Tu peux lui demander - de te débarrasser des spams que tu reçois. Pour en savoir plus, et l'activer, - c'est très simple, suis ce lien ! -
    -
    - -
    - - - - - - - - - - - -
    Un alias sympathique : {#globals.mail.alias_dom#} !
    - Tu peux ouvrir en supplément une adresse synonyme de ton adresse @{#globals.mail.domain#}, - sur les domaines @{#globals.mail.alias_dom#} et @{#globals.mail.alias_dom2#} (melix = Mél X). -
    - {if $melix} - Tu disposes à l'heure actuelle de l'alias {$melix} - Pour demander à la place un autre alias @{#globals.mail.alias_dom#}, - il te suffit de te rendre ici. - {else} - A l'heure actuelle tu n'as pas activé d'adresse @{#globals.mail.alias_dom#}. - Si tu souhaites le faire, il te suffit de venir ici. - {/if} -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/lost.tpl b/templates/emails/lost.tpl deleted file mode 100644 index 1e12c51..0000000 --- a/templates/emails/lost.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Perdus de vue

    - -

    Ces {$lost_emails->total()} camarades n'ont pas ou plus d'adresse email valides

    - - - - - - {iterate from=$lost_emails item="looser"} - - - {/iterate} -
    Utilisateur
    - {$looser.alias} -
    diff --git a/templates/emails/redirect.tpl b/templates/emails/redirect.tpl deleted file mode 100644 index 3634ebf..0000000 --- a/templates/emails/redirect.tpl +++ /dev/null @@ -1,320 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $retour == $smarty.const.ERROR_INACTIVE_REDIRECTION} -

    - Tu ne peux pas avoir aucune adresse de redirection active, sinon ton adresse - {$smarty.session.forlife}@{#globals.mail.domain#} ne fonctionnerait plus. -

    -{/if} -{if $retour == $smarty.const.ERROR_INVALID_EMAIL} -

    - Erreur: l'email n'est pas valide. -

    -{/if} -{if $retour == $smarty.const.ERROR_LOOP_EMAIL} -

    - Erreur: {$smarty.session.forlife}@{#globals.mail.domain#} ne doit pas être renvoyé - vers lui-même, ni vers son équivalent en {#globals.mail.domain2#} ni vers polytechnique.edu. -

    -{/if} -

    - Tes adresses de redirection -

    -

    - Tu configures ici les adresses emails vers lesquelles tes adresses (listées ci-dessous) sont dirigées : -

    -
      - {if $melix} -
    • - {$melix}@{#globals.mail.alias_dom#}, - {$melix}@{#globals.mail.alias_dom2#} -
    • - {/if} - {foreach from=$alias item=a} -
    • - {$a.alias}@{#globals.mail.domain#} - {if $a.expire}(expire le {$a.expire|date_format}){/if} -
    • - {/foreach} -
    -

    - Le routage est en place pour les adresses dont la case "Actif" est cochée. - Si tu modifies souvent ton routage, tu as tout intérêt à rentrer toutes les - adresses qui sont susceptibles de recevoir ton routage, de sorte qu'en - jouant avec les cases "Actif" tu pourras facilement mettre en place les unes - ou bien les autres. -

    -

    - Enfin, la réécriture consiste à substituer à ton adresse email habituelle - (adresse gmail, orange, free, ou autre) ton adresse {#globals.mail.domain#} ou - {#globals.mail.domain2#} dans l'adresse d'expédition de tes messages, lorsque le courrier - passe par nos serveurs. Ceci arrive lorsque tu écris à un camarade sur son adresse {#globals.mail.domain#} ou - {#globals.mail.domain2#}, ou lorsque tu utilises notre - service d'envoi de courrier SMTP sécurisé. -

    - - {javascript name=ajax} - - {test_email} -

    -
    - - - - - - - - {foreach from=$emails item=e name=redirect} - - - - - - - {/foreach} - -
    RedirectionActifRéécriture 
    - - {if $e->broken}{assign var="erreur" value="1"}{/if} - {if $e->panne neq '0000-00-00'}{assign var="panne" value="1"}{icon name=error title="En panne"}{/if} - {$e->display_email} - {if $e->broken}{/if} - - - sufficient}class="active_email"{/if} - {if $e->active}checked="checked"{/if} - {if $smarty.foreach.redirect.total eq 1}disabled="disabled"{/if} - onchange="updateRedirect(this.checked, '{$e->email}')" /> - {if $e->has_rewrite()} - - {else} - pas de réécriture - {/if} - - {if $e->is_removable()} - - {icon name=cross title="Supprimer"} - - {else} - {if $e->sufficient}{/if} - {icon name=information title="Plus d'informations"} - {/if} -
    -
    -
    -  
    - Ajouter une adresse email : - -    - {xsrf_token_field} -
    -
    -
    - -
    -{if $panne} -

    - - {icon name=error title="En panne"} - Panne : - - les adresses marquées de cette icône sont des adresses de redirection pour lesquelles une panne - a été détectée. Si le problème persiste, la redirection vers ces adresses sera désactivée. -

    -{/if} -{if $erreur} -

    - - {icon name=error title="En panne"} - Panne durable : - - les adresses en rouge sont des adresses qui ont été désactivées en raison d'un grand nombre de pannes. Si tu penses que - le problème est résolu, tu peux les réactiver, mais l'adresse sera redésactivée si les problèmes persistent. -

    -{/if} -{if $smarty.session.mx_failures|@count} -
    - {icon name=error} Des problèmes sont actuellement recontrés sur tes redirections suivantes - {foreach from=$smarty.session.mx_failures item=mail} -
    - {$mail.mail} -
    {$mail.text}
    -
    - {/foreach} -
    -{/if} - -{if #globals.mailstorage.googleapps_active# or #globals.mailstorage.imap_active# or hasPerm('admin') or $googleapps} -

    Tes comptes de stockage de courrier

    -{/if} -{if #globals.mailstorage.imap_active# or hasPerm('admin')} -

    - Polytechnique.org te propose de conserver les mails que tu reçois, pendant une durée limitée (environ 30 jours). - Grâce à ce service, tu disposes d'une sauvegarde de tes mails en secours, au cas où, par exemple, tu effacerais - un mail par erreur.
    - Attention : il ne s'agit que d'un service de secours, dont la disponibilité n'est pas garantie. -

    - - - - - - - - - - - -
    Compte de stockage
    - - Accès de secours aux emails (IMAP) -
    Hébergé par Polytechnique.org -
    - Voir l'état de la redirection vers l'IMAP -
    -{/if} - -{if #globals.mailstorage.googleapps_active# or hasPerm('admin') or $googleapps} -
    -

    - Grâce à un partenariat avec Google, Polytechnique.org te propose également un compte - Google Apps, qui te permet de disposer des services Google (GMail pour - tes emails, Google Calendar, Google Docs, ...) sur une adresse polytechnique.org. -

    - - - - - - - - - {if $googleapps eq 'active'} - - - {else} - - {/if} - -
    Compte de stockage
    - - Compte Google Apps / Polytechnique.org -
    Hébergé par Google -
    - Ton compte Google Apps est actif.
    - Voir l'état de la redirection vers GMail -
    - {if $googleapps eq 'disabled'} - Ton compte Google Apps est actuellement inactif.
    - {else} - Tu n'as pas encore de compte Google Apps pour Polytechnique.org.
    - {/if} - Plus d'informations … -
    -{/if} - -{if $eleve} -

    Pour les Élèves (non encore diplômés)

    -

    - L'X te fournit aussi une adresse à vie en «prenom.nom»@polytechnique.edu qui par défaut est - une redirection vers «login»@poly.polytechnique.fr. - Tu peux modifier cette redirection et la faire pointer vers ton adresse - {$smarty.session.forlife}@{#globals.mail.domain#} (attention, cela demande de la concentration). -

    -

    - Si tu utilises le service POP de poly pour récupérer tes mails dans ton logiciel de courrier, - l'équipe de Polytechnique.org te conseille de rediriger : -

    -
      -
    • «prenom.nom»@polytechnique.edu vers {$smarty.session.forlife}@{#globals.mail.domain#} ;
    • -
    • {$smarty.session.forlife}@{#globals.mail.domain#} vers «login»@poly.polytechnique.fr.
    • -
    -

    - Attention à ne pas faire une boucle quand tu manipules tes redirections ! Tes emails seraient - alors perdus, jusqu'à ce que tu règles le problème. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/send.tpl b/templates/emails/send.tpl deleted file mode 100644 index 8b5cada..0000000 --- a/templates/emails/send.tpl +++ /dev/null @@ -1,315 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Envoyer un mail

    - - - -
    - {xsrf_token_field} - - - - - - - - - - - - - - - - - - - - - - - - {if $contacts|@count} - - - - - - - {/if} -
    Destinataires
    de : - - -
    à : - -
    copie : - -
    copie cachée : - -
    - • Les destinataires sont simplement séparés par des virgules.
    - • Pense à te mettre en copie cachée du mail pour en avoir une trace. -
    - Destinataires parmi tes contacts -
    -
    -
    - -
    -
    -
    - Destinataires
    - >> >>
    - << << -
    -
    - En copie
    - >> >>
    - << << -
    -
    -
    - -
    - {foreach item=contact from=$contacts} - - {/foreach} -
    -
    - Sujet :  -
    - Tu peux utiliser des {icon name=information title="Syntaxe wiki"} marqueurs wiki pour formatter ton texte.
    - - coche cette case pour envoyer le mail en texte brut, sans formattage -
    -
    - -
    - -
    -
    - - - {if $uploaded_f|@count} -
    - {icon name=email_attach} Pièce jointe :  - {$uploaded_f[0]} - - {icon name=cross alt="Supprimer" title="Supprimer la pièce jointe"} - -
    - {/if} -
    - {icon name=email_attach} Ajouter une pièce jointe (max. {$maxsize}) :  - -
    -
    - - -
    -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/submit_spam.tpl b/templates/emails/submit_spam.tpl deleted file mode 100644 index c14730f..0000000 --- a/templates/emails/submit_spam.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Soumettre un spam

    - -
    - {xsrf_token_field} - - - - - - - -
    - Soumettre un - - mal filtré. -
    - -
    - -

    - -

    -
    - -

    - Pour soumettre un (non-)spam mal détecté par notre antispam, il suffit d'enregistrer - les sources (regarde dans la documentation de ton client mail dans la liste ci-dessous) du mail en tant que fichier - depuis ton client mail, puis de soumettre ce fichier à l'interface ci-dessus en sélectionnant l'action adaptée : -

    -
      -
    • spam : pour soumettre un spam mal reconnu ;
    • -
    • nonspam : pour soumettre un mail légitime mal reconnu.
    • -
    - -{include wiki=Xorg.Mails part=clients} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/emails/test.mail.tpl b/templates/emails/test.mail.tpl deleted file mode 100644 index ba39165..0000000 --- a/templates/emails/test.mail.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="test_email"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=$email} -{subject text="Test de ton adresse `$email`"} -{elseif $mail_part eq 'wiki'} -{if $sexe}Chère{else}Cher{/if} {$prenom}, - -Tu reçois ce mail car tu as demandé la confirmation du bon fonctionnement de ton adresse polytechnicienne {$email}. -{if count($redirects) gt 1}Si toutes tes redirections fonctionnent correctement tu devrais recevoir une copie de ce mail -dans les boîtes suivantes : -{foreach from=$redirects item=mail} -* {$mail->display_email} -{/foreach} -{/if} - -Tu trouveras sur le site divers outils pour gérer ton adresse email : -* [[https://www.polytechnique.org/emails/redirect|La gestion de tes redirections]] -* [[https://www.polytechnique.org/emails/antispam|La gestion de ton antispam]] -* [[https://www.polytechnique.org/emails/send|Un formulaire pour envoyer des mails d'où que tu sois]] - -N'hésite pas à venir découvrir ou redécouvrir les services du site grâce au [[https://www.polytechnique.org/review|tour d'horizon]]. - -Merci encore de la confiance que tu portes à nos services. - --- \\ -Très Cordialement,\\ -L'Équipe de Polytechnique.org -{/if} - -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/events/admin.tpl b/templates/events/admin.tpl deleted file mode 100644 index 8584e48..0000000 --- a/templates/events/admin.tpl +++ /dev/null @@ -1,95 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    - Gestion des événements : - [  - {if $arch || $action eq 'edit'} - Actualités - {else} - Actualités - {/if} -  |  - {if !$arch || $action eq 'edit'} - Archives - {else} - Archives - {/if} -  ] -

    - -{if $action eq 'edit'} - -{include file="events/form.tpl"} - -{else} - - - - - - - - {iterate from=$evs item=ev} - {cycle values="impair,pair" assign=class} - - - - - - {if $ev.preview} - - - - {/if} - {/iterate} -
    TitrePéremption
    - - {if !$ev.fvalide}{/if} - {$ev.titre}
    - {if !$ev.fvalide}
    {/if} - - Proposée par {$ev.prenom} {$ev.nom} (X{$ev.promo}) - -
    {if !$ev.fvalide}{/if}{$ev.peremption}{if !$ev.fvalide}{/if} - {if $arch} - {icon name=package_delete title="Désarchiver"}
    - {else} - {if $ev.fvalide} - {icon name=thumb_down title="Invalider"} - {icon name=package_add title="Archiver"}
    - {else} - {icon name=thumb_up title="Valider"}
    - {/if} - {/if} - {icon name=page_edit title="Editer"} - {icon name=delete title="Supprimer"} -
    - {$ev.texte|smarty:nodefaults|nl2br} -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/admin_tips.tpl b/templates/events/admin_tips.tpl deleted file mode 100644 index feb1e81..0000000 --- a/templates/events/admin_tips.tpl +++ /dev/null @@ -1,27 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Aperçu de l'astuce

    -{include file="include/tips.tpl" full=true tips=$entry nochange=true} -{include file="core/table-editor.tpl"} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/form.tpl b/templates/events/form.tpl deleted file mode 100644 index 5a224d0..0000000 --- a/templates/events/form.tpl +++ /dev/null @@ -1,194 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $smarty.request.texte} -{assign var=texte value=$smarty.request.texte|smarty:nodefaults} -{/if} -{if $smarty.request.titre} -{assign var=titre value=$smarty.request.titre|smarty:nodefaults} -{/if} -{if $smarty.request.promo_min} -{assign var=promo_min value=$smarty.request.promo_min|smarty:nodefaults} -{/if} -{if $smarty.request.promo_max} -{assign var=promo_max value=$smarty.request.promo_max|smarty:nodefaults} -{/if} -{if $smarty.request.peremption} -{assign var=peremption value=$smarty.request.peremption|smarty:nodefaults} -{/if} -{if $smarty.request.important} -{assign var=important value=$smarty.request.important|smarty:nodefaults} -{/if} - - - -
    -{include file="events/preview.tpl"} -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    Contenu de l'annonce
    Titre - -
    Texte - -
    - - {icon name=information title="Syntaxe wiki"} Voir la syntaxe wiki autorisée pour le texte de l'annonce - -
    - - Essaie de faire un texte court, une annonce ne doit pas excéder 800 caractères soit une douzaine de ligne. Tu en es déjà à caractères. - -
    Illustration - {if $eid && $img} -
    - Image actuelle
    - Image actuelle
    - -
    - {/if} - {if $upload && $upload->exists()} -
    - Nouvelle image
    - Nouvelle Image
    - -
    - {/if} -
    - Choisir un fichier :
    - Indiquer une adresse : -
    -
    - -
    - -
    -

    - Le bouton de confirmation n'apparaît que si l'aperçu est concluant. -

    -

    - N'oublie pas de remplir les informations suivantes : -

    - - - - - - - - - {include file="include/field.promo.tpl"} - - - - - - - - {if $admin_evts} - - - - - {/if} -
    Informations complémentaires
    - Tu peux limiter la visibilité de ton annonce aux camarades de certaines promotions : -
    - Choisis la date d'expiration de ton annonce : -
    - Dernier jour d'affichage - - {valid_date name="peremption" value=$peremption to=60} -
    - Importance - - Marquer cette annonce comme très importante -
    - -
    - - -
    - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/index.tpl b/templates/events/index.tpl deleted file mode 100644 index 9ecbe18..0000000 --- a/templates/events/index.tpl +++ /dev/null @@ -1,260 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $ask_naissance} - -{include file='include/form_naissance.tpl'} - -{else} - -

    -Bienvenue {$smarty.session.prenom}{if $birthday} -  et joyeux anniversaire de la part de toute l'équipe ! -{else}, -{/if} -

    - -{if $smarty.session.host} -
    - {if $birthday}T{else}t{/if}a connexion précédente date du - {$smarty.session.lastlogin|date_format:"%x, %X"} - depuis la machine {$smarty.session.host}. -
    -{/if} - -{if $smarty.session.no_redirect} -

    - Tu n'as plus de redirection valide ce qui rend ton adresse Polytechnique.org - inutilisable. Rends-toi au plus vite sur la page de - gestion des emails pour corriger ce problème. -

    -{/if} - -{if $smarty.session.mx_failures|@count} -
    - {icon name=error} Des problèmes sont actuellement recontrés sur tes redirections suivantes - {foreach from=$smarty.session.mx_failures item=mail} -
    - {$mail.mail} -
    {$mail.text}
    -
    - {/foreach} - -
    -{/if} - -{if $fiche_incitation} -

    La dernière mise à jour de ta - fiche - date du {$fiche_incitation|date_format}. - Il est possible qu'elle ne soit pas à jour. - Si tu souhaites la modifier, clique ici ! -

    -{/if} - -{if $photo_incitation} -

    - Tu n'as pas mis de photo de toi sur ta fiche, c'est dommage. - Clique ici si tu souhaites en ajouter une. -

    -{/if} - -{if $geoloc_incitation > 0} -

    - Parmi tes adresses, il y en a {$geoloc_incitation} que nous n'avons pas pu localiser. - Clique ici pour rectifier. -

    -{/if} - -{include file="include/tips.tpl" full=true} - - - {foreach from=$events name=events key=category item=evenement} - - - - {foreach item=ev from=$evenement} - - - - {assign var="has_evts" value=true} - {/foreach} - {/foreach} - {if !$has_evts} - - - - {/if} - - - - - {foreach from=$events key=category item=evenement} - {foreach item=ev from=$evenement} - {if $ev.nonlu} -
    -
    - - - - - - {cycle values="left,right" assign=position} - - - - - - -
    -
    - {if $category eq 'important'} - {icon name=error title="Important"} - {elseif $category eq 'news'} - {icon name=bell title="Nouvelle annonce"} - {elseif $category eq 'end'} - {icon name=clock title="Bientôt fini"} - {else} - {icon name=magnifier title="Annonce"} - {/if} -
    - - {assign var="previd" value=$ev.id} - - {tidy} - {$ev.titre|nl2br} - {/tidy} -
    -
    - {if $ev.img} -
    - {$ev.title} -
    - {/if} -
    - {if !$ev.wiki} - {$ev.texte|smarty:nodefaults|nl2br} - {else} - {$ev.texte|miniwiki|smarty:nodefaults} - {/if} -
    -
    -
    - - Annonce proposée par - - {$ev.prenom} {$ev.nom} X{$ev.promo} - -
    -
    - {/if} - {/foreach} - {/foreach} - -

    - Nota Bene : les informations présentées ici n'engagent que leurs auteurs - respectifs et sont publiées à leur initiative. L'association Polytechnique.org - ne pourrait en aucun cas être tenue responsable de la nature des propos relatés - sur cet espace d'expression et d'information. Elle se réserve le droit de - refuser ou de retirer toute information de nature diffamante ou pouvant être - interprétée comme polémique par un membre de la communauté polytechnicienne. -

    - -

    - {icon name=page_edit}  - Proposer une information événementielle • - Proposer un article pour la Lettre mensuelle -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/preview.tpl b/templates/events/preview.tpl deleted file mode 100644 index 465d757..0000000 --- a/templates/events/preview.tpl +++ /dev/null @@ -1,30 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if trim($titre) || trim($texte)} - - - -
    Aperçu de : {$titre|nl2br}
    {$texte|miniwiki|smarty:nodefaults}
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/rss.tpl b/templates/events/rss.tpl deleted file mode 100644 index e54037f..0000000 --- a/templates/events/rss.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - {#globals.core.sitename#} :: News - fr - {#globals.baseurl#}/ - L'actualite polytechnicienne... - - {#globals.core.sitename#} - {#globals.baseurl#}/images/logo.png - {#globals.baseurl#}/ - - {iterate item=line from=$rss} - - {$line.titre|strip_tags} - {$line.id} - {#globals.baseurl#}/events#newsid{$line.id} - - {$line.title} - - {/if} -
    {if $line.wiki}{$line.texte|miniwiki}{else}{$line.texte}{/if}
    - {if $line.post_id neq -1} - - {/if} - ]]>
    - {$line.prenom} {$line.nom} (X{$line.promo}) - {$line.creation_date|rss_date} -
    - {/iterate} -
    -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/events/submit.tpl b/templates/events/submit.tpl deleted file mode 100644 index 54df094..0000000 --- a/templates/events/submit.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Proposition d'information événementielle

    - -{if $ok} -

    -Ta proposition a bien été enregistrée, un administrateur va se charger de la valider aussi rapidement que possible. -

    -

    -Merci pour ta contribution à la vie du site! -

    -

    -Retour à la page d'accueil -

    -{else} - -{include file="events/form.tpl"} - -{include wiki=Xorg.Annonce} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/forums/admin.tpl b/templates/forums/admin.tpl deleted file mode 100644 index f58fdf2..0000000 --- a/templates/forums/admin.tpl +++ /dev/null @@ -1,57 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -Le tableau suivant permet de gérer la mise au ban (le bannissement) de certains utilisateurs aux forums. - -Chaque ligne permet de gérer les accès limités à : -
      -
    • une plage d'adresses IP donnée (entre ipmin et ipmax),
    • -
    • à tout le monde (uid=0) ou seulement à un utilisateur donné,
    • -
    • en restreignant l'accès en lecture à un ensemble de forums décrits par un masque,
    • -
    • en restreignant l'accès en écriture à un ensemble de forums décrits par un masque.
    • -
    - -

    -Dans les masques le * remplace n'importe quel texte et le ! bloque l'accès au lieu de l'autoriser. Par exemple : xorg.*,!xorg.prive.* autorise tous les forums xorg sauf ceux qui s'appellent xorg.prive.qqchose. -

    - -

    -Les différentes règles sont appliquées par ordre de priorité décroissante. -

    - -{include file="core/table-editor.tpl"} - -{literal} - -{/literal} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} - diff --git a/templates/gadgets/ig-events.tpl b/templates/gadgets/ig-events.tpl deleted file mode 100644 index b6ab0c6..0000000 --- a/templates/gadgets/ig-events.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    - -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-events.xml.tpl b/templates/gadgets/ig-events.xml.tpl deleted file mode 100644 index f077f08..0000000 --- a/templates/gadgets/ig-events.xml.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-login.tpl b/templates/gadgets/ig-login.tpl deleted file mode 100644 index 6a0d9d7..0000000 --- a/templates/gadgets/ig-login.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - Polytechnique.org -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-minifiche.tpl b/templates/gadgets/ig-minifiche.tpl deleted file mode 100644 index 244fda4..0000000 --- a/templates/gadgets/ig-minifiche.tpl +++ /dev/null @@ -1,82 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if !$c.inscrit || $c.dcd}
    {/if} -
    - -
    - {if $c.iso3166} - {$c.nat}  - {/if} - (X {$c.promo}) - {if $c.dcd}décédé{if $c.sexe}e{/if} le {$c.deces|date_format}{/if} - {if $smarty.session.auth ge AUTH_COOKIE} - {if !$c.wasinscrit && !$c.dcd} - {if $show_action eq ajouter} - {* - *}{icon name=add title="Ajouter à la liste de mes surveillances"} - {else} - {* - *}{icon name=cross title="Retirer de la liste de mes surveillances"} - {/if} - {elseif $c.wasinscrit && !$c.dcd} - {* - *}{icon name=vcard title="Afficher la carte de visite"} - {if $show_action eq ajouter} - {* - *}{icon name=add title="Ajouter à mes contacts"} - {else} - {* - *}{icon name=cross title="Retirer de mes contacts"} - {/if} - {/if} - {/if} -
    -
    - {if $c.wasinscrit} - {if $c.mobile || $c.countrytxt || $c.city} - - {if $c.countrytxt || $c.city} - - - - - {/if} - {if $c.mobile && !$c.dcd} - - - - - {/if} -
    Géographie:{$c.city}{if $c.city && $c.countrytxt}, {/if}{$c.countrytxt}
    Mobile:{$c.mobile}
    - {/if} - {/if} -
    -
    -{if !$c.inscrit || $c.dcd}
    {/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-search.tpl b/templates/gadgets/ig-search.tpl deleted file mode 100644 index 67fdd83..0000000 --- a/templates/gadgets/ig-search.tpl +++ /dev/null @@ -1,56 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $error} -
    {$error}
    -{elseif $set} -
    -{iterate from=$set item=res} - {if $res.contact} - {include file="gadgets/ig-minifiche.tpl" c=$res show_action="retirer"} - {else} - {include file="gadgets/ig-minifiche.tpl" c=$res show_action="ajouter"} - {/if} -{/iterate} -
    - -{else} -
    - Logo Polytechnique.org -
    -{/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-search.xml.tpl b/templates/gadgets/ig-search.xml.tpl deleted file mode 100644 index ae4eae4..0000000 --- a/templates/gadgets/ig-search.xml.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/gadgets/ig-skin.tpl b/templates/gadgets/ig-skin.tpl deleted file mode 100644 index 050c14c..0000000 --- a/templates/gadgets/ig-skin.tpl +++ /dev/null @@ -1,41 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="skin/common.doctype.tpl"} - - - - - - - - {foreach from=$gadget_js item=js} - - {/foreach} - - - -{if $gadget_tpl}{include file=$gadget_tpl}{/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/address.tpl b/templates/geoloc/address.tpl deleted file mode 100644 index 07a227a..0000000 --- a/templates/geoloc/address.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{display_address adr=$address titre=$titre titre_div=$titre_div no_div=$no_div for=$for pos=$pos} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/admin.tpl b/templates/geoloc/admin.tpl deleted file mode 100644 index 70b4a8d..0000000 --- a/templates/geoloc/admin.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Geoloc

    - -

    Synchroniser des villes avec geoloc.org

    - -{if $nb_missinglat} -

    [toutes les villes sans coordonnées ({$nb_missinglat})]

    -{/if} - -
    -

    -La ville dont l'id est : -

    -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/admin_dynamap.tpl b/templates/geoloc/admin_dynamap.tpl deleted file mode 100644 index a16a54e..0000000 --- a/templates/geoloc/admin_dynamap.tpl +++ /dev/null @@ -1,64 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Administration de la dynamap -

    - -

    - Utiliser de nouvelles cartes -

    -
    -

    - -
    - -

    -
    - -

    - Placement des villes sur les cartes -

    -{if $nb_cities_not_on_map} -

    - Il y a {$nb_cities_not_on_map} villes qui ne sont pas placées dans les cartes. - [Réparer] -

    -{else} -

    Toutes les villes de la base sont placées dans des cartes.

    -{/if} -{if $no_smallest} -

    - Il faut définir la plus petite carte - pour chaque ville (à ne faire qu'une fois quand on a placé toutes les villes). -

    -{/if} -{if $no_coordinates} -

    - Placement précis des adresses -

    -

    - {$no_coordinates} adresses n'ont pas été bien reconnues précisément. - [Mettre les coordonnées du centre de la ville] -

    -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/city.tpl b/templates/geoloc/city.tpl deleted file mode 100644 index 03395e6..0000000 --- a/templates/geoloc/city.tpl +++ /dev/null @@ -1,27 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} - - - {assign var="beginning" value=true} - {assign var="nb_displayed" value=0} - {iterate from=$users item="user"}{if !$beginning}
    {/if}{if $nb_displayed < 10}{$user.prenom} {$user.nom|strtolower|ucwords} - {$user.promo}{else}...{/if}{assign var="nb_displayed" value=$nb_displayed+1}{assign var="beginning" value=false}{/iterate} -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/country.tpl b/templates/geoloc/country.tpl deleted file mode 100644 index 6debb08..0000000 --- a/templates/geoloc/country.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - {foreach from=$countries item="country"} - - - - - {if $country.nbPop > 0 or $country.id eq 0} - - - - {/if} - - {/foreach} - - - {foreach from=$cities item="city"} - - - - - {/foreach} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/form.address.tpl b/templates/geoloc/form.address.tpl deleted file mode 100644 index 63389f7..0000000 --- a/templates/geoloc/form.address.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $adr.geoloc} -
    - La geolocalisation n'a pas donné un résultat certain, valide la nouvelle adresse - ou modifie l'ancienne pour que ton adresse puisse être prise en compte. -
    - -{/if} -
    - -{if $adr.geoloc} - - - - - -
    - - - - - - - - - - - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/geoloc/geoloc.mail.tpl b/templates/geoloc/geoloc.mail.tpl deleted file mode 100644 index 64a1c2e..0000000 --- a/templates/geoloc/geoloc.mail.tpl +++ /dev/null @@ -1,42 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="geoloc_error"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=#to#} -{subject text="Adresse impossible à geolocaliser"} -{elseif $mail_part eq 'wiki'} -Un camarade {$smarty.session.forlife} a forcé l'utilisation de l'adresse entrée -à la main et a refusé la version geolocalisée : - -'''Version utilisateur (validée) :'''\\ -{$text|replace:"\n":"\\\\\n"} - -'''Version geoloc (refusée) :'''\\ -{$geoloc|replace:"\n":"\\\\\n"} - --- \\ -Webmaster de Polytechnique.org -{/if} - -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/geoloc/init.tpl b/templates/geoloc/init.tpl deleted file mode 100644 index f7d88fc..0000000 --- a/templates/geoloc/init.tpl +++ /dev/null @@ -1,59 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/googleapps/admin.job.tpl b/templates/googleapps/admin.job.tpl deleted file mode 100644 index 56638c9..0000000 --- a/templates/googleapps/admin.job.tpl +++ /dev/null @@ -1,86 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Requête de la queue Google Apps

    - -{if $job} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Queue id: {$job.q_id}
    Propriétaire{if $job.q_owner}{$job.q_owner}{else}none{/if}
    Destinataire{if $job.q_recipient}{$job.q_recipient}{else}none{/if}
    Statut{$job.p_status}
    Priorité{$job.p_priority}
    Requête administrateur ?{if $job.p_admin_request}oui{else}non{/if}
    Entrée dans la queue{$job.p_entry_date}
    Date d'activation{$job.p_notbefore_date}
    Début de traitement{if $job.p_start_date}{$job.p_start_date}{else}none{/if}
    Fin de traitement{if $job.p_end_date}{$job.p_end_date}{else}none{/if}
    Erreurs récupérables{$job.r_softfail_count}
    Dernière erreur récupérable{if $job.r_softfail_date}{$job.r_softfail_date}{else}none{/if}
    Résultat du traitement{if $job.r_result}{$job.r_result}{else}none{/if}
    Type de requête{$job.j_type}
    Paramètres
    {$job.decoded_parameters}
    -{else} -

    Aucune requête n'a été trouvée.

    -{/if} - -

    Retourner à la page d'administration de Google Apps.

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/googleapps/admin.tpl b/templates/googleapps/admin.tpl deleted file mode 100644 index 8b6331b..0000000 --- a/templates/googleapps/admin.tpl +++ /dev/null @@ -1,110 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Gestion des utilisateurs

    - -
    - - - - - - - - - - -
    Administrer un utilisateur (Google Apps)
    -
    - -

    Queue de requêtes vers Google Apps

    - -

    - Requête nécessitant l'intervention manuelle - d'un administrateur Google Apps {if $googleapps_admin}(tu en es un){/if} : -

    - - - - - - - - - {foreach from=$admin_requests item=r} - - - - - - - - {/foreach} -
    qiddaterecipienttypeparameters
    {$r.q_id}{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}{if $r.alias}{$r.alias}{else}-{/if}{$r.j_type}{$r.parameters}
    - -

    - Requêtes ayant échoué récemment (plus d'information dans la documentation) : -

    - - - - - - - - - - {iterate from=$failed_requests item=r} - - - - - - - - - {/iterate} -
    qiddaterecipienttypereason
    {$r.q_id}{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}{if $r.alias}{$r.alias}{else}-{/if}{$r.j_type}{$r.r_result}{icon name=cross title="Retirer cet échec"}
    - -

    Statistiques d'utilisation de Google Apps

    - -
    - Activité Google Apps - 1 mois -
    Utilisation des comptes Google Apps sur les 31 derniers jours. -
    - -
    - Activité Google Apps - 1 an -
    Utilisation disque des comptes sur les 12 derniers mois. -
    - -
    - Utilisation disque - 1 mois -
    Utilisation des comptes Google Apps sur les 31 derniers jours. -
    - -
    - Utilisation disque - 1 an -
    Utilisation disque des comptes sur les 12 derniers mois. -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/googleapps/admin.user.tpl b/templates/googleapps/admin.user.tpl deleted file mode 100644 index 1500aee..0000000 --- a/templates/googleapps/admin.user.tpl +++ /dev/null @@ -1,105 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Compte Google Apps

    - -{if $account} -{assign var=a value=$account} - - - - - - - - - - - - {if $a->suspended()} - - - - {/if} - - - - - - - - - - - - - - - - - - - - -
    -
    - Compte = {$a->g_account_name} -
    -
    - Google id = {$a->g_account_id}
    - Plat/al id = {$user} -
    -
    Statut du compte - {$a->g_status} - {if $admin_account}
    Compte administrateur de Google Apps{/if} -
    Raison de suspension{$a->g_suspension}
    Mots de passes synchronisés - {if $a->sync_password} - oui (lancer une synchronisation) - {else}non{/if} -
    Redirection des mails{if $googleapps_storage}activée{else}désactivee{/if}
    Date de création{$a->r_creation|date_format:"%Y-%m-%d"}
    Dernière connexion{$a->r_last_login|date_format:"%Y-%m-%d"}
    Dernière utilisation du webmail{$a->r_last_webmail|date_format:"%Y-%m-%d"}
    Utilisation du quota mail{$a->r_disk_usage/1024/1024|string_format:"%.2f"}MB

    - - - - - - - - - - - - {iterate from=$requests item=r} - - - - - - - {/iterate} -
    Requêtes en attente
    qiddatestatuttype
    {$r.q_id}{$r.p_entry_date|date_format:"%Y-%m-%d %H:%M"}{$r.p_status}{$r.j_type}
    -{else} -

    Aucun utilisateur n'a été trouvé.

    -{/if} - -

    Retourner à la page d'administration de Google Apps.

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/googleapps/create.mail.tpl b/templates/googleapps/create.mail.tpl deleted file mode 100644 index 9c73203..0000000 --- a/templates/googleapps/create.mail.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="googleapps"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=$email} -{cc full=#cc#} -{subject text="[Polytechnique.org] Création de ton compte Google Apps"} -{elseif $mail_part eq 'wiki'} -{if $sexe}Chère{else}Cher{/if} {$prenom}, - -Ton compte Google Apps pour Polytechnique.org vient d'être crée. - -Tu peux accèder aux services offerts par Google Apps aux adresses suivantes: -* [[http://google.polytechnique.org/|iGoogle, le portail des services Google Apps]] ; -{if $account->activate_mail_redirection} -* [[https://mail.google.com/a/{$googleapps_domain}/|GMail, pour accéder à tes emails Polytechnique.org]] ; -{/if} -* [[https://www.polytechnique.org/googleapps|Polytechnique.org, pour modifier les préférences de ton compte Google Apps]]. - -Ton nom d'utilisateur pour ces services Google est '''{$account->g_account_name}''' -{if $account->sync_password} -et ton mot de passe est celui de Polytechnique.org. -{else} -et ton mot de passe est celui que tu as choisi lors de ta demande de compte. -{/if} - -Tu trouveras plus d'informations dans la [[https://www.polytechnique.org/Xorg/GoogleApps|documentation]] sur Polytechnique.org. - -Cordialement,\\ --- \\ -L'équipe de Polytechnique.org -{/if} - -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/googleapps/index.tpl b/templates/googleapps/index.tpl deleted file mode 100644 index aa7236c..0000000 --- a/templates/googleapps/index.tpl +++ /dev/null @@ -1,426 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Ton compte Google Apps pour Polytechnique.org

    - -

    Polytechnique.org te fournit un compte Google Apps qui te permet de disposer - des applications web de Google (GMail, - Google Calendar, - Google Docs, et bien d'autres) - sur ton adresse Polytechnique.org habituelle (en savoir plus). -

    - -{if !$account->g_status} -{if !$has_password_sync} -

    Tu peux créer ce compte indépendant Google Apps pour Polytechnique.org en utilisant le - formulaire ci-dessous. -

    -

    Attention : ce compte Google Apps est hébergé par Google, et non - par Polytechnique.org. Nous te déconseillons d'y conserver des informations - confidentielles ou sensibles !
      -

    -{/if} - - - - - - - - - {if !$has_password_sync} - - - - - - - - - - - - - - - - - {else} - - - - {if $password_sync} - - - - - {else} - - - - - - - - - - - - {/if} - - - {xsrf_token_field} - - - - - - - - - - - - - - - - - - - - - - - - - - - {/if} -
    Création de ton compte Google Apps
    Mot de passe du compte :
    - - -
    - - Les futurs changements de ton mot de passe seront répercutés sur ton compte Google Apps. -
    - - Réglage recommandé par Polytechnique.org. - -
    - - - -
    - -
    Mot de passe du compte :
    - Tu as choisi d'avoir le même mot de passe pour Google Apps et Polytechnique.org.
    - Tu peux encore choisir d'utiliser des mots de passe différents. -
    Tu as choisi d'avoir un nouveau mot de passe pour ton compte Google Apps :
    -
    - - - - - - - - - - - - - -
    Nouveau mot de passe
    Vérification
    Sécurité{checkpasswd prompt="nouveau" submit="create_account"}
    -
    -
    - Tu peux encore choisir d'avoir des mots de passes synchronisés. -
    Redirection des emails :
    - - -
    - - Tes Polytechnique.org seront redirigés vers ton nouveau webmail, en plus de tes redirections actuelles.

    - Attention : ton compte Google Apps est hébergé par Google.
    - Si tu utilises tes adresses Polytechnique.org pour des communications confidentielles ou dans un cadre professionnel, - nous te déconseillons donc de rediriger tes emails vers Google Apps. -
    -
    - ou -
    - - -
    - - Tu ne pourras pas lire tes emails dans ton nouveau webmail Google Apps.
    - Ce réglage n'est pas recommandé par Polytechnique.org. -
    -
    Création du compte :
    La mise en place du compte Google Apps prends quelques minutes. Tu recevras un email explicatif dès l'opération terminée.
    - - {if $password_sync} - - {else} - - - {/if} -
    - -{elseif $account->g_status eq 'unprovisioned' or $account->pending_create} -
    - - - - - - - -
    État de ton compte
    - Ton compte Google Apps est en cours de création.
    - Tu recevras un email dès que l'opération sera terminée. -
    - -{elseif $account->pending_delete} -
    - - - - - - - -
    État de ton compte
    - Ton compte Google Apps est en cours de suppression. -
    - -{elseif $account->suspended() or $account->pending_update_suspension} -
    - - - - - - - - {if $account->pending_validation_unsuspend or ($account->suspended() and $account->pending_update_suspension)} - - - - {elseif !$account->suspended() and $account->pending_update_suspension} - - - - {else} - {if $account->g_suspension} - - - - {/if} - - - - {/if} -
    État de ton compte
    - Ton compte Google Apps est actuellement désactivé. Tu ne reçois donc plus aucun - message sur ce compte. -
    - La réactivation de ton compte est en attente de validation.
    - Tu recevras un email dès que l'opération sera terminée. -
    - Les opérations de désactivation de ton compte Google Apps ne sont pas terminées, tu ne peux donc pas encore demander sa réactivation. -
    - Ton compte est actuellement suspendu pour la raison suivante: {$account->g_suspension}. -
    - La réactivation de ton compte est soumise à une validation manuelle par un administrateur de Polytechnique.org. - Ton compte réactivé contiendra toutes tes anciennes données. -

    -
    -
    - - -
    -
    -
    - - -
    -

    - Tu pourras toujours changer la redirection de tes emails plus tard. -
    - -{else} -

    Tu peux utiliser ces services :

    - - - - - - - - - - {if $account->reporting_date and $account->r_disk_usage} - - - - {/if} - - {if $redirect_active and $redirect_unique} - - {else} - - {/if} - -
    État de ton compte
    Ton compte {$account->g_account_name} existe{if $account->r_creation} depuis le {$account->r_creation|date_format:"%d/%m/%Y"}{/if}.
    Au {$account->reporting_date|date_format:"%d %B %Y"}, tu avais {$account->r_disk_usage/1024/1024|string_format:"%.1f"} Mo de mails.
    - Ta seule adresse de redirection de tes mails est celle de ton compte Google Apps.
    - Si tu souhaites désactiver celui-ci, tu dois d'abord ajouter une nouvelle adresse de redirection. -
    - Si tu ne souhaites plus utiliser ton compte, tu peux le désactiver :

    -
    -
    - {xsrf_token_field} - -
    -
    -
    - {icon name=error} Une fois ton compte désactivé, tu ne pourras plus accéder à tes mails sur Google Apps.
    - {icon name=information} La réactivation est possible, mais nécessite d'être validée par un administrateur. -
    -
    -
    - - - - - - {if $account->sync_password} - - - - - {if $account->pending_update_password} - - - - {else} - - - - {/if} - {else} - - - - - {if $account->pending_update_password} - - - - {else} - - - - {/if} - {/if} -
    Ton mot de passe Google Apps
    - Le mot de passe de ton compte Google Apps est actuellement celui que tu utilises pour - Polytechnique.org. Tu peux : -
    - Ton mot de passe est en cours de changement.
    - Tu pourras à nouveau le modifier d'ici quelques secondes. -
    - -
    - Tu as actuellement deux mots de passes indépendants (pour ton compte Polytechnique.org et pour ton compte Google Apps). - Tu peux : -
    - Ton mot de passe est en cours de changement.
    - Tu pourras à nouveau le modifier d'ici quelques secondes. -
    -
      -
    • - Choisir d'utiliser le même mot de passe pour les deux comptes.
      - Attention, cette opération changera ton mot de passe Google Apps. -
    • -
    • - Changer le mot de passe de ton compte Google Apps:

      -
      - - - - - - - - - - - - - - - - - -
      Nouveau mot de passe
      Vérification
      Sécurité{checkpasswd prompt="nouveau" submit="create_account"}
      -
      -
      - {xsrf_token_field} - -

      - Pour une sécurité optimale, ton mot de passe circule de manière sécurisée (https). - Il est chiffré irréversiblement sur nos serveurs, ainsi que sur ceux de Google. -
    • -
    -
    -
    - - - - - - - - {if $redirect_active and !$redirect_unique} - - {elseif $redirect_active} - - {else} - - {/if} - - - - -
    Redirection des emails vers Google Apps
    Tes emails Polytechnique.org sont redirigés vers Google Apps, en plus de tes autres redirections.Tes emails Polytechnique.org ne sont redirigés que vers Google Apps.Tu ne reçois pas tes emails Polytechnique.org sur ton webmail Google Apps.
    Changer mes redirections mail
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/googleapps/unsuspend.mail.tpl b/templates/googleapps/unsuspend.mail.tpl deleted file mode 100644 index f5cfa0d..0000000 --- a/templates/googleapps/unsuspend.mail.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="googleapps"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=$email} -{cc full=#cc#} -{subject text="[Polytechnique.org] Réactivation de ton compte Google Apps"} -{elseif $mail_part eq 'wiki'} -{if $sexe}Chère{else}Cher{/if} {$prenom}, - -Ton compte Google Apps pour Polytechnique.org vient d'être réactivé.\\ -Ton nom d'utilisateur pour ces services Google est '''{$account->g_account_name}''' -{if $account->sync_password} -et ton mot de passe est celui de Polytechnique.org. -{else} -et ton mot de passe est celui que tu as choisi lors de ta demande de compte. -{/if} - -Tu trouvera plus d'information dans la [[https://www.polytechnique.org/Xorg/GoogleApps|documentation]] sur Polytechnique.org. - -Cordialement,\\ --- \\ -L'équipe de Polytechnique.org -{/if} - -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/include/csv-importer.tpl b/templates/include/csv-importer.tpl deleted file mode 100644 index 0660a2c..0000000 --- a/templates/include/csv-importer.tpl +++ /dev/null @@ -1,243 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $form_title} -

    {$form_title}

    -{/if} - - -
    - {xsrf_token_field} -
    - Import d'un CSV : - {if $csv_page eq 'source'} - Choisir la source - {else} - Choisir la source - {/if} - » - {if $csv_page eq 'values'} - Définir les valeurs - {elseif $smarty.session.csv} - Définir les valeurs - {else} - Définir les valeurs - {/if} - » - {if $csv_page eq 'valid'} - Vérifier et valider - {elseif $csv_action} - Vérifier et valider - {else} - Vérifier et valider - {/if} -
    - {if $csv_page eq 'source'} -
    -
    - Entrez les données sous la forme suivante (avec - - comme séparateur) :
    -
    TITRE1{$smarty.session.csv_separator|default:";"}TITRE2{$smarty.session.csv_separator|default:";"}...
    -val1_1{$smarty.session.csv_separator|default:";"}val1_2{$smarty.session.csv_separator|default:";"}...
    -val2_1{$smarty.session.csv_separator|default:";"}val2_2{$smarty.session.csv_separator|default:";"}...
    -val3_1{$smarty.session.csv_separator|default:";"}val3_2{$smarty.session.csv_separator|default:";"}...
    -
    - {elseif $csv_page eq 'values'} -
    - Action à effectuer si l'entrée existe : - -
    - - - - - {if $smarty.session.csv_action eq 'update'} - - {/if} - - {foreach from=$csv_fields item=f} - - - - - {if $smarty.session.csv_action eq 'update'} - - {/if} - - {/foreach} -
    ChampValeurMàJ
    {$csv_field_desc[$f]|default:$f} - - - - - - - Si - - - - - -
    Alors -
    Sinon -
    -
    - -
    - {elseif $csv_page eq 'valid'} - {if !$csv_done} - - - {foreach from=$csv_fields item=f} - - {/foreach} - - {foreach from=$csv_preview item=assoc} - - {foreach from=$csv_fields item=f} - - {/foreach} - - {/foreach} -
    {$csv_field_desc[$f]|default:$f}
    {$assoc[$f]}
    - {else} - Les données ont été ajoutées. - {/if} - {/if} - - {if !$csv_done} -
    - - - {if $csv_page eq 'source'} - - {elseif $csv_page eq 'values'} - - {elseif $csv_page eq 'valid'} - - {/if} -
    - {/if} -
    - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/include/emploi.tpl b/templates/include/emploi.tpl deleted file mode 100644 index 65abc3c..0000000 --- a/templates/include/emploi.tpl +++ /dev/null @@ -1,61 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -{if $address.entreprise || $address.secteur || $address.fonction || - $address.poste || $address.fonction || $address.email || $address.web} -
    - - {if $address.entreprise || $address.web} - - - - - {/if} - {if $address.secteur} - - - - - {/if} - - {if $address.fonction} - - - - - {/if} - {if $address.poste} - - - - - {/if} - {if $address.email} - - - - - {/if} -
    Ent/Org: {$address.entreprise}{if $address.web} [site]{/if}
    Secteur: {$address.secteur}{if $address.ss_secteur} ({$address.ss_secteur}){/if}
    Fonction: {$address.fonction}
    Poste: {$address.poste}
    E-mail: {$address.email}
    -
    -{/if} - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/include/field.promo.tpl b/templates/include/field.promo.tpl deleted file mode 100644 index f0fdfae..0000000 --- a/templates/include/field.promo.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{if $full} - -{/if} - - - - - - - - - - - -{if $full} -
    Promotion la plus ancienne - incluse -  (ex : 1980) -
    Promotion la plus jeune - incluse -  (ex : 2000) -
    - -
    -{/if} - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/include/field.select.tpl b/templates/include/field.select.tpl deleted file mode 100644 index 7f99db9..0000000 --- a/templates/include/field.select.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $with_text_value} -
    -{/if} - -{if $with_text_value} - -
    -{/if} - -{* vim:set et sws=2 sts=2 sw=2 enc=utf-8: *} diff --git a/templates/include/flags.radio.tpl b/templates/include/flags.radio.tpl deleted file mode 100644 index 9cf5cf0..0000000 --- a/templates/include/flags.radio.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -{if $withtext} -Quelle couleur ? -{/if} - -{icon name="flag_green" title="site public"} -{if $withtext}site public{/if} - -{icon name="flag_orange" title="transmis à l'AX"} -{if $withtext}transmis à l'AX{/if} - -{icon name="flag_red" title="privé"} -{if $withtext}privé{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.aliases.tpl b/templates/include/form.valid.aliases.tpl deleted file mode 100644 index 155f26a..0000000 --- a/templates/include/form.valid.aliases.tpl +++ /dev/null @@ -1,41 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Ancien alias - {$valid->old|default:"-none-"} - - - Nouvel alias : - {$valid->alias} - - - Visibilité : - {$valid->public} - - - Motif : - {$valid->raison|nl2br} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.broken.tpl b/templates/include/form.valid.broken.tpl deleted file mode 100644 index 2fc87a6..0000000 --- a/templates/include/form.valid.broken.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Récupération de - {$valid->m_prenom} {$valid->m_nom} ({$valid->m_promo}) - - - Mail proposé - {$valid->m_email} - -{if $valid->m_comment} - - Commentaire - {$valid->m_comment|nl2br} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.edit-evts.tpl b/templates/include/form.valid.edit-evts.tpl deleted file mode 100644 index 90a9555..0000000 --- a/templates/include/form.valid.edit-evts.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -
    - -
    -Péremption : -Promos :  -min - -> max
    -Illustration : - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.edit-listes.tpl b/templates/include/form.valid.edit-listes.tpl deleted file mode 100644 index 09376ea..0000000 --- a/templates/include/form.valid.edit-listes.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -Nom de la liste : -
    -Type de liste : - - - -
    -Domaine : - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.edit-nl.tpl b/templates/include/form.valid.edit-nl.tpl deleted file mode 100644 index 7524ee2..0000000 --- a/templates/include/form.valid.edit-nl.tpl +++ /dev/null @@ -1,30 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -
    - -
    - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.edit-paiements.tpl b/templates/include/form.valid.edit-paiements.tpl deleted file mode 100644 index 712391f..0000000 --- a/templates/include/form.valid.edit-paiements.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -
    - - -
    -
    -Site : -
    -Montant : -(min - ->  max ) - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.edit-photo.tpl b/templates/include/form.valid.edit-photo.tpl deleted file mode 100644 index 84b9943..0000000 --- a/templates/include/form.valid.edit-photo.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.evts.tpl b/templates/include/form.valid.evts.tpl deleted file mode 100644 index ef75dfa..0000000 --- a/templates/include/form.valid.evts.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Titre - {$valid->titre} - - - Texte - {tidy}{$valid->texte|miniwiki|smarty:nodefaults}{/tidy} - - - Péremption - {$valid->peremption|date_format} - - - Promos - {$valid->pmin} - {$valid->pmax} - - - Illustration - - {if $valid->imgtype} - Image - {else} - Pas d'image définie - {/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.gapps-unsuspend.tpl b/templates/include/form.valid.gapps-unsuspend.tpl deleted file mode 100644 index cd163d3..0000000 --- a/templates/include/form.valid.gapps-unsuspend.tpl +++ /dev/null @@ -1,29 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Motif de la suspension : - {$valid->suspension_reason()|default:"-none-"|nl2br} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.homonymes.tpl b/templates/include/form.valid.homonymes.tpl deleted file mode 100644 index c9ceb0c..0000000 --- a/templates/include/form.valid.homonymes.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Adresse litigieuse : - - {$valid->loginbis}@polytechnique.org - - - - Homonymes : - - {foreach from=$valid->homonymes_forlife item=o} - {$o} - {/foreach} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.listes.tpl b/templates/include/form.valid.listes.tpl deleted file mode 100644 index 7671432..0000000 --- a/templates/include/form.valid.listes.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Liste : - {$valid->liste}@{$valid->domain} - - - Desc : - - {$valid->desc} - - - - Type de liste : - - {$valid->asso} - - - - Propriétés : - - - - - - - - - - - - - - -
    visibilité :{if $valid->advertise}publique{else}privée{/if}
    diffusion :{if $valid->modlevel eq 2}modérée{elseif $valid->modlevel}restreinte{else}libre{/if}
    inscription :{if $valid->inslevel}modérée{else}libre{/if}
    - - - - Gestionnaires : - - {foreach from=$valid->owners item=o} - {$o} - {/foreach} - - - - Membres : - - {foreach from=$valid->members item=o} - {$o} - {/foreach} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.mark.tpl b/templates/include/form.valid.mark.tpl deleted file mode 100644 index 346a5fb..0000000 --- a/templates/include/form.valid.mark.tpl +++ /dev/null @@ -1,48 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $valid->m_relance neq '0000-00-00' && $valid->m_relance neq ''} - - Dernière relance le : - {$valid->m_relance|date_format} - -{/if} - - Marketing sur - {$valid->m_prenom} {$valid->m_nom} ({$valid->m_promo}) - -{if $valid->m_type neq 'default'} - - Type de message - {$valid->m_type} {$valid->m_data} - -{/if} - - Mail deviné - {$valid->m_email} - - - Envoi de mail ... - {if $valid->perso}perso{else}par poly.org{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.medals.tpl b/templates/include/form.valid.medals.tpl deleted file mode 100644 index 86db5df..0000000 --- a/templates/include/form.valid.medals.tpl +++ /dev/null @@ -1,29 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Médaille : - {$valid->medal_name()} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.nl.tpl b/templates/include/form.valid.nl.tpl deleted file mode 100644 index 38456a4..0000000 --- a/templates/include/form.valid.nl.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Version texte -
    {$valid->art->toText()}
    - - - Version html - -
    - {$valid->art->toHtml()|smarty:nodefaults} -
    - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.nomusage.tpl b/templates/include/form.valid.nomusage.tpl deleted file mode 100644 index 8f09dd7..0000000 --- a/templates/include/form.valid.nomusage.tpl +++ /dev/null @@ -1,46 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Nom d'usage : - {$valid->nom_usage} - - - Nouvel alias : - {$valid->alias|default:"suppression"} - - - Raison : - {$valid->reason} - -{if $valid->homonyme} - - - Probleme d'homonymie ! - {$valid->homonyme} - - - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.orange.tpl b/templates/include/form.valid.orange.tpl deleted file mode 100644 index 1cc4d8f..0000000 --- a/templates/include/form.valid.orange.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Promotion : - {$valid->promo} - - - Année de sortie : - {$valid->promo_sortie} au lieu de {math equation="a + b" a=$valid->promo b=3} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.paiements.tpl b/templates/include/form.valid.paiements.tpl deleted file mode 100644 index ef3628c..0000000 --- a/templates/include/form.valid.paiements.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Paiement : - {$valid->titre} - - - Site web : - - {$valid->site} - - - - Montant : - - {$valid->montant} ({$valid->montant_min} < x < {$valid->montant_max}) - - - - Contact : - - {$valid->bestalias}@polytechnique.org - - - - Message de confirmation : -
    {$valid->msg_reponse|wordwrap:"72"}
    - -{if $valid->asso_id} - - Lié à l'asso : - {$valid->asso} - -{if $valid->evt} - - événement : - {$valid->evt_intitule} - -{/if} -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.photos.tpl b/templates/include/form.valid.photos.tpl deleted file mode 100644 index 88f1bbd..0000000 --- a/templates/include/form.valid.photos.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Photos - -  [ PHOTO ] -      -  [ PHOTO ] - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/form.valid.surveys.tpl b/templates/include/form.valid.surveys.tpl deleted file mode 100644 index ec4ad5a..0000000 --- a/templates/include/form.valid.surveys.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Titre - {$valid->title} - - - Description - {$valid->description} - - - Admin - Voir / Éditer le sondage complet - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/massmailer-nav.tpl b/templates/include/massmailer-nav.tpl deleted file mode 100644 index 61d6779..0000000 --- a/templates/include/massmailer-nav.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - {if $mm->prev() neq null} - - {/if} - - {if $mm->next() neq null} - - {/if} - - {if $mm->last() neq null} - - - - {/if} -
    - - {icon name=resultset_previous title="Lettre précédente"}Lettre précédente - - - [Liste des lettres] - - - Lettre suivante{icon name=resultset_next title="Lettre suivante"} - -
    - - Dernière lettre - -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/minifiche.tpl b/templates/include/minifiche.tpl deleted file mode 100644 index bc6246a..0000000 --- a/templates/include/minifiche.tpl +++ /dev/null @@ -1,151 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - {if $smarty.session.auth ge AUTH_COOKIE} -
    - {$c.prenom} {$c.nom} -
    - {/if} - - - -
    - {if $c.iso3166} - {$c.nat}  - {/if} - (X {$c.promo}{if $c.app0text}, {applis_fmt type=$c.app0type text=$c.app0text url=$c.app0url}{* - *}{/if}{if $c.app1text}, {applis_fmt type=$c.app1type text=$c.app1text url=$c.app1url}{/if}) - {if $c.dcd}décédé{if $c.sexe}e{/if} le {$c.deces|date_format}{/if} - {if $smarty.session.auth ge AUTH_COOKIE} - {if !$c.dcd && !$c.wasinscrit} - clique ici si tu connais son adresse email ! - {/if} - {/if} -
    -
    - - {if $smarty.session.auth ge AUTH_COOKIE} - - {/if} - -
    - {if $c.wasinscrit} - {if $c.web || $c.mobile || $c.countrytxt || $c.city || $c.region || $c.entreprise || $c.freetext || (!$c.dcd && !$c.actif )} - - {if $c.web} - - - - - {/if} - {if $c.countrytxt || $c.city} - - - - - {/if} - {if $c.mobile && !$c.dcd} - - - - - {/if} - {if $c.entreprise} - - - - - {/if} - {if $c.freetext} - - - - - {/if} - {if !$c.dcd && !$c.actif && $c.wasinscrit && $smarty.session.auth ge AUTH_COOKIE} - - - - {/if} -
    Page web:{$c.web}
    Géographie:{$c.city}{if $c.city && $c.countrytxt}, {/if}{$c.countrytxt}
    Mobile:{$c.mobile}
    Profession: - {$c.entreprise} {if $c.secteur}({$c.secteur}){/if} - {if $c.fonction}
    {$c.fonction}{/if} -
    Commentaire:{$c.freetext|nl2br}
    - Ce camarade n'a plus d'adresse de redirection valide. - - Si tu en connais une, n'hésite pas à nous la transmettre - -
    - {/if} - {/if} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/plview.geoloc.tpl b/templates/include/plview.geoloc.tpl deleted file mode 100644 index 962a6aa..0000000 --- a/templates/include/plview.geoloc.tpl +++ /dev/null @@ -1,84 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{if !$request_geodesix} - -

    - {if $smarty.request.only_current neq 'on'} - [Ne voir que les adresses principales] - {else} - [Voir toutes les adresses] - {/if} -

    - -

    - - - - - -

    - {if $annu} -

    - Lister les X présents sur cette carte -

    - {/if} -

    Carte fournie gracieusement par Geodesix.

    -{else} -

    Le moteur de carte n'a pas été installé sur cette version de plat/al. Veuillez contacter Geodesix.

    -{/if} -

    Pour toute question, problème ou suggestion tu peux envoyer un mail à -{#globals.geoloc.email#}.

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/plview.minifiche.tpl b/templates/include/plview.minifiche.tpl deleted file mode 100644 index 2527d2f..0000000 --- a/templates/include/plview.minifiche.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -{iterate from=$set item=res} - {if $res.contact} - {include file="include/minifiche.tpl" c=$res show_action="retirer"} - {else} - {include file="include/minifiche.tpl" c=$res show_action="ajouter"} - {/if} -{/iterate} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/plview.multipage.tpl b/templates/include/plview.multipage.tpl deleted file mode 100644 index 348a72d..0000000 --- a/templates/include/plview.multipage.tpl +++ /dev/null @@ -1,83 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{capture name=pages} -{if $plview->pages > 1} -
    - {if $plview->page neq 1} - {icon name=resultset_first title="Première page"}{* - *}{icon name=resultset_previous title="Page précédente"} - {else} - {icon name=null title=""}{icon name=null title=""} - {/if} - {section name=page loop=$plview->pages+1 start=1} - {if $smarty.section.page.index eq $plview->page} - {$plview->page} - {else} - {$smarty.section.page.index} - {/if} - {/section} - {if $plview->page neq $plview->pages} - {icon name=resultset_next title="Page suivante"}{* - *}{icon name=resultset_last title="Dernière page"} - {else} - {icon name=null title=""}{icon name=null title=""} - {/if} -
    -{/if} -{/capture} - -{capture name=order} -{if $plset_count > 1} -
    - Trier par : - {foreach from=$orders key=name item=sort} - [ - {if $name eq $order} - tri ascendant - {$sort.desc} - {elseif $order eq "-$name"} - tri ascendant - {$sort.desc} - {else} - {$sort.desc} - {/if} - ]  - {/foreach} -
    -{/if} -{/capture} - - -{$smarty.capture.pages|smarty:nodefaults} - -{$smarty.capture.order|smarty:nodefaults} - -
    - {include file=$plview->templateName()} -
    - -{$smarty.capture.order|smarty:nodefaults} - -{$smarty.capture.pages|smarty:nodefaults} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/plview.referent.tpl b/templates/include/plview.referent.tpl deleted file mode 100644 index 94225b4..0000000 --- a/templates/include/plview.referent.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -{iterate from=$set item=p} -
    -
    - {$p.nom} {$p.prenom} -
    -
    - X{$p.promo} -
    - -
    - - - - - -
    Expertise :{$p.expertise|nl2br}
    -
    -
    -{/iterate} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/plview.trombi.tpl b/templates/include/plview.trombi.tpl deleted file mode 100644 index 1015f5f..0000000 --- a/templates/include/plview.trombi.tpl +++ /dev/null @@ -1,59 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $plset_count eq 0} -

    - Aucun des camarades concernés n'a de photographie sur sa fiche -

    -{else} - - {iterate from=$set item=p} - {cycle values="1,2,3" assign="loop"} - {if $loop eq "1"} - - {/if} - - {if $loop eq "3"} - - {/if} - {/iterate} - {if $loop neq "3"} - {if $lopp eq "1"} - - {/if} - - {/if} -
    - -  [ PHOTO ] - - {if $trombi_with_admin && hasPerm('admin')} - {icon name=wrench title="[admin]"} - {/if} -
    - - {$p.prenom} {$p.nom}{if $trombi_with_promo} ({$p.promo}){/if} - -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/tips.tpl b/templates/include/tips.tpl deleted file mode 100644 index 334fdbf..0000000 --- a/templates/include/tips.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $tips} -{if $full} -
    -{/if} - {icon name=lightbulb} {if !$tips.special} - Astuce : {$tips.titre} - {if hasPerm('admin') && !$tips.special && !$nochange} - {icon name="page_edit" title="Editer"} - {/if} - {else} - {$tips.titre} - {/if} - - {tidy} - {$tips.text|nl2br|smarty:nodefaults} - {/tidy} - {if !$nochange} - - {/if} -{if $full} -
    -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/include/trombi.tpl b/templates/include/trombi.tpl deleted file mode 100644 index e49bf6f..0000000 --- a/templates/include/trombi.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - {foreach from=$trombi_list item=p} - {cycle values="1,2,3" assign="loop"} - {if $loop eq "1"} - - {/if} - - {if $loop eq "3"} - - {/if} - {/foreach} - {if $loop eq "1"} - - {elseif $loop eq "2"} - - {/if} - - - -
    - -  [ PHOTO ] - - {if $trombi_admin && hasPerm('admin') && !$urlmainsite} - - {icon name=wrench title="[admin]"} - {/if} -
    - - {$p.prenom} {$p.nom}{if $trombi_show_promo} ({$p.promo}){/if} - -
    - {foreach from=$trombi_links item=l} - {if $l.i eq $smarty.request.offset} - {$l.text} - {else} - {$l.text} - {/if} - {/foreach} -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/admin.tpl b/templates/lists/admin.tpl deleted file mode 100644 index d0efb02..0000000 --- a/templates/lists/admin.tpl +++ /dev/null @@ -1,177 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if !$details.own} -

    -Tu n'es pas administrateur de la liste, mais du site. -

    -{/if} - -{include file="lists/header_listes.tpl" on=admin} - -

    -Pour inscrire un utilisateur, il faut remplir les champs prévus à cet effet en saisissant un de -ses identifiants, de la forme "prenom.nom", ou "prenom.nom.promo" en cas d'homonymie. Pour inscrire plusieurs utilisateurs, les séparer par des espaces. -L'icône {icon name=cross title='retirer membre'} permet de désinscrire de la liste quelqu'un -qui y était abonné. -

    - -{if $unregistered|@count neq 0} -

    Marketing d'utilisateurs non-inscrits

    - -

    -{if $unregistered|@count eq 1} -L'utilisateur suivant n'est pas inscrit à Polytechnique.org. Tu peux l'y inciter en lui faisant envoyer un mail de marketing. Une fois inscrit à Polytechnique.org, l'inscription à la liste lui sera automatiquement proposée. -{else} -Les utilisateurs suivants ne sont pas inscrits à Polytechnique.org. Tu peux les y inciter en leur faisant envoyer des -mails de marketing. Une fois inscrits à Polytechnique.org, l'inscription à la liste leur sera automatique proposée. -{/if} -

    - - - -

    - - {foreach from=$unregistered key=login item=it} - - - - - {/foreach} -
    {$login} - Camarade : -
    - Action* : -
    - -
    -

    - -

    -
    - -

    - *La dernière action ajoute simplement la liste de diffusion aux abonnements qui seront proposés au camarade - lors de son inscription à Polytechnique.org sans pour autant lui enovyer de mail de marketing. Cette action est - automatique si tu choisis l'envoi de mail. -

    - -{/if} - -

    - modérateurs de la liste -

    - -
    - - {foreach from=$owners item=xs key=promo} - - - - - {/foreach} - - - - -
    {if $promo}{$promo}{else}non-X{/if} - {foreach from=$xs item=x} - {if $promo && strpos($x.l, '@') === false} - {$x.n} - {elseif $x.x} - {$x.n} - {elseif $x.n} - {$x.n} - {else} - {$x.l} - {/if} - {icon name=cross title='retirer modérateur'} -
    - {/foreach} -
    Ajouter ... - -   - -
    -
    - - -

    - {$np_m|default:"0"} membre{if $np_m > 1}s{/if} dans la liste -

    - -
    - - {foreach from=$members item=xs key=promo} - - - - - {/foreach} - - - - -
    {if $promo}{$promo}{else}non-X{/if} - {foreach from=$xs item=x} - {if $promo && strpos($x.l, '@') === false} - {$x.n} - {elseif $x.x} - {$x.n} - {elseif $x.n} - {$x.n} - {else} - {$x.l} - {/if} - {icon name=cross title='retirer membre'} -
    - {/foreach} -
    Ajouter ... - -   - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/admin_all.tpl b/templates/lists/admin_all.tpl deleted file mode 100644 index 58d0019..0000000 --- a/templates/lists/admin_all.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Mail Lists -

    - - - - - - {foreach from=$listes item=l} - - - - {/foreach} -
    Listes
    {$l}
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/annu.tpl b/templates/lists/annu.tpl deleted file mode 100644 index e03022c..0000000 --- a/templates/lists/annu.tpl +++ /dev/null @@ -1,107 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{include file="lists/header_listes.tpl" on=trombi} - -

    - Liste {$platal->argv[1]} -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Adresse :{mailto address=$details.addr}
    Sujet :{$details.desc}
    Visibilité :{if $details.priv eq 0}publique{elseif $details.priv eq 1}privée{else}admin{/if}
    Diffusion :{if $details.diff eq 2}modérée{elseif $details.diff}restreinte{else}libre{/if}
    Inscription :{if $details.ins}modérée{else}libre{/if}
    Ton statut : - {if $details.sub>1} - Tu es inscrit sur la liste.
    - Te désinscrire : - {icon name=cross title="me désinscrire"} - {elseif $details.sub eq 1} - Ta demande d'inscription est en cours de validation. - {else} - Tu n'es pas inscrit.
    - Demander ton inscription : - {icon name=add title="demander mon inscription"} - {/if} -
    - -{include file="core/plset.tpl"} - -

    - modérateurs de la liste -

    - - - {foreach from=$owners item=xs key=promo} - {foreach from=$xs item=x} - {if $promo} - {cycle values="1,2,3,4" assign="loop"} - {if $loop eq "1"}{/if} - - {if $loop eq "4"}{/if} - {/if} - {/foreach} - {/foreach} - {if $loop eq "1"} - {cycle values="1,2,3" assign="loop"} - {cycle values="1,2,3" assign="loop"} - {cycle values="1,2,3" assign="loop"} - - {elseif $loop eq "2"} - {cycle values="1,2,3" assign="loop"} - {cycle values="1,2,3" assign="loop"} - - {elseif $loop eq "3"} - {cycle values="1,2,3" assign="loop"} - - {/if} -
    -  [ PHOTO ] -
    - - {$x.n} ({$promo}) - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/archives.tpl b/templates/lists/archives.tpl deleted file mode 100644 index fae9304..0000000 --- a/templates/lists/archives.tpl +++ /dev/null @@ -1,29 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="lists/header_listes.tpl" on=archives} - -

    Archives

    - -{$banana|smarty:nodefaults} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/check.tpl b/templates/lists/check.tpl deleted file mode 100644 index 609b2f8..0000000 --- a/templates/lists/check.tpl +++ /dev/null @@ -1,49 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{include file="lists/header_listes.tpl" on=check} - -{if $options|@count} - - - - {foreach from=$options key=k item=o} - - - - - - {/foreach} -
    Options incorrectes pour {$details.addr}
    champsdevrait être:est ...
    {$k}{if $o[0] === false}False{elseif $o[0] === true}True{elseif $o[0] === ''}" "{else}{$o[0]}{/if}{if $o[1] === false}False{elseif $o[1] === true}True{elseif $o[1] === ''}" "{else}{$o[1]}{/if}
    -
    -
    -
    - -
    -
    -{else} -

    Liste correcte !

    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/create.tpl b/templates/lists/create.tpl deleted file mode 100644 index 0f79963..0000000 --- a/templates/lists/create.tpl +++ /dev/null @@ -1,200 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Création d'une liste de diffusion -

    - -{if $created} - -

    Demande de création envoyée !

    - -{else} - -

    -N'importe qui peut faire la demande de création d'une mailing-list, il suffit pour cela d'être au -moins 4 polytechniciens inscrits sur le site, et de fournir les informations suivantes concernant la -liste : -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Caractéristiques de la liste
    C'est une liste pour :un binetune liste de portée générale ou d'amis
    un groupe Xun alias psc, ...
    Promotion : - Par exemple : 2004
    Nom du groupe X : -
    - Attention : le nom du groupe doit être écrit comme sur Polytechnique.net. -
    Adresse souhaitée : - @.diminutifdugroupe.polytechnique.org -
    Sujet (bref) : - -
    Propriétés :visibilité :publiqueprivée
    (est-ce que les non membres peuvent voir l'existence de cette liste ?)
    diffusion :librerestreintemodérée
    (l'envoi d'un mail à cette liste est-il libre, modéré - lorsque l'expéditeur n'appartient pas à la liste ou modéré dans tous les cas ?)
    inscription :libremodérée
    (détermine si les inscriptions à la liste sont modérées - par les modérateurs de la liste ou non.)
    Membres et gestionnaires
    Gestionnaires : - - {$owners|nl2br|default:"pas de gestionnaires"} -
    - - -
    Membres : - - {$members|nl2br|default:"pas de membres"} -
    - - -
    - Tu peux entrer une liste de membres en entrant plusieurs adresses séparées par des espaces. -
    -

    - La création de la liste sera soumise à un contrôle manuel avant d'être validée. Ce contrôle a - pour but notamment de vérifier qu'il n'y aura pas ambiguité entre les membres de la liste et son - identité. Exemple : n'importe qui ne peut pas ouvrir pointgamma@polytechnique.org, il ne suffit - pas d'être le premier à le demander. -

    -

    - La liste est habituellement créée dans les jours qui suivent la demande sauf exception. Pour plus - d'informations écris-nous à l'adresse {mailto address='listes@polytechnique.org'} en mettant dans - le sujet de ton mail le nom de la liste souhaité afin de faciliter les échanges de mails - ultérieurs éventuels. -

    -
    -
    - -
    -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/delete.tpl b/templates/lists/delete.tpl deleted file mode 100644 index 1796e7d..0000000 --- a/templates/lists/delete.tpl +++ /dev/null @@ -1,69 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $deleted} - -

    [Voir toutes les listes]

    -

    La liste a été détruite !

    - -{else} - -{if !$details.own} -

    -Tu n'es pas administrateur de la liste, mais du site. -

    -{/if} - -{include file="lists/header_listes.tpl" on=delete} - -

    - Détruire la liste {$details.addr} ? -

    - -
    - - - - - - - - - - -
    - Veux tu réellement détruire la liste {$details.addr} ?
    - Pour valider ton choix, écris en majuscules (sans espace) « OUI » : - -
    - Si tu veux préserver les archives de la liste, décoche la case ci-contre. - -
    - -
    -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/header_listes.tpl b/templates/lists/header_listes.tpl deleted file mode 100644 index 2f8d862..0000000 --- a/templates/lists/header_listes.tpl +++ /dev/null @@ -1,107 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - {if $details.own || hasPerms('admin,groupadmin')} - - - - - {/if} - {if hasPerms('admin,groupadmin')} - - - - - - {/if} - {if $it_is_xnet && ($details.own || $is_admin)} - - - {if $on neq sync} - - {else} - - {/if} - - {/if} -
    - [Voir toutes les listes] -
    Liste {$platal->argv[1]} : - {if $on neq members} - [liste des membres] - {else} - [liste des membres] - {/if} - {if $on neq trombi} - [annuaire/trombi] - {else} - [annuaire/trombi] - {/if} - {if $on neq archives} - [archives] - {else} - [archives] - {/if} -
    Administrer la liste : - {if $on neq moderate} - [modération] - {else} - [modération] - {/if} - {if $on neq admin} - [ajout/retrait de membres] - {else} - [ajout/retrait de membres] - {/if} - {if $on neq options} - [options] - {else} - [options] - {/if} - {if $on neq delete} - [détruire] - {else} - [détruire liste] - {/if} -
    Administrer (avancé) : - {if $on neq soptions} - [options avancées] - {else} - [options avancées] - {/if} - {if $on neq check} - [vérifications] - {else} - [vérifications] - {/if} -
    Synchroniser :[synchroniser avec l'annuaire][synchroniser avec l'annuaire]
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/index.tpl b/templates/lists/index.tpl deleted file mode 100644 index 731a570..0000000 --- a/templates/lists/index.tpl +++ /dev/null @@ -1,111 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Listes de diffusion de Polytechnique.org -

    - -

    L'inscription à une liste de diffusion

    - -
      -
    • Pour demander ton inscription à une liste de diffusion, il suffit - de cliquer sur l'icône {icon name=add} située en fin de ligne.
    • -
    • Si la liste est à inscription modérée, l'icône {icon name=flag_orange title="en cours"} - apparaîtra tant que ton inscription n'aura pas été validée par un modérateur.
    • -
    • Pour te désinscrire d'une liste dont tu es membre, il suffit de cliquer sur la croix - {icon name=cross title="désinscription"} située en fin de ligne.
    • -
    - -

    La diffusion sur une liste de diffusion

    -

    -La diffusion a trois niveaux de modération. La diffusion peut être : -

    -
      -
    • libre : tout le monde peut y envoyer des mails, la diffusion y est - immédiate ;
    • -
    • restreinte : les membres de la liste peuvent envoyer librement des mails, - les extérieurs sont modérés ;
    • -
    • modérée : l'envoi d'un mail à la liste est alors filtré par des - modérateurs, eux seuls peuvent accepter un message envoyé à la liste.
    • -
    - -

    Demander la création d'une liste de diffusion

    - -

    -Nos listes ont pour but de réunir des X autour de thèmes ou centres d'intérêt communs. C'est un -moyen pratique et efficace de rassembler plusieurs personnes autour d'un projet commun ou d'une -thématique particulière. -

    - -

    -{icon name=add title="Nouvelle liste"} - Tu peux demander la création d'une liste de diffusion sur le thème de ton choix. - -

    - -{if $owner|@count} -

    Listes dont tu es modérateur

    - -{include file='lists/listes.inc.tpl' lists=$owner} - -

    -{icon name=wrench title="Modérateur"} indique que tu es modérateur de la liste, les modérateurs jouent également le rôle de gestionnaire.
    -{icon name=error title="Modérateur mais non-membre"} indique que tu es modérateur de la liste, mais que tu n'en es pas membre. -

    -{/if} -{if $member|@count} -

    Listes dont tu es membre

    - -{assign var="has_private" value=false} -{include file='lists/listes.inc.tpl' lists=$member} - -

    Attention : lorsqu'une liste à laquelle tu es abonné est privée, l'icône {icon name=weather_cloudy} est affichée en début de ligne. Si tu t'en désinscris, il ne te sera pas possible de t'y abonner de nouveau sans l'action d'un modérateur.

    -{/if} -

    Listes de diffusion publiques auxquelles tu peux t'inscrire

    - -

    -Les listes de diffusion publiques sont visibles par tous les X inscrits à Polytechnique.org. -

    - -{if $public|@count} -{include file='lists/listes.inc.tpl' lists=$public} - -
    -{/if} - -
    - - - - - - - - -
    Inscription à une liste de diffusion promo
    Promotion : - -   - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/liste.inc.tpl b/templates/lists/liste.inc.tpl deleted file mode 100644 index a6ae99e..0000000 --- a/templates/lists/liste.inc.tpl +++ /dev/null @@ -1,98 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - {if $liste.own && $liste.sub} - {icon name=wrench title="Modérateur"} - {elseif $liste.own} - {icon name=error title="Modérateur mais non-membre"} - {elseif $liste.priv} - {icon name=weather_cloudy title="Liste privée"} - {/if} - - - {$liste.list} - - - {$liste.desc|smarty:nodefaults}
    - {if $liste.subscriptions|@count} - • Demandes d'inscription
    - {foreach from=$liste.subscriptions item=s} - - {icon name=add title="Accepter"} - - - {icon name=delete title="Refuser"} - - {$s.name} - {if $s.login} - {icon name=user_suit title="Afficher la fiche"} - {/if} -
    - {/foreach} - {/if} - {if $liste.mails|@count} - • Demandes de modération
    - - {foreach from=$liste.mails item=m} - - {icon name=add title="Valider le mail"} - - - {icon name=delete title="Spam"} - - De : {$m.sender}
    - - {icon name=magnifier title="Voir le message"} - - Sujet : {$m.subj|hdc|smarty:nodefaults|default:"[pas de sujet]"}
    - {/foreach} -
    - {/if} - - - {if $liste.diff eq 2}modérée{elseif $liste.diff}restreinte{else}libre{/if} - - - {if $liste.ins}modérée{else}libre{/if} - -{$liste.nbsub} - - {if $liste.sub eq 2} - - {icon name=cross title="me désinscrire"} - - {elseif $liste.sub eq 1} - {icon name=flag_orange title='inscription en attente de modération'} - {else} - - {icon name=add title="m'inscrire"} - - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/listes.inc.tpl b/templates/lists/listes.inc.tpl deleted file mode 100644 index 71cec2b..0000000 --- a/templates/lists/listes.inc.tpl +++ /dev/null @@ -1,40 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - - {foreach from=$lists item=liste} - - {include file="lists/liste.inc.tpl"} - - {/foreach} -
    ListeDescriptionDiff.Inscr.Nb
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/members.tpl b/templates/lists/members.tpl deleted file mode 100644 index b902968..0000000 --- a/templates/lists/members.tpl +++ /dev/null @@ -1,162 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{include file="lists/header_listes.tpl" on=members} - -

    - Liste {$platal->argv[1]} -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Adresse :{mailto address=$details.addr}
    Sujet :{$details.desc|smarty:nodefaults}
    Visibilité :{if $details.priv eq 0}publique{elseif $details.priv eq 1}privée{else}admin{/if}
    Diffusion :{if $details.diff eq 2}modérée{elseif $details.diff}restreinte{else}libre{/if}
    Inscription :{if $details.ins}modérée{else}libre{/if}
    Nb. membres :{$nb_m|default:"0"}
    Ton statut : - {if $details.sub>1} - Tu es inscrit sur la liste.
    - Te désinscrire : - {icon name=cross title="me désinscrire"} - {elseif $details.sub eq 1} - Ta demande d'inscription est en cours de validation. - {else} - Tu n'es pas inscrit.
    - Demander ton inscription : - {icon name=add title="demander mon inscription"} - {/if} -
    -{if $details.info} -
    - - - - - -
    Informations sur la liste
    {$details.info|smarty:nodefaults|nl2br}
    -{/if} - -

    - modérateurs de la liste -

    - -{if $owners|@count} - - {foreach from=$owners item=xs key=promo} - {foreach from=$xs item=x name=all} - - - - {if $x.p} - - {/if} - - {/foreach} - {/foreach} -
    - {if $smarty.foreach.all.first} - {if $promo}{$promo}{else}non-X{/if} - {/if} - - {if $promo && strpos($x.l, '@') === false} - {if $x.b}{icon name=error}{/if} - {$x.n} - {elseif $x.x} - {$x.n} - {elseif $x.n} - {$x.n} - {else} - {$x.l} - {/if} - - {$x.p} -
    -{/if} - -

    - membres de la liste - {if $smarty.get.alpha} - (trier par promo) - {else} - (trier par nom) - {/if} -

    - -{if $members|@count} - - {foreach from=$members item=xs key=promo} - {foreach from=$xs item=x name=all} - - - - {if $x.p} - - {/if} - - {/foreach} - {/foreach} -
    - {if $smarty.foreach.all.first} - {if $promo}{$promo}{else}non-X{/if} - {/if} - - {if $promo && strpos($x.l, '@') === false} - {if $x.b}{icon name=error}{/if} - {$x.n} - {elseif $x.x} - {$x.n} - {elseif $x.n} - {$x.n} - {else} - {$x.l} - {/if} - - {$x.p} -
    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/moderate.tpl b/templates/lists/moderate.tpl deleted file mode 100644 index 7bd86d0..0000000 --- a/templates/lists/moderate.tpl +++ /dev/null @@ -1,212 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="lists/header_listes.tpl" on=moderate} - -

    - Inscriptions en attente de modération -

    - -{if $subs|@count} - - - - - - - {foreach from=$subs item=s} - - - - - - {/foreach} -
    NomAdresse
    {$s.name}{if $s.login} - {* - *}{icon name=user_suit title="Afficher la fiche"} - {/if} - {$s.addr} - {icon name=add title="Valider l'inscription"} - {icon name=delete title="Refuser l'inscription"} -
    -{else} -

    Il n'y a pas d'inscriptions en attente de modération.

    -{/if} - -

    - Mails en attente de modération -

    - -{if $mails|@count} -
      -
    • - {icon name=add}accepter : le mail est immédiatement libéré, et envoyé à la - liste. -
    • -
    • - {icon name=magnifier}refuser : pour refuser un mail, suivre le lien {icon name=magnifier} et - remplir le formulaire en bas de page. -
    • -
    • - {icon name=delete}spam : le mail est effacé sans autre forme de procès. - N'utiliser QUE pour les virus et les courriers indésirables.
      -
    • -
    -

    - S'il y a trop d'indésirables, il est probablement plus rapide pour la suite de les - jeter directement et non de les modérer en modifant le réglage de - l'antispam. -

    - - - -
    -{if $with_fromx} - - - - - - - - - - - {foreach from=$mails item=m name=mail} - {if $m.fromx} - - - - - - - - - {/if} - {/foreach} -
    MailInfos
    - Les mails suivants proviennent d'adresses identifiées comme étant celles de camarades. -
    - - - De :
    - Sujet : -
    - {$m.sender}
    - {$m.subj|hdc|smarty:nodefaults} -
    - le {$m.stamp|date_format:"%x"} à {$m.stamp|date_format:"%X"}
    - {$m.size} octets
    -
    - {icon name=add title="Accepter le message"} - - {icon name=magnifier title="Voir le message"}
    - {icon name=delete title="Spam !"} -
    -{/if} - -{if $with_nonfromx} - - - - - - - - - {foreach from=$mails item=m name=mail} - {if !$m.fromx} - - - - - - - - - {/if} - {/foreach} -
    - {icon name="arrow_refresh" title="Tout (dé)cocher"} - MailInfos
    - - - De :
    - Sujet : -
    - {$m.sender}
    - {$m.subj|hdc|smarty:nodefaults} -
    - le {$m.stamp|date_format:"%x"} à {$m.stamp|date_format:"%X"}
    - {$m.size} octets
    -
    - {icon name=add title="Accepter le message"} - - {icon name=magnifier title="Voir le message"}
    - {icon name=delete title="Spam !"} -
    -{/if} - - - -

    - Utilise ces boutons pour appliquer une action à tous les mails sélectionnés.
    - - - -

    -
    -{else} -

    Il n'y a pas de mails en attente de modération.

    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/moderate_mail.tpl b/templates/lists/moderate_mail.tpl deleted file mode 100644 index e17c0f8..0000000 --- a/templates/lists/moderate_mail.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="lists/header_listes.tpl"} - -

    - Contenu du mail en attente -

    - -{$banana|smarty:nodefaults} - -
    - - - - - - - - - - -
    Modérer le mail
    raison (pour les refus) : - -
    - -   -   - -
    -
      -
    • « Refuser » rejette le mail avec un message à son auteur (celui que tu tapes dans le cadre).
    • -
    • - « Spam » détruit efface le mail sans autre forme de procès, et c'est à utiliser UNIQUEMENT - pour les virus et les courriers indésirables. -
    • -
    -
    -

    -En cas de refus, le mail envoyé à l'auteur du mail que tu modères actuellement sera de la forme suivante : -

    -
    {$msg|smarty:nodefaults|utf8_encode}
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/moderate_sub.tpl b/templates/lists/moderate_sub.tpl deleted file mode 100644 index f0a6c85..0000000 --- a/templates/lists/moderate_sub.tpl +++ /dev/null @@ -1,48 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Refuser l'inscription d'un utilisateur

    - -
    - - - - - - - - - - - - - -
    refuser l'inscription de :
    {$del_user.name}
    raison: - -
    - - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/options.tpl b/templates/lists/options.tpl deleted file mode 100644 index e329b6f..0000000 --- a/templates/lists/options.tpl +++ /dev/null @@ -1,225 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if !$details.own} -

    -Tu n'es pas administrateur de la liste, mais du site. -

    -{/if} - -{include file="lists/header_listes.tpl" on=options} - -

    - Changer les options de la liste {$details.addr} -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Options de la liste {$details.addr}
    - description courte :
    - une courte phrase pour décrire la liste. -
    - -
    - description longue :
    - une description plus longue de la liste. -
    - -
    - message de bienvenue :
    - un texte de bienvenue incorporé au mail envoyé aux nouveaux - abonnés à la liste. -
    - -
    - message d'adieu :
    - un texte d'au revoir incorporé au mail de départ envoyé aux - utilisateurs qui se désinscrivent. Ce mail peut être désactivé. -
    - activer le mail d'adieu.
    - -
    Options avancées de la liste {$details.addr}
    - ajout dans le sujet :
    - un préfixe (optionnel) ajouté dans le sujet de chaque mail envoyé sur la liste te permet de trier plus facilement ton courrier. -
    - -
    - notification de (dés)abonnement :
    - notifier les modérateurs des (dés)inscriptions d'utilisateurs sur cette liste. -
    - notifier les modérateurs. -
    - diffusion :
    - l'envoi d'un mail à cette liste est-il libre, modéré lorsque l'expéditeur n'appartient pas à la liste - ou modéré dans tous les cas ? -
    - libre
    - modérée pour les extérieurs
    - modérée -
    - inscription libre ou modérée :
    - détermine si les inscriptions à la liste sont modérées ou non. -
    - inscription modérée. -
    - antispam :
    - détermine la politique de l'antispam sur cette liste. -
    -
    - que faire des mails marqués « [spam probable] » ?
    -
    -
    -
    - -
    -
    - que faire des mails dont le classement est indéterminé** ?
    -
    - -
    - -
    - *La troisième option permet de supprimer automatiquement les spams sûrs à plus de 99,9999%, qui sont donc peu susceptibles - d'être des faux-positifs.
    - **Certains mails ne sont pas classables par l'antispam qui le signale en indiquant que le mail est "Unsure". Ces - mails contiennent statistiquement autant de spams que de non-spams, mais ceci peut varier d'une adresse à l'autre. - Cette option te permet de choisir si tu préfères que les mails 'Unsures' soient modérés ou envoyés directement - à la liste. -
    - -
    -
    - -
    -
    - -{if $details.diff eq 1} - -

    - Adresses non modérées de {$details.addr} -

    -

    -Les envois des personnes utilisant ces adresses ne sont pas modérés. -

    - -

    -Attention, cette liste est à utiliser pour des non-X ou des non-inscrits à la liste : -

    -

    -les X inscrits à la liste doivent ajouter leurs adresses usuelles parmis leurs adresses de -redirection en mode 'inactif'. le logiciel de mailing list saura se débrouiller tout seul. -

    - -
    - - - - - - - - -
    Adresses non modérées
    - {if $options.accept_these_nonmembers|@count} - {foreach from=$options.accept_these_nonmembers item=addr} - {$addr} - {icon name=cross title="retirer de la whitelist"} -
    - {/foreach} - {else} - vide - {/if} -
    - -   - -
    -
    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/lists/soptions.tpl b/templates/lists/soptions.tpl deleted file mode 100644 index b2a3d1b..0000000 --- a/templates/lists/soptions.tpl +++ /dev/null @@ -1,91 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{include file="lists/header_listes.tpl" on=soptions} - -

    - Changer les options de la liste {$details.addr} -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    Options de la liste {$details.addr}
    - msg_header :
    - ajouté au début de tous les messages. -
    - -
    - msg_footer :
    - ajouté à la fin de tous les messages. -
    - -
    Options avancées de la liste {$details.addr}
    - visibilité :
    - si coché, la liste sera listée dans la page de l'ensemble des listes - (les listes d'admin doivent être décochées). -
    - - publique -
    - archive :
    - liste archivée ? -
    - - liste archivée -
    - max_message_size :
    - taille maximale des posts en Ko. -
    - Ko -
    - -
    -
    - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/broken.tpl b/templates/marketing/broken.tpl deleted file mode 100644 index 330e8a4..0000000 --- a/templates/marketing/broken.tpl +++ /dev/null @@ -1,94 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $sent} - -

    - Merci de nous avoir communiqué cette information ! -

    - -{elseif $user && !$user.alive} -

    - {$user.prenom} {$user.nom} (X{$user.promo}) est malheureusement décédé{if $user.sexe}e{/if}. - Nous ne réaliserons maintenance sur son adresse Polytechnique.org qu'à la demande explicite - de sa famille. Pour tout renseignement, merci de - contacter le support. -

    - -{elseif $user} -

    - Recherche d'adresses pour {$user.nom} {$user.prenom} (X{$user.promo}) -

    - -{if !$user.email} -

    - Avec le temps, toutes les adresses de redirection de notre camarade sont devenues invalides et produisent - des erreurs lorsqu'on lui envoie un mail. Nous sommes donc à la recherche d'adresses valides où nous pourrions - contacter ce camarade. -

    -{elseif $user.last} -

    - {$user.prenom} a encore des adresses de redirection actives malgré des pannes détectées sur certaines d'entre elles. Si - tu es sûr{if $smarty.session.femme}e{/if} que son adresse Polytechnique.org est en panne, tu peux proposer une nouvelle - adresse mail à ajouter à ses redirections. Merci d'ajouter un commentaire pour nous indiquer la raison de cette proposition. -

    -{else} -

    - Nous n'avons actuellement enregistré aucune panne sur les adresses de redirection de {$user.prenom}. Si tu es - sûr{if $smarty.session.femme}e{/if} que son adresse de redirection actuelle est en panne, tu peux nous proposer - une nouvelle adresse, accompagnée d'un commentaire nous expliquant les raisons exactes de cette proposition. -

    -{/if} -

    - Les adresses email que tu pourras nous donner ne seront pas ajoutées directement aux redirections de {$user.prenom}. - Nous allons d'abord prendre contact avec {if $user.sexe}elle{else}lui{/if} pour savoir {if $user.sexe}si elle {else}s'il {/if} - accepte la mise à jour de sa redirection. -

    -

    - Merci de ta participation active à l'amélioration de notre qualité de service. -

    - -
    - - - - - - - {if $user.email} - - - - - {/if} -
    Proposition d'adresse pour
    {$user.nom} {$user.prenom} (X{$user.promo})
    Adresse email : - -
    Explication :
    -
    - -
    -
    -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/index.tpl b/templates/marketing/index.tpl deleted file mode 100644 index e01068e..0000000 --- a/templates/marketing/index.tpl +++ /dev/null @@ -1,68 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Marketing Polytechnique.org

    - - - - - - - - -
    actions disponibles
    - Chercher un non inscrit -   |   - Marketing promo -   |   - Adresses données par les inscrits -
    - -
    - -

    -Nombre d'X vivants d'après notre base de données : {$stats.vivants}
    -Nombre d'X vivants inscrits à Polytechnique.org : {$stats.inscrits}
    -Soit un pourcentage d'inscrits de : {$stats.ins_rate} %
    -

    - -

    -Parmi ceux-ci :
    -Nombre d'X vivants depuis 1972 d'après notre base de données : {$stats.vivants72}
    -Nombre d'X vivants depuis 1972 inscrits à Polytechnique.org : {$stats.inscrits72}
    -Soit un pourcentage d'inscrits de : {$stats.ins72_rate} %
    -

    - -

    -Nombre de Polytechniciennes vivantes : {$stats.vivantes}
    -Nombre de Polytechniciennes vivantes et inscrites : {$stats.inscrites}
    -Soit un pourcentage d'inscrites de : {$stats.inse_rate} %
    -

    - -

    -Nombre d'inscrits ces 7 derniers jours : {$nbInsSem}
    -Nombre d'inscriptions en cours (2ème phase non terminée) : {$nbInsEnCours}
    -Nombre d'envois marketing effectués n'ayant pas abouti : {$nbInsMarket}
    -Nombre d'envois marketing ayant abouti cette semaine : {$nbInsMarkOK} -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/marketing.mail.tpl b/templates/marketing/marketing.mail.tpl deleted file mode 100644 index ea7f0de..0000000 --- a/templates/marketing/marketing.mail.tpl +++ /dev/null @@ -1,45 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -{if $u.sexe}Chère{else}Cher{/if} Camarade, - -{$intro} - -========================================================== -{#globals.baseurl#}/register/%%hash%% -========================================================== - -Il ne te faut que 5 minutes sur https://www.polytechnique.org/ pour rejoindre la communauté polytechnicienne sur le web grâce aux services de Polytechnique.org dont profitent déjà {$num_users} camarades. Cela te permettra, entre autres, de contacter un X en connaissant seulement son nom et son prénom et de bénéficier à vie d'une adresse prestigieuse {$u.forlife}@polytechnique.org et de son alias discret {$u.forlife}@m4x.org (m4x = mail for X). - -Pas de nouvelle boîte aux lettres à relever, il suffit de la rediriger vers ton adresse personnelle et/ou professionnelle que tu indiques et que tu peux changer à ta guise, sans que tes correspondants n'aient à actualiser leur carnet d'adresses. - -De plus, le site web offre des services d'annuaire avec recherche multi-critères, de forums, de mailing-lists. Ce portail est géré par une vingtaine de jeunes camarades, avec le soutien et les conseils de nombreux X de toutes promotions, incluant notamment des camarades de la Kès et de l'AX. Les serveurs sont hébergés au sein même de l'École polytechnique, sur une connexion rapide, et les services évoluent en fonction des besoins exprimés par la communauté sur Internet. - -N'hésite pas à parler de Polytechnique.org à nos camarades pas encore inscrits et à nous écrire pour nous proposer toute amélioration ou suggestion. - -À bientôt sur Polytechnique.org , - -Bien cordialement, - --- -{$sign} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/private.tpl b/templates/marketing/private.tpl deleted file mode 100644 index b09926c..0000000 --- a/templates/marketing/private.tpl +++ /dev/null @@ -1,142 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Marketing de {$prenom} {$nom}

    - -

    Matricules

    - -Matricule polytechnique.org : {$matricule} -{if $matricule_X} -
    -Matricule École (à rentrer lors de l'inscription) : {$matricule_X} -{/if} - -{if $pending} - -

    Inscription en cours

    - -

    -Cet utilisateur a une inscription en cours depuis le {$pending|date_format}. -

    -

    -{if $relance eq '0000-00-00'} -il n'a jamais été relancé. -{else} -sa dernière relance date du {$relance|date_format} -{/if} -

    - -

    [le relancer]

    - -{/if} - -

    Adresses connues

    - -
    - - - - - - - - - - {iterate from=$addr item=a} - - - - - - - - - {/iterate} - - - - - - - - - -
    AdresseMarketeurDateEnvoisNb. 
    {$a.email}{$a.alias} {if $a.type eq user}(*){/if}{$a.date|date_format|default:'-'}{$a.last|date_format|default:'-'}{$a.nb|default:"-"} - del
    - relance -
    (*): mail perso
    - - - - - -
    -
    - -{if $rel_to} -
    - - - - - - - - - - - - - - - - - - - - -
    Edition du mail de relance
    From: - {if $rel_from_staff neq $rel_from_user} - - {else} - {$rel_from_staff} - {/if} -
    To: - - -
    Objet:
    Message: - -
    -
    - - -
    -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/promo.tpl b/templates/marketing/promo.tpl deleted file mode 100644 index c887968..0000000 --- a/templates/marketing/promo.tpl +++ /dev/null @@ -1,83 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - [<<] - [<] - -   - Promo: -   - - [>] - [>>] -
    -
    - -
    - - - -
    - -
    - - - - - - - - {iterate from=$nonins item=it} - - - - - - - {/iterate} -
    NomDernière adresse connueStatut 
    {$it.nom} {$it.prenom}{if $it.last_known_email}{mailto address=$it.last_known_email}{/if} - {if $it.dern_rel && $it.dern_rel != '0000-00-00'} - Relance le: {$it.dern_rel} - {elseif $it.email} - En cours : {$it.email} - {else} - - - {/if} - - {icon name=wrench title="Marketing"} - {* - *}{icon name=user_gray title="fiche AX"} -
    -
    - -

    -{$nonins->total()} Polytechniciens de la promo {$promo} ne sont pas inscrits ! -

    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/public.tpl b/templates/marketing/public.tpl deleted file mode 100644 index 34f98f4..0000000 --- a/templates/marketing/public.tpl +++ /dev/null @@ -1,105 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $already} - -

    -Merci de nous avoir communiqué cette information ! -

    -

    -Nous avions déjà connaissance de cette adresse, nous espérons donc comme toi que {$prenom} va s'inscrire au plus vite. -

    -

    -Si tu le connais personnellement, un petit mail pour lui expliquer les atouts de Polytechnique.org -peut sans aucun doute l'aider à se décider ! -

    - -{elseif $ok} - -

    - Merci de nous avoir communiqué cette information ! Un administrateur de Polytechnique.org va - envoyer un email de proposition d'inscription à Polytechnique.org à {$prenom} {$nom} dans les - toutes prochaines heures (ceci est fait à la main pour vérifier qu'aucun utilisateur malveillant - ne fasse mauvais usage de cette fonctionnalité...). -

    -

    - Merci de ton aide à la reconnaissance de notre site ! Tu seras informé par email de - l'inscription de {$prenom} {$nom} si notre camarade accepte de rejoindre la communauté des X sur - le web ! -

    - -{else} - -{if $prenom} -

    - Et si nous proposions à {$prenom} {$nom} de s'inscrire à Polytechnique.org ? -

    - -

    - En effet notre camarade n'a pour l'instant pas encore rejoint la communauté des X sur le web... - C'est dommage, et en nous indiquant son adresse email, tu nous permettrais de lui envoyer une - proposition d'inscription. -

    -

    - Si tu es d'accord, merci d'indiquer ci-dessous l'adresse email de {$prenom} {$nom} si tu la - connais. Nous nous permettons d'attirer ton attention sur le fait que nous avons besoin d'être - sûrs que cette adresse est bien la sienne, afin que la partie privée du site reste uniquement - accessible aux seuls polytechniciens. Merci donc de ne nous donner ce renseignement uniquement si - tu es certain de sa véracité ! -

    -

    - Nous pouvons au choix lui écrire au nom de l'équipe Polytechnique.org, ou bien, si tu le veux - bien, en ton nom. A toi de choisir la solution qui te paraît la plus adaptée !! Une fois {$prenom} - {$nom} inscrit, nous t'enverrons un email pour te prévenir que son inscription a réussi. -

    - -
    - - - - - - - - - - - - -
    Nom :{$nom}
    Prénom :{$prenom}
    Promo :{$promo}
    Adresse email : - -
    Nous lui écrirons : - en ton nom
    - au nom de l'équipe Polytechnique.org -
    -
    -
    - -
    -
    -{/if} - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/relance.mail.tpl b/templates/marketing/relance.mail.tpl deleted file mode 100644 index d682032..0000000 --- a/templates/marketing/relance.mail.tpl +++ /dev/null @@ -1,56 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="marketing_relance"} -{if $mail_part eq 'head'} -{subject text="$subj"} -{from full=#from#} -{to addr="$lemail"} -{elseif $mail_part eq 'text'} -Cher camarade, - -Il y a quelques temps, le {$fdate}, tu as commencé ton inscription à Polytechnique.org. Tu n'as toutefois pas tout à fait terminé cette inscription, aussi nous nous permettons de te renvoyer cet email pour te rappeler tes paramètres de connexion, au cas où tu souhaiterais la terminer, et accéder à l'ensemble des services que nous offrons aux {$nbdix} polytechniciens déjà inscrits : emails à vie, annuaire en ligne, etc. - -UN SIMPLE CLIC sur le lien ci-dessous et ton compte sera activé ! - -Après activation, tes paramètres seront : - -login : {$lusername} -mot de passe : {$nveau_pass} - -(ceci annule les paramètres envoyés par le mail initial) - -Rends-toi sur la page web suivante afin d'achever ton inscription, et de changer ton mot de passe : - -{$baseurl}/register/end/{$lins_id} - -Si le lien ci-dessus ne fonctionne pas en cliquant dessus, copie le intégralement dans la barre d'adresse de ton navigateur. - -En cas de difficulté, nous sommes bien entendu à ton entière disposition ! - -Bien cordialement, - --- -L'équipe de Polytechnique.org, -Le portail des élèves & anciens élèves de l'École polytechnique -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/relance.tpl b/templates/marketing/relance.tpl deleted file mode 100644 index 2fe9508..0000000 --- a/templates/marketing/relance.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Relance

    - -{foreach from=$sent item=l} -

    {$l}

    -{/foreach} - -
    - - - - - - - - - {iterate from=$relance item=it} - - - - - - - - {/iterate} -
    DatePromoNomDernière relance 
    {$it.date}{$it.promo}{$it.nom} {$it.prenom} - {if $it.relance eq "0000-00-00"}Jamais{else}{$it.relance}{/if} - - -
    - -

    - {$relance->total()} Polytechniciens n'ont pas effectué jusqu'au bout leur inscription. -

    -
    - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/this_week.tpl b/templates/marketing/this_week.tpl deleted file mode 100644 index 946a8ce..0000000 --- a/templates/marketing/this_week.tpl +++ /dev/null @@ -1,61 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Inscrits des 7 derniers jours

    - -

    -{$ins->total()} Polytechniciens se sont inscrits ces 7 derniers jours ! -

    - -
    - [par date] - [par promo] -
    - - - - - - - -{iterate item=in from=$ins} - - - - - -{/iterate} -
    InscriptionPromoNom
    {$in.date_ins|date_format:"%x %X"} - {$in.promo} - - - {$in.nom} {$in.prenom} -
    - -
    - [par date] - [par promo] -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/marketing/volontaire.tpl b/templates/marketing/volontaire.tpl deleted file mode 100644 index 3195411..0000000 --- a/templates/marketing/volontaire.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Marketing volontaire

    - -

    -Choix de la promo : -

    -

    -{foreach from=$promos item=p} -{$p} -{cycle values=",,,,,,,,,,,,,,
    "} -{/foreach} -

    - -{if $addr} - -

    [Marketing promo pour la promo {$platal->argv[1]}]

    - -{if $addr->total()} -

    Marketing volontaire

    - - - - - - - {iterate from=$addr item=it} - - - - - - {/iterate} -
    Camarade concernéAdresse email"informateur"
    {$it.nom} {$it.prenom}{$it.email}{$it.forlife}
    -{else} -

    -pas d'informations pour les gens de cette promo -

    -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/admin.tpl b/templates/newsletter/admin.tpl deleted file mode 100644 index ccf6a48..0000000 --- a/templates/newsletter/admin.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Lettre de Polytechnique.org -

    - - - - - - - - - - {foreach item=nl from=$nl_list} - - - - - {/foreach} -
    datetitre
    Créer une nouvelle lettre
    {$nl.date|date_format} - {$nl.titre|default:"[no title]"} -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/edit.tpl b/templates/newsletter/edit.tpl deleted file mode 100644 index ab5c48e..0000000 --- a/templates/newsletter/edit.tpl +++ /dev/null @@ -1,215 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Lettre de Polytechnique.org de {$nl->_date|date_format:"%B %Y"} -

    - -{if !$art} - -

    -[liste] -[visualiser] -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Propriétés de la newsletter -
    - ID - - {$nl->_id} -
    - Nom - - - (Ex : 2006-06 pour la NL de juin 2006) -
    - Titre du mail - - -
    - Titre - - -
    - Date d'envoi - - -
    - Intro de la lettre - - -
    - -
    -
    - -
    - - - - - - - {foreach from=$nl->_arts item=arts key=cat} - - - - - {foreach from=$arts item=art} - - - - - {/foreach} - {/foreach} -
    - Créer un nouvel article ... - - {icon name=add title="créer"} -
    - {$nl->_cats[$cat]|default:"[no cat]"} -
    -
    {$art->toText('%hash%','%login%')}
    -
    - Pos: {$art->_pos}
    - {icon name="page_edit" title="Editer"} - {icon name="delete" title="Supprimer"} -
    - -{else} - -

    -[retour] -

    - -{if !$art->check()}

    article trop long !

    {/if} - - - - - - - - - -
    Version texte
    {$art->toText()}
    Version html
    -
    - {$art->toHtml()|smarty:nodefaults} -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Éditer un article -
    Sujet - -
    Catégorie - -
    Position - -
    Contenu - -
    Ajouts (emails, contacts, tarifs, site web, ...) - -
    - {icon name=information} Voir la documentation du wiki -
    - - -
    -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/index.tpl b/templates/newsletter/index.tpl deleted file mode 100644 index 72b3a8f..0000000 --- a/templates/newsletter/index.tpl +++ /dev/null @@ -1,69 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Lettre de Polytechnique.org -

    - - -

    - {icon name=page_edit value="Proposer un article"} Proposer un article pour la lettre mensuelle -

    - -

    Ton statut

    - -{if $nls} -

    -Tu es actuellement inscrit à la lettre mensuelle de Polytechnique.org (pour choisir le format HTML ou texte, rends toi sur la page des préférences). -

    - -{else} -

    -Tu n'es actuellement pas inscrit à la lettre mensuelle de Polytechnique.org. -

    - -{/if} - -

    Les archives

    - - - - - - - {foreach item=nl from=$nl_list} - - - - - {/foreach} -
    datetitre
    {$nl.date|date_format} - {$nl.titre} -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/nl.mail.tpl b/templates/newsletter/nl.mail.tpl deleted file mode 100644 index cd6ecd3..0000000 --- a/templates/newsletter/nl.mail.tpl +++ /dev/null @@ -1,132 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="newsletter"} -{if $mail_part eq 'head'} -{from full=#from#} -{subject text=$nl->title(true)} -{if isset(#replyto#)}{add_header name='Reply-To' value=#replyto#}{/if} -{if isset(#retpath#)}{add_header name='Return-Path' value=#retpath#}{/if} -{elseif $mail_part eq 'text'} -{if !$is_mail} -
    -{/if}
    -====================================================================
    -{$nl->title()}
    -====================================================================
    -
    -{$nl->head($prenom, $nom, $sexe, 'text')}
    -
    -
    -{foreach from=$nl->_arts key=cid item=arts name=cats}
    -{$smarty.foreach.cats.iteration} *{$nl->_cats[$cid]}*
    -{foreach from=$arts item=art}
    -- {$art->title()}
    -{/foreach}
    -
    -{/foreach}
    -
    -{foreach from=$nl->_arts key=cid item=arts}
    ---------------------------------------------------------------------
    -*{$nl->_cats[$cid]}*
    ---------------------------------------------------------------------
    -
    -{foreach from=$arts item=art}
    -{$art->toText($hash, $alias)}
    -
    -{/foreach}
    -{/foreach}
    -
    ---------------------------------------------------------------------
    -Cette lettre est envoyée à tous les Polytechniciens sur Internet par
    -l'intermédiaire de Polytechnique.org.
    -
    -{if $is_mail}
    -archives         : 
    -écrire           : 
    -ne plus recevoir : 
    -{else}
    -archives         : <https://www.polytechnique.org/nl>
    -écrire           : <https://www.polytechnique.org/nl/submit>
    -ne plus recevoir : <https://www.polytechnique.org/nl/out>
    -{/if}
    -{if !$is_mail}
    -
    -{/if} -{elseif $mail_part eq 'html'} -{if $is_mail} - - - - - Lettre mensuelle de Polytechnique.org - - - -
    -{/if} -
    -
    {$nl->title()}
    -
    {$nl->head($prenom, $nom, $sexe, 'html')|smarty:nodefaults}
    - - {foreach from=$nl->_arts key=cid item=arts name=cats} -
    - {$smarty.foreach.cats.iteration}. {$nl->_cats[$cid]}
    - {foreach from=$arts item=art} -   - {$art->title()}
    - {/foreach} -
    - {/foreach} - - {foreach from=$nl->_arts key=cid item=arts name=cats} -

    - {$nl->_cats[$cid]} -

    - {foreach from=$arts item=art} - {$art->toHtml($hash, $alias)|smarty:nodefaults} - - {/foreach} - {/foreach} -
    - Cette lettre est envoyée à tous les Polytechniciens sur Internet par l'intermédiaire de Polytechnique.org. -
    - -
    -{if $is_mail} -
    - - -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/show.tpl b/templates/newsletter/show.tpl deleted file mode 100644 index 53fb976..0000000 --- a/templates/newsletter/show.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Lettre de Polytechnique.org du {$nl->_date|date_format} -

    - -

    - {if $smarty.get.text} - [version HTML] - {else} - [version Texte] - {/if} - {if hasPerm('admin')} - [Éditer] - {/if} -

    - -{include file="include/massmailer-nav.tpl" mm=$nl base=nl} - -
    -
    - -
    -
    - - - - - - -
    {$nl->title(true)}
    - {include file="newsletter/nl.mail.tpl" escape=true} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/newsletter/submit.tpl b/templates/newsletter/submit.tpl deleted file mode 100644 index 94e5889..0000000 --- a/templates/newsletter/submit.tpl +++ /dev/null @@ -1,137 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Proposer un article pour la prochaine Lettre mensuelle

    - -{if $submited} - -

    -Ton article a bien été pris en compte. -

    - -

    -Nous te recontacterons éventuellement (certainement vers la fin du mois) si nous avons des -renseignements à te demander à son sujet ! -

    - -{else} - - -{if $art} - -{if !$art->check()} -

    -L'article que tu as proposé est trop long !
    -Il te faut te limiter à 8 lignes de 68 caractères. -

    -{/if} - -
    - - - - - - - - - - {if $art->check()} - - - - - - - - - - {/if} -
    Version texte
    {$art->toText()}
    Version html
    -
    - {$art->toHtml()|smarty:nodefaults} -
    -
    Soumettre
    - Si tu es content de ton article, tu peux le soumettre. - Sinon, tu peux continuer à l'éditer en dessous. -
    - - - - -
    -
    - -
    - -{/if} - -

    Proposer un article

    - -

    -Tu peux lire les conseils de rédaction avant de proposer ton article. -

    -
    - - - - - - - - - - - - - - - - - - - - - - - -
    Proposer un article
    Sujet - -
    Contenu - -
    Ajouts (emails, contacts, tarifs, site web, ...) - -
    - - {icon name=information title="Syntaxe wiki"} Voir les marqueurs de mise en forme autorisés - -
    - -
    -
    - - -{include wiki=Xorg.LettreMensuelle} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/payment/index.tpl b/templates/payment/index.tpl deleted file mode 100644 index e7b0a49..0000000 --- a/templates/payment/index.tpl +++ /dev/null @@ -1,169 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Télépaiements

    - -{if $smarty.request.op eq "submit" and !$pl_errors} - - - - - - - - - - - - - -{if $comment} - - - -{/if} - - - - -
    Paiement via {$meth->text}
    Transaction{$pay->text}
    Montant{$montant} €
    Commentaire - {$comment}
      -
    -
    - - {foreach from=$pay->api->infos.commercant key="name" item="value"} - - {/foreach} - - {foreach from=$pay->api->infos.client key="name" item="value"} - - {/foreach} - - {foreach from=$pay->api->infos.commande key="name" item="value"} - - {/foreach} - - - {foreach from=$pay->api->infos.divers key="name" item="value"} - - {/foreach} - -
    -
    -
    -

    -En cliquant sur "Valider", tu seras redirigé{if $smarty.session.sexe}e{/if} vers le site de {$pay->api->nomsite}, où il te -sera demandé de saisir ton numéro de carte bancaire. Lorsque le paiement aura été effectué, tu -recevras une confirmation par email. -

    -{if $pay->api->text} -

    -{$pay->api->text} -

    -{/if} -{if $evtlink} -

    -Si tu n'es pas encore inscrit à cet événement, n'oublie pas d'aller t'inscrire. -

    -{/if} - -{else} - - - -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - -
    Effectuer un télépaiement
    Transaction - {if $asso} - {$pay->text} - {else} - - {/if} - {if $pay->url} -
    - plus d'informations - {/if} -
    Méthode - -
    Montant
    Commentaire
      - - -
    -
    - -{if $transactions} -

    Tu as déjà effectué des paiements pour cette transaction :

    - - -{iterate from=$transactions item=t} - - - - -{/iterate} -
    DateMontant
    {$t.timestamp|date_format}{$t.montant|replace:'EUR':'€'}
    -{/if} - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/payment/retour_paypal.tpl b/templates/payment/retour_paypal.tpl deleted file mode 100644 index 40df8fe..0000000 --- a/templates/payment/retour_paypal.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Télépaiements

    - -{if $erreur} -

    Aucun paiement n'a été effectué.

    -{else} -

    Merci de nous avoir fait confiance pour ton paiement. La transaction -est terminée et s'est déroulée correctement. Tu vas recevoir un email accusant -réception de ton paiement.

    - -

    {$texte|nl2br}

    -{/if} -

    [retour aux Télépaiements]

    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/payment/xnet.tpl b/templates/payment/xnet.tpl deleted file mode 100644 index ebcd950..0000000 --- a/templates/payment/xnet.tpl +++ /dev/null @@ -1,151 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Gestion des télépaiements

    - -

    -Voici la liste des paiements en ligne possible pour le groupe {$asso.nom} : -

    - -{foreach from=$titres item=p} - -
    -{icon name=money title="Télépaiement"}{$p.text} - -{if $event[$p.id]} -{assign var='ev' value=$event[$p.id]} -

    - {if $p.url} - Plus d'informations sur ce télépaiement sont disponibles sur cette page.
    - {/if} - {if $ev.eid} - Ce paiement est associé à l'événement {$ev.title}.
    - {if $ev.ins} - Tu es inscrit à cet événements. - {if $ev.topay > $ev.paid} - - Tu dois encore payer {math equation="a-b" a=$ev.topay b=$ev.paid}€ - - {elseif $ev.topay eq $ev.paid} - Tu as déjà réglé l'intégralité de ton inscription ({$ev.topay}€). - {else} - Tu as réglé {$ev.paid}€ alors que tu n'en devais que {$ev.topay}€. - {/if} - {else} - Tu peux t'inscire à cet événement. - {/if} - {else} - {if !$ev.paid} - Tu n'as actuellement rien payé sur ce télépaiement. - {else} - Tu as déjà payé {$ev.paid}€. - {/if} - {/if} -

    -{/if} - -{if $is_admin && $trans[$p.id]} -

    Liste des personnes ayant payé (pour les administrateurs uniquement) :

    - - - - - - - - - {assign var="somme" value=0} - {foreach from=$trans[$p.id] item=p name=people} - {if $p.nom neq "somme totale"} - - - - - - - - - {elseif $smarty.foreach.people.first} - - - - {else} - - - - - {/if} - {/foreach} -
    - {if $order eq 'timestamp'} - - - {else} - - {/if}Date - - {if $order eq 'nom'} - - - {else} - {/if} - NOM Prénom - - {if $order eq 'promo'} - - - {else} - - {/if}Promo - - {if $order eq 't.comment'} - - - {else} - - {/if}Commentaire - - {if $order eq 'montant'} - - - {else} - - {/if}Montant -
    {$p.date|date_format:"%d/%m/%y"} - - {$p.nom|strtoupper} {$p.prenom} - - - {icon name=email title="mail"} - {$p.promo}{$p.comment|comment_decode}{$p.montant}
    Personne n'a encore payé pour ce télépaiement.
    Total {$p.montant}
    -{/if} -
    - -{foreachelse} - -

    -Pas de télépaiement en cours ... -

    - -{/foreach} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/acces_smtp.tpl b/templates/platal/acces_smtp.tpl deleted file mode 100644 index 7e21a31..0000000 --- a/templates/platal/acces_smtp.tpl +++ /dev/null @@ -1,128 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    -{if $actif}Modification du mot de passe SMTP/NNTP{else}Activation de ton compte SMTP/NNTP{/if} -

    - -{literal} - -{/literal} - -

    -{if $actif} - Clique sur "Supprimer" si tu veux supprimer ton compte SMTP/NNTP. -{else} - Pour activer un compte SMTP/NNTP sur ssl.polytechnique.org, tape un mot de passe ci-dessous. -{/if} -

    -
    - - - - - - - - - - - - - - - - -
    - Mot de passe :
    - 15 caractères max. -
    - -
    - Retape-le une fois : - - -
    Sécurité{checkpasswd prompt="smtppass1" submit="valid"}
    - - -{if $actif} -    -{/if} -
    -
    -

    - {icon name=error title="Attention"} Nous te déconseillons fortement d'utiliser le même - mot de passe que pour la connexion au site. En effet ce mot de passe sert à accéder à des - services moins sécurisés qui nécessitent l'enregistrement de celui-ci en clair - dans notre base de données. -

    -

    - Ce mot de passe peut être le même que celui d'accès au site. Il doit faire au - moins 6 caractères quelconques. Attention au type de clavier que tu - utilises (qwerty?) et aux majuscules/minuscules. -

    - -{if $smarty.request.doc eq "nntp"} -

    - Pourquoi et comment utiliser le serveur SMTP de {#globals.core.sitename#}.
    -

    -{include wiki=Xorg.NNTPSecurise} -{elseif $smarty.request.doc eq "smtp"} -

    - Pourquoi et comment utiliser le serveur NNTP de {#globals.core.sitename#}.
    -

    -{include wiki=Xorg.SMTPSecurise} -{else} -

    -
    - Pourquoi et comment utiliser le serveur SMTP de {#globals.core.sitename#}.
    - Pourquoi et comment utiliser le serveur NNTP de {#globals.core.sitename#}. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/changeLog.tpl b/templates/platal/changeLog.tpl deleted file mode 100644 index e5574be..0000000 --- a/templates/platal/changeLog.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -

    ChangeLog

    -

    Voici la liste des modifications faites sur plat/al, le support libre de ce site.

    -{$ChangeLog|smarty:nodefaults} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/exit.tpl b/templates/platal/exit.tpl deleted file mode 100644 index 1542b68..0000000 --- a/templates/platal/exit.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Déconnexion {if $smarty.cookies.ORGaccess}partielle {/if}effectuée -

    -

    -Merci et à bientôt ! -

    - -{if $smarty.cookies.ORGaccess} - -

    -Tu as demandé la connexion permanente donc cette déconnexion ne t'empêche pas d'utiliser la plupart -des fonctionnalités de consultation du site. -

    -

    -Tu peux donc aussi te déconnecter complètement. -

    -

    -De plus, ton adresse e-mail est toujours en mémoire dans ton navigateur afin de faciliter ta -prochaine connexion. Si tu utilises un ordinateur public ou que tu désires l'effacer, tu peux -supprimer cette information et te déconnecter complètement. -

    - -{elseif $smarty.cookies.ORGuid} - -

    -Ton adresse e-mail est toujours en mémoire dans ton navigateur afin de faciliter ta prochaine -connexion. Si tu utilises un ordinateur public ou que tu désires l'effacer, tu peux -supprimer cette information. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/filrss.tpl b/templates/platal/filrss.tpl deleted file mode 100644 index c7968ff..0000000 --- a/templates/platal/filrss.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Fil RSS

    - -{if !$smarty.session.core_rss_hash} -

    - Tu viens de cliquer sur le lien d'activation des fils RSS. Les fils RSS du site - ne sont pas activés dans tes préférences. -

    -
      -
    • - Tu peux le faire tout de suite en cliquant sur Activer ci-dessous. -
    • -
    • - Qu'est-ce qu'un fil RSS ? -
    • -
    • - Comment configurer un agregateur RSS ? -
    • -
    - -
    -
    - - - -
    -
    - -{else} -En voici les adresses : - -

    -Tu peux le désactiver en allant dans Préférences et en cliquant sur "désactiver les fils RSS". -

    -

    -Attention: désactiver, puis réactiver le fil RSS en change l'adresse. -

    -

    [retour à la page dont tu venais]

    -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/index.tpl b/templates/platal/index.tpl deleted file mode 100644 index 1230abf..0000000 --- a/templates/platal/index.tpl +++ /dev/null @@ -1,91 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Bienvenue sur le portail des élèves et anciens élèves de l'X !

    - -

    - {#globals.core.sitename#} est le site qui connecte la communauté des - polytechniciens. Il comporte une partie publique et une partie privée - réservée aux polytechniciens. -

    - -
    - -Si vous êtes un recruteur ou une entreprise, / if you are a recruiter or a company, -
      -
    • - vous avez la possibilité - d'utiliser le site - Manageurs.com pour rentrer en contact avec les - polytechniciens, mettre en ligne des offres d'emploi, consulter l'annuaire - inter-écoles et consulter la base de données de CV. -
    • -
    • - you can access - Manageurs.com to get in touch with alumni and students of - Ecole Polytechnique, submit job offers, use the directory and browse the - resume database. -
    • -
    - -Si vous êtes polytechnicien, - - -

    - Vous pouvez consulter la - liste de ce que vous apporte {#globals.core.sitename#} si vous - hésitez à vous inscrire ! -

    - -
    - -

    Dans tous les cas, vous pouvez :

    - - -

    - Bonne visite ! -
    L'équipe {#globals.core.sitename#} -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/motdepasse.success.tpl b/templates/platal/motdepasse.success.tpl deleted file mode 100644 index 44dd82e..0000000 --- a/templates/platal/motdepasse.success.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Changer de mot de passe -

    - -

    -Mot de passe enregistré le {$smarty.now|date_format} -

    -

    - Attention! Il est crypté irréversiblement, - donc non récupérable. Pour retrouver un accès au site - consécutivement à une perte de mot de passe, la procédure - est longue et laborieuse... -

    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/motdepasse.tpl b/templates/platal/motdepasse.tpl deleted file mode 100644 index 10ec28f..0000000 --- a/templates/platal/motdepasse.tpl +++ /dev/null @@ -1,90 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Changer de mot de passe -

    - -

    - Ton mot de passe doit faire au moins 6 caractères quelconques et au plus 10 caractères. Attention - au type de clavier que tu utilises (qwerty?) et aux majuscules/minuscules. -

    -

    - Pour une sécurité optimale, ton mot de passe circule de manière chiffrée (https) et est - stocké chiffrée irréversiblement sur nos serveurs. -

    -
    -
    - - - - - - - - - - - - - - - - - - - -
    - Saisie du nouveau mot de passe -
    - Mot de passe : - - -
    - Retape-le une fois : - - -
    - Sécurité - - {checkpasswd prompt="nouveau" submit="submitn"} -
    - -
    -
    -
    -

    -{xsrf_token_field} - -

    -
    - -

    - Note bien qu'il s'agit là du mot de passe te permettant de t'authentifier sur le site {#globals.core.sitename#} ; - le mot de passe te permettant d'utiliser le serveur SMTP et NNTP - de {#globals.core.sitename#} (si tu as activé l'accès SMTP et NNTP) - est indépendant de celui-ci et tu peux le modifier ici. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/preferences.tpl b/templates/platal/preferences.tpl deleted file mode 100644 index ba93ab2..0000000 --- a/templates/platal/preferences.tpl +++ /dev/null @@ -1,127 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    - Préférences -

    - - - - - - - - - - - - - - - - - -
    - Configuration des différents services du site -
    -

    Mes adresses de redirection

    -
    - Tu peux configurer tes différentes redirections de mails ici. -
    -
    -

    Mon alias mail @{#globals.mail.alias_dom#}

    -
    - Pour choisir un alias @{#globals.mail.alias_dom#}/{#globals.mail.alias_dom2#} (en choisir un nouveau annule l'ancien). -
    -
    -

    Ma redirection de page WEB

    -
    - Tu peux configurer tes redirections WEB - http://www.carva.org/{$smarty.session.bestalias}. -
    -
    -

    Apparence du site (skins)

    -
    - Tu peux changer les couleurs et les images du site. -
    -
    - {if $smarty.session.mail_fmt eq html} -

    - Recevoir les mails en format texte -

    -
    - Tu recois tous les mails envoyés par le site - (lettre mensuelle, carnet, ...) de préférence - sous forme de html -
    - {else} -

    - Recevoir les mails en HTML -

    -
    - Tu recois tous les mails envoyés par le site - (lettre mensuelle, carnet, ...) de préférence - sous forme de texte -
    - {/if} -
    -

    - {if $smarty.session.core_rss_hash} - Désactiver les fils rss - {else} - Activer les fils rss - {/if} -

    -
    - Ceci te permet d'utiliser les fils rss du site. - Attention, désactiver puis réactiver les fils en change les URL ! -
    -
    - -
    - - - - - - - - - - - -
    Mots de passe et accès au site
    -

    Changer mon mot de passe pour le site

    -
    - permet de changer ton mot de passe pour accéder au site {#globals.core.sitename#} -
    -
    -

    Gérer l'accès SMTP et NNTP

    -
    - Pour activer ton compte sur le serveur SMTP et NNTP de {#globals.core.sitename#}, - ou changer le mot de passe correspondant si tu as déjà activé l'accès. - Cela te permet d'envoyer tes mails plus souplement (SMTP), et de consulter - les forums directement depuis ton logiciel habituel de courrier électronique. -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/recovery.tpl b/templates/platal/recovery.tpl deleted file mode 100644 index b025472..0000000 --- a/templates/platal/recovery.tpl +++ /dev/null @@ -1,109 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Perte du mot de passe

    - - -{if $ok} - -

    -Un certificat d'authentification vient de t'être attribué et a été envoyé vers les redirections de -ton adresse en {#globals.mail.domain#}. Ce certificat te permet d'accéder à un formulaire de changement de mot de passe. - Il expire dans six heures. Tu dois donc consulter ton mail avant son expiration et utiliser le certificat comme expliqué dans le mail pour changer ton mot de passe. -

    -

    -Si tu n'accèdes pas à ton mail dans les 6 heures, sollicite un nouveau certificat sur cette page. -

    - -{elseif $no_addr} - -

    - {icon name=error} Les informations n'ont pas pu être envoyées car ton adresse {#globals.core.sitename#} n'a plus - de redirection fonctionnelle. -

    - -

    - Contacte le support pour que nous puissions régler ton problème - au plus vite. -

    - -{else} - -
    -

    - Il est impossible de récupérer le mot de passe perdu car nous n'avons que le résultat après un - chiffrement irréversible de ton mot de passe. La procédure suivante va te permettre de choisir un - nouveau mot de passe. -

    -

    - Après avoir complété les informations suivantes, tu recevras à ton adresse {#globals.core.sitename#} un - courrier électronique te permettant de choisir un nouveau mot de passe. Si tu désires que ce mail soit - envoyé vers une de tes redirections en particulier, tu peux renseigner l'adresse de cette redirection dans - le champ facultatif (cette adresse doit être une de tes redirections actuelles !). -

    -

    - Si tu ne reçois pas ce courrier, n'hésite pas à contacter - le support technique. -

    - - - - - - - - - - - - - - - - - - - -
    - Perte de mot de passe -
    - Login :
    - "prenom.nom" ou "prenom.nom.promo" -
    - -
    - Date de naissance :
    - format JJMMAAAA soit 01032000
    pour 1er mars 2000
    -
    - -
    - Adresse électronique : (facultatif) - - -
    - -
    -
    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/review.tpl b/templates/platal/review.tpl deleted file mode 100644 index 3e0b48d..0000000 --- a/templates/platal/review.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $cacheExists} -{include wiki=$article} -{if hasPerm('admin')} - -{/if} -{elseif hasPerm('admin')} -La page wiki associée n'existe pas. Il faut l'éditer. -{else} -

    La page n'existe pas

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/skins.tpl b/templates/platal/skins.tpl deleted file mode 100644 index 08a8eb4..0000000 --- a/templates/platal/skins.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Skins {#globals.core.sitename#}

    - -

    -Tu n'aimes pas les couleurs ou l'apparence de {#globals.core.sitename#} ? Normal, les goûts et les -couleurs, ça ne se discute pas. Certains préfèrent une page sérieuse, d'autres plus -fantaisiste. A toi de voir :) -

    -

    -Note aux utilisateurs du navigateur Netscape 4.x ou équivalent. -La fonctionalité "skins" n'est hélas pas compatible avec ces navigateurs -qui ne respectent pas les standards du web.
    -Pour profiter de toutes les fonctionnalités de {#globals.core.sitename#}, -nous te conseillons de télécharger une version récente de ton navigateur. -

    -

    -Pour toute information complémentaire, n'hésite pas à écrire à -support@{#globals.mail.domain#} -

    - - - {iterate item=skin from=$skins} - - - - - - {/iterate} -
    - - - {$skin.name} - ajoutée le {$skin.date|date_format}
    - {$skin.comment} -

    - Créée par {$skin.auteur} -

    - Utilisée par {$skin.nb} inscrit{if $skin.nb>1}s{/if} -
    -  [ CAPTURE D'ECRAN ] -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/tmpPWD.success.tpl b/templates/platal/tmpPWD.success.tpl deleted file mode 100644 index e91eead..0000000 --- a/templates/platal/tmpPWD.success.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Récupération de mot de passe

    - -

    -Mot de passe enregistré le {$smarty.now|date_format} -

    -

    - Cette procédure n'est pas sécurisée. Ton mot de passe est certes crypté, mais le - certificat envoyé par mail permet à toute personne pouvant lire ton mail (qui n'est - pas crypté), de changer ton mot de passe. C'est pourquoi, dans ton intérêt, il est - préférable que tu ne perdes pas ton mot de passe !!! -

    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/platal/webredirect.tpl b/templates/platal/webredirect.tpl deleted file mode 100644 index 6d3da9c..0000000 --- a/templates/platal/webredirect.tpl +++ /dev/null @@ -1,93 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Redirection de page WEB

    - -

    Pourquoi une redirection de page WEB ?

    -

    - Dans la lignée du service de redirection d'emails de {#globals.core.sitename#}, - il est possible de faire pointer - les adresses http://www.carva.org/{$smarty.session.bestalias} - et http://www.carva.org/{$smarty.session.forlife} - vers la page WEB de ton choix. Pour de plus amples détails, consulte - cette page -

    - -

    Conditions d'usage

    -

    - L'utilisateur s'engage à ce que le contenu du site référencé soit en conformité - avec les lois et règlements en vigueur et d'une manière générale ne porte pas - atteinte aux droits des tiers - (plus de précisions). -

    - -

    - Mise en place de la redirection -

    -

    -{if $carva} - Actuellement, les adresses - - http://www.carva.org/{$smarty.session.bestalias} - et - http://www.carva.org/{$smarty.session.forlife} - sont redirigées sur http://{$carva} -{else} - La redirection n'est pas utilisée ... -{/if} -

    - -

    - Pour modifier cette redirection remplis le champ suivant et clique sur Valider. -{if $carva} - Si tu veux annuler ta redirection, clique sur Supprimer. -{/if} -

    - -
    - -
    - - - - - - - - - - -
    - Adresse de redirection -
    - http://  -
    - -{if $carva} - -{/if} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/admin_decos.tpl b/templates/profile/admin_decos.tpl deleted file mode 100644 index fe8e526..0000000 --- a/templates/profile/admin_decos.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="core/table-editor.tpl"} - -

    Administration Polytechnique.org

    - -{literal} - -{/literal} - -
    - - - - - - - - {iterate from=$grades item=g} - - - - - - - {/iterate} - - - - - - - - - -
    idintituléordre 
    {$g.gid} - - - - - {icon name=delete title='supprimer grade'} -
    - - - - - {icon name=add title='nouveau grade'} -
    - - - - - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/admin_trombino.tpl b/templates/profile/admin_trombino.tpl deleted file mode 100644 index c3c29c8..0000000 --- a/templates/profile/admin_trombino.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Gestion du trombino -

    - -

    -Photo actuelle de {$forlife} -

    - -[ PHOTO ] -
    - -

    -Supprimer cette photo -

    - -

    -Voir sa photo de trombi récupérée à l'école (si disponible) -

    - -
    -
    - - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/adresses.address.tpl b/templates/profile/adresses.address.tpl deleted file mode 100644 index c0b7287..0000000 --- a/templates/profile/adresses.address.tpl +++ /dev/null @@ -1,100 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{assign var=adpref value="addresses[$i]"} -{assign var=adid value="addresses_$i"} - - - - - - - - - - - - - - - - - -
    -
    - - -
    - - Adresse n°{$i+1} -
    -
    - {include file="include/flags.radio.tpl" name="`$adpref`[pub]" val=$adr.pub} -
    -
    -
    {include file="geoloc/form.address.tpl" name=$adpref id=$adid adr=$adr}
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - {foreach from=$adr.tel key=t item=tel} -
    - {include file="profile/adresses.tel.tpl" t=$t tel=$tel} -
    - {/foreach} - {if $adr.tel|@count eq 0} -
    - {include file="profile/adresses.tel.tpl" t=0 tel=0} -
    - {/if} - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/adresses.tel.tpl b/templates/profile/adresses.tel.tpl deleted file mode 100644 index 60c0391..0000000 --- a/templates/profile/adresses.tel.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{assign var=telpref value="`$adpref`[tel][`$t`]"} -{assign var=telid value="`$adid`_tel_`$t`"} -
    - {include file="include/flags.radio.tpl" name="`$telpref`[pub]" val=$tel.pub} -
    -N°{$t+1} - - - - - {icon name=cross title="Supprimer ce numéro de téléphone"} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/adresses.tpl b/templates/profile/adresses.tpl deleted file mode 100644 index 810a3af..0000000 --- a/templates/profile/adresses.tpl +++ /dev/null @@ -1,40 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{foreach key=i item=adr from=$addresses} -
    -{include file="profile/adresses.address.tpl" i=$i adr=$adr} -
    -{/foreach} -{if $addresses|@count eq 0} -
    -{include file="profile/adresses.address.tpl" i=0 adr=0} -
    -{/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/applis.js.tpl b/templates/profile/applis.js.tpl deleted file mode 100644 index 83cbfba..0000000 --- a/templates/profile/applis.js.tpl +++ /dev/null @@ -1,26 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -applisType = new Array({applis_type}); -applisTypeAll = new Array({applis_type_all}); - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/base.tpl b/templates/profile/base.tpl deleted file mode 100644 index dba4c05..0000000 --- a/templates/profile/base.tpl +++ /dev/null @@ -1,45 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - {icon name=information title="Voir ma fiche"} Tu peux consulter ta fiche telle que la - voient n'importe quel internaute, - l'AX ou - les X. -
    -
    - {include file="include/flags.radio.tpl" disabled=true withtext=true name="profile_ex_pub"} -
    -
    - {include file=$profile_page} -
    -
    - - - {if $current neq count($lookup)-1} - - {/if} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/deco.medal.tpl b/templates/profile/deco.medal.tpl deleted file mode 100644 index 4e76dcf..0000000 --- a/templates/profile/deco.medal.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - -
    -
    -
    - {if !$medal.valid}(en attente de modération){/if}
    -
    -
    - - {icon name="cross" title="Supprimer cette médaille"} - - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/deco.tpl b/templates/profile/deco.tpl deleted file mode 100644 index 368671f..0000000 --- a/templates/profile/deco.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - -
    - Médailles, Décorations, Prix, ... -
    -
    - - {icon name="flag_green" title="site public"} - - bien que publiques (JO, ...), tu peux choisir de ne pas associer ces informations à ta fiche publique - -
    -
    - - -
    - {foreach from=$medals item=medal key=id} - {include file="profile/deco.medal.tpl" medal=$medal id=$id} - {/foreach} -
    Si ta décoration ou ta médaille ne figure pas dans la liste, - contacte-nous.
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/fiche_referent.tpl b/templates/profile/fiche_referent.tpl deleted file mode 100644 index 44e4e16..0000000 --- a/templates/profile/fiche_referent.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{javascript name=ajax} -
    -
    -
    -
    - {$prenom} {$nom}
    - X{$promo} -  {$bestalias}@{#globals.mail.domain#} -
    -
    -
    - - {if $expertise != '' || $secteurs|count || $pays|count } -
    -

    Informations de référent :

    - {if $expertise} -
    - Expertise :
    - {$expertise|nl2br} -
    - {/if} - {if $secteurs|count} -
    - Secteurs :
    -
      - {foreach from=$secteurs item="secteur" key="i"} -
    • {$secteur}{if $ss_secteurs.$i != ''} ({$ss_secteurs.$i}){/if}
    • - {/foreach} -
    -
    - {/if} - {if $pays|count} -
    - Pays : -
      - {foreach from=$pays item="pays_i"} -
    • {$pays_i}
    • - {/foreach} -
    -
    - {/if} -
     
    -
    - {/if} - -
    - {foreach from=$adr_pro item="address" key="i"} -

    {$address.entreprise}

    - {include file="include/emploi.tpl" address=$address} - {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise} - -
     
    - {/foreach} -
    - - {if $cv} -
    -

    Curriculum Vitae :

    -
    {$cv|smarty:nodefaults}
    -
    - {/if} - - -
    -
    -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/general.tpl b/templates/profile/general.tpl deleted file mode 100644 index 8ff2c03..0000000 --- a/templates/profile/general.tpl +++ /dev/null @@ -1,274 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - {icon name="flag_green" title="site public"} -
    - Informations générales -
    - Nom - - - -
    - Prénom - - - -
    - Promotion - - X{$promo}{if ($promo != $promo_sortie - 3)} - X{math equation="a - b" a=$promo_sortie b=3}{/if} - modifier{if ($promo_sortie -3 == $promo)} pour les oranges{/if} -
    - Nom d'usage
    - {if $smarty.session.sexe} - (Notamment nom d'épouse) - {else} - (si différent de {$nom} seulement) - {/if} -
    - {$nom_usage|default:"Aucun"} - modifier -
    Date de naissance
    - Nationalité - - -
    - Application
    - (4e année de l'X) -
    - -
    - - -
    - Post-application - - -
    - - -
    - Si ta formation ne figure pas dans la liste, - contacte-nous. -
    - -{if !$no_private_key} - - - - - - - - - - -
    - Synchronisation avec l'AX -
    - - {icon name="flag_orange" title="transmis à l'AX"} - - Autoriser la synchronisation vers l'AX par des administrateurs ou des scripts automatiques. - -
    -

    - Le service annuaire de l'AX met à jour l'annuaire papier à partir des informations que tu lui fournis. Tu peux choisir ici d'envoyer directement les données de ta fiche Polytechnique.org vers ta fiche AX. -

    -

    - L'opération de synchronisation prend en compte toutes les informations que tu as marquées comme transmises à l'AX (en orange ou en vert). Elle peut alors effacer, modifier ou rajouter des informations sur ta fiche AX selon ce qui s'y trouve déjà. -

    -

    - -

    -
    -{/if} - - - - - - - - {if $nouvellephoto} - - {/if} - - - - -
    -
    - - {icon name="flag_green" title="site public"} -
    - Trombinoscope -
    -
    Ta photo actuelle
    -  [ PHOTO ] -
    -
    Photo en attente de validation
    - -  [ PHOTO ] -
    - Pour profiter de cette fonction intéressante, tu dois disposer - quelque part (sur ton ordinateur ou sur Internet) d'une photo - d'identité (dans un fichier au format JPEG, PNG ou GIF).
    - -
    - - - - - - - - - - - - - - - - - - - - - -
    - Divers -
    - - - {icon name="flag_red" title="privé"} -   - Surnom - - -
    - Téléphone mobile - - - - {include file="include/flags.radio.tpl" name="mobile_pub" val=$mobile_pub} - -
    - - - {icon name="flag_green" title="site public"} -   - Page web Perso - - -
    -
    - - - {icon name="flag_green" title="site public"} -   - Complément libre
    - Commentaire ? ICQ ? etc... -
    - -
    - - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/grades.js.tpl b/templates/profile/grades.js.tpl deleted file mode 100644 index d674f0c..0000000 --- a/templates/profile/grades.js.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -subgrades = new Array(); -names = new Array(); -{foreach from=$medal_list key=type item=list} -{foreach from=$list item=m} -names[{$m.id}] = "{$m.text}"; -{if $grades[$m.id]|@count} -names[{$m.id}] = "{$m.text}"; -subgrades[{$m.id}] = new Array({$grades[$m.id]|@count}); -{foreach from=$grades[$m.id] item=g} -subgrades[{$m.id}][{$g.gid-1}] = [{$g.gid},"{$g.text}"]; -{/foreach} -{/if}{/foreach} -{/foreach} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/groupesx.tpl b/templates/profile/groupesx.tpl deleted file mode 100644 index 5861ded..0000000 --- a/templates/profile/groupesx.tpl +++ /dev/null @@ -1,59 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Mes groupes X sur Polytechnique.net

    - -

    -[Tous les groupes X] -

    - -{foreach from=$assos item="asso"} -
    -
    - {$asso.nom} - {if $asso.has_logo} - - [ LOGO ] - - {/if} - -
    -
    -{/foreach} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/groups.tpl b/templates/profile/groups.tpl deleted file mode 100644 index 29829cd..0000000 --- a/templates/profile/groups.tpl +++ /dev/null @@ -1,159 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - - - - - {foreach item=text key=bid from=$binets} - - - - - {/foreach} -
    -
    - - {icon name="flag_red" title="privé"} -
    - Informations polytechniciennes -
    {if $old}ex-{/if}Section - -
    {if $old}ex-{/if}Binet(s) - - -
    - - -
    - {$text} -
    - {icon name="cross" title="Supprimer ce binet"} -
    - - - - - - - - - - - - - - - {if $mygroups->total()} - - - - {/if} - {assign var=grp_admin value=false} - {assign var=grp_public value=false} - {iterate from=$mygroups item=group} - - - - - {/iterate} - {if $grp_admin || $grp_public} - - - - {/if} -
    Groupes et institutions X
    -

    - La gestion des annuaires des groupes X est réalisée grâce à - Polytechnique.net. Pour faire apparaître un groupe sur ta fiche - il faut que soit inscrit dans ce groupe sur l'annuaire sur Polytechnique.net. -

    -
    -

    - Tu peux demander ton inscription aux groupes X qui t'intéressent. Voici la liste de ceux disponibles actuellement - sur Polytechnique.net et qui autorisent les demandes d'inscription : -

    -
    - {assign var=groupcat value=""} - {assign var=ingroup value=false} - - - - {icon name="add" title="Demander ton inscription"} Demander ton inscription - -
    Tu es actuellement dans les groupes suivants :
    - {if $group.pub neq 'public'} - {icon name=error title="Liste de membres a accès restreint"} - {assign var=grp_public value=true} - {/if} - {if $group.perms eq 'admin'} - {icon name=wrench title="Tu es administrateur du groupe"} - {assign var=grp_admin value=true} - {/if} - {if $group.site}{else}{/if} - {$group.nom} - - - - {icon name=cross title="Demander désinscription"} Demander ta désinscription - -
    -
    Signification des symboles :
    - {if $grp_public}{icon name=error} L'annuaire du groupe est à visibilité restreinte et ce groupe n'apparaîtra pas sur ta - fiche{/if} - {if $grp_public && $grp_admin}
    {/if} - {if $grp_admin}{icon name=wrench} Tu es administrateur du groupe{/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/jobs.job.tpl b/templates/profile/jobs.job.tpl deleted file mode 100644 index d83b6a2..0000000 --- a/templates/profile/jobs.job.tpl +++ /dev/null @@ -1,165 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{assign var=jobid value="job_`$i`"} -{assign var=jobpref value="jobs[`$i`]"} -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - {include file="include/flags.radio.tpl" name="`$jobpref`[pub]" val=$job.pub} -
    - Entreprise n°{$i+1} : - - - {icon name=cross title="Supprimer cet emploi"} - -
    Page Web - -
    Secteur d'activité - -
    Sous-secteur d'activité - -
    Poste occupé - -
    Fonction occupée - -
    - Si des informations font défaut dans les listes ci-dessus, - contacte-nous. -
    - E-mail professionnel : - - - {include file="include/flags.radio.tpl" name="`$jobpref`[email_pub]" val=$job.mail_pub} - -
    -
    -
    Adresse
    -
    - {include file="include/flags.radio.tpl" name="`$jobpref`[adr][pub]" val=$job.adr.pub} -
    -
    - {include file="geoloc/form.address.tpl" name="`$jobpref`[adr]" id="`$jobid`_adr" adr=$job.adr} -
    -
    -
    -
    Téléphone
    -
    - {include file="include/flags.radio.tpl" name="`$jobpref`[tel_pub]" val=$job.tel_pub} -
    - - - - - - - - - - - - - -
    Bureau : - -
    Fax : -
    Mobile : - -
    -
    -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/jobs.secteur.tpl b/templates/profile/jobs.secteur.tpl deleted file mode 100644 index 5a22d5a..0000000 --- a/templates/profile/jobs.secteur.tpl +++ /dev/null @@ -1,31 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/jobs.tpl b/templates/profile/jobs.tpl deleted file mode 100644 index 3bfa587..0000000 --- a/templates/profile/jobs.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{foreach from=$jobs item=job key=i} -{include file="profile/jobs.job.tpl" i=$i job=$job new=false} -{/foreach} -{if $jobs|@count eq 0} -{include file="profile/jobs.job.tpl" i=0 job=0 new=true} -{/if} - - - - - - - - - - -
    -
    - - {icon name="flag_red" title="privé"} -
    - Curriculum vitae -
    - -
    - - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/mentor.tpl b/templates/profile/mentor.tpl deleted file mode 100644 index 70c269b..0000000 --- a/templates/profile/mentor.tpl +++ /dev/null @@ -1,155 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {icon name=information title="Afficher ma fiche référent"}Tu peux consulter ta fiche référent qui n'est accessible que par les X. -

    -{if (!$expertise)||(!($secteurs|@count))} -

    - Attention : pour figurer dans la base de données des mentors, il faut remplir la - dernière case en bas de cette page et avoir au moins un secteur d'activité de prédilection.
    -

    -{/if} -

    - Si tu acceptes que des camarades te contactent afin de te demander - conseil, dans les domaines que tu connais bien, et pour lesquels tu pourrais - les aider, remplis cette rubrique. -

    -

    - Tu peux mentionner ici les domaines de compétences, les expériences - notamment internationales sur la base desquels tu seras identifiable depuis - la page de recherche d'un conseil professionnel.
    -

    -

    Le mentoring est particulièrement important pour les camarades :

    -
      -
    • encore jeunes, qui sont en train de bâtir leur projet professionnel ;
    • -
    • ou bien, plus âgés, qui souhaitent réorienter leur carrière.
    • -
    - - - - - - - - - - - -
    -
    - - {icon name="flag_red" title="privé"} -
    - Pays dont tu connais bien la culture professionnelle -
    -
    Pays
    - - -
    - {foreach from=$countries item=country key=i} - - {/foreach} -
    - - - - - - - - - - - - - - -
    -
    - - {icon name="flag_red" value="privé"} -
    - Secteurs d'activité dans lesquels tu as beaucoup exercé -
    -
    Secteur
    - -
    -
    Sous-secteur
    - -
    - {if $secteurs|@count} - {foreach from=$secteurs item=secteur key=s} - {foreach from=$secteur item=ss_sect key=ss} - - {/foreach} - {/foreach} - {/if} -
    - - - - - - - - - - - -
    -
    - - {icon name="flag_red" title="privé"} -
    - Expériences et expertises que tu acceptes de faire partager -
    - Dans cette case il te faut indiquer en quelques mots ce qui t'a - amené à acquérir l'expérience indiquée, et dans quelle mesure tu - veux bien que ceux de nos camarades qui seraient intéressés par un - contact avec toi, en prennent l'initiative. Il est obligatoire de - remplir cette dernière case pour apparaître dans la base de données - des "Mentors". -
    - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/nomusage.tpl b/templates/profile/nomusage.tpl deleted file mode 100644 index 9b813df..0000000 --- a/templates/profile/nomusage.tpl +++ /dev/null @@ -1,137 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Nom d'usage

    - -{if $same} -

    - Si ton nom d'usage est identique à ton nom à l'X, il n'est pas - nécessaire de le saisir ici! -

    -

    - Pour supprimer ton nom d'usage, fais une demande avec un nom vide et en précisant la raison. -

    -

    - [Refaire une demande] - [Retour au profil] -

    -{else} - {if $myusage} - {if $usage_old} -

    - Ta demande de suppression de ton nom d'usage ainsi que de tes - alias {$alias_old}@{#globals.mail.domain#} et - {$alias_old}@{#globals.mail.domain2#} a bien été enregistrée. -

    - {/if} - - {if $myusage->alias} -

    - Ta demande d'ajout de ton nom d'usage a bien été enregistrée. Sa - validation engendrera la création des alias - {$myusage->alias}@{#globals.mail.domain#} et - {$myusage->alias}@{#globals.mail.domain2#}. -

    - {/if} - -

    - Tu recevras un mail dès que les changements demandés auront été effectués. - Encore merci de nous faire confiance pour tes e-mails ! -

    - - {else} - -

    -Le nom d'usage est un patronyme qui doit être reconnu par la - loi (nom du conjoint, d'un de ses parents, ou bien plus -exceptionnellement sur changement de l'état civil, ...). -

    - -

    -Les surnoms sont systématiquement refusés. Pour -utiliser une adresse personnalisée, il faut se tourner vers -l'alias @{#globals.mail.alias_dom#}. -

    - -

    - Afin d'être joignable à la fois sous ton nom à l'X et sous ton nom d'usage, tu peux - saisir ici ce dernier. Il apparaîtra alors dans l'annuaire et tu disposeras - des adresses correspondantes @{#globals.mail.domain#} et @{#globals.mail.domain2#}, en plus de - celles que tu possèdes déjà. -

    - -
    - -{literal} -
    -{/literal} - - - - - - - - - - - - - - - - -
    Nom d'usage
    - - -
    Raison du changement de nom
    -
    - {if $usage_old} -
    - {/if} -
    -
    - -
    - {if !$usage_old} - - {else} - - - {/if} -
    -
    - {/if} -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/orange.tpl b/templates/profile/orange.tpl deleted file mode 100644 index fac9b52..0000000 --- a/templates/profile/orange.tpl +++ /dev/null @@ -1,61 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Année de sortie

    - -{if $myorange} - -

    - Tu recevras un mail dès que les changements demandés auront été effectués. - Encore merci de nous faire confiance pour tes e-mails ! -

    - -{else} - -

    - Afin de pouvoir être considéré(e) à la fois dans ta promotion d'origine et ta - ou tes promotions d'adoption tu peux entrer ici ton année de sortie de l'école. - Plus précisément, il s'agit de l'année d'entrée en quatrième année ou année d'application. - Pour tes cocons d'origine (X{$promo}) il s'agit de l'année {math equation="a + b" a=$promo b=3}. -

    - -
    - -
    - - - - - - - - - - -
    Année de sortie
    -
    - -{/if} - -

    [Revenir au profil]

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/profile.tpl b/templates/profile/profile.tpl deleted file mode 100644 index 0694db3..0000000 --- a/templates/profile/profile.tpl +++ /dev/null @@ -1,209 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{literal} - -{/literal} - -
    -
    - {if $photo_url}Photo de {$x.forlife}{/if} - {if $logged && ( $x.section|smarty:nodefaults || $x.binets_join|smarty:nodefaults || $x.gpxs_join|smarty:nodefaults)} -

    À l'X...

    - {if $x.section}
    Section : {$x.section}
    {/if} - {if $x.binets_join}
    Binet{if count($x.binets) > 1}s{/if} : - {$x.binets_join}
    {/if} - {if $x.gpxs_join}
    Groupe{if count($x.gpxs) > 1}s{/if} et institution{if count($x.gpxs) > 1}s{/if} X : -
    {$x.gpxs_join|smarty:nodefaults}
    {/if} - {/if} - {if $x.freetext} -

    Commentaires :

    - {$x.freetext|miniwiki|smarty:nodefaults} - {/if} -
    -
    -
    - {if $x.sexe}•{/if} - {$x.prenom} {if $x.nom_usage eq ""}{$x.nom}{else}{$x.nom_usage} ({$x.nom}){/if} - {if $logged} - {if $x.nickname} (alias {$x.nickname}){/if} - {/if} - {if $x.web} {icon name="world_go" title="Site Web"}{/if} - {if $logged} -  {if !$x.dcd}{* - *}{icon name=vcard title="Afficher la carte de visite"}{/if} - {if !$x.is_contact} - - {icon name=add title="Ajouter à mes contacts"} - {else} - - {icon name=cross title="Retirer de mes contacts"} - {/if} - {if hasPerm('admin')} - - {icon name=wrench title="administrer user"} - {/if} - {if $x.forlife eq $smarty.session.forlife} - {icon name="user_edit" title="Modifier ma fiche"} - {/if} - {/if} -
    - {if $logged} -
    - Fiche mise à jour
    - le {$x.date|date_format} -
    - {/if} - {if $logged || $x.mobile} -
    - {if $logged} - - {/if} - {if $x.mobile} -
    - Mobile : {$x.mobile} -
    - {/if} -
    -
    - {/if} -
    - {if $x.iso3166} - {$x.nationalite}  - {/if} - X {$x.promo} - {if ($x.promo_sortie-3 > $x.promo)} - - X {math equation="a-b" a=$x.promo_sortie b=3} - {/if} - {if $x.applis_join} -  - Formation : {$x.applis_join|smarty:nodefaults} - {/if} - {if $logged && $x.is_referent} - [Ma fiche référent] - {/if} -
    -
    - {if $x.adr} -
    -

    Contact :

    - {foreach from=$x.adr item="address" name=adresses} - {if $smarty.foreach.adresses.iteration is even} - {assign var=pos value="right"} - {else} - {assign var=pos value="left"} - {/if} - {if $address.active} - {include file="geoloc/address.tpl" address=$address titre_div=true titre="Mon adresse actuelle :" - for="`$x.prenom` `$x.nom`" pos=$pos} - {elseif $address.secondaire} - {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse secondaire :" - for="`$x.prenom` `$x.nom`" pos=$pos} - {else} - {include file="geoloc/address.tpl" address=$address titre_div=true titre="Adresse principale :" - for="`$x.prenom` `$x.nom`" pos=$pos} - {/if} - {if $smarty.foreach.adresses.iteration is even}
    {/if} - {/foreach} -
    - {/if} - {if $x.adr_pro} -
    -

    Informations professionnelles :

    - {foreach from=$x.adr_pro item="address" key="i"} - {if $i neq 0}
    {/if} - {include file="include/emploi.tpl" address=$address} - {include file="geoloc/address.tpl" address=$address titre="Adresse : " for=$address.entreprise pos="left"} -
     
    - {/foreach} -
    - {/if} - {if $x.medals} -
    -

    Distinctions :

    - {foreach from=$x.medals item=m} -
    - {$m.medal} -
    - {$m.medal}
    {$m.grade} -
    -
    - {/foreach} -
     
    -
    - {/if} - {if $logged && $x.cv} -
    -

    Curriculum Vitae :

    - {$x.cv|miniwiki:title|smarty:nodefaults} -
    - {/if} - {if $view eq 'public'} -
    - - Cette fiche est publique et visible par tout internaute,
    - vous pouvez aussi voir celle réservée aux X. -
    -
    - {elseif $view eq 'ax'} -
    - - Cette fiche est privée et ne recense que les informations transmises à l'AX. - -
    - {/if} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/referent.tpl b/templates/profile/referent.tpl deleted file mode 100644 index 3e3feea..0000000 --- a/templates/profile/referent.tpl +++ /dev/null @@ -1,108 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $plset_count} -{include file="core/plset.tpl"} -{else} -{include wiki=Docs.Emploi} -{/if} - - - -

    -Actuellement, {$mentors_number} mentors et référents se sont déclarés sur {#globals.core.sitename#}. -

    - -{javascript name=ajax} - - -
    - - - - - - - - - - - - - - - - - -
    - Secteur de compétence
    du référent -
    - -
    -
    - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/skill.skill.tpl b/templates/profile/skill.skill.tpl deleted file mode 100644 index 6d940dd..0000000 --- a/templates/profile/skill.skill.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    -
    - {$skill.text} - -
    - - {icon name=cross title="Supprimer"} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/skill.tpl b/templates/profile/skill.tpl deleted file mode 100644 index d88ca68..0000000 --- a/templates/profile/skill.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - -
    -
    - - {icon name="flag_red" title="privé"} -
    - Compétences professionnelles -
    - Domaine : - - -
    - {foreach from=$competences item=competence key=id} - {include file="profile/skill.skill.tpl" cat='competences' skill=$competence id=$id levels=$comp_level} - {/foreach} -
    - - - - - - - - - - - -
    -
    - - {icon name="flag_red" title="privé"} -
    - Compétences linguistiques -
    - Domaine : - - -
    - {foreach from=$langues item=langue key=id} - {include file="profile/skill.skill.tpl" cat='langues' skill=$langue id=$id levels=$lang_level} - {/foreach} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/trombino.tpl b/templates/profile/trombino.tpl deleted file mode 100644 index 3b23f6b..0000000 --- a/templates/profile/trombino.tpl +++ /dev/null @@ -1,132 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    Trombinoscope

    - -
    - {if ($session.promo ge 1995) || ($session.promo le 2002)} -

    - Si tu n'as pas encore fourni de photo, c'est celle du trombinoscope de l'X qui est - affichée par défaut dans le profil. Si elle ne te plaît pas, ou si tu n'es quand même - plus un tos, tu peux la remplacer par ta photo en suivant les instructions suivantes. -

    - {/if} - - - - - - - - - - - - - - - - - - - {if $submited} - - {/if} - - - - - - - - - - - - - - - - - - - -
    - Photo actuelle - - Photo en cours de validation(*) -
    -  [ PHOTO ] - - {if $submited} -  [ PHOTO ] - {else} - Pas d'image soumise - {/if} -
    - * Les photos sont soumises à une validation manuelle en raison des législations relatives - aux droits d'auteur et à la protection des mineurs. Il faut donc attendre l'intervention - d'un administrateur pour que la photo soit prise en compte. Tu recevras un mail lorsque ta - photo aura été contrôlée. -
    - Actions immédiates -
    - Si tu ne souhaites plus montrer cette photo tu peux aussi l'effacer en la remplaçant par :
    - {if $has_trombi_x} -
    - {/if} - -
    - Tu peux annuler ta soumission et garder ta photo actuelle :
    - -
    - Changement de ta photo -
    -

    - Nous te proposons deux possibilités pour mettre à jour ta photo (30 Ko maximum). Tout dépend - de savoir où se trouve ta photo. Si elle est sur ton poste de travail local, c'est la première - solution qu'il faut choisir. -

    -

    - Si elle est sur Internet, choisis la seconde solution et nos robots iront la télécharger - directement où il faut :-) -

    -
    - Sur ton ordinateur - - Sur Internet -
    - - - -
    - - - -
    - -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/breadcrumb.tpl b/templates/register/breadcrumb.tpl deleted file mode 100644 index b7ab7c7..0000000 --- a/templates/register/breadcrumb.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{assign var="step" value=$smarty.session.sub_state.step} -
    - Procédure d'inscription : - {if !$step}{/if}Charte{if !$step}{/if} » - {if $step eq 1 || $step eq 2}{/if}Identification{if $step eq 1 || $step eq 2}{/if} » - {if $step eq 4 || $step eq 3}{/if}Pré-Inscription{if $step eq 4 || $step eq 3}{/if} » - {if $step eq 5}{/if}Validation{if $step eq 5}{/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/end.tpl b/templates/register/end.tpl deleted file mode 100644 index 44ab0c9..0000000 --- a/templates/register/end.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    :'(

    - -

    -Une erreur est survenue lors de ton inscription... -

    -

    -Contacte nous au plus vite, en nous indiquant ce nombre : {$uid} à l'adresse -support@{#globals.mail.domain#} -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/inscription.reussie.tpl b/templates/register/inscription.reussie.tpl deleted file mode 100644 index 5b52eee..0000000 --- a/templates/register/inscription.reussie.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="inscription"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr="$forlife@polytechnique.org"} -{subject text="Bienvenue parmi les X sur le web !"} -{elseif $mail_part eq 'text'} - -{$prenom}, félicitations pour ton inscription ! - -N'oublie pas de changer ton mot de passe sur le site. C'est très important -si tu veux garder accès au site et ton e-mail en fonction. - -Tu as maintenant accès à l'annuaire en ligne, aux services de listes de -diffusion, aux infos promo, etc. N'oublie pas de mettre ta fiche-annuaire -à jour. - --- -Polytechnique.org -"Le portail des élèves & anciens élèves de l'Ecole polytechnique" -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/inscrire.mail.tpl b/templates/register/inscrire.mail.tpl deleted file mode 100644 index bad7df1..0000000 --- a/templates/register/inscrire.mail.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="inscrire"} -{if $mail_part eq 'head'} -{subject text="$subj"} -{from full=#from#} -{to addr="$lemail"} -{elseif $mail_part eq 'text'} -Bonjour, - -Ton inscription sur Polytechnique.org est presque terminée ! - -Après activation, tes paramètres de connexion seront : - -login : {$mailorg} -mot de passe : {$pass} - -Nous te proposerons de remplacer ce mot de passe temporaire par un mot de passe de ton choix. - -Rends-toi maintenant sur la page web suivante afin d'activer ta pré-inscription : - -{$baseurl}/register/end/{$hash} - -Si en cliquant dessus tu n'y arrives pas, copie intégralement ce lien dans la barre d'adresse de ton navigateur. - -Nous espérons que tu profiteras pleinement des services en ligne de Polytechnique.org ; s'ils te convainquent, n'oublie pas d'en parler aux camarades autour de toi ! - -Bien cordialement, -L'équipe de Polytechnique.org, -Le portail des élèves et anciens élèves de l'École polytechnique -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/step0.tpl b/templates/register/step0.tpl deleted file mode 100644 index 97d2b03..0000000 --- a/templates/register/step0.tpl +++ /dev/null @@ -1,49 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    Conditions générales

    - -

    -L'enregistrement se déroule en deux étapes : -

    -
      -
    • - tu te pré-inscris, ce qui te prendra moins de 5 minutes ; -
    • -
    • - nous t'envoyons immédiatement un email qui te permettra - de te connecter au site. -
    • -
    - -{include wiki=Reference.Charte public=1} - -
    -
    - -
    -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/step1.tpl b/templates/register/step1.tpl deleted file mode 100644 index 4da0c4c..0000000 --- a/templates/register/step1.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    Identification

    - -
    -

    - Avant toute chose, il te faut nous donner ta promotion : -

    - - - - - - - - - - -
    - Promotion -
    - Donne ta promotion sur 4 chiffres : - -
    - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/step2.tpl b/templates/register/step2.tpl deleted file mode 100644 index acb6553..0000000 --- a/templates/register/step2.tpl +++ /dev/null @@ -1,103 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    Identification

    - -

    -retour -

    - -
    - - {if $smarty.session.sub_state.promo >= 1996} - {assign var="promo" value=$smarty.session.sub_state.promo} - - - - - - - - - - - - {/if} - - - - - - - - - - - - - - - - - - -
    matricule
    - Matricule X : - - -
    - 6 chiffres terminant par le numéro d'entrée (ex: - {if $promo < 2000} - {math equation="promo % 100" promo=$promo}0532)
    - {else} - {math equation="(promo % 100) + 100" promo=$promo}532)
    - {/if} - Voir sur le GU ou un bulletin de solde pour trouver cette information

    - Pour les élèves étrangers voie 2, il est du type : - {if $promo < 1999} - {math equation="(promo + 1) % 100" promo=$promo}0XXX - {else} - {math equation="((promo + 1) % 100) + 100" promo=$promo}XXX - {/if} -
    - Identification -
    - Nom (à l'X) - - -
    - Prénom - - -
    - Promotion - - -
    - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/step3.tpl b/templates/register/step3.tpl deleted file mode 100644 index 487fd9a..0000000 --- a/templates/register/step3.tpl +++ /dev/null @@ -1,91 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -{if $smarty.session.sub_state.forlife} - -

    Formulaire de pré-inscription

    - -
    - {if $smarty.session.sub_state.mailorg2} -

    - Tu n'as pour le moment aucun homonyme dans notre base de données. Nous allons - donc te donner l'adresse {$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}, - en plus de ton adresse à vie {$smarty.session.sub_state.forlife}@{#globals.mail.domain#}. - Note que tu pourrais perdre l'adresse {$smarty.session.sub_state.bestalias}@{#globals.mail.domain#} - si un homonyme s'inscrivait — cela reste assez rare. -

    - {else} -

    - Tu as déjà un homonyme inscrit dans notre base de données, dans une autre promotion. Nous allons - donc te donner l'adresse {$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}, en plus - de ton adresse à vie {$smarty.session.sub_state.forlife}@{#globals.mail.domain#}. -

    - {/if} - -

    - Ces adresses sont des redirections vers une ou plusieurs adresses e-mail de ton choix. - Indiques-en une pour terminer ton inscription. Tu pourras la modifier ou ajouter d'autres - adresses une fois inscrit. -

    -

    - Attention, cette adresse doit impérativement être valide pour que nous puissions - t'envoyer tes informations de connexion. -

    - - - - - - - - - - - - - - - - -
    - Contact et sécurité -
    - E-mail
    - (adresse de ton choix pour reçevoir tes emails) -
    - -
    - Date de naissance
    - jour/mois/année -
    - - (demandée si tu perds ton mot de passe) -
    - -
    -
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/step4.tpl b/templates/register/step4.tpl deleted file mode 100644 index 8c32b7e..0000000 --- a/templates/register/step4.tpl +++ /dev/null @@ -1,44 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    Pré-inscription réussie

    - -

    -La pré-inscription que tu viens de soumettre a été enregistrée. -

    -

    -Les instructions te permettant de valider ton inscription et ton mot de passe pour -accéder au site viennent de t'être envoyés à l'adresse {$smarty.session.sub_state.email}. -

    -

    -Tu n'as que quelques jours pour suivre ces instructions. Ensuite, la pré-inscription -est effacée automatiquement de notre base de données et il faut tout recommencer. -

    -

    -Si tu ne reçois rien, vérifie bien l'adresse {$smarty.session.sub_state.email}. -En particulier, vérifie si l'e-mail n'a pas été rejeté par ton filtre anti-spam. L'adresse -d'expéditeur est register@polytechnique.org. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/success.tpl b/templates/register/success.tpl deleted file mode 100644 index 4486ea7..0000000 --- a/templates/register/success.tpl +++ /dev/null @@ -1,174 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

    Bravo !!!

    - -

    -Tu as maintenant accès au site !
    -Ton adresse électronique à vie {$smarty.session.forlife}@{#globals.mail.domain#} est déjà ouverte, essaie-la ! -

    -

    - Remarque : m4x.org est un domaine "discret" qui veut dire "mail for X" et - qui comporte exactement les mêmes adresses que le domaine polytechnique.org. -

    - - -

    Mot de passe

    - -{if $mdpok} - -

    -Ton mot de passe a bien été mis à jour ! -

    - -{else} - -

    - Tu as reçu un mot de passe par défaut, si tu souhaites en changer, tu peux le faire ici :
    - Remarque : il doit faire au moins 6 caractères quelconques et au plus 10 caractères. -

    - -
    - - - - - - - - - - - - - - - - - - - -
    - Saisie du nouveau mot de passe -
    - Nouveau mot de passe : - - -
    - Retape-le une fois : - - -
    Sécurité{checkpasswd prompt="nouveau" submit="submitn"}
    - -
    -
    - -
    -
    -
    - -

    -N'oublie pas : en cas de perte de ton mot de passe, -il existe une procédure de récupération automatique ; mais elle nécessite -que ton adresse email sur le site soit toujours valable. Dans le cas contraire, -il te faudra contacter l'équipe support. -

    - -{/if} - -

    Rejoindre la communauté

    - -
    -

    - Pour rejoindre la communauté des X sur le web, nous t'invitons vivement à remplir ton profil ! -

    - -

    - Cet annuaire n'est pas redondant avec l'annuaire de l'AX ; il est synchronisé automatiquement, - d'une manière que tu choisis : -

    - -
    -
    vers l'AX
    -
    - tu peux choisir dans ton profil sur Polytechnique.org de transmettre automatiquement à l'AX certains éléments de ta fiche, - au fur et à mesure que tu les modifies. - (Les données transmises seront uniquement celles que tu as décidé de transmettre). -
    -
    depuis l'AX
    -
    - nous mettons à jour ta fiche depuis les données de l'annuaire de l'AX si tu le souhaites.
    - (si tu ne le souhaites pas, décoche la case ci-dessus) -
    -
    - -

    - Pour profiter pleinement de ta nouvelle inscription, nous te proposons -

    - -
    -
    lettre mensuelle*
    -
    - de recevoir chaque mois la lettre mensuelle de Polytechnique.org contenant les activités et nouvelles de la communauté des X. -
    -
    envois de l'AX*
    -
    - de recevoir les informations importantes de l'AX. -
    -
    ta promo*
    -
    - de recevoir les informations plus spécifiques de ta promotion pour pouvoir participer plus facilement aux événements - qu'elle organise. Nous t'inscrivons donc dans le groupe de la promotion {$smarty.session.promo}. -
    -
    imap
    -
    - d'avoir un accès de secours aux 30 derniers jours de mail reçus sur ton adresse Polytechnique.org. -
    -
    - - {if $lists|@count neq 0} -

    - Des camarades souhaitent que tu t'inscrives aux listes suivantes : -

    - -
    - {foreach from=$lists key=list item=details} -
    {$list}* : {$details.desc}
    - {if $details.info} -
    - {$details.info|nl2br} -
    - {/if} - {/foreach} -
    - {/if} - -

    * décoche les cases si tu ne souhaites pas être inscrit à la liste de diffusion correspondante

    - -
    - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/adv.form.tpl b/templates/search/adv.form.tpl deleted file mode 100644 index 3c6a5ba..0000000 --- a/templates/search/adv.form.tpl +++ /dev/null @@ -1,431 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Recherche dans l'annuaire

    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {if $smarty.session.auth ge AUTH_COOKIE} - - - - {/if} - - - - -
    - Recherche avancée [<<< Recherche simple] -
    Nom - - - -
    Prénom - -
    Surnom - -
    Promotion - - -  et  - - -
    Sexe - - - - - - -
    - - - - - -
    -
    Sur Polytechnique.org - - - - - - -
    - - - - - -
    -
    En vie - - - - - - -
    - - - - - -
    -
    - - -
    Géographie
    Ville
    Pays - - - {icon name="table" title="Tous les pays"} -
    Région ou département - -
    -
    Activité
    Entreprise
    Fonction - - - {icon name="table" title="Toutes les fonctions"} -
    Poste
    Secteur - - - {icon name="table" title="Tous les secteurs"} -
    CV contient
    - - -
    Divers
    Nationalité - - - {icon name="table" title="Toutes les nationalités"} -
    Binet - - - {icon name="table" title="Tous les binets"} -
    Groupe X - - - {icon name="table" title="Tous les groupes X"} -
    Section - - - {icon name="table" title="Toutes les sections"} -
    Formation - - - {icon name="table" title="Toutes les formations"} -
    Diplôme - -
    Commentaire contient
    - - -
    - -
    -
    -

    - N.B. : le caractère joker * peut remplacer une ou plusieurs lettres dans les recherches. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/adv.grade.form.tpl b/templates/search/adv.grade.form.tpl deleted file mode 100644 index 2372f6d..0000000 --- a/templates/search/adv.grade.form.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/adv.links.tpl b/templates/search/adv.links.tpl deleted file mode 100644 index dd13ea1..0000000 --- a/templates/search/adv.links.tpl +++ /dev/null @@ -1,48 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $do_title}

    Recherche dans l'annuaire

    {/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/index.tpl b/templates/search/index.tpl deleted file mode 100644 index 99471bd..0000000 --- a/templates/search/index.tpl +++ /dev/null @@ -1,88 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{if $formulaire eq 0 and !$pl_errors} - {if !$simple} - {if !$advanced} - {include file=search/quick.form.tpl show_js=1} - {else} - {include file=search/adv.links.tpl do_title=1 with_soundex=$with_soundex} - {/if} - {/if} - - {include file='core/plset.tpl'} - - {if $search_pages_nb > 1} -

    - {foreach from=$search_pages_link item=l} - {if $l.i eq $search_page} - {$l.text} - {else} - {$l.text} - {/if} - {/foreach} -

    - {/if} - - {if $search_results_nb eq 1}{literal} - - {/literal}{/if} - - {if $smarty.session.auth ge AUTH_COOKIE} -

    - {icon name=lightbulb title=Astuce}Astuce : - {if $search_results_nb} - Si tu survoles une fiche, tu sauras quand elle a été mise à jour la dernière fois ! - {elseif $advanced && $with_soundex && ($smarty.request.name || $smarty.request.firstname)} - Si tu n'es pas sûr de l'orthographe d'un nom, tu peux essayer la recherche par - proximité sonore. - {elseif $advanced} - Essaye d'élargir tes critères de recherche. - {elseif $smarty.session.auth ge AUTH_COOKIE} - Essaye la recherche avancée. - {else} - Pour les X inscrits à Polytechnique.org, un module de recherche avancée est disponible permettant de réaliser - des recherches fines dans l'annuaire. Si vous êtes un X et que vous n'êtes pas encore inscrit, commencez dès - maintenant la procédure. - {/if} -

    - {/if} -{else} - {if $advanced} - {include file=search/adv.form.tpl} - {else} - {include file=search/quick.tpl} - {/if} -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/quick.form.tpl b/templates/search/quick.form.tpl deleted file mode 100644 index 0c7ed25..0000000 --- a/templates/search/quick.form.tpl +++ /dev/null @@ -1,69 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Recherche dans l'annuaire

    - -
    - - {if $smarty.session.auth ge AUTH_COOKIE} - - - - - - - - - {else} - - - {/if} - - -
    - Recherche simple [>>> Recherche avancée] -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - -
    - -{if $show_js} -{literal} - -{/literal} -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/search/quick.tpl b/templates/search/quick.tpl deleted file mode 100644 index ff85d43..0000000 --- a/templates/search/quick.tpl +++ /dev/null @@ -1,137 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=search/quick.form.tpl show_js=1} - -{if hasPerm('user')} -

    Voir le trombi d'une promotion

    - -

    - - - -
    - - - - - -
    Promotion : - - -
    -
    - -{/if} - -

    Comment faire une recherche ?

    - -

    Nom, Prénom, Promotion...

    - -

    -La ligne de recherche ci-dessus accepte non seulement des mélanges de noms et de prénoms... -mais elle accepte de plus la syntaxe suivante pour les promotions : -

    -
      -
    • 1990 : signifie appartient à la promotion 1990 ;
    • -
    • 1990-2000 : signifie sur la promotion 1990 à 2000 ;
    • -
    • <1990 : signifie promotions inférieures ou égales à 1990 ;
    • -
    • >1990 : signifie promotions supérieures ou égales à 1990.
    • -
    -

    -Ainsi, rechercher tous les "Dupont" sur les promotions 1980 à 1990 et sur la promotion 2000 se fait avec la recherche : -Dupont 1980-1990 2000 -

    - -

    Astuce pour les noms...

    -

    -Parfois on ne sait plus si le nom qu'on recherche s'écrit « Lenormand », « Le Normand » ou « Le-Normand »... -

    -

    -Pour éviter ce genre d'écueils, il suffit de chercher : Le Normand
    -En effet, le moteur de recherche va alors chercher tous les utilisateurs dont le nom -contient 'Le' et 'Normand' sans distinction de casse et sans tenir compte des accents. -

    -

    -Il est conseillé d'omettre les particules car il est possible que celles-ci ne soient pas présentes dans -notre base de données. -

    - -{if hasPerm('user')} -

    Raccourcis...

    -

    - Un certain nombre de raccourcis permettent d'accéder plus rapidement au contenu du site : -

      -
    • fiche:prenom.nom.promo ouvre la fiche du camarade indiquée ;
    • -
    • ref:prenom.nom.promo ouvre la fiche référent du camarade indiquée ;
    • -
    • doc:phrase recherche phrase dans la documentation du site ;
    • - {if hasPerm('admin')} -
    • admin:prenom.nom.promo ouvre la fiche d'administration du camarade indiquée ;
    • -
    • ax:prenom.nom.promo ouvre la fiche ax du camarade concerné.
    • - {/if} -
    -

    - -

    - Ces raccourcis fonctionnement également depuis le lien de recherche rapide disponible sur toutes les pages - du site et depuis la barre de recherche de ton navigateur si tu installes le module - ci-dessous. -

    - - - - -{/if} - -

    Polytechniciens des promotions 1920 et précédentes

    -

    Notre base de données ne contient que les polytechniciens depuis la promotion 1921. Pour effectuer des recherches dans les -promotions précédentes, il faut utiliser l'annuaire en ligne de la bibliothèque de l'École.

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.backtrace.tpl b/templates/skin/common.backtrace.tpl deleted file mode 100644 index 7df0dee..0000000 --- a/templates/skin/common.backtrace.tpl +++ /dev/null @@ -1,80 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{foreach from=$backtraces key=bt_name item=trace} -
    -

    - {if $trace->error}{/if} - Exécution de {$bt_name} : {$trace->traces|@count} actions en {$trace->totaltime|string_format:"%.3f"}s (hover-me pour la trace) - {if $trace->error}{/if} -

    -
    -{foreach item=query from=$trace->traces} -{if $query.data} -{assign var=cols value=$query.data[0]|@count} -{else} -{assign var=cols value=1} -{/if} - - - - - {if $query.error} - - - - {else} - - - - {/if} -{if $query.data} - - {foreach key=key item=item from=$query.data[0]} - - {/foreach} - - {foreach item=data_row from=$query.data} - - {foreach item=item from=$data_row} - - {/foreach} - - {/foreach} -{/if} -
    - ACTION: -
    {$query.action}
    -
    -
    - ERROR:
    - {$query.error|nl2br} -
    - INFO:
    - {$query.rows} ligne{if $query.rows > 1}s{/if} en {$query.exectime|string_format:"%.3f"}s -
    {$key}
    {$item}
    -{/foreach} -
    -
    -{/foreach} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.bandeau.head.tpl b/templates/skin/common.bandeau.head.tpl deleted file mode 100644 index 102a8d0..0000000 --- a/templates/skin/common.bandeau.head.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.bandeau.tpl b/templates/skin/common.bandeau.tpl deleted file mode 100644 index 56f6f31..0000000 --- a/templates/skin/common.bandeau.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -{if !$login && $smarty.session.auth} - {assign var="login" value="true"} -{/if} - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf8: *} diff --git a/templates/skin/common.content.tpl b/templates/skin/common.content.tpl deleted file mode 100644 index 4781db6..0000000 --- a/templates/skin/common.content.tpl +++ /dev/null @@ -1,46 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if !$smarty.server.HTTP_USER_AGENT|regex_replace:"/^Mozilla\/(3|4\.[^0]).*$/":""} -

    ATTENTION !

    - -

    -Netscape 4 et certains autres navigateurs très anciens ne sont pas supportés par ce site !!! -

    -

    -En effet, ils ne comprenent qu'une trop faible partie des standards du web. -Il faut donc s'attendre à ce que nombre des fonctionnalités de ce site soient de ce fait indisponnibles. -

    -

    -Nous conseillons très vivement d'utiliser des navigateurs récents, tels -Firefox -

    -
    -{/if} - -{if !$pl_no_errors || $pl_failure} -{include file="skin/common.triggers.tpl"} -{/if} - -{if !$pl_failure && $pl_tpl}{include file=$pl_tpl}{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.devel.tpl b/templates/skin/common.devel.tpl deleted file mode 100644 index 65889e4..0000000 --- a/templates/skin/common.devel.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if #globals.debug#} -@@BACKTRACE@@ - -{if $validate} -
    - @HOOK@ - Validation: - CSS -   |   - références : - XHTML - CSS2 -
    -{/if} -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.doctype.tpl b/templates/skin/common.doctype.tpl deleted file mode 100644 index 587ec39..0000000 --- a/templates/skin/common.doctype.tpl +++ /dev/null @@ -1,30 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if !strpos($smarty.server.HTTP_USER_AGENT, 'MSIE 6')} - -{/if} - - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.footer.tpl b/templates/skin/common.footer.tpl deleted file mode 100644 index 5253b8b..0000000 --- a/templates/skin/common.footer.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -
    - Plat/al {#globals.version#} - Copyright © 1999-2008 Polytechnique.org -  -  - Lien avec l'AX -  -  - À propos de ce site et ses équipes -
    - Services et éthique - | Charte -{if $smarty.session.auth ge AUTH_COOKIE} - | Disponibilité - | Statistiques -{/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.header.tpl b/templates/skin/common.header.tpl deleted file mode 100644 index 568297d..0000000 --- a/templates/skin/common.header.tpl +++ /dev/null @@ -1,74 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - {if hasPerm('user')} - - {/if} - - - - - - - - - - {foreach from=$pl_css item=css} - - {/foreach} - {foreach from=$pl_inline_css item=css} - - {/foreach} - - - {foreach from=$pl_js item=js} - - {/foreach} - {javascript name=overlib} - {javascript name=md5} - {javascript name=sha1} - {javascript name=secure_hash} - - {if $pl_rss} - - {/if} - - {if $pl_extra_header} - {$pl_extra_header|smarty:nodefaults} - {/if} - - {$pl_title|default:"Polytechnique.org : le site des élèves et anciens élèves de l'École polytechnique"} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.menu.tpl b/templates/skin/common.menu.tpl deleted file mode 100644 index c26852e..0000000 --- a/templates/skin/common.menu.tpl +++ /dev/null @@ -1,100 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if !$smarty.session.auth} - - - - - - - - - - - - - - - -{else} - -{if $smarty.session.auth == AUTH_MDP} - -{elseif $smarty.cookies.ORGaccess} - -{/if} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{if hasPerm('admin')} - - - - - - - - - - - - - -
    Valid
    - - {if $globals->core->NbValid|smarty:nodefaults eq 0}-{else}{$globals->core->NbValid|default:'-'}{/if} - -
    -{/if} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.title.header.tpl b/templates/skin/common.title.header.tpl deleted file mode 100644 index 4b96a0d..0000000 --- a/templates/skin/common.title.header.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - -
    - - - {$globals->core->NbIns|number_format} polytechniciens sur le web -
    -
    - -
    -
    - {if $smarty.session.auth gt AUTH_PUBLIC && $smarty.session.notifs} - {$smarty.session.notifs} événement{if $smarty.session.notifs gt 1}s{/if} - {/if} -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/common.triggers.tpl b/templates/skin/common.triggers.tpl deleted file mode 100644 index 9a507a2..0000000 --- a/templates/skin/common.triggers.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{foreach from=$pl_triggers key=type item=triggers} -{if $triggers|@count} -
    -
      - {foreach from=$triggers item=err} -
    • {$err|smarty:nodefaults}
    • - {/foreach} -
    -
    -{/if} -{/foreach} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/default.tpl b/templates/skin/default.tpl deleted file mode 100644 index 67096d0..0000000 --- a/templates/skin/default.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/espace.tpl b/templates/skin/espace.tpl deleted file mode 100644 index d7f74cc..0000000 --- a/templates/skin/espace.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/humlinux.tpl b/templates/skin/humlinux.tpl deleted file mode 100644 index 4c98b24..0000000 --- a/templates/skin/humlinux.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [LES X SUR LE WEB] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/keynote.tpl b/templates/skin/keynote.tpl deleted file mode 100644 index fb21d00..0000000 --- a/templates/skin/keynote.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/linux.tpl b/templates/skin/linux.tpl deleted file mode 100644 index 0bf94c1..0000000 --- a/templates/skin/linux.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/liteskin.tpl b/templates/skin/liteskin.tpl deleted file mode 100644 index aae8664..0000000 --- a/templates/skin/liteskin.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/nbviolet.tpl b/templates/skin/nbviolet.tpl deleted file mode 100644 index bee60d7..0000000 --- a/templates/skin/nbviolet.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/newxorg.tpl b/templates/skin/newxorg.tpl deleted file mode 100644 index 41a54c4..0000000 --- a/templates/skin/newxorg.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/oldtimes.tpl b/templates/skin/oldtimes.tpl deleted file mode 100644 index dce826d..0000000 --- a/templates/skin/oldtimes.tpl +++ /dev/null @@ -1,81 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - - {if $smarty.session.suid} - - - - -
    - {$smarty.session.suid} ({$smarty.session.forlife}) - [exit] -
    - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - {include file=skin/common.bandeau.tpl} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/openweb.tpl b/templates/skin/openweb.tpl deleted file mode 100644 index b634ca7..0000000 --- a/templates/skin/openweb.tpl +++ /dev/null @@ -1,79 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - -
    - {include file="skin/common.content.tpl"} -
    -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/register.tpl b/templates/skin/register.tpl deleted file mode 100644 index 74049ab..0000000 --- a/templates/skin/register.tpl +++ /dev/null @@ -1,63 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} -
    - {include file="skin/common.content.tpl"} -
    - {else} - - - - - - - -
    - [ LOGO ] - [ Polytechnique.org ]
    - [LES X SUR LE WEB] -
    - {include file="skin/common.content.tpl"} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/sharky.tpl b/templates/skin/sharky.tpl deleted file mode 100644 index 4696bc4..0000000 --- a/templates/skin/sharky.tpl +++ /dev/null @@ -1,80 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - - {if $smarty.session.suid} - - - - -
    - {$smarty.session.suid} ({$smarty.session.forlife}) - [exit] -
    - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - {include file=skin/common.bandeau.tpl} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/spectral.tpl b/templates/skin/spectral.tpl deleted file mode 100644 index 9144454..0000000 --- a/templates/skin/spectral.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/skin/trapped.tpl b/templates/skin/trapped.tpl deleted file mode 100644 index cee1f4e..0000000 --- a/templates/skin/trapped.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file=skin/common.doctype.tpl} - - - {include file=skin/common.header.tpl} - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - {if $smarty.session.suid} - - {/if} - - {if $simple} - -
    - {include file="skin/common.content.tpl"} -
    - - {else} - - - - - - - - - - - - - -
    - [ Polytechnique.org ] - {include file="skin/common.title.header.tpl"} - [LES X SUR LE WEB] -
    - {include file=skin/common.menu.tpl} - - {include file="skin/common.content.tpl"} -
    - {include file=skin/common.footer.tpl} -
    - {/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/stats/coupure.tpl b/templates/stats/coupure.tpl deleted file mode 100644 index e58d81e..0000000 --- a/templates/stats/coupure.tpl +++ /dev/null @@ -1,124 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Coupures de Polytechnique.org

    - -{if $cp} - - - - - - - - - - - - - - - - - - - - - - - - -
    détails de l'interruption de service
    début{$cp.debut|date_format:"%x %X"}
    durée{$cp.duree}
    résumé{$cp.resume}
    services - {$cp.lg_services} -
    description {$cp.description}
    - -

    -retour à la liste -

    - -{else} - -

    - Tu trouveras ici les interruptions de service de Polytechnique.org qui ont été - constatées durant les trois dernières semaines, ou qui sont prévues dans le futur. - Il est à noter qu'à ce jour la quasi-totalité des coupures proviennent - de défaillances du réseau de l'Ecole, où nos serveurs sont hébergés (rupture de la - connexion internet de l'Ecole, problème électrique, etc...). -

    -

    - Pour avoir les détails d'une interruption particulière il te suffit de cliquer dessus. -

    - - - - - - - -{if $coupures->total()} -{iterate item=cp from=$coupures} - - - - - -{/iterate} -{else} - - - -{/if} -
    daterésuméservices affectés
    - - {$cp.debut|date_format} - - - - {$cp.resume} - - - - {$cp.services} - -
    - Il n'y a eu aucune coupure de service récemment -
    - -

    Problèmes avec les autres fournisseurs de services

    - -

    - La liste ci-dessous indique quels sont les fournisseurs de mails vers lesquels nous avons - actuellement des problèmes de tranmission. -

    - - - - {iterate from=$mxs item=mx} - - - - {/iterate} -
    Liste des disfonctionnements
    {$mx.host}
    {$mx.text}
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/stats/evolution_inscrits.tpl b/templates/stats/evolution_inscrits.tpl deleted file mode 100644 index 5f1b2a3..0000000 --- a/templates/stats/evolution_inscrits.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Evolution du nombre d'inscrits au site polytechnique.org

    - -
    -{if $jours eq 1825} -[depuis 5 ans] -{else} -[depuis 5 ans] -{/if} -{if $jours eq 730} -[depuis 2 ans] -{else} -[depuis 2 ans] -{/if} -{if $jours eq 365} -[depuis un an] -{else} -[depuis un an] -{/if} -{if $jours eq 30} -[depuis un mois] -{else} -[depuis 1 mois] -{/if} -
    -
    -  [ INSCRITS ] -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/stats/index.tpl b/templates/stats/index.tpl deleted file mode 100644 index 8a2705d..0000000 --- a/templates/stats/index.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Statistiques -

    - -

    -Quelques statistiques sur l'utilisation des services de Polytechnique.org ainsi que sur l'evolution et la repartition du nombre d'inscrits. -

    - - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/stats/nb_by_promo.tpl b/templates/stats/nb_by_promo.tpl deleted file mode 100644 index 5e5552a..0000000 --- a/templates/stats/nb_by_promo.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Inscrits par promo

    - -

    -Voici le nombre d'inscrits par promo : -

    - - - - - - - - {foreach item=nb10 key=lustre from=$nbs} - - - {foreach item=nb from=$nb10} - - {/foreach} - - {/foreach} -
    0123456789
    {$lustre}- - {if $nb && $nb.promo eq $promo} - {$nb.nb} - {elseif $nb} - {$nb.nb} - {else} - - - {/if} -
    - -{if $promo} - -

    -[répartition des inscrits par promo] -

    - -

    Courbe d'inscription de la promo {$promo}

    - -
    -  [ INSCRITS ] -
    - -{else} - -

    Inscrits par promo en (%)

    - -
    - [graphe du nombre d'inscrits par promo] -
    - -{/if} - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/stats/profile.tpl b/templates/stats/profile.tpl deleted file mode 100644 index c2fcb34..0000000 --- a/templates/stats/profile.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    - Fiches les plus consultées -

    - - - - - - - {if hasPerms('admin')}{/if} - - {iterate from=$profiles item=profile} - - - {if hasPerms('admin')}{/if} - - {/iterate} -
    NomConsultations
    {$profile.prenom} {$profile.nom} (X{$profile.promo}){$profile.count}
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/survey/admin.tpl b/templates/survey/admin.tpl deleted file mode 100644 index efe98fc..0000000 --- a/templates/survey/admin.tpl +++ /dev/null @@ -1,75 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Sondages

    - - - - - - {iterate item=s from=$survey_current} - - - - {assign var="has_cs" value="true"} - {/iterate} - {if !$has_cs} - - - - {/if} -
    - Sondages en cours -
    - • - - {$s.title} [{$s.end|date_format:"%x"} - {$survey_modes[$s.mode]}] - -
    Aucun sondage en cours
    - -
    - - - - - - {iterate item=s from=$survey_old} - - - - {assign var="has_os" value="true"} - {/iterate} - {if !$has_os} - - - - {/if} -
    - Anciens sondages -
    - • - - {$s.title} [{$s.end|date_format:"%x"} - {$survey_modes[$s.mode]}] - -
    Aucun ancien sondage
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/confirm.tpl b/templates/survey/confirm.tpl deleted file mode 100644 index 957e5ed..0000000 --- a/templates/survey/confirm.tpl +++ /dev/null @@ -1,40 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -

    Sondages : confirmation

    - -
    - {if is_array($survey_formhidden)} - {foreach from=$survey_formhidden item=s_value key=s_key} - - {/foreach} - {/if} - {if $survey_message neq ""} - {$survey_message} - {else} - Une confirmation est requise - {/if} -
    - - -
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_checkbox.tpl b/templates/survey/edit_checkbox.tpl deleted file mode 100644 index db03ee6..0000000 --- a/templates/survey/edit_checkbox.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file='survey/edit_radio.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_checkboxtable.tpl b/templates/survey/edit_checkboxtable.tpl deleted file mode 100644 index 71cab1c..0000000 --- a/templates/survey/edit_checkboxtable.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file='survey/edit_radiotable.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_new.tpl b/templates/survey/edit_new.tpl deleted file mode 100644 index c6350f2..0000000 --- a/templates/survey/edit_new.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - Type - - - - - {if $survey_type == "new"} - {include file='survey/edit_question.tpl'} - {else} - {include file="survey/edit_$survey_type.tpl"} - {/if} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_newsurvey.tpl b/templates/survey/edit_newsurvey.tpl deleted file mode 100644 index 94375a3..0000000 --- a/templates/survey/edit_newsurvey.tpl +++ /dev/null @@ -1,31 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - Remplissez ici une description générale du sondage, puis cliquer sur "Continuer" - pour passer à l'édition des questions. - - -{include file='survey/edit_root.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_num.tpl b/templates/survey/edit_num.tpl deleted file mode 100644 index f18f17f..0000000 --- a/templates/survey/edit_num.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - {include file='survey/edit_question.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_question.tpl b/templates/survey/edit_question.tpl deleted file mode 100644 index 30b1c5c..0000000 --- a/templates/survey/edit_question.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Question - - - - Commentaire - - - - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_radio.tpl b/templates/survey/edit_radio.tpl deleted file mode 100644 index 3282556..0000000 --- a/templates/survey/edit_radio.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - {include file='survey/edit_question.tpl'} - - Choix - - {foreach from=$survey_current.choices key=value item=choice} - - {/foreach} - - - - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_radiotable.tpl b/templates/survey/edit_radiotable.tpl deleted file mode 100644 index 71accdb..0000000 --- a/templates/survey/edit_radiotable.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file='survey/edit_radio.tpl'} - - Sous-questions - - {foreach from=$survey_current.subquestions key=value item=subquestion} - - {/foreach} - - - - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_root.tpl b/templates/survey/edit_root.tpl deleted file mode 100644 index 26d1df2..0000000 --- a/templates/survey/edit_root.tpl +++ /dev/null @@ -1,75 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - Titre - - - - Commentaire - - - - Date de fin - - {valid_date name="survey_question[end]" value=$survey_current.end to=90} - - - - - Type de sondage - - - - - Promotions - - - - - - Exemple : 1954,1986-1989,-1942,2000-   restreindra le sondage à toutes les promotions suivantes :
    - 1954, 1986 à 1989, toutes jusqu'à 1942 et toutes à partir 2000 (les bornes sont systématiquement incluses) - - - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_survey.tpl b/templates/survey/edit_survey.tpl deleted file mode 100644 index dca5faa..0000000 --- a/templates/survey/edit_survey.tpl +++ /dev/null @@ -1,37 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -

    Sondage : {if $survey_type == 'root'}nouveau sondage{else}nouvelle question{/if}

    - -
    - - - - {include file="survey/edit_$survey_type.tpl"} -
    -
    - - - -
    -
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_text.tpl b/templates/survey/edit_text.tpl deleted file mode 100644 index f18f17f..0000000 --- a/templates/survey/edit_text.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - {include file='survey/edit_question.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/edit_textarea.tpl b/templates/survey/edit_textarea.tpl deleted file mode 100644 index f18f17f..0000000 --- a/templates/survey/edit_textarea.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - {include file='survey/edit_question.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/error.tpl b/templates/survey/error.tpl deleted file mode 100644 index 21e5c22..0000000 --- a/templates/survey/error.tpl +++ /dev/null @@ -1,44 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -

    Sondages : erreur

    - -{if !is_null($survey_errors) && is_array($survey_errors)} - - - - - {foreach from=$survey_errors item=survey_error} - - - - - {/foreach} -
    Une ou plusieurs erreurs sont survenues
    • {$survey_error.error}corriger
    -{elseif $survey_message neq ""} - {$survey_message} -{else} -Une erreur inconnue est survenue dans l'édition de ce sondage. N'hésite pas à signaler ce bug si il persiste. -{/if} -
    -Retour - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/index.tpl b/templates/survey/index.tpl deleted file mode 100644 index 3479967..0000000 --- a/templates/survey/index.tpl +++ /dev/null @@ -1,80 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Sondages

    - - - - - - {iterate item=s from=$survey_current} - {if $smarty.session.auth || $s.mode == Survey::MODE_ALL} - - - - {assign var="has_cs" value="true"} - {/if} - {/iterate} - - - -
    - Sondages en cours -
    - • - - {$s.title} [{$s.end|date_format:"%x"} - {$survey_modes[$s.mode]}] - -
    - {if !$has_cs}Aucun sondage en cours{/if} - {if $smarty.session.auth}{icon name=page_edit} Proposer un sondage{/if} -
    - -
    - - - - - - {iterate item=s from=$survey_old} - {if $smarty.session.auth || $s.mode == Survey::MODE_ALL} - - - - {assign var="has_os" value="true"} - {/if} - {/iterate} - {if !$has_os} - - - - {/if} -
    - Anciens sondages -
    - • - - {$s.title} [{$s.end|date_format:"%x"} - {$survey_modes[$s.mode]}] - -
    Aucun ancien sondage
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_checkbox.tpl b/templates/survey/show_checkbox.tpl deleted file mode 100644 index fe025dc..0000000 --- a/templates/survey/show_checkbox.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $survey_resultmode} -
      - {foreach item=sresult from=$squestion.result} -
    • {$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)
    • - {/foreach} -
    -{else} - {assign var=sid value=$survey.id} - {assign var=sqid value=$squestion.id} - {if $survey_votemode} - {html_checkboxes name="survey$sid[$sqid]" options=$squestion.choices separator='
    '} - {else} - {html_checkboxes name="survey$sid[$sqid]" options=$squestion.choices separator='
    ' disabled='disabled'} - {/if} -{/if} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_checkboxtable.tpl b/templates/survey/show_checkboxtable.tpl deleted file mode 100644 index 47f8682..0000000 --- a/templates/survey/show_checkboxtable.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - {foreach from=$squestion.choices item=schoice} - - {/foreach} - -{foreach from=$squestion.subquestions item=ssubq key=ssqid} - - - {assign var=sid value=$survey.id} - {assign var=sqid value=$squestion.id} - {if $survey_resultmode} - {foreach from=$squestion.choices item=schoice key=value} - - {/foreach} - {else} - {foreach from=$squestion.choices item=schoice key=value} - - {/foreach} - {/if} -{/foreach} -
    {$schoice}
    {$ssubq} - {$squestion.result.$ssqid.$value*100/$survey.votes|string_format:"%.1f"}% ({$squestion.result.$ssqid.$value} votes) - - -
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_num.tpl b/templates/survey/show_num.tpl deleted file mode 100644 index 3896067..0000000 --- a/templates/survey/show_num.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file='survey/show_text.tpl'} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_question.tpl b/templates/survey/show_question.tpl deleted file mode 100644 index 7c3aced..0000000 --- a/templates/survey/show_question.tpl +++ /dev/null @@ -1,30 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$squestion.question}

    -{if $squestion.comment != ''} - {$squestion.comment}
    -{/if} -{assign var='squestion_type' value=$squestion.type} -{include file="survey/show_$squestion_type.tpl"} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_radio.tpl b/templates/survey/show_radio.tpl deleted file mode 100644 index 2b6e21d..0000000 --- a/templates/survey/show_radio.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $survey_resultmode} -
      - {foreach item=sresult from=$squestion.result} -
    • {$squestion.choices[$sresult.answer]} : {$sresult.count*100/$survey.votes|string_format:"%.1f"}% ({$sresult.count} votes)
    • - {/foreach} -
    -{else} - {assign var=sid value=$survey.id} - {assign var=sqid value=$squestion.id} - {if $survey_votemode} - {html_radios name="survey$sid[$sqid]" options=$squestion.choices separator='
    '} - {else} - {html_radios name="survey$sid[$sqid]" options=$squestion.choices separator='
    ' disabled='disabled'} - {/if} -{/if} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_radiotable.tpl b/templates/survey/show_radiotable.tpl deleted file mode 100644 index 060bcf6..0000000 --- a/templates/survey/show_radiotable.tpl +++ /dev/null @@ -1,51 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - {foreach from=$squestion.choices item=schoice} - - {/foreach} - -{foreach from=$squestion.subquestions item=ssubq key=ssqid} - - - {assign var=sid value=$survey.id} - {assign var=sqid value=$squestion.id} - {if $survey_resultmode} - {foreach from=$squestion.choices item=schoice key=value} - - {/foreach} - {else} - {foreach from=$squestion.choices item=schoice key=value} - - {/foreach} - {/if} -{/foreach} -
    {$schoice}
    {$ssubq} - {$squestion.result.$ssqid.$value*100/$survey.votes|string_format:"%.1f"}% ({$squestion.result.$ssqid.$value} votes) - - -
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_root.tpl b/templates/survey/show_root.tpl deleted file mode 100644 index 8e6c20b..0000000 --- a/templates/survey/show_root.tpl +++ /dev/null @@ -1,117 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Sondage : {$survey.title}

    -
    - - - - {if $survey_editmode && !$survey.valid} - {assign var="survey_editallmode" value=true} - {/if} - {if $survey_editmode} - - {/if} - - {if is_array($survey.questions)} - {foreach from=$survey.questions item=squestion} - - - {if $survey_editallmode} - - {/if} - - {/foreach} - {/if} -
    - - - - - - - - - - - - - {if $survey.mode != Survey::MODE_ALL} - - - - - {/if} - {if $survey_warning} - - - - {/if} -
    {$survey.description}
    Fin du sondage :{$survey.end|date_format:"%x"}
    Type de sondage :{$survey_modes[$survey.mode]}
    Promotions : - {if $survey.promos eq "#"} - erreur - {elseif $survey.promos eq ""} - aucune restriction - {else} - {$survey.promos} - {/if} -
    {$survey_warning}
    - {if $survey_resultmode} -

    {$survey.votes} personnes ont répondu à ce sondage.
    - Récupérer l'ensemble des résultats au format csv -

    - {/if} -
    - {icon name=page_edit} Modifier la description - {if $survey_editallmode}
    {icon name=add} Ajouter une question au début{/if} -
    - {include file='survey/show_question.tpl' squestion=$squestion} - - {icon name=page_edit} Modifier cette question
    - {icon name=delete} Supprimer cette question
    - {icon name=add} Ajouter une question après -
    -

    - {if $survey_editmode} - - {icon name=tick} - {if $survey_updatemode}Enregistrer les modifications{else}Proposer ce sondage{/if} - | - - {icon name=cross} Annuler - {if $survey_updatemode}les modifications{else}totalement la création de ce sondage{/if} - - {elseif $survey_adminmode} - {if !$survey.valid}Valider ce sondage | {/if} - {icon name=tick} Modifier ce sondage | - {icon name=cross} Supprimer ce sondage | - Retour - {elseif $survey_votemode} - - - {else} - Retour - {/if} -

    -
    - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_text.tpl b/templates/survey/show_text.tpl deleted file mode 100644 index 80b078a..0000000 --- a/templates/survey/show_text.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $survey_resultmode} - Quelques réponses données par les personnes sondées : -
      - {foreach item=sresult from=$squestion.result} -
    • {$sresult.answer}
    • - {/foreach} -
    -{else} - -{/if} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/show_textarea.tpl b/templates/survey/show_textarea.tpl deleted file mode 100644 index a8d0302..0000000 --- a/templates/survey/show_textarea.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $survey_resultmode} - Quelques réponses données par les personnes sondées : -
      - {foreach item=sresult from=$squestion.result} -
    • {$sresult.answer}
    • - {/foreach} -
    -{else} - -{/if} - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/survey/success.tpl b/templates/survey/success.tpl deleted file mode 100644 index 2eb9aa3..0000000 --- a/templates/survey/success.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -

    Sondages : succès

    - -{if $survey_message neq ""} - {$survey_message} -{else} - Opération réussie -{/if} -
    -Retour - -{* vim:set et sw=2 sts=2 ts=8 enc=utf-8: *} diff --git a/templates/xnet/admin.tpl b/templates/xnet/admin.tpl deleted file mode 100644 index fe44a1a..0000000 --- a/templates/xnet/admin.tpl +++ /dev/null @@ -1,64 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $smarty.get.del} - -

    Suppression du groupe {$nom}

    - -
    - {xsrf_token_field} -
    - -
    -
    - -{else} - -

    Ajouter un groupe

    - -
    - {xsrf_token_field} -

    - Pour ajouter un groupe, choisir ici le diminutif qu'il va utiliser, - tu seras ensuite redirigé vers une page te permettant d'éditer le groupe : -

    -
    - - -
    -
    - - -

    Administration des groupes X.net

    - - - {foreach from=$assos item=a key=i name=all} - {if $i is even}{/if} - - - {if $i is odd || $smarty.foreach.all.last}{/if} - {/foreach} -
    {icon name=delete title='delete'}{$a.nom}
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/deconnexion.tpl b/templates/xnet/deconnexion.tpl deleted file mode 100644 index 1a9ebc1..0000000 --- a/templates/xnet/deconnexion.tpl +++ /dev/null @@ -1,31 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Déconnexion de Polytechnique.net

    - -

    -Au revoir ! -
    -Tu as bien été déconnecté du site Polytechnique.net. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/groupes.tpl b/templates/xnet/groupes.tpl deleted file mode 100644 index c706a8f..0000000 --- a/templates/xnet/groupes.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="xnet/include/descr.tpl"} - - - - - - {if $doms} - - {/if} - - - -
    - - - - - - {foreach from=$doms item=g} -
    - {$g.nom} -
    - {/foreach} -
    - {if $gps} - - {foreach from=$gps item=g name=all key=i} - {if $doms || $i is even} - - {/if} - - {if !$doms && $i is even && $smarty.foreach.all.last}{/if} - {if $doms || $i is odd || $smarty.foreach.all.last} - - {/if} - {/foreach} -
    - {$g.nom} -
    - {/if} -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/include/descr.tpl b/templates/xnet/include/descr.tpl deleted file mode 100644 index 938c4ce..0000000 --- a/templates/xnet/include/descr.tpl +++ /dev/null @@ -1,72 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $cat eq groupesx} - -

    -Les groupes X rassemblent des polytechniciens partageant les mêmes centres d'intérêt, -autour de sujets très différents. Certains de ces groupes sont des associations -dépendant de l'amicale des anciens, définis par l'article 12 -des statuts de l'AX. Les groupes déclarés auprès de l'AX sont indiqués par une petite -note en bas de la page qui leur est dédiée sur ce site. -

    -

    -Pour créer un nouveau Groupe X agréé par l'AX au titre de -l'article 12 des statuts, tu peux te référer -aux documents de l'AX. -

    -

    -Si tu souhaites obtenir le statut d'association loi de 1901, tu peux obtenir des -renseignements auprès de sites spécialisés. -

    - -{elseif $cat eq binets} - -

    -Les binets sont les associations des élèves polytechniciens effectuant leur scolarité à l'X (sur le -plateau). Cette appellation, qui peut sembler étrange, est, pour certains, simplement un diminutif -de "cabinet". Pour d'autres, elle aurait pour origine un certain général Binet, commandant l'École -polytechnique, qui aurait le premier autorisé ces regroupements d'élèves. Les binets présents à -l'École n'ont pas tous leur site web présenté ici. Vous pouvez voir tous les sites des binets en -cliquant ici. -

    - -{elseif $cat eq institutions} - -

    -De nombreux organismes officiels sont liés à l'École polytechnique : le collège de l'École -polytechnique, l'amicale des anciens élèves, le site des X sur le web Polytechnique.org, etc... -Cette liste n'est pas exhaustive. Vous pouvez découvrir chacun de ces organismes en cliquant sur les -liens correspondants : -

    - -{elseif $cat eq promotions} - -

    -Quelques promotions de polytechniciens ont mis au point leur propre site web, qui permet aux élèves -de ces promotions d'organiser des repas promos, de faire partager des souvenirs photographiques, de -se retrouver sur internet... En voici des exemples : -

    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/index.tpl b/templates/xnet/index.tpl deleted file mode 100644 index c825ef8..0000000 --- a/templates/xnet/index.tpl +++ /dev/null @@ -1,49 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - -
    - Logo des groupes - -

    - Polytechnique.net est le site dédié à toutes les activités associatives des polytechniciens, - élèves ou anciens. Il décrit aussi les organismes institutionnels relatifs à l'École - polytechnique et les promotions présentes sur le web. -

    -

    - Ce site vous propose des liens vers les forums de discussions et les sites webs des - différentes associations, des adresses où les contacter, et tous les renseignements utiles - pour mieux les connaître. Il offre d'autre part des - outils de gestion de groupe à l'intention de leurs responsables. -

    -

    - Si vous recherchez la page d'un groupe particulier, vous pouvez - en consulter la liste. -

    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/plan.tpl b/templates/xnet/plan.tpl deleted file mode 100644 index f882ccb..0000000 --- a/templates/xnet/plan.tpl +++ /dev/null @@ -1,93 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - - - - - -
    - - - - - - - -
    Groupes X
    - {foreach from=$groupesx key=id item=dom} - {$dom[0].domnom} - {foreach from=$dom item=g} - {$g.nom} - {/foreach} - {/foreach} -
    -
    - - - - - - - -
    Binets
    - {foreach from=$binets key=id item=dom} - {$dom[0].domnom} - {foreach from=$dom item=g} - {$g.nom} - {/foreach} - {/foreach} -
    -
    - - - - - - - -
    Promotions
    - {iterate from=$promos item=g} - {$g.nom} - {/iterate} -
    -
    - - - - - - - -
    Institutions
    - {iterate from=$inst item=g} - {$g.nom} - {/iterate} -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnet/skin.tpl b/templates/xnet/skin.tpl deleted file mode 100644 index da0beba..0000000 --- a/templates/xnet/skin.tpl +++ /dev/null @@ -1,237 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="skin/common.doctype.tpl"} - - - - - - - - - - - - - - - - - - {foreach from=$pl_css item=css} - - {/foreach} - {foreach from=$pl_inline_css item=css} - - {/foreach} - - {foreach from=$pl_js item=js} - - {/foreach} - {javascript name=overlib} - - {if $pl_rss} - - {/if} - - {if $pl_extra_header} - {$pl_extra_header|smarty:nodefaults} - {/if} - - Les associations polytechniciennes - {include file=skin/common.bandeau.head.tpl} - - - {include file=skin/common.devel.tpl} - {if !$simple} - {include file=skin/common.bandeau.tpl} - {/if} - - - {if !$simple} - - - - {/if}{* fin simple *} - - {if $menu && !$simple} - - - - - {else} - - - - {if !$simple} - - - - - - {/if} - {/if} - {if !$simple} - - - - - - - - - - - - {/if} -
    - - - - - - - {if $xnet_type} - - {if $asso} - - {/if} - {else} - - {/if} - -
    - Logo Assos - - {if $xnet_type} - Logo {$xnet_type} - {else} - Logo {$xnet_type} - {/if} - - Fin logo - - bandeau - - {$xnet_type} -
    -
    - {include file="skin/common.content.tpl"} -
    - {include file="skin/common.content.tpl"} -
    ----------
    - - - - - - - - - -
    ----------
    - - - - - -
    - {list_all_my_groups} - {if !$smarty.session.auth} -
    Me connecter :
    - polytechnicien - {if $platal->pl_self() neq 'exit'} - - {/if} - {/if} -
    - {if hasPerm('admin')} - - Gérer les groupes - {icon name=wrench title="Administration"} -
    - {/if} - - Manuel de l'utilisateur - {icon name=lightbulb title="Documentation"} - -
    -
    ----------
    - plan du site - - services proposés - - à propos de ce site - - nous contacter - {if $smarty.session.auth} - - signaler un bug - {/if} -
    - Plat/al {#globals.version#} - © Copyright 2000-2008 Association Polytechnique.org -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/admin.tpl b/templates/xnetevents/admin.tpl deleted file mode 100644 index 5402e45..0000000 --- a/templates/xnetevents/admin.tpl +++ /dev/null @@ -1,283 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Événements

    - -

    -L'événement {$evt.intitule} -{if $evt.titre} - {$evt.titre} -{/if} -{if $evt.titre || count($moments) eq 1} -comptera {$evt.nb_tot} personne{if $evt.nb_tot > 1}s{/if}. -{else} -({$evt.nb} personne{if $evt.nb > 1}s ont réalisé leur{else} a réalisé son{/if} inscription). -{/if} -

    - -{if $evt.participant_list && $is_admin} -

    -[envoyer un mail à ceux qui viennent] -- -[envoyer un mail aux membres non inscrits] -

    -{/if} - -{if count($moments) > 1} -

    -[argv[2]}class="erreur"{/if}>tout] -{foreach from=$moments item=m} -[argv[2] eq $m.item_id}class="erreur"{/if}>{$m.titre}] -{/foreach} -

    -{/if} - -

    -[tout] -{foreach from=$alphabet item=c} -[{$c}] -{/foreach} -

    - -{if $is_admin}{literal} - -{/literal} - -{if $oublis} -

    -Ils ont payé mais ont oublié de s'inscrire : -

    - - - - - - - - - {iterate from=$oubliinscription item=m} - - - - - - - {/iterate} -
    Prénom NOMPromoInfosMontant
    - - {if !$m.prenom && !$m.nom} - {$m.email} - {else} - {$m.prenom} {$m.nom} - {/if} - - {$m.promo} - {icon name=user_suit title="fiche"} - {icon name=vcard title="vcard"} - {icon name=email title="mail"} - {$m.montant}
    - -
    -{/if} - -{/if} - - - - {if $is_admin && $evt.paiement_id && $tout} - {assign var=height value='rowspan="2"'} - {/if} - - - - {if $tout} - {if $moments} - {foreach from=$moments item=m} - - {/foreach} - {else} - - {/if} - {if $is_admin && $evt.money} - - - {/if} - {else} - - {/if} - - {if $is_admin && $evt.paiement_id && $tout} - - - - - - {/if} - {foreach from=$participants item=m} - - - - - {if $tout} - {if $moments} - {foreach from=$moments item=i} - - {/foreach} - {else} - - {/if} - {if $is_admin && $evt.money} - - {if $evt.paiement_id} - - - {/if} - - {/if} - {else} - - {/if} - - {/foreach} - {if $is_admin && $evt.money} - - {assign var=cols value=$moments|@count} - - - {if $evt.paiement_id} - - - {/if} - - - {/if} -
    Prénom NOMPromoInfo{$m.titre}NombreMontantPayéNombre
    TélépaiementAutreTotal
    - {if $is_admin}{/if} - {if $m.femme}•{/if}{if !$m.prenom && !$m.nom}{$m.email}{else}{$m.prenom} {$m.nom}{/if} - {if $is_admin}{/if} - {$m.promo} - {if $m.x} - {icon name=user_suit title="fiche"} - {icon name=vcard title="vcard"} - {icon name=email title="mail"} - {else} - {icon name=email title="mail"} - {/if} - {$m[$i.item_id]}{$m[1]} $m.paid}class="erreur"{/if}>{$m.montant}€{$m.telepayment|default:0}€{$m.adminpaid|default:0}€{$m.paid}€ - {$m.nb} -
    Total{$evt.topay}€{$evt.telepaid|default:0}€{$evt.adminpaid|default:0}€{$evt.paid}€
    - -

    -{foreach from=$links item=ofs key=txt} -{$txt} -{/foreach} -

    - -{if $absents->total()} - -
    - -

    Les personnes suivantes ont indiqué qu'elles ne viendraient pas à l'événement :

    - - - - {iterate from=$absents item=m} - - - - - {/iterate} -
    Prénom NOMOrigine
    - {if $is_admin}{/if} - {if $m.sexe}•{/if}{$m.prenom} {$m.nom} - {if $is_admin}{/if} - - {$m.promo} -
    - -{/if} - -{if $is_admin} - -

    -[Télécharger le fichier Excel] -

    - -
    - -

    -En tant qu'administrateur, tu peux fixer la venue (accompagnée ou pas) d'un des membres du groupe. -Donne ici son mail, ainsi que le nombre de participants. -

    - -
    -

    - - - Mail : - - {if $platal->argv[2]} - {$evt.titre} : - {else} - {foreach from=$moments item=m} - {$m.titre} : - {foreachelse} - Nombre : - {/foreach} - {/if} - -

    -
    - -{if $evt.money} - -
    - -

    -En tant qu'administrateur, tu peux entrer un paiement reçu par une autre source que le télépaiement -du site X.org. Ce montant s'ajoutera aux montants déjà entrés. Si tu as fait une erreur, tu peux -entrer un montant négatif. -

    - -

    -Note que tu peux cliquer sur les noms des membres pour remplir automatiquement la case ci-dessous. -

    - -
    -

    - - Mail : - montant : € - -

    -
    -{/if} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/calendar.tpl b/templates/xnetevents/calendar.tpl deleted file mode 100644 index 7ae6a65..0000000 --- a/templates/xnetevents/calendar.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -BEGIN:VCALENDAR -{display_ical name="prodid" value="-//Polytechnique.org//Plat-al//FR"} -VERSION:2.0 -CALSCALE:GREGORIAN -X-WR-TIMEZONE:Europe/Paris -METHOD:PUBLISH -{display_ical name="x-wr-calname" value=$asso.nom} -BEGIN:VEVENT -DSTAMP:{$timestamp|date_format:"%Y%m%dT%H%M%SZ"} -DTSTART;VALUE=DATE;TZID=Europe/Paris:{$e.debut} -DTEND;VALUE=DATE;TZID=Europe/Paris:{$e.fin} -ORGANIZER;CN="{$e.prenom} {$e.nom}":MAILTO:{$e.alias}@polytechnique.org -UID:event-{$e.short_name}-{$e.eid}@{$asso.diminutif}.polytechnique.org -{if $admin} -{foreach from=$participants item=m} -{if $m.x} -ATTENDEE;CN="{$m.prenom} {$m.nom} (X{$m.promo})":MAILTO:{$m.email}@{#globals.mail.domain#} -{else} -ATTENDEE;CN="{$m.prenom} {$m.nom} (non-X)":MAILTO:{$m.email} -{/if} -{/foreach} -{/if} -{if $e.accept_nonmembre} -CLASS:PUBLIC -{else} -CLASS:PRIVATE -{/if} -{display_ical name="summary" value=$e.intitule} -{display_ical name="description" value=$e.descriptif} -END:VEVENT -END:VCALENDAR -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/csv.tpl b/templates/xnetevents/csv.tpl deleted file mode 100644 index 1aab7e1..0000000 --- a/templates/xnetevents/csv.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software, you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation, either version 2 of the License; or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY, without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program, if not; write to the Free Software *} -{* Foundation, Inc.; *} -{* 59 Temple Place, Suite 330; Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} -Nom;Prénom;Promotion{if $tout}{foreach from=$moments item=m};{$m.titre}{/foreach}{if $admin && $money};À payer;{if -$telepayment}Télépaiement;Liquide/Chèque;{/if}Payé{/if}{else};Nombre{/if} - -{if $participants} -{foreach from=$participants item=m} - -; -{$m.nom};{$m.prenom};{$m.promo}{if $tout}{foreach from=$moments item=i};{$m[$i.item_id]}{/foreach}{if $admin && -$money};{$m.montant};{if $telepayment}{$m.telepayment};{$m.adminpaid};{/if}{$m.paid}{/if}{else};{$m.nb}{/if} - -{/foreach} -; -{/if} -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/edit.tpl b/templates/xnetevents/edit.tpl deleted file mode 100644 index 5a208cc..0000000 --- a/templates/xnetevents/edit.tpl +++ /dev/null @@ -1,252 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    {$asso.nom} : {$evt.intitule|default:"Nouvel événement"}

    - -

    - Un événement peut être une réunion, un séminaire, une conférence, un voyage promo, - etc... Pour en organiser un et bénéficier des outils de suivi d'inscription et de - paiement offerts, il te faut remplir les quelques champs du formulaire ci-dessous. -

    -

    - Tu as la possibilité, pour un événement donné, de distinguer plusieurs "moments" - distincts. Par exemple, dans le cas d'une réunion suivie d'un dîner, il peut être - utile de comptabiliser les présents à la réunion d'une part et de compter ceux - qui s'inscrivent au repas d'autre part (en général certains participants à la réunion - ne restent pas pour le dîner...), de sorte que tu sauras combien de chaises prévoir - pour le premier "moment" (la réunion) et pour combien de personnes réserver le - restaurant. -

    - -
    -

    Description de l'événement

    - -{if $evt.eid} -

    - Attention : si tu souhaites modifier la structure d'un événement alors - que des personnes y sont déjà inscrites, contacte préalablement - l'équipe de Polytechnique.org. -

    -{/if} - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Intitulé de l'événement -
    - Nom complet : - - -
    - Nom raccourci :
    - (pour les mailings listes) -
    - - (n'utiliser que chiffres, lettres, tiret et point. garder court) -
    - Descriptif : - - -
    - Inscriptions -
    - Fin des inscriptions : - - - - {html_select_date prefix='inscr_' end_year='+5' day_value_format='%02d' - field_order='DMY' field_separator=' / ' month_format='%m' time=$evt.deadline_inscription} - compris. - -
    - Options : - - Montrer la liste des inscrits aux membres : - oui - non - -
    - Autoriser les non-membres : - oui - non - -
    - Autoriser les invités : - oui - non -
    - Paiement :  - -
    - -
    -

    Déroulement de l'événement

    - - - - - - - - - - - - - - - {foreach from=$moments item=i} - {assign var='moment' value=$items[$i]} - - - - - - - - - - - - - - - - {/foreach} -
    - Début : - - le {html_select_date prefix='deb_' end_year='+5' day_value_format='%02d' - field_order='DMY' field_separator=' / ' month_format='%m' time=$evt.debut} - à {html_select_time use_24_hours=true display_seconds=false - time=$evt.debut prefix='deb_' minute_interval=5} -
    - Fin : - - le {html_select_date prefix='fin_' end_year='+5' day_value_format='%02d' - field_order='DMY' field_separator=' / ' month_format='%m' time=$evt.fin} - à {html_select_time use_24_hours=true display_seconds=false - time=$evt.fin prefix='fin_' minute_interval=5} -
    Moment {$i}
    Intitulé :
    Détails pratiques :
    Tarif :
    (par participant)
    (0 si gratuit)
    - -
    - {if $evt.eid}{/if} - -   - -
    - -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/index.tpl b/templates/xnetevents/index.tpl deleted file mode 100644 index eff4fd5..0000000 --- a/templates/xnetevents/index.tpl +++ /dev/null @@ -1,217 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if !$is_admin} -

    {$asso.nom} : Événements

    -{else} -

    - {$asso.nom} : - {if $archive}[Événements] {else}Événements {/if} - {if $archive}Archives {else}[Archives] {/if} -

    - -{if $updated} -

    - La modification de l'inscription a été prise en compte ! - {if $updated.topay > $updated.paid} -
    N'oublie pas de payer {math equation="a-b" a=$updated.topay b=$updated.paid} € - {if $updated.paid > 0} - (tu as déjà payé {$updated.paid|replace:'.':','} €) - {/if} - {if $updated.paiement_id} - [ - Payer en ligne] - {/if} - {/if} -

    -{/if} - -{if !$archive} -

    - [Annoncer un nouvel événement] -

    -{/if} -{/if} - -{foreach from=$evenements item=e} - - - - - - - - - - - - - - - - - - - - {if $is_admin || $e.show_participants || ($e.deadline_inscription && $e.inscr_open)} - - - - - {/if} - - - - - - - {if $e.inscr_open} - - - - {/if} - -
    - - {icon name=calendar_view_day title="Événement iCal"} - - {$e.intitule} - {if !$e.inscr_open} - (Inscriptions closes) - {/if} - {if $is_admin} -
    - [ - modifier - {icon name=date_edit title="Édition de l'événement"}] -   - [ - {if !$archive} - archiver - {icon name=package_add title="Archivage"}] - {else} - désarchiver - {icon name=package_delete title="Désarchivage"}] - {/if} -   - [ - supprimer - {icon name=delete title='Suppression'}] - {/if} -
    Date : - {if $e.fin and $e.fin neq $e.debut} - {if $e.debut_day eq $e.fin_day} - le {$e.debut|date_format:"%d %B %Y"} de {$e.debut|date_format:"%H:%M"} à {$e.fin|date_format:"%H:%M"} - {else} - du {$e.debut|date_format:"%d %B %Y à %H:%M"}
    - au {$e.fin|date_format:"%d %B %Y à %H:%M"} - {/if} - {else} - le {$e.debut|date_format:"%d %B %Y à %H:%M"} - {/if} -
    Annonceur : - {$e.prenom} {$e.nom} ({$e.promo}) -
    Informations : - {if $is_admin || $e.show_participants} - - consulter la liste des participants - {icon name=group title="Liste des participants"} -
    - {/if} - {if $e.deadline_inscription && $e.inscr_open} - dernières inscriptions - le {$e.deadline_inscription|date_format:"%d %B %Y"} - {/if} -
    - État inscription : - {if $e.inscr_open} - - {/if} - - {if !$e.inscrit} - Non inscrit
    - {else} - {foreach from=$e.moments item=m} - {if !$m.nb} - Tu ne viendras pas - {elseif $m.nb eq 1} - Tu viendras seul - {else} - Tu viendras avec {$m.nb-1} personne{if $m.nb > 2}s{/if} - {/if} à {$m.titre}.
    - {/foreach} - {/if} - - {if $e.topay} - - {if !$e.paid} - Tu dois payer {$e.topay|replace:'.':','} €. - {elseif $e.paid < $e.topay} - Tu dois encore payer {math equation="a-b" a=$e.topay b=$e.paid|replace:'.':','} € - (tu as déjà payé {$e.paid|replace:'.':','} €). - {else} - Tu as déjà payé les {$e.paid|replace:'.':','} € de ton inscription. - {/if} - {if $e.paiement_id && $e.paid < $e.topay} - [ - Payer en ligne] - {/if} - - {/if} -
    - - - gérer mon inscription - - -
    - -
    - -{foreachelse} - -

    -{if $archive} - Aucun événement n'a été archivé par les animateurs du groupe. -{else} - Aucun événement n'a été référencé par les animateurs du groupe. -{/if} -

    - -{/foreach} - -{if $undisplayed_events neq 0} -

    - Il y a {$undisplayed_events} événement{if $undisplayed_events > 1}s non affichés car ils sont réservés - {else} non affiché car il est réservé{/if} aux membres de ce groupe. -

    -{/if} - -{if $evenements} -

    - En cliquant sur l'icône {icon name=calendar_view_day title="Événement iCal"} associée à un événement, - tu peux télécharger la version iCal de l'événement qui permet de l'ajouter dans ton agenda électronique. -

    -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetevents/newpayment.mail.tpl b/templates/xnetevents/newpayment.mail.tpl deleted file mode 100644 index 99722cd..0000000 --- a/templates/xnetevents/newpayment.mail.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="payment_ready"} -{if $mail_part eq 'head'} -{from full=#from#} -{to addr=$to} -{subject text="[`$asso`] Paiement activé"} -{elseif $mail_part eq 'wiki'} -Cher {$prenom}, - -Nous t'écrivons pour t'informer que le télépaiement associé à l'événement '''{$evt}''' du groupe {$asso} vient d'être activé. Tu peux donc finaliser ton inscription. - -Pour ceci, va simplement sur [[http://www.polytechnique.net/{$diminutif}/payment/{$payment}?montant={$topay}|cette page]]. - -Cordialement,\\ -L'Equipe de Polytechnique.org -{/if} -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/xnetevents/subscribe.tpl b/templates/xnetevents/subscribe.tpl deleted file mode 100644 index e0c9e5d..0000000 --- a/templates/xnetevents/subscribe.tpl +++ /dev/null @@ -1,142 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Evénement {$event.intitule}

    - -

    - [Revenir à la liste des événements] -

    - -

    - Cet événement a lieu - - {if $event.fin and $event.fin neq $event.debut} - {if $event.debut_day eq $event.fin_day} - le {$event.debut|date_format:"%d %B %Y"} de {$event.debut|date_format:"%H:%M"} à {$event.fin|date_format:"%H:%M"} - {else} - du {$event.debut|date_format:"%d %B %Y à %H:%M"}
    - au {$event.fin|date_format:"%d %B %Y à %H:%M"} - {/if} - {else} - le {$event.debut|date_format:"%d %B %Y à %H:%M"} - {/if} -
    - et a été proposé par - - {$event.prenom} {$event.nom} ({$event.promo}). - -

    - -

    - {$event.descriptif|nl2br} -

    - -{if $admin || $event.show_participants} -

    - Tu peux - - consulter la liste des participants - {icon name=group title="Liste des participants"} - déjà inscrits. -

    -{/if} - -
    - - {foreach from=$event.moments item=m} - - {if $m.details} - - - - {/if} - - - - {/foreach} - - - - - -
    {$m.titre} ({$m.montant} €)
    - {$m.details|nl2br} -
    - {if $event.inscr_open} - non - {if $event.noinvite} - oui - {else} - seul
    - 1}checked="checked"{/if}/>avec - personnes - {/if} - {else} - {if !$m.nb} - Je ne viendrai pas. - {elseif $m.nb eq 1} - Je viendrai{if !$event.noinvite} seul{/if}. - {else} - Je viendrai avec {$m.nb} personne{if $m.nb > 2}s{/if}. - {/if} - {/if} -
    À payer
    - {if $event.topay} -
    - {if !$event.paid} - Tu dois payer {$event.topay|replace:'.':','} €. - {elseif $event.paid < $event.topay} - Tu dois encore payer {math equation="a-b" a=$event.topay b=$event.paid|replace:'.':','} € - (tu as déjà payé {$event.paid|replace:'.':','} €). - {else} - Tu as déjà payé {$event.paid|replace:'.':','} € pour ton inscription. - {/if} -
    -
    - {if $event.paiement_id && $event.paid < $event.topay} - - {icon name=money} Payer en ligne - {elseif $validation && $event.paid < $event.topay} -
    Le télépaiement pour cet événement est en instance de validation :
    - - - {/if} -
    - {else} - Rien à payer - {if $event.paid > 0} - (tu as déjà payé {$event.paid|replace:'.':','} €). - {/if}. - {/if} -
    - -

    - -

    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/announce-admin.tpl b/templates/xnetgrp/announce-admin.tpl deleted file mode 100644 index 1e4ee15..0000000 --- a/templates/xnetgrp/announce-admin.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Administration des announces

    - - - - - - - - {iterate item=art from=$articles} - - - - - - {/iterate} - - - -
    TitrePéremption
    {$art.titre}{$art.peremption|date_format} - Supprimer l'annonce {icon name=cross} - -
    - - {icon name=add title="Nouvelle annonce"} Écrire une nouvelle annonce. - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/announce-edit.tpl b/templates/xnetgrp/announce-edit.tpl deleted file mode 100644 index 6337ea4..0000000 --- a/templates/xnetgrp/announce-edit.tpl +++ /dev/null @@ -1,215 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    {$asso.nom} : Édition d'une annonce

    - -{if $art.texte} -
    -{include file="xnetgrp/form.announce.tpl" admin=true} -
    -
    -{/if} - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Éditer une annonce
    Titre :
    Contenu de l'annonce : - - Le contenu est destiné à recevoir la description de ce qui est annoncé. - Il faut éviter d'y mettre des adresses mails ou web (surtout si l'annonce est publique), - qui devront être placées dans la section "contacts". - -
    - -
    - - - Essaie de faire un texte court, une annonce ne doit pas excéder 600 caractères soit une dizaine de lignes. - Tu en es déjà à caractères. - Si tu veux proposer cette annonce pour la Lettre Mensuelle, il faut te limiter à 8 lignes. - -
    Contacts : - - La section "contacts" sert à noter les informations telles que les adresses mails de contact, les sites web. - Elle n'est accessible qu'aux personnes authentifiées. Si l'annonce est attachée à une événement, un lien vers - la page d'inscription est automatiquement ajouté. - -
    - -
    Illustration : - {if $art.id && $art.photo} -
    - Image actuelle
    - Image actuelle
    - - -
    - {/if} - {if $upload && $upload->exists()} -
    - Nouvelle image
    - Nouvelle Image
    - -
    - {/if} -
    - Choisir un fichier :
    - Indiquer une adresse : -
    -
    - - {icon name=information title="Syntaxe wiki"} Voir la liste des marqueurs de mise en forme autorisés. - -
    -
    - - - - - - - {if $events} - - - - - {/if} - - - - - - - - {include file="include/field.promo.tpl" promo_min=$art.promo_min promo_max=$art.promo_max} - {if $art.public} - - {/if} - {if $new} - - - - - - - - - - - - - {/if} -
    Date de péremption : - {valid_date name="peremption" value=$art.peremption} -
    Attacher à un événement : - -
    Visibilité : - - Rendre cette annonce publique. -
    Promotions cibles
    Demandes de publication
    - - sur la page d'accueil de Polytechnique.org -
    - - dans la Lettre Mensuelle de Polytechnique.org -
    - Les demandes de publication sont soumises à validation par l'équipe - de Polytechnique.org. -
    - -
    - {if $art.id} - - {/if} -
    - {if $art.texte} - - {if !$new} - - {/if} - {/if} -
    -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/announce-rss.tpl b/templates/xnetgrp/announce-rss.tpl deleted file mode 100644 index caec126..0000000 --- a/templates/xnetgrp/announce-rss.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - Polytechnique.net :: {$asso.nom} :: News - fr - {#globals.baseurl#}/{$asso.diminutif}/ - L'actualite polytechnicienne... - - {#globals.core.sitename#} - {#globals.baseurl#}/images/logo.png - {#globals.baseurl#}/{$asso.diminutif}/ - - {iterate item=line from=$rss} - - {$line.titre|strip_tags} - {$line.id} - {#globals.baseurl#}/{$asso.diminutif}/#art{$line.id} - - {$line.titre|strip_tags} - - {/if} -
    {$line.texte|miniwiki}{if $line.contacts}

    Contacts :
    {$line.contacts|miniwiki}{/if}
    ]]>
    - {$line.prenom} {$line.nom} (X{$line.promo}) - {$line.create_date|rss_date} -
    - {/iterate} -
    -
    -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/annuaire-admin.tpl b/templates/xnetgrp/annuaire-admin.tpl deleted file mode 100644 index bccc36f..0000000 --- a/templates/xnetgrp/annuaire-admin.tpl +++ /dev/null @@ -1,61 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Abonnés à des listes non présents dans l'annuaire

    - -

    Polytechniciens

    - -
      - {foreach from=$not_in_group_x item=n} -
    • {$n} [l'inscrire]
    • - {foreachelse} -
    • tous les polytechniciens présents sur les listes sont inscrits à l'annuaire du groupe.
    • - {/foreach} -
    - -

    Non polytechniciens

    -
      - {foreach from=$not_in_group_ext item=n} -
    • {$n} [l'inscrire]
    • - {foreachelse} -
    • tous les non-polytechniciens présents sur les listes sont inscrits à l'annuaire du groupe.
    • - {/foreach} -
    - -

    Comparer une liste et l'annuaire

    - - - - - - - - {foreach from=$lists item=l} - - - - - - {/foreach} -
    ListeDescription
    {$l.list}{$l.desc}synchro
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/annuaire.tpl b/templates/xnetgrp/annuaire.tpl deleted file mode 100644 index 8b42863..0000000 --- a/templates/xnetgrp/annuaire.tpl +++ /dev/null @@ -1,145 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Annuaire du groupe

    - -

    -Le groupe {$asso.nom} compte {$nb_tot} membres : -

    - - - -{if $plset_base} -{include file="core/plset.tpl"} -{else} - -

    -[tous les membres] -[animateurs]
    -{foreach from=$alphabet item=c} -{if $c} -[{$c}] -{/if} -{/foreach} -

    - - - - - - - {if $is_admin} - - {/if} - - {iterate from=$ann item=m} - - - - - {if $is_admin} - - {/if} - - {/iterate} -
    - - {if $sort eq 'alpha'} - - {elseif $sort eq 'alpha_inv'} - - {/if} - Prénom NOM - - - - {if $sort eq 'promo_inv'} - - {elseif $sort eq 'promo'} - - {/if} - Promo - - InfosActions
    - {if $m.admin}{/if} - {if $m.inscrit} - - {elseif $m.x} - - {/if} - {if $m.femme}•{/if}{if $m.prenom || $m.nom}{$m.prenom} {$m.nom|strtoupper}{else}{$m.email}{/if} - {if $m.x}{/if} - {if $m.admin}{/if} - {if $m.inscrit && !$m.actif} - {icon name=error title="Recherche d'email"} - {assign var=broken value=true} - {/if}{if $m.admin}{/if}{$m.promo}{if $m.admin}{/if} - {if $m.inscrit} - {icon name=vcard title="[vcard]"} - {icon name=email title="mail"} - {else} - {icon name=email title="mail"} - {/if} - - {icon name=user_edit title="Edition du profil"} - {icon name=delete title="Supprimer de l'annuaire"} -
    - -

    -{foreach from=$links item=ofs key=txt} -{$txt} -{/foreach} -

    - -{if $broken} -

    - {icon name=error} : Un camarade signalé par ce symbole n'a plus d'adresse de redirection et ne peut donc - plus être contacté via son adresse polytechnique.org. Si tu connais sa nouvelle adresse, tu peux nous la communiquer en - cliquant sur le symbole. -

    -{/if} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/asso.tpl b/templates/xnetgrp/asso.tpl deleted file mode 100644 index 4175ea8..0000000 --- a/templates/xnetgrp/asso.tpl +++ /dev/null @@ -1,168 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Accueil

    - - - {if $asso.site} - - - - - {/if} - - {if $asso.resp || $asso.mail} - - - - - {/if} - - {if $asso.forum} - - - - - {/if} - - {if !$is_member && $is_logged && $asso.inscriptible && $xnet_type != 'promotions'} - - - - - {elseif $is_member} - - - - - {/if} - - {if $asso.ax} - - - - {/if} -
    - Site Web: - {$asso.site}
    - Contact: - - {if $asso.mail} - {mailto address=$asso.mail text=$asso.resp|utf8_decode|default:"par mail" encode=javascript} - {else} - {$asso.resp} - {/if} -
    - Forum: - - par le web - ou par nntp -
    - M'inscrire : - - m'inscrire -
    - Me désinscrire : - - me désinscrire -
    - groupe agréé par l'AX -
    - -
    - -
    - {if $asso.wiki_desc} - {$asso.descr|miniwiki:title|smarty:nodefaults} - {else} - {$asso.descr|smarty:nodefaults} - {/if} -
    - -
    - -{if $article_index && $article_index->total()} - - - - - {iterate item=art from=$article_index} - - - - {/iterate} - {if $is_admin} - - - - {/if} -
    - {if $smarty.session.core_rss_hash} - - {icon name=feed title='fil rss'} - - {else} - - {icon name=feed_add title='Activer mon fil rss'} - - {/if} - Sommaire des annonces du groupe -
    • - {if $art.nonlu} - - {else} - - {/if} - {tidy}{$art.titre}{/tidy} - {if $art.nonlu}{/if} -
    - {icon name=add} Ajouter une annonce -
    - -
    - -{if $articles->total()} -
    -{iterate item=art from=$articles} -{include file="xnetgrp/form.announce.tpl"} -
    -{/iterate} -
    - -

    - -Nota Bene : les informations présentées ici n'engagent que leurs auteurs -respectifs et sont publiées à leur initiative. L'association Polytechnique.org -ne pourrait en aucun cas être tenue responsable de la nature des propos relatés -sur cet espace d'expression et d'information. Elle se réserve le droit de -refuser ou de retirer toute information de nature diffamante ou pouvant être -interprétée comme polémique par un lecteur. - -

    -{/if} -{elseif $is_admin} - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/edit.tpl b/templates/xnetgrp/edit.tpl deleted file mode 100644 index a90313a..0000000 --- a/templates/xnetgrp/edit.tpl +++ /dev/null @@ -1,208 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {if $asso.nom}{$asso.nom} : {/if}Éditer l'accueil

    - -
    - {xsrf_token_field} - {if $super} - - - - - - - - - - - - - - - - - - - - - -
    - Nom : - - -
    - Diminutif : - - -
    - Domaine DNS : - - -
    - Catégorie : - - -
    - Domaine : - - -
    -

    - {/if} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Logo : - - -
    - Site web : - - -
    - Contact : - - -
    - Adresse mail : - - -
    - Forum : - - -
    - Inscription possible : - - - - - -
    - Lien pour l'inscription :
    - laisser vide par défaut -
    - -
    - Lien pour la désinscription :
    - laisser vide par défaut -
    - -
    - - groupe agréé par l'AX -
    - Diffusion de la liste des membres : - -
    - - prévenir les animateurs lors de la désinscription d'un membre -
    - -
    - -
    - - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/form.announce.tpl b/templates/xnetgrp/form.announce.tpl deleted file mode 100644 index 961bd54..0000000 --- a/templates/xnetgrp/form.announce.tpl +++ /dev/null @@ -1,84 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - - - - - {if $art.photo} - - {/if} - - - {if ($is_logged || $admin) && $art.contacts} - - - - - - - {/if} - - - -
    - {if $is_logged && !$admin} - - {/if} - {tidy} - {if $admin}Aperçu de : {/if}{$art.titre} - {/tidy} -
    - {$art.titre} - - {$art.texte|miniwiki|smarty:nodefaults} -
    Contacts :
    - {if $art.contact_html} - {tidy} - {$art.contact_html|nl2br|smarty:nodefaults} - {/tidy} - {else} - {$art.contacts|miniwiki|smarty:nodefaults} - {/if} -
    -
    - - Annonce proposée par - - {$art.prenom} {$art.nom} (X{$art.promo}) - - -
    - - {if $art.post_id} - {icon name=comments title="Discussions"}Discuter - {/if} - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/forum.tpl b/templates/xnetgrp/forum.tpl deleted file mode 100644 index 17d200e..0000000 --- a/templates/xnetgrp/forum.tpl +++ /dev/null @@ -1,33 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Forum

    - -{$banana|smarty:nodefaults} - -

    - Cette page utilise les préférences de Polytechnique.org.
    - Tu peux également retrouver tous les forums en te rendant à la rubrique - Forums & PA. -

    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/inscrire.tpl b/templates/xnetgrp/inscrire.tpl deleted file mode 100644 index 6306877..0000000 --- a/templates/xnetgrp/inscrire.tpl +++ /dev/null @@ -1,84 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Demande d'inscription à {$asso.nom}

    - -{if $u && $is_admin && $show_form} - -

    - Demande de la part de : {$prenom} {$nom} (X{$promo}) - Voir sa fiche -

    -
    - -
    - ou bien -
    - - -
    -
    - -{elseif $smarty.post.inscrire} - -

    -Ta demande d'inscription a bien été envoyée ! Tu seras averti par email de la suite qui lui sera donnée. -

    -

    [Retour à la page d'accueil de {$asso.nom}]

    - -{else} - -

    -Pour t'inscrire à {$asso.nom}, il te faut en demander l'autorisation aux animateurs du groupe via le -formulaire ci-dessous. Vérifie et corrige au besoin les différents champs, puis clique sur -[ M'inscrire ! ]. -

    -
    -

    - OUI, je souhaite être inscrit au groupe {$asso.nom}. -

    -

    - Indique ci-après tes motivations qui seront communiquées aux animateurs du groupe : -

    -
    - -   - -
    -
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/mail.tpl b/templates/xnetgrp/mail.tpl deleted file mode 100644 index 88d4a3e..0000000 --- a/templates/xnetgrp/mail.tpl +++ /dev/null @@ -1,150 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - -

    {$asso.nom} : Envoyer un mail

    - -

    -Ton message peut être personnalisé : si tu rentres les mots <cher>, <prenom>, -<nom>, ces mots seront remplacés, pour chacun des destinataires, par "cher" accordé au -masculin ou féminin, par son prénom, ou son nom. -

    - - - -
    - - - - - - - - - - - - - - - - - - - - - - {foreach from=$listes item=l} - - - - - {/foreach} - - - - - - - - - - - - - - - - - - - - - - - - -
    Écrire un mail :
    Expéditeur : - -
    Répondre à : - -
    Destinataires
    - annuaire - - - écrire à tous les X de l'annuaire du groupe
    - - écrire à tous les extérieurs de l'annuaire du groupe
    - - écrire à toutes les personnes morales de l'annuaire du groupe - (voir annuaire)
    -
    - {$l.list} - - - {$l.addr} - (voir composition) -
    Contenu du mail
    - Sujet : -
    - - activer la syntaxe wiki pour le formattage du message -
    - -
    - {icon name=email_attach} Attacher un fichier - - -
    - - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/membres-add.tpl b/templates/xnetgrp/membres-add.tpl deleted file mode 100644 index 7b674d2..0000000 --- a/templates/xnetgrp/membres-add.tpl +++ /dev/null @@ -1,105 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    {$asso.nom} : Ajout d'un membre

    - -
    -
      -
    • - Pour ajouter un X dans ton groupe, il suffit d'entrer ici une de ses - adresses mail @polytechnique.org. S'il n'est pas inscrit à Polytechnique.org - coche la case qui se trouve sous le formulaire et indique ses noms, prénoms et - promotions. -
    • -
    • - Pour ajouter un extérieur dans ton groupe, il suffit d'entrer ici son - adresse mail, tu seras ensuite redirigé vers une page te permettant - d'éditer son profil (nom, prenom, ...) -
    • -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    - - -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/membres-del.tpl b/templates/xnetgrp/membres-del.tpl deleted file mode 100644 index ad51b2e..0000000 --- a/templates/xnetgrp/membres-del.tpl +++ /dev/null @@ -1,60 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $smarty.post.confirm} - -

    -{if !$self} -retour à l'annuaire -{else} -retour à l'accueil -{/if} -

    - -{else} - -

    {$asso.nom} : gestion des membres

    - -

    - Suppression du membre : {$user.prenom} {$user.nom} -

    - - -
    -
    -

    - {if $self} - Êtes-vous sûr de vouloir vous désinscrire du groupe {$asso.nom} et de toutes - les listes de diffusion associées ? - {else} - Êtes-vous sûr de vouloir supprimer {$user.prenom} {$user.nom} du groupe, - lui retirer tous les droits associés à son statut de membre - et le désabonner de toutes les listes de diffusion du groupe ? - {/if} -

    - -
    -
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/membres-edit.tpl b/templates/xnetgrp/membres-edit.tpl deleted file mode 100644 index 6baa2ec..0000000 --- a/templates/xnetgrp/membres-edit.tpl +++ /dev/null @@ -1,193 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - - -

    {$asso.nom} : gestion des membres

    - -

    -[Retour à l'annuaire] -

    - -

    - Édition du profil de {$user.prenom} {$user.nom} - {if $user.origine eq 'X'} - (X{$user.promo}) - {icon name=user_suit title="fiche"} - {/if} - {icon name=delete title="Suppression du compte"} - {icon name=email title="mail"} -

    - -
    - - - - - - {if $user.origine neq X} - - - - - - - - - - - - - - - - - - - - - - - - {/if} -
    - Permissions: - - -
    - Type d'utilisateur : - - -
    - Prénom : - - -
    - Nom : - - -
    - Sexe : - - -
    - Email: - - -
    - - - - - -
    - -

    Abonnement aux listes

    - - - - - - - - - {foreach from=$listes item=liste} - - - - - - - {foreachelse} - - {/foreach} -
     ListeDescriptionNb
    - - - - {$liste.list} - {$liste.desc|smarty:nodefaults}{$liste.nbsub}
    Pas de listes pour ce groupe
    - -

    Abonnement aux alias

    - - - - - - - - {foreach from=$alias item=a} - - - - - {foreachelse} - - {/foreach} -
     Alias
    - - - - {$a.alias} -
    Pas d'alias pour ce groupe
    - -
    -
    - -   - -
    - -
    - - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/membres-new-search.tpl b/templates/xnetgrp/membres-new-search.tpl deleted file mode 100644 index f2d7cfd..0000000 --- a/templates/xnetgrp/membres-new-search.tpl +++ /dev/null @@ -1,46 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - - {if !$choix} - Les critères de recherche ne sont pas assez précis. - {elseif !$choix->total()} - Aucun camarade non-inscrit ne correspond aux informations fournies. - {elseif $choix->total()} - Camarades correspondants : - - total() != 1}style="display: none"{/if}>
    - - Lui envoyer un marketing - -
    - {/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetgrp/unsubscription-notif.mail.tpl b/templates/xnetgrp/unsubscription-notif.mail.tpl deleted file mode 100644 index 6067133..0000000 --- a/templates/xnetgrp/unsubscription-notif.mail.tpl +++ /dev/null @@ -1,39 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{config_load file="mails.conf" section="xnet_unsubscription"} -{if $mail_part eq 'head'} -{from full=#from#} -{subject text="[`$group`] Désinscription de `$prenom` `$nom`"} -{elseif $mail_part eq 'wiki'} -Chers animateurs du groupe {$group}, - -{if $selfdone} -{$prenom} {$nom} ({$mail}) vient de se désinscrire du groupe. -{else} -{$prenom} {$nom} ({$mail}) vient d'être désinscrit du groupe par {$smarty.session.prenom} {$smarty.session.nom}. -{/if} - -Cordialement,\\ -L'Equipe de Polytechnique.org -{/if} -{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/xnetlists/alias-admin.tpl b/templates/xnetlists/alias-admin.tpl deleted file mode 100644 index 1b25671..0000000 --- a/templates/xnetlists/alias-admin.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    [retour à la page des listes]

    - -

    Membres de {$platal->argv[1]}

    - - - {if $mem->total()} - {iterate from=$mem item=m} - - - - - - {/iterate} - {else} - - - - {/if} - - - - - - -
    - {if $m.nom} - {if $m.admin}{/if} - {if $m.alias}{/if} - {$m.prenom} {$m.nom} - {if $m.alias}{/if} - {if $m.admin}{/if} - {else} - {$m.redirect} - {/if} - - {if $m.admin}{/if} - {$m.promo} - {if $m.admin}{/if} - - - {icon name=delete title='retirer membre'} - -
    - aucun membres ... -
    Ajouter
    -
    -
    - -   - -
    -
    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetlists/alias-create.tpl b/templates/xnetlists/alias-create.tpl deleted file mode 100644 index 243312a..0000000 --- a/templates/xnetlists/alias-create.tpl +++ /dev/null @@ -1,65 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    Création d'un alias

    -

    -Les alias sont conçus pour répondre aux problèmes suivants : -

    -
      -
    • - redirections pour les postes des gens au sein du groupe : par exemple il est pratique d'avoir un alias - president@... ou bien tresorier@... qui pointent tout le temps vers la bonne personne du groupe. - Une sorte d'adresse de «redirection à vie» ; -
    • -
    • - listes de diffusions pour de petits nombres de personnes (bureau@ ...) ; -
    • -
    • - listes à vie courte (liste créée pour l'organisation d'un évenement ponctuel par exemple) ; -
    • -
    • - fédérer plusieurs listes/alias sous un même nom (ce que ne peuvent faire les listes de diffusion). -
    • -
    - -

    -Pour les autres besoins de communications (notament pour un grand nombre de personnes et pour bénéficier des outils -de modération), il est recommandé de créer une liste de diffusion. -

    -
    - - - - - - - - -
    Caractéristiques de l'alias
    Adresse souhaitée : - @{$asso.mail_domain} -
    -

    - -

    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetlists/create.tpl b/templates/xnetlists/create.tpl deleted file mode 100644 index 21baa74..0000000 --- a/templates/xnetlists/create.tpl +++ /dev/null @@ -1,113 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -

    {$asso.nom} : Création d'une liste de diffusion

    - -

    -Note : les listes de diffusion sont un outil particulièrement adapté pour des -échanges entre 6 personnes ou plus (newsletter, débat interne au groupe ...). En revanche, elles -s'avèrent peu praticables pour des discussions plus restreintes. Il est alors préférable -d'utiliser un alias, à la gestion beaucoup plus souple. -

    -

    -D'autre part, il est impossible d'inscrire une liste de diffusion à une autre liste de diffusion. -Si tu as besoin de cette fonctionnalité, il faut alors impérativement utiliser -un alias qui, lui, est capable de regrouper plusieurs listes. -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Caractéristiques de la Liste
    Adresse souhaitée : - @{$asso.mail_domain} -
    Sujet (bref) : - -
    Propriétés :
    - visibilité :
    - (qui peut la voir dans la liste des listes ?) -
    - - - -
    - diffusion :
    - (l'envoi d'un mail à cette liste est-il modéré ?) -
    - - - - - -
    - inscription :
    - (l'inscription à cette liste est-elle modérée ?) -
    - - - -
    -

    -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetlists/index.tpl b/templates/xnetlists/index.tpl deleted file mode 100644 index f2ad857..0000000 --- a/templates/xnetlists/index.tpl +++ /dev/null @@ -1,142 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{if $smarty.get.del_alias} - -

    Es-tu sûr de vouloir supprimer l'alias {$smarty.get.del_alias} ?

    -
    -
    - - -
    -
    -

    [retour à la page des listes]

    - -{else} - -

    {$asso.nom} : Listes de diffusion

    - -

    Listes de diffusion du groupe {$asso.nom} :

    - -

    -Une liste dont la diffusion est modérée est une liste dont les mails sont validés -par les administrateurs avant d'être transmis aux membres de la liste. Une liste dont -l'inscription est modérée est une liste pour laquelle l'abonnement est soumis à -l'accord préalable des responsables du groupe. -

    -

    -La dernière colonne du tableau t'indique si tu es inscrit{if $smarty.session.femme}e{/if} ou non à -la liste. Dans le premier cas, une croix rouge te permet de te désabonner. Dans le second cas, une -croix verte te permet de t'inscrire, après accord des responsables si l'inscription est modérée. -

    - - - - - - - - - - - {foreach from=$listes item=l} - - - - - - - - - - {foreachelse} - - {/foreach} - {if $may_update} - - {/if} -
    ListeDescriptionDiffusionInscriptionNb 
    - {icon name=email title="mail"} - - {if $l.own} - {icon name=wrench title="Modérateur"} - {elseif $l.priv} - {icon name=weather_cloudy title="Liste privée"} - {/if} - {$l.list} - {$l.desc|smarty:nodefaults} - {if $l.diff eq 2}modérée{elseif $l.diff eq 1}restreinte{else}libre{/if} - {if $l.ins}modérée{else}libre{/if}{$l.nbsub} - {if $l.sub eq 2} - {icon name=cross title="me désinscrire"} - {elseif $l.sub eq 1} - {icon name=flag_orange title='inscription en attente de modération'} - {else} - {icon name=add title="m'inscrire"} - {/if} -
    Pas de listes pour ce groupe
    - - {icon name=add title="Créer une liste"} Créer une nouvelle liste - -
    - -

    -{icon name=wrench title="Modérateur"} tu es {if $smarty.session.femme}modératrice{else}moderateur{/if} sur cette liste.
    -{icon name=weather_cloudy title="Liste privée"} cette liste est invisible aux non-membres de la liste. S'en désabonner -t'empêcherait de t'y réabonner par la suite sans l'aide d'un administrateur. -

    - -

    Voici les alias existants pour le groupe {$asso.nom} :

    - - - - Alias - - {if $alias->total()} - {iterate from=$alias item=a} - - {if $may_update} - - - - {else} - - {/if} - - {/iterate} - {else} - - Aucun alias pour ce groupe - - {/if} - {if $may_update} - - {/if} -
    {icon name=email title="mail"}{$a.alias}{icon name=delete title='supprimer'}{icon name=email title="mail"} {$a.alias}
    - - {icon name=add title="Créer une liste"} Créer un nouvel alias - -
    - -{/if} - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/xnetlists/sync.tpl b/templates/xnetlists/sync.tpl deleted file mode 100644 index 8cfad99..0000000 --- a/templates/xnetlists/sync.tpl +++ /dev/null @@ -1,49 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2008 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file='lists/header_listes.tpl' on='sync'} -

    Non abonnés à la liste {$platal->argv[1]}@{$asso.mail_domain}

    - -
    - - - - - - - {foreach from=$not_in_list item=u} - - - - - - {/foreach} - - - -
    Membre
    {$u.nom|strtoupper} {$u.prenom}{$u.promo}
    - -
    - -
    - -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/upgrade/0.0.0_to_0.9.0/README b/upgrade/0.0.0_to_0.9.0/README deleted file mode 100644 index d7a907a..0000000 --- a/upgrade/0.0.0_to_0.9.0/README +++ /dev/null @@ -1,6 +0,0 @@ - -1- run the python script first, in order to update ML -2- mysql x4dat < emails.sql -3- mysql x4dat < migration.sql -4- mysql x4dat < skins.sql - diff --git a/upgrade/0.0.0_to_0.9.0/emails.sql b/upgrade/0.0.0_to_0.9.0/emails.sql deleted file mode 100644 index a07b8f5..0000000 --- a/upgrade/0.0.0_to_0.9.0/emails.sql +++ /dev/null @@ -1,14 +0,0 @@ --------------------------------------------------------------------------------- --- emails --------------------------------------------------------------------------------- -update x4dat.emails set flags=CONCAT_WS(',',flags,'active') where find_in_set('filtre',flags); -alter table x4dat.emails add column rewrite CHAR(128) NOT NULL after email; -update x4dat.emails as e inner join x4dat.aliases as a ON(a.id=e.uid AND a.type='a_vie') set e.rewrite=CONCAT(a.alias,'@m4x.org') where find_in_set('m4x',flags); -update x4dat.emails as e inner join x4dat.aliases as a ON(a.id=e.uid AND a.type='a_vie') set e.rewrite=CONCAT(a.alias,'@polytechnique.org') where find_in_set('rewrite',flags) AND rewrite=''; -alter table x4dat.emails change flags flags set('active','filter','mtic'); -update x4dat.emails set flags='filter' WHERE num=0; -alter table x4dat.emails drop primary key; -alter table x4dat.emails add index uid (uid); -alter table x4dat.emails add primary key (uid,email); -alter table x4dat.emails drop column num; - diff --git a/upgrade/0.0.0_to_0.9.0/migration.sql b/upgrade/0.0.0_to_0.9.0/migration.sql deleted file mode 100644 index 7193685..0000000 --- a/upgrade/0.0.0_to_0.9.0/migration.sql +++ /dev/null @@ -1,70 +0,0 @@ --- passage à diogenes -ALTER TABLE logger.sessions ADD `auth` ENUM( 'native' ) DEFAULT 'native' NOT NULL AFTER `id`; -ALTER TABLE logger.sessions ADD `sauth` ENUM( 'native' ) DEFAULT 'native' NOT NULL AFTER `host`; -INSERT INTO logger.actions SET text="connexion_auth_ext",description="connection via l'auth des groupes X"; - --- modifs diogenes/logger -ALTER TABLE logger.events DROP `id` ; -ALTER TABLE logger.sessions ADD INDEX ( `uid` ); -ALTER TABLE logger.sessions ADD INDEX ( `uid` ); -ALTER TABLE logger.events ADD INDEX ( `session` ); -DROP TABLE x4dat.log; - -drop trackers; --------------------------------------------------------------------------------- - - --------------------------------------------------------------------------------- --- X4DAT --------------------------------------------------------------------------------- --- pas sur que je veuille le dropper pr le moment celui la ... a voir ---*-- ALTER TABLE x4dat.auth_user_md5 DROP COLUMN lastnewslogin; - --- cgt de type pour les ML -ALTER TABLE x4dat.requests CHANGE `type` `type` ENUM('alias','epouse','liste','photo','sondage','emploi','evts' ) DEFAULT 'alias' NOT NULL; --- lastlogin --> logger -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN lastlogin; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN host; --- drop du soundex -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN nom_soundex; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN prenom_soundex; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN epouse_soundex; --- drop des anciens alias --> aliases -alter table x4dat.aliases add column expire date; -delete from x4dat.aliases where `type` LIKE 'liste-%'; -ALTER TABLE x4dat.aliases CHANGE `type` `type` ENUM( 'a_vie', 'epouse', 'alias', 'homonyme', 'liste' ) DEFAULT 'alias' NOT NULL; -delete from x4dat.aliases where type=''; - --- auth_user_md5 -update x4dat.aliases as a inner join x4dat.auth_user_md5 as u ON(u.loginbis=a.alias) - set a.expire=ADDDATE(u.date_mise_alias_temp,INTERVAL 1 MONTH) - WHERE u.date_mise_alias_temp!='' AND u.date_mise_alias_temp!='0000-00-00'; -update x4dat.aliases as a inner join x4dat.auth_user_md5 as u ON(u.loginbis=a.alias) set a.id=u.user_id; -insert into homonymes select a.id,u.user_id from aliases as a inner join auth_user_md5 as u ON(u.loginbis=a.alias); --- drop des colones inutiles -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN date_mise_alias_temp; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN loginbis; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN username; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN alias; -ALTER TABLE x4dat.auth_user_md5 DROP COLUMN username_sasl; --------------------------------------------------------------------------------- - - --------------------------------------------------------------------------------- --- MELIX --------------------------------------------------------------------------------- -update groupex.aliases AS gx - inner join x4dat.aliases AS a ON (gx.email = a.alias) - inner join x4dat.aliases AS b ON (a.id=b.id AND b.type='a_vie') - set gx.email = b.alias - where gx.id = 12; - --------------------------------------------------------------------------------- --- DROP des LISTES --------------------------------------------------------------------------------- -drop table x4dat.listes_def; -drop table x4dat.listes_ins; -drop table x4dat.listes_mod; -update x4dat.aliases set id=0 where `type`='liste'; --------------------------------------------------------------------------------- - diff --git a/upgrade/0.0.0_to_0.9.0/new_newsletter.sh b/upgrade/0.0.0_to_0.9.0/new_newsletter.sh deleted file mode 100755 index ae500fc..0000000 --- a/upgrade/0.0.0_to_0.9.0/new_newsletter.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh -mysql x4dat < newsleter.sql - -list_members polytechnique.org-newsletter | \ - sed -e 's!^\(.*\)@polytechnique.org!INSERT INTO newsletter_ins SELECT id FROM aliases WHERE alias="\1";!' | \ - mysql x4dat - -echo "DELETE FROM aliases WHERE alias LIKE 'newsletter%';" | mysql x4dat diff --git a/upgrade/0.0.0_to_0.9.0/newsleter.sql b/upgrade/0.0.0_to_0.9.0/newsleter.sql deleted file mode 100644 index 5ac2225..0000000 --- a/upgrade/0.0.0_to_0.9.0/newsleter.sql +++ /dev/null @@ -1,5 +0,0 @@ - -CREATE TABLE newsletter_ins ( - user_id smallint(4) unsigned NOT NULL default '0', - PRIMARY KEY (user_id) -) TYPE=MyISAM COMMENT='liste des abonnés à la newsletter'; diff --git a/upgrade/0.0.0_to_0.9.0/skins.sql b/upgrade/0.0.0_to_0.9.0/skins.sql deleted file mode 100644 index 63b3f06..0000000 --- a/upgrade/0.0.0_to_0.9.0/skins.sql +++ /dev/null @@ -1,49 +0,0 @@ --- MySQL dump 9.11 --- --- Host: localhost Database: x4dat --- ------------------------------------------------------ --- Server version 4.0.21-log - --- --- Table structure for table `skins` --- - -DROP TABLE IF EXISTS skins; -CREATE TABLE skins ( - id tinyint(1) unsigned NOT NULL default '0', - name varchar(32) NOT NULL default '', - date varchar(10) NOT NULL default '', - comment varchar(255) NOT NULL default '', - auteur varchar(30) NOT NULL default '', - skin_tpl varchar(32) NOT NULL default '', - ext char(3) NOT NULL default '', - PRIMARY KEY (id) -) TYPE=MyISAM PACK_KEYS=1 COMMENT='liste des skins'; - --- --- Dumping data for table `skins` --- - -INSERT INTO skins VALUES (1,'Defaut','2000-03-07','Skin par défaut','Equipe X.org','default.tpl','png'); -INSERT INTO skins VALUES (2,'Sharky','2003-04-01','Une skin aquatique','Jeremy Lainé','sharky.tpl','png'); -INSERT INTO skins VALUES (3,'Spectral','2000-03-21','Un peu plus haut en couleurs :))','Equipe X.org','spectral.tpl','png'); -INSERT INTO skins VALUES (4,'Espace','2000-03-25','Thème spatial','Equipe X.org','espace.tpl','png'); -INSERT INTO skins VALUES (5,'Linux','2000-03-23','Une skin sérieuse pour polytechniciens linuxiens','Equipe X.org','linux.tpl','png'); -INSERT INTO skins VALUES (6,'HumLinux','2000-03-29','Une skin sexy inspirée d\'un thème WindowMaker...','Equipe X.org','humlinux.tpl','png'); -INSERT INTO skins VALUES (7,'Trapped','2002-12-21','La légende continue...','Thierry Bonnefous','trapped.tpl','png'); -INSERT INTO skins VALUES (8,'NewXorg','2001-06-02','Skin avec le logo officiel de l\'association','Equipe X.org','newxorg.tpl','png'); -INSERT INTO skins VALUES (9,'OldTimes','2000-03-08','La skin historique','Equipe X.org','oldtimes.tpl','png'); -INSERT INTO skins VALUES (10,'NBviolet','2000-03-08','Purple Rain en noir et blanc','Equipe X.org','nbviolet.tpl','png'); - -update auth_user_md5 set skin=skin+100; - -update auth_user_md5 set skin=10 where skin=110; -update auth_user_md5 set skin=9 where skin=101; -update auth_user_md5 set skin=8 where skin=106; -update auth_user_md5 set skin=7 where skin=112; -update auth_user_md5 set skin=6 where skin=107; -update auth_user_md5 set skin=5 where skin=104; -update auth_user_md5 set skin=4 where skin=105; -update auth_user_md5 set skin=3 where skin=103; -update auth_user_md5 set skin=2 where skin=115; -update auth_user_md5 set skin=1 where skin>=100; diff --git a/upgrade/0.0.0_to_0.9.0/to_mailman.py b/upgrade/0.0.0_to_0.9.0/to_mailman.py deleted file mode 100755 index 6ceacf3..0000000 --- a/upgrade/0.0.0_to_0.9.0/to_mailman.py +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -#* Copyright (C) 2004 polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#*************************************************************************** - -import base64, MySQLdb, os, getopt, sys, MySQLdb.converters, sha -from pwd import getpwnam -from grp import getgrnam - -from SimpleXMLRPCServer import SimpleXMLRPCServer -from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler - -import paths -from Mailman import MailList -from Mailman import Utils -from Mailman import Message -from Mailman import Errors -from Mailman import mm_cfg -from Mailman import i18n -from Mailman.UserDesc import UserDesc -from Mailman.ListAdmin import readMessage - -#------------------------------------------------------------------------------- -# helpers -# - -def connectDB(): - db = MySQLdb.connect( - db='x4dat', - user=mm_cfg.MYSQL_USER, - passwd=mm_cfg.MYSQL_PASS, - unix_socket='/var/run/mysqld/mysqld.sock') - db.ping() - return db.cursor() - -def set_options(vhost,listname,opts,vals): - try: - mlist = MailList.MailList(vhost+'-'+listname) - except: - return 0 - try: - for (k,v) in vals.iteritems(): - if k not in opts: - continue - if k == 'default_member_moderation': - for member in mlist.getMembers(): - mlist.setMemberOption(member, mm_cfg.Moderate, int(v)) - t = type(mlist.__dict__[k]) - if t is bool: mlist.__dict__[k] = bool(v) - elif t is int: mlist.__dict__[k] = int(v) - elif t is str: mlist.__dict__[k] = Utils.uncanonstr(v,'fr') - else: mlist.__dict__[k] = v - mlist.Save() - mlist.Unlock() - return 1 - except: - mlist.Unlock() - raise - return 0 - -def mass_subscribe(vhost,listname,users): - try: - mlist = MailList.MailList(vhost+'-'+listname) - except: - return 0 - try: - members = mlist.getRegularMemberKeys() - added = [] - for user in users: - name, forlife = user; - if forlife+'@polytechnique.org' in members: - continue - userd = UserDesc(forlife+'@polytechnique.org', name, None, 0) - mlist.ApprovedAddMember(userd, 0, 0) - added.append( (userd.fullname, userd.address) ) - mlist.Save() - finally: - mlist.Unlock() - return added - -def add_owner(vhost,listname,forlife): - try: - mlist = MailList.MailList(vhost+'-'+listname) - except: - return 0 - try: - if forlife+'@polytechnique.org' not in mlist.owner: - mlist.owner.append(forlife+'@polytechnique.org') - mlist.Save() - finally: - mlist.Unlock() - return True - -#------------------------------------------------------------------------------- -# admin procedures [ check.php ] -# - -check_opts = { - 'acceptable_aliases' : '', - 'admin_immed_notify' : True, - 'administrivia' : True, - 'anonymous_list' : False, - 'autorespond_admin' : False, - 'autorespond_postings' : False, - 'autorespond_requests' : False, - 'available_languages' : ['fr'], - 'ban_list' : [], - 'bounce_matching_headers' : '', - 'bounce_processing' : False, - 'convert_html_to_plaintext' : False, - 'digestable' : False, - 'digest_is_default' : False, - 'discard_these_nonmembers' : [], - 'emergency' : False, - 'encode_ascii_prefixes' : 2, - 'filter_content' : False, - 'first_strip_reply_to' : False, - 'forward_auto_discards' : True, - 'header_filter_rules' : [], - 'hold_these_nonmembers' : [], - 'include_list_post_header' : False, - 'include_rfc2369_headers' : False, - 'new_member_options' : 256, - 'nondigestable' : True, - 'obscure_addresses' : True, - 'preferred_language' : 'fr', - 'reject_these_nonmembers' : [], - 'reply_goes_to_list' : 0, - 'reply_to_address' : '', - 'require_explicit_destination' : False, - 'send_reminders' : 0, - 'send_welcome_msg' : True, - 'topics_enabled' : False, - 'umbrella_list' : False, - 'unsubscribe_policy' : 0, -} - -def check_options(vhost,listname,correct=False): - try: - mlist = MailList.MailList(vhost+'-'+listname) - except: - return 0 - try: - options = { } - for (k,v) in check_opts.iteritems(): - if mlist.__dict__[k] != v: - options[k] = v,mlist.__dict__[k] - if correct: mlist.__dict__[k] = v - if mlist.real_name != listname: - options['real_name'] = listname, mlist.real_name - if correct: mlist.real_name = listname - if mlist.host_name != vhost: - options['real_name'] = vhost, mlist.host_name - if correct: mlist.host_name = vhost - if correct: mlist.Save() - mlist.Unlock() - return (details,options) - except: - mlist.Unlock() - return 0 - -#------------------------------------------------------------------------------- -# admin procedures [ soptions.php ] -# - -def create_list(vhost,listname,desc,advertise,modlevel,inslevel,owners,members): - name = vhost+'-'+listname; - if Utils.list_exists(name): - return 0 - - mlist = MailList.MailList() - try: - oldmask = os.umask(002) - pw = sha.new('foobar').hexdigest() - try: - mlist.Create(name, owners[0], pw) - finally: - os.umask(oldmask) - - mlist.real_name = listname - mlist.host_name = vhost - mlist.description = desc - - mlist.advertised = int(advertise) > 0 - mlist.default_member_moderation = int(modlevel) is 2 - mlist.generic_nonmember_action = int(modlevel) > 0 - mlist.subscribe_policy = 2 * (int(inslevel) is 1) - - mlist.owner = owners - - mlist.subject_prefix = '['+listname+'] ' - mlist.max_message_size = 0 - - mlist.Save() - mlist.Unlock() - check_options(vhost,listname,True) - mass_subscribe(vhost,listname,members) - except: - raise - return 0 - return 1 - -uid = getpwnam(mm_cfg.MAILMAN_USER)[2] -gid = getgrnam(mm_cfg.MAILMAN_GROUP)[2] - -if not os.getuid(): - os.setregid(gid,gid) - os.setreuid(uid,uid) - -if ( os.getuid() is not uid ) or ( os.getgid() is not gid): - sys.exit(0) - -opts, args = getopt.getopt(sys.argv[1:], 'f') -for o, a in opts: - if o == '-f' and os.fork(): - sys.exit(0) - -mysql = connectDB() - -#-------------------- LOGIC --------------------- - -mysql.execute ("""SELECT a.id, a.alias, d.topic, d.bienvenue, - FIND_IN_SET('publique',d.type) AND NOT FIND_IN_SET('promo',d.type) AS advertised, - (1-FIND_IN_SET('freeins',d.type)) AS inslevel, - (1-FIND_IN_SET('libre',d.type))*2 AS modlevel - FROM aliases AS a - INNER JOIN listes_def AS d USING(id) - WHERE a.type='liste'""") -lists = mysql.fetchall() -i=0 -l=len(lists) - -for id,alias,desc,welcome,advertise,inslevel,modlevel in lists: - mysql.execute ( """SELECT a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( a.id=u.user_id AND a.type='a_vie' ) - INNER JOIN listes_mod AS m ON ( m.idu=u.user_id AND m.idl='%i' )""" %(id) ) - owners = map(lambda x: x[0]+'@polytechnique.org', mysql.fetchall()) - if owners == []: owners = ['listes@m4x.org'] - if desc.startswith('ADMIN/'): owners=[mm_cfg.ADMIN_ML_OWNER] - mysql.execute ( """SELECT CONCAT(u.prenom, ' ',u.nom),a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON ( a.id=u.user_id AND a.type='a_vie' ) - INNER JOIN listes_ins AS m ON ( m.idu=u.user_id AND m.idl='%i' )""" %(id) ) - members = mysql.fetchall() - create_list('polytechnique.org',alias,desc,advertise,modlevel,inslevel,owners,members) - set_options('polytechnique.org',alias,['welcome_msg'],{'welcome_msg':welcome}) - i = i+1 - print ("""[%3i/%i] '%s' created""" %(i,l,alias)) - -# vim:set et: diff --git a/upgrade/0.9.1/mailman_update.py b/upgrade/0.9.1/mailman_update.py deleted file mode 100755 index be52a43..0000000 --- a/upgrade/0.9.1/mailman_update.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python -#*************************************************************************** -#* Copyright (C) 2004 polytechnique.org * -#* http://opensource.polytechnique.org/ * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License as published by * -#* the Free Software Foundation; either version 2 of the License, or * -#* (at your option) any later version. * -#* * -#* This program is distributed in the hope that it will be useful, * -#* but WITHOUT ANY WARRANTY; without even the implied warranty of * -#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * -#* * -#* You should have received a copy of the GNU General Public License * -#* along with this program; if not, write to the Free Software * -#* Foundation, Inc., * -#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#*************************************************************************** - -import base64, MySQLdb, os, getopt, sys, MySQLdb.converters, sha - -sys.path.append('/usr/lib/mailman/bin') - -from pwd import getpwnam -from grp import getgrnam - -from SimpleXMLRPCServer import SimpleXMLRPCServer -from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler - -import paths -from Mailman import MailList -from Mailman import Utils -from Mailman import Message -from Mailman import Errors -from Mailman import mm_cfg -from Mailman import i18n -from Mailman.UserDesc import UserDesc -from Mailman.ListAdmin import readMessage -from email.Iterators import typed_subpart_iterator - -names = Utils.list_names() -for listname in names: - try: - mlist = MailList.MailList(listname,lock=0) - except: - print 'ERROR '+listname - continue - try: - print 'BEGIN '+listname - mlist.Lock() - mlist.header_filter_rules = [] - mlist.header_filter_rules.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - print ' set new bogofilter policy' - mlist.Save() - mlist.Unlock() - print 'END' - except: - mlist.Unlock() - print 'ERROR '+listname - - -# vim:set et: diff --git a/upgrade/0.9.1/newsleter.sql b/upgrade/0.9.1/newsleter.sql deleted file mode 100644 index a8ec11b..0000000 --- a/upgrade/0.9.1/newsleter.sql +++ /dev/null @@ -1,61 +0,0 @@ --- MySQL dump 9.11 --- --- Host: localhost Database: x4dat --- ------------------------------------------------------ --- Server version 4.0.21-log - --- --- Table structure for table `newsletter` --- - -DROP TABLE IF EXISTS `newsletter`; -CREATE TABLE `newsletter` ( - `id` int(11) NOT NULL auto_increment, - `date` date NOT NULL default '0000-00-00', - `titre` varchar(255) NOT NULL default '', - `bits` enum('sent','new') NOT NULL default 'new', - `head` mediumtext NOT NULL, - PRIMARY KEY (`id`) -) TYPE=MyISAM COMMENT='liste des NL envoyes'; - --- --- Dumping data for table `newsletter` --- - -INSERT INTO `newsletter` VALUES (3,'2001-11-04','Lettre n°3 de Polytechnique.org : novembre 2001','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 3ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (4,'2001-12-22','Lettre n°4 de Polytechnique.org : décembre 2001','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 4ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (5,'2002-03-01','Lettre n°5 de Polytechnique.org : mars 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 5ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (6,'2002-04-01','Lettre n°6 de Polytechnique.org : avril 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 6ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (7,'2002-05-02','Lettre n°7 de Polytechnique.org : mai 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 7ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (9,'2002-07-01','Lettre n°9 de Polytechnique.org : juillet 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 9ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (8,'2002-06-02','Lettre n°8 de Polytechnique.org : juin 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 8ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (13,'2002-11-01','Lettre n°13 de Polytechnique.org : novembre 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 13ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (14,'2002-12-02','Lettre n°14 de Polytechnique.org : décembre 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 14ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (15,'2003-01-02','Lettre n°15 de Polytechnique.org : janvier 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 15ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (21,'2003-07-10','Lettre n°21 de Polytechnique.org : juillet 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 21ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (20,'2003-06-01','Lettre n°20 de Polytechnique.org : juin 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 20ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (19,'2003-04-27','Lettre n°19 de Polytechnique.org : mai 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 19ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (18,'2003-04-01','Lettre n°18 de Polytechnique.org : avril 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 18ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (35,'2004-09-01','Lettre n°34 de Polytechnique.org : septembre 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 34ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (29,'2004-03-01','Lettre n°29 de Polytechnique.org : mars 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 29ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (36,'2004-10-01','Lettre n°35 de Polytechnique.org : octobre 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 35ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (26,'2003-12-30','Lettre n°26 de Polytechnique.org : décembre 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 26ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (27,'2004-01-01','Lettre n°27 de Polytechnique.org : janvier 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 27ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (25,'2003-10-25','Lettre n°25 de Polytechnique.org : novembre 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 25ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (22,'2003-09-01','Lettre n°22 de Polytechnique.org : septembre 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 22ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (24,'2003-10-01','Lettre n°24 de Polytechnique.org : octobre 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 24ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (30,'2004-03-08','Lettre exceptionnelle \"speciale virus\"','',''); -INSERT INTO `newsletter` VALUES (31,'2004-04-01','Lettre n°30 de Polytechnique.org : avril 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 30ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (32,'2004-05-01','Lettre n°31 de Polytechnique.org : mai 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 31ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (33,'2004-06-01','Lettre n°32 de Polytechnique.org : juin 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 32ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (34,'2004-07-01','Lettre n°33 de Polytechnique.org : juillet 2004','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 33ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (28,'2004-02-01','Lettre n°28 de Polytechnique.org : février 2004','',' ,\r\n \r\nL\'équipe de Polytechnique.org est fière de te présenter la 28ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (23,'2003-09-24','Réseaux polytechniciens, réseau Internet : même combat ?','',' ,\r\n\r\nVoici une lettre d\'information exceptionnelle du site Polytechnique.org.\r\n'); -INSERT INTO `newsletter` VALUES (1,'2001-04-24','Lettre n°1 de Polytechnique.org : avril 2001','',' ,\r\n \r\n L\'équipe de Polytechnique.org est fière de te présenter la 1ère lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (2,'2001-09-28','Lettre n°2 de Polytechnique.org : octobre 2001','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 2ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (12,'2002-10-01','Lettre n°12 de Polytechnique.org : octobre 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 12ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (16,'2003-02-01','Lettre n°16 de Polytechnique.org : février 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 16ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (10,'2002-08-01','Lettre n°10 de Polytechnique.org : août 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 10ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (11,'2002-09-02','Lettre n°11 de Polytechnique.org : septembre 2002','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 11ème lettre d\'information des polytechniciens sur le net.'); -INSERT INTO `newsletter` VALUES (17,'2003-03-01','Lettre n°17 de Polytechnique.org : mars 2003','',' ,\n\nL\'équipe de Polytechnique.org est fière de te présenter la 17ème lettre d\'information des polytechniciens sur le net.'); - diff --git a/upgrade/0.9.1/newsleter_art.sql b/upgrade/0.9.1/newsleter_art.sql deleted file mode 100644 index ec11786..0000000 --- a/upgrade/0.9.1/newsleter_art.sql +++ /dev/null @@ -1,360 +0,0 @@ --- MySQL dump 9.11 --- --- Host: localhost Database: x4dat --- ------------------------------------------------------ --- Server version 4.0.21-log - --- --- Table structure for table `newsletter_art` --- - -DROP TABLE IF EXISTS `newsletter_art`; -CREATE TABLE `newsletter_art` ( - `id` int(10) unsigned NOT NULL default '0', - `aid` smallint(5) unsigned NOT NULL default '0', - `cid` smallint(5) unsigned NOT NULL default '0', - `pos` tinyint(3) unsigned NOT NULL default '0', - `title` mediumtext NOT NULL, - `body` mediumtext NOT NULL, - `append` mediumtext NOT NULL, - PRIMARY KEY (`id`,`aid`) -) TYPE=MyISAM; - --- --- Dumping data for table `newsletter_art` --- - -INSERT INTO `newsletter_art` VALUES (1,7,3,7,'Initiation aux nouvelles technologies pour les X','A l\'initiative de la Maison des X, du Collège de l\'X et du GPX, des réunions de sensibilisation aux NTIC à usage domestique vont être organisées. Ces sessions se veulent très pratiques (comment utiliser une messagerie, un traitement de texte...) pour des besoins personnels. Des séances plus sophistiquées pourront être organisées plus tard en fonction des réponses (que dire de la confidentialité sur Internet, comment utiliser le cryptage, qui est anonyme sur l\'Internet et qui ne l\'est pas, l\'espionnage sur les réseaux, autant de thèmes qui peuvent faire l\'objet d\'une initiation).\r\n\r\nLe GPX et la Maison des X se chargent de faire les annonces par leur bulletin et par la Jaune et Rouge. L\'équipe de Polytechnique.org a été sollicitée, à la fois pour faire passer le message, mais aussi pour participer à la transmission de compétences \"nouvelles technologies\" à ceux qui le souhaitent. Vous en saurez plus prochainement.',''); -INSERT INTO `newsletter_art` VALUES (1,6,3,6,'Infos maison des X','Si vous ne connaissez pas la maison des X, sachez que \"Le Club\", son restaurant gastronomique accueille les X sur réservation, à des tarifs attractifs (180 Frs le menu pour un X, 120 Frs si tu es étudiant de l\'X ou d\'une école d\'application).\r\nConsultez le site http://www.maison-des-x.com pour plus de renseignements.\r\n','Dominique DESCROIX, X58'); -INSERT INTO `newsletter_art` VALUES (1,5,1,5,'Performance de l\'email','La qualité d\'un reroutage dépend de la qualité de l\'email final. Aussi nous avons mis en place des statistiques pour mesurer l\'efficacité des serveurs de mail que vous utilisez. L\'objectif étant notamment d\'éviter les serveurs qui perdent des mails chaque semaine (caramail...).\r\nCes statistiques sont mêmes mélangées à la performance des emails de vos entreprises puisque nous en disposons.\r\n','http://www.polytechnique.org/parselogN.php'); -INSERT INTO `newsletter_art` VALUES (1,4,1,4,'Sponsoring','Polytechnique.org tient à remercier Laurent MALHOMME, X92 et la société Certplus SA, filiale française du groupe américain Verisign, qui nous a offert la certification de sécurité du site Polytechnique.org. Vous pouvez dorénavant vous connecter à notre site par des échanges cryptés à 128bits, ce qui assurera une confidentialité des communications.\r\n','http://www.certplus.com'); -INSERT INTO `newsletter_art` VALUES (1,3,1,3,'Avancement avec l\'AX','Suite au sondage effectué auprès de vous en janvier, nous avons proposé à l\'AX de lui fournir les données de chaque X quand celui-ci modifie son profil sur le site polytechnique.org afin de mettre à jour l\'annuaire papier, et l\'AX nous a donné son accord pour prendre en compte ces données. Cette fonction sera donc prête très prochainement.\n\n',''); -INSERT INTO `newsletter_art` VALUES (1,1,1,1,'Listes de diffusion','Le site Polytechnique.org vient de se doter de nouveaux services en ligne.\r\nNos 4400 inscrits peuvent maintenant utiliser un service de mailing-list.\r\nConçu au départ pour les binets, groupes X et associations, ce service connaît depuis sa sortie une croissance importante. Nous venons d\'ouvrir des mailing-lists promo, qui sont modérées, la plupart du temps par la Kès de chaque promo. Quel meilleur moyen d\'organiser une réunion promo ou d\'essayer de maintenir un petit lien avec sa promo que de recevoir quelques fois dans l\'année des news sur un email promo?\r\nDe nombreuses promos n\'ont pas encore de modérateurs, manifestez-vous auprès de nous.\r\n','http://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (1,2,1,2,'Annuaire des X','Autre innovation du site : les champs de l\'annuaire on-line collent maintenant à ceux de l\'annuaire papier. La consultation s\'est enrichie de nombreuses options.\r\nMerci de mettre vite à jour vos fiches en vous connectant sur le site.\r\n','http://www.polytechnique.org/profil.php'); -INSERT INTO `newsletter_art` VALUES (3,1,1,1,'Adresses de Redirection :','Le nombre d\'adresses de redirection de ton adresse prénom.nom@polytechnique.org (et @m4x.org, c\'est la même chose) est maintenant ILLIMITÉ, avec en plus la possibilité d\'activer et de désactiver chaque adresse en quelques clics.\nVoir la rubrique \"Emails\" du menu.\n\n',''); -INSERT INTO `newsletter_art` VALUES (3,2,1,2,'Ré-écriture de l\'adresse d\'expéditeur :','Parfois, tu ne peux pas choisir l\'adresse d\'expéditeur que tu utilises ; dorénavant, pour les destinataires sur polytechnique.org, si tu utilises une des adresses de redirection que tu as indiquées dans la rubrique \"Emails\", celle-ci sera remplacée par ton adresse prenom.nom@polytechnique.org.\nVoir la rubrique \"Emails\" du menu.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (3,3,3,3,'X-Israël','Polytechnique.org est heureux de vous annoncer la création sur Polytechnique.org du groupe X-Israël.\nVisite son site http://x-israel.polytechnique.org/\n\n',''); -INSERT INTO `newsletter_art` VALUES (3,4,3,4,'X-Asie','À l\'initiative de Jérôme Fourel (X92) et Jean-Philippe Vert (X92), le groupe X-Asie est en cours de formation et a besoin de ton soutien.\r\nSon but est de tisser un réseau orienté business et culture entre ceux qui sont en Asie et ceux qui veulent pénétrer ces marchés ou nouer des partenariats.\r\nSi tu es intéressé par les pays asiatiques en général ou si tu vis en Asie, contacte-les !','membres@x-asie.polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (3,5,3,5,'Groupe X-eConfiance','Les listes eTrustPKI et eTrustMarket, créées en juillet dernier, ont connu un succès inespéré : plus de 70 camarades s\'y sont inscrits en très peu de temps. Le sujet, il est vrai, en vaut la peine. Il s\'agit tout simplement de réfléchir aux outils et enjeux de la Confiance dans le e-business. Devant l\'importance de cet enjeu, il est apparu essentiel d\'élargir la réflexion aux générations les plus expérimentées de notre communauté X. C\'est pourquoi, avec quelques uns, nous avons décidé de postuler auprès de l\'AX pour la création du groupe X-eConfiance.\nUn premier pot amical, le mercredi 7 novembre de 18h à 20h à la Maison des X, réunira les membres sympathisants de ce futur groupe qui auront pu se libérer ce jour là, et permettra de faire connaissance. Enfin, un site web est en cours de création ( http://X-eConfiance.polytechnique.org/ ) pour faciliter échange d\'infos, newsgroups, etc.\nPour tout renseignement, matthieu.bergot@m4x.org .\n \n\n',''); -INSERT INTO `newsletter_art` VALUES (3,6,4,6,'Opération \"Beaujolais Nouveau\" à la Maison des X','Cette soirée amicale et conviviale aura lieu le vendredi 16 novembre à partir de 20 h (apéritif et dîner). Elle se déroulera dans les caves voûtées du Styx et sera animée par les Compagnons du Beaujolais. L\'Union interprofessionnelle nous fournira le liquide nécessaire en quantité suffisante !\nLa soirée est ouverte à toutes les promotions, et vous pouvez bien entendu venir en famille et ou entre amis. N\'hésitez pas non plus à en parler à nos camarades qui n\'ont peut être pas encore Internet, ça existe!\nLa date : vendredi 16 novembre à partir de 20 h\nLe lieu : maison des X 12 rue de Poitiers 75007 PARIS\nLe prix : 190 francs TTC par personne (la boisson est bien sûr\ncomprise) ou 28,97 euros.\nComment s\'inscrire ?\nPar courrier à la maison des X (préciser sur l\'enveloppe \"Soirée beaujolais\" cela facilitera les choses). Merci de joindre votre chèque Par internet, en attendant d\'envoyer votre chèque mais en précisant bien le nombre de personnes à direction@maison-des-x.com , ou par fax au 01 49 54 74 84 .\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (4,1,1,1,'Fetes de fin d\'année','En cette fin d\'année 2001 riche en événements, nous souhaitons à l\'ensemble de la communauté polytechnicienne de joyeuses fêtes, et une année 2002 pleine d\'innovations, de développement et d\'aboutissements.\r\n','Association Polytechnique.org\r\n\"Le portail des élèves & anciens élèves de l\'X\"\r\nhttp://www.polytechnique.org/contacts.php'); -INSERT INTO `newsletter_art` VALUES (4,2,1,2,'Demande d\'idées','Les domaines melix.net et melix.org sont gérés par l\'association et nous aimerions proposer des alias libres dans ces domaines, avec une éventuelle limite de trois par personne.\r\n\r\nDe plus les domaines carva.net et carva.org ont aussi été acquis, as-tu une idée de l\'utilisation que nous pourrions faire de ces domaines ?\r\n\r\nN\'hésite pas à nous faire part de tes idées !\r\n','innovation@polytechnique.org?subject=melix_carva'); -INSERT INTO `newsletter_art` VALUES (4,3,1,3,'Ré-écriture de l\'adresse d\'expéditeur','Le mois dernier nous avons mis en place un système de réécriture de l\'adresse d\'expéditeur pour les destinataires en polytechnique.org, mais il nous a été demandé de laisser le choix de faire cette réécriture ou pas, et quand elle est faite, de choisir l\'adresse par laquelle est remplacée (@polytechnique.org ou @m4x.org).\r\n\r\nCette réécriture est disponible depuis le 7 novembre 2001.\r\n','https://www.polytechnique.org/emails.php'); -INSERT INTO `newsletter_art` VALUES (4,4,1,4,'Recherche dans l\'annuaire','Il est maintenant possible, en plus des tris déjà existants, de trier les résultats selon la date de dernière mise à jour, la plus récente en premier.\r\n','https://www.polytechnique.org/search.php'); -INSERT INTO `newsletter_art` VALUES (4,5,1,5,'SPAM','\nPolytechnique.org te protège des messages non sollicités (SPAM) envoyés à un grand nombre de destinataires (générés par exemple en prenant la liste des diplômés et en formant les adresses prenom.nom@polytechnique.org).\nCependant, un SPAM isolé ne peut être détecté par cette méthode et ton adresse email peut être obtenue par les spammeurs à diverses occasions. Par exemple, si tu écris sur une liste de diffusion publique (autre que celles proposées sur Polytechnique.org) qui archive ces messages et publie les archives sur le web, il est très simple de récupérer ton adresse. Si tu t\'inscris sur un site quelconque avec ton adresse, elle peut aussi être spammée.\n\nPour éviter ce désagrément, utilise le + ou le _ pour donner une adresse différente à chaque endroit. Ainsi, si tu reçois du SPAM à cette adresse, tu pourras facilement le filtrer (un système de filtre sera prochainement mis en place sur Polytechnique.org pour\n\n\nfiltrer « [i]à la source[/i] »).\nVoir https://www.polytechnique.org/EmailOutils.php (en bas).\n\nSi tu reçois un message que tu considères comme du SPAM, c\'est-à-dire non sollicité, n\'hésite pas à nous transmettre le message, nous mettrons en place des systèmes de filtre des expéditeurs en question. Un certain nombre d\'expéditeurs sont déjà répertoriés sur notre liste noire.\n\nPour nous transmettre un message, envoie-nous le message [b]complet[/b] en pièce jointe, ainsi nous disposerons des informations nécessaires pour bannir le spammer efficacement. Sous Outlook Express, clic droit sur le message puis \"Transmettre en attachement\" ; sous Netscape, clic droit sur le message puis \"Faire suivre en tant que fichier joint\".\nMerci d\'avance.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (4,6,3,6,'X-Biotech :','Enjeux, applications et recherche concernant des domaines biotech\n(environnement/agro/pharmacie/médecine).\nCette liste est en inscription libre (cochez la case [i]ad hoc[/i]) :\nhttps://www.polytechnique.org/listes/\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (4,7,4,7,'FX','La Fondation de l\'Ecole polytechnique a lancé depuis juin 2001 son Concours FX-CREATEUR2002, destiné à récompenser le projet de création d\'entreprise le plus intéressant présenté.\r\nLe prix sera attribué en décembre 2002, et aidera ses créateurs par la notoriété qu\'ils en tireront. Les dossiers devront parvenir à la Fondation avant le 31 octobre 2002, pour les diplômés ou docteurs de l\'Ecole polytechnique, ainsi que les thésards dans les laboratoires de l\'Ecole. Il faut être agé de moins de 35 ans.','web : http://www.fondationx.org/\r\ntél/fax : 01 53 85 40 10 / 01 53 85 40 11\r\nmail : fondation@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (5,1,1,1,'Plus de clarté','Les différentes rubriques du site ont été réorganisées. Le site est désormais plus clair et l\'accès aux fonctionnalités est facilité.\r\n','https://www.polytechnique.org/login.php'); -INSERT INTO `newsletter_art` VALUES (5,2,1,2,'Adresse web : la redirection','Il est désormais possible d\'avoir son site web avec une adresse du type : http://www.carva.org/prenom.nom .\nDe plus amples informations sont disponibles sur :\nhttps://www.polytechnique.org/acces_redirect.php\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (5,3,1,3,'Et toujours... le multiroutage !','Polytechnique.org proposait initialement un bi-reoutage du mail. Aujourd\'hui, ton adresse prenom.nom@polytechnique.org peut renvoyer vers autant de boîtes mails que tu le désires, avec réécriture éventuelle de l\'expéditeur.\r\n','https://www.polytechnique.org/emails.php'); -INSERT INTO `newsletter_art` VALUES (5,4,3,4,'X-Israël','Le Groupe X-Israël organise un diner-débat le lundi 11 mars au soir avec Marcel Shaton, directeur général de l\'ISERD, organisme du Gouvernement israélien chargé de coordonner la participation d\'Israël au 5ème Programme Cadre de R&D de l\'Union européenne. Marcel Shaton évoquera les succès de la coopération scientifique et technologique entre l\'Union européenne et Israël.','Renseignements et inscriptions : info@x-israel.polytechnique.org\r\nX-Israel: http://x-israel.polytechnique.org/\r\nISERD: http://www.iserd.org.il/NewIserd/indexNonIsraeli.htm\r\n5ème PCRD: http://www.europa.eu.int/comm/research/fp5_fr.html'); -INSERT INTO `newsletter_art` VALUES (5,5,3,5,'X-Asie','Le site web est là ! Cette première version s\'étoffera par la suite (forums en ligne, mailing-lists, \"portail\",...), en fonction des actions décidées par les membres du groupe.\r\n','http://x-asie.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (5,6,4,6,'Bal de l\'X','Pour sa 112ème édition, le bal de l\'X quitte l\'Opéra Garnier pour la Grande Halle de la Villette. Le spectacle prévu est un opéra baroque d\'Antonio Vivaldi, [i]La Senna Festeggiante[/i]. De nombreux autres spectacles s\'y ajouteront tout au cours de la nuit : théâtre de rue, animations, musique (jazz, musique de chambre, discothèque...).\nAlors pensez à réserver votre soirée du 28 juin !\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (5,7,4,7,'Communiquer ton mail à l\'AX','Lorsque tu communiques ton mél à l\'AX, utilise préférentiellement ton adresse en polytechnique.org, plutôt que celle en m4x.org (qui n\'a pas vocation à être largement affichée).\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (5,8,4,8,'Fondation X','A tous les anciens élèves des promos 92 à 96\r\n\r\nCher, Chère Camarade,\r\nPour honorer la mémoire de Pierre Faurre disparu en 2001, qui fut membre de l\'Académie des Sciences et Président du Conseil d\'Administration de l\'École polytechnique, plusieurs grandes entreprises membres de la Fondation ont constitué un fonds permettant de décerner annuellement un prix Pierre Faurre destiné à distinguer un jeune polytechnicien dont le début de carrière dans l\'industrie apparaît particulièrement prometteur.\r\nLes Directions des entreprises qui sont appelées à adresser à la Fondation, avant fin mai 2002, les candidatures qu\'elles présentent.\r\nSi tu estimes que ton parcours peut justifier d\'être pris en compte dans ce processus, fais le savoir à la Direction de ton entreprise pour qu\'elle fasse le nécessaire : elle sera probablement sensible à l\'aspect notoriété de ce prix.\r\nLa Direction des entreprises qui soutiennent habituellement la Fondation ou qui viennent au Forum aura reçu directement une lettre sur le sujet mais elle n\'ont pas l\'exclusivité.\r\n','Paul COMBEAU, Délégué Général (X 47)\r\nhttp://www.fondationx.org/'); -INSERT INTO `newsletter_art` VALUES (6,1,1,1,'Version c0w3oy2','Après le système de \"skins\", le site propose maintenant sa version c0w3oy2.','http://www.polytechnique.org/l0gin.php'); -INSERT INTO `newsletter_art` VALUES (6,2,1,2,'Et toujours... le couteau suisse des groupes X !','polytechnique.org propose aux groupes X des outils facilitant la gestion internet : adresse web, mailing-lists, visibilité, pour un groupe X branché !','adresse web : https://www.polytechnique.org/groupex.php\r\nmailing-lists : https://www.polytechnique.org/listes/\r\nvisibilité : http://asso.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (6,3,1,3,'Et toujours... le forum en ligne des petites annonces !','https://www.polytechnique.org/forums/Forum.php?Forum=PA\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (6,4,3,4,'Nouveau groupe X : X-US/Canada','Cher(e) camarade, nous sommes heureux d\'annoncer la création officielle du groupe X-US/Canada. Notre objectif est de favoriser le développement des entreprises françaises dans la région d\'Amérique du Nord, sans pour autant oublier la composante culturelle. Le site web est actuellement en construction. Pour l\'instant, tu peux t\'inscrire en envoyant un mail au bureau : bureau@x-us.polytechnique.org?subject=Inscription\nSi tu es intéressé, tu devras t\'inscrire à la liste xus-creation@polytechnique.org en allant sur la page des listes.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (6,5,3,5,'G.P.X : newsletter','Notre mailing-list s\'enrichit d\'une nouvelle newsletter, celle du Groupe Parisien des X. Si tu veux être informé des diverses activités du GPX et recevoir son bulletin mensuel GPX-Contact, inscris-toi à la newsletter-gpx en allant sur https://www.polytechnique.org/listes/ .\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (6,6,4,6,'Petit Déjeuner Polytechnicien : 3 avril 2002','Le prochain petit déjeuner polytechnicien se déroulera le mercredi 3 avril 2002 de 8h à 9h30, à la Maison des X. L\'invité sera Jean-Luc Lagardère.\r\n','Inscriptions au 01 47 20 62 81'); -INSERT INTO `newsletter_art` VALUES (6,7,4,7,'Jumping de l\'X 2002 : 27-28-29 avril 2002','http://www.polytechnique.fr/eleves/binets/jumping/\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (6,8,4,8,'Point Gamma 2002 : le 25 mai 2002 !','http://pointgamma.polytechnique.org/\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (6,9,4,9,'Bal de l\'X le 28 juin 2002','Pour sa 112ème édition, le bal de l\'X quitte l\'Opéra Garnier pour la Grande Halle de la Villette. Le spectacle principal prévu est [i]La Senna Festeggiante[/i], un opéra baroque d\'Antonio Vivaldi. De nombreux autres spectacles s\'y ajouteront...\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,1,1,1,'Nouveau site','L\'équipe de poly.org te prépare un nouveau site ! Au programme, des fonctionnalités nouvelles, mais aussi une petite surprise... ;-)\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,2,1,2,'Qualité du service','Quelques interruptions de services sont apparues durant le mois de mai ; elles sont liées au réseau sur lequel nos machines sont connectées. Les mails envoyés ou reçus par l\'intermédiaire de poly.org ne sont jamais perdus, ils sont retardés, ou, dans le pire des cas, l\'expéditeur est informé que l\'envoi n\'a pas encore pu être effectué.\nL\'équipe de poly.org suit de près ces événements et fait son possible pour les résoudre promptement.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,3,3,3,'Assemblée Générale de l\'AX','L\'AG se tiendra mardi 18 juin 2002 à l\'ENSTA (amphi Charles Renard)\r\nà partir de 17 heures.\r\n1ère partie - rapport moral et comptes\r\n2nde partie - débat sur la communauté polytechnicienne (18:00)\r\nL\'AG se terminera par un verre de l\'amitié (19:30).\r\n','Comment s\'y rendre :\r\n32, bd Victor Paris XV\r\nAccès par le bus PC1, métro 8 Balard ou RER C bd Victor.'); -INSERT INTO `newsletter_art` VALUES (8,4,3,4,'Groupement Parisien des X','Le GPX organise une [b]randonnée pédestre[/b] dimanche 9 juin, de Gazeran à Rambouillet en passant par les rochers et les étangs d\'Angennes (soit environ 20km).\r\n','Renseignements auprès de Michel Marx (57) : 1 45 32 27 81.'); -INSERT INTO `newsletter_art` VALUES (8,5,3,5,'X-Histoire et Archéologie','Une manifestation est prévue le mercredi 12 juin. L\'invitée sera Marguerite Harl, professeur émérite à la Sorbonne et auteur de [i]La bible des Septante[/i], qui retrace l\'histoire de la traduction en grec des cinq premiers livres de la Bible.\r\n','Renseignements au 1 42 50 65 57.'); -INSERT INTO `newsletter_art` VALUES (8,6,3,6,'X-Environnement','Le groupe vous invite à une réunion-débat sur [b]le bruit[/b] le 12 juin à 18 heures à la Maison des X. Jean-Marc Jancovici (81) animera le débat, ainsi que Jacques Lambert (directeur de recherche à l\'INRETS), Alain Muzet (directeur du Centre d\'études de physiologie appliquée du CNRS) et Pascal Lemonnier (chef de la Mission bruit du ministère de l\'Environnement).\r\n','http://www.x-environnement.org/'); -INSERT INTO `newsletter_art` VALUES (8,7,3,7,'Assemblée Générale de X-Résistance','L\'AG 2002 de l\'association X-Résistance se tiendra vendredi 21 juin à 18 heures, à la Maison des X, (12, rue de Poitiers Paris VII).\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,8,3,8,'Appel X-Internet','Lors de la dernière réunion X-Internet le jeudi 30 mai, une idée de projet est apparue. Il s\'agit pour les Anciens de profiter du savoir des Anciens plus jeunes. Si tu es demandeur ou volontaire bénévole, contacte-nous et nous ferons suivre : info_vc@m4x.org.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,9,3,9,'Groupement Parisien des X','Un club micro-informatique est en cours de création à la Maison des X avec le concours du Collège de Polytechnique. Il a pour but de permettre à ses membres de se perfectionner, chacun dans les utilisations qui l\'intéressent. Ce club aura trois types d\'activités - des réunion avec démonstrations sur des sujets choisis,\r\n - un réseau de messagerie réservé aux membres,\r\n - des séances classiques de formation.\r\n','gpx@polytechnique.org ou par téléphone 1 45 48 52 04.'); -INSERT INTO `newsletter_art` VALUES (8,10,4,10,'Record de l\'heure','Le record de l\'heure aura lieu mercredi 5 juin sur la circulaire de l\'X. Le principe est de parcourir la plus grande distance en vélo en une heure. Cette épreuve organisée par le [b]Binet Vélo[/b] est ouverte à tous : pratiquants occasionnels ou mordus. De nombreux vélos de course, VTT et tandems seront disponibles en prêt gratuit. La participation est gratuite, ainsi que le barbecue après la course.\r\n','Pour toutes questions, romain.beaume@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (8,11,4,11,'Raid Gauloises','Après leur retour du Vietnam, le [b]binet Raid Gauloises[/b] vous invite à assister à la présentation du déroulement de cette épreuve mercredi 5 juin à 18:30 en amphi Monge à l\'École.\r\nUn cocktail au salon de Marbre sera ensuite offert.\r\n','http://www.polytechnique.fr/eleves/binets/grgx/'); -INSERT INTO `newsletter_art` VALUES (8,12,4,12,'Drive In de l\'X','Retrouve l\'ambiance du Drive In , les jeudi 13 et vendredi 14 juin.\r\nDe nombreuses animations se dérouleront sur le site de l\'École, ainsi que les [b]projections grand écran en plein air[/b] de [i]Matrix[/i] et du [i]Fabuleux destin d\'Amélie Poulain[/i].\r\n','http://www.polytechnique.fr/eleves/binets/drivein/'); -INSERT INTO `newsletter_art` VALUES (8,13,4,13,'Petit Déjeuner polytechnicien','Serge Tchuruk, PDG d\'Alcatel, sera présent à la Maison des X le mercredi 5 juin, dès 8 heures du matin. Il n\'y aura pas de PDX en juillet et en août.','Renseignements au 01 47 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (8,14,4,14,'Promo 91','Le repas de promotion des 10 ans se tiendra dimanche 23 juin.\nPour tout renseignement, contacte rapidement Dominique :\ndominique.labilloy@m4x.org.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (8,15,4,15,'Bal de l\'X','Le 112eme Bal de l\'X aura lieu le jeudi 28 juin 2002.\r\nNe ratez pas le premier bal du troisième millénaire !\r\n','http://bal.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (8,16,4,16,'Collège de Polytechnique','Le Collège, formation continue de l\'École polytechnique, élabore et organise des séminaires et des formations intensives pour les entreprises qui souhaitent perfectionner les cadres dirigeants et les ingénieurs.\r\n','http://www.collegepolytechnique.com/'); -INSERT INTO `newsletter_art` VALUES (11,1,1,1,'Interruptions de service : 7 septembre et 5 octobre','Les machines de polytechnique.org sont hébergées gracieusement par\nl\'École.\nDes coupures de courant électrique seront effectuées sur le site :\n - samedi 7 septembre de 9 à 17 heures,\n - samedi 5 octobre de 9 à 17 heures.\n\nLe site web ainsi que tous les services relatifs à polytechnique.org seront donc interrompus pendant les mêmes périodes.\nL\'Équipe de polytechnique.org vous présente d\'emblée ses excuses pour ces discontinuités de services indépendantes de sa volonté.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (11,2,3,2,'Groupement parisien des X','\nLa prochaine randonnée pédestre du GPX aura lieu le dimanche 8 septembre 2002, avec Jacqueline Brandeis (tél : +33 145 34 24 17). De Plaisir à Versailles, par la forêt de Bois-d\'Arcy et le bois de Satory, parcours vallonné de 22km. Il est possible d\'interrompre le trajet à Saint-Cyr (13km).\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (11,3,3,3,'X-Environnement','Le groupe X-Environnement vous invite à participer à la réunion-\r\n-débat organisée sur le thème :\r\n[u]Environnement et entreprises : éco-conception des produits[/u] , le mercredi 25 septembre 2002 de 18 à 20 heures à la Maison des X.\r\nL\'éco-conception des produits est caractérisée par une vision globale et une approche multi-critères de l\'environnement. Elle prend en compte l\'ensemble des étapes du cycle de vie d\'un produit.\r\nLe débat, préparé et animé par Gérard Idé, membre du bureau X-Environnement, sera introduit par trois conférenciers :\r\n + monsieur Dubois [i]Alcatel[/i] analysera les différents concepts de l\'éco-conception et ses méthodologies ;\r\n + monsieur Coste [i]Airbus-Industrie[/i] présentera des études de cas de réduction des nuisances à la source ;\r\n + monsieur du Sablon exposera le point de vue des associations de comsommateurs.','http://www.x-environnement.org/'); -INSERT INTO `newsletter_art` VALUES (11,4,3,4,'X-Europe','\nLe groupe \"X-Europe\" a été créé en 1989 à l\'initiative de Louis Leprince-Ringuet (X20), avec le soutien de Valéry Giscard d\'Estaing (X44), par des X désireux de promouvoir la construction européenne.\nNous avons aujourd\'hui besoin de bonnes volontés pour participer à notre réflexion et nous aider à accompagner les travaux de la Convention ; c\'est pourquoi nous invitons tous les volontaires à s\'inscrire sur notre liste de diffusion x-europe@polytechnique.org et à consulter notre site http://x-europe.polytechnique.org/.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (11,5,4,5,'C\'est la rentrée','Chacune des trois promos (re)peuple le plateau de Palaiseau. C\'est déjà le cas pour la promo 2001 (26 août), suivie de près par la promotion entrante X2002 (2 septembre) qui découvrira fugacement l\'École. La promotion 2000, quant à elle, retrouvera les kazerts le 23 septembre.\nL\'Équipe pousse un grand [i]Chic à la Rouje[/i] , et un non moins grand [i]Chic à la Jaune[/i] .\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (11,6,4,6,'Colloque Raymond Abellio aujourd\'hui','Le colloque se déroulera du 2 au 9 septembre au Centre Culturel International de Cerisy la Salle (Manche).\r\nRaymond Abellio est le pseudonyme de Georges Soulès (X27), écrivain et philosophe, auteur de quatre romans, de nombreux essais (dont [u]La Structure Absolue[/u] , Gallimard, 1965), et de trois tomes de Mémoires.\r\nL\'objet de ce colloque, organisé par Jean-Baptiste de Foucauld (ancien Commissaire au Plan) et Antoine Faivre (professeur à la Sorbonne), est d\'étudier les divers aspects de cette ?uvre qui se situent aux confins de la philosophie, de la science, de l\'éthique et de la spiritualité, et de s\'interroger sur son actualité.','Renseignements :\r\nCentre Culturel International de Cerisy\r\n+33 233 46 91 66\r\n50210 Cerisy la Salle\r\nhttp://www.ccic-cerisy.asso.fr/'); -INSERT INTO `newsletter_art` VALUES (11,7,4,7,'Promotion 92','Le Barbecue Promo X92 aura lieu le samedi 14 septembre à Palaiseau.','Contacts :\r\nJérôme Wagner jerome.wagner@m4x.org\r\nMarc Flender marc.flender@m4x.org ou +33 147 39 94 16.'); -INSERT INTO `newsletter_art` VALUES (11,8,4,8,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 10 septembre de 8h à 9h30 avec Francis MER (X59), Ministre de l\'Économie et des Finances.','Renseignements au +33 147 20 62 81 (après le 18 août).'); -INSERT INTO `newsletter_art` VALUES (11,9,4,9,'Cérémonie de la Flamme','L\'AX ravivera la Flamme à l\'Arc de Triomphe le lundi 14 octobre à 18:30 (le rassemblement devra être terminé pour 18:15).\nRetenez donc dès maintenant ce rendez-vous sur votre agenda, en particulier les membres des promos 92, 82, 72, 62, 52, 42 et 32. \n\n',''); -INSERT INTO `newsletter_art` VALUES (10,1,1,1,'Change de peau','C\'est l\'été, change de peau ! Toute l\'équipe de poly.org te souhaite des vacances reposantes et ensoleillées.\r\n','https://www.polytechnique.org/skins.php'); -INSERT INTO `newsletter_art` VALUES (10,2,3,2,'X-Côte basque','Déjeuner traditionnel des résidents du Pays basque (au sens large, géographiquement), permanents ou estivants, et de leurs conjoints, le samedi 24 août 2002.','[u]Renseignements[/u] : Armand Bouttier (50) 6, chemin de Grenouillette, 31170 Tournefeuille.\r\nTél et fax : 561 86 25 81\r\narmand.bouttier@wanadoo.fr'); -INSERT INTO `newsletter_art` VALUES (10,3,3,3,'Groupement parisien des X','La prochaine randonnée pédestre du GPX aura lieu le dimanche 8 septembre 2002, avec Jacqueline Brandeis (tél : 145 34 24 17). De Plaisir à Versailles, par la forêt de Bois-d\'Arcy et le bois de Satory, parcours valloné de 22km.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (10,4,4,4,'Petit Déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 10 septembre de 8h à 9h30 avec Francis MER, Ministre de l\'Économie et des Finances.\nRenseignements au 147 20 62 81 (après le 18 août).\n\n',''); -INSERT INTO `newsletter_art` VALUES (9,1,1,1,'Bureau des carrières','\nLe Bureau des carrières est à la disposition des camarades recherchant un emploi ou réfléchissant à une nouvelle orientation de leur carrière professionnelle. Il est à leur écoute et leur propose ses services. Fort de son expérience professionnelle, le BK peut aussi répondre aux questions que se posent les jeunes polytechniciens avant leur premier emploi, ou, plus généralement, au moment où ils pensent à leur orientation et cherchent à définir leur projet professionnel.\n\nLes nouvelles offres d\'emploi disponibles sont résumées et publiées dans des listes bimensuelles ; il est possible de les obtenir (cotisation de 30EUR pour six mois sauf cas particulier, permettant aussi leur consultation au jour le jour sur le site web du BK).\n\nhttp://carriere.polytechnique.org/\n\nLes camarades intéressés par ces offres s\'adressent directement au BK, par lettre, fax, téléphone ou Internet, pour avoir communication des offres détaillées et des détails nécessaires (cabinet de recrutement concerné, personne à contacter, etc.). Ils contactent ensuite directement les offreurs s\'il y a lieu.\n\nPar ailleurs, le BK publie dans [i]La Jaune et la Rouge[/i] et sur son site web sous forme de mini-CV, les demandes de situations des camarades qui le souhaitent.\n\nDans le cadre de la solidarité polytechnicienne, des responsables opérationnels en activité ont, en outre, accepté de conseiller les camarades, que leur adresse le BK.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (9,2,1,2,'Du nouveau sur les retraites des X','L\'AX informe depuis plusieurs années les X pantouflards sur les droits à la retraite générés par les trois années passées par eux à l\'École. Une brochure a été éditée par l\'AX sur le sujet, mise à jour régulièrement dans le passé ; elle est aujourd\'hui remplacée par un texte qui figure sur le site internet de l\'AX :\r\nhttp://www.polytechniciens.com/\r\npuis rubrique \'Services de l\'AX\' - \'Retraite\'.\r\n\r\nDans ce texte il est en particulier indiqué la justification des trois ans à l\'École validés pour le régime de retraite pour la Sécurité Sociale.\r\n\r\n','Un lien direct est disponible pour impression :\r\nhttp://www.polytechniciens.com/index.php?page=serv_retraite.html'); -INSERT INTO `newsletter_art` VALUES (9,3,1,3,'Appel','Faisant suite à l\'appel dans la dernière newsletter (il s\'agit pour les Anciens de profiter du savoir des Anciens plus jeunes, en particulier en informatique), de nombreux volontaires se sont manifestés. Si tu es demandeur ou volontaire bénévole, contactenous et nous ferons suivre : info_vc@m4x.org.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (9,4,1,4,'Qualité du service','Dans un souci de transparence, l\'équipe de poly.org a mis en place une page présentant les interruptions de service de Poly.org qui ont été constatées ou qui sont prévues. Il est à noter qu\'à ce jour, la quasi-totalité des coupures proviennent de défaillances du réseau de l\'École, où nos serveurs sont hébergés, et que ces coupures sont rares comparées à d\'autres services présentant les outils de poly.org .\r\n','https://www.polytechnique.org/coupures.php'); -INSERT INTO `newsletter_art` VALUES (9,5,3,5,'X-Inde','L\'organisation au sein d\'X-Asie de groupes-Pays (X-Japon, X-Chine, X-Vietnam, X-Océan Indien) s\'est poursuivie en juin avec la naissance d\'X-Cambodge animé par Alain Goye (85) et d\'X-Inde animé par Jean-Luc Minet (96).\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (9,6,3,6,'Groupement Parisien des X','La prochaine randonnée pédestre du GPX aura lieu le dimanche 7 juillet 2002, avec Gilbert Grandil (61).\nBoucle de 25km au départ de la gare de Cognières, en passant devant les hangars agricoles du hameau des Hautes-Bruyères, par le bois domanial des Plainvaux, la forêt de Rambouillet, les Mesnuls, Saint-Rémy-l\'Honoré. Le total des dénivellations est d\'environ 280m.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (9,7,3,7,'X-Léman','Ce groupe, fondé en 1999, regroupe un quart des X de l\'Ain, la Savoie, la Haute-Savoie, et la Suisse romande. Chaque année, deux sorties sont proposées, une de printemps, une d\'été. La sortie d\'été aura lieu à la mi-août. La date sera précisée dès que possible. Elle comportera :\r\n - la visite guidée et commentée de la mine de sel de Bex en Suisse,\r\n - un repas gastronomique au restaurant à Martigny,\r\n - la visite de la Fondation Gianadda, qui expose des peintres\r\n célèbres.\r\n\r\nTous les camarades intéressés par cette sortie sont cordialement invités, qu\'ils aient payé ou non leur cotisation!\r\n\r\n','[u]Contact[/u] (avant le 1er août) : Henri Hovasse (X48)\r\n8, chemin Moynat, 74200 Thonon-les-Bains\r\nTéléphone : 4 50.71.36.54'); -INSERT INTO `newsletter_art` VALUES (9,8,3,8,'X-Côte basque','Déjeuner traditionnel des résidents du Pays basque (au sens large, géographiquement), permanents ou estivants, et de leurs conjoints, le samedi 24 août 2002.\r\n','[u]Renseignements[/u] : Armand Bouttier (50)\r\n6, chemin de Grenouillette, 31170 Tournefeuille.\r\nTél et fax : 5 61.86.25.81\r\narmand.bouttier@wanadoo.fr'); -INSERT INTO `newsletter_art` VALUES (9,9,4,9,'X et parachutisme','Les paras X et anciens X se retrouvent à Gap cet été !\r\nLe stage de l\'X à lieu du 13 au 27 juillet, nous nous retrouverons plus précisement du vendredi 19 au dimanche 21 juillet pour un [i]X boogie[/i] et une tentative de grande formation de VR d\'X : à 16 ou plus !!\r\n','Pour tous renseignements (niveau requis, logement, etc.) :\r\nhugues.duplantier@m4x.org (X1995).'); -INSERT INTO `newsletter_art` VALUES (9,10,4,10,'Défilé sur les Champs','Cette année, c\'est la promotion X2000 [i]Chic à la Rouje![/i] qui mènera le défilé du 14 juillet sur les Champs-Élysées. Nous leur souhaitons ni trop de soleil, ni trop de vent, ni trop de pluie ;-)\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,1,1,1,'De nombreuses améliorations cette fois-ci:','\n Pour les Groupes X, nous proposons une redirection gratuite des mails de leur domaine groupex.polytechnique.org, en plus de la redirection web. Ce système permet de rediriger toutes les adresses désirées dans le domaine groupex.polytechnique.org vers des boîtes existantes. Il permet aussi d\'ajouter des destinataires non polytechniciens aux listes de diffusions.\n https://www.polytechnique.org/groupex.php\n\n Nous avons ouvert un serveur SMTP, permettant d\'envoyer ses courriers électroniques via polytechnique.org sans pub et sans restriction.\n https://www.polytechnique.org/SmtpPolytechnique.php\n\n Une page permettant d\'envoyer rapidement un courrier depuis son adresse polytechnique.org, sans bannière de pub, utile quand on ne peut pas faire autrement.\n https://www.polytechnique.org/sendmail.php\n\n Au caractère spécial + permettant d\'avoir une infinité d\'adresses sur Polytechnique.org, s\'ajoute maintenant le _, utile sur les sites qui refusent le + dans une adresse mail.\n https://www.polytechnique.org/EmailOutils.php\n\n Les forums sont revenus ! Certains y voient un moyen simple de discuter avec la communauté sur des sujets aussi divers que le film \'Absolument Fabuleux\', les dernières actions de la Khômiss, ou encore le dernier article anti-élite de l\'Express. D\'autres se contentent de mettre des petites annonces avec une visibilité assurée.\n http://www.polytechnique.org/forums/\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,2,1,2,'Listes de diffusion promos','Elles existent et sont une aide précieuse pour les kessiers, qui sont invités à nous contacter.','http://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (2,3,1,3,'Sponsoring','Nous remercions nos sponsors Certplus et Openwave, sans qui le site ne pourrait fonctionner. De nouveaux sponsors vont nous rejoindre et si tu souhaites en faire partie contacte-nous ; nous recherchons en particulier un soutien pour le renouvellement des machines, et pour le financement de logiciels de filtrage permettant d\'éliminer les virus qui pourraient vous être adressés (le plus souvent involontairement) par vos correspondants.\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,4,1,4,'Nouvelles listes de diffusion',' - Inde-espoir :\n\nChère ou cher ami(e),\nSi tu as, au cours de tes études, effectué un chantier de développement en Inde, nous avons créé pour toi la liste inde-espoir@polytechnique.org . A très bientôt sur la mailing list !\nThomas Mulliez et Thomas Lefebvre (X97 - Inde-Espoir 99)\n\n\n - eTrustMarket et eTrustPki :\n\nLa Confiance sur Internet et la PKI apparaissent comme des thèmes à la fois passionnants et fédérateurs. Vu sous l\'angle des communautés d\'utilisateurs d\'Internet, rendre possible sur Internet ce qui l\'est dans le monde réel (signature électronique, etc.), et ouvrir de possibilités nouvelles et inédites (et là tout reste à inventer), tel est l\'enjeu de la mise en place de la confiance sur Internet. En cela il est bien loin du discours souvent perçu comme sécuritaire, voire paranoïaque, classique : virus / anti-virus / hackers / espions etc. Il s\'agit en effet bien davantage d\'ouverture au monde et de création de\nnouveaux espaces, que de création de cyber-barbelés.\n\nVu sous l\'angle technique, la PKI catalyse des enjeux considérables :\non peut citer sans être exhaustif les domaines de la cryptologie, de la sécurité logique et physique, des plates-formes temps réel et haute disponibilité, de l\'interopérabilité, de la gestion de secrets, de leur conservation dans le temps, de l\'intégration dans les applications,etc. Si ces enjeux vous intéressent, et que vous souhaitez recevoir la Newsletter associée spécialisée sur ces sujets (ou participer à sa rédaction en envoyant vos articles), n\'hésitez pas à vous inscrire sur ces listes de diffusion respectives (voir http://www.polytechnique.org/listes/ ).\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,5,2,5,'Le site officiel de l\'AX est sorti le 18 juin 2001.','Tu as probablement reçu ton identifiant (1ère lettre du prénom, nom, 2 chiffres) et ton mot de passe d\'accès. Sans doute es-tu un peu perdu par l\'existence de 2 sites.\n\nVoici les points sur lesquels polytechnique.org se concentre :\n - un système de redirection d\'emails rodé depuis plus de 2 ans\n - plus de 5000 inscrits (soit plus du tiers des anciens élèves) au service dans toutes les promotions\n - un système évolué permettant d\'éviter tout mail commercial non sollicité (moteur anti-SPAM développé par des X)\n - ouverture à tou(te)s les polytechnicien(ne)s (y compris les X en école)\n - adresse à vie et identifiant simple (prenom.nom)\n - annuaire puissant (nombreux champs, photographie, etc.)\n - adresse pour les groupes X , comme http://x-resistance.polytechnique.org/\n - listes de diffusion, forums\n - modification des informations prise en compte instantanément\n - accès direct au site possible (pas de clic)\n - identification automatique possible (si tu es seul utilisateur de l\'ordinateur)\nDe bonnes raisons pour que tu continues à parler autour de toi de polytechnique.org!\n\nPour que tu n\'aies plus à faire des mises à jour sur les 2 sites, un accord a été mis en place avec l\'AX :\nLorsque tu mettras à jour ton profil sur http://www.polytechnique.org/ les modifications seront transmises à l\'AX pour l\'annuaire papier et pour polytechniciens.com.\n\nSi tu souhaites que cette transmission ait lieu, pense à cliquer ici http://www.polytechnique.org/ et dans ton profil (clique en haut à gauche sur ton prénom) de faire précéder les champs que tu souhaites communiquer à l\'AX d\'un carré orange ou vert (ce n\'est pas le cas par défaut).\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,6,3,6,'X-Environnement :','Le groupe X-Environnement publie l\'ensemble de ses manifestations sur Internet.\r\n','Accueil du site : http://x-environnement.polytechnique.org/\r\nAccès direct aux manifestations :\r\nhttp://www.x-environnement.org/manifestations.html'); -INSERT INTO `newsletter_art` VALUES (2,7,3,7,'X-Europe :','Le groupe X-Europe vous invite à soutenir ses activités en visitant le site http://x-europe.polytechnique.org/\n\n',''); -INSERT INTO `newsletter_art` VALUES (2,8,3,8,'Initiation aux nouvelles technologies pour les X','La première séance d\'initiation à la bureautique et à Internet a été réalisée à l\'initiative de la Maison des X, du Collège de l\'X et du GPX. Pour en savoir plus, prendre contact avec le GPX : gpx@polytechnique.org\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (7,1,1,1,'6000 inscrits','Plus de 6000 élèves et anciens ont fait confiance à l\'équipe de Poly.org et se sont inscrits sur le site !\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (7,2,1,2,'Élèves étrangers et promotions','Des erreurs concernant la promotion de certains élèves étrangers se sont glissées dans notre base de données. Si tu es concerné, tu peux nous écrire à : support@polytechnique.org .\nPour les mailing-lists promo, tu peux modifier tes abonnements sur la page des mailing-lists (en bas de la page) : il suffit de t\'inscrire à la bonne liste promo et de te désinscrire de la mauvaise.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (7,3,2,3,'Des infos de l\'École','Un projet d\'ampleur, autour du nom de domaine polytechnique.edu, est en train de voir le jour à l\'école. [b]Polytechnique.edu[/b] , ce sera :\n - un [b]site web[/b] , orienté vers l\'international, destiné à mieux faire connaître l\'école auprès des étudiants, universités, et recruteurs étrangers ;\n - une [b]adresse mail[/b] @polytechnique.edu que partagera toute la communauté polytechnicienne : élèves et anciens élèves, mais aussi chercheurs, et administratifs.\n\nLe site web est en phase active de développement, et sera en ligne fin juin. Quant à l\'adresse mail, ce sera une redirection vers une autre adresse, et elle est développée par l\'équipe technique de Polytechnique.org.\n\nNous vous donnerons des nouvelles de tout cela prochainement.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (7,4,3,4,'Groupement parisien des X','Le mardi 28 mai aura lieu une conférence-dîner sur le thème de [i]L\'énergie nucléaire et l\'Europe[/i] , par Georges Vendryes (X40), ancien directeur des applications industrielles nucléaires au CEA.\r\n\r\nDimanche 2 juin aura lieu le rallye touristique X-ECP !\r\nInscriptions avant le 24 mai.\r\n','Pour toute information, téléphone au GPX au 1 45 48 52 04 ou écris\r\nà gpx@polytechnique.org .'); -INSERT INTO `newsletter_art` VALUES (7,5,3,5,'X-Environnement','Le groupe X-Environnement vous invite à participer à la réunion-débat organisée le mercredi 15 mai à la Maison des X, sur le thème : [i]Environnement et entreprises : vers de nouvelles pratiques volontaires[/i]\r\n','http://www.x-environnement.org/'); -INSERT INTO `newsletter_art` VALUES (7,6,3,6,'X-Histoire et Archéologie','Une manifestation est prévue le mercredi 12 juin. L\'invitée sera Marguerite Harl, professeur émérite à la Sorbonne et auteur de [u]La bible des Septante[/u] . ','Renseignements au 1 42 50 65 57.'); -INSERT INTO `newsletter_art` VALUES (7,7,3,7,'X-Israël','Le groupe X-Israël recevra le 27 mai 2002 Michel Louis Levy (X57), qui donnera une conférence sur le thème : [i]L\'État d\'Israël, la Bible et la loi, une lecture laïque[/i] .\r\n','http://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (7,8,4,8,'Rencontres rolistes de l\'X','Les 6èmes RRX auront lieu les 4 et 5 mai 2002. Le binet FaëriX organisera trois rondes de cinq heures chacune, ainsi que des tournois de jeux de plateaux.\r\n','http://www.polytechnique.fr/eleves/binets/faerix/'); -INSERT INTO `newsletter_art` VALUES (7,9,4,9,'Point Gamma 2002','Le Point Gamma aura lieu le samedi 25 mai, dès 19h et jusqu\'au bout de la nuit! Tout a été prévu pour que tu ne puisses pas t\'ennuyer une seule minute : concert des Saïan Supa Crew, set house d\'Antoine Clamaran, Jean-Luc Lemoine sur la scène de l\'amphi Poincaré... Si une montée d\'adrénaline ne te fait pas peur : viens t\'essayer au saut à l\'élastique ou à la tyrolienne ! Nos gentils barmen seront ensuite là pour te réconforter...\r\n\r\nTu pourras réserver tes places très bientôt au tarif prévente (22EUR), pour toi et pour tes amis (étudiants ou non), sur polytechnique.org !\r\nIl suffit pour cela de t\'authentifier et de cliquer sur le lien qui apparaît en page d\'accueil. Cette inscription en ligne sera activée dès que possible.\r\nPour les élèves 99, 2000 et 2001, deux places à 17EUR chacune vous sont réservées. Il suffit de les chercher au local du Point Gamma, où l\'équipe vous attend.\r\n','http://pointgamma.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (7,10,4,10,'Drive In de l\'X','Retrouve l\'ambiance du Drive In , les jeudi 13 et vendredi 14 juin.\r\nDe nombreuses animations se dérouleront sur le site de l\'École, ainsi que les projections grand écran du [i]Fabuleux destin d\'Amélie Poulain[/i] et de [i]Matrix[/i].\r\n','http://www.polytechnique.fr/eleves/binets/drivein/'); -INSERT INTO `newsletter_art` VALUES (7,11,4,11,'Petits Déjeuners polytechniciens','Nicolas Sarkozy sera présent à la Maison des X le vendredi 3 mai, et ce dès 8 heures du matin. Mercredi 5 juin, c\'est Serge Tchuruk, PDG d\'Alcatel, qui sera invité.\r\n','Renseignements au 01 47 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (7,12,4,12,'112ème Bal de l\'X','Il aura lieu le jeudi 28 juin 2002.\r\nNe ratez pas le premier bal du troisième millénaire !\r\n','http://bal.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (12,1,1,1,'Interruption de service : 4-5-6 octobre','Les machines de polytechnique.org sont hébergées gracieusement par l\'École.\nUne coupure de courant électrique sera effectuée sur le site entre vendredi 4 et dimanche 6 octobre.\n\nLe site web ainsi que le serveur SMTP seront donc interrompus pendant cette journée. Un serveur de mail extérieur sera mis en place pour maintenir le service mail, aucun mail ne sera perdu ou retardé.\n\nL\'Équipe de polytechnique.org vous présente d\'emblée ses excuses pour cette discontinuité de services indépendante de sa volonté.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (12,2,1,2,'Patte cassée','Cette page sert à analyser les messages d\'erreur que tu reçois lorsque tu envoies un mail @polytechnique.org.\r\nAinsi, si après l\'envoi d\'un mail, tu reçois en retour un message t\'indiquant que le destinataire n\'a pas reçu ton message (sur l\'une de ses adresses de redirection), nous pouvons te dire s\'il a reçu ton message sur une autre adresse de redirection.','https://www.polytechnique.org/pattecassee.php'); -INSERT INTO `newsletter_art` VALUES (12,3,1,3,'Accessibilité des forums','Le système de forums de Polytechnique.org souffrait jusqu\'à présent d\'incompatibilités avec certains navigateurs web. Ce service a donc été repensé pour permettre à tous d\'en profiter.','https://www.polytechnique.org/news/'); -INSERT INTO `newsletter_art` VALUES (12,4,1,4,'Anti-spam','L\'équipe de Polytechnique.org développe actuellement un nouveau système pour contrer les spams (mails non sollicités). Si tu es volontaire pour le tester, écris-nous :\nsupport_antispam@polytechnique.org\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (12,5,1,5,'Nouvelles skins','Chaque utilisateur de Polytechnique.org a son navigateur préféré ; afin de combiner des visages différents du site (les [i]skins[/i]) et une compatibilité maximale, l\'équipe de Polytechnique.org a opéré une refonte du site, s\'alignant sur les [u]standards du web[/u] .','Les standards du web\r\n-> http://www.w3.org/Consortium/#mission\r\nChoisis ta skin !\r\n-> https://www.polytechnique.org/preferences.php'); -INSERT INTO `newsletter_art` VALUES (12,6,1,6,'Listes de diffusion','Pour faciliter la gestion des listes de diffusion, il est désormais possible de trier les abonnés d\'une liste soit par nom, soit par promotion.','https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (12,7,3,7,'X-Internet','Le groupe [u]X-Informatique[/u] organise un certain nombre de manifestations de qualité, seul ou avec d\'autres écoles d\'ingénieurs avec le G9+. Le groupe [u]X-eConfiance[/u] réfléchit aux outils et enjeux de la confiance dans le e-business.Les deux groupes ont décidé de mutualiser au maximum leurs efforts et ressources, pour un meilleur service à la communauté polytechnicienne.','X-Informatique : http://www.cyberix.org/'); -INSERT INTO `newsletter_art` VALUES (12,8,3,8,'X-Israël','Les deux prochaines manifestations organisées par le Groupe X-Israël sont les suivantes:\r\n ~ une conférence-rencontre le mardi 29 octobre sur l\'intérêt touristique d\'Israël, avec Charles Ayache, guide israélien (thèmes: la réalité de la vie en Israël depuis octobre 2000; les Manuscrits de la Mer Morte, vus par les chercheurs de la nouvelle génération ; Tsipori, la perle de la Galilée, ancienne capitale qui a fait l\'objet de fouilles extensives ces dernières années) ;\r\n ~ un dîner-débat le lundi 18 novembre avec Michel Gurfinkiel, écrivain et journaliste.','Renseignements et inscriptions :\r\nMail : info@x-israel.polytechnique.org\r\nSite web : http://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (12,9,4,9,'C\'est la rentrée (bis)','Les élèves de la promotion X1999 ont pour la plupart effectué leur rentrée en école d\'application, en corps de l\'État, en formation universitaire, en formation en partenariat avec l\'industrie ou en formation complémentaire à l\'étranger.\r\nL\'Équipe pousse un grand [i]Chic à la Jaune[/i] .',''); -INSERT INTO `newsletter_art` VALUES (12,10,4,10,'Cérémonie de la Flamme','L\'AX ravivera la Flamme à l\'Arc de Triomphe le lundi 14 octobre à 18:30 (le rassemblement devra être terminé pour 18:15). Retenez donc dès maintenant ce rendez-vous sur votre agenda, en particulier les membres des promos 92, 82, 72, 62, 52, 42 et 32. \n\n\n',''); -INSERT INTO `newsletter_art` VALUES (12,11,4,11,'Musique','Sous la direction de Lionel Stoléru (X56), l\'orchestre romantique européen vous propose sa soirée [b]La Sérénité romantique[/b] le mardi 22 octobre à 20h3O, Salle Gaveau.\r\nAu programme : [u]Le cygne[/u] (poème de Sully-Prudhomme) suivi du [u]Cygne[/u] de Saint-Saens, du [u]concerto pour violon[/u] de Brahms avec Gérard Poulet, de l\'Adagietto de la [u]cinquième symphonie[/u] de Mahler, et de la [u]cinquième symphonie[/u] de Schubert.\r\n','Inscriptions \"spécial X\" (20 et 30EUR) :\r\ntéléphone +33 147 20 62 81, ou fax +33 147 23 57 17 .'); -INSERT INTO `newsletter_art` VALUES (12,12,4,12,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 5 novembre de 8h à 9h30 à la Maison des X avec Ernest-Antoine Seillière, président du MEDEF.\r\n','Renseignements au +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (13,1,1,1,'Lancement du site Polytechnique.edu','Le site Polytechnique.edu, site développé par l\'école avec l\'aide, pour la partie la plus technique, d\'un groupe d\'élèves, a vu le jour le mois dernier. Le but est à la fois de : \r\n - mieux faire connaître l\'école auprès des étudiants étrangers qui pourraient la rejoindre,\r\n - mieux faire connaître la spécificité de la formation polytechnicienne aux recruteurs étrangers,\r\n - nouer de nouveaux partenariats avec des universités étrangères.\r\nCe projet s\'inscrit bien entendu dans l\'effort d\'ouverture à l\'international de l\'école, entrepris avec la réforme X2000.\r\n','http://www.polytechnique.edu/'); -INSERT INTO `newsletter_art` VALUES (13,2,1,2,'Partage de données avec l\'AX','Tu peux permettre à Polytechnique.org de donner certaines informations personnelles à l\'AX pour lui permettre de mettre à jour son annuaire. Le transfert des données s\'effectue régulièrement, et automatiquement. Si tu ne sais pas comment indiquer quelles informations doivent être données à l\'AX, tu obtiendras les renseignements nécessaires ici :\nhttps://www.polytechnique.org/faq.php#flags\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (13,3,1,3,'Système d\'authentification pour tous les sites X','Polytechnique.org a adapté son système d\'authentification afin de pouvoir le partager avec d\'autres sites : sites des groupes-X, mais aussi tous ceux qui le souhaitent parmi les sites de la communauté polytechnicienne.\r\nLe principe est simple : un bloc (identifiant + mot de passe) [b]unique[/b] pour se connecter à tous les sites de la communauté, au moyen d\'un [b]système centralisé[/b].\r\nNous invitons les responsables des sites intéressés à nous contacter pour les modalités de mise en place de ce système sur leurs sites.\r\n','support_authentification@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (13,4,1,4,'Archivage des lettres d\'informations','L\'Équipe de Polytechnique.org envoie tous les premiers du mois une lettre d\'information à ses inscrits. Les lettres des mois passés sont désormais disponibles sur le site web ; il est par ailleurs possible de se les faire réexpédier.\r\n','https://www.polytechnique.org/newsletter/'); -INSERT INTO `newsletter_art` VALUES (13,5,1,5,'Trombi promo','La cohésion dans une promotion ! Mais il est parfois difficile de retenir les noms... Il est désormais possible d\'afficher les photos de tous les élèves d\'une promotion ; puisse cette page permettre de joyeuses retrouvailles !\r\n','https://www.polytechnique.org/trombipromo.php'); -INSERT INTO `newsletter_art` VALUES (13,6,1,6,'Liste de contacts','Le site permet maintenant de créer et éditer sa liste personnelle de contacts. Tu pourras ainsi limiter le champ d\'une recherche à ce carnet d\'adresses. Tu as aussi la possibilité d\'imprimer cette liste pour l\'emmener en vacances, ou dans les endroits où tu n\'as plus accès à internet.\r\n','https://www.polytechnique.org/mescontacts.php'); -INSERT INTO `newsletter_art` VALUES (13,7,1,7,'Nouveautés des forums','La hiérarchie de forums a été remaniée pour répondre à des demandes différentes, et beaucoup de promotions ont maintenant leur forum. Les nostalgiques du serveur du binet réseau ne seront pas trop dépaysés ! \r\n','https://www.polytechnique.org/news/'); -INSERT INTO `newsletter_art` VALUES (13,8,3,8,'X-Israël','La prochaine manifestation organisée par le Groupe X-Israël sera un dîner-débat le lundi 18 novembre avec Michel Gurfinkiel, écrivain et journaliste.\r\n','Renseignements et inscriptions :\r\nMail : info@x-israel.polytechnique.org\r\nSite web : http://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (13,9,3,9,'GPX','Le Groupement parisien des X organise la soirée [b]BEAUJOLAIS NOUVEAU[/b] vendredi 22 novembre. La soirée aura lieu au Styx (Maison des X), avec un diner animé par les [u]Compagnons du Beaujolais[/u]. Le GPX se charge de collecter les inscriptions.\r\n','http://gpx.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (13,10,3,10,'X-Europe','L\'Assemblée Générale se tiendra à Paris, jeudi 28 novembre à 18:00. Fais-nous connaître tes idées sur ce que tu attendrais du Groupe en 2003, et dis-nous si tu souhaites assister à l\'AG.\r\n','xeurope@noos.fr'); -INSERT INTO `newsletter_art` VALUES (13,11,3,11,'X-Europe','Nous avons besoin de bonnes volontés pour nous aider dans notre action en cours, [u]Débat entre citoyens d\'Europe s\'appuyant sur les villes jumelées[/u]. Nous te demandons simplement une [i]lecture critique[/i] d\'un (ou plusieurs...) thèmes du site de débat.\r\n','http://mapage.noos.fr/xeurosite\r\nContacte-nous si tu es intéressé(e) : xeurosite@noos.fr'); -INSERT INTO `newsletter_art` VALUES (13,12,4,12,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 5 novembre de 8h à 9h30 à la Maison des X avec Ernest-Antoine Seillière, président du MEDEF.\r\nLe 10 décembre, Jean-Paul Bailly (président de La Poste) sera l\'invité du PDX.\r\n','Renseignements au +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (13,13,4,13,'Musique classique','L\'orchestre romantique européen, sous la direction de Lionel Stoléru (56), se produira mardi 3 décembre en salle Gaveau.\r\nAu programme :\r\n ~ [u]Pierre et le Loup[/u] (conte musical de Prokofiev) ;\r\n ~ [u]Fantaisie hongroise[/u] pour piano et orchestre, de Liszt, avec France Clidat ;\r\n ~ [u]Capriccio italien[/u] de Tchaikowsky ;\r\nAmenez vos enfants (dès 8 ans) écouter Eve Ruggieri les initier à l\'orchestre avec Pierre et le Loup !\r\n','Réservation (15, 20, 30EUR) spécial anciens X au +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (14,1,1,1,'Réforme de la Jaune et la Rouge : sondage','\nLa création d\'une [b]revue trimestrielle[/b] de haute tenue, originale, iconoclaste et rigoureuse, destinée à promouvoir le rayonnement de l\'École et des X, est à l\'étude.\nL\'information purement [i]polytechnicienne[/i] serait, elle, diffusée aux seuls X dans un bulletin périodique distinct. Cet ensemble se substituerait à [u]La Jaune et la Rouge[/u] .\n\nIl est essentiel pour nous d\'avoir ton opinion sur ce projet. Nous comptons sur toi pour nous répondre au moyen du questionnaire suivant : https://www.polytechnique.org/sondage-ax.php .\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (14,2,1,2,'Réforme de la scolarité : nouveau diplôme','\nAfin de permettre aux élèves d\'effectuer leur troisième année dans certaines organisations, l\'École délivrera en fin de deuxième année un diplôme de [b]gradué en ingénierie[/b] .\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (14,3,3,3,'Groupe X-Israël','X-Israël s\'est engagé dans une collaboration avec l\'Association Technion France (le [b]Technion[/b], Israel Institute of Technology de Haïfa, est depuis quelques années une École de formation complémentaire de l\'X, actuellement la seule en Israël). Ainsi X-Israël s\'associe à la soirée du 17 décembre à 20:00 sur le thème des partenariats technologiques France-Israël, avec comme sujet dominant le Technion.','Renseignements http://x-israel.polytechnique.org/\r\nATF http://www.col.fr/ATF-technionfrance/\r\nTechnion http://www.technion.ac.il/'); -INSERT INTO `newsletter_art` VALUES (14,4,3,4,'Groupe X-Internet','Le groupe s\'est réuni le 28 novembre, avec comme fil conducteur les outils développés par l\'équipe de polytechnique.org pour satisfaire les besoins de la communauté.\r\nLe compte-rendu, ainsi que les transparents de la présentation, sont disponibles sur le site, tous vos commentaires sont les bienvenus.','http://x-internet.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (14,5,3,5,'Groupe X-eConfiance','\nComment instaurer la confiance dans les échanges numériques ? Après le cocktail du 26 novembre à la maison des X sur ce thème, la prochaine contribution visible du groupe à cette question fondamentale sera [u]La Jaune et la Rouge[/u] de février 2003. D\'autres événements seront organisés au cours de l\'année.\n\nPour mieux connaître le groupe, être informé des événements, ou y contribuer, il suffit de s\'inscrire sur la liste de diffusion X-eConfiance en cochant la case [i]ad hoc[/i] :\nhttps://www.polytechnique.org/listes/\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (14,6,3,6,'X-Afrique, X-Tiers-monde ou X-Coopération','Je cherche des camarades intéressés par les problèmes du tiers-monde en vue d\'échanger des idées (par exemple la crise ivoirienne) et de créer un groupe X afin :\r\n - d\'appuyer des actions pour le développement et la paix,\r\n - de recueillir un large consensus par des actions spécifiques (dons, courriers à des personnalités influentes...).','Alain Ducass (73) alain.ducass@m4x.org ou +33 153 44 98 59.'); -INSERT INTO `newsletter_art` VALUES (14,7,4,7,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 10 décembre de 8:00 à 9:30 à la Maison des X avec Jean-Paul Bailly (65), président de La Poste.','[u]Renseignements[/u] : +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (14,8,4,8,'Cycle de conférences','\nDans le cadre des conférences de la direction de la formation humaine et militaire se déroulant du 5 déc. 2002 au 23 jan. 2003, le cycle \"Grands Témoins\" s\'organisera comme suit :\n - jeudi 5 décembre à 10:30 : [u]L\'expérience spatiale d\'un ancien élève de l\'X[/u] par le colonel Philippe Perrin (Spationaute, CNES)\n - jeudi 12 décembre à 10:30 : [u]Les enseignements pratiqués en[/u]\n [u]France aujourd\'hui laissent-ils la liberté de penser[/u] par Philippe Raynaud (professeur à Paris 2 en Sciences Politiques).\n - jeudi 19 décembre à 10:30 : [u]La menace terroriste[/u] par Jean-Louis Bruguière (1er Vice-président au Tribunal de Grande Instance de Paris).\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (14,9,4,9,'SABIX : Concert classique','À l\'occasion de la parution du bulletin n°32 consacré à l\'X et à la musique, l\'École, la SABIX et Musicalix animé par Patrice Holiner (directeur musical de l\'École) vous invitent au concert exceptionnel à Palaiseau en amphithéâtre Poincaré, mercredi 9 janvier à 20:30.\r\n\r\nLes oeuvres interprétées s\'étendront du romantisme à nos jours. Jonathan Gilad (2001), pianiste concertiste international se produira à cette occasion, et la soirée se poursuivra autour d\'une collation ([i]marché de Noël[/i]) organisé par le binet Germanix.','http://www.bibliotheque.polytechnique.fr/'); -INSERT INTO `newsletter_art` VALUES (15,1,1,1,'Ton alias @melix.net, @melix.org','Pour plus de convivialité dans l\'utilisation de tes mails, tu peux choisir une adresse e-mail discrète et personnalisée. Cette nouvelle adresse de messagerie peut par exemple correspondre à ton surnom.\r\n','https://www.polytechnique.org/alias.php'); -INSERT INTO `newsletter_art` VALUES (15,2,1,2,'[b]Serveur de forums de discussion (NNTP)[b]','Ce serveur te permet désormais de consulter les forums de discussion de Polytechnique.org avec ton lecteur de forums favori (Outlook Express, Netscape, ...). Par ailleurs, de plus en plus de forums promo sont disponibles ! Le forum de ta promo a peut-être déjà été créé, il te permettra de retrouver tes camarades ! (l\'interface web reste quant à elle disponible)\r\n','https://www.polytechnique.org/NntpPolytechnique.php'); -INSERT INTO `newsletter_art` VALUES (15,3,1,3,'Nouvelle gestion des formations complémentaires','Pour plus de souplesse, et afin de faciliter les recherches par diplome, la gestion des formations dans les profils a été revue. Tu peux à présent saisir à la fois l\'établissement et le type de diplôme pour ton application et ton éventuelle post-application. (Les formations déjà saisies ont bien entendu été converties !)\r\n','https://www.polytechnique.org/profil.php'); -INSERT INTO `newsletter_art` VALUES (15,4,3,4,'X-Histoire','[u]De la fin de l\'Histoire au gouvernement de la Raison[/u] : les sources du libéralisme français à travers l\'oeuvre de François Guizot (historien et homme d\'état du XIXème siècle) seront présentées le mercredi 15 janvier par Lauren Theis, ancien élève de l\'ENS, agrégé et docteur en histoire, président de la Société de l\'histoire du protestantisme français.\r\n','[u]Inscriptions[/u] auprès de Jacqueline Pottier +33 142 50 65 57.'); -INSERT INTO `newsletter_art` VALUES (15,5,3,5,'X-Gaziers','Le groupe X-Gaziers se réunira le mercredi 29 janvier 2003 au cours d\'un dîner où l\'invité sera Syrota (58), président de la Commission de régulation de l\'énergie.\r\n','Demande de renseignements sur :\r\nhttps://www.polytechnique.org/listes/liste.php?Lid=218'); -INSERT INTO `newsletter_art` VALUES (15,6,4,6,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le mardi 7 janvier de 8:00 à 9:30 à la Maison des X avec François Roussely, président d\'EDF.\r\nJean-Pierre Raffarin, Premier Ministre, sera quant à lui présent le lundi 3 février aux mêmes horaires.\r\n','[u]Renseignements[/u] : +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (15,7,4,7,'SABIX : Concert classique','À l\'occasion de la parution du bulletin n°32 consacré à l\'X et à la musique, l\'École, la SABIX et Musicalix animé par Patrice Holiner (directeur musical de l\'École) vous invitent au concert exceptionnel à Palaiseau en amphithéâtre Poincaré, jeudi 9 janvier à 20:30.\r\n\r\nLes oeuvres interprétées s\'étendront du romantisme à nos jours.\r\nJonathan Gilad (2001), pianiste concertiste international se produira à cette occasion, et la soirée se poursuivra autour d\'une collation ([i]marché de Noël[/i]) organisé par le binet Germanix.\r\n','Programme détaillé : http://www.bibliotheque.polytechnique.fr/'); -INSERT INTO `newsletter_art` VALUES (15,8,4,8,'Magnan de promo 38','Le prochain magnan aura lieu jeudi 16 janvier 2003 (épouses et veuves conviées) au Restaurant administratif de la Montagne-Sainte-Geneviève à 12:30. Ce sera l\'occasion de tenir l\'Assemblée générale annuelle de l\'Association.\r\n','[u]Inscriptions[/u] : 10 janvier au plus tard auprès d\'Alain Guillemin +33 147 51 69 73 .'); -INSERT INTO `newsletter_art` VALUES (15,9,4,9,'6ème Trophée Voiles X-HEC','\nLe Trophée Voiles X-HEC est un week-end de régates amicales rassemblant élèves et anciens de l\'X et d\'HEC dans des conditions exceptionnelles : le week-end est fourni [i]clef en main[/i]. Tu t\'inscris et l\'équipe s\'occupe du reste : tu seras alors logé, nourri et placé sur un équipage.\nCette année encore, la régate sera homologuée par la FFV et le comité de course sera dirigé par Roland Galliot.\nLe 6ème Trophée aura lieu cette année les 17-18 mai 2003 à Bénodet.\n\nSite web : http://www.xhec.org/\nContact : Silvain Abadie (X2000) silvain.abadie@m4x.org\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (16,1,1,1,'Un forum pour chaque groupe X','Il est désormais possible de créer des forums destinés aux groupes X. Accessibles à tous les inscrits, ces forums permettent d\'élargir les débats au-delà du strict cadre des inscrits aux listes de diffusion des groupes X. À ce titre, la création de forums peut permettre aux non-membres des listes de diffusion d\'un groupe X de découvrir le groupe avant de s\'inscrire.','forums@m4x.org?subject=creation\r\nhttps://www.polytechnique.org/news/'); -INSERT INTO `newsletter_art` VALUES (16,2,1,2,'Message d\'accueil pour les listes','Lors de l\'abonnement à une liste de diffusion, le(la) nouvel(le) abonné(e) reçoit un message de bienvenue. Ce message peut désormais être personnalisé par les gestionnaires de la liste. Pour le modifier, il leur suffit de se rendre sur la page d\'administration de la liste.','https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (16,3,3,3,'Groupe X-eConfiance','La eConfiance sera le dossier de fond du prochain numéro de [u]La Jaune et la Rouge[/u]. Parmi les signatures : Francis Mer (59), Michel Pébereau (61), Jean-Paul Bailly (65), Henri Serres (69), Jean-Séverin Lair (87), Fabrice Mattatia (90), Philippe Chauve (89), Julien Billot (88), et Antoine Hermite (93). Pour s\'inscrire au Groupe X-eConfiance et être informés des activités en 2003 : https://www.polytechnique.org/listes/ .\r\n','Renseignements : Matthieu Bergot (89) matthieu.bergot@m4x.org'); -INSERT INTO `newsletter_art` VALUES (16,4,3,4,'Groupe X-Aviation','Le jeudi 27 mars à 19:30 aura lieu à la Maison des X un dîner-débat sur le thème [i]Le transport spatial des prochaines années[/i]. Le débat sera animé par Jean-Marie Luton (61), Président-Directeur Général d\'Arianespace.\r\nContribution aux frais de 43EUR par personne (un reçu vous sera remis sur place). Merci de me confirmer votre présence par mail et de m\'adresser un chèque à l\'ordre de [u]Choquel X-Aviation[/u] par courrier postal .','jean-paul.choquel@m4x.org?subject=diner-debat\r\n[u]Adresse postale[/u] : Jean-Paul Choquel, 4, villa de Saxe 75007 Paris\r\n[u]Maison des Polytechniciens[/u] : http://www.maisondesx.com/'); -INSERT INTO `newsletter_art` VALUES (16,5,3,5,'Groupe X-Afrique','Le groupe X-Afrique est né le 15 janvier du rapprochement entre les groupes X-Afrique Subsaharienne et X-Sud créés séparément. Les objectifs sont entre autres de créer un lieu d\'échange et d\'entraide entre tous les X connaissant ou souhaitant découvrir le continent, favoriser la coopération Sud-Sud et Nord-Sud. La première réunion portera sur les nouvelles technologies de l\'information en Afrique et aura lieu fin mars.\r\n','[u]Site[/u] : http://x-afrique.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (16,6,4,6,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le lundi 3 février de 8:00 à 9:30 à la Maison des X avec Jean-Pierre Raffarin, Premier Ministre.\r\nDalil Boubakeur, recteur de l\'Institut Musulman de Paris, sera pour sa part présent le lundi 3 mars.\r\n','[u]Renseignements[/u] : +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (16,7,4,7,'Soirée Agro par le Styx99','Après les deux dernières soirées à l\'ENGREF de novembre et décembre, le Styx99 s\'associe cette fois-ci à l\'École d\'agronomie de Paris (AGRO) pour vous proposer sa prochaine soirée. Vous êtes donc conviés jeudi 6 février dès 21 heures dans les locaux de l\'ENGREF. La soirée est [b]OPEN-BAR[/b], et l\'entrée (7EUR) se fera uniquement par pré-ventes, alors contactez-nous vite !','[u]ENGREF[/u] : 19, avenue du Maine, Paris 15e (à 100m de Montparnasse)\r\n[u]Contact[/u] : preventes@styx.polytechnique.org?subject=Agro\r\n[u]Site[/u] : http://www.styx99.fr.st/'); -INSERT INTO `newsletter_art` VALUES (16,8,4,8,'Les 24 heures de natation 2003','Plus de 112km en 24h ! C\'est ce défi que les élèves de la section natation se proposent de relever, au cours d\'un relais par 50m, du jeudi 6 février au lendemain, à la piscine de l\'École.\r\n','http://www.polytechnique.fr/eleves/binets/natation/presentation.html'); -INSERT INTO `newsletter_art` VALUES (16,9,4,9,'Promo 55','Nos déjeuners mensuels au Club X (épouses bienvenues) auront lieu pour l\'année 2003 les jeudis 6 février, 6 mars, 3 avril, 8 mai, 5 juin, 3 juillet, 4 septembre, 2 octobre, 6 novembre et 4 décembre. Venez nombreux !\r\n','[u]Renseignements[/u] : Club X, +33 149 54 74 54'); -INSERT INTO `newsletter_art` VALUES (16,10,4,10,'AX : candidature au Conseil d\'administration','Dans le cadre du renouvellement de 9 membres du conseil de l\'AX en juin 2003, l\'AX fait un appel à candidature pour deux postes de sortants non rééligibles : \"Le conseil souhaite que des camarades des jeunes promotions s\'intéressent à la vie de l\'AX et fassent acte de candidature. Il adresse la même requête à nos camarades femmes de toutes promotions : 5 seulement siègent au conseil.\"\r\nLes candidat(e)s intéressé(e)s doivent adresser par courrier postal à l\'AX leur candidature motivée le 15 février au plus tard.\r\n','[u]Adresse postale[/u] : Secrétariat de l\'AX 5, rue Descartes 75005 Paris\r\nhttp://ax.polytechnique.org/index.php?page=asso_conseil.html'); -INSERT INTO `newsletter_art` VALUES (17,1,1,1,'Vie de l\'École','Le procès-verbal du Conseil d\'administration de l\'AX du 8 octobre a été publié dans la Jaune et la Rouge de février. Concernant les résultats du passage de deuxième en troisième année de la promotion 2000, sur 445 élèves, une centaine n\'ont pas obtenu leur passage direct et ont dû septembriser :\r\n - 86 ont été repêchés ou admis à passer en 3A sous conditions,\r\n - 12 ont été admis à redoubler,\r\n - 2 ont été exclus.\r\nParmi les cas qualifiés de graves, certains n\'ont manifestement pas travaillé, mais d\'autres ont été mal orientés (en particulier des élèves étrangers mal orientés dans leurs choix de matières principales à option par leur gouvernement).',''); -INSERT INTO `newsletter_art` VALUES (17,2,1,2,'Bal de l\'X','\nL\'AX ne sera pas en mesure d\'organiser un bal en 2003.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (17,3,3,3,'X & Ponts Londres','Le jeudi 13 Mars à 20:00 aura lieu à la Mission Économique de l\'ambassade de France à Londres un exposé/débat sur le thème :\r\n[i]La Livre Sterling entrera-t-elle dans l\'Euro ?[/i]. Les intervenants seront deux spécialistes anglais de l\'Euro, Graham Bishop et John Turner.','[u]Informations[/u] : info@xponts-londres.polytechnique.org\r\n[u]Ambassade de France à Londres[/u] : http://www.dree.org/gb'); -INSERT INTO `newsletter_art` VALUES (17,4,3,4,'X-Internet','Le groupe se réunira le mercredi 26 mars à 19h aux Mines de Paris, avec comme fil conducteur les outils destinés aux groupes X et aux promotions. Nous accueillerons notamment Dujardin (65), président des Y, Descroix (58) ancien président des Y, Herz (79) président du groupe X-Israel.\r\n','http://x-internet.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (17,5,3,5,'Groupe X-Aviation','Le jeudi 27 mars à 19:30 aura lieu à la Maison des X un dîner-débat sur le thème [i]Le transport spatial des prochaines années[/i]. Le débat sera animé par Jean-Marie Luton (61), Président-Directeur Général d\'Arianespace.\r\nContribution aux frais de 43EUR par personne (un reçu vous sera remis sur place). Merci de me confirmer votre présence par mail et de m\'adresser un chèque à l\'ordre de [u]Choquel X-Aviation[/u] par courrier postal .\r\n','jean-paul.choquel@m4x.org?subject=diner-debat\r\n[u]Adresse postale[/u] : Jean-Paul Choquel, 4, villa de Saxe 75007 Paris\r\n[u]Maison des Polytechniciens[/u] : http://www.maisondesx.com/'); -INSERT INTO `newsletter_art` VALUES (17,6,4,6,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu le lundi 3 mars de 8:00 à 9:30 à la Maison des X avec Dalil Boubakeur, recteur de l\'Institut Musulman de Paris. Howard Leach, ambassadeur des États-Unis à Paris, sera pour sa part présent le mardi 15 avril.\r\n','[u]Renseignements[/u] : +33 147 20 62 81.'); -INSERT INTO `newsletter_art` VALUES (17,7,4,7,'Promo 38','Le prochain magnan de promo aura lieu jeudi 20 mars (épouses et veuves conviées) au Restaurant administratif de la Montagne Sainte-Geneviève (25, rue de la Montagne Ste-Geneviève, Paris V) à 12:30.\r\n','[u]Inscription (au plus tard le 14 mars)[/u]\r\nGuillemin +33 147 51 69 73'); -INSERT INTO `newsletter_art` VALUES (17,8,4,8,'X-Vinicole','Le 13eme Salon des vignerons polytechniciens se déroulera à la Maison des X dimanche 23 mars, de 11 à 19 heures.\r\n','[u]Informations[/u] : +33 149 54 74 74\r\n[u]Maison des X[/u] : http://www.maisondesx.com/'); -INSERT INTO `newsletter_art` VALUES (17,9,4,9,'Musique classique','L\'Orchestre Romantique Européen, sous la direction de Lionel Stoléru (56), se produira mardi 25 mars à 20:30, Salle Gaveau, sur le thème:\r\n[i]La nature romantique[/i] :\r\n - Lamartine : [u]Le Vallon[/u]\r\n - Schubert et A.Thomas : [u]La truite, le tilleul, Mignon[/u]\r\n (soprano Marie Devellereau)\r\n - Massenet : [u]Scènes pittoresques[/u]\r\n - Beethoven : [u]Symphonie pastorale[/u]\r\n','[u]Réservations Spécial X[/u] : +33 147 20 62 81'); -INSERT INTO `newsletter_art` VALUES (17,10,4,10,'Garden-Party pour les jeunes Anciens','Le 17 mai aura lieu un nouvel événement parallèlement au Jumping : la Garden-Party de l\'X. C\'est une journée de détente et d\'échanges organisée par les élèves et destinée aux Anciens des dix dernières promos (depuis 91) et leur famille.\r\nElle comportera de nombreuses activités sportives et ludiques, et sera l\'occasion pour les anciens de revoir des camarades de promo et d\'échanger leurs expériences professionnelles de jeunes cadres avec les élèves en cours de scolarité, avides de conseils. L\'événement est vivement soutenu par l\'AX.\r\n','[u]Pour plus d\'infos[/u] : http://jumping.polytechnique.org/\r\n[u]Inscriptions[/u] : nicolas.de-lauriston@m4x.org'); -INSERT INTO `newsletter_art` VALUES (18,1,1,1,'Géo-localisation','L\'équipe de polytechnique.org travaille actuellement avec les Gadz\'arts et d\'autres écoles dans le cadre de l\'AAEGE sur un projet de géo-localisation commun. L\'objectif à terme est de pouvoir effectuer une recherche dans notre annuaire sur des critères géographiques fins, cartes à l\'appui !\r\nIl est d\'ores et déjà possible, pour chacune de tes adresses, de préciser à quel pays, région, ou département ton adresse correspond.\r\n','https://www.polytechnique.org/profil.php'); -INSERT INTO `newsletter_art` VALUES (18,2,1,2,'Annonces sur la page d\'accueil','La page toute vide qui s\'affichait lorsque tu venais de te connecter a aujourd\'hui trouvé sa vocation : elle permet désormais de poster des annonces d\'événements, des informations, qui peuvent être destinées à tous les camarades inscrits au site, ou bien seulement à certaines promotions.\r\nUn lien en bas de la page te permet d\'insérer ta propre annonce !\r\n','https://www.polytechnique.org/login.php'); -INSERT INTO `newsletter_art` VALUES (18,3,1,3,'Micro-paiement','Polytechnique.org a installé sur le site un système de micropaiement en ligne, avec le soutien important de Jean-Paul Figer (62), président du groupe X-Informatique, que nous remercions vivement.\r\nTout kessier, ou toute association polytechnicienne qui le désire peut dès à présent nous contacter pour profiter de ce système, pour organiser des repas de promotions, des séminaires d\'association, ou simplifier la cotisation à un groupe X.\r\n','Contact : info_m-paiement@m4x.org?subject=micro-paiement'); -INSERT INTO `newsletter_art` VALUES (18,4,1,4,'Dons à polytechnique.org','La mise en place du micro-paiement en ligne présenté ci-dessus permet également aux personnes qui le souhaitent de faire un don à l\'association Polytechnique.org.\r\nNous avons des frais fixes annuels peu élevés (principalement le renouvellement des noms de domaines et la mise à niveau de nos serveurs). Toutefois, nous avons des projets un peu plus coûteux, comme l\'achat d\'une machine supplémentaire qui pourrait faire office de filtre anti-virus pour tous les emails que vous recevez par l\'intermédiaire de polytechnique.org.\r\nTu peux si tu le souhaites nous aider à réaliser ces projets...\r\n','https://www.polytechnique.org/dons.php'); -INSERT INTO `newsletter_art` VALUES (18,5,3,5,'GLAX','Le groupement lyonnais des anciens élèves de l\'École polytechnique (dont les X Stéphanois) propose samedi 12 avril la soirée du repas dansant du GLAX.\r\n','[u]Contact[/u] : Philippe Stuyven (77) au +33 478 399 551'); -INSERT INTO `newsletter_art` VALUES (18,6,4,6,'Musicalix : Concours de piano','Mercredi 2 avril 2003, à 20:30, Musicalix présentera, en amphithéâtre Poincaré, la finale avec orchestre du concours de piano de l\'École polytechnique, avec trois finalistes dans les concerti de Beethoven. Un vote du public déterminera le gagnant. La finale sera suivie d\'une fantaisie-chorale pour piano, choeur et orchestre de Beethoven (au piano : Jonathan Gilad, X2001). L\'entrée est gratuite.','Contact : musicalix@poly.polytechnique.fr?subject=concours\r\nRenseignements : http://musicalix.polytechnique.org/concours_piano/'); -INSERT INTO `newsletter_art` VALUES (18,7,4,7,'Challenge international d\'escrime de l\'X','Les 10 et 11 avril 2003 se tiendra le 11ème Challenge international d\'escrime de l\'École polytechnique, une compétition qui rassemble 150 tireurs venus d\'écoles et d\'universités françaises et étrangères (allemandes, américaines, hongroises, suisses, etc.).\r\nLes éliminatoires se dérouleront toute la journée du jeudi 10 avril dans les gymnases, et les finales auront lieu vendredi 11 avril en début d\'après-midi dans le Grand Hall. L\'entrée sera libre les deux journées.','Informations : http://www.polytechnique.fr/eleves/binets/escrime/\r\nContact : matthieu.delaby@m4x.org?subject=escrime'); -INSERT INTO `newsletter_art` VALUES (18,8,4,8,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu mardi 15 avril de 8:00 à 9:30 à la Maison des X avec Howard Leach, ambassadeur des États-Unis à Paris, qui s\'exprimera en anglais.\r\nRené Carron, président du Crédit Agricole, sera pour sa part présent mardi 13 mai.\r\n','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (18,9,4,9,'Soirée Promo 85','À la demande des participants de la session 2000 : Soirée Promo 85 avec conjoint(e) à la Maison des X vendredi 25 avril 2003, à 19:00 sur le thème [u]BAC+20[/u] . Par avance merci de :\r\n 1 Réserver d\'ores et déjà cette date ;\r\n 2 Faire circuler l\'information et faire converger vos chèques d\'inscription (40 EUR/pers.) à l\'ordre de [i]PROMO X85[/i], à l\'adresse postale ci-dessous.\r\n 3 Et surtout d\'inciter vos proches à s\'inscrire au site polytechnique.org, pour recevoir régulièrement toutes les précisions.\r\nA très bientôt donc,\r\n[i]La Kès 85[/i]\r\n','francois.flusson@m4x.org\r\nandre.levisse@m4x.org\r\nx85@jwa.fr\r\n[u]Adresse[/u] : JWA / F Girault - X85, 9, rue Beaujon 75008 Paris'); -INSERT INTO `newsletter_art` VALUES (18,10,4,10,'Mi-centenaire','Les retardataires de la 53 peuvent encore s\'inscrire pour le voyage en Auvergne du 1er au 4 mars. Détails et inscriptions à [b]Sites et Valeurs[/b].','[u]Téléphone[/u] : +33 148 04 03 57'); -INSERT INTO `newsletter_art` VALUES (18,11,4,11,'Concert romantique','L\'Orchestre Romantique Européen, sous la direction de Lionel Stoléru (56), se produira mardi 6 mai à 20:30, Salle Gaveau, sur le thème :\r\n[i]Le romantisme slave[/i] :\r\n - V.Hugo : [u]Mazeppa[/u]\r\n - Verdi : [u]Choeur du Trouvère[/u]\r\n - Smetana : [u]Chant tchèque pour choeur et orchestre[/u]\r\n - Chopin : [u]Cracovienne pour piano et orchestre[/u]\r\n - Liszt : [u]Rhapsodie n°9 pour piano[/u]\r\n - Dvorak : [u]Symphonie n°7[/u]\r\nPiano : A.Golovin\r\n','[u]Réservations spécial X[/u] : +33 147 206 281 (places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (18,12,4,12,'Garden-Party pour les jeunes Anciens','Anciens des promos 91 à 99, il n\'est pas trop tard pour vous inscrire à la Garden-Party qui aura lieu samedi 17 mai à l\'X. Il suffit pour cela de remplir un formulaire en ligne sur le site avant le 22 avril. De nouvelles activités sportives peuvent s\'organiser en fonction de vos demandes, n\'hésitez pas à mentionner vos souhaits sur le formulaire. Consultez régulièrement le site pour voir les mises à jour.\r\nSuite à de nombreuses demandes, les anciens de promos précédentes qui souhaitent participer à cette journée peuvent envoyer un mail.\r\n','Contact : nicolas.de-lauriston@m4x.org\r\nSite web : http://jumping.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (19,1,1,1,'Offres d\'emploi','Suite a la disparition du site de l\'Aval a l\'X, Polytechnique.org lance un service expérimental d\'offres d\'emploi et de stages : les employeurs peuvent désormais poster une offre sur le forum emploi xorg.pa.emploi depuis la partie publique du site.\r\n\r\nMerci de faire connaître cette possibilité auprès des services recruteurs de ton entreprise. Suivant son succès, nous comptons développer d\'autres outils pour l\'emploi avec offres, moteur de recherche, conseils, interviews d\'X en poste, ou toute suggestion que tu nous feras (l\'équipe remercie chaleureusement tous ceux qui lui ont écrit pour suggérer de développer la partie emploi).','https://www.polytechnique.org/emploi_public.php'); -INSERT INTO `newsletter_art` VALUES (19,2,2,2,'[b]Tous à l\'AG de l\'AX... le 18 juin ![b]','Nous vous signalons un événement particulièrement inhabituel pour une AG de l\'AX : cette année, après les formalités statutaires, un forum animé par Jean-Claude Pelissolo (58), membre de X-Internet et président de X-Consult, permettra à la salle de débattre sur le thème : [i]Réseaux polytechniciens, réseau Internet : même combat ?[/i].\r\nIl est hautement souhaitable que tous ceux et toutes celles, jeunes ou moins jeunes, qui participent à Polytechnique.org ou l\'utilisent, soient présents pour apporter leur témoignage et leurs idées.','À 17:00 sur l\'ancien site de l\'X, amphi Gay-Lussac\r\n25, rue de la Montagne Sainte Geneviève 75 005 Paris'); -INSERT INTO `newsletter_art` VALUES (19,3,2,3,'Fondation de l\'École Polytechnique','Polytechnicien, Docteur ou Doctorant, vous avez moins de 35 ans et vous avez un projet de création d\'entreprise, seul ou en partenariat.\r\nNous lançons la quatrième édition de notre Concours FX-CREATEUR 2003 destiné à récompenser un projet de création d\'entreprise. Le prix sera attribué en décembre 2003 ; les dossiers devront parvenir à la\'Fondation avant le 31 octobre 2003.\r\n','http://fondation.polytechnique.org/\r\nfondation@polytechnique.org?subject=FX_CREATEUR_2003\r\n[u]Téléphone[/u] : +33 153 85 40 10'); -INSERT INTO `newsletter_art` VALUES (19,4,3,4,'Rallye X-ECP 2003','Une journée de détente dimanche 18 mai en Île-de-France, avec des énigmes défiant intuition, astuce, culture et sens de l\'observation. Au cours du traditionnel dîner, nous donnerons les réponses complètes aux énigmes et problèmes de la journée, puis nous procéderons à la lecture du classement, à la remise des trophées et distribuerons les lots récompensant l\'ensemble des participants. Constituez dès maintenant votre équipe pour venir vous mesurer à vos camarades (et aux Centraliens !), et inscrivez-vous au GPX.','[u]Téléphone[/u] : +33 145 48 52 04\r\nhttp://gpx.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (19,5,3,5,'X-Europe : conférence sur l\'acier et l\'Europe','ARCELOR, leader mondial de l\'acier, se retrouve aujourd\'hui au coeur des enjeux européens : négociations avec Bruxelles, conquête de nouveaux marchés dans les pays candidats, conflit transatlantique sur l\'acier...\r\nGuy Dollé, Président de la DG du grand groupe industriel, viendra à l\'X le 21 mai à 18:30 pour témoigner de son expérience quotidienne de l\'Europe, et parlera de sa vision du futur d\'une Europe qui commença il y a 50 ans par le charbon et l\'acier.','Inscriptions : Aurelien.Tignol@m4x.org'); -INSERT INTO `newsletter_art` VALUES (19,6,3,6,'X-Histoire : sur les traces des missions Flatters','En 1879, une mission gouvernementale commandée par le colonel Flatters étudie les tracés possibles pour construire une voie ferrée reliant l\'Algérie au Soudan. Marcel Cassou (61) a tenté, lors de plusieurs voyages récents, de reconstituer l\'itinéraire de la mission, et de comprendre les raisons de l\'échec sanglant de celle-ci. Il livrera mercredi 21 mai les conclusions de ses travaux.','[u]Informations[/u] : Jacqueline Pottier +33 142 50 65 57'); -INSERT INTO `newsletter_art` VALUES (19,7,4,7,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel Stoléru (56), se produira mardi 6 mai à 20:30, Salle Gaveau, sur le thème :\r\n[i]Le romantisme slave[/i] :\r\n - V.Hugo : [u]Mazeppa[/u]\r\n - Verdi : [u]Choeur du Trouvère[/u]\r\n - Smetana : [u]Chant tchèque pour choeur et orchestre[/u]\r\n - Chopin : [u]Cracovienne pour piano et orchestre[/u]\r\n - Liszt : [u]Rhapsodie n°9 pour piano[/u]\r\n - Dvorak : [u]Symphonie n°7[/u]\r\nPiano : A.Golovin\r\n\r\nEt aussi mardi 17 juin à 20:30, sur le thème [i]L\'épopée romantique[/i] :\r\n - Goethe : _Le roi des aulnes_\r\n - Wagner : _La chevauchée des Walkyries_\r\n - Tchaikowsky : _Concerto n°1 pour piano_\r\n (avec Roustem Saitkoulov)\r\n - Borodine : _Symphonie épique_','[u]Réservations spécial X[/u] : +33 147 206 281 (places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (19,8,4,8,'Drive In de l\'X','Les mardi 6 et mercredi 7 mai, le Drive-In aura lieu sur le campus de l\'École. Ne ratez pas cette occasion de revivre l\'atmosphère de l\'Amérique des années 50. Au programme :\r\n - mardi : concert du groupe [i]Alpha Jet[/i]\r\n projection de [i]Minority Report[/i]\r\n - mercredi : karting et défilé de voitures de collection\r\n projection de [i]Astérix & Obélix: Mission Cléopâtre[/i]\r\nVenez nombreux !','Renseignements : olivier.jonglez@m4x.org'); -INSERT INTO `newsletter_art` VALUES (19,9,4,9,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu mardi 13 mai de 8:00 à 9:30 à la Maison des X avec René Carron, président du Crédit Agricole. Patrick Poivre d\'Arvor sera pour sa part présent mardi 10 juin.','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (19,10,4,10,'Rassemblement d\'Anciens : la garden party le 17 mai','La Garden, c\'est dans 15 jours (déjà) ! Vous etes nombreux à être déjà inscrits (comme en témoigne la liste des inscrits disponible sur le site), mais il est encore possible de s\'inscrire en remplissant le formulaire en ligne. Les retardataires peuvent malgré tout venir même sans s\'être inscrits au préalable, notre seul désir étant la réussite de cet événement. Apportez tous une tenue sportive avec vous !','Contact : nicolas.de-lauriston@m4x.org?subject=garden-party\r\nSite web : http://jumping.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (19,11,4,11,'Point Gamma','Le Point Gamma a lieu samedi 24 mai 2003. Au programme :\r\n - un concert de Sinsemilia (avec Orchestr\'Anonyme en première partie),\r\n - une scène de rock indé,\r\n - une comédie musicale des élèves d\'HEC,\r\n - une troupe de danse modern\'jazz,\r\n - et les animations habituelles : saut à l\'élastique, tyrolienne, bars-restos montés par les élèves de la 2001, impro, avant-première de ciné...\r\n\r\nCette année encore, le Point Gam promet d\'être énoooOÔOooorme!','Contact : veronique.juramy@m4x.org\r\nPré-ventes (23EUR) : https://www.polytechnique.org/pg.php'); -INSERT INTO `newsletter_art` VALUES (20,1,1,1,'Sondages','Un outil de sondage destiné aux associations polytechniciennes vient d\'être mis en place sur Polytechnique.org. Cet outil permet de sonder en ligne et de manière anonyme, sur un sujet donné, l\'ensemble des camarades désignés par le sondeur. Les résultats du sondage sont consultables par son créateur en temps réel.','Il est possible de créer son sondage à l\'adresse : https://www.polytechnique.org/sondage/accueil.php'); -INSERT INTO `newsletter_art` VALUES (20,2,2,2,'[b]Tous à l\'AG de l\'AX... le 18 juin ![b]','L\'AX organise mercredi 18 juin, à l\'occasion de son Assemblée Générale, un débat animé par notre camarade Jean-Claude Pelissolo (58) sur le thème \"Réseaux polytechniciens, réseau Internet : même combat ?\".\r\nVenez nombreux pour exprimer vos idées sur les projets de notre communauté, à l\'évidence essentiels pour l\'efficacité de nos réseaux tant sur le plan professionnel que sur celui de la solidarité polytechnicienne.','À 17:00 sur l\'ancien site de l\'X, amphi Gay-Lussac\r\n25, rue de la Montagne Sainte Geneviève 75 005 Paris'); -INSERT INTO `newsletter_art` VALUES (20,3,2,3,'Hymne de l\'École polytechnique','L\'hymne de l\'École polytechnique a été choisi le 26 janvier 2003 sur le site de l\'École.','http://musicalix.polytechnique.org/hymne de l\'X/hymne.html'); -INSERT INTO `newsletter_art` VALUES (20,4,3,4,'X-Internet : rencontre reportée au 18 juin','Étant donnée l\'importance du débat de mercredi 18 juin organisé à l\'occasion de l\'AG de l\'AX et animé par Jean-Claude Pelissolo (58), membre fondateur de notre groupe, et dont la thématique rejoint très étroitement la nôtre, nous annulons notre réunion prévue le 12 juin et nous vous invitons à participer nombreux le 18 juin.\r\n \r\nPour ceux qui ne pourraient se déplacer physiquement (notamment nos camarades en province ou à l\'étranger), n\'hésitez pas à nous transmettre vos questions ou propositions afin que nous soyons en mesure de nous faire vos portes-paroles...','jean-michel.yolin@m4x.org\r\nbertrand.de-singly@m4x.org'); -INSERT INTO `newsletter_art` VALUES (20,5,3,5,'Soirée X-eConfiance + X-Informatique','Les groupes X-eConfiance et X-Informatique te proposent deux événements mercredi 25 juin 2003 à la Maison des X, dès 18:45 :\r\n \r\n[u]Cocktail-Conférence du groupe X-eConfiance[/u]\r\n18:45, début de la conférence à 19:00 précises, suivie d\'un cocktail amical de 20:00 à 21:00 sur le thème \"Ni Big Brother, ni Ben Laden : comment construire une Administration électronique de confiance ?\" avec Jacques SAURET, Directeur de l\'Agence pour le Développement de l\'Administration Électronique.\r\n \r\n[u]Dîner-Débat du groupe X-Informatique[/u]\r\n19h45, début du dîner-débat à 20:15 précises sur le thème \"La déclaration des revenus en ligne : un exemple réussi de transition vers les services en ligne au citoyen\" avec Marc-Henri DESPORTES, directeur du programme Copernic, direction générale des Impôts et Jean-Marie LAPEYRE, directeur technique du programme Copernic, direction générale des Impôts.\r\n \r\n \r\nLes horaires des deux événements ont été aménagés pour permettre à ceux qui le souhaitent de participer à l\'ensemble du programme. Le cocktail-conférence du groupe X- eConfiance est réservé aux Polytechniciens.\r\n \r\n[i]Cocktail Conférence X-eConfiance[/i]\r\n 18:45 (participation : 15EUR/personne)\r\n http://www.cyberix.org/econfiance25062003.htm\r\n[i]Dîner Débat X-Informatique[/i]\r\n 19h45 (participation : 43EUR/personne)\r\n http://www.cyberix.org/xinfo25062003.asp\r\n[i]Maison des X[/i] http://www.maisondesx.com/','Amicalement,\r\nMatthieu Bergot (89), Jean-Paul Figer (62)'); -INSERT INTO `newsletter_art` VALUES (20,6,4,6,'Soirée X-Mines à l\'Hôtel Intercontinental','Vendredi 6 juin, l\'Hôtel Intercontinental accueille la soirée commune X-Mines dans ses salons.\r\nElle débutera à 21:00 précises par un concert exceptionnel de Jonathan Gilad (2001), pianiste concertiste, suivi du groupe de jazz Food. Tu pourras ensuite danser le rock et la valse toute la soirée. Attention, les places sont en nombre restreint.','Plus d\'infos auprès de la Kès kes@polytechnique.org ou +33 169 33 40 50 ou http://kes.polytechnique.org/\r\nPréventes : 20EUR [i] Sur place : 25EUR'); -INSERT INTO `newsletter_art` VALUES (20,7,4,7,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu mardi 10 juin de 8:00 à 9:30 à la Maison des X avec Patrick Poivre d\'Arvor.','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (20,8,4,8,'Trophée X-Handisport','Samedi 14 juin aura lieu la 4ème édition du Trophée X-Handisport.\r\nComme chaque année, cette journée réunira des sportifs de toute l\'Île de France dans des disciplines aussi variées que le basket, le tir à l\'arc ou encore le handbike. Toutes les personnes désirant assister à des rencontres sportives de qualité sont bien entendu conviées à assister à cette grande fête du sport !','Programme : http://handisport.polytechnique.org[/i]\r\nContact : edouard.boujo@m4x.org?subject=Handisport'); -INSERT INTO `newsletter_art` VALUES (20,9,4,9,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel Stoléru (56), se produira mardi 17 juin à 20:30, Salle Gaveau, sur le thème [i]L\'épopée romantique[/i] :\r\n - Goethe : [u]Le roi des aulnes[/u]\r\n - Wagner : [u]La chevauchée des Walkyries[/u]\r\n - Tchaikowsky : [u]Concerto n°1 pour piano[/u]\r\n (avec Roustem Saitkoulov)\r\n - Borodine : [u]Symphonie épique[/u]','[u]Réservations spécial X[/u] : +33 147 206 281 (places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (20,10,4,10,'Pique-nique promo 38','Les camarades, épouses et veuves sont cordialement invités au pique-nique annuel chez A.Guillemin à Rueil-Malmaison le jeudi 19 juin à partir de 11 heures. S\'inscrire pour le 14 juin au plus tard auprès de Guillemin.','Téléphone : +33 147 51 69 73'); -INSERT INTO `newsletter_art` VALUES (21,1,1,1,'Antivirus','\nUn système d\'antivirus a été installé sur Polytechnique.org.\nTout mail t\'arrivant par l\'une de tes adresses polytechniciennes (@polytechnique.org, @m4x.org, @melix.org et .net) est filtré par ce logiciel. Ainsi tu es mieux protégé de ces nuisances qui sévissent sur Internet. Ce service étant en test ce mois-ci, il se peut qu\'il soit coupé par courts moments pour les réglages finaux. Sa mise en place permanente et définitive est prévue d\'ici la rentrée !\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (21,2,1,2,'Évolution du nombre d\'inscrits','\nNous atteignons ces jours-ci 8800 inscrits à Polytechnique.org.\nLa proportion d\'Xettes (promotions 1972 à 2002) vivantes inscrites sur Polytechnique.org vient de dépasser les 75% !!\nLes X atteignent quant à eux 42% d\'inscrits... À méditer ! ;-)\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (21,3,2,3,'réunion \"Réseaux polytechniciens et Internet\"','\nSuite à l\'AG de l\'AX du 18 juin, avec le débat animé par Jean-Claude Pelissolo (58) sur le thème \"Réseaux polytechniciens, réseau Internet : même combat ?\", une réunion d\'information sur le même thème et ouverte à toute la communauté polytechnicienne aura lieu le 1er octobre à 18 heures dans les locaux de l\'ancienne école.\nElle permettra d\'aborder les sujets non traités lors de l\'AG faute de temps, et de répondre aux questions, suggestions et attentes de l\'assistance.\nLes détails vous seront communiqués dans une prochaine lettre mensuelle.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (21,4,4,4,'14 juillet','C\'est la promo 2001 qui défilera cette année sur les Champs Élysées. Les élèves de la promotion 2002 sont pour leur part arrivés sur le plateau le 2 mai dernier. En effet depuis la réforme X2000 les élèves arrivent en mai de la première année de l\'école et non plus en septembre de la seconde année. De septembre à mai s\'est déroulée leur période de formation humaine et militaire.\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (21,5,4,5,'Association Poincaré','Une Association (loi de 1901) a été créée sous le nom :\r\n\"Association Poincaré et la Relativité\". Elle a pour objet de célébrer dignement le centenaire du principe de relativité énoncé le 26 septembre 1904 par Poincaré à Saint Louis (Missouri). Ce nouveau principe fondamental a été un des deux piliers de la physique du XXème siècle.\r\nOn rappelera à cette occasion que Poincaré avait donné dès 1900 la formule relativiste de l\'inertie de l\'énergie : E = mc².','Renseignements concernant l\'adhésion :\r\n115, boulevard Koenig 92 200 Neuilly sur Seine FRANCE \r\nassociation.poincare.relativite@wanadoo.fr'); -INSERT INTO `newsletter_art` VALUES (22,1,1,1,'L\'antivirus se révèle très efficace','L\'antivirus installé par l\'équipe au début de l\' été bloque chaque jour de 100 à 2000 courriels infectés. Les curieux pourront bientôt consulter ces chiffres au côté des autres graphiques de la page de statistiques.\r\nPour information, le virus le plus virulent de l\'été était SoBig.F, décrit sur le site de CommentÇaMarche.','[u]les stats[/u]: https://www.polytechnique.org/stats.php\r\nhttp://www.commentcamarche.net/forum/affich-376285-Virus-Sobig-F'); -INSERT INTO `newsletter_art` VALUES (22,2,1,2,'Incite nos camarades à s\'inscrire !','Alors que nous atteignons bientôt 9000 inscrits, soit près d\'un X vivant sur deux inscrit à Polytechnique.org, nous mettons en ligne un nouveau service : lorsqu\'une recherche dans l\'annuaire affiche le nom d\'un camarade qui n\'est pas encore inscrit à Polytechnique.org, tu peux nous indiquer son adresse de courriel. Nous lui adresserons alors une proposition d\'inscription simplifiée afin qu\'il rejoigne la communauté des X sur le web !','https://www.polytechnique.org/search.php'); -INSERT INTO `newsletter_art` VALUES (22,3,2,3,'Rentrée des classes','\nLa promotion 2003, fraîchement recrutée, effectue sa première rentrée à l\'École lundi 1er septembre. Les résultats du concours sont consultables sur le site de l\'École. http://www.polytechnique.fr/concours/resultats/admis.htm\nAprès une semaine sur le plateau, les X2003 rejoindront pendant deux semaines le CIECM, avant de rejoindre leurs Écoles d\'Armes respectives :\n - Armée de Terre : Coëtquidan,\n - Armée de l\'Air : Salon-de-Provence et Dijon,\n - Marine : Brest,\n - Gendarmerie : Melun.\nhttp://www.ciecm.terre.defense.gouv.fr/\n\nToute l\'équipe de Polytechnique.org souhaite la bienvenue à nos jeunes camarades qui pourront rejoindre notre communauté des X sur le web dès qu\'ils auront été ajoutés à notre base de données, courant septembre.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (22,4,2,4,'Réunion \"Réseaux polytechniciens et Internet\"','\nSuite à l\'AG de l\'AX du 18 juin, avec le débat animé par Jean-Claude Pelissolo (58) sur le thème \"Réseaux polytechniciens, réseau Internet : même combat ?\", une réunion d\'information sur le même thème et ouverte à toute la communauté polytechnicienne aura lieu le 1er octobre à 18 heures dans les locaux de l\'ancienne école.\nElle permettra d\'aborder les sujets non traités lors de l\'AG faute de temps, et de répondre aux questions, suggestions et attentes de l\'assistance.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (22,5,4,5,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu jeudi 11 septembre de 8:00 à 9:30 à la Maison des X avec Claude Bébéar, Président du Conseil de surveillance de AXA.\r\nJean-François Mattéi, Ministre de la santé, sera pour sa part présent mardi 7 octobre.\r\n','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (23,1,1,1,'Réseaux polytechniciens, réseau Internet : même combat ?','Lors de l\'Assemblée générale de l\'AX du 18 juin 2003, un débat a été animé par Jean-Claude Pelissolo (58) sur le thème :\r\n [u]Réseaux polytechniciens, réseau Internet : même combat ?[/u]\r\nFaute de temps cependant, tous les sujets n\'ont pu être abordés, et l\'auditoire n\'a pu exprimer toutes ses idées.\r\n\r\nUne réunion d\'information sur le même thème, animée à nouveau par Pelissolo, aura par conséquent lieu le 1er octobre à 18 heures.\r\nOuverte à toute la communauté polytechnicienne, elle se déroulera dans les locaux de l\'ancienne École.\r\nL\'équipe de Polytechnique.org commencera par faire une démonstration synthétique des fonctionnalités proposées par son site web, puis l\'auditoire prendra la parole, pour des questions, commentaires, et idées.','mercredi 1er octobre, à 18:00\r\nAmphithéâtre Poincaré\r\nAncienne École polytechnique\r\n25, rue de la Montagne Sainte Geneviève\r\nParis V'); -INSERT INTO `newsletter_art` VALUES (25,10,2,6,'X-Gaziers','Le groupe X-Gaziers se réunira lundi 26 janvier 2004 au cours d\'un dîner dont l\'invité sera George Verberg, PDG de Gasunie et président de l\'Union Internationale de l\'Industrie du Gaz (UIIG).','Informations ou adhésion : http://x-gaziers.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (24,1,1,1,'Les forums font peau neuve !','Banana, la nouvelle interface web pour les forums, a vu le jour.\r\n\r\nPlus rapide que le désormais désuet WebForum, Banana apporte son lot de nouvelles fonctionnalités, bénéficiant de quelques mois de gestation. On peut citer (entre autres) la possibilité de :\r\n - marquer manuellement les forum comme lus ;\r\n - personnaliser sa signature et son nom de posteur ;\r\n - voir le contenu du message et le fil de discussion en même temps ;\r\n - accéder au message parent d\'un clic ;\r\n - (et d\'autres, la présente lettre ne suffirait pas à tout détailler).\r\n\r\nParallèlement au rajeunissement de l\'interface web des forums, la création de nombreux forums thématiques (dont les forums section et de nouveaux forums promo) achèveront de te convaincre de visiter les forums et les faire vivre un peu plus !','Les forums, c\'est ici ===> https://www.polytechnique.org/banana/'); -INSERT INTO `newsletter_art` VALUES (24,2,2,2,'Réunion \"Réseaux polytechniciens et Internet\"','Lors de l\'Assemblée générale de l\'AX du 18 juin 2003, un débat a été animé par Jean-Claude Pelissolo (58) sur le thème :\r\n [u]Réseaux polytechniciens, réseau Internet : même combat ?[/u]\r\nFaute de temps cependant, tous les sujets n\'ont pu être abordés, et l\'auditoire n\'a pu exprimer toutes ses idées.\r\n\r\nUne réunion d\'information sur le même thème, animée à nouveau par Pelissolo, aura par conséquent lieu le 1er octobre à 18 heures.\r\nOuverte à toute la communauté polytechnicienne, elle se déroulera dans les locaux de l\'ancienne École.\r\nL\'équipe de Polytechnique.org commencera par faire une démonstration synthétique des fonctionnalités proposées par son site web, puis l\'auditoire prendra la parole, pour des questions, commentaires, et idées.','mercredi 1er octobre, à 18:00\r\nAmphithéâtre Poincaré\r\nAncienne École polytechnique\r\n25, rue de la Montagne Sainte Geneviève\r\nParis V'); -INSERT INTO `newsletter_art` VALUES (24,3,4,3,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu mercredi 8 octobre de 8:00 à 9:30 à la Maison des X avec Anne-Marie Idrac, présidente de la RATP (Jean-François Mattéi, ministre de la santé, a un empêchement).\r\nJacques Nikonoff, président de ATTAC, sera pour sa part présent au PDX du vendredi 7 novembre, à l\'occasion du Forum social mondial à Saint-Denis.','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (24,4,4,4,'Cérémonie de la Flamme à l\'Arc de Triomphe','\nL\'AX ravivera la Flamme à l\'Arc de Triomphe le lundi 13 octobre à 18:30.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (24,5,4,5,'X-Résistance','Dans le cadre du cycle Humanités et Sciences Sociales (\"conférences DFHM\"), l\'amphi du 16 octobre sera ouvert à toutes les promotions. Il prendra la forme non d\'une conférence mais d\'un spectacle intitulé [u]Passé Décomposé 1940-44[/u] .\r\nIl s\'agit d\'un montage mis en scène de textes (articles de journaux, discours politiques, lettres), de films et de chansons de l\'époque. Le spectacle sera suivi d\'un échange entre les acteurs et la salle.','jeudi 16 octobre 2003 à 10:30 précises\r\nÉcole polytechnique (Palaiseau), amphi Poincaré\r\nhttp://x-resistance.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (24,6,4,6,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel Stoléru (56), se produira mardi 14 octobre à 20:30, Salle Gaveau, sur le thème [i]L\'harmonie romantique[/i] :\r\n - Baudelaire : [u]Harmonie du soir[/u]\r\n - Strauss : [u]4 lieder[/u] avec Susan Gouthro, soprano lauréate du Concours des Voix Musicales de Paris\r\n - Boieldieu : [u]concerto pour harpe et orchestre[/u] , avec le soliste S. Blassel\r\n - Schubert : [u]symphonie n°4[/u] , [i]Tragique[/i]\r\n - Schubert : [u]Ave Maria[/u] (chant et orchestre)','[u]Réservations spécial X[/u] : +33 149 530 507\r\n(places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (24,7,4,7,'Nuit de la rentrée','Jeudi 16 octobre aura lieu la première grande soirée sur l\'X de l\'année, la traditionnelle Nuit de la rentrée. 8 bars [i]gue-dins[/i] (bar ô mètre, bar champagne, ...), Disco Géante, salle rock et ambiance un peu plus douce pour souffler un peu, avant d\'essayer de gagner un voyage à Londres.','Préventes dans les Grandes Écoles : 10EUR\r\nVentes sur place : 12EUR\r\nNavettes depuis Denfert-Rochereau, Centrale et Supélec\r\n[u]Renseignements[/u] : Spectokessiers (+33 169 3333 4050)\r\nhttp://styx.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (25,1,1,1,'Nouvelle version du portail des associations','Après quelques mois de préparation, l\'équipe Polytechnique.org est heureuse d\'annoncer la sortie de la nouvelle version du site Asso, portail des sites webs polytechniciens. Ce site recense les sites relatifs à la vie associative des X, aussi bien les binets, les groupes X, que les promotions, les associations et les institutions.\r\n\r\nLa nouvelle version du site essaie de guider au mieux le visiteur dans le dédale des 87 activités présentées, dans un environnement graphique modernisé.\r\nSi tu souhaites que ton groupe soit lui aussi référencé sur Asso, il te suffit d\'envoyer un courriel à info_asso@polytechnique.org.','http://asso.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (25,2,2,2,'X-Mémorial : Cérémonie au Monument aux Morts du Boncourt','\nLe samedi 15 novembre à 10:30, l\'AX déposera une gerbe au Monument aux Morts du Boncourt, dans la cour d\'honneur.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (25,3,2,3,'Groupe X-Israël','Dans le cadre de sa collaboration avec l\'Association Technion France (le Technion de Haïfa est une École d\'application de l\'X, actuellement la seule en Israël), X-Israël s\'associe à une conférence mardi 18 novembre 2003 à 18:30 sur le thème \"Innovation et Transferts de Technologie, performances et compétences israéliennes\".\r\n','Mardi 18 novembre 2003 à 18:30\r\nRenseignements : http://x-israel.polytechnique.org/\r\nATF : http://www.technionfrance.org/\r\nTechnion de Haïfa : http://www.technion.ac.il/'); -INSERT INTO `newsletter_art` VALUES (25,4,2,4,'X-Biotech: les biotechnologies vues de l\'intérieur','Lors d\'une soirée-débat lundi 24 novembre, David Sourdive (86), Directeur Général de Cellectis, et Frédéric Revah (82), Directeur Scientifique de Cerep (deux sociétés parmi les plus renommées de la biotechnologie française), nous feront partager leur aventure passionnante et répondront à toutes les questions de ceux qui s\'intéressent de près ou de loin à cette industrie qui se développe à grande vitesse et qui attire de plus en plus de capitaux en Europe. La soirée-débat sera suivie d\'un pot.','École des Mines (60, bd St Michel à Paris) de 19:30 à 22:30\r\n[u]Participation[/u] : 10 EUR (gratuit pour les X01, X02, X03)'); -INSERT INTO `newsletter_art` VALUES (25,5,2,5,'Groupe X-Israël','À l\'occasion de son dixième anniversaire, le groupe X-Israël organise un dîner-débat en présence de S.E. M. Nissim Zvili, ambassadeur d\'Israël en France.','Jeudi 4 décembre 2003 à 20:00\r\nRenseignements : http://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (25,6,4,6,'Concert de jazz','Mercredi 5 novembre, Jean-Michel Pilc (79) au piano, accompagné de Thomas Bramerie à la contrebasse et de Mark Mondésir à la batterie, se produira à l\'École au Salon d\'Honneur lors d\'un concert gratuit.','Renseignements : adrien.peyronnel@m4x.org'); -INSERT INTO `newsletter_art` VALUES (25,7,4,7,'Petit-déjeuner polytechnicien','Le prochain PDX aura lieu vendredi 7 novembre de 8:00 à 9:30 à la Maison des X avec Jacques Nikonoff, président de ATTAC, à l\'occasion du Forum social mondial à Saint-Denis.','[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (25,8,4,8,'Conférence','La Direction de l\'École polytechnique organise des conférences politiques et culturelles destinées aux Élèves, et ouvertes aux Anciens.\r\nDans le cadre du cycle [u]Défense et relations internationales[/u] , Valéry Giscard D\'Estaing (44), ancien président de la République, sera l\'invité de la conférence sur [u]l\'Europe[/u] .','École polytechnique, amphithéâtre Poincaré\r\nmercredi 26 novembre à 11:00'); -INSERT INTO `newsletter_art` VALUES (25,9,4,9,'Forum de l\'X 2003','Le Forum de l\'École se tiendra cette année sur deux journées :\r\n - [u]mercredi 26 novembre après-midi[/u] : points-débats animés par des personnalités d\'entreprises françaises et internationales ;\r\n - [u]jeudi 27 novembre dès 09:00[/u] : stands avec les représentants de plus de 100 entreprises de divers domaines (chimie, industrie, transport, BTP, banques...), Écoles et Corps de l\'État.\r\nLe Forum se tiendra sur le site de l\'École, et l\'entrée sera libre.','[u]Renseignements[/u] : +33 169 33 4295\r\nhttp://www.xentreprises.com/'); -INSERT INTO `newsletter_art` VALUES (26,1,1,1,'Bientôt un X sur deux sera inscrit sur Polytechnique.org','Un double-événement approche : tout d\'abord celui de l\'inscription du 10 000ème Polytechnicien sur notre site communautaire, mais aussi celui du 10 025ème, qui élèvera à 50% nombre d\'X vivants inscrits à Polytechnique.org (notre communauté représente 20 050 X en vie actuellement...).\r\n\r\nNous comptons sur toi pour nous aider à accélérer le processus : si tu connais l\'adresse de courriel d\'un camarade qui n\'est pas encore inscrit, recherche-le dans l\'annuaire en ligne, puis clique sur le lien : \"clique ici si tu connais son adresse email\". Nous lui enverrons alors un courriel pour lui présenter notre site, le site de tous les X !','https://www.polytechnique.org/recherche.php'); -INSERT INTO `newsletter_art` VALUES (26,2,3,2,'Groupe X-Histoire : les Tanagras','Les Tanagras, par Anne BOUQUILLON, chargée de recherche au Laboratoire des musées de France, et Violaine JEAMMET, conservateur au département des Antiquités grecques, étrusques et romaines du Louvre.','mercredi 3 décembre.\r\nPour tout renseignements, contacter Jacqueline POTTIER :\r\nTél. : +33 142 506 557\r\nMél. : jeanpot@club-internet.fr'); -INSERT INTO `newsletter_art` VALUES (26,3,3,3,'Groupe X-Israël','À l\'occasion de son dixième anniversaire, le groupe X-Israël organise un dîner-débat en présence de S.E. M. Nissim ZVILI, ambassadeur d\'Israël en France.','Jeudi 4 décembre 2003 à 20:00\r\nhttp://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (26,4,3,4,'Tournoi triangulaire X-HEC-Centrale','Le prochain tournoi triangulaire X-HEC-Centrale de cross-country se déroulera dimanche 14 décembre 2003 à l\'École polytechnique (Palaiseau). 9:30 inscription sur place (3EUR), 10:30 départs des courses. Cinq catégories seront disponibles : \r\n - Femmes,\r\n - jeunes (20-29 ans),\r\n - seniors (30-39 ans),\r\n - anciens (40-49 ans),\r\n - vétérans (50 ans et +).\r\n\r\nNous en appelons particulièrement aux jeunes et aux seniors, dont la trop faible participation nous met souvent en position de faiblesse vis-à-vis de nos concurrents pour le titre ! Sur nos terres, nous devons récupérer le trophée perdu l\'an passé au profit d\'HEC...\r\n[u]Nota[/u] : les enfants sont toujours les bienvenus. ','Tél. : +33 140 607 588 : Dominique DESCROIX (58)\r\nMél. : dominique.descroix@polytechnique.org\r\nPré-inscription sur Internet (recommandée) :\r\nhttp://www.claywall.com/cross.html'); -INSERT INTO `newsletter_art` VALUES (26,5,3,5,'Groupe X-Gaziers','Le groupe X-Gaziers se réunira lundi 26 janvier 2004 au cours d\'un dîner dont l\'invité sera George VERBERG, PDG de Gasunie et président de l\'Union Internationale de l\'Industrie du Gaz (UIIG).','http://x-gaziers.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (26,6,4,6,'Conférence sur l\'astronomie','À l\'occasion de l\'inauguration de l\'exposition consacrée à l\'astronomie à la bibliothèque, André BRAHIC, astrophysicien, tiendra une conférence en amphithéâtre Gay-Lussac mercredi 3 décembre à 18:30 intitulée : Enfants du Soleil, de Saturne à l\'âge de l\'Univers. L\'entrée sera libre.','Renseignements : jean-marc.espinasse@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (26,7,4,7,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU (56), se produira mardi 9 décembre à 20:30, Salle Gaveau, sur le thème Le romantisme allemand :\r\n - H. Heine : [u]La Lorelei[/u]\r\n - Beethoven : [u]Ouverture de Coriolan[/u]\r\n - Brahms : [u]Concerto n°2 pour piano[/u] (D. PASCAL)\r\n - Schumann : [u]Symphonie n°1[/u] ( Le Printemps)','[u]Réservations spécial X[/u] : +33 149 530 507\r\n(places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (26,8,4,8,'La mort du JOD - X Course au Large a besoin des Anciens !','Le 7 octobre 2003, le voilier \"École polytechnique\" a été détruit par un incendie d\'origine encore floue. Pour continuer à régater à l\'X, nous cherchons à acquérir un bateau, en remplacement de celui-ci.\r\nTout soutien, toute possibilité de partenariat, nous serait d\'une très grande aide pour assurer la survie du Binet. Avec votre soutien, une solution pourra être trouvée afin de continuer à représenter l\'École dans le monde de la régate et faire découvrir notre passion aux promotions.\r\nL\'ensemble du bureau est à votre disposition pour tout renseignement.','http://xcourseaularge.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (27,1,1,1,'Voeux de l\'équipe','\nChère Camarade, cher Camarade,\n\nnous profitons de cette 27ème lettre mensuelle pour te formuler nos voeux les plus sincères de bonne santé, de réussite, mais aussi de bonheur, pour toi-même, tes proches, et tes amis. Nous espérons que 2004 sera pour toi l\'occasion de réaliser les projets qui te tiennent le plus à coeur !\nNous serons heureux, de notre côté, de te présenter de nouveaux services et des innovations, durant toute l\'année, par la présente lettre.\n\n L\'équipe Polytechnique.org\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (27,2,1,2,'Panne de notre hébergeur la semaine du 5 janvier 2004','La semaine du 5 janvier 2004, des coupures de courant répétées vont nous obliger à éteindre nos serveurs. Dès dimanche 4 au soir, nous basculerons tous nos services en ligne sur des machines de secours (chez un autre hébergeur). Cependant, lundi 5 et mercredi 7, nous serons obligés de couper le service de forums de discussion (de 9:00 à 18:00).\r\nNous te prions de nous excuser pour la gêne occasionnée et t\'assurons que nous ferons le maximum pour limiter ces coupures aux seuls forums, et pour les plages horaires les plus courtes.','https://www.polytechnique.org/coupure.php'); -INSERT INTO `newsletter_art` VALUES (27,3,3,3,'Groupe X-Israël','Le prochain dîner-débat du groupe X-Israël aura lieu en présence de Philippe RICHERT, président du Groupe d\'Amitié France-Israël du Sénat.','Mercredi 21 janvier 2004, à 20 heures.\r\nRenseignements : info@x-israel.polytechnique.org\r\nhttp://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (27,4,3,4,'Groupe X-Gaziers','Le groupe X-Gaziers se réunira au cours d\'un dîner dont l\'invité sera George VERBERG, PDG de Gasunie et président de l\'Union Internationale de l\'Industrie du Gaz (UIIG).','Lundi 26 janvier 2004\r\nhttp://x-gaziers.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (27,5,3,5,'X-Biotech : conférence-débat','Dans le cadre de son cycle de conférences 2003-2004 sur le thème [i]Pour l\'essor des biotechnologies en France[/i] , le groupe X-Biotech est heureux de vous convier à une conférence-débat par Matthieu BONNET, attaché Pharmacie et Biotechnologies au PEE de Washington, sur le thème : [u]Forces et faiblesses des biotechnologies françaises vues des États-Unis[/u].','lundi 26 janvier 2004, 19:30 à l\'École des Mines de Paris.\r\nRenseignements : http://x-biotech.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (27,6,3,6,'Déjeuner des Caissiers et Délégués de promo','\n2004 sera l\'année du bicentenaire de la création de Kès des élèves, 10 ans après celle de notre École. [u]La Jaune et la Rouge[/u] rappellera l\'événement tout au long de l\'année, par la publication de plusieurs articles sur les Kès au travers des âges.\nPour fêter cet événement exceptionnel, les Caissiers et Délégués de promotion seront conviés à un déjeuner festif samedi 20 mars, dans le Magnan de notre ancienne école, rue Descartes.\nRetenez cette date sur vos agendas !\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (27,7,4,7,'Fondation de l\'X','La Fondation a remis le prix d\'Option 2003 à Samuel MAMAN (2000) pour son travail dans le cadre du cursus X-Oxford, durant un stage effectué chez Glaxo Smith Kline au Royaume-Uni. Pour en savoir plus, le flash info du mois est consultable sur le site de la FX.','http://www.fondationx.org/'); -INSERT INTO `newsletter_art` VALUES (27,8,4,8,'Petit-déjeuners polytechnicien','Bernard STASI, président de la Commission sur la laïcité, Thierry BRETON, PDG de France Télécom, et Jean-René FOURTOU, PDG de Vivendi Universal, seront les invités des trois prochains PDX, de 8:00 à 9:30 dans les locaux de la Maison des X.','mercredi 7 janvier : Bernard STASI\r\nmardi 3 février : Thierry BRETON\r\nmardi 2 mars : Jean-René FOURTOU\r\n[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (27,9,4,9,'XMP-Entrepreneur','La prochaine réunion de l\'association présentera deux expériences entrepreneuriales :\r\n - Thomas RENAUDIN (82), créateur de la société en [i]spin-off[/i] : So Near,\r\n - Pascal DURAND-SMET (82), repreneur de la société Bihr.\r\nLe tour de salle des participants sera suivi du pot traditionnel.','lundi 19 janvier 2004 à 18:00, à la Maison des X\r\nhttp://www.xmp-entrepreneur.org/manifestations.php'); -INSERT INTO `newsletter_art` VALUES (27,10,4,10,'Promo 38','Le prochain magnan aura lieu jeudi 15 janvier 2004 (épouses et veuves conviées) au restaurant administratif de la montagne Sainte-Geneviève.\r\nCe sera l\'occasion de tenir l\'Assemblée générale annuelle de l\'Association, le présent communiqué valant convocation conformément aux statuts.','[u]Inscription[/u] (avant le 9 janvier) : GUILLEMIN (+33 147 516 973)\r\n25, rue de la montagne Sainte-Geneviève, à 12:30.'); -INSERT INTO `newsletter_art` VALUES (27,11,4,11,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU (56), se produira mardi 20 janvier 2004 à 20:30, Salle Gaveau, sur le thème [i]La rêverie romantique[/i] :\r\n - Hugo : [u]La pente de la rêverie[/u]\r\n - Schubert : [u]Chant nocturne en foret[/u] (4 cors et chorale)\r\n - Offenbach : [u]Barcarolle des Contes d\'Hoffmann[/u]\r\n - Dvorak : [u]Concerto pour violon[/u] (soliste : Gérard Poulet)\r\n - Tchaikowsky : [u]Symphonie n°2[/u] ([i]Petite Russie[/i])','[u]Réservations spécial X[/u] : +33 147 206 281\r\n(places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (27,12,4,12,'Soirée dédiée aux Xettes','Membre du Conseil de l\'AX, Nathalie Charles (84) représente celle-ci au sein de [u]Grandes Écoles au Féminin[/u], qui réunit les anciennes des principales écoles d\'ingénieur et de commerce, en vue de promouvoir la place des femmes dirigeantes en entreprise.\r\nGEF organise une soirée pour présenter son action passée et future. Si tu n\'as pas reçu le mail adressé à xettes@polytechnique.org, si tu n\'es pas encore inscrite (à la liste de diffusion et/ou à la soirée), ou si tu veux en savoir plus sur GEF, tu es invitée à visiter le site web ou contacter Nathalie.','mardi 20 janvier 2004 au Carrousel du Louvre\r\nsite web : http://www.grandesecolesaufeminin.net/\r\nnathalie.charles@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (28,1,1,1,'Filtre anti-spam permanent','L\'équipe de Polytechnique.org est heureuse de t\'annoncer la sortie de son filtre anti-spam permanent, nommé Bogofilter. Le filtre installé jusqu\'à présent, et qui marquait tes spams avec la mention \"[spam probable]\" vient d\'être désactivé.\r\nBogofilter est un [b]filtre intelligent[/b] qui, si tu le corriges quand il se trompe (comme la non-détection d\'un spam), apprendra à mieux détecter les spams. Tu peux l\'activer et comprendre comment lui dire de se corriger sur la page dédiée. Celle-ci est aussi accessible depuis la page \"Mes emails\" de la rubrique \"Personnaliser\".','https://www.polytechnique.org/antispam.php'); -INSERT INTO `newsletter_art` VALUES (28,2,1,2,'Enrichissement de l\'annuaire','Les rubriques de l\'annuaire en ligne ont été enrichies afin qu\'un inscrit puisse indiquer plus largement quelles sont ses compétences spécifiques, quelles langues il maîtrise, dans quel secteur d\'activité précis il travaille, etc.\r\nNous t\'incitons très fortement à [b]compléter ton profil[/b], en particulier les nouvelles rubriques.','https://www.polytechnique.org/profil.php'); -INSERT INTO `newsletter_art` VALUES (28,3,1,3,'Conseils professionnels','\nAfin de favoriser les contacts entre les X qui sont à la recherche d\'un conseil pour l\'orientation de leur carrière professionnelle, et les camarades qui feraient bien volontiers partager leur expérience, l\'équipe de Polytechnique.org a mis en place un base de [i]référents[/i] (ou [i]mentors[/i]) qui permet :\n - aux jeunes X qui bâtissent leur projet professionnel, et aux moins jeunes qui souhaitent se ré-orienter, de [b]rechercher[/b] un Ancien susceptible de les aider :\n https://www.polytechnique.org/referent.php\n - aux camarades qui sont prêts à faire [b]partager[/b] leurs expériences de certains domaines d\'activité, ou de la culture professionnelle de certains pays, d\'indiquer qu\'ils sont volontaires :\n https://www.polytechnique.org/profil.php?old_tab=mentor\n\nLa base de mentors est pour l\'instant peu remplie puisque cette fonctionnalité est nouvelle, mais nous espérons qu\'elle deviendra bien plus fournie suite à la présente annonce.\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (28,4,1,4,'Télé-paiements : délais raccourcis','Le service de télé-paiements mis en place en avril 2003 vient d\'être amélioré : le délai entre le paiement et le moment où le commanditaire recevra le virement bancaire est désormais de [b]deux semaines[/b] et non plus de six semaines.\r\nComme auparavant, tout ensemble peut être commanditaire : groupe X, promotion, binet, etc.','https://www.polytechnique.org/paiement/'); -INSERT INTO `newsletter_art` VALUES (28,5,3,5,'Déjeuner X-Banque sur la presse économique et financière','La prochaine réunion du groupe X-Banque aura pour invité Olivier FLEUROT, CEO du [u]FT Publishing Group[/u] (qui publie les journaux [i]The Financial Times[/i] et [i]Les Échos[/i]). Le thème est la presse économique et financière : [b]Contre-pouvoir ou chambre d\'écho[/b].','Déjeuner jeudi 12 février à 12:30.\r\nPlus d\'informations : http://x-banque.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (28,6,3,6,'Groupe X-Vinicole','Ce groupe contribue au développement convivial d\'une culture oenologique de qualité parmi les X, en s\'appuyant sur ceux qui exercent une profession en relation avec l\'oenologie et les activités vinicoles et viticoles.\r\nLa prochaine manifestation programmée est le salon exposition : [i]Les Vignerons Polytechniciens[/i] qui vous propose la dégustation des produits d\'une vingtaine de camarades.\r\nPour être tenu au courant de nos prochaines manifestations, inscris-toi sur la liste X-Vinicole.','Salon exposition : dimanche 14 mars de 11:00 à 19:00\r\nMaison des X : 12, rue de Poitiers Paris\r\nContact : x.vinicole@maisondesx.com\r\nInscription à la liste : https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (28,7,4,7,'Petit-déjeuners polytechniciens','Jean-Paul HUCHON, président sortant du Conseil Régional d\'Île-de-France, et Jean-René FOURTOU (60), PDG de Vivendi Universal, seront les invités des prochains PDX, de 8:00 à 9:30 à la Maison des X.\r\nThierry BRETON a annulé sa participation du 3 février, et viendra mardi 1er juin.','mardi 3 février : pas de PDX\r\nmercredi 11 février : Jean-Paul HUCHON\r\nmardi 2 mars : Jean-René FOURTOU\r\n[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (28,8,4,8,'Dîner des Anciennes','Suite au grand succès du dîner de [u]Grandes Écoles au Féminin[/u], et à la demande de nombreuses Anciennes de l\'X (Xettes), nous organisons un dîner [i]Au Féminin[/i]. Une occasion d\'échanger entre Xettes sur nos parcours et expériences.\r\nToutes les Xettes inscrites sur la liste de diffusion \"xettes\" recevront prochainement une invitation à s\'inscrire, qui précisera toute la logistique. Le dîner aura lieu à Paris, mais nous penserons à celles au loin !','Dîner lundi 8 mars à Paris (Journée de la Femme)\r\nListe de diffusion : https://www.polytechnique.org/listes/\r\nSite web : http://www.grandesecolesaufeminin.net/\r\nNathalie (84) nathalie.charles@polytechnique.org\r\nAvra (94) avra.tzevelekis@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (28,9,4,9,'XMP Entrepreneur : réunion générale','La prochaine réunion générale de XMP sera animée par Bernard ZIMMERN (X49 - ENA) qui viendra nous parler des sujets développés dans son dernier livre [u]La dictacture des syndicats[/u].\r\nBernard ZIMMERN était venu en 2001 nous exposer ses idées sur l\'entreprenariat lors de la sortie de [u]Les profiteurs de l\'État[/u].','Réunion générale : lundi 15 mars\r\nhttp://www.xmp-entrepreneur.org/'); -INSERT INTO `newsletter_art` VALUES (28,10,4,10,'Résultats de l\'enquête sur La J&R et le projet de réforme','Les résultats de l\'enquête sur [u]La Jaune et la Rouge[/u] menée en décembre 2002 ont été publiés par le groupe de travail de l\'AX présidé par Jean SALMONA (56). L\'ensemble de ces résultats est disponible sur le site du sondage.','http://sondage-ljlr.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (28,11,4,11,'Humour polytechnicien','L\'humour polytechnicien a toujours fait partie de notre culture : être sérieux sans trop se prendre au sérieux, décrisper, décoincer, créer une atmosphère détendue propice à l\'innovation et aux évolutions (certains de nos camarades l\'ont même érigé en méthode de management comme dans le [i]Humour Consulting Group[/i]).\r\nTu peux apporter ta pierre dans ce domaine, en reflétant toi-aussi [b]l\'humour à travers les ages[/b].','http://humour.polytechnique.org/\r\nContact : JMY (65) jean-michel.yolin@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (29,1,1,1,'De généreux donateurs','Olivier GUILLAUMIN (80) et Thomas-Xavier MARTIN (89) ont décidé de faire chacun un don de 1000 EUR à notre association. Nous les remercions vivement pour ce geste qui nous permettra de maintenir durablement le service entièrement gratuit que nous offrons.\r\nLeur intention était de donner l\'exemple et nous espérons que quelques camarades ou leurs entreprises suivront cet exemple.\r\n\r\nPolytechnique.org est une association de loi 1901 constituée de 25 camarades bénévoles de toutes promotions, qui fournit à la fois des services individuels à chaque X (Ancien ou Élève), et des outils en ligne destinés aux groupes X, aux binets, aux promotions.\r\n\r\nLa forte croissance du nombre d\'inscriptions et l\'adoption de plus en plus large de nos services par l\'ensemble de la communauté nous conduit à acquerir du nouveau matériel. Les fonds collectés serviront d\'une part à financer ce matériel, d\'autre part à nous doter d\'un hébergement supplémentaire destiné à assurer la disponibilité constante de nos services.\r\nSi toi aussi tu souhaites nous aider à améliorer notre qualité de service, rends-toi sur la page des dons.','https://www.polytechnique.org/dons.php'); -INSERT INTO `newsletter_art` VALUES (29,2,3,2,'Groupe X-Santé : l\'accès aux médicaments pour les PVD','Les intervenants de la réunion sont Philippe BAETZ (Vice-Président de Sanofi-Synthelabo) et Stéphane MANTION (secrétaire général de l\'OPALS, et directeur du partenariat à la Croix Rouge). Seront abordées des questions très actuelles autour de la mondialisation de la santé, des évolutions industrielles majeures, de la place fondamentale des choix éthiques dans l\'organisation des systèmes de soins. Un autre regard sera développé sur les fondamentaux qui sous-tendent nos systèmes de santé.','Lundi 8 mars à 18:30\r\n1, rue Descartes, Amphi Poincaré\r\nInscriptions avant le 5 mars philippe.brunswick@m4x.org\r\n\r\nOPALS : Organisation panafricaine de lutte contre le sida\r\nhttp://www.croix-rouge.fr/goto/actions/sida/index.asp'); -INSERT INTO `newsletter_art` VALUES (29,3,3,3,'Groupe X-Vinicole','Le salon des Vignerons Polytechniciens est devenu un [i]must[/i] de la collectivité polytechnicienne. Vous pourrez déguster, lors du prochain salon, la production vinicole de 22 de nos camarades, en provenance de la plupart des grands vignobles français. Le déjeuner sur place avec des invités est possible.\r\nPour être tenu au courant des autres manifestations organisées par le Groupe X-Vinicole, inscris-toi sur la liste [b]X-Vinicole[/b].','Salon exposition : dimanche 14 mars de 11:00 à 19:00\r\nMaison des X : 12, rue de Poitiers, Paris 7ème\r\nContact : +33 149 54 74 74 ou x.vinicole@maisondesx.com\r\nInscription à la liste : https://www.polytechnique.org/listes/\r\nRepas hors boisson : 33EUR sur réservation uniquement'); -INSERT INTO `newsletter_art` VALUES (29,4,3,4,'XMP Entrepreneur : réunion générale','La prochaine réunion générale de XMP aura lieu lundi 15 mars.','http://www.xmp-entrepreneur.org/'); -INSERT INTO `newsletter_art` VALUES (29,5,3,5,'X-Informatique : Dîner-débat du 31 mars 2004','Transports en commun et nouvelles technologies : gadget ou nécessité\r\nDîner-débat animé par André AMPELAS (X66-ENST71), DSI de la RATP, élu DSI de l\'année 2003.','Tous les détails et pour s\'inscrire : http://www.cyberix.org/'); -INSERT INTO `newsletter_art` VALUES (29,6,3,6,'Réunion X-Expertise','Lors de la prochaine réunion, Pierre CHEMILLER (53), président de Qualibat, fera un exposé sur :\r\n [i]Comment améliorer la qualité du bâtiment[/i]\r\nL\'exposé sera suivi d\'un dîner.','mercredi 31 mars à la Maison des X\r\nMaison des X : 12, rue de Poitiers, 75007 Paris\r\nRenseignements : Jacques LUTFALLA (53)\r\njacques.lutfalla@m4x.org ou +33 148 878 592'); -INSERT INTO `newsletter_art` VALUES (29,16,4,7,'Petit-déjeuners polytechniciens','Jean-René FOURTOU (60), PDG de Vivendi Universal, Jean-Claude TRICHET, président de la Banque Centrale Européenne, et Jean-Claude MAILLY, secrétaire de Force Ouvrière, seront les prochains invités des PDX, de 8:00 à 9:30 à la Maison des X.','mardi 2 mars : Jean-René FOURTOU\r\nmercredi 7 avril : Jean-Claude TRICHET\r\nmardi 4 mai : Jean-Claude MAILLY\r\n_Renseignements_ : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (29,8,4,8,'Dîner des Anciennes','Suite au grand succès du dîner de [u]Grandes Écoles au Féminin[/u], et à la demande de nombreuses Anciennes de l\'X (Xettes), nous organisons un dîner [i]Au Féminin[/i]. Une occasion d\'échanger entre Xettes sur nos parcours et expériences.\r\nToutes les Xettes inscrites sur la liste de diffusion \"xettes\" recevront prochainement une invitation à s\'inscrire, qui précisera toute la logistique. Le dîner aura lieu à Paris, mais nous penserons à celles au loin !','Dîner lundi 8 mars à Paris (Journée de la Femme)\r\nListe de diffusion : https://www.polytechnique.org/listes/\r\nSite web : http://www.grandesecolesaufeminin.net/\r\nNathalie (84) nathalie.charles@m4x.org\r\nAvra (94) avra.tzevelekis@m4x.org'); -INSERT INTO `newsletter_art` VALUES (29,9,4,9,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU (56), se produira mardi 9 mars à 20:30, Salle Gaveau, sur le thème [i]La splendeur romantique[/i] :\r\n - Baudelaire : [u]L\'Albatros[/u]\r\n - Berlioz : [u]Marche Hongroise[/u]\r\n - Schumann : [u]Converto pour violoncelle[/u] (Jean-Marie Gamard)\r\n - Tchaikowsky : [u]Variations rococo pour violoncelle[/u]\r\n - Beethoven : [u]Huitième symphonie[/u]','[u]Réservations spécial X[/u] : +33 147 206 281\r\n(places à 15, 20 & 30 EUR)'); -INSERT INTO `newsletter_art` VALUES (29,10,4,10,'Représentations de théâtre par des X2001','Dix jours magistraux, d\'évènements théâtraux\r\n Pour animer Poincaré, à vingt heures trente bien sonnées\r\n\r\n Un programme bien soigné, pour une mi-mars printanière,\r\n Amusante et pimentée, avant tout d\'humeur légère !\r\n\r\nAu programme sur le site de l\'École :\r\n - [u]Un air de famille[/u] (Jaoui-Bacri), comédie à couteaux tirés autour d\'un gâteau et de quelques Suzes, à siroter en famille.\r\n - [u]Les Robins des Bois[/u] qui \"construisent ou plutôt déconstruisent leur style. Des personnages très spéciaux et des décors pour le moins inhabituels\" que vous appRRRrrrécierez assurément ! http://www.robinsdesbois.com/\r\n - [u]Art[/u] (Yasmina Réza), c\'est... trois amis, un tableau blanc, entièrement blanc. Et une amitié de toujours qui vole en éclat. Un trio d\'amis, réunis et désunis, autour d\'un tableau cher... très cher. Une comédie dramatique, \"dingue\", au rythme d\'enfer : à ne pas manquer !','mardi 9 mars, jeudi 11 mars : [u]Un air de famille[/u]\r\nmercredi 10 mars, vendredi 19 mars : [u]Les Robins des Bois[/u]\r\nlundi 15 mars : [u]Art[/u]\r\n[b]Renseignements[/b]\r\n+33 169 335 723 sebastien.boyaval@m4x.org\r\n+33 169 335 041 julien.castres-saint-martin@m4x.org'); -INSERT INTO `newsletter_art` VALUES (29,11,4,11,'Promotion 38','Le prochain magnan aura lieu jeudi 18 mars (épouses et veuves conviées).','jeudi 18 mars à 12:30\r\nRestaurant administratif de la Montagne Sainte-Geneviève\r\n25, rue de la Montagne Sainte-Geneviève 75005 Paris\r\n[u]Inscriptions[/u] : GUILLEMIN +33 147 516 973 (avant le 13 mars)'); -INSERT INTO `newsletter_art` VALUES (29,12,4,12,'Bal de l\'X','Le 113ème bal de l\'X aura lieu jeudi 1er avril à l\'Opéra Garnier, fraîchement rénové. Vous pouvez commander vos places et payer en ligne dès à présent !\r\nMain dans la main avec la Commission du bal, la promotion 2001 s\'investit cette année de façon toute particulière dans le bal, n\'hésitez-pas à nous contacter!','http://www.baldelx.com/'); -INSERT INTO `newsletter_art` VALUES (29,13,4,13,'7ème Trophée RBS Cup Voiles X-HEC','Le Trophée Voiles X-HEC est un week-end de régates amicales rassemblant élèves et anciens de l\'X et d\'HEC dans des conditions exceptionnelles : le week-end est fourni [i]clef en main[/i]. Tu t\'inscris et l\'équipe s\'occupe du reste : tu seras alors logé, nourri et placé sur un équipage. Cette année encore, la régate sera homologuée par la FFV et le comité de course sera dirigé par Roland Galliot.','7ème Trophée : 8 et 9 mai à Bénodet (29)\r\nContact : bureau@xhec.org\r\nhttp://www.xhec.org/'); -INSERT INTO `newsletter_art` VALUES (29,14,4,14,'Nuit du Jazz X','Trois camarades jazzmen organisent une nuit du jazz X, réservée aux X jazzmen amateurs et aux ensembles de jazz dont une partie au moins des musiciens sont des X. Cette nuit aura lieu à l\'automne 2004 dans un club de jazz parisien sur le modèle de ce qui avait été organisé dans le cadre des fêtes du bicentenaire. \r\n \r\nLa nuit sera consacrée au jazz proprement dit (tous styles sauf free jazz) à l\'exclusion des musiques connexes telles que rock, folk, hip-hop, rap, salsa, etc.','Gérard Glandier (59) gerard.glandier@m4x.org\r\nPhilippe Souplet (85) philippe.souplet@m4x.org\r\nJean Salmona (56) jean.salmona@m4x.org'); -INSERT INTO `newsletter_art` VALUES (29,15,4,15,'X-Allemagne : appel','X-Allemagne a été créé à l\'initiative des X99 et X00 en cours de spécialisation en Allemagne, afin de mieux informer les promos plus jeunes des avantages de la formation complémentaire en Allemagne et d\'aider les élèves intéressés dans leurs choix et la préparation des dossiers.\r\nÀ terme, ce groupe pourrait aussi rassembler tous les X (Élèves et Anciens) ayant un lien avec l\'Allemagne... Que les intéressés se signalent !','http://x-allemagne.polytechnique.org/ (évolution permanente)'); -INSERT INTO `newsletter_art` VALUES (30,1,1,1,'Lettre exceptionnelle \"speciale virus\"','Cher Camarade,\r\n\r\nTu as peut-être reçu, ces derniers jours, des messages en anglais signés par \"The Polytechnique.org team\", ou \"The m4x.org team\", de la même façon que tu as peut-être reçu des messages semblables signés par \"The Wanadoo team\" ou \"The Club-internet team\" si tu es par exemple chez l\'un ou l\'autre de ces fournisseurs d\'accès à Internet.\r\n\r\nCes messages sont des faux, dus à des virus. Si tu connais bien la façon de fonctionner des virus, alors le présent message ne t\'apportera pas grand chose. Dans le cas contraire, nous te suggérons vivement de prendre les 3 minutes nécessaires pour le lire jusqu\'au bout.\r\n\r\nD\'abord quelques principes :\r\n- nous ne communiquerons jamais avec toi par des messages écrits intégralement en anglais,\r\n- nous n\'envoyons jamais de pièce jointe dans les messages qui proviennent de nos équipes,\r\n- nous ne te demanderons jamais ton mot de passe,\r\n- dès lors que tu reçois un message signé par notre équipe et qu\'il te semble \"louche\", tu peux nous l\'envoyer à support@polytechnique.org, afin que nous te disions s\'il provient bien de nous (beaucoup d\'entre vous ont eu ce réflexe ces derniers temps).\r\n\r\nEnsuite, voici l\'explication du phénomène. Depuis plusieurs semaines, l\'activité des virus sur Internet a fortement augmenté. Beaucoup de virus, lorsqu\'ils envoient un courrier électronique, usurpent une fausse identité pour envoyer leur message infecté. Pour cela, ils piochent au hasard une identité présente dans le carnet d\'adresses et les messages de l\'ordinateur qu\'ils ont réussi à infecter, puis écrivent à toutes les personnes de ce carnet d\'adresses et des messages stockés sur l\'ordinateur, afin de contaminer le maximum de monde.\r\n\r\nPolytechnique.org est équipé d\'un antivirus performant, qui bloque des quantités considérables de messages infectés. Cependant, entre le moment où un virus apparaît sur Internet, et le moment où il est répertorié chez les compagnies de logiciels antivirus et qu\'un vaccin sort, il se passe souvent quelques heures, durant lesquelles notre antivirus ne détecte pas encore le virus (ceci est valable pour tous les serveurs de messagerie de l\'Internet, et n\'est pas spécifique à Polytechnique.org). Ainsi, même si tu es très bien protégé, il n\'est pas exclu que notre serveur laisse passer malgré tout une quantité infime de messages infectés, lors de l\'apparition d\'un nouveau virus sur Internet.\r\n\r\nDernier point sur lequel nous souhaitons insister ici : il doit t\'arriver de recevoir des messages disant : \"tu as envoyé à M. Untel un message infecté, lequel a donc été supprimé\". Or tu ne te souviens pas d\'avoir écrit à M. Untel, et d\'ailleurs tu ne le connais peut-être même pas ! Ce type de phénomène est du au fait qu\'une relation commune à M. Untel et toi-même a été contaminée par un virus. Son ordinateur a envoyé à M. Untel un message infecté, en le signant de ton nom. Le serveur de messagerie de M. Untel a rejeté le virus et, croyant que tu es l\'auteur du message, te notifie donc que le message est contaminé. Cela ne veut absolument pas dire, pour autant, que tu es infecté ! Ton adresse et ton nom ont juste été récupérés par le virus dans le carnet d\'adresses de la personne infectée. Nous n\'y pouvons malheureusement pas grand chose, et cela ne signifie pas du tout que l\'annuaire de notre serveur a été piraté !! Si tu souhaites plus de précisions sur la façon dont les virus fonctionnent, nous te renvoyons à l\'un des nombreux sites web qui détaillent le sujet, par exemple : \r\nhttp://www.secuser.com/\r\n\r\nEnfin, deux précautions valant mieux qu\'une, nous te conseillons d\'utiliser un antivirus sur ton ordinateur. Bien que notre antivirus soit une excellente protection, tu peux recevoir du courrier à d\'autres adresses que ton adresse polytechnicienne, lesquelles ne sont peut-être pas ou peu protégées. Si tu ne souhaites pas investir de l\'argent dans une solution logicielle, sache qu\'il existe des antivirus gratuits sur le marché, et ceux-ci nous paraissent tout à fait efficaces. Par exemple, Avast (http://www.avast.com/) a été testé par quelques camarades qui l\'ont trouvé très bon (il est gratuit pour une utilisation personnelle).\r\n\r\nJ\'espère que ces quelques lignes t\'auront permis de mieux comprendre pourquoi tu as éventuellement reçu des messages étranges ces derniers temps. Tu vois donc qu\'il ne s\'agit pas du tout d\'un problème lié à Polytechnique.org. Malheureusement, c\'est une tendance générale sur l\'Internet tout entier. Nous réfléchissons aux moyens de permettre de discerner un message effectivement envoyé par l\'expéditeur qui est affiché, d\'un message où l\'expéditeur a été usurpé. Il existe des solutions techniques de signature numérique des courriers électroniques. Si certains camarades, compétents dans le domaine ou souhaitant le devenir, voulaient accorder un peu de leur temps à aider notre équipe bénévole à mettre de telles solutions en place, nous serions ravis de les intégrer à notre groupe, afin de fournir des services de qualité à l\'ensemble de la communauté.\r\n\r\nNous te souhaitons une agréable semaine et espérons que cette lettre exceptionnelle t\'aura aidé à y voir plus clair.\r\n\r\nTrès cordialement,\r\nL\'équipe Polytechnique.org, \r\nhttps://www.polytechnique.org/apropos.php','https://www.polytechnique.org/ : le portail des X sur le web\r\nhttp://www.polytechnique.net/ : le portail des associations polytechniciennes (groupes X, binets, promotions)'); -INSERT INTO `newsletter_art` VALUES (31,1,1,1,'Discuter des formations complémentaires','Afin de favoriser la communication entre promotions sur les formations complémentaires, l\'équipe de Polytechnique.org a mis en place des forums de discussions spécifiques, classés par zones géographiques. Les formations complémentaires ayant accueilli un nombre suffisant d\'élèves après l\'X ont chacune leur forum spécifique.\r\n\r\nPour les discussions plus générales et pour les formations moins fréquentées, des forums de type \"***.general\" ont été mis en place.\r\n\r\nN\'hésite pas à faire part de ton expérience sur ces forums !','https://www.polytechnique.org/banana/\r\n(les noms des forums sont en \"xorg.fc.***\")'); -INSERT INTO `newsletter_art` VALUES (31,2,3,2,'X-Aviation : baptème de voltige aérienne','Pour démarrer 2004, le Groupe X-Aviation vous propose de se retrouver pour un baptême de voltige aérienne.\r\nC\'est l\'école de Catherine MAUNOURY (double-championne du monde de voltige), le CPCM, qui sera responsable de la journée. Évidemment, vos invité(e)s, polytechnicien(ne)s ou non, sont les bienvenu(e)s !','Rendez-vous à Chartres, samedi 17 avril au CPCM\r\nInformations : jean-paul.choquel@polytechnique.org (68)'); -INSERT INTO `newsletter_art` VALUES (31,3,3,3,'X-Vinicole : dîners autour d\'un vin','Faisant suite au succès du salon des Vignerons Polytechniciens de mars, les vignerons polytechniciens du Groupe développent la série de réceptions [b]Dîner autour d\'un vin[/b], ouvertes à tous ceux qui s\'inscrivent sur la liste du groupe.\r\nDeux dîners autour d\'un vin auront lieu prochaînement, l\'occasion d\'approfondir par la pratique tes connaissances oenologiques !\r\n\r\nPour être tenu au courant des autres manifestations organisées par le Groupe X-Vinicole, inscris-toi sur la liste [b]X-Vinicole[/b].','Dîner \"Champagne\" : 13 mai\r\nDîner \"Bordeaux\" : en juin\r\nContact : x.vinicole@maisondesx.com\r\nInscription à la liste : https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (31,4,4,4,'Bal de l\'X','Le 113ème bal de l\'X aura lieu jeudi 1er avril à l\'Opéra Garnier, fraîchement rénové. Le Quadrille des Lanciers sera cette année dansé par des Élèves de la promotion 2001, vers 22:15 et vers minuit.\r\nPour les Élèves et les étudiants, n\'oubliez pas votre carte Magnan ou votre carte étudiant pour justifier vos entrées.','http://www.baldelx.com/'); -INSERT INTO `newsletter_art` VALUES (31,5,4,5,'Petit-déjeuners polytechniciens','Jean-Claude TRICHET, président de la Banque Centrale Européenne, et Jean-Claude MAILLY, secrétaire de Force Ouvrière, seront les prochains invités des PDX, de 8:00 à 9:30 à la Maison des X.','mercredi 7 avril : Jean-Claude TRICHET\r\nmardi 4 mai : Jean-Claude MAILLY\r\n[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (31,6,4,6,'7ème Trophée RBS Cup Voiles X-HEC','Le Trophée Voiles X-HEC est un week-end de régates amicales rassemblant élèves et anciens de l\'X et d\'HEC dans des conditions exceptionnelles : le week-end est fourni [i]clef en main[/i]. Tu t\'inscris et l\'équipe s\'occupe du reste : tu seras alors logé, nourri et placé sur un équipage.\r\nCette année encore, la régate sera homologuée par la FFV et le comité de course sera dirigé par Roland Galliot.','7ème Trophée : 8 et 9 mai à Bénodet (29)\r\nContact : bureau@xhec.org\r\nhttp://www.xhec.org/'); -INSERT INTO `newsletter_art` VALUES (32,12,4,12,'FX : Appel à candidature au Prix Pierre Faurre','Pour honorer la mémoire de Pierre Faurre (60) disparu en 2001, la Fondation décerne annuellement un prix destiné à distinguer un jeune Polytechnicien dont le début de carrière dans l\'industrie apparaît particulièrement prometteur.\r\nSi tu estimes que ton parcours le justifie, fais-le savoir à ta direction pour qu\'elle présente ton dossier à la Fondation avant fin juin 2004.','http://perso.wanadoo.fr/fondation.fx/pfaurre.html'); -INSERT INTO `newsletter_art` VALUES (32,11,4,11,'Groupe X-Musique : concert','X-Musique donne un concert avec au programme des oeuvres de musique de chambre (du duo au septuor...) de Bach, Mozart, Beethoven, Schubert, Borodine, Prokofiev, Poulenc et Saint-Saëns.','samedi 5 juin à 17:30\r\nCité Internationale des Arts\r\n18, rue de l\'Hôtel de Ville, Paris 4\r\nRenseignements : http://x-musique.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (32,10,4,10,'17 ème tournoi inter-promotion de basket-ball','Le tournoi se déroulera samedi 5 juin 2004, à l\'École. Il commencera par des matches de poule, suivis d\'un barbecue le midi et des phases finales l\'après-midi (fin prévue vers 17:30).\r\nLes habitués, peuvent contacter leurs responsables de promotion.\r\nPour ceux qui n\'ont pas joué depuis longtemps et qui veulent renouer avec la tradition, n\'hésitez pas à vous faire connaître, nous organiserons une ou plusieurs équipes en fonction des inscriptions.\r\nSont recherchées en particulier les promos 84, 85, 86, 88, 89, 90, et avant 80.','Samedi 5 juin 2004 à 09:00, École polytechnique, gymnases T5/T6\r\nContact : paul.brossier@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (32,9,4,9,'Point Gamma 2004','Lors du Point Gamma 2004, les Anciens, les X2000 et X2001 et leurs invités sont VIP! Un cocktail dinatoire vous attendra dans l\'Espace Prestige, réservé pour vous de 20:00 à minuit.\r\nPour réserver une table, il suffit de commander une bouteille de champagne par téléphone et d\'acheter vos places dans la section \"Télépaiements\" du site web de Polytechnique.org (ce service sera disponible dans les jours qui viennent).','[b]Réservations[/b] (une bouteille par table de six) :\r\n +33 169 335 225\r\n flore.andre-mazeaud@polytechnique.org\r\n[b]Achat de places (23EUR)[/b] :\r\n https://www.polytechnique.org/paiement/'); -INSERT INTO `newsletter_art` VALUES (32,8,4,8,'XXIIIème Jumping de l\'X','Le Jumping de l\'X est un concours hippique de saut d\'obstacles de niveau [i]National1[/i], comportant cette année trois épreuves qualificatives pour les championnats de France [i]Pro1/-/Pro2[/i].\r\nSi le Jumping est l\'occasion de voir les meilleurs cavaliers français tester leurs chevaux en vue des épreuves internationales, c\'est aussi une manière originale de revenir sur le campus de l\'École, et passer un agréable week-end puisque de nombreuses animations auront lieu en parallèle des épreuves (poneys pour les plus petits, Smart dévoilant son tout dernier modèle de voiture...).','15 et 16 mai, École polytechnique, accès libre et gratuit\r\nRenseignements : http://jumping.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (32,7,4,7,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU (56), se produira sur le thème [i]Hommage à la nouvelle Europe[/i] :\r\n - Verdi : [u]Hymne aux Nations[/u] (orchestre, ténor et choeurs)\r\n - Chopin : [u]Grande Polonaise[/u] (orchestre, Romain Hervé (piano))\r\n - Liszt : [u]Rhapsodies hongroises 1 et 2[/u] (pour orchestre)\r\n - Dvorak : [u]Symphonie du Nouveau Monde[/u]\r\n - Beethoven : [u]Hymne européen[/u]','mardi 11 mai, 20:30, salle Gaveau\r\n[u]Réservations spécial X[/u] : +33 147 206 281\r\n(places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (32,6,4,6,'Réunion générale de XMP-Entrepreneur','Bernard ZIMMERN (X49, ENA), président et fondateur de l\'IFRAP, animera la prochaine réunion générale sur les thèmes développés dans son dernier ouvrage, [u]La dictature des syndicats[/u] .','IFRAP : Institut français des recherches des institutions des administrations publiques\r\nhttp://www.xmp-entrepreneur.org/manifestations.php\r\nInscriptions : xentrepreneur@wanadoo.fr ou +33 142 228 645\r\n10 Mai 2004, 18:00, Maison des X : 12, Rue de Poitiers, Paris 7'); -INSERT INTO `newsletter_art` VALUES (32,5,4,5,'Groupe X-Musique : réunion','X-Musique, groupe X tourné vers la pratique de la musique de chambre, permet aux camarades (et membres de leurs familles) instrumentistes de se rencontrer pour jouer en petites formations (duos, trios, quatuors, quintettes...) lors de séances informelles ou en concert amical.\r\nLe groupe comprend une variété d\'instruments : violon, alto, violoncelle, flûte, hautbois, basson, clarinette, trompette, chant, piano, harpe... ce qui permet une multitude de combinaisons !\r\nLa prochaine réunion aura lieu en mai.','dimanche 9 mai, 15:00, chez Jean-François GUILBERT (66)\r\nRenseignements : http://x-musique.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (32,4,4,4,'7ème Trophée RBS Cup Voiles X-HEC','Le Trophée Voiles X-HEC est un week-end de régates amicales rassemblant élèves et anciens de l\'X et d\'HEC dans des conditions exceptionnelles : le week-end est fourni [i]clef en main[/i]. Tu t\'inscris et l\'équipe s\'occupe du reste : tu seras alors logé, nourri et placé sur un équipage.\r\nCette année encore, la régate sera homologuée par la FFV et le comité de course sera dirigé par Roland GALLIOT.','7ème Trophée : 8 et 9 mai à Bénodet (29)\r\nContact : bureau@xhec.org\r\nhttp://www.xhec.org/'); -INSERT INTO `newsletter_art` VALUES (32,3,4,3,'Petit-déjeuners polytechniciens','Jean-Claude MAILLY, secrétaire de Force Ouvrière, et Thierry BRETON, président-directeur général de France Télécom, seront les prochains invités des PDX, de 8:00 à 9:30 à la Maison des X.','mardi 4 mai : Jean-Claude MAILLY\r\nmardi 1er juin : Thierry BRETON\r\n[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (32,1,1,1,'Convention entre l\'AX et Polytechnique.org','Une convention a été signée, définissant la coopération entre l\'AX et Polytechnique.org .\r\nElle est publiée à la fois dans [u]La Jaune et la Rouge[/u] et sur le site web de l\'association Polytechnique.org.','La Jaune et la Rouge : numéro d\'avril 2004, n°594, p.54-60\r\nhttp://x-org.polytechnique.org/convention-AX/'); -INSERT INTO `newsletter_art` VALUES (32,2,3,2,'X-Vinicole : dîners autour d\'un vin','Faisant suite au succès du salon des Vignerons Polytechniciens de mars, les vignerons polytechniciens du Groupe développent la série de réceptions [b]Dîner autour d\'un vin[/b], ouvertes à tous ceux qui s\'inscrivent sur la liste du groupe.\r\nUn dîner autour d\'un vin aura lieu en mai, l\'occasion d\'approfondir par la pratique tes connaissances oenologiques !\r\n\r\nPour être tenu au courant des autres manifestations organisées (dîner de prestige, dîner rustique, dîner en cave...) par le Groupe X-Vinicole, inscris-toi sur la liste [b]X-Vinicole[/b].','Dîner [i]Champagne[/i] : jeudi 13 mai\r\nDîner [i]Bordeaux[/i] : non plus en juin mais à l\'automne\r\nContact : x.vinicole@maisondesx.com\r\nInscription à la liste : https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (33,9,3,9,'AX : Assemblée Générale','Après une partie partie consacrée au rapport moral, au rapport financier et aux questions, l\'assemblée générale annuelle de l\'AX se poursuivra par une conférence de Bernard Larrouturou (77), Directeur général du CNRS, sur le thème : \"La recherche française face à la compétitivité internationale\".','Lundi 21 juin à 17h\r\nAncienne Ecole polytechnique - 5, rue Descartes - Paris 5è'); -INSERT INTO `newsletter_art` VALUES (33,6,3,6,'X-Résistance','Suite à l\'ouverture du groupe à des descendants de Polytechniciens résistants le 27 mars 2004, vous êtes conviés à l\'Assemblée Générale du groupe.','mercredi 16 juin à 17:00\r\nMaison des X http://www.maison-des-x.com/\r\nRenseignements : http://x-resistance.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (33,7,3,7,'X-Banque : Assemblée Générale','La prochaine Assemblée Générale sera suivie d\'un déjeuner avec Francis MAYER, Directeur Général de la Caisse des Dépôts et Consignations.','jeudi 17 juin\r\nRenseignements : http://x-banque.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (33,8,3,8,'GPX : Rallye touristique automobile','Le traditionnel rallye touristique automobile organisé par le GPX aura pour thème : les grands détectives. Transformés en inspecteurs de police, les concurrents devront résoudre énigmes et jeux et faire preuve de sagacité et d\'humour. Inscription urgente.','Samedi 19 juin\r\nRenseignements : gpx@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (33,5,3,5,'XMP Entrepreneurs : Création d\'un groupe de Business Angels','Les associations des Anciens Élèves de l\'X, des Mines et des Ponts (AX, Intermines, AAENPC), avec XMP Entrepreneur, proposent aux Business Angels déjà actifs ou voulant le devenir de s\'organiser au sein d\'un groupe qui leur permettrait entre autres :\r\n - de s\'informer et de discuter sur des thèmes d\'intérêt commun,\r\n - de partager des expériences,\r\n - de monter des alliances entre investisseurs.','mercredi 9 juin à 18:00\r\nMaison des X http://www.maison-des-x.com/\r\nXMP Entrepreneurs http://www.xmp-entrepreneur.org/\r\nRenseignements : francois.cherruau@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (33,1,1,1,'Lancement de Manageurs.com','Polytechnique.org a développé le site http://www.manageurs.com/ dans le cadre d\'un partenariat avec l\'AX. Ce site a été préparé en collaboration avec les anciens d\'autres écoles d\'ingénieurs, de commerce et de gestion, lesquels nous y rejoindront bientôt.\r\nCe site vise à aider tous les X (élèves et anciens élèves) dans la gestion de leur carrière et de leur employabilité. Des services leur sont ouverts, ainsi qu\'aux recruteurs (entreprises, cabinets).\r\nManageurs.com ouvre aujourd\'hui en test : ses fonctionnalités vont être ouvertes jour après jour, tout au long du mois, ainsi que dans le courant de l\'été.\r\nNous attendons avec impatience tes remarques, idées, commentaires.','Site web : http://www.manageurs.com/\r\nContact de l\'équipe : anciens-eleves@manageurs.com'); -INSERT INTO `newsletter_art` VALUES (33,2,1,2,'Nouveau taux de commission pour les télépaiements','\nNous proposons depuis plusieurs mois déjà un système de paiement en ligne, par CB, à l\'usage des groupes X, promotions, et binets. Notre banque, la Banque Populaire Lorraine Champagne, a diminué le montant de la commission qu\'elle prélevait sur ces paiements : elle s\'élève désormais à 20 centimes par opération plus 0,5 0u montant. En cas de paiement avec une carte étrangère, 0,76 euros supplémentaires sont prélevés. Polytechnique.org ne prend bien entendu aucune commission sur les paiements faits via son système de télépaiement !\n\n\n\n',''); -INSERT INTO `newsletter_art` VALUES (33,3,3,3,'Groupe X-Musique : concert','X-Musique donne un concert avec au programme des oeuvres de musique de chambre (du duo au septuor...) de Bach, Mozart, Beethoven, Schubert, Borodine, Prokofiev, Poulenc et Saint-Saëns.','samedi 5 juin à 17:30\r\nCité Internationale des Arts\r\n18, rue de l\'Hôtel de Ville, Paris 4\r\nRenseignements : http://x-musique.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (33,4,3,4,'X-Environnement : risques industriels','Le groupe X-Environnement, en association avec le groupe HEC-Environnement, organise une réunion-débat sur les risques industriels. Relations entre industriels, collectivités locales, et administration. Entrée libre.\r\nLes invités seront :\r\n - Olivier MONFORT (SOLVAY France),\r\n - Bruno CAHEN (Ministère de l\'Écologie et du Développement Durable DPPR),\r\n - et Jean-Michel DAUBIGNEY (maire de Tavaux, Jura). ','mardi 8 juin à 19:00\r\nAssociation HEC : 9 avenue Franklin Roosevelt, Paris VIII\r\nhttp://www.x-environnement.org/manifestations.html'); -INSERT INTO `newsletter_art` VALUES (33,14,4,14,'17 ème tournoi inter-promotion de basket-ball','Le tournoi se déroulera samedi 5 juin 2004, à l\'École. Il commencera par des matches de poule, suivis d\'un barbecue le midi et des phases finales l\'après-midi (fin prévue vers 17:30).\r\nLes habitués, peuvent contacter leurs responsables de promotion.\r\nPour ceux qui n\'ont pas joué depuis longtemps et qui veulent renouer avec la tradition, n\'hésitez pas à vous faire connaître, nous organiserons une ou plusieurs équipes en fonction des inscriptions.\r\nSont recherchées en particulier les promos 84, 85, 86, 88, 89, 90, et avant 80.','Samedi 5 juin 2004 à 09:00, École polytechnique, gymnases T5/T6\r\nContact : paul.brossier@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (33,13,4,13,'Point Gamma 2004','Lors du Point Gamma 2004, les Anciens, les X2000 et X2001 et leurs invités sont VIP! Un cocktail dinatoire vous attendra dans l\'Espace Prestige, réservé pour vous de 20:00 à minuit.\r\nPour réserver une table, il suffit de commander une bouteille de champagne par téléphone et d\'acheter vos places dans la section \"Télépaiements\" du site web de Polytechnique.org .','Réservations (une bouteille par table de six) :\r\n +33 169 335 225\r\n flore.andre-mazeaud@polytechnique.org\r\nAchat de places (23EUR)\r\n https://www.polytechnique.org/paiement/'); -INSERT INTO `newsletter_art` VALUES (33,11,3,11,'X-Vinicole : Activités pour la rentrée','Le \"Dîner autour d\'un vin de Champagne\" a réuni 20 convives, qui ont découvert une nouvelle façon d\'apprécier le champagne en relation avec des mets inattendus. Les prochaines activités sont maintenant prévues après l\'été : visites de caves dans le Val de Loire, dîner autour d\'un vin de Bordeaux, rencontres amicales autour d\'un verre...\r\nPour être tenu au courant du détail des manifestations organisées par le Groupe X-Vinicole, inscris-toi sur la liste X-Vinicole.','Contact : x.vinicole@maisondesx.com\r\nInscription à la liste : https://www.polytechnique.org/listes/'); -INSERT INTO `newsletter_art` VALUES (33,12,4,12,'Colloque Gaspard MONGE','Un colloque sur Gaspard MONGE un savant en son temps est organisé, avec le soutien de l\'X et de l\'AX. Rappelons qu\'on doit la création de l\'École au géomètre MONGE.','http://www.bibmath.net/bios/index.php3?action=affiche&quoi=monge\r\nmercredi 2 juin de 09:00 à 17:00\r\nMuséum d\'histoire naturelle, amphi Verniquet-Jardin des Plantes'); -INSERT INTO `newsletter_art` VALUES (34,1,1,1,'Anti-spam : activation pour tous les inscrits','Beaucoup de camarades nous ont indiqué qu\'ils recevaient du spam (courrier électronique non sollicité) sur leur adresse polytechnicienne prenom.nom@polytechnique.org. Ils n\'avaient simplement pas activé l\'outil anti-spam proposé par Polytechnique.org.\r\n\r\nL\'équipe a donc décidé de l\'activer par défaut : chaque fois que l\'outil détecte un spam, il ajoute \"[spam probable]\" dans son sujet, sans pour autant supprimer le message.\r\n\r\nPour supprimer automatiquement ces messages, paramétrer ou désactiver l\'outil, rends-toi sur la page de l\'anti-spam.','https://www.polytechnique.org/antispam.php'); -INSERT INTO `newsletter_art` VALUES (34,2,2,2,'BDC : Préparation à la recherche d\'une nouvelle activité','Le changement d\'activité, choisi ou subi, est devenu un des passages quasi-obligés de toute carrière. Il est donc nécessaire d\'être préparé à une telle éventualité, et ceci de manière professionnelle.\r\n\r\nNous souhaitons recueillir l\'expérience accumulée par les camarades pour en tirer les conclusions nécessaires à l\'orientation de l\'action du bureau des carrières (BDC).\r\n\r\nMerci de consacrer quelques minutes au questionnaire, il va de soi que les réponses seront exploitées de façon anonyme.','Site web : http://www.abcdx.com/\r\nQuestionnaire : http://sondageabcdx.free.fr/'); -INSERT INTO `newsletter_art` VALUES (34,3,3,3,'Réunion Générale XMP-Entrepreneurs','Prochaine réunion générale lundi 13 septembre à 18:00','Maison des X : 12, rue de Poitiers, 75007 PARIS\r\nhttp://www.xmp-entrepreneur.org/manifestations.php'); -INSERT INTO `newsletter_art` VALUES (34,4,3,4,'X-Golf : Cinquantenaire de la rencontre X-Centrale','Le cinquantenaire de la rencontre X-Centrale se célèbrera les 2 et 3 octobre 2004 au golf du Domaine de Vaugouard à Fontenay sur Loing (45) :\r\n - sam : parcours de qualification (stableford)\r\n - dim : match-play (11 hommes et 5 dames dans chaque camp)\r\n stableford (pour les non-qualifiés)\r\nLogement à l\'hôtel, restauration au club-house, utilisation d\'une voiturette possible, sur réservation avant le 10 septembre.','Informations : http://www.ax-golf.com/\r\nDomaine de Vaugouard : http://www.vaugouard.com/'); -INSERT INTO `newsletter_art` VALUES (34,5,4,5,'Du Wi-Fi à l\'École','Le BR (association gérant le réseau informatique des élèves de l\'X) recherche un partenaire susceptible de l\'aider à financer la mise en place d\'un réseau Wi-Fi à l\'intention des élèves et des personnes résidant sur le plateau de l\'École. \r\nNous proposons à un éventuel sponsor la publicité la plus large, tant auprès de nos camarades, qu\'auprès de nos partenaires d\'autres écoles.','Contact : br2002@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (33,10,3,10,'X-Environnement : développement de mégapoles','Le groupe programmera plusieurs manifestations sur les problèmes posés par les très grandes concentrations urbaines, en prévision du numéro de septembre 2005 de la Jaune et la Rouge. Les intervenants seront :\r\n - Pierre CALAME (63), Président de la Fondation Charles Léopold Mayer pour le Progrès de l\'Homme,\r\n - Jean-Paul LACAZE (49), urbaniste,\r\n - et un intervenant de l\'Agence Française de Développement.','mercredi 23 juin à 18:00\r\nMaison des X http://www.maison-des-x.com/ entrée libre\r\nhttp://www.x-environnement.org/manifestations.html'); -INSERT INTO `newsletter_art` VALUES (35,9,3,9,'Petit-déjeuners polytechniciens','Dominique STRAUSS-KAHN et Dominique BUSSEREAU, Secrétaire d\'État au Budget, seront les prochains invités des PDX, de 8:00 à 9:30 à la Maison des X.','mardi 14 septembre : Dominique STRAUSS-KAHN\r\nlundi 4 octobre : Dominique BUSSEREAU\r\n[u]Renseignements[/u] : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (35,8,2,8,'X-Europe : projets récents','Le groupe a récemment initié quelques projets :\r\n - mise en réseau des Anciens en fonction dans les divers pays de l\'Union Européenne, afin de favoriser l\'essaimage de la communauté polytechnicienne ;\r\n\r\n - réflexion sur les institutions au sein d\'un atelier sur la question d\'un \"noyau fédéral dans l\'Union Européenne\" ;\r\n\r\n - proposition d\'un enseignement sur l\'Europe à l\'École par Jacques LAFITTE.','Détail des objectifs : http://x-europe.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (35,6,2,6,'X-Golf : Cinquantenaire de la rencontre X-Centrale','Le cinquantenaire de la rencontre X-Centrale se célébrera les 2 et 3 octobre 2004 au golf du Domaine de Vaugouard à Fontenay sur Loing (45) :\r\n - sam : parcours de qualification (stableford)\r\n - dim : match-play (11 hommes et 5 dames dans chaque camp)\r\n stableford (pour les non-qualifiés)\r\nLogement à l\'hôtel, restauration au club-house, utilisation d\'une voiturette possible, sur réservation avant le 10 septembre.','Informations : http://www.ax-golf.com/\r\nDomaine de Vaugouard : http://www.vaugouard.com/'); -INSERT INTO `newsletter_art` VALUES (35,7,2,7,'X-Europe : semaine de l\'Europe à l\'École','Le groupe organise la semaine de l\'Europe à l\'École, qui comportera quatre conférences majeures :\r\n - \"Europe fédérale ou Europe des nations, regard d\'un Polonais sur une Europe élargie\" : P. NOWINA KONOPKA, vice-recteur du Collège d\'Europe de Natolin (Pologne) ;\r\n\r\n - \"Quelle ambition pour l\'Europe\" : Pascal LAMY (Commissaire européen chargé du commerce) et Alain LAMASSOURE (Député européen, ancien Ministre et ancien Membre de la Convention européenne) ;\r\n\r\n - \"L\'Europe de la Recherche : atouts et handicaps\" : Catherine CESARSKY (Présidente de l\'European Southern Observatory) ;\r\n\r\n - \"Quelles limites pour l\'Europe\" : Pascal BONIFACE (Directeur de l\'Institut des Relations Internationales et Stratégiques) et Pierre BÉHAR (Professeur à l\'Université de la Sarre, à l\'université Paris VIII et à l\'Académie diplomatique de Vienne)\r\n\r\nLes invitations sont à retirer auprès du secrétariat de la Direction des Études.','Semaine de l\'Europe : 4 au 7 octobre à l\'École (Palaiseau)\r\nProgramme complet : http://x-europe.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (35,4,2,4,'Réunion Générale XMP-Entrepreneurs','Prochaine réunion générale lundi 13 septembre à 18:00','Maison des X : 12, rue de Poitiers, 75007 PARIS\r\nhttp://www.xmp-entrepreneur.org/manifestations.php'); -INSERT INTO `newsletter_art` VALUES (35,5,2,5,'Groupe X-Israël','Le prochain dîner-débat du Groupe aura lieu lundi 27 septembre 2004 à 20:00. L\'orateur sera Jean-Marc DREYFUS, historien, spécialiste d\'histoire contemporaine, chercheur au Centre Marc Bloch à Berlin, qui traitera du sujet suivant :\r\n [i]Pour une histoire de l\'antisionisme au XXè siècle[/i]','Renseignements : info@x-israel.polytechnique.org\r\nSite web : http://x-israel.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (35,3,1,3,'CNISF : Avis sur l\'enquête annuelle','Le CNISF (conseil national des ingénieurs et scientifiques de France regroupant l\'ensemble des Associations d\'Anciens Élèves d\'Écoles d\'Ingénieurs - dont l\'AX) souhaitent, avant de reconduire l\'enquête socio-économique annuelle traditionnelle, recueillir votre avis sur l\'intérêt que vous portez à cette enquête. Quelques clics suffisent pour répondre anonymement au sondage en ligne.\r\nLes résultats du sondage vous seront transmis par l\'AX.','CNISF : http://www.cnisf.org/\r\nSondage en ligne : http://193.252.55.161/qs/sondage.html'); -INSERT INTO `newsletter_art` VALUES (35,2,1,2,'X.org ouvre un gestionnaire de bugs','Avec la croissance du site et de son nombre d\'utilisateurs, nous avons décidé d\'ouvrir un BTS (Bug Tracking System) pour centraliser les rapports de bogues.\r\nTout le monde peut s\'y connecter (avec un login, ou anonymement) et y rapporter des bogues, ou exprimer des souhaits. Si tu n\'es pas habitué à ce genre d\'interfaces, tu peux continuer à faire tes remarques sur les forums ou par mail.','BTS X.org : http://trackers.polytechnique.org/\r\nForum : news://ssl.polytechnique.org/xorg.m4x.innovation\r\nMail : support@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (35,1,1,1,'X.org améliore son service après-vente !','L\'équipe de Polytechnique.org, pour améliorer son service, traite maintenant tout le support grâce à un logiciel dédié (OTRS). Le service est en place depuis maintenant un mois et la latence de réponse s\'est fortement réduite. Nous recherchons des utilisateurs confirmés, intéressés pour nous aider à assurer ce support.','Nous contacter : support@polytechnique.org\r\nOTRS est un logiciel libre : http://otrs.org/'); -INSERT INTO `newsletter_art` VALUES (36,1,1,1,'Polytechnique.org fait appel à ta générosité','Pour faire suite à la demande d\'un grand nombre d\'entre vous, Polytechnique.org a ouvert cette année le chantier de l\'emploi et de la gestion de carrière : http://www.manageurs.com/. L\'AX, l\'association des Centraliens et celles des diplômés d\'HEC sont nos partenaires dans ce projet.\r\n\r\nPolytechnique.org a un besoin exceptionnel de fonds, afin de financer (à part égale avec les autres partenaires) l\'essor de Manageurs.com. Cela ne remet évidemment pas en cause la gestion désintéressée de l\'association, mais le développement de Manageurs passe par la mise en place d\'une structure et d\'une équipe opérationnelle de permanents. Nous souhaitons offrir à tous ceux d\'entre vous qui le souhaitent des services liés à l\'emploi et à la mise en relation à but professionnel.\r\n\r\nFace à ce besoin de fonds tout à fait ponctuel, Polytechnique.org ne dispose pas des sommes nécessaires, son activité ayant toujours été soutenue par le bénévolat de ses animateurs. Aussi, nous te remercions par avance de la générosité dont tu voudras bien faire preuve!','Pour tout renseignement : association@polytechnique.org\r\nFaire un don : https://www.polytechnique.org/paiement/'); -INSERT INTO `newsletter_art` VALUES (36,2,2,2,'Association \"Géostratégies 2000\"','L\'AX est membre de l\'association [i]Géostratégies 2000[/i]. Ouverte en particulier aux élèves de l\'École et aux membres de l\'AX, cette association organise des manifestations (visites,petits-déjeuners,débats, etc.) auxquelles participent des personnalités de premier plan (politiques, culturelles, monde des affaires, ambassadeurs étrangers, etc...).','Prochains invités : Renaud DONNEDIEU DE VABRES, Jean-Louis BEFFA, Dominique de VILLEPIN, Daniel COHN-BENDIT.\r\n\r\nInformations : http://www.geo2000.org/\r\nCotisation annuelle : 56 EUR (élèves : 28 EUR)\r\nPetit-déjeuner débat : 24 EUR (élèves : 12 EUR, invités : 40 EUR)'); -INSERT INTO `newsletter_art` VALUES (36,3,3,3,'X-Golf : Cinquantenaire de la rencontre X-Centrale','Le cinquantenaire de la rencontre X-Centrale se célébrera les 2 et 3 octobre 2004 au golf du Domaine de Vaugouard à Fontenay sur Loing (45) :\r\n - sam : parcours de qualification (stableford)\r\n - dim : match-play (11 hommes et 5 dames dans chaque camp)\r\n stableford (pour les non-qualifiés)\r\nLogement à l\'hôtel, restauration au club-house, utilisation d\'une voiturette possible, sur réservation avant le 10 septembre.','Informations : http://www.ax-golf.com/\r\nDomaine de Vaugouard : http://www.vaugouard.com/'); -INSERT INTO `newsletter_art` VALUES (36,4,3,4,'X-Europe : semaine de l\'Europe à l\'École','Le groupe organise la semaine de l\'Europe à l\'École, qui comportera quatre conférences majeures :\r\n - \"Europe fédérale ou Europe des nations, regard d\'un Polonais sur une Europe élargie\" : P. NOWINA KONOPKA, vice-recteur du Collège d\'Europe de Natolin (Pologne) ;\r\n\r\n - \"Quelle ambition pour l\'Europe\" : Pascal LAMY (Commissaire européen chargé du commerce) et Jean FRANÇOIS-PONCET (sénateur, ancien Ministre des affaires étrangères)\r\n\r\n - \"L\'Europe de la Recherche : atouts et handicaps\" : Catherine CESARSKY (Présidente de l\'European Southern Observatory)\r\n\r\n - \"Quelles limites pour l\'Europe\" : Pascal BONIFACE (Directeur de l\'Institut des Relations Internationales et Stratégiques) et Pierre BÉHAR (Professeur à l\'Université de la Sarre, à l\'université Paris VIII et à l\'Académie diplomatique de Vienne)','Semaine de l\'Europe : 4 au 7 octobre à l\'École (Palaiseau)\r\nProgramme complet:\r\nhttp://www.polytechnique.fr/eleves/binets/xeurope/'); -INSERT INTO `newsletter_art` VALUES (36,5,3,5,'Groupe X-Musique : réunion','X-Musique, groupe tourné vers la pratique de la musique de chambre, permet aux camarades (et membres de leurs familles) instrumentistes de se rencontrer pour jouer en petites formations (duos, trios, quatuors, quintettes...) lors de séances informelles ou en concert amical.\r\nLe groupe comprend une variété d\'instruments : violon, alto, violoncelle, flûte, hautbois, basson, clarinette, trompette, chant, piano, harpe... ce qui permet une multitude de combinaisons !','Réunion de rentrée : dimanche 10 octobre, à partir de 15h,\r\nchez Jean-François GUILBERT (66)\r\nRenseignements : http://x-musique.polytechnique.org/'); -INSERT INTO `newsletter_art` VALUES (36,6,3,6,'X-Informatique : rencontre annuelle','Tous les détails concernant la 9ème rencontre annuelle du G9+ qui se déroulera mercredi 13 octobre sont disponibles sur le site web.','Site web : http://www.cyberix.org/'); -INSERT INTO `newsletter_art` VALUES (36,7,3,7,'Arplastix : Exposition','Le groupe Arplastix, regroupant peintres et sculpteurs polytechniciens, expose en octobre à l\'ARGR (Amicale Régionale du Groupe Renault)','Exposition : du vendredi 15 au mercredi 27, Lu-Ve 9h-19h\r\nARGR : 27, rue des Abondances 92100 Boulogne-Billancourt'); -INSERT INTO `newsletter_art` VALUES (36,8,3,8,'X-Résistance : Un nouvel ascendant','Le groupe X-Résistance vient de se trouver un nouvel ascendant. \r\nJusqu\'à présent il se considérait seulement comme la réactivation et la transformation en association d\'un groupe X-Résistance réuni de 1947 à 1958, les rangements effectués dans les archives de l\'AX par son délégué général Alain BRISAC ont permis de mettre en évidence un groupe X-Libre, créé à Brazzaville en mai 1941, avec des listes des membres de sa section de Londres. L\'ensemble des archives ainsi retrouvées rejoignent les fonds d\'archives \"X Résistance\" déposé à la bibliothèque de l\'École.','Fonds X-Résistance http://www.xresistance.org/Xarchive.html\r\nX-Résistance http://www.xresistance.org/'); -INSERT INTO `newsletter_art` VALUES (36,9,3,9,'X-Asie : Cambodge : base de données d\'informations','Un site web destiné à recueillir informations et témoignages sur les entreprises et les ONG cambodgiennes a été mis en place par X-Cambodge.','http://x-asie.polytechnique.org/extranet/X-Cambodge/organismes/'); -INSERT INTO `newsletter_art` VALUES (36,10,3,10,'X-Vinicole : Programme d\'activités','Trois manifestations sont définivement arrêtées par des membres du groupe X-Vinicole :\r\n\r\n - Samedi 23 et dimanche 24 octobre, au domaine \"Château Magence\" à St-Pierre-de-Mons (33) : Journée \"Portes ouvertes\" dans le cadre des manifestations du vignoble de Graves.\r\n\r\n - Jeudi 18 novembre de 10:00 à 19:00 au Café \"Signes\", 33 avenue Jean Moulin à Paris (14ème) : Fête du Beaujolais Nouveau.\r\n\r\n - Samedi 20 novembre de 11:00 à 18:00 à la Brasserie \"Georges\", 30 cours de Verdun à Lyon (69) : 8ème salon des Vignerons polytechniciens à Lyon.','Inscriptions et informations sur la liste du groupe X-Vinicole\r\nInscription à la liste : https://www.polytechnique.org/listes/\r\nContact : x.vinicole@maisondesx.com'); -INSERT INTO `newsletter_art` VALUES (36,11,4,11,'Petit-déjeuners polytechniciens','Dominique BUSSEREAU, Secrétaire d\'État au Budget et Bertand DELANOË, Maire de Paris, seront les prochains invités des PDX, de 8:00 à 9:30 à la Maison des X.','lundi 4 octobre : Dominique BUSSEREAU\r\nmardi 9 novembre : Bertrand DELANOË\r\nRenseignements : +33 147 206 281'); -INSERT INTO `newsletter_art` VALUES (36,12,4,12,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU (56), se produira sur le thème [i]La nuit romantique[/i] :\r\n - A. De Musset : La nuit de mai\r\n - M. Moussorgski : une nuit sur le mont chauve\r\n - De Falla : Une nuit dans les jardins d\'Espagne (pianiste Chantal Riou)\r\n - R.Strauss : concerto pour cor (soliste E. Karcher)\r\n - Ch. Gounod : la nuit de Walpurgis (Faust)','mardi 19 octobre, 20:30, salle Gaveau\r\nRéservations spécial X : 01 47 20 62 81 (places à 30, 20 & 15 EUR)'); -INSERT INTO `newsletter_art` VALUES (36,13,4,13,'Congrès en l\'honneur de Benoît MANDELBROT','Un colloque international sur la géométrie fractale aura lieu les 12 et 13 novembre prochains en l\'honneur du 80ième anniversaire de Benoît MANDELBROT (44), le père des fractales. Il aura pour thème : \"FRACTALES EN PROGRES, des mathématiques à la physique, l\'économie, la finance, l\'image,la biologie.\" ','12 et 13 novembre, Paris\r\nsite web http://aeis.ifrance.com/aeis/'); -INSERT INTO `newsletter_art` VALUES (33,15,4,15,'60ème anniversaire de la promo 44','La promo 44, première promo de l\'après-guerre, célèbre son soixantième anniversaire : cérémonie aux Monument aux Morts, puis amphi sur l\'École aujourd\'hui. Une visite de l\'École est prévue l\'après-midi, suivie d\'une partie festive à l\'amphi Arago avec l\'orchestre de jazz de René MAYER (45) et Jean Amadou. Les élèves sont cordialement invités à ce spectacle.','jeudi 10 juin, à l\'École polytechnique'); -INSERT INTO `newsletter_art` VALUES (33,16,4,16,'Concert classique','L\'Orchestre Romantique Européen, sous la direction de Lionel STOLÉRU\r\n(56), se produira sur le thème La Féérie Romantique :\r\n - Verlaine : Amour (récitant : F.Beaulieu)\r\n - Weber : ouverture d\'Obéron\r\n - Massenet : Cendrillon\r\n - Rossini : Variations pour clarinette et orchestre (soliste : M. Arrignon)\r\n - Mendelssohn : ouverture du Songe d\'une nuit d\'été\r\n - Tchaikowsky : La belle au bois dormant (suite de ballet)','mardi 15 juin, 20:30, salle Gaveau\r\nRéservations spécial X : +33 147 206 281\r\n(places à 30, 20 & 15EUR)'); -INSERT INTO `newsletter_art` VALUES (33,17,4,17,'Magnan Promo 58','Nous proposons de nous retrouver à un magnan de promo à mi-décade.\r\nQue ceux qui ont films et photos du voyage au Maroc les apportent pour en faire profiter tout le monde. La participation au magnan est de 35EUR par personne.','Mardi 15 juin à 20:00\r\nMaison des X http://www.maison-des-x.com/\r\nInscription par courrier postal : chèque à l\'ordre de \"Promo 58\" 120, avenue Félix Faure, 75015 Paris\r\nRenseignements : promo58@wanadoo.fr\r\nInscription et paiement en ligne :\r\n http://www.claywall.com/cgi-bin/RAD2/PROX/mod99.cgi\r\n (serveur web de Jacques LEVIN qui a développé l\'application)'); -INSERT INTO `newsletter_art` VALUES (33,18,4,18,'250ème anniversaire de Columbia','À l\'occasion de la célébration du 250ème anniversaire de l\'université Columbia (New York), avec son Président Lee C. BOLLIGER, les Anciens de Columbia sont invités à Londres et à Paris.','http://alumni.columbia.edu/\r\nLondres : 21-22 juin\r\nParis : 24-26 juin'); -INSERT INTO `newsletter_art` VALUES (33,19,4,19,'Hommage à Jean-Louis BASDEVANT','Le Professeur Jean-Louis BASDEVANT, avant de prendre sa retraite, donnera, devant la Promotion 2003, son dernier cours à l\'École mardi 29 juin. Afin de lui rendre hommage, vous êtes conviés à assister à cette ultime prestation, créant ainsi une véritable surprise pour ce personnage qui a marqué de nombreuses générations de Polytechniciens par son enseignement fort apprécié de la mécanique quantique.','mardi 29 juin à 10:30\r\nÉcole polytechnique (Palaiseau), amphithéâtre Poincarré\r\nContact : Patrice Holiner holiner@poly.polytechnique.fr'); -INSERT INTO `newsletter_art` VALUES (33,20,4,20,'L\'ASK subventionne les actions sociales et humanitaires des X','Que l\'ASK vous rappelle tous vos meilleurs souvenirs à l\'X, ou que ces trois lettres n\'évoquent absolument rien, vous êtes concernés. L\'Action Sociale de la Kes est un binet qui dispose effectivement un budget destiné à aider ou encourager les Élèves et Anciens à s\'investir dans des actions à caractère social ou humanitaire.\r\nSi vous souhaitez vous investir (ou si c\'est déjà le cas) dans un projet ou une association, nous pouvons vous apporter conseils et aide (par exemple financière).',' Action Sociale de la Kes\r\nKes des élèves \r\nÉcole polytechnique\r\n91128 Palaiseau cedex\r\n\r\nPrésident : olivier.delande@polytechnique.org\r\nTrésorier : laurent.michelin@polytechnique.org'); -INSERT INTO `newsletter_art` VALUES (33,21,4,21,'Enquête Grandes Écoles au Féminin','Le groupe GEF conduit actuellement une enquête auprès des diplomées de ses huit écoles sur la situation de leurs anciennes. Des groupes qualitatifs se sont tenus en avril, un questionnaire va être envoyé par courriel courant juin, et les résultats seront disponibles à l\'automne.\r\nAvis aux kessiers des promos 72 et plus récentes, aux xettes et à tout camarade qui sait joindre une xette... mesdames, inscrivez-vous sur la liste Xettes de polytechnique.org !','Liste de diffusion : https://www.polytechnique.org/listes/\r\nSite web : http://www.grandesecolesaufeminin.net/\r\nNathalie (84) nathalie.charles@polytechnique.org\r\nAvra (94) avra.tzevelekis@polytechnique.org'); - diff --git a/upgrade/0.9.1/newsleter_cat.sql b/upgrade/0.9.1/newsleter_cat.sql deleted file mode 100644 index d4497ae..0000000 --- a/upgrade/0.9.1/newsleter_cat.sql +++ /dev/null @@ -1,16 +0,0 @@ --- ----------------------------------------------------------------------------- --- newsletter categories --- -create table newsletter_cat ( - cid tinyint unsigned not null auto_increment, - pos tinyint unsigned not null, - titre varchar(128) not null, - PRIMARY KEY (cid), - INDEX (pos) -); -insert into newsletter_cat values(1,1,'Flash Info'); -insert into newsletter_cat values(2,2,'Communications institutionnelles'); -insert into newsletter_cat values(3,3,'Groupes X'); -insert into newsletter_cat values(4,4,'Activités polytechniciennes'); --- --- ----------------------------------------------------------------------------- diff --git a/upgrade/0.9.1/newsleter_ins.sql b/upgrade/0.9.1/newsleter_ins.sql deleted file mode 100644 index 99fe1ea..0000000 --- a/upgrade/0.9.1/newsleter_ins.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table newsletter_ins add column last int not null default 0; -alter table newsletter_ins add column pref enum('text','html') not null default 'html'; -alter table newsletter_ins add index (last); diff --git a/upgrade/0.9.1/update.sh b/upgrade/0.9.1/update.sh deleted file mode 100755 index 4abb039..0000000 --- a/upgrade/0.9.1/update.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -e - -if [ "$UID" != 0 ]; then - echo "has to be run as root" - exit 1 -fi - - - -########################################################### -echo -n "stops mailman" -/etc/init.d/mailman stop &>/dev/null -echo . - -echo -n "now updates mailman to use new Bogofilter policy" -./mailman_update.py | grep "ERROR" || echo . - -echo -n "copies new mails templates" -cp -f ../../mailman/mails/*.txt /etc/mailman/fr/ -echo . - -echo -n "starts mailman" -/etc/init.d/mailman start &>/dev/null -echo . - -########################################################### -echo -n "now drop x4dat.emploi_naf" -echo 'drop table x4dat.emploi_naf;' | mysql -u root x4dat &>/dev/null || echo -n ": FAILED" -echo . - -########################################################### -echo -n "updating newsletter tables" -mysql -u root x4dat < newsleter.sql &>/dev/null || echo 'newsletter.sql FAILED' -mysql -u root x4dat < newsleter_art.sql &>/dev/null || echo 'newsletter_art.sql FAILED' -mysql -u root x4dat < newsleter_cat.sql &>/dev/null || echo 'newsletter_cat.sql FAILED' -mysql -u root x4dat < newsleter_ins.sql &>/dev/null || echo 'newsletter_ins.sql FAILED' -echo '.' - -########################################################### -echo "ALL IS OK. - -don't forget to kill current mailman-rpc.py -you shoul be able to run the new one only with : - - ./mailman-rpc.py -f - -fork problems + SIGHUP handling have been solved." diff --git a/upgrade/0.9.10/00_geoloc.sql b/upgrade/0.9.10/00_geoloc.sql deleted file mode 100644 index 4db8efb..0000000 --- a/upgrade/0.9.10/00_geoloc.sql +++ /dev/null @@ -1,24 +0,0 @@ -CREATE TABLE `geoloc_city_in_maps` ( - `city_id` int(11) NOT NULL default '0', - `map_id` int(11) NOT NULL default '0', - `infos` set('smallest') NOT NULL default '', - PRIMARY KEY (`map_id`,`infos`,`city_id`) -); -insert into admin_a VALUES (11, "Dynamap", "admin/geoloc_dynamap.php", 10); -UPDATE `adresses` AS a, `geoloc_city` AS c SET a.glng = c.lon /100000, a.glat = c.lat /100000 WHERE a.cityid = c.id; -CREATE TABLE `geoloc_maps` ( - `map_id` int(11) NOT NULL default '0', - `name` varchar(50) NOT NULL default '', - `x` double NOT NULL default '0', - `y` double NOT NULL default '0', - `width` double NOT NULL default '0', - `height` double NOT NULL default '0', - `xclip` float NOT NULL default '0', - `yclip` float NOT NULL default '0', - `scale` int(11) NOT NULL default '1', - `parent` int(11) default NULL, - `path` varchar(65) NOT NULL default '', - PRIMARY KEY (`map_id`), - KEY `parent` (`parent`), - KEY `path` (`path`) - ); diff --git a/upgrade/0.9.10/01_events.sql b/upgrade/0.9.10/01_events.sql deleted file mode 100644 index 4de7eb0..0000000 --- a/upgrade/0.9.10/01_events.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE `evenements_vus` ( - `evt_id` smallint(4) unsigned NOT NULL default '0', - `user_id` smallint(4) unsigned NOT NULL default '0', - PRIMARY KEY (`user_id`,`evt_id`) -); diff --git a/upgrade/0.9.10/02_tels.sql b/upgrade/0.9.10/02_tels.sql deleted file mode 100644 index 4af773b..0000000 --- a/upgrade/0.9.10/02_tels.sql +++ /dev/null @@ -1,13 +0,0 @@ -CREATE TABLE `tels` ( - `uid` smallint(5) unsigned NOT NULL default '0', - `adrid` tinyint(1) unsigned NOT NULL default '0', - `telid` tinyint(1) unsigned NOT NULL default '0', - `tel_type` varchar(20) NOT NULL default '', - `tel_pub` enum('private','ax','public') NOT NULL default 'private', - `tel` varchar(30) NOT NULL default '', - PRIMARY KEY (`uid`,`adrid`,`telid`) - ); -INSERT INTO tels SELECT uid, adrid, 0, 'Tél.', tel_pub, tel FROM adresses; -INSERT INTO tels SELECT uid, adrid, 1, 'Fax', tel_pub, fax FROM adresses; -DELETE FROM tels WHERE tel = ""; -ALTER TABLE `adresses` DROP `tel`, DROP `tel_pub`; diff --git a/upgrade/0.9.10/03_xnet.sql b/upgrade/0.9.10/03_xnet.sql deleted file mode 100644 index 3c8aca8..0000000 --- a/upgrade/0.9.10/03_xnet.sql +++ /dev/null @@ -1,4 +0,0 @@ -use groupex -ALTER TABLE `evenements` ADD `noinvite` TINYINT NOT NULL; -use x4dat - diff --git a/upgrade/0.9.10/04_passwd.sql b/upgrade/0.9.10/04_passwd.sql deleted file mode 100644 index 62804c2..0000000 --- a/upgrade/0.9.10/04_passwd.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `auth_user_md5` CHANGE `password` `password` VARCHAR( 40 ) NOT NULL; \ No newline at end of file diff --git a/upgrade/0.9.10/update.sh b/upgrade/0.9.10/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.10/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.11/01_trezo.sql b/upgrade/0.9.11/01_trezo.sql deleted file mode 100644 index 8d9ecac..0000000 --- a/upgrade/0.9.11/01_trezo.sql +++ /dev/null @@ -1 +0,0 @@ -drop table money_trezo; diff --git a/upgrade/0.9.11/02_logger.sql b/upgrade/0.9.11/02_logger.sql deleted file mode 100644 index 0fd1752..0000000 --- a/upgrade/0.9.11/02_logger.sql +++ /dev/null @@ -1,3 +0,0 @@ -use logger; -alter table events change data data varchar(255); -use x4dat; diff --git a/upgrade/0.9.11/03_xnet.sql b/upgrade/0.9.11/03_xnet.sql deleted file mode 100644 index 6d269c5..0000000 --- a/upgrade/0.9.11/03_xnet.sql +++ /dev/null @@ -1,11 +0,0 @@ -use groupex -alter table evenements drop column advertise; -alter table evenements drop column membres_only; -alter table membres add column sexe bool default null; - -INSERT IGNORE INTO membres (uid, asso_id) - SELECT u.user_id AS uid, g.id AS asso_id - FROM x4dat.auth_user_md5 AS u - INNER JOIN asso AS g ON (g.diminutif LIKE u.promo); -use x4dat - diff --git a/upgrade/0.9.11/04_admin.sql b/upgrade/0.9.11/04_admin.sql deleted file mode 100644 index 18e1360..0000000 --- a/upgrade/0.9.11/04_admin.sql +++ /dev/null @@ -1 +0,0 @@ -DROP TABLE admin_a, admin_h1, admin_h2; \ No newline at end of file diff --git a/upgrade/0.9.11/05_email_watch.sql b/upgrade/0.9.11/05_email_watch.sql deleted file mode 100644 index 91879b7..0000000 --- a/upgrade/0.9.11/05_email_watch.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE TABLE `emails_watch` ( - `email` CHAR(60) NOT NULL, - `state` ENUM('pending', 'safe', 'unsafe', 'dangerous') NOT NULL DEFAULT 'pending', - `detection` DATE DEFAULT 0, - `last` TIMESTAMP DEFAULT 0, - `uid` SMALLINT(5) DEFAULT NULL, - `description` TEXT NOT NULL, - PRIMARY KEY(`email`) -); -DROP TABLE `emails_broken`; diff --git a/upgrade/0.9.11/06_validations.sql b/upgrade/0.9.11/06_validations.sql deleted file mode 100644 index b3ca18d..0000000 --- a/upgrade/0.9.11/06_validations.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE `requests_answers` ( -`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , -`category` ENUM( 'alias', 'list', 'nomusage', 'photo', 'evt', 'marketing', 'orange', 'homonyme', 'nl', 'paiement' ) NOT NULL , -`title` VARCHAR( 50 ) NOT NULL , -`answer` TEXT NOT NULL -); diff --git a/upgrade/0.9.11/07_emails.sql b/upgrade/0.9.11/07_emails.sql deleted file mode 100644 index 9897c8a..0000000 --- a/upgrade/0.9.11/07_emails.sql +++ /dev/null @@ -1,8 +0,0 @@ -alter table emails add column panne_level tinyint(1) not null default 0 after panne; -alter table emails change flags flags enum('active', 'filter', 'panne') not null default 'active'; -UPDATE emails SET last = panne WHERE last = 0 AND panne != 0; -UPDATE emails - SET panne_level = 1 - WHERE flags = 'active' - AND DATE_ADD(panne, INTERVAL 2 MONTH) > CURDATE(); - diff --git a/upgrade/0.9.11/08_skins.sql b/upgrade/0.9.11/08_skins.sql deleted file mode 100644 index 6892cba..0000000 --- a/upgrade/0.9.11/08_skins.sql +++ /dev/null @@ -1,4 +0,0 @@ -alter table skins change date date date not null default 0; -INSERT INTO skins (id, name, date, comment, auteur, skin_tpl, ext) - VALUES (13, 'Keynote', '2006-08-09', 'Skin inspirée d\'un thème de Keynote', - 'Florent Bruneau', 'keynote.tpl', 'png'); diff --git a/upgrade/0.9.11/update.sh b/upgrade/0.9.11/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.11/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.12/01_xnet.sql b/upgrade/0.9.12/01_xnet.sql deleted file mode 100644 index 28fd09d..0000000 --- a/upgrade/0.9.12/01_xnet.sql +++ /dev/null @@ -1,27 +0,0 @@ -use groupex; -alter table evenements add column accept_nonmembre tinyint(1) not null default 0; -alter table evenements add column archive tinyint(1) not null default 0; - -create table announces ( - id smallint(4) unsigned not null auto_increment, - user_id smallint(4) unsigned not null default 0, - asso_id smallint(4) unsigned not null default 0, - create_date timestamp(14) default null, - titre varchar(255) not null, - texte mediumtext not null, - contacts mediumtext not null, - peremption date not null default '0000-00-00', - promo_min smallint(4) unsigned not null default 0, - promo_max smallint(4) unsigned not null default 0, - flags set('public') not null default '', - - primary key (id) -); - -create table announces_read ( - announce_id smallint(4) unsigned not null default 0, - user_id smallint(4) unsigned not null default 0, - primary key (announce_id, user_id) -); - -use x4dat; diff --git a/upgrade/0.9.12/02_newsletter.sql b/upgrade/0.9.12/02_newsletter.sql deleted file mode 100644 index 384858c..0000000 --- a/upgrade/0.9.12/02_newsletter.sql +++ /dev/null @@ -1,4 +0,0 @@ -ALTER TABLE newsletter ADD COLUMN short_name varchar(16) DEFAULT NULL; -ALTER TABLE newsletter ADD COLUMN titre_mail varchar(255) NOT NULL DEFAULT ''; -UPDATE newsletter SET titre_mail = IF(locate('§|§',titre), LEFT(titre, LOCATE('§|§', titre) -1),titre); -UPDATE newsletter SET titre = IF(locate('§|§',titre), SUBSTRING(titre, LOCATE('§|§', titre) +3),titre); diff --git a/upgrade/0.9.12/03_validation.sql b/upgrade/0.9.12/03_validation.sql deleted file mode 100644 index c04d705..0000000 --- a/upgrade/0.9.12/03_validation.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE requests_answers CHANGE category category enum('alias','liste','usage','photo','evts','marketing','orange','homonyme','nl','paiements','medal') NOT NULL DEFAULT 'alias'; diff --git a/upgrade/0.9.12/04_paiement.sql b/upgrade/0.9.12/04_paiement.sql deleted file mode 100644 index ffcd486..0000000 --- a/upgrade/0.9.12/04_paiement.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE paiement.transactions ADD `comment` VARCHAR(255) NOT NULL DEFAULT ''; diff --git a/upgrade/0.9.12/update.sh b/upgrade/0.9.12/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.12/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.13/01_tips.sql b/upgrade/0.9.13/01_tips.sql deleted file mode 100644 index d68de24..0000000 --- a/upgrade/0.9.13/01_tips.sql +++ /dev/null @@ -1,14 +0,0 @@ -create table tips ( - id smallint(4) unsigned not null auto_increment, - titre varchar(64) not null, - text mediumtext not null, - priorite tinyint(2) unsigned not null default 127, - peremption date not null default '0000-00-00', - promo_min smallint(4) unsigned not null default 0, - promo_max smallint(4) unsigned not null default 0, - state set('active') not null default 'active', - - primary key (id) -); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/02_xnet.sql b/upgrade/0.9.13/02_xnet.sql deleted file mode 100644 index 8c224b2..0000000 --- a/upgrade/0.9.13/02_xnet.sql +++ /dev/null @@ -1,5 +0,0 @@ -use groupex; -alter table membres change origine origine enum('X', 'ext', 'groupe') not null default 'X'; -alter table asso add column unsub_url varchar(255) not null; -use x4dat; -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/03_medals.sql b/upgrade/0.9.13/03_medals.sql deleted file mode 100644 index 58de90f..0000000 --- a/upgrade/0.9.13/03_medals.sql +++ /dev/null @@ -1,4 +0,0 @@ -alter table profile_medals add column flags set('validation') not null default 'validation'; -update profile_medals set flags = '' where id = 20; -alter table requests_answers change category category enum('alias','liste','usage','photo','evts','marketing','orange','homonyme','nl','paiements','medal','broken') not null; -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/04_axletter.sql b/upgrade/0.9.13/04_axletter.sql deleted file mode 100644 index 492e64e..0000000 --- a/upgrade/0.9.13/04_axletter.sql +++ /dev/null @@ -1,34 +0,0 @@ -CREATE TABLE axletter ( - id int(11) unsigned NOT NULL auto_increment, - shortname varchar(16) default NULL default '', - subject varchar(255) NOT NULL default '', - title varchar(255) NOT NULL default '', - body mediumtext NOT NULL default '', - signature mediumtext NOT NULL default '', - promo_min smallint(4) NOT NULL default 0, - promo_max smallint(4) NOT NULL default 0, - echeance datetime NOT NULL default 0, - date date NOT NULL default 0, - bits set('new', 'sent', 'invalid') NOT NULL default 'new', - - PRIMARY KEY(id), - UNIQUE KEY(shortname) -); -CREATE TABLE axletter_ins ( - user_id smallint(4) NOT NULL default 0, - email varchar(255) default NULL, - flag set('femme') default '', - prenom varchar(32) default NULL, - nom varchar(255) default NULL, - promo smallint(4) default 0, - last int(11) NOT NULL default 0, - hash varchar(32) default NULL, - - PRIMARY KEY(user_id, email), - KEY(last) -); -CREATE TABLE axletter_rights ( - user_id smallint(4) NOT NULL default 0, - PRIMARY KEY(user_id) -); -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/05_ip_watcher.sql b/upgrade/0.9.13/05_ip_watcher.sql deleted file mode 100644 index a354488..0000000 --- a/upgrade/0.9.13/05_ip_watcher.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE TABLE `ip_watch` ( - `ip` CHAR(16) NOT NULL, - `state` ENUM('safe', 'unsafe', 'dangerous', 'ban') NOT NULL DEFAULT 'unsafe', - `detection` DATE DEFAULT 0, - `last` TIMESTAMP DEFAULT 0, - `uid` SMALLINT(5) DEFAULT NULL, - `description` TEXT NOT NULL, - PRIMARY KEY(`ip`) -); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/06_mx_watch.sql b/upgrade/0.9.13/06_mx_watch.sql deleted file mode 100644 index 8799cc4..0000000 --- a/upgrade/0.9.13/06_mx_watch.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE `mx_watch` ( - `host` VARCHAR(64) NOT NULL, - `state` ENUM('ok', 'warning', 'broken') DEFAULT 'ok', - `text` MEDIUMTEXT NOT NULL, - PRIMARY KEY(`host`) -); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/07_logger.sql b/upgrade/0.9.13/07_logger.sql deleted file mode 100644 index 40f367e..0000000 --- a/upgrade/0.9.13/07_logger.sql +++ /dev/null @@ -1,10 +0,0 @@ -use logger; -alter table sessions add column forward_ip varchar(64) default NULL; -alter table sessions add column forward_host varchar(128) default NULL; -alter table sessions add column flags set('proxy') NOT NULL default ''; -alter table sessions add key(forward_ip); -alter table sessions add key(ip); -insert into actions (text, description) values ('view_page', 'Consultation d\'une page'); -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.13/update.sh b/upgrade/0.9.13/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.13/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.14/01_auth_user_md5.sql b/upgrade/0.9.14/01_auth_user_md5.sql deleted file mode 100644 index 4037e64..0000000 --- a/upgrade/0.9.14/01_auth_user_md5.sql +++ /dev/null @@ -1,16 +0,0 @@ -# Security stuff -alter table auth_user_md5 change flags flags set('femme', 'watch') not null; -alter table auth_user_md5 add column naissance_ini date not null default '0000-00-00' after smtppass; - -# Deprecated stuff -alter table auth_user_md5 drop column nom_ini_soundex; -alter table auth_user_md5 drop column prenom_ini_soundex; -alter table auth_user_md5 drop column appli; -alter table auth_user_md5 drop column bits; - -# Advance search -alter table auth_user_md5 add key nationalite(nationalite); -alter table adresses add key country(country); -alter table adresses add key region(region); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/02_auth_user_quick.sql b/upgrade/0.9.14/02_auth_user_quick.sql deleted file mode 100644 index b7bd154..0000000 --- a/upgrade/0.9.14/02_auth_user_quick.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table auth_user_quick add column last_version varchar(16) not null default '0.9.13'; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/03_evenements.sql b/upgrade/0.9.14/03_evenements.sql deleted file mode 100644 index fafc2a8..0000000 --- a/upgrade/0.9.14/03_evenements.sql +++ /dev/null @@ -1,16 +0,0 @@ -alter table evenements change flags flags set('valide', 'archive', 'important') not null; -alter table evenements add post_id smallint(4) unsigned default NULL; -create table evenements_photo ( - eid smallint(4) unsigned not null, - attachmime enum('jpeg', 'png', 'gif') not null default 'jpeg', - attach blob not null, - x smallint(5) unsigned not null default 0, - y smallint(5) unsigned not null default 0, - primary key eid (eid) -) charset=utf8; - -use groupex; -alter table announces add post_id smallint(4) unsigned default NULL; -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/04_newsletter.sql b/upgrade/0.9.14/04_newsletter.sql deleted file mode 100644 index 991e529..0000000 --- a/upgrade/0.9.14/04_newsletter.sql +++ /dev/null @@ -1,12 +0,0 @@ -UPDATE newsletter_art SET body = -REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(body, -"[b]", "'''"), -"[/b]", "'''"), -"[i]", "''"), -"[/i]", "''"), -"[u]", "{+"), -"[/u]", "+}"), -"[title]", "\n!"), -"[/title]", ""), -"[subtitle]", "\n!!"), -"[/subtitle]", ""); diff --git a/upgrade/0.9.14/05_marketing.sql b/upgrade/0.9.14/05_marketing.sql deleted file mode 100644 index 2998d0d..0000000 --- a/upgrade/0.9.14/05_marketing.sql +++ /dev/null @@ -1,13 +0,0 @@ -alter table register_marketing add column message varchar(16) not null default 'default'; -alter table register_marketing add column message_data varchar(64); -create table register_subs -( - uid smallint(4) unsigned not null, - type enum('list', 'group') not null default 'list', - sub varchar(32) not null, - domain varchar(64) not null, - - primary key id (uid, type, sub, domain) -) charset=utf8; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/06_search.sql b/upgrade/0.9.14/06_search.sql deleted file mode 100644 index 32b6d7a..0000000 --- a/upgrade/0.9.14/06_search.sql +++ /dev/null @@ -1,5 +0,0 @@ -alter table search_name add column soundex char(4) not null; -alter table search_name add key soundex (soundex); -alter table search_name add flags set('public') not null default ''; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/07_survey.sql b/upgrade/0.9.14/07_survey.sql deleted file mode 100644 index 2e0927c..0000000 --- a/upgrade/0.9.14/07_survey.sql +++ /dev/null @@ -1,35 +0,0 @@ -CREATE TABLE `survey_answers` ( - `id` smallint(5) unsigned NOT NULL auto_increment, - `vote_id` smallint(5) unsigned NOT NULL, - `question_id` smallint(3) unsigned NOT NULL, - `answer` text NOT NULL, - PRIMARY KEY (`id`), - KEY `vote` (`vote_id`,`question_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - -CREATE TABLE `survey_surveys` ( - `id` smallint(4) unsigned NOT NULL auto_increment, - `questions` mediumtext NOT NULL, - `title` varchar(255) NOT NULL, - `description` text NOT NULL, - `author_id` smallint(5) unsigned NOT NULL, - `end` date NOT NULL default '0000-00-00', - `mode` tinyint(2) unsigned NOT NULL default '0', - `promos` varchar(255) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - -CREATE TABLE `survey_votes` ( - `id` smallint(5) unsigned NOT NULL auto_increment, - `survey_id` smallint(4) unsigned NOT NULL, - `user_id` smallint(5) unsigned NOT NULL, - PRIMARY KEY (`id`), - KEY `voter` (`survey_id`,`user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - -ALTER TABLE `requests_answers` MODIFY `category` enum('alias','liste','usage','photo','evts','marketing','orange','homonyme','nl','paiements','medal','broken','surveys') NOT NULL default 'alias'; - -# vim: set syntax=mysql: diff --git a/upgrade/0.9.14/08_autocomplete.sql b/upgrade/0.9.14/08_autocomplete.sql deleted file mode 100644 index b7a030e..0000000 --- a/upgrade/0.9.14/08_autocomplete.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE `search_autocomplete` ( - `name` varchar(20) NOT NULL, - `query` varchar(100) NOT NULL, - `result` text NOT NULL, - `generated` datetime NOT NULL, - PRIMARY KEY (`name`,`query`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/upgrade/0.9.14/09_emails.sql b/upgrade/0.9.14/09_emails.sql deleted file mode 100644 index b30624a..0000000 --- a/upgrade/0.9.14/09_emails.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table emails change column flags flags enum('active','filter','panne','disable') not null default 'active'; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.14/connect.db.inc.php b/upgrade/0.9.14/connect.db.inc.php deleted file mode 100644 index 1cade25..0000000 --- a/upgrade/0.9.14/connect.db.inc.php +++ /dev/null @@ -1,31 +0,0 @@ -baseurl = "https://www.polytechnique.org"; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/upgrade/0.9.14/geoloc.utf8.php b/upgrade/0.9.14/geoloc.utf8.php deleted file mode 100755 index 2c772f4..0000000 --- a/upgrade/0.9.14/geoloc.utf8.php +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/php5 -dbcharset = 'latin1'; - -$tables = array ('city' => array('id', 'alias'), - 'city_in_maps' => array('city_id', 'map_id', 'infos'), - 'maps' => array('map_id'), - 'pays' => array('a2'), - 'region' => array('a2', 'region')); -foreach ($tables as $table => $keys) { - $res = XDB::query("SELECT * FROM geoloc_$table"); - if (!$res) { - echo "$table\n"; - continue; - } - $all = $res->fetchAllAssoc(); - foreach ($all as &$array) { - $from = array(); - $to = array(); - foreach ($array as $key=>$value) { - if (in_array($key, $keys)) { - $from[] = $key . '=' . XDB::escape($value); - } - $valued = utf8_decode($value); - if (is_utf8($value) && $valued != $value) { - $to[] = $key . '=' . XDB::escape($valued); - } - } - if (!empty($to)) { - $to = implode(', ', $to); - $from = implode(' AND ', $from); - $sql = "UPDATE geoloc_$table SET $to WHERE $from"; - if (!XDB::execute($sql)) { - echo "Echec : $sql\n"; - } elseif (XDB::affectedRows() == 0) { - echo "$sql\n"; - } - } - } -} - -?> diff --git a/upgrade/0.9.14/update.sh b/upgrade/0.9.14/update.sh deleted file mode 100755 index 81d34d6..0000000 --- a/upgrade/0.9.14/update.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - -########################################################### - -echo "we will now convert the wiki spool to UTF8. This may cause page corruption." - -./wiki.utf8.php - -########################################################### - -echo "fix geoloc table charset - -please hit ^D to continue" - -cat - -./geoloc.utf8.php - -########################################################### - -echo "upgrading database" - -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - -echo "we will now upgrade the banana spool - -please hit ^D to continue -" - -cat - -pushd ../../bin -rm -rf /var/spool/banana/MLArchive -rm -f /var/spool/banana/templates_c/* -./banana.spoolgen.php -popd - -############################################################ diff --git a/upgrade/0.9.14/wiki.utf8.sh b/upgrade/0.9.14/wiki.utf8.sh deleted file mode 100644 index 63c56af..0000000 --- a/upgrade/0.9.14/wiki.utf8.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -WIKISPOOLDIR='../../spool/wiki.d/' -IMAGESPOOLDIR='../../spool/uploads/' - -find $WIKISPOOLDIR -name 'cache_*' -or -name 'tmp_*' -exec rm {} ";" -for i in `find $WIKISPOOLDIR -type f`; do - CONV=`echo -n $i | iconv -t UTF-8` - mv $i $i.latin1 - iconv -f latin1 -t UTF-8 $i.latin1 > $CONV -done - -for i in `find $IMAGESPOOLDIR -type f`; do - CONV=`echo -n $i | iconv -f latin1 -t UTF-8` - if [ $i != $CONV ]; then - mv $i $CONV - fi -done - -echo "Les pages de wiki ont ete converites en UTF-8" -echo "Verifie que tout c'est bien passe en presse ^D" -cat - -find $WIKISPOOLDIR -name '*.latin1' -exec rm {} ";" -chown -R www-data:www-data $WIKISPOOLDIR - diff --git a/upgrade/0.9.15/01_mailman.sql b/upgrade/0.9.15/01_mailman.sql deleted file mode 100644 index 1bb1c64..0000000 --- a/upgrade/0.9.15/01_mailman.sql +++ /dev/null @@ -1,13 +0,0 @@ -CREATE TABLE ml_moderate ( - ml VARCHAR(64) NOT NULL, - domain VARCHAR(64) NOT NULL, - mid SMALLINT(5) UNSIGNED NOT NULL, - uid SMALLINT(5) UNSIGNED NOT NULL, - action ENUM('accept', 'refuse', 'delete') NOT NULL, - ts TIMESTAMP NOT NULL, - message TEXT, - handler INT(8) UNSIGNED DEFAULT NULL, - PRIMARY KEY(ml, domain, mid) -) CHARSET=utf8; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/02_entreprises.sql b/upgrade/0.9.15/02_entreprises.sql deleted file mode 100644 index d4abbb4..0000000 --- a/upgrade/0.9.15/02_entreprises.sql +++ /dev/null @@ -1,10 +0,0 @@ -alter table entreprises add column cityid int(11) default null after city; -alter table entreprises add column regiontxt varchar(80) not null after region; -alter table entreprises add column flags set('geoloc') not null; -alter table entreprises add column glat float(9,6) not null default 0; -alter table entreprises add column glng float(9,6) not null default 0; -alter table entreprises add key cityid (cityid); -alter table entreprises add key country (country); -alter table entreprises add key region (region); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/03_asso.sql b/upgrade/0.9.15/03_asso.sql deleted file mode 100644 index 88301a4..0000000 --- a/upgrade/0.9.15/03_asso.sql +++ /dev/null @@ -1,5 +0,0 @@ -use groupex; -ALTER TABLE asso CHANGE COLUMN pub pub enum('public','private','membre') not null default 'public'; -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/04_announces.sql b/upgrade/0.9.15/04_announces.sql deleted file mode 100644 index 2f9eeaf..0000000 --- a/upgrade/0.9.15/04_announces.sql +++ /dev/null @@ -1,6 +0,0 @@ -alter table evenements change flags flags set('valide','archive','important','wiki') not null; -use groupex -alter table asso add column flags set('wiki_desc') not null; -use x4dat - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/05_payment.sql b/upgrade/0.9.15/05_payment.sql deleted file mode 100644 index ffc7483..0000000 --- a/upgrade/0.9.15/05_payment.sql +++ /dev/null @@ -1,4 +0,0 @@ -use groupex; -alter table evenements_participants add column flags set('notify_payment') not null after nb; -use x4dat; -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/06_mail_send.sql b/upgrade/0.9.15/06_mail_send.sql deleted file mode 100644 index 0474d78..0000000 --- a/upgrade/0.9.15/06_mail_send.sql +++ /dev/null @@ -1,8 +0,0 @@ -create table email_send_save ( - uid smallint(5) unsigned not null, - data blob not null, - - primary key uid (uid) -) CHARSET=utf8; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/07_forums.sql b/upgrade/0.9.15/07_forums.sql deleted file mode 100644 index 86419fc..0000000 --- a/upgrade/0.9.15/07_forums.sql +++ /dev/null @@ -1,5 +0,0 @@ -use forums; -alter table profils change flags flags set('threads','automaj','xface') not null; -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.15/update.sh b/upgrade/0.9.15/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.15/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.16/00_profile.sql b/upgrade/0.9.16/00_profile.sql deleted file mode 100644 index 8e37d18..0000000 --- a/upgrade/0.9.16/00_profile.sql +++ /dev/null @@ -1,13 +0,0 @@ -create table watch_profile ( - uid int(5) unsigned not null, - ts timestamp not null default CURRENT_TIMESTAMP, - field enum('nom', 'freetext', 'mobile', 'nationalite', 'nick', 'web', 'appli1', 'appli2', - 'addresses', 'section', 'binets', 'medals', 'cv', 'jobs', 'photo'), - - primary key field (uid, field) -) charset=utf8; - - -alter table auth_user_quick change column profile_freetext profile_freetext mediumtext; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/01_utf8.sql b/upgrade/0.9.16/01_utf8.sql deleted file mode 100644 index dc4b3ab..0000000 --- a/upgrade/0.9.16/01_utf8.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER DATABASE `x4dat` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; - diff --git a/upgrade/0.9.16/02_axletter.sql b/upgrade/0.9.16/02_axletter.sql deleted file mode 100644 index 175996c..0000000 --- a/upgrade/0.9.16/02_axletter.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table axletter change column shortname short_name varchar(16) unique key; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/03_mail_storage.sql b/upgrade/0.9.16/03_mail_storage.sql deleted file mode 100644 index 9542977..0000000 --- a/upgrade/0.9.16/03_mail_storage.sql +++ /dev/null @@ -1,4 +0,0 @@ -ALTER TABLE auth_user_md5 ADD COLUMN mail_storage SET('imap', 'googleapps') DEFAULT '' NOT NULL AFTER smtppass; -UPDATE auth_user_md5 SET mail_storage = 'imap'; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/04_ip.sql b/upgrade/0.9.16/04_ip.sql deleted file mode 100644 index ba8260f..0000000 --- a/upgrade/0.9.16/04_ip.sql +++ /dev/null @@ -1,44 +0,0 @@ -USE logger; - -ALTER TABLE sessions -ADD COLUMN ip2 INT(11) UNSIGNED NOT NULL, -ADD COLUMN forward_ip2 INT(11) UNSIGNED DEFAULT NULL; - -UPDATE sessions - SET ip2 = SUBSTRING_INDEX(ip, ".", 1) * 256 * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 2), ".", -1) * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 3), ".", -1) * 256 - + SUBSTRING_INDEX(ip, ".", -1), - forward_ip2 = SUBSTRING_INDEX(forward_ip, ".", 1) * 256 * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(forward_ip, ".", 2), ".", -1) * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(forward_ip, ".", 3), ".", -1) * 256 - + SUBSTRING_INDEX(forward_ip, ".", -1); - -ALTER TABLE sessions -DROP COLUMN ip, -DROP COLUMN forward_ip, -CHANGE COLUMN ip2 ip INT(11) UNSIGNED NOT NULL, -CHANGE COLUMN forward_ip2 forward_ip INT(11) UNSIGNED DEFAULT NULL, -ADD INDEX ip (ip), -ADD INDEX forward_ip (forward_ip); - -USE x4dat; - -ALTER TABLE ip_watch -ADD COLUMN ip2 INT(11) UNSIGNED NOT NULL; - -UPDATE ip_watch - SET ip2 = SUBSTRING_INDEX(ip, ".", 1) * 256 * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 2), ".", -1) * 256 * 256 - + SUBSTRING_INDEX(SUBSTRING_INDEX(ip, ".", 3), ".", -1) * 256 - + SUBSTRING_INDEX(ip, ".", -1); - -ALTER TABLE ip_watch -DROP PRIMARY KEY, -DROP COLUMN ip, -CHANGE COLUMN ip2 ip INT(11) UNSIGNED NOT NULL, -ADD COLUMN mask int(11) unsigned NOT NULL DEFAULT 4294967295, -ADD PRIMARY KEY ip (ip), -ADD INDEX network (ip, mask); - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/05_xnet_announce_photo.sql b/upgrade/0.9.16/05_xnet_announce_photo.sql deleted file mode 100644 index 97d3d40..0000000 --- a/upgrade/0.9.16/05_xnet_announce_photo.sql +++ /dev/null @@ -1,16 +0,0 @@ -use groupex; - -CREATE TABLE `announces_photo` ( - `eid` smallint(4) unsigned NOT NULL, - `attachmime` enum('jpeg','png','gif') NOT NULL default 'jpeg', - `attach` blob NOT NULL, - `x` smallint(5) unsigned NOT NULL default '0', - `y` smallint(5) unsigned NOT NULL default '0', - PRIMARY KEY (`eid`) -) CHARSET=utf8; - -alter table groupex.announces change column flags flags set('public', 'photo') not null; - -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/06_google_apps.sql b/upgrade/0.9.16/06_google_apps.sql deleted file mode 100644 index 5947f34..0000000 --- a/upgrade/0.9.16/06_google_apps.sql +++ /dev/null @@ -1,86 +0,0 @@ --- This SQL table comes from the 'gapps-daemon' project. - --- Table `gapps_reporting`. --- The table contains daily statistics of the Google Apps domain. They are --- obtained with the Summary and Actvity reports of the Google Apps Reorting --- API. -CREATE TABLE IF NOT EXISTS `gapps_reporting` ( - date DATE NOT NULL, - num_accounts INTEGER UNSIGNED DEFAULT NULL, - count_1_day_actives INTEGER UNSIGNED DEFAULT NULL, - count_7_day_actives INTEGER UNSIGNED DEFAULT NULL, - count_14_day_actives INTEGER UNSIGNED DEFAULT NULL, - count_30_day_actives INTEGER UNSIGNED DEFAULT NULL, - count_30_day_idle INTEGER UNSIGNED DEFAULT NULL, - count_60_day_idle INTEGER UNSIGNED DEFAULT NULL, - count_90_day_idle INTEGER UNSIGNED DEFAULT NULL, - usage_in_bytes BIGINT UNSIGNED DEFAULT NULL, - quota_in_mb INTEGER UNSIGNED DEFAULT NULL, - PRIMARY KEY(date) -) CHARSET=utf8; - --- Table `gapps_accounts`. --- Holds the Google Apps account list, ie. a list of all registered accounts on --- the Google Apps domain. -CREATE TABLE IF NOT EXISTS `gapps_accounts` ( - -- Application-specific fields. - l_userid SMALLINT UNSIGNED DEFAULT NULL, - l_sync_password BOOL DEFAULT TRUE, - l_activate_mail_redirection BOOL DEFAULT TRUE, - - -- Shared fields. - g_account_id CHAR(16) DEFAULT NULL, - g_account_name VARCHAR(256) NOT NULL, - g_first_name VARCHAR(40) NOT NULL, - g_last_name VARCHAR(40) NOT NULL, - g_status ENUM('unprovisioned', 'disabled', 'active') DEFAULT 'unprovisioned', - g_admin BOOL DEFAULT NULL, - g_suspension VARCHAR(256) DEFAULT NULL, - - -- Google-owned fields. - r_disk_usage BIGINT DEFAULT NULL, - r_creation DATE DEFAULT NULL, - r_last_login DATE DEFAULT NULL, - r_last_webmail DATE DEFAULT NULL, - - -- Indexes. - PRIMARY KEY(g_account_name), - INDEX l_userid(l_userid) -) CHARSET=utf8; - --- Table `gapps_queue`. --- Holds queued API requests that are to be processed by the gappsd. It also --- includes processed but not yet acknowledged requests. -CREATE TABLE IF NOT EXISTS `gapps_queue` ( - -- Queue identification fields. - q_id INT NOT NULL AUTO_INCREMENT, - q_owner_id SMALLINT UNSIGNED DEFAULT NULL, - q_recipient_id SMALLINT UNSIGNED DEFAULT NULL, - - -- Queue management information. - p_entry_date DATETIME NOT NULL, - p_notbefore_date DATETIME NOT NULL, - p_start_date DATETIME DEFAULT NULL, - p_end_date DATETIME DEFAULT NULL, - p_status ENUM('idle', 'active', 'success', 'hardfail', 'softfail') DEFAULT 'idle' NOT NULL, - p_priority ENUM('immediate', 'normal', 'offline') DEFAULT 'offline' NOT NULL, - p_admin_request BOOLEAN DEFAULT false NOT NULL, - - -- Job content fields. - j_type ENUM('r_activity', 'r_accounts', 'u_create', 'u_delete', 'u_update', 'u_sync') NOT NULL, - j_parameters TEXT DEFAULT NULL, - - -- Job execution result fields. - r_softfail_date DATETIME DEFAULT NULL, - r_softfail_count SMALLINT DEFAULT 0 NOT NULL, - r_result VARCHAR(256) DEFAULT NULL, - - -- Indexes. - PRIMARY KEY(q_id), - INDEX q_owner_id(q_owner_id), - INDEX q_recipient_id(q_recipient_id), - INDEX p_status(p_status), - INDEX p_priority(p_priority) -) CHARSET=utf8; - --- vim:set syntax=mysql: diff --git a/upgrade/0.9.16/07_google_apps.sql b/upgrade/0.9.16/07_google_apps.sql deleted file mode 100644 index c5942f0..0000000 --- a/upgrade/0.9.16/07_google_apps.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE `requests_answers` MODIFY `category` enum('alias','liste','usage','photo','evts', 'gapps-unsuspend', 'marketing','orange','homonyme','nl','paiements','medal','broken','surveys') NOT NULL default 'alias'; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/08_forums.sql b/upgrade/0.9.16/08_forums.sql deleted file mode 100644 index 00af187..0000000 --- a/upgrade/0.9.16/08_forums.sql +++ /dev/null @@ -1,15 +0,0 @@ -USE forums; - -CREATE TABLE IF NOT EXISTS `innd` ( - `id_innd` int(10) unsigned NOT NULL auto_increment, - `ipmin` int(10) unsigned default '0' COMMENT 'ip_address', - `ipmax` int(10) unsigned default '4294967295' COMMENT 'ip_address', - `uid` smallint(5) unsigned default NULL, - `read_perm` varchar(100) default '!*', - `write_perm` varchar(100) default '!*', - `priority` tinyint(1) unsigned default '255', - `comment` text, - PRIMARY KEY (`id_innd`) -) DEFAULT CHARSET=utf8; - -INSERT INTO `innd` VALUES (1,0,4294967295,NULL,'xorg.*,!xorg.prive.*','xorg.*,!xorg.prive.*,!xorg.pa.emploi',0,'par defaut pour tous'); diff --git a/upgrade/0.9.16/09_watch_cat.sql b/upgrade/0.9.16/09_watch_cat.sql deleted file mode 100644 index 7b11027..0000000 --- a/upgrade/0.9.16/09_watch_cat.sql +++ /dev/null @@ -1,7 +0,0 @@ -ALTER TABLE watch_cat ADD COLUMN mail_sg_xette varchar(80) DEFAULT NULL AFTER mail_sg; -UPDATE watch_cat SET mail_sg_xette = 'Cette camarade a mis sa fiche à jour' WHERE id = 1; -UPDATE watch_cat SET mail_sg_xette = 'Cette camarade s\'est inscrite' WHERE id = 2; -UPDATE watch_cat SET mail_sg_xette = 'Cette camarade nous a quittés' WHERE id = 3; -UPDATE watch_cat SET mail_sg_xette = 'Cette camarade fête son anniversaire cette semaine' WHERE id = 4; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/10_logger.sql b/upgrade/0.9.16/10_logger.sql deleted file mode 100644 index fab186d..0000000 --- a/upgrade/0.9.16/10_logger.sql +++ /dev/null @@ -1,10 +0,0 @@ -INSERT INTO logger.actions (text, description) - VALUES ('view_profile', 'Consultation d\'une fiche'), - ('search', 'Réalisation d\'une recherche'); - -use logger; -ALTER TABLE events ADD INDEX action (action); - -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/connect.db.inc.php b/upgrade/0.9.16/connect.db.inc.php deleted file mode 100644 index 2e66895..0000000 --- a/upgrade/0.9.16/connect.db.inc.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/upgrade/0.9.16/pr11_nl.sql b/upgrade/0.9.16/pr11_nl.sql deleted file mode 100644 index 12a12db..0000000 --- a/upgrade/0.9.16/pr11_nl.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table newsletter_ins add column hash varchar(32) default null; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.16/update.sh b/upgrade/0.9.16/update.sh deleted file mode 100755 index b38d294..0000000 --- a/upgrade/0.9.16/update.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -echo "Upgrading bogofilter settings for ML" -sudo -u list ./upgrade_lists.py - -mailman_stop -mailman_templates -mailman_start - -########################################################### - -echo "fixing the xnetevents aliases (this may be a long operation)" - -./xnetevents.list.php - -########################################################### - -echo "upgrading the database" - -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.16/upgrade_lists.py b/upgrade/0.9.16/upgrade_lists.py deleted file mode 100755 index d521f8b..0000000 --- a/upgrade/0.9.16/upgrade_lists.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/python - -import sys -sys.path.append('/usr/lib/mailman/bin') -import paths -from Mailman import MailList -from Mailman import Utils -from Mailman import mm_cfg - -def get_bogo_level(mlist): - """ Retreive the old style bogo level """ - try: - if mlist.header_filter_rules == []: - return 0 - try: - action = mlist.header_filter_rules[1][1] - return 2 - except: - action = mlist.header_filter_rules[0][1] - if action == mm_cfg.HOLD: - return 1 - elif action == mm_cfg.DISCARD: - return 3 - except: - return 0 - -def set_bogo_level(mlist, level): - """ Convert bogo level to the new level structure """ - if level == 0: - return - hfr = [] - if level == 1: - hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - elif level == 2: - hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) - elif level == 3: - hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) - hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) - mlist.Lock() - mlist.header_filter_rules = hfr - mlist.Save() - mlist.Unlock() - - -names = Utils.list_names() -names.sort() -for name in names: - mlist = MailList.MailList(name, lock=0) - set_bogo_level(mlist, get_bogo_level(mlist)) - diff --git a/upgrade/0.9.16/xnetevents.list.php b/upgrade/0.9.16/xnetevents.list.php deleted file mode 100755 index 60dab53..0000000 --- a/upgrade/0.9.16/xnetevents.list.php +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/php5 -xnet->evts_domain, - '-participants@'.$globals->xnet->evts_domain); - -// Fixes the alias recipients for each list. -while (list($eid, $asso_id, $shortname, $absent_vid, $participant_vid) = $events->next()) { - $recipient_count = array(); - foreach (array($absent_vid, $participant_vid) as $vid) { - $res = XDB::query("SELECT COUNT(*) FROM virtual_redirect WHERE vid = {?}", $vid); - $recipient_count[$vid] = $res->fetchOneCell(); - } - - // Updates the alias for participants. - XDB::execute("DELETE FROM virtual_redirect WHERE vid = {?}", $participant_vid); - XDB::execute( - "INSERT INTO virtual_redirect ( - SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect - FROM groupex.evenements_participants AS ep - LEFT JOIN groupex.membres AS m ON (ep.uid = m.uid) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = ep.uid) - LEFT JOIN aliases AS a ON (a.id = ep.uid AND a.type = 'a_vie') - WHERE ep.eid = {?} AND ep.nb > 0 - GROUP BY ep.uid)", - $participant_vid, '@'.$globals->mail->domain, $eid); - - // Updates the alias for absents. - XDB::execute("DELETE FROM virtual_redirect WHERE vid = {?}", $absent_vid); - XDB::execute( - "INSERT INTO virtual_redirect ( - SELECT {?} AS vid, IF(u.nom IS NULL, m.email, CONCAT(a.alias, {?})) AS redirect - FROM groupex.membres AS m - LEFT JOIN groupex.evenements_participants AS ep ON (ep.uid = m.uid AND ep.eid = {?}) - LEFT JOIN auth_user_md5 AS u ON (u.user_id = m.uid) - LEFT JOIN aliases AS a ON (a.id = m.uid AND a.type = 'a_vie') - WHERE m.asso_id = {?} AND ep.uid IS NULL - GROUP BY m.uid)", - $absent_vid, "@".$globals->mail->domain, $eid, $asso_id); - - // Lists alias recipient count changes. - $new_recipient_count = array(); - foreach (array($absent_vid, $participant_vid) as $vid) { - $res = XDB::query("SELECT COUNT(*) FROM virtual_redirect WHERE vid = {?}", $vid); - $new_recipient_count[$vid] = $res->fetchOneCell(); - } - - if ($new_recipient_count[$absent_vid] != $recipient_count[$absent_vid] || - $new_recipient_count[$participant_vid] != $recipient_count[$participant_vid]) { - printf(" Fixed aliases for event %d (%s): absent list %d -> %d, participant list %d -> %d\n", - $eid, $shortname, - $recipient_count[$absent_vid], $new_recipient_count[$absent_vid], - $recipient_count[$participant_vid], $new_recipient_count[$participant_vid]); - } -} diff --git a/upgrade/0.9.17/00_password.sql b/upgrade/0.9.17/00_password.sql deleted file mode 100644 index 5057806..0000000 --- a/upgrade/0.9.17/00_password.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Switches to SHA1 password storage for register_pending. -ALTER TABLE register_pending CHANGE COLUMN password password VARCHAR(40) NOT NULL; - --- Disables MD5(""), SHA1("") and LEFT(SHA1(""), 32) as password. -UPDATE register_pending SET password = "" WHERE password IN ("d41d8cd98f00b204e9800998ecf8427e", "da39a3ee5e6b4b0d3255bfef95601890afd80709", "da39a3ee5e6b4b0d3255bfef95601890"); -UPDATE auth_user_md5 SET password = "" WHERE password IN ("d41d8cd98f00b204e9800998ecf8427e", "da39a3ee5e6b4b0d3255bfef95601890afd80709", "da39a3ee5e6b4b0d3255bfef95601890"); - --- vim:set syntax=mysql: diff --git a/upgrade/0.9.17/01_smallint_to_int.sql b/upgrade/0.9.17/01_smallint_to_int.sql deleted file mode 100644 index d7f3f86..0000000 --- a/upgrade/0.9.17/01_smallint_to_int.sql +++ /dev/null @@ -1,39 +0,0 @@ -ALTER TABLE adresses MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE aliases MODIFY COLUMN id INT NOT NULL DEFAULT 0; -ALTER TABLE applis_ins MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE auth_user_md5 MODIFY COLUMN user_id INT NOT NULL AUTO_INCREMENT; -ALTER TABLE auth_user_quick MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE axletter_ins MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE axletter_rights MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE binets_ins MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE competences_ins MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE contacts MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE email_send_save MODIFY COLUMN uid INT NOT NULL; -ALTER TABLE emails_watch MODIFY COLUMN uid INT DEFAULT NULL; -ALTER TABLE entreprises MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE evenements MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE evenements_vus MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE gapps_accounts MODIFY COLUMN l_userid INT DEFAULT NULL; -ALTER TABLE gapps_queue MODIFY COLUMN q_owner_id INT DEFAULT NULL; -ALTER TABLE gapps_queue MODIFY COLUMN q_recipient_id INT DEFAULT NULL; -ALTER TABLE groupesx_ins MODIFY COLUMN guid INT NOT NULL DEFAULT 0; -ALTER TABLE homonymes MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE ip_watch MODIFY COLUMN uid INT DEFAULT NULL; -ALTER TABLE langues_ins MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE mentor MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE mentor_pays MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE mentor_secteurs MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE ml_moderate MODIFY COLUMN mid INT NOT NULL; -ALTER TABLE ml_moderate MODIFY COLUMN uid INT NOT NULL; -ALTER TABLE newsletter_ins MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE perte_pass MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE photo MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE profile_medals_sub MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE register_subs MODIFY COLUMN uid INT NOT NULL; -ALTER TABLE survey_surveys MODIFY COLUMN author_id INT NOT NULL; -ALTER TABLE survey_votes MODIFY COLUMN user_id INT NOT NULL; -ALTER TABLE tels MODIFY COLUMN uid INT NOT NULL DEFAULT 0; -ALTER TABLE user_changes MODIFY COLUMN user_id INT NOT NULL DEFAULT 0; -ALTER TABLE watch_profile MODIFY COLUMN uid INT NOT NULL; - -# vim:set syntax=sql: diff --git a/upgrade/0.9.17/02_requests_hidden.sql b/upgrade/0.9.17/02_requests_hidden.sql deleted file mode 100644 index 94c8248..0000000 --- a/upgrade/0.9.17/02_requests_hidden.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE requests_hidden ( - user_id INT NOT NULL, - hidden_requests TEXT NOT NULL, - PRIMARY KEY(user_id) -) CHARSET=utf8; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.17/03_xnetgrp.sql b/upgrade/0.9.17/03_xnetgrp.sql deleted file mode 100644 index 7f25048..0000000 --- a/upgrade/0.9.17/03_xnetgrp.sql +++ /dev/null @@ -1,7 +0,0 @@ -use groupex; - -alter table asso change column flags flags set('wiki_desc', 'notif_unsub') not null; - -use x4dat; - -# vim:set syntax=mysql: diff --git a/upgrade/0.9.17/update.sh b/upgrade/0.9.17/update.sh deleted file mode 100755 index f351939..0000000 --- a/upgrade/0.9.17/update.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - diff --git a/upgrade/0.9.2/00_auth_user_quicl.sql b/upgrade/0.9.2/00_auth_user_quicl.sql deleted file mode 100644 index 5be4ad1..0000000 --- a/upgrade/0.9.2/00_auth_user_quicl.sql +++ /dev/null @@ -1,14 +0,0 @@ -create table auth_user_quick ( - user_id smallint not null, - lastnewslogin timestamp not null, - skin tinyint not null, - primary key(user_id) -); - -insert into auth_user_quick ( - select user_id,lastnewslogin,skin - from auth_user_md5 -); - -alter table auth_user_md5 drop column lastnewslogin; -alter table auth_user_md5 drop column skin; diff --git a/upgrade/0.9.2/99_virtual.sql b/upgrade/0.9.2/99_virtual.sql deleted file mode 100644 index c8a63fc..0000000 --- a/upgrade/0.9.2/99_virtual.sql +++ /dev/null @@ -1,36 +0,0 @@ --------------------------------------------------------------------------------- --- alters --------------------------------------------------------------------------------- -alter table virtual change column vid vid int not null auto_increment; -alter table virtual change column alias alias varchar(255) not null; -alter table virtual change column type type enum('user','list','dom') not null default 'user'; -alter table virtual add unique (alias) ; -alter table virtual_redirect change column vid vid int not null auto_increment; -alter table virtual_redirect add index (redirect); - --------------------------------------------------------------------------------- --- copies melix.net --------------------------------------------------------------------------------- -insert into virtual - select null,domain,'user' - from groupex.aliases - where domain like '%@melix.net'; - -insert into virtual_redirect - select vid,CONCAT(email,'@m4x.org') - from virtual AS v - inner join groupex.aliases as d ON(v.alias=d.domain); - -delete from groupex.aliases where domain like '%@melix.net'; - --------------------------------------------------------------------------------- --- establish @melix.org -> @melix.net --------------------------------------------------------------------------------- -insert into virtual (alias,type) VALUES('@melix.org','dom'); -insert into virtual_redirect - select vid,'@melix.net' - from virtual - where alias='@melix.org'; - -delete from groupex.aliases where domain = '@melix.org'; - diff --git a/upgrade/0.9.2/clean.sql b/upgrade/0.9.2/clean.sql deleted file mode 100644 index aa6bb6e..0000000 --- a/upgrade/0.9.2/clean.sql +++ /dev/null @@ -1,3 +0,0 @@ -drop table x4dat.alias_demande; -drop table x4dat.skin_concept; -drop table x4dat.nb_recherches; diff --git a/upgrade/0.9.2/del_identification.sql b/upgrade/0.9.2/del_identification.sql deleted file mode 100644 index 9df7b40..0000000 --- a/upgrade/0.9.2/del_identification.sql +++ /dev/null @@ -1,16 +0,0 @@ -ALTER TABLE auth_user_md5 MODIFY perms enum('user', 'admin', 'ext', 'non-inscrit') NOT NULL DEFAULT 'user'; -ALTER TABLE auth_user_md5 ADD COLUMN matricule_ax char(8) NULL DEFAULT NULL AFTER matricule; -ALTER TABLE auth_user_md5 ADD COLUMN nom_ini char(255) NOT NULL DEFAULT '' AFTER promo; -ALTER TABLE auth_user_md5 ADD COLUMN prenom_ini char(40) NOT NULL DEFAULT '' AFTER nom_ini; -ALTER TABLE auth_user_md5 ADD COLUMN nom_ini_soundex char(4) NOT NULL DEFAULT '' AFTER prenom_ini; -ALTER TABLE auth_user_md5 ADD COLUMN prenom_ini_soundex char(4) NOT NULL DEFAULT '' AFTER nom_ini_soundex; -ALTER TABLE auth_user_md5 ADD COLUMN comment char(10) NOT NULL DEFAULT ''; -ALTER TABLE auth_user_md5 ADD COLUMN appli char(10) NOT NULL DEFAULT ''; -ALTER TABLE auth_user_md5 ADD COLUMN flags set('femme') NOT NULL DEFAULT '' AFTER prenom_ini_soundex; -ALTER TABLE auth_user_md5 ADD COLUMN last_known_email char(60) NOT NULL DEFAULT ''; -ALTER TABLE auth_user_md5 ADD COLUMN deces date NOT NULL AFTER flags; -UPDATE auth_user_md5 AS a INNER JOIN identification AS i ON (a.matricule = i.matricule) SET a.matricule_ax = i.matricule_ax, a.nom_ini = i.nom, a.prenom_ini = i.prenom, a.nom_ini_soundex = i.nom_soundex, a.prenom_ini_soundex = i.prenom_soundex, a.comment = i.comment, a.appli = i.appli, a.flags = i.flags, a.last_known_email = i.last_known_email, a.deces = i.deces; -INSERT INTO auth_user_md5 (matricule, matricule_ax, promo, nom, prenom, nom_ini, prenom_ini, nom_ini_soundex, prenom_ini_soundex, comment, appli, flags, last_known_email, deces, perms) SELECT i.matricule, i.matricule_ax, i.promo, i.nom, i.prenom, i.nom, i.prenom, i.nom_soundex, i.prenom_soundex, i.comment, i.appli, i.flags, i.last_known_email, i.deces, 'non-inscrit' FROM identification AS i LEFT JOIN auth_user_md5 AS a ON a.matricule = i.matricule WHERE a.user_id IS NULL; -DROP TABLE identification; - -alter table auth_user_md5 add index (epouse); diff --git a/upgrade/0.9.2/nationalites.sql b/upgrade/0.9.2/nationalites.sql deleted file mode 100644 index 395fab0..0000000 --- a/upgrade/0.9.2/nationalites.sql +++ /dev/null @@ -1,97 +0,0 @@ - -alter table `nationalites` add column iso3166 varchar(2) not null; - -replace INTO `nationalites` VALUES (1,'Albanais','AL'); -replace INTO `nationalites` VALUES (2,'Algérien','DZ'); -replace INTO `nationalites` VALUES (3,'Allemand','DE'); -replace INTO `nationalites` VALUES (4,'Américain','US'); -replace INTO `nationalites` VALUES (5,'Argentin','AR'); -replace INTO `nationalites` VALUES (6,'Australien','AU'); -replace INTO `nationalites` VALUES (7,'Autrichien','AT'); -replace INTO `nationalites` VALUES (8,'Belge','BE'); -replace INTO `nationalites` VALUES (9,'Benin','BJ'); -replace INTO `nationalites` VALUES (10,'Botswanais','BW'); -replace INTO `nationalites` VALUES (11,'Bouthan','BT'); -replace INTO `nationalites` VALUES (12,'Brésilien','BR'); -replace INTO `nationalites` VALUES (13,'Britannique','GB'); -replace INTO `nationalites` VALUES (14,'Bulgare','BG'); -replace INTO `nationalites` VALUES (15,'Burkina Faso','BF'); -replace INTO `nationalites` VALUES (16,'Cambodgien','KH'); -replace INTO `nationalites` VALUES (17,'Camerounais','CM'); -replace INTO `nationalites` VALUES (18,'Canadien','CA'); -replace INTO `nationalites` VALUES (19,'Chilien','CL'); -replace INTO `nationalites` VALUES (20,'Chinois','CN'); -replace INTO `nationalites` VALUES (21,'Colombien','CO'); -replace INTO `nationalites` VALUES (22,'Coréen','KR'); -replace INTO `nationalites` VALUES (86,'Costaricien','CR'); -replace INTO `nationalites` VALUES (80,'Croate','HR'); -replace INTO `nationalites` VALUES (23,'Cubain','CU'); -replace INTO `nationalites` VALUES (24,'Danois','DK'); -replace INTO `nationalites` VALUES (26,'Egyptien','EG'); -replace INTO `nationalites` VALUES (81,'Equatorien','EC'); -replace INTO `nationalites` VALUES (27,'Espagnol','ES'); -replace INTO `nationalites` VALUES (28,'Estonien','EE'); -replace INTO `nationalites` VALUES (29,'Finlandais','FI'); -replace INTO `nationalites` VALUES (30,'Français','FR'); -replace INTO `nationalites` VALUES (31,'Gabonais','GA'); -replace INTO `nationalites` VALUES (32,'Georgien','GE'); -replace INTO `nationalites` VALUES (33,'Grec','GR'); -replace INTO `nationalites` VALUES (34,'Haïtien','HT'); -replace INTO `nationalites` VALUES (36,'Hong-Kong','HK'); -replace INTO `nationalites` VALUES (37,'Hongrois','HU'); -replace INTO `nationalites` VALUES (38,'Indien','IN'); -replace INTO `nationalites` VALUES (39,'Iranien','IR'); -replace INTO `nationalites` VALUES (40,'Irlandais','IE'); -replace INTO `nationalites` VALUES (41,'Islandais','IS'); -replace INTO `nationalites` VALUES (42,'Israélien','IL'); -replace INTO `nationalites` VALUES (43,'Italien','IT'); -replace INTO `nationalites` VALUES (44,'Ivoirien','CI'); -replace INTO `nationalites` VALUES (45,'Jamaïcain','JM'); -replace INTO `nationalites` VALUES (46,'Japonais','JP'); -replace INTO `nationalites` VALUES (47,'Kazakh','KZ'); -replace INTO `nationalites` VALUES (49,'Lettonien','LV'); -replace INTO `nationalites` VALUES (50,'Libanais','LB'); -replace INTO `nationalites` VALUES (51,'Lituanien','LT'); -replace INTO `nationalites` VALUES (52,'Luxembourgeois','LU'); -replace INTO `nationalites` VALUES (53,'Macédonien','MK'); -replace INTO `nationalites` VALUES (82,'Malgache','MG'); -replace INTO `nationalites` VALUES (54,'Malien','ML'); -replace INTO `nationalites` VALUES (55,'Marocain','MA'); -replace INTO `nationalites` VALUES (56,'Mexicain','MX'); -replace INTO `nationalites` VALUES (35,'Néerlandais','NL'); -replace INTO `nationalites` VALUES (57,'Néo-Zélandais','NZ'); -replace INTO `nationalites` VALUES (58,'Norvégien','NO'); -replace INTO `nationalites` VALUES (59,'Palestinien','PS'); -replace INTO `nationalites` VALUES (60,'Péruvien','PE'); -replace INTO `nationalites` VALUES (61,'Polonais','PL'); -replace INTO `nationalites` VALUES (62,'Portugais','PT'); -replace INTO `nationalites` VALUES (63,'Roumain','RO'); -replace INTO `nationalites` VALUES (64,'Russe','RU'); -replace INTO `nationalites` VALUES (65,'Sénégalais','SN'); -replace INTO `nationalites` VALUES (66,'Serbe','CS'); -replace INTO `nationalites` VALUES (84,'Singapourien','SG'); -replace INTO `nationalites` VALUES (67,'Slovaque','SI'); -replace INTO `nationalites` VALUES (69,'Sud-Africain','ZA'); -replace INTO `nationalites` VALUES (70,'Suédois','SE'); -replace INTO `nationalites` VALUES (71,'Suisse','CH'); -replace INTO `nationalites` VALUES (72,'Tadjik','TJ'); -replace INTO `nationalites` VALUES (73,'Taïwanais','TW'); -replace INTO `nationalites` VALUES (74,'Tchèque','CZ'); -replace INTO `nationalites` VALUES (75,'Tunisien','TN'); -replace INTO `nationalites` VALUES (76,'Turc','TR'); -replace INTO `nationalites` VALUES (83,'Ukrainien','UA'); -replace INTO `nationalites` VALUES (85,'Uruguayen','UY'); -replace INTO `nationalites` VALUES (77,'Vénézuélien','VE'); -replace INTO `nationalites` VALUES (78,'Vietnamien','VN'); -replace INTO `nationalites` VALUES (79,'Yougoslave','CS'); - -alter table geoloc_pays add column nat varchar(100) not null; -update geoloc_pays inner join nationalites ON iso3166=a2 set nat=text; -update auth_user_md5 set nationalite='' where nationalite='0' or nationalite='36'; -alter table auth_user_md5 change column nationalite nationalite varchar(2) not null; -update auth_user_md5 AS u - inner join nationalites AS n ON u.nationalite=n.id - inner join geoloc_pays AS g ON iso3166=a2 - set u.nationalite = a2; - -drop table nationalites; diff --git a/upgrade/0.9.2/notifs.sql b/upgrade/0.9.2/notifs.sql deleted file mode 100644 index ed5aade..0000000 --- a/upgrade/0.9.2/notifs.sql +++ /dev/null @@ -1,53 +0,0 @@ -alter table aliases add index (type); -alter table auth_user_quick add column watch_flags set('contacts','mail') not null default 'contacts'; -alter table auth_user_quick add column watch_last timestamp not null; -alter table auth_user_quick add index(watch_flags); - -create table watch_cat ( - id smallint not null auto_increment, - short varchar(40), - mail varchar(80), - frequent smallint(1) default 0, - primary key (id), - index (frequent) -); - -insert into watch_cat VALUES(1,'Mise à jour de fiche', 'Ces camarades ont mis leur fiche à jour', 1); -insert into watch_cat VALUES(2,'Nouveaux inscrits', 'Ces camarades se sont inscrit', 0); -insert into watch_cat VALUES(3,'Décès', 'Ces camarades nous ont quitté', 0); - -create table watch_ops ( - uid smallint not null, - cid smallint not null, - known timestamp not null, - date date not null, - info varchar(255), - primary key (uid,cid), - index (known) -); - -create table watch_sub ( - uid smallint not null, - cid smallint not null, - primary key (uid,cid) -); - -create table watch_nonins ( - uid smallint not null, - ni_id smallint not null, - primary key (uid,ni_id) -); - -create table watch_promo ( - uid smallint not null, - promo smallint not null, - primary key (uid,promo) -); - -replace into watch_sub - select u.user_id,id - from auth_user_md5 AS u - join watch_cat - where u.perms != 'non-inscrit'; - - diff --git a/upgrade/0.9.2/update.sh b/upgrade/0.9.2/update.sh deleted file mode 100755 index 394affa..0000000 --- a/upgrade/0.9.2/update.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### -echo "STILL TODO : - - update the mailman-rpc daemon - - insert scripts/cron/send_notifs.php in the crontab - suggested : 0 4 * * 6 (it means every saturday at 4 AM) -" - -########################################################### -echo "To make statistics work : - - remove old cron (web cron) : /home/web/bin/nbx, - genere.sh,genereParselog,genereParselog2 - - add new scripts (from scripts/cron/stats)in cron - evolution-inscrits-mails, plot-graphs, mailParselog - - add symlinks : - in htdocs/stats : ln -s /home/web/stats/graph-* . - in templates/stats : ln -s /home/web/stats/lastParselog* . - -" diff --git a/upgrade/0.9.3/10_aliases.sql b/upgrade/0.9.3/10_aliases.sql deleted file mode 100644 index 4217921..0000000 --- a/upgrade/0.9.3/10_aliases.sql +++ /dev/null @@ -1,11 +0,0 @@ -alter table aliases add column flags set('epouse','bestalias') not null after type; -update aliases set flags='epouse' where type='epouse'; -update aliases set type='epouse' where type='epouse'; -alter table aliases change column type type enum('a_vie','alias','homonyme','liste') not null; -alter table aliases add index (flags); - - update aliases AS a -left join aliases AS b - ON(a.id=b.id and b.alias like '%.%' and length(b.alias)/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "BE CAREFUL : - -* scripts/ is now essentially in bin/ - --> have to modify crons - --> have to modify xml-rpc path in the daemontools - -* carva redirects are still in scripts/ but their path and name have changed. - --> the error page is scripts/webredirect_error.php - --> the redirect page is scripts/webredirect.php - -* mailman : update the conf to use the mhonarc archiver -" diff --git a/upgrade/0.9.4/10_evts.sql b/upgrade/0.9.4/10_evts.sql deleted file mode 100644 index 5436c9d..0000000 --- a/upgrade/0.9.4/10_evts.sql +++ /dev/null @@ -1,3 +0,0 @@ -alter table evenements drop column validation_message; -alter table evenements drop column validation_user_id; -alter table evenements drop column validation_date; diff --git a/upgrade/0.9.4/20_register.sql b/upgrade/0.9.4/20_register.sql deleted file mode 100644 index 5c521b2..0000000 --- a/upgrade/0.9.4/20_register.sql +++ /dev/null @@ -1,82 +0,0 @@ --- MySQL dump 9.11 - --- --- Table structure for table register_pending --- - -CREATE TABLE register_pending ( - uid int NOT NULL default '0', - forlife varchar(255) NOT NULL default '', - bestalias varchar(255) NOT NULL default '', - mailorg2 varchar(255) default null, - password varchar(32) NOT NULL default '', - email varchar(255) NOT NULL default '', - date date NOT NULL default '0000-00-00', - relance date NOT NULL default '0000-00-00', - naissance date NOT NULL default '0000-00-00', - hash varchar(12) NOT NULL default '', - PRIMARY KEY (uid), - UNIQUE KEY (forlife), - UNIQUE KEY (bestalias), - INDEX (hash) -); - -create table register_marketing (/*{{{*/ - uid int not null default 0, - sender int not null default 0, - email varchar(255) not null default '', - date date not null default '0000-00-00', - last date not null default '0000-00-00', - nb tinyint not null default 0, - type enum('user', 'staff') not null default 'user', - hash char(32) not null, - PRIMARY KEY (uid, email), - INDEX (date), - INDEX (last), - INDEX (nb) -); - -create table register_mstats ( - uid int not null default 0, - sender int not null default 0, - success date not null default '0000-00-00', - PRIMARY KEY (uid) -); - - --- --- envoidirect -> register_mstats --- - -insert into register_mstats (uid, sender, success) - select distinct u.user_id, e.sender, u.date_ins - from envoidirect as e - inner join auth_user_md5 as u using(matricule) - where u.date_ins != 0 group by user_id; - -insert into register_marketing (uid, sender, email, date, last, nb, type, hash) - select u.user_id, m.expe, m.email, 0, 0, FIND_IN_SET('envoye', m.flags), IF(FIND_IN_SET('mail_perso', m.flags), 'user', 'staff'), '' - from marketing as m - inner join auth_user_md5 as u on u.matricule = m.dest - where date_ins = 0 and deces = 0 - group by user_id, m.email; - -replace into register_marketing (uid, sender, email, date, last, nb, type, hash) - select u.user_id, e.sender, e.email, date_envoi, date_envoi, 1, 'staff', e.uid - from envoidirect as e - inner join auth_user_md5 as u using(matricule) - where date_ins = 0 and deces = 0; - -drop table envoidirect; -drop table marketing;/*}}}*/ - -insert into register_pending (uid, forlife, bestalias, mailorg2, password, email, date, relance, naissance, hash) - select u.user_id, e.username, - IF(e.loginbis, e.loginbis, REPLACE(REPLACE(e.username, '.19', ''), '.20', '')), - IF(e.loginbis, REPLACE(REPLACE(e.username, '.19', ''), '.20', ''), NULL), - e.password, email, e.date, relance, e.naissance, ins_id - from en_cours AS e - inner join auth_user_md5 AS u USING( matricule ) - where u.perms = 'pending'; - -drop table en_cours; diff --git a/upgrade/0.9.4/30_auth_user_quick.sql b/upgrade/0.9.4/30_auth_user_quick.sql deleted file mode 100644 index 950a153..0000000 --- a/upgrade/0.9.4/30_auth_user_quick.sql +++ /dev/null @@ -1,10 +0,0 @@ -alter table auth_user_quick add column foo timestamp after user_id; - -alter table auth_user_quick add column emails_alias_pub enum('public', 'private') not null default 'private'; -alter table auth_user_quick add column profile_from_ax INT(1) not null default 0; -alter table auth_user_quick add column core_mail_fmt enum('html', 'texte') not null default 'html'; - -alter table auth_user_quick add column profile_nick varchar(64) not null; -alter table auth_user_quick add index(profile_nick); - -alter table auth_user_quick add column core_rss_hash char(32) not null default ''; diff --git a/upgrade/0.9.4/40_requests.sql b/upgrade/0.9.4/40_requests.sql deleted file mode 100644 index 2e60686..0000000 --- a/upgrade/0.9.4/40_requests.sql +++ /dev/null @@ -1,2 +0,0 @@ -alter table requests change column type type char(16); - diff --git a/upgrade/0.9.4/50_entreprises.sql b/upgrade/0.9.4/50_entreprises.sql deleted file mode 100644 index b5ee05f..0000000 --- a/upgrade/0.9.4/50_entreprises.sql +++ /dev/null @@ -1 +0,0 @@ -alter table entreprises add `mobile`varchar(30) not null after `fax`; diff --git a/upgrade/0.9.4/60_watch.sql b/upgrade/0.9.4/60_watch.sql deleted file mode 100644 index bdbb273..0000000 --- a/upgrade/0.9.4/60_watch.sql +++ /dev/null @@ -1,13 +0,0 @@ -alter table watch_cat add column type enum('basic', 'near', 'often') not null default 'basic'; -update watch_cat set type='often' where frequent=1; -alter table watch_cat drop column frequent; - -alter table watch_cat add mail_sg varchar(80) default NULL after mail; -update watch_cat set mail_sg = 'Ce camarade a mis sa fiche à jour' where id = 1; -update watch_cat set mail_sg = 'Ce camarade s\'est inscrit' where id = 2; -update watch_cat set mail_sg = 'Ce camarade nous a quitté' where id = 3; - -insert into watch_cat (id, short, mail, mail_sg, type) - values(4, 'Anniversaires', 'Ces camarades fêtent leur anniversaire cette semaine', 'Ce camarade fête son anniversaire cette semaine', 'near'); -replace into watch_sub (uid, cid) select user_id, 4 from auth_user_md5 where perms in ('admin', 'user') and deces=0; - diff --git a/upgrade/0.9.4/70_newsletter.sql b/upgrade/0.9.4/70_newsletter.sql deleted file mode 100644 index 103d466..0000000 --- a/upgrade/0.9.4/70_newsletter.sql +++ /dev/null @@ -1,3 +0,0 @@ -update auth_user_quick as q INNER JOIN newsletter_ins as n USING(user_id) SET q.core_mail_fmt = n.pref; -alter table newsletter_ins drop pref; - diff --git a/upgrade/0.9.4/80_medals.sql b/upgrade/0.9.4/80_medals.sql deleted file mode 100644 index 8176088..0000000 --- a/upgrade/0.9.4/80_medals.sql +++ /dev/null @@ -1,86 +0,0 @@ --- http://www.medailles-decorations.com/ --- http://perso.wanadoo.fr/tnr.g/ - -drop table if exists profile_medals; -create table profile_medals ( - id int not null auto_increment, - type enum('ordre', 'croix', 'militaire', 'honneur', 'resistance', 'prix') not null, - text varchar(255), - img varchar(255), - primary key (id) -); - -drop table if exists profile_medals_grades; -create table profile_medals_grades ( - mid int not null, - gid int not null, - text varchar(255), - pos int not null, - index (pos), - primary key (mid, gid) -); - -drop table if exists profile_medals_sub; -create table profile_medals_sub ( - uid int not null, - mid int not null, - gid int not null, - primary key (uid,mid) -); - -insert into profile_medals (type, text, img) - values ('ordre', 'Ordre National de la Legion d\'Honneur', 'ordre_onlh.jpg'), - ('ordre', 'Ordre de la libération', 'ordre_lib.jpg'), - ('ordre', 'Ordre National du Mérite', 'ordre_nm.jpg'), - ('ordre', 'Ordre des Palmes Académiques', 'ordre_pa.jpg'), - ('ordre', 'Ordre du Mérite Agricole', 'ordre_ma.jpg'), - ('ordre', 'Ordre du Mérite Maritime', 'ordre_mm.jpg'), - ('ordre', 'Ordre des Arts et des Lettres', 'ordre_al.jpg'), - - ('croix', 'Croix de Guerre 1914 - 1918', 'croix_1418.jpg'), - ('croix', 'Croix de Guerre 1939 - 1945', 'croix_3945.jpg'), - ('croix', 'Croix des T. O. E.', 'croix_toe.jpg'), - ('croix', 'Croix de la Valeur Militaire', 'croix_vm.jpg'), - ('croix', 'Croix du Combattant Volontaire 1914 - 1918', 'croix_cv1418.jpg'), - ('croix', 'Croix du Combattant Volontaire', 'croix_cv.jpg'), - ('croix', 'Croix du Combattant', 'croix_cc.jpg'), - - ('militaire', 'Médaille Militaire', 'mili_mili.jpg'), - ('militaire', 'Médaille des Évadés', 'mili_eva.jpg'), - ('militaire', 'Médaille de la Gendarmerie Nationale', 'mili_gn.jpg'), - ('militaire', 'Médaille de l\'Aéronautique', 'mili_aero.jpg'), - ('militaire', 'Médaille du Service de Santé des Armées', 'mili_ssa.jpg'), - ('militaire', 'Médaille de la Défense Nationale', 'mili_defnat.jpg'), - ('militaire', 'Médaille des Services Militaires Volontaires', 'mili_smv.jpg'), - ('militaire', 'Médaille d\'Outre-Mer', 'mili_om.jpg'), - ('militaire', 'Insignes des Bléssés Militaires', 'mili_ib.jpg'), - ('militaire', 'Médaille d\'Afrique du Nord', 'mili_an.jpg'), - ('militaire', 'Titre de la Reconnaissance de la Nation', 'mili_trn.jpg'), - ('militaire', 'Médaille des Engagés Volontaires', 'mili_ev.jpg'), - - ('honneur', 'Actes de Dévouement et Faits de Sauvetage', 'honn_adfs.jpg'), - ('honneur', 'Actes de Courage et de Dévouement', 'honn_acd.jpg'), - ('honneur', 'Médaille des Secours Mutuels', 'honn_sm.jpg'), - ('honneur', 'Médaille d\'Honneur des Eaux et Forêts', 'honn_ef.jpg'), - ('honneur', 'Enseignement du Premier Degré', 'honn_pd.jpg'), - ('honneur', 'Ministère du Commerce et de l\'Industrie', 'honn_mci.jpg'), - ('honneur', 'Médaille d\'Honneur des Affaires Etrangères', 'honn_ae.jpg'), - ('honneur', 'Médaille d\'Honneur Agricole', 'honn_agr.jpg'), - ('honneur', 'Médaille d\'Honneur de l\'Assistance Publique', 'honn_ap.jpg'), - ('honneur', 'Médaille d\'Honneur des Epidémies', 'honn_epi.jpg'), - ('honneur', 'Médaille d\'Honneur des Douanes', 'honn_dou.jpg'), - ('honneur', 'Médaille d\'Honneur Pénitentiaire', 'honn_pen.jpg'), - - ('resistance','Médaille de la Résistance Française', 'resi_rf.jpg'), - ('resistance','Croix du Volontaire de la Résistance', 'resi_cvr.jpg'), - ('resistance','Médaille de la Déportation - Résistance', 'resi_dr.jpg'), - - ('prix', 'Médaille Fields', 'prix_fields.gif'), - ('prix', 'Prix Nobel d\'Économie', 'prix_nb_eco.jpg'), - ('prix', 'Prix Nobel de Littérature', 'prix_nb_lit.jpg'), - ('prix', 'Prix Nobel de Médecine', 'prix_nb_med.jpg'), - ('prix', 'Prix Nobel de la Paix', 'prix_nb_paix.jpg'), - ('prix', 'Prix Nobel de Physique/Chimie', 'prix_nb_pc.jpg'); - -insert into admin_a values (5, 'Décorations', 'admin/gerer_decos.php', 40); - diff --git a/upgrade/0.9.4/90_emails.sql b/upgrade/0.9.4/90_emails.sql deleted file mode 100644 index 40ee0de..0000000 --- a/upgrade/0.9.4/90_emails.sql +++ /dev/null @@ -1 +0,0 @@ -alter table emails change column flags flags enum('active', 'filter') not null ; diff --git a/upgrade/0.9.4/update.sh b/upgrade/0.9.4/update.sh deleted file mode 100755 index 010efc5..0000000 --- a/upgrade/0.9.4/update.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo " -You now have to : - -(*) install FPDF (pdflatex and tetex are not required anymore) - apt-get install php-fpdf - -(*) apt-get install php4-gd2 - add extension=gd.so in /etc/php/apache(2?)/php.ini - -(*) apt-get install php-banana (may not be on public servers) - and add a rewrite rule on www.polytechnique.org (http and https) : - ^/banana/([^/]*/.*)$ /usr/share/banana/\$1 - -(*) install the new cron system : - delete ALL web crons from the crontab EXCEPT for the /home/web/bin/espace_disque that is not a plat/al feature - and then, link /etc/cron.d/platal -> platal/configs/platal.cron -" diff --git a/upgrade/0.9.5/10_auth_user_quick.sql b/upgrade/0.9.5/10_auth_user_quick.sql deleted file mode 100644 index 9830490..0000000 --- a/upgrade/0.9.5/10_auth_user_quick.sql +++ /dev/null @@ -1,16 +0,0 @@ -ALTER TABLE auth_user_quick -ADD profile_mobile VARCHAR(20) NOT NULL, -ADD profile_mobile_pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL, -ADD profile_web VARCHAR(255) NOT NULL, -ADD profile_web_pub ENUM('private', 'public') DEFAULT 'private' NOT NULL, -ADD profile_freetext VARCHAR(255) NOT NULL, -ADD profile_freetext_pub ENUM('private', 'public') DEFAULT 'private' NOT NULL, -ADD profile_medals_pub ENUM('private', 'public') DEFAULT 'private' NOT NULL; -UPDATE auth_user_quick AS q INNER JOIN auth_user_md5 AS u USING(user_id) SET -q.profile_mobile = u.mobile, -q.profile_mobile_pub = IF(FIND_IN_SET('mobile_public', u.bits), 'public', IF(FIND_IN_SET('mobile_ax', u.bits), 'ax', 'private')), -q.profile_web = u.web, -q.profile_web_pub = IF(FIND_IN_SET('web_public', u.bits), 'public', 'private'), -q.profile_freetext = u.libre, -q.profile_freetext_pub = IF(FIND_IN_SET('libre_public', u.bits), 'public', 'private'); -ALTER TABLE auth_user_md5 DROP mobile, DROP web, DROP libre, CHANGE bits bits SET('mail_ax') NOT NULL; diff --git a/upgrade/0.9.5/20_adresses.sql b/upgrade/0.9.5/20_adresses.sql deleted file mode 100644 index bfb90e2..0000000 --- a/upgrade/0.9.5/20_adresses.sql +++ /dev/null @@ -1,5 +0,0 @@ -ALTER TABLE adresses -ADD pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL, -ADD tel_pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL; -UPDATE adresses SET pub = IF(FIND_IN_SET('adr_public', visibilite), 'public', IF(FIND_IN_SET('adr_ax', visibilite), 'ax', 'private')), tel_pub = IF(FIND_IN_SET('tel_public', visibilite), 'public', IF(FIND_IN_SET('tel_ax', visibilite),'ax', 'private')); -ALTER TABLE adresses DROP visibilite; diff --git a/upgrade/0.9.5/30_entreprises.sql b/upgrade/0.9.5/30_entreprises.sql deleted file mode 100644 index ceb670d..0000000 --- a/upgrade/0.9.5/30_entreprises.sql +++ /dev/null @@ -1,13 +0,0 @@ -ALTER TABLE entreprises -ADD pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL, -ADD adr_pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL, -ADD tel_pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL; -UPDATE entreprises SET -pub = IF(FIND_IN_SET('entreprise_public', visibilite), 'public', IF(FIND_IN_SET('entreprise_ax', visibilite), 'ax', 'private')), -adr_pub = IF(FIND_IN_SET('adr_public', visibilite), 'public', IF(FIND_IN_SET('adr_ax', visibilite), 'ax', 'private')), -tel_pub = IF(FIND_IN_SET('tel_public', visibilite), 'public', IF(FIND_IN_SET('tel_ax', visibilite),'ax', 'private')); -ALTER TABLE entreprises DROP visibilite; -ALTER TABLE entreprises -ADD email VARCHAR(60) NOT NULL AFTER mobile, -ADD web VARCHAR(255) NOT NULL AFTER email, -ADD email_pub ENUM('private', 'ax', 'public') DEFAULT 'private' NOT NULL; diff --git a/upgrade/0.9.5/40_photo.sql b/upgrade/0.9.5/40_photo.sql deleted file mode 100644 index c37f843..0000000 --- a/upgrade/0.9.5/40_photo.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE photo ADD column pub ENUM('private', 'public') DEFAULT 'private' NOT NULL; - diff --git a/upgrade/0.9.5/50_aliases.sql b/upgrade/0.9.5/50_aliases.sql deleted file mode 100644 index baac2a4..0000000 --- a/upgrade/0.9.5/50_aliases.sql +++ /dev/null @@ -1,4 +0,0 @@ -ALTER TABLE aliases CHANGE flags flags SET('bestalias','usage','epouse') NOT NULL; -UPDATE aliases SET flags = 'usage,epouse' WHERE flags='epouse'; -UPDATE aliases SET flags = 'usage,epouse,bestalias' WHERE flags='epouse,bestalias'; - diff --git a/upgrade/0.9.5/60_auth_user_md5.sql b/upgrade/0.9.5/60_auth_user_md5.sql deleted file mode 100644 index f5272cc..0000000 --- a/upgrade/0.9.5/60_auth_user_md5.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE auth_user_md5 CHANGE epouse nom_usage VARCHAR(255) NOT NULL; - diff --git a/upgrade/0.9.5/70_admin_a.sql b/upgrade/0.9.5/70_admin_a.sql deleted file mode 100644 index a1c507c..0000000 --- a/upgrade/0.9.5/70_admin_a.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO admin_a VALUES(3, 'Synchro AX', 'admin/synchro_ax.php', 40); - diff --git a/upgrade/0.9.5/80_paiement.sql b/upgrade/0.9.5/80_paiement.sql deleted file mode 100644 index 5394058..0000000 --- a/upgrade/0.9.5/80_paiement.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO paiement.methodes VALUES (1, "PayPal", "paypal.inc.php"); - diff --git a/upgrade/0.9.5/update.sh b/upgrade/0.9.5/update.sh deleted file mode 100755 index f351939..0000000 --- a/upgrade/0.9.5/update.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - diff --git a/upgrade/0.9.6/00_xnet.sql b/upgrade/0.9.6/00_xnet.sql deleted file mode 100644 index 43de972..0000000 --- a/upgrade/0.9.6/00_xnet.sql +++ /dev/null @@ -1,18 +0,0 @@ -update groupex.asso set nom=replace(nom, '', ''); -update groupex.asso set nom=replace(nom, '', ''); - -alter table groupex.asso drop column m_list; -alter table groupex.asso change column nom nom CHAR(255) not null; -alter table groupex.asso change column diminutif diminutif CHAR(64) not null; -alter table groupex.asso change column site site CHAR(255) not null; -alter table groupex.asso change column mail mail CHAR(255) not null; -alter table groupex.asso change column resp resp CHAR(255) not null; -alter table groupex.asso change column forum forum CHAR(255) not null; -alter table groupex.asso change column mail_domain mail_domain CHAR(255) not null; -alter table groupex.asso add unique index (diminutif); -alter table groupex.asso add column sub_url char(255) not null; - -alter table groupex.membres change column uid uid int not null; - -update groupex.asso set sub_url='http://www2.x-consult.org/xconsult/register.php' where diminutif = 'X-Mines-Consult'; - diff --git a/upgrade/0.9.6/10_search_name.sql b/upgrade/0.9.6/10_search_name.sql deleted file mode 100644 index 111b75b..0000000 --- a/upgrade/0.9.6/10_search_name.sql +++ /dev/null @@ -1,12 +0,0 @@ - -CREATE TABLE `search_name` ( - `uid` int(11) NOT NULL default '0', - `token` char(255) NOT NULL default '', - `score` int(11) NOT NULL default '0', - PRIMARY KEY (token,uid), - INDEX (uid) -); - - -drop table recherche; - diff --git a/upgrade/0.9.6/20_watch_cat.sql b/upgrade/0.9.6/20_watch_cat.sql deleted file mode 100644 index b24b372..0000000 --- a/upgrade/0.9.6/20_watch_cat.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE watch_cat SET mail = "Ces camarades nous ont quittés", mail_sg = "Ce camarade nous a quittés" WHERE id = 3; diff --git a/upgrade/0.9.6/30_auth_user_md5.sql b/upgrade/0.9.6/30_auth_user_md5.sql deleted file mode 100644 index 61a4fe1..0000000 --- a/upgrade/0.9.6/30_auth_user_md5.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE auth_user_md5 ADD promo_sortie SMALLINT(4) UNSIGNED NOT NULL AFTER promo; -UPDATE auth_user_md5 SET promo_sortie = promo + 3; - diff --git a/upgrade/0.9.6/update.sh b/upgrade/0.9.6/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.6/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.7/00_xnet.sql b/upgrade/0.9.7/00_xnet.sql deleted file mode 100644 index 668c6a8..0000000 --- a/upgrade/0.9.7/00_xnet.sql +++ /dev/null @@ -1,44 +0,0 @@ -ALTER TABLE virtual CHANGE `type` `type` ENUM('user', 'list', 'dom', 'evt') DEFAULT 'user' NOT NULL; - -ALTER TABLE groupex.asso ADD `pub` ENUM( 'public', 'private' ) DEFAULT 'public' NOT NULL AFTER `ax` ; -INSERT INTO virtual_domains VALUES ('evts.polytechnique.org'); - -use groupex; - -DROP TABLE IF EXISTS groupex.evenements; -CREATE TABLE groupex.evenements ( - `eid` int unsigned NOT NULL auto_increment, - `asso_id` int unsigned NOT NULL default '0', - `organisateur_uid` int unsigned NOT NULL default '0', - `intitule` varchar(100) NOT NULL default '', - `short_name` varchar(30) NOT NULL default '', - `paiement_id` int unsigned default NULL, - `descriptif` text NOT NULL, - `debut` datetime NOT NULL default '0000-00-00 00:00:00', - `fin` datetime default NULL, - `membres_only` tinyint(1) NOT NULL default '0', - `advertise` tinyint(1) NOT NULL default '0', - `show_participants` tinyint(1) NOT NULL default '0', - PRIMARY KEY (`eid`) -); - -drop table IF EXISTS evenements_items; -CREATE TABLE evenements_items ( - `eid` int unsigned NOT NULL default '0', - `item_id` int unsigned NOT NULL default '0', - `titre` varchar(100) NOT NULL default '', - `details` text NOT NULL, - `montant` decimal(10,2) NOT NULL default '0.00', - PRIMARY KEY (`eid`,`item_id`) -); - -drop table IF EXISTS evenements_participants; -CREATE TABLE evenements_participants ( - `eid` int unsigned NOT NULL default '0', - `uid` int unsigned NOT NULL default '0', - `item_id` int NOT NULL default '0', - `nb` int NOT NULL default '0', - `paid` float NOT NULL default '0', - PRIMARY KEY (`eid`,`item_id`,`uid`) -); - diff --git a/upgrade/0.9.7/01_geoloc.sql b/upgrade/0.9.7/01_geoloc.sql deleted file mode 100644 index c1bae49..0000000 --- a/upgrade/0.9.7/01_geoloc.sql +++ /dev/null @@ -1,37 +0,0 @@ -ALTER TABLE adresses -CHANGE ville city VARCHAR(80) DEFAULT '' NOT NULL, -CHANGE cp postcode VARCHAR(20) DEFAULT '' NOT NULL, -CHANGE pays country VARCHAR(2) DEFAULT '00' NOT NULL; -ALTER TABLE entreprises -CHANGE ville city VARCHAR(80) DEFAULT '' NOT NULL, -CHANGE cp postcode VARCHAR(20) DEFAULT '' NOT NULL, -CHANGE pays country VARCHAR(2) DEFAULT '00' NOT NULL; - -ALTER TABLE adresses ADD cityid INT DEFAULT NULL AFTER city; - -ALTER TABLE adresses ADD INDEX(cityid); - -CREATE TABLE `geoloc_city` ( - `id` int(11) NOT NULL default '0', - `alias` smallint(6) NOT NULL default '0', - `name` varchar(200) NOT NULL default '', - `search_name` varchar(200) NOT NULL default '', - `prefix` varchar(30) NOT NULL default '', - `lat` int(11) NOT NULL default '0', - `lon` int(11) NOT NULL default '0', - `country` char(2) NOT NULL default '', - `region` char(2) NOT NULL default '', - `subregion` varchar(200) NOT NULL default '', - `postcode` varchar(8) NOT NULL default '', - `level` tinyint(4) NOT NULL default '5', - `population` int(11) NOT NULL default '0', - `x` float NOT NULL default '0', - `y` float NOT NULL default '0', - `z` float NOT NULL default '0', - PRIMARY KEY (`id`,`alias`), - KEY `famous` (`level`,`search_name`), - KEY `name` (`country`,`search_name`), - KEY `postcode` (`country`,`postcode`), - KEY `lat` (`lat`), - KEY `lon` (`lon`) -); diff --git a/upgrade/0.9.7/update.sh b/upgrade/0.9.7/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.7/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.8/00_admin.sql b/upgrade/0.9.8/00_admin.sql deleted file mode 100644 index ae7fd08..0000000 --- a/upgrade/0.9.8/00_admin.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO admin_h2 VALUES(2, 11, 'Géoloc', 70); -INSERT INTO admin_a VALUES(11, 'Synchro', 'admin/geoloc.php',0); diff --git a/upgrade/0.9.8/update.sh b/upgrade/0.9.8/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.8/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/0.9.9/00_xnet.sql b/upgrade/0.9.9/00_xnet.sql deleted file mode 100644 index 1f248a1..0000000 --- a/upgrade/0.9.9/00_xnet.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE groupex.asso ADD inscriptible TINYINT NOT NULL DEFAULT 1; -ALTER TABLE groupex.evenements ADD deadline_inscription DATE DEFAULT NULL; - diff --git a/upgrade/0.9.9/01_adresses.sql b/upgrade/0.9.9/01_adresses.sql deleted file mode 100644 index 73ac4c6..0000000 --- a/upgrade/0.9.9/01_adresses.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE adresses ADD regiontxt VARCHAR(80) NOT NULL AFTER region; -ALTER TABLE geoloc_pays ADD display VARCHAR(50) NOT NULL; - diff --git a/upgrade/0.9.9/update.sh b/upgrade/0.9.9/update.sh deleted file mode 100755 index de82fc0..0000000 --- a/upgrade/0.9.9/update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -. ../inc/pervasive.sh - -mailman_stop -mailman_templates -mailman_start - - -########################################################### -for sql in *.sql -do - echo -n $sql - $MYSQL x4dat < $sql &>/dev/null || echo -n " ERROR" - echo . -done - -########################################################### - -echo "we will now upgrade the search table (this may be a long operation) - -please hit ^D to continue -" - -cat - -pushd ../../bin -./search.rebuild_db.php -popd - -########################################################### - diff --git a/upgrade/inc/pervasive.sh b/upgrade/inc/pervasive.sh deleted file mode 100755 index 8b1d47f..0000000 --- a/upgrade/inc/pervasive.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -MYSQL='mysql -u admin ' - - -set -e - -if [ "$UID" != 0 ]; then - echo "has to be run as root" - exit 1 -fi - -function mailman_stop() { - echo -n "stops mailman" - /etc/init.d/mailman stop &>/dev/null - echo . -} - -function mailman_templates() { - echo -n "copies new mails templates" - mkdir -p /etc/mailman/xorg - cp -f ../../modules/lists/mail_templates/*.txt /etc/mailman/xorg - echo . -} - -function mailman_start() { - echo -n "starts mailman" - /etc/init.d/mailman start &>/dev/null - echo . -} - -- 2.1.4

    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,'Descent'=>-236,'CapHeight'=>729,'Flags'=>32,'FontBBox'=>'[-183 -236 1287 928]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600); -$up=-104; -$ut=65; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>318,'!'=>402,'"'=>460,'#'=>838,'$'=>636,'%'=>950,'&'=>890,'\''=>275,'('=>390,')'=>390,'*'=>500,'+'=>838, - ','=>318,'-'=>338,'.'=>318,'/'=>337,'0'=>636,'1'=>636,'2'=>636,'3'=>636,'4'=>636,'5'=>636,'6'=>636,'7'=>636,'8'=>636,'9'=>636,':'=>337,';'=>337,'<'=>838,'='=>838,'>'=>838,'?'=>536,'@'=>1000,'A'=>722, - 'B'=>735,'C'=>765,'D'=>802,'E'=>730,'F'=>694,'G'=>799,'H'=>872,'I'=>395,'J'=>401,'K'=>747,'L'=>664,'M'=>1024,'N'=>875,'O'=>820,'P'=>673,'Q'=>820,'R'=>753,'S'=>685,'T'=>667,'U'=>843,'V'=>722,'W'=>1028, - 'X'=>712,'Y'=>660,'Z'=>695,'['=>390,'\\'=>337,']'=>390,'^'=>838,'_'=>500,'`'=>500,'a'=>596,'b'=>640,'c'=>560,'d'=>640,'e'=>592,'f'=>370,'g'=>640,'h'=>644,'i'=>320,'j'=>310,'k'=>606,'l'=>320,'m'=>948, - 'n'=>644,'o'=>602,'p'=>640,'q'=>640,'r'=>478,'s'=>513,'t'=>402,'u'=>644,'v'=>565,'w'=>856,'x'=>564,'y'=>565,'z'=>527,'{'=>636,'|'=>337,'}'=>636,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>318,chr(161)=>402,chr(162)=>636,chr(163)=>636,chr(164)=>636,chr(165)=>636,chr(166)=>685,chr(167)=>500,chr(168)=>513,chr(169)=>1000,chr(170)=>475,chr(171)=>612,chr(172)=>838,chr(173)=>338,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>401,chr(179)=>401,chr(180)=>695,chr(181)=>650,chr(182)=>636,chr(183)=>318,chr(184)=>527,chr(185)=>401,chr(186)=>470,chr(187)=>612,chr(188)=>1137,chr(189)=>989,chr(190)=>660,chr(191)=>536,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, - chr(198)=>1001,chr(199)=>765,chr(200)=>730,chr(201)=>730,chr(202)=>730,chr(203)=>730,chr(204)=>395,chr(205)=>395,chr(206)=>395,chr(207)=>395,chr(208)=>807,chr(209)=>875,chr(210)=>820,chr(211)=>820,chr(212)=>820,chr(213)=>820,chr(214)=>820,chr(215)=>838,chr(216)=>820,chr(217)=>843,chr(218)=>843,chr(219)=>843, - chr(220)=>843,chr(221)=>660,chr(222)=>676,chr(223)=>668,chr(224)=>596,chr(225)=>596,chr(226)=>596,chr(227)=>596,chr(228)=>596,chr(229)=>596,chr(230)=>940,chr(231)=>560,chr(232)=>592,chr(233)=>592,chr(234)=>592,chr(235)=>592,chr(236)=>320,chr(237)=>320,chr(238)=>320,chr(239)=>320,chr(240)=>602,chr(241)=>644, - chr(242)=>602,chr(243)=>602,chr(244)=>602,chr(245)=>602,chr(246)=>602,chr(247)=>838,chr(248)=>602,chr(249)=>644,chr(250)=>644,chr(251)=>644,chr(252)=>644,chr(253)=>565,chr(254)=>640,chr(255)=>565); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraSe.z'; -$originalsize=60280; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraSe.z b/modules/carnet/fonts/VeraSe.z deleted file mode 100644 index e228cce904a835f73387c0746919868c8e1fb328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37364 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 l>V%XKe7PU2DE!K;xb&Rkn-939,'Descent'=>-236,'CapHeight'=>729,'Flags'=>32,'FontBBox'=>'[-186 -236 1361 939]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600); -$up=-106; -$ut=117; -$cw=array( - chr(0)=>600,chr(1)=>600,chr(2)=>600,chr(3)=>600,chr(4)=>600,chr(5)=>600,chr(6)=>600,chr(7)=>600,chr(8)=>600,chr(9)=>600,chr(10)=>600,chr(11)=>600,chr(12)=>600,chr(13)=>600,chr(14)=>600,chr(15)=>600,chr(16)=>600,chr(17)=>600,chr(18)=>600,chr(19)=>600,chr(20)=>600,chr(21)=>600, - chr(22)=>600,chr(23)=>600,chr(24)=>600,chr(25)=>600,chr(26)=>600,chr(27)=>600,chr(28)=>600,chr(29)=>600,chr(30)=>600,chr(31)=>600,' '=>348,'!'=>439,'"'=>521,'#'=>838,'$'=>696,'%'=>950,'&'=>903,'\''=>306,'('=>473,')'=>473,'*'=>523,'+'=>838, - ','=>348,'-'=>415,'.'=>348,'/'=>365,'0'=>696,'1'=>696,'2'=>696,'3'=>696,'4'=>696,'5'=>696,'6'=>696,'7'=>696,'8'=>696,'9'=>696,':'=>369,';'=>369,'<'=>838,'='=>838,'>'=>838,'?'=>586,'@'=>1000,'A'=>776, - 'B'=>845,'C'=>796,'D'=>867,'E'=>762,'F'=>710,'G'=>854,'H'=>945,'I'=>468,'J'=>473,'K'=>869,'L'=>703,'M'=>1107,'N'=>914,'O'=>871,'P'=>752,'Q'=>871,'R'=>831,'S'=>722,'T'=>744,'U'=>872,'V'=>776,'W'=>1123, - 'X'=>776,'Y'=>714,'Z'=>730,'['=>473,'\\'=>365,']'=>473,'^'=>838,'_'=>500,'`'=>500,'a'=>648,'b'=>699,'c'=>609,'d'=>699,'e'=>636,'f'=>430,'g'=>699,'h'=>727,'i'=>380,'j'=>362,'k'=>693,'l'=>380,'m'=>1058, - 'n'=>727,'o'=>667,'p'=>699,'q'=>699,'r'=>527,'s'=>563,'t'=>462,'u'=>727,'v'=>581,'w'=>861,'x'=>596,'y'=>581,'z'=>568,'{'=>643,'|'=>364,'}'=>643,'~'=>838,chr(127)=>600,chr(128)=>600,chr(129)=>600,chr(130)=>600,chr(131)=>600, - chr(132)=>600,chr(133)=>600,chr(134)=>600,chr(135)=>600,chr(136)=>600,chr(137)=>600,chr(138)=>600,chr(139)=>600,chr(140)=>600,chr(141)=>600,chr(142)=>600,chr(143)=>600,chr(144)=>600,chr(145)=>600,chr(146)=>600,chr(147)=>600,chr(148)=>600,chr(149)=>600,chr(150)=>600,chr(151)=>600,chr(152)=>600,chr(153)=>600, - chr(154)=>600,chr(155)=>600,chr(156)=>600,chr(157)=>600,chr(158)=>600,chr(159)=>600,chr(160)=>348,chr(161)=>439,chr(162)=>696,chr(163)=>696,chr(164)=>696,chr(165)=>696,chr(166)=>722,chr(167)=>523,chr(168)=>563,chr(169)=>1000,chr(170)=>487,chr(171)=>625,chr(172)=>838,chr(173)=>415,chr(174)=>1000,chr(175)=>500, - chr(176)=>500,chr(177)=>838,chr(178)=>438,chr(179)=>438,chr(180)=>730,chr(181)=>732,chr(182)=>636,chr(183)=>348,chr(184)=>568,chr(185)=>438,chr(186)=>500,chr(187)=>625,chr(188)=>1180,chr(189)=>1028,chr(190)=>714,chr(191)=>586,chr(192)=>776,chr(193)=>776,chr(194)=>776,chr(195)=>776,chr(196)=>776,chr(197)=>776, - chr(198)=>1034,chr(199)=>796,chr(200)=>762,chr(201)=>762,chr(202)=>762,chr(203)=>762,chr(204)=>468,chr(205)=>468,chr(206)=>468,chr(207)=>468,chr(208)=>874,chr(209)=>914,chr(210)=>871,chr(211)=>871,chr(212)=>871,chr(213)=>871,chr(214)=>871,chr(215)=>838,chr(216)=>871,chr(217)=>872,chr(218)=>872,chr(219)=>872, - chr(220)=>872,chr(221)=>714,chr(222)=>757,chr(223)=>760,chr(224)=>648,chr(225)=>648,chr(226)=>648,chr(227)=>648,chr(228)=>648,chr(229)=>648,chr(230)=>975,chr(231)=>609,chr(232)=>636,chr(233)=>636,chr(234)=>636,chr(235)=>636,chr(236)=>380,chr(237)=>380,chr(238)=>380,chr(239)=>380,chr(240)=>667,chr(241)=>727, - chr(242)=>667,chr(243)=>667,chr(244)=>667,chr(245)=>667,chr(246)=>667,chr(247)=>838,chr(248)=>667,chr(249)=>727,chr(250)=>727,chr(251)=>727,chr(252)=>727,chr(253)=>581,chr(254)=>699,chr(255)=>581); -$enc='ISO-8859-15'; -$diff='128 /.notdef 130 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 142 /.notdef 145 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 158 /.notdef /.notdef 164 /Euro 166 /Scaron 168 /scaron 180 /Zcaron 184 /zcaron 188 /OE /oe /Ydieresis'; -$file='VeraSeBd.z'; -$originalsize=58736; -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/carnet/fonts/VeraSeBd.z b/modules/carnet/fonts/VeraSeBd.z deleted file mode 100644 index b94115bab21701e9171315679e2b60b8871d4fef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36370 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 $this->make_hook('emails', AUTH_COOKIE), - 'emails/alias' => $this->make_hook('alias', AUTH_MDP), - 'emails/antispam' => $this->make_hook('antispam', AUTH_MDP), - 'emails/broken' => $this->make_hook('broken', AUTH_COOKIE), - 'emails/redirect' => $this->make_hook('redirect', AUTH_MDP), - 'emails/send' => $this->make_hook('send', AUTH_MDP), - 'emails/antispam/submit' => $this->make_hook('submit', AUTH_COOKIE), - 'emails/test' => $this->make_hook('test', AUTH_COOKIE, 'user', NO_AUTH), - - 'emails/imap/in' => $this->make_hook('imap_in', AUTH_PUBLIC), - - 'admin/emails/duplicated' => $this->make_hook('duplicated', AUTH_MDP, 'admin'), - 'admin/emails/watch' => $this->make_hook('duplicated', AUTH_MDP, 'admin'), - 'admin/emails/lost' => $this->make_hook('lost', AUTH_MDP, 'admin'), - ); - } - - function handler_emails(&$page, $action = null, $email = null) - { - global $globals; - require_once 'emails.inc.php'; - - $page->changeTpl('emails/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Mes emails'); - - $uid = S::v('uid'); - - if ($action == 'best' && $email) { - if (!S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - - // bestalias is the first bit : 1 - // there will be maximum 8 bits in flags : 255 - XDB::execute("UPDATE aliases SET flags=flags & (255 - 1) WHERE id={?}", $uid); - XDB::execute("UPDATE aliases SET flags=flags | 1 WHERE id={?} AND alias={?}", - $uid, $email); - } - - // on regarde si on a affaire à un homonyme - $sql = "SELECT alias, (type='a_vie') AS a_vie, - (alias REGEXP '\\\\.[0-9]{2}$') AS cent_ans, - FIND_IN_SET('bestalias',flags) AS best, expire - FROM aliases - WHERE id = {?} AND type!='homonyme' - ORDER BY LENGTH(alias)"; - $page->assign('aliases', XDB::iterator($sql, $uid)); - - $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid); - $page->assign('homonyme', $homonyme->fetchOneCell()); - - // Affichage des redirections de l'utilisateur. - $redirect = new Redirect($uid); - $page->assign('mails', $redirect->active_emails()); - - // on regarde si l'utilisateur a un alias et si oui on l'affiche ! - $forlife = S::v('forlife'); - $res = XDB::query( - "SELECT alias - FROM virtual AS v - INNER JOIN virtual_redirect AS vr USING(vid) - WHERE (redirect={?} OR redirect={?}) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); - $page->assign('melix', $res->fetchOneCell()); - } - - function handler_alias(&$page, $action = null, $value = null) - { - require_once 'validations.inc.php'; - - global $globals; - - $page->changeTpl('emails/alias.tpl'); - $page->assign('pl_title','Polytechnique.org - Alias melix.net'); - - $uid = S::v('uid'); - $forlife = S::v('forlife'); - - $page->assign('demande', AliasReq::get_request($uid)); - - if ($action == 'delete' && $value) { - S::assert_xsrf_token(); - - //Suppression d'un alias - XDB::execute( - 'DELETE virtual, virtual_redirect - FROM virtual - INNER JOIN virtual_redirect USING (vid) - WHERE alias = {?} AND (redirect = {?} OR redirect = {?})', $value, - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); - } - - //Récupération des alias éventuellement existants - $res = XDB::query( - "SELECT alias, emails_alias_pub - FROM auth_user_quick, virtual - INNER JOIN virtual_redirect USING(vid) - WHERE ( redirect={?} OR redirect= {?} ) - AND alias LIKE '%@{$globals->mail->alias_dom}' AND user_id = {?}", - $forlife.'@'.$globals->mail->domain, - $forlife.'@'.$globals->mail->domain2, S::v('uid')); - list($alias, $visibility) = $res->fetchOneRow(); - $page->assign('actuel', $alias); - - if ($action == 'ask' && Env::has('alias') && Env::has('raison')) { - S::assert_xsrf_token(); - - //Si l'utilisateur vient de faire une damande - $alias = Env::v('alias'); - $raison = Env::v('raison'); - $public = (Env::v('public', 'off') == 'on')?"public":"private"; - - $page->assign('r_alias', $alias); - $page->assign('r_raison', $raison); - if ($public == 'public') { - $page->assign('r_public', true); - } - - //Quelques vérifications sur l'alias (caractères spéciaux) - if (!preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $alias)) { - $page->trigError("L'adresse demandée n'est pas valide." - . " Vérifie qu'elle comporte entre 3 et 20 caractères" - . " et qu'elle ne contient que des lettres non accentuées," - . " des chiffres ou les caractères - et ."); - return; - } else { - //vérifier que l'alias n'est pas déja pris - $res = XDB::query('SELECT COUNT(*) FROM virtual WHERE alias={?}', - $alias.'@'.$globals->mail->alias_dom); - if ($res->fetchOneCell() > 0) { - $page->trigError("L'alias $alias@{$globals->mail->alias_dom} a déja été attribué. - Tu ne peux donc pas l'obtenir."); - return; - } - - //vérifier que l'alias n'est pas déja en demande - $it = new ValidateIterator (); - while($req = $it->next()) { - if ($req->type == "alias" and $req->alias == $alias . '@' . $globals->mail->alias_dom) { - $page->trigError("L'alias $alias@{$globals->mail->alias_dom} a déja été demandé. - Tu ne peux donc pas l'obtenir pour l'instant."); - return ; - } - } - - //Insertion de la demande dans la base, écrase les requêtes précédente - $myalias = new AliasReq($uid, $alias, $raison, $public); - $myalias->submit(); - $page->assign('success',$alias); - return; - } - } elseif ($action == 'set' && ($value == 'public' || $value == 'private')) { - if (!S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - - if ($value == 'public') { - XDB::execute("UPDATE auth_user_quick SET emails_alias_pub = 'public' - WHERE user_id = {?}", S::v('uid')); - } else { - XDB::execute("UPDATE auth_user_quick SET emails_alias_pub = 'private' - WHERE user_id = {?}", S::v('uid')); - } - - $visibility = $value; - } - - $page->assign('mail_public', ($visibility == 'public')); - } - - function handler_redirect(&$page, $action = null, $email = null) - { - global $globals; - - require_once 'emails.inc.php'; - - $page->changeTpl('emails/redirect.tpl'); - - $uid = S::v('uid'); - $forlife = S::v('forlife'); - - $page->assign('eleve', S::i('promo') >= date("Y") - 5); - - $redirect = new Redirect(S::v('uid')); - - // FS#703 : $_GET is urldecoded twice, hence - // + (the data) => %2B (in the url) => + (first decoding) => ' ' (second decoding) - // Since there can be no spaces in emails, we can fix this with : - $email = str_replace(' ', '+', $email); - - if ($action == 'remove' && $email) { - $retour = $redirect->delete_email($email); - $page->assign('retour', $retour); - } - - if ($action == 'active' && $email) { - $redirect->modify_one_email($email, true); - } - - if ($action == 'inactive' && $email) { - $redirect->modify_one_email($email, false); - } - - if ($action == 'rewrite' && $email) { - $rewrite = @func_get_arg(3); - $redirect->modify_one_email_redirect($email, $rewrite); - } - - if (Env::has('emailop')) { - S::assert_xsrf_token(); - - $actifs = Env::v('emails_actifs', Array()); - print_r(Env::v('emails_rewrite')); - if (Env::v('emailop') == "ajouter" && Env::has('email')) { - $page->assign('retour', $redirect->add_email(Env::v('email'))); - } elseif (empty($actifs)) { - $page->assign('retour', ERROR_INACTIVE_REDIRECTION); - } elseif (is_array($actifs)) { - $page->assign('retour', $redirect->modify_email($actifs, - Env::v('emails_rewrite',Array()))); - } - } - - $res = XDB::query( - "SELECT alias - FROM virtual - INNER JOIN virtual_redirect USING(vid) - WHERE (redirect={?} OR redirect={?}) - AND alias LIKE '%@{$globals->mail->alias_dom}'", - $forlife.'@'.$globals->mail->domain, $forlife.'@'.$globals->mail->domain2); - $melix = $res->fetchOneCell(); - if ($melix) { - list($melix) = explode('@', $melix); - $page->assign('melix',$melix); - } - - $res = XDB::query( - "SELECT alias,expire - FROM aliases - WHERE id={?} AND (type='a_vie' OR type='alias') - ORDER BY !FIND_IN_SET('usage',flags), LENGTH(alias)", $uid); - - $page->assign('alias', $res->fetchAllAssoc()); - $page->assign('emails',$redirect->emails); - - require_once 'googleapps.inc.php'; - $page->assign('googleapps', GoogleAppsAccount::account_status($uid)); - } - - function handler_antispam(&$page, $statut_filtre = null) - { - require_once 'emails.inc.php'; - require_once('wiki.inc.php'); - wiki_require_page('Xorg.Antispam'); - - $page->changeTpl('emails/antispam.tpl'); - - $bogo = new Bogo(S::v('uid')); - if (isset($statut_filtre)) { - $bogo->change($statut_filtre + 0); - } - $page->assign('filtre',$bogo->level()); - } - - function handler_submit(&$page) - { - require_once('wiki.inc.php'); - wiki_require_page('Xorg.Mails'); - $page->changeTpl('emails/submit_spam.tpl'); - - if (Post::has('send_email')) { - S::assert_xsrf_token(); - - $upload = PlUpload::get($_FILES['mail'], S::v('forlife'), 'spam.submit', true); - if (!$upload) { - $page->trigError('Une erreur a été rencontrée lors du transfert du fichier'); - return; - } - $mime = $upload->contentType(); - if ($mime != 'text/x-mail' && $mime != 'message/rfc822') { - $upload->clear(); - $page->trigError('Le fichier ne contient pas un mail complet'); - return; - } - global $globals; - $box = Post::v('type') . '@' . $globals->mail->domain; - $mailer = new PlMailer(); - $mailer->addTo($box); - $mailer->setFrom('"' . S::v('prenom') . ' ' . S::v('nom') . '" mail->domain . '>'); - $mailer->setTxtBody(Post::v('type') . ' soumis par ' . S::v('forlife') . ' via le web'); - $mailer->addUploadAttachment($upload, Post::v('type') . '.mail'); - $mailer->send(); - $page->trigSuccess('Le message a été transmis à ' . $box); - $upload->clear(); - } - } - - function handler_send(&$page) - { - global $globals; - $page->changeTpl('emails/send.tpl'); - $page->addJsLink('ajax.js'); - - $page->assign('pl_title','Polytechnique.org - Envoyer un email'); - - // action si on recoit un formulaire - if (Post::has('save')) { - if (!S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - - unset($_POST['save']); - if (trim(preg_replace('/-- .*/', '', Post::v('contenu'))) != "") { - $_POST['to_contacts'] = explode(';', @$_POST['to_contacts']); - $_POST['cc_contacts'] = explode(';', @$_POST['cc_contacts']); - $data = serialize($_POST); - XDB::execute("REPLACE INTO email_send_save - VALUES ({?}, {?})", S::i('uid'), $data); - } - exit; - } else if (Env::v('submit') == 'Envoyer') { - S::assert_xsrf_token(); - - function getEmails($aliases) - { - if (!is_array($aliases)) { - return null; - } - $rel = Env::v('contacts'); - $ret = array(); - foreach ($aliases as $alias) { - $ret[$alias] = $rel[$alias]; - } - return join(', ', $ret); - } - - $error = false; - foreach ($_FILES as &$file) { - if ($file['name'] && !PlUpload::get($file, S::v('forlife'), 'emails.send', false)) { - $page->trigError(PlUpload::$lastError); - $error = true; - break; - } - } - - if (!$error) { - XDB::execute("DELETE FROM email_send_save - WHERE uid = {?}", S::i('uid')); - - $to2 = getEmails(Env::v('to_contacts')); - $cc2 = getEmails(Env::v('cc_contacts')); - $txt = str_replace('^M', '', Env::v('contenu')); - $to = Env::v('to'); - $subj = Env::v('sujet'); - $from = Env::v('from'); - $cc = trim(Env::v('cc')); - $bcc = trim(Env::v('bcc')); - - if (empty($to) && empty($cc) && empty($to2) && empty($bcc) && empty($cc2)) { - $page->trigError("Indique au moins un destinataire."); - $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send')); - } else { - $mymail = new PlMailer(); - $mymail->setFrom($from); - $mymail->setSubject($subj); - if (!empty($to)) { $mymail->addTo($to); } - if (!empty($cc)) { $mymail->addCc($cc); } - if (!empty($bcc)) { $mymail->addBcc($bcc); } - if (!empty($to2)) { $mymail->addTo($to2); } - if (!empty($cc2)) { $mymail->addCc($cc2); } - $files =& PlUpload::listFiles(S::v('forlife'), 'emails.send'); - foreach ($files as $name=>&$upload) { - $mymail->addUploadAttachment($upload, $name); - } - if (Env::v('nowiki')) { - $mymail->setTxtBody(wordwrap($txt, 78, "\n")); - } else { - $mymail->setWikiBody($txt); - } - if ($mymail->send()) { - $page->trigSuccess("Ton mail a bien été envoyé."); - $_REQUEST = array('bcc' => S::v('bestalias').'@'.$globals->mail->domain); - PlUpload::clear(S::v('forlife'), 'emails.send'); - } else { - $page->trigError("Erreur lors de l'envoi du courriel, réessaye."); - $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send')); - } - } - } - } else { - $res = XDB::query("SELECT data - FROM email_send_save - WHERE uid = {?}", S::i('uid')); - if ($res->numRows() == 0) { - PlUpload::clear(S::v('forlife'), 'emails.send'); - $_REQUEST['bcc'] = S::v('bestalias').'@'.$globals->mail->domain; - } else { - $data = unserialize($res->fetchOneCell()); - $_REQUEST = array_merge($_REQUEST, $data); - } - } - - $res = XDB::query( - "SELECT u.prenom, u.nom, u.promo, a.alias as forlife - FROM auth_user_md5 AS u - INNER JOIN contacts AS c ON (u.user_id = c.contact) - INNER JOIN aliases AS a ON (u.user_id=a.id AND FIND_IN_SET('bestalias',a.flags)) - WHERE c.uid = {?} - ORDER BY u.nom, u.prenom", S::v('uid')); - $page->assign('contacts', $res->fetchAllAssoc()); - $page->assign('maxsize', ini_get('upload_max_filesize') . 'o'); - } - - function handler_test(&$page, $forlife = null) - { - global $globals; - require_once 'emails.inc.php'; - - if (!S::has_xsrf_token()) { - return PL_FORBIDDEN; - } - if (!S::has_perms() || !$forlife) { - $forlife = S::v('bestalias'); - } - - $res = XDB::query("SELECT FIND_IN_SET('femme', u.flags), prenom, user_id - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id) - WHERE a.alias = {?}", $forlife); - list($sexe, $prenom, $uid) = $res->fetchOneRow(); - $redirect = new Redirect($uid); - - $mailer = new PlMailer('emails/test.mail.tpl'); - $mailer->assign('email', $forlife . '@' . $globals->mail->domain); - $mailer->assign('redirects', $redirect->active_emails()); - $mailer->assign('sexe', $sexe); - $mailer->assign('prenom', $prenom); - $mailer->send(); - exit; - } - - function handler_imap_in(&$page, $hash = null, $login = null) - { - $page->changeTpl('emails/imap_register.tpl'); - $id = null; - if (!empty($hash) || !empty($login)) { - $req = XDB::query("SELECT u.prenom, FIND_IN_SET('femme', u.flags) AS sexe, a.id - FROM aliases AS a - INNER JOIN newsletter_ins AS ni ON (a.id = ni.user_id) - INNER JOIN auth_user_md5 AS u ON (u.user_id = a.id) - WHERE a.alias = {?} AND ni.hash = {?}", $login, $hash); - list($prenom, $sexe, $id) = $req->fetchOneRow(); - } - - require_once('emails.inc.php'); - $page->assign('ok', false); - if (S::logged() && (is_null($id) || $id == S::i('uid'))) { - $storage = new EmailStorage(S::i('uid'), 'imap'); - $storage->activate(); - $page->assign('ok', true); - $page->assign('prenom', S::v('prenom')); - $page->assign('sexe', S::v('femme')); - } else if (!S::logged() && $id) { - $storage = new EmailStorage($id, 'imap'); - $storage->activate(); - $page->assign('ok', true); - $page->assign('prenom', $prenom); - $page->assign('sexe', $sexe); - } - } - - function handler_broken(&$page, $warn = null, $email = null) - { - require_once 'emails.inc.php'; - require_once('wiki.inc.php'); - wiki_require_page('Xorg.PatteCassée'); - - global $globals; - - $page->changeTpl('emails/broken.tpl'); - - if ($warn == 'warn' && $email) { - S::assert_xsrf_token(); - - $email = valide_email($email); - // vérifications d'usage - $sel = XDB::query( - "SELECT e.uid, a.alias - FROM emails AS e - INNER JOIN aliases AS a ON (e.uid = a.id AND type!='homonyme' - AND FIND_IN_SET('bestalias',a.flags)) - WHERE e.email={?}", $email); - - if (list($uid, $dest) = $sel->fetchOneRow()) { - // envoi du mail - $message = "Bonjour ! - -Ce mail a été généré automatiquement par le service de patte cassée de -Polytechnique.org car un autre utilisateur, ".S::v('prenom').' '.S::v('nom').", -nous a signalé qu'en t'envoyant un mail, il avait reçu un message d'erreur -indiquant que ton adresse de redirection $email -ne fonctionnait plus ! - -Nous te suggérons de vérifier cette adresse, et le cas échéant de mettre -à jour sur le site <{$globals->baseurl}/emails> tes adresses -de redirection... - -Pour plus de renseignements sur le service de patte cassée, n'hésite pas à -consulter la page <{$globals->baseurl}/emails/broken>. - - -À bientôt sur Polytechnique.org ! -L'équipe d'administration mail->domain . '>'; - - $mail = new PlMailer(); - $mail->setFrom('"Polytechnique.org" mail->domain . '>'); - $mail->addTo("$dest@" . $globals->mail->domain); - $mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!"); - $mail->setTxtBody($message); - $mail->send(); - $page->trigSuccess("Mail envoyé !"); - } - } elseif (Post::has('email')) { - S::assert_xsrf_token(); - - $email = valide_email(Post::v('email')); - - list(,$fqdn) = explode('@', $email); - $fqdn = strtolower($fqdn); - if ($fqdn == 'polytechnique.org' || $fqdn == 'melix.org' || $fqdn == 'm4x.org' || $fqdn == 'melix.net') { - $page->assign('neuneu', true); - } else { - $page->assign('email',$email); - $sel = XDB::query( - "SELECT e1.uid, e1.panne != 0 AS panne, - (count(e2.uid) + IF(FIND_IN_SET('googleapps', u.mail_storage), 1, 0)) AS nb_mails, - u.nom, u.prenom, u.promo, a.alias AS forlife - FROM emails as e1 - LEFT JOIN emails as e2 ON(e1.uid = e2.uid - AND FIND_IN_SET('active', e2.flags) - AND e1.email != e2.email) - INNER JOIN auth_user_md5 as u ON(e1.uid = u.user_id) - INNER JOIN aliases AS a ON (a.id = e1.uid AND a.type = 'a_vie') - WHERE e1.email = {?} - GROUP BY e1.uid", $email); - if ($x = $sel->fetchOneAssoc()) { - // on écrit dans la base que l'adresse est cassée - if (!$x['panne']) { - XDB::execute("UPDATE emails - SET panne=NOW(), - last=NOW(), - panne_level = 1 - WHERE email = {?}", $email); - } else { - XDB::execute("UPDATE emails - SET panne_level = 1 - WHERE email = {?} AND panne_level = 0", $email); - } - $page->assign_by_ref('x', $x); - } - } - } - } - - function handler_duplicated(&$page, $action = 'list', $email = null) - { - $page->changeTpl('emails/duplicated.tpl'); - - $states = array('pending' => 'En attente...', - 'safe' => 'Pas d\'inquiétude', - 'unsafe' => 'Recherches en cours', - 'dangerous' => 'Usurpations par cette adresse'); - $page->assign('states', $states); - - if (Post::has('action')) { - S::assert_xsrf_token(); - } - switch (Post::v('action')) { - case 'create': - if (trim(Post::v('emailN')) != '') { - Xdb::execute('INSERT IGNORE INTO emails_watch (email, state, detection, last, uid, description) - VALUES ({?}, {?}, CURDATE(), NOW(), {?}, {?})', - trim(Post::v('emailN')), Post::v('stateN'), S::i('uid'), Post::v('descriptionN')); - }; - break; - - case 'edit': - Xdb::execute('UPDATE emails_watch - SET state = {?}, last = NOW(), uid = {?}, description = {?} - WHERE email = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), Post::v('emailN')); - break; - - default: - if ($action == 'delete' && !is_null($email)) { - Xdb::execute('DELETE FROM emails_watch WHERE email = {?}', $email); - } - } - if ($action != 'create' && $action != 'edit') { - $action = 'list'; - } - $page->assign('action', $action); - - if ($action == 'list') { - $sql = "SELECT w.email, w.detection, w.state, a.alias AS forlife - FROM emails_watch AS w - LEFT JOIN emails AS e USING(email) - LEFT JOIN aliases AS a ON (a.id = e.uid AND a.type = 'a_vie') - ORDER BY w.state, w.email, a.alias"; - $it = Xdb::iterRow($sql); - - $table = array(); - $props = array(); - while (list($email, $date, $state, $forlife) = $it->next()) { - if (count($props) == 0 || $props['mail'] != $email) { - if (count($props) > 0) { - $table[] = $props; - } - $props = array('mail' => $email, - 'detection' => $date, - 'state' => $state, - 'users' => array($forlife)); - } else { - $props['users'][] = $forlife; - } - } - if (count($props) > 0) { - $table[] = $props; - } - $page->assign('table', $table); - } elseif ($action == 'edit') { - $sql = "SELECT w.detection, w.state, w.last, w.description, - a1.alias AS edit, a2.alias AS forlife - FROM emails_watch AS w - LEFT JOIN aliases AS a1 ON (a1.id = w.uid AND a1.type = 'a_vie') - LEFT JOIN emails AS e ON (w.email = e.email) - LEFT JOIN aliases AS a2 ON (a2.id = e.uid AND a2.type = 'a_vie') - WHERE w.email = {?} - ORDER BY a2.alias"; - $it = Xdb::iterRow($sql, $email); - - $props = array(); - while (list($detection, $state, $last, $description, $edit, $forlife) = $it->next()) { - if (count($props) == 0) { - $props = array('mail' => $email, - 'detection' => $detection, - 'state' => $state, - 'last' => $last, - 'description' => $description, - 'edit' => $edit, - 'users' => array($forlife)); - } else { - $props['users'][] = $forlife; - } - } - $page->assign('doublon', $props); - } - } - function handler_lost(&$page, $action = 'list', $email = null) - { - $page->changeTpl('emails/lost.tpl'); - - $page->assign('lost_emails', XDB::iterator(' - SELECT u.user_id, a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie") - LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags)) - WHERE e.uid IS NULL AND - FIND_IN_SET("googleapps", u.mail_storage) = 0 AND - u.deces = 0 - ORDER BY u.promo DESC, u.nom, u.prenom')); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/events.php b/modules/events.php deleted file mode 100644 index 5587ac3..0000000 --- a/modules/events.php +++ /dev/null @@ -1,490 +0,0 @@ - $this->make_hook('ev', AUTH_COOKIE), - 'rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - 'events/preview' => $this->make_hook('preview', AUTH_PUBLIC, 'user', NO_AUTH), - 'events/photo' => $this->make_hook('photo', AUTH_PUBLIC), - 'events/submit' => $this->make_hook('ev_submit', AUTH_MDP), - 'admin/events' => $this->make_hook('admin_events', AUTH_MDP, 'admin'), - - 'ajax/tips' => $this->make_hook('tips', AUTH_COOKIE, 'user', NO_AUTH), - 'admin/tips' => $this->make_hook('admin_tips', AUTH_MDP, 'admin'), - ); - } - - private function get_tips($exclude = null) - { - global $globals; - // Add a new special tip when changing plat/al version - if ($globals->version != S::v('last_version') && is_null($exclude)) { - XDB::execute('UPDATE auth_user_quick - SET last_version = {?} - WHERE user_id = {?}', - $globals->version, S::i('uid')); - return array('id' => 0, - 'titre' => 'Bienvenue sur la nouvelle version du site !', - 'text' => 'Le site a été mis à jour depuis ta dernière visite vers la version ' . $globals->version - . '.
    Nous t\'invitons à
    faire un tour d\'horizon des ' - . 'nouveautés.

    ' - . 'Tu peux également retrouver ces informations sur ' - . 'les forums, ou sur la liste exhaustive des modifications.', - 'priorite' => 255, - 'promo_min' => 0, - 'promo_max' => 0, - 'state' => 'active', - 'special' => true); - } - - $exclude = is_null($exclude) ? '' : ' AND id != ' . $exclude . ' '; - $priority = rand(0, 510); - do { - $priority = (int)($priority/2); - $res = XDB::query("SELECT * - FROM tips - WHERE (peremption = '0000-00-00' OR peremption > CURDATE()) - AND (promo_min = 0 OR promo_min <= {?}) - AND (promo_max = 0 OR promo_max >= {?}) - AND (priorite >= {?}) - AND (state = 'active') - $exclude - ORDER BY RAND() - LIMIT 1", - S::i('promo'), S::i('promo'), $priority); - } while ($priority && !$res->numRows()); - if (!$res->numRows()) { - return null; - } - return $res->fetchOneAssoc(); - } - - private function upload_image(PlPage &$page, PlUpload &$upload) - { - if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) { - return true; - } - if (!$upload->upload($_FILES['image']) && !$upload->download(Env::v('image_url'))) { - $page->trigError('Impossible de télécharger l\'image'); - return false; - } elseif (!$upload->isType('image')) { - $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.'); - $upload->rm(); - return false; - } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { - $page->trigError('Impossible de retraiter l\'image'); - return false; - } - return true; - } - - function handler_ev(&$page, $action = 'list', $eid = null, $pound = null) - { - $page->changeTpl('events/index.tpl'); - $page->addJsLink('ajax.js'); - $page->assign('tips', $this->get_tips()); - - $res = XDB::query('SELECT date, naissance FROM auth_user_md5 - WHERE user_id={?}', S::v('uid')); - list($date, $naissance) = $res->fetchOneRow(); - - // incitation à mettre à jour la fiche - - $d2 = mktime(0, 0, 0, substr($date, 5, 2), substr($date, 8, 2), - substr($date, 0, 4)); - if( (time() - $d2) > 60 * 60 * 24 * 400 ) { - // si fiche date de + de 400j; - $page->assign('fiche_incitation', $date); - } - - // Souhaite bon anniversaire - - if (substr($naissance, 5) == date('m-d')) { - $page->assign('birthday', date('Y') - substr($naissance, 0, 4)); - } - - // incitation à mettre une photo - - $res = XDB::query('SELECT COUNT(*) FROM photo - WHERE uid={?}', S::v('uid')); - $page->assign('photo_incitation', $res->fetchOneCell() == 0); - - // Incitation à se géolocaliser - require_once 'geoloc.inc.php'; - $res = localize_addresses(S::v('uid', -1)); - $page->assign('geoloc_incitation', count($res)); - - // ajout du lien RSS - if (S::rssActivated()) { - $page->setRssLink('Polytechnique.org :: News', - '/rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml'); - } - - // cache les evenements lus et raffiche les evenements a relire - if ($action == 'read' && $eid) { - XDB::execute('DELETE evenements_vus.* - FROM evenements_vus AS ev - INNER JOIN evenements AS e ON e.id = ev.evt_id - WHERE peremption < NOW()'); - XDB::execute('REPLACE INTO evenements_vus VALUES({?},{?})', - $eid, S::v('uid')); - pl_redirect('events#'.$pound); - } - - if ($action == 'unread' && $eid) { - XDB::execute('DELETE FROM evenements_vus - WHERE evt_id = {?} AND user_id = {?}', - $eid, S::v('uid')); - pl_redirect('events#newsid'.$eid); - } - - $array = array(); - $it = XDB::iterator("SELECT e.id,e.titre,e.texte,e.post_id,a.user_id,a.nom,a.prenom,a.promo,l.alias AS forlife, - p.x, p.y, p.attach IS NOT NULL AS img, FIND_IN_SET('wiki', e.flags) AS wiki, - FIND_IN_SET('important', e.flags) AS important, - e.creation_date > DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS news, - e.peremption < DATE_ADD(CURDATE(), INTERVAL 2 DAY) AS end, - ev.user_id IS NULL AS nonlu - FROM evenements AS e - LEFT JOIN evenements_photo AS p ON (e.id = p.eid) - INNER JOIN auth_user_md5 AS a ON e.user_id=a.user_id - INNER JOIN aliases AS l ON ( a.user_id=l.id AND l.type='a_vie' ) - LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?}) - WHERE FIND_IN_SET('valide', e.flags) AND peremption >= NOW() - AND (e.promo_min = 0 || e.promo_min <= {?}) - AND (e.promo_max = 0 || e.promo_max >= {?}) - ORDER BY important DESC, news DESC, end DESC, e.peremption, e.creation_date DESC", - S::i('uid'), S::i('promo'), S::i('promo')); - $cats = array('important', 'news', 'end', 'body'); - $body = $it->next(); - foreach ($cats as $cat) { - $data = array(); - if (!$body) { - continue; - } - do { - if ($cat == 'body' || $body[$cat]) { - $data[] = $body; - } else { - break; - } - $body = $it->next(); - } while ($body); - if (!empty($data)) { - $array[$cat] = $data; - } - } - $page->assign_by_ref('events', $array); - } - - function handler_photo(&$page, $eid = null, $valid = null) - { - if ($eid && $eid != 'valid') { - $res = XDB::query("SELECT * FROM evenements_photo WHERE eid = {?}", $eid); - if ($res->numRows()) { - $photo = $res->fetchOneAssoc(); - header('Content-Type: image/' . $photo['attachmime']); - echo $photo['attach']; - exit; - } - } elseif ($eid == 'valid') { - require_once 'validations.inc.php'; - $valid = Validate::get_request_by_id($valid); - if ($valid && $valid->img) { - header('Content-Type: image/' . $valid->imgtype); - echo $valid->img; - exit; - } - } else { - $upload = new PlUpload(S::v('forlife'), 'event'); - if ($upload->exists() && $upload->isType('image')) { - header('Content-Type: ' . $upload->contentType()); - echo $upload->getContents(); - exit; - } - } - global $globals; - header('Content-Type: image/png'); - echo file_get_contents($globals->spoolroot . '/htdocs/images/logo.png'); - exit; - } - - function handler_rss(&$page, $user = null, $hash = null) - { - require_once 'rss.inc.php'; - - $uid = init_rss('events/rss.tpl', $user, $hash); - - $rss = XDB::iterator( - 'SELECT e.id, e.titre, e.texte, e.creation_date, e.post_id, p.attachmime IS NOT NULL AS photo, - IF(u2.nom_usage = "", u2.nom, u2.nom_usage) AS nom, u2.prenom, u2.promo, - FIND_IN_SET(\'wiki\', e.flags) AS wiki - FROM auth_user_md5 AS u - INNER JOIN evenements AS e ON ( (e.promo_min = 0 || e.promo_min <= u.promo) - AND (e.promo_max = 0 || e.promo_max >= u.promo) ) - LEFT JOIN evenements_photo AS p ON (p.eid = e.id) - INNER JOIN auth_user_md5 AS u2 ON (u2.user_id = e.user_id) - WHERE u.user_id = {?} AND FIND_IN_SET("valide", e.flags) - AND peremption >= NOW()', $uid); - $page->assign('rss', $rss); - } - - function handler_preview(&$page) - { - $page->changeTpl('events/preview.tpl', NO_SKIN); - $texte = Get::v('texte'); - if (!is_utf8($texte)) { - $texte = utf8_encode($texte); - } - $titre = Get::v('titre'); - if (!is_utf8($titre)) { - $titre = utf8_encode($titre); - } - $page->assign('texte', $texte); - $page->assign('titre', $titre); - header('Content-Type: text/html; charset=utf-8'); - } - - function handler_ev_submit(&$page) - { - $page->changeTpl('events/submit.tpl'); - $page->addJsLink('ajax.js'); - - require_once('wiki.inc.php'); - wiki_require_page('Xorg.Annonce'); - - $titre = Post::v('titre'); - $texte = Post::v('texte'); - $promo_min = Post::i('promo_min'); - $promo_max = Post::i('promo_max'); - $peremption = Post::i('peremption'); - $valid_mesg = Post::v('valid_mesg'); - $action = Post::v('action'); - $upload = new PlUpload(S::v('forlife'), 'event'); - $this->upload_image($page, $upload); - - if (($promo_min > $promo_max && $promo_max != 0)|| - ($promo_min != 0 && ($promo_min <= 1900 || $promo_min >= 2020)) || - ($promo_max != 0 && ($promo_max <= 1900 || $promo_max >= 2020))) - { - $page->trigError("L'intervalle de promotions n'est pas valide"); - $action = null; - } - - $page->assign('titre', $titre); - $page->assign('texte', $texte); - $page->assign('promo_min', $promo_min); - $page->assign('promo_max', $promo_max); - $page->assign('peremption', $peremption); - $page->assign('valid_mesg', $valid_mesg); - $page->assign('action', strtolower($action)); - $page->assign_by_ref('upload', $upload); - - if ($action == 'Supprimer l\'image') { - $upload->rm(); - $page->assign('action', false); - } elseif ($action && (!trim($texte) || !trim($titre))) { - $page->trigError("L'article doit avoir un titre et un contenu"); - } elseif ($action) { - require_once 'validations.inc.php'; - $evtreq = new EvtReq($titre, $texte, $promo_min, $promo_max, - $peremption, $valid_mesg, S::v('uid'), $upload); - $evtreq->submit(); - $page->assign('ok', true); - } elseif (!Env::v('preview')) { - $upload->rm(); - } - } - - function handler_tips(&$page, $tips = null) - { - header('Content-Type: text/html; charset="UTF-8"'); - $page->changeTpl('include/tips.tpl', NO_SKIN); - $page->assign('tips', $this->get_tips($tips)); - } - - function handler_admin_tips(&$page, $action = 'list', $id = null) - { - $page->assign('pl_title', 'Polytechnique.org - Administration - Astuces'); - $page->assign('title', 'Gestion des Astuces'); - $table_editor = new PLTableEditor('admin/tips', 'tips', 'id'); - $table_editor->describe('peremption', 'date de péremption', true); - $table_editor->describe('promo_min', 'promo. min (0 aucune)', false); - $table_editor->describe('promo_max', 'promo. max (0 aucune)', false); - $table_editor->describe('titre', 'titre', true); - $table_editor->describe('state', 'actif', true); - $table_editor->describe('text', 'texte (html) de l\'astuce', false); - $table_editor->describe('priorite', '0<=priorité<=255', true); - $table_editor->list_on_edit(false); - $table_editor->apply($page, $action, $id); - if (($action == 'edit' && !is_null($id)) || $action == 'update') { - $page->changeTpl('events/admin_tips.tpl'); - } - } - - function handler_admin_events(&$page, $action = 'list', $eid = null) - { - $page->changeTpl('events/admin.tpl'); - $page->addJsLink('ajax.js'); - $page->assign('pl_title','Polytechnique.org - Administration - Evenements'); - $page->register_modifier('hde', 'html_entity_decode'); - - $arch = $action == 'archives'; - $page->assign('action', $action); - - $upload = new PlUpload(S::v('forlife'), 'event'); - if ((Env::has('preview') || Post::v('action') == "Proposer") && $eid) { - $action = 'edit'; - $this->upload_image($page, $upload); - } - - if (Post::v('action') == 'Pas d\'image' && $eid) { - $upload->rm(); - XDB::execute("DELETE FROM evenements_photo WHERE eid = {?}", $eid); - $action = 'edit'; - } elseif (Post::v('action') == 'Supprimer l\'image' && $eid) { - $upload->rm(); - $action = 'edit'; - } elseif (Post::v('action') == "Proposer" && $eid) { - $promo_min = Post::i('promo_min'); - $promo_max = Post::i('promo_max'); - if (($promo_min != 0 && ($promo_min <= 1900 || $promo_min >= 2020)) || - ($promo_max != 0 && ($promo_max <= 1900 || $promo_max >= 2020 || $promo_max < $promo_min))) - { - $page->trigError("L'intervalle de promotions $promo_min -> $promo_max n'est pas valide"); - $action = 'edit'; - } else { - $res = XDB::query('SELECT flags FROM evenements WHERE id = {?}', $eid); - $flags = new PlFlagSet($res->fetchOneCell()); - $flags->addFlag('wiki'); - if (Post::v('important')) { - $flags->addFlag('important'); - } else { - $flags->rmFlag('important'); - } - - XDB::execute('UPDATE evenements - SET creation_date = creation_date, - titre={?}, texte={?}, peremption={?}, promo_min={?}, promo_max={?}, - flags = {?} - WHERE id = {?}', - Post::v('titre'), Post::v('texte'), Post::v('peremption'), - Post::v('promo_min'), Post::v('promo_max'), - $flags, $eid); - if ($upload->exists() && list($x, $y, $type) = $upload->imageInfo()) { - XDB::execute('REPLACE INTO evenements_photo - SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}', - $eid, $type, $x, $y, $upload->getContents()); - $upload->rm(); - } - } - } - - if ($action == 'edit') { - $res = XDB::query('SELECT titre, texte, peremption, promo_min, promo_max, FIND_IN_SET(\'important\', flags), - attach IS NOT NULL - FROM evenements AS e - LEFT JOIN evenements_photo AS p ON(e.id = p.eid) - WHERE id={?}', $eid); - list($titre, $texte, $peremption, $promo_min, $promo_max, $important, $img) = $res->fetchOneRow(); - $page->assign('titre',$titre); - $page->assign('texte',$texte); - $page->assign('promo_min',$promo_min); - $page->assign('promo_max',$promo_max); - $page->assign('peremption',$peremption); - $page->assign('important', $important); - $page->assign('eid', $eid); - $page->assign('img', $img); - $page->assign_by_ref('upload', $upload); - - $select = ""; - for ($i = 1 ; $i < 30 ; $i++) { - $p_stamp=date("Ymd",time()+3600*24*$i); - $year=substr($p_stamp,0,4); - $month=substr($p_stamp,4,2); - $day=substr($p_stamp,6,2); - - $select .= "\n"; - } - $page->assign('select',$select); - } else { - switch ($action) { - case 'delete': - XDB::execute('DELETE from evenements - WHERE id = {?}', $eid); - break; - - case "archive": - XDB::execute('UPDATE evenements - SET creation_date = creation_date, flags = CONCAT(flags,",archive") - WHERE id = {?}', $eid); - break; - - case "unarchive": - XDB::execute('UPDATE evenements - SET creation_date = creation_date, flags = REPLACE(flags,"archive","") - WHERE id = {?}', $eid); - $action = 'archives'; - $arch = true; - break; - - case "valid": - XDB::execute('UPDATE evenements - SET creation_date = creation_date, flags = CONCAT(flags,",valide") - WHERE id = {?}', $eid); - break; - - case "unvalid": - XDB::execute('UPDATE evenements - SET creation_date = creation_date, flags = REPLACE(flags,"valide", "") - WHERE id = {?}', $eid); - break; - } - - $pid = ($eid && $action == 'preview') ? $eid : -1; - $sql = "SELECT e.id, e.titre, e.texte,e.id = $pid AS preview, - DATE_FORMAT(e.creation_date,'%d/%m/%Y %T') AS creation_date, - DATE_FORMAT(e.peremption,'%d/%m/%Y') AS peremption, - e.promo_min, e.promo_max, - FIND_IN_SET('valide', e.flags) AS fvalide, - FIND_IN_SET('archive', e.flags) AS farch, - u.promo, u.nom, u.prenom, a.alias AS forlife, - FIND_IN_SET('wiki', e.flags) AS wiki - FROM evenements AS e - INNER JOIN auth_user_md5 AS u ON(e.user_id = u.user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie') - WHERE ".($arch ? "" : "!")."FIND_IN_SET('archive',e.flags) - ORDER BY FIND_IN_SET('valide',e.flags), e.peremption DESC"; - $page->assign('evs', XDB::iterator($sql)); - } - $page->assign('arch', $arch); - $page->assign('admin_evts', true); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/forums.php b/modules/forums.php deleted file mode 100644 index 284ce84..0000000 --- a/modules/forums.php +++ /dev/null @@ -1,124 +0,0 @@ - $this->make_hook('banana', AUTH_COOKIE), - 'banana/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - 'admin/forums' => $this->make_hook('forums_bans', AUTH_MDP, 'admin'), - ); - } - - function on_subscribe($forlife, $uid, $promo, $password) - { - $cible = array('xorg.general', 'xorg.pa.divers', 'xorg.pa.logements'); - $p_for = "xorg.promo.x$promo"; - - // récupération de l'id du forum promo - $res = XDB::query("SELECT fid FROM forums.list WHERE nom={?}", $p_for); - if ($res->numRows()) { - $cible[] = $p_for; - } else { // pas de forum promo, il faut le créer - $res = XDB::query("SELECT SUM(perms IN ('admin','user') AND deces=0),COUNT(*) - FROM auth_user_md5 WHERE promo={?}", $promo); - list($effau, $effid) = $res->fetchOneRow(); - if (5*$effau>$effid) { // + de 20% d'inscrits - $mymail = new PlMailer('admin/forums-promo.mail.tpl'); - $mymail->assign('promo', $promo); - $mymail->send(); - } - } - - while (list ($key, $val) = each ($cible)) { - XDB::execute("INSERT INTO forums.abos (fid,uid) - SELECT fid,{?} FROM forums.list WHERE nom={?}", $uid, $val); - } - } - - function handler_banana(&$page, $group = null, $action = null, $artid = null) - { - $page->changeTpl('banana/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Forums & PA'); - - $get = Array(); - if (Post::has('updateall')) { - $get['updateall'] = Post::v('updateall'); - } - require_once 'banana/forum.inc.php'; - get_banana_params($get, $group, $action, $artid); - run_banana($page, 'ForumsBanana', $get); - } - - function handler_rss(&$page, $group, $alias, $hash, $file = null) - { - if (is_null($file)) { - if (is_null($hash)) { - exit; - } - $this->handler_rss($page, null, $group, $alias, $hash); - } - require_once('rss.inc.php'); - $uid = init_rss(null, $alias, $hash); - if (!$uid) { - exit; - } - $res = XDB::query("SELECT id AS uid, alias AS forlife - FROM aliases - WHERE type = 'a_vie' AND id = {?}", $uid); - $row = $res->fetchOneAssoc(); - $_SESSION = array_merge($row, $_SESSION); - - require_once 'banana/forum.inc.php'; - $banana = new ForumsBanana(S::v('forlife'), array('group' => $group, 'action' => 'rss2')); - $banana->run(); - exit; - } - - function handler_forums_bans(&$page, $action = 'list', $id = null) - { - $page->assign('pl_title','Polytechnique.org - Administration - Bannissements des forums'); - $page->assign('title', 'Gestion des mises au ban'); - $table_editor = new PLTableEditor('admin/forums','forums.innd','id_innd'); - $table_editor->add_sort_field('priority', true, true); - $table_editor->describe('read_perm','lecture',true); - $table_editor->describe('write_perm','écriture',true); - $table_editor->describe('priority','priorité',true); - $table_editor->describe('comment','commentaire',true); - $table_editor->apply($page, $action, $id); - $page->changeTpl('forums/admin.tpl'); - $page->addJsLink('jquery.js'); - } - - static function run_banana(&$page, $params = null) - { - $page->changeTpl('banana/index.tpl'); - $page->assign('pl_title','Polytechnique.org - Forums & PA'); - - require_once 'banana/forum.inc.php'; - run_banana($page, 'ForumsBanana', $params); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/gadgets.php b/modules/gadgets.php deleted file mode 100644 index 0a90079..0000000 --- a/modules/gadgets.php +++ /dev/null @@ -1,92 +0,0 @@ - $this->make_hook('ig_events_xml', AUTH_PUBLIC, 'user', NO_HTTPS), - 'gadgets/ig-events' => $this->make_hook('ig_events', AUTH_PUBLIC), - 'gadgets/ig-search.xml' => $this->make_hook('ig_search_xml', AUTH_PUBLIC, 'user', NO_HTTPS), - 'gadgets/ig-search' => $this->make_hook('ig_search', AUTH_PUBLIC), - ); - } - - function handler_ig_events_xml(&$page) { - require_once 'gadgets/gadgets.inc.php'; - init_igoogle_xml('gadgets/ig-events.xml.tpl'); - } - - function handler_ig_events(&$page) { - require_once 'gadgets/gadgets.inc.php'; - init_igoogle_html('gadgets/ig-events.tpl', AUTH_COOKIE); - - $events = XDB::iterator( - 'SELECT SQL_CALC_FOUND_ROWS - e.id, e.titre, UNIX_TIMESTAMP(e.creation_date) AS creation_date, - IF(u.nom_usage = "", u.nom, u.nom_usage) AS nom, u.prenom, u.promo, - ev.user_id IS NULL AS nonlu - FROM evenements AS e - INNER JOIN auth_user_md5 AS u ON e.user_id = u.user_id - LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?}) - WHERE FIND_IN_SET("valide", e.flags) AND peremption >= NOW() - AND (e.promo_min = 0 || e.promo_min <= {?}) - AND (e.promo_max = 0 || e.promo_max >= {?}) - ORDER BY e.creation_date DESC - LIMIT {?}', - S::i('uid'), S::i('promo'), S::i('promo'), 5); - $page->assign('events', $events); - $page->assign('event_count', XDB::query("SELECT FOUND_ROWS()")->fetchOneCell()); - } - - function handler_ig_search_xml(&$page) { - require_once 'gadgets/gadgets.inc.php'; - init_igoogle_xml('gadgets/ig-search.xml.tpl'); - } - - function handler_ig_search(&$page) - { - if (Env::has('quick') && Env::s('quick') != '') { - require_once 'userset.inc.php'; - $view = new SearchSet(true); - $view->addMod('gadget', 'Gadget', true); - $view->apply(null, $page); - - $nb_tot = $view->count(); - $page->assign('result_count', $nb_tot); - - if (!S::logged() && $nb_tot > $globals->search->public_max) { - $page->assign('error', 'Votre recherche a généré trop de résultats pour un affichage public.'); - } elseif ($nb_tot > $globals->search->private_max) { - $page->assign('error', 'Recherche trop générale.'); - } elseif (empty($nb_tot)) { - $page->assign('error', 'Il n\'existe personne correspondant à ces critères dans la base !'); - } - } - - require_once 'gadgets/gadgets.inc.php'; - init_igoogle_html('gadgets/ig-search.tpl', AUTH_PUBLIC); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/gadgets/gadgets.inc.php b/modules/gadgets/gadgets.inc.php deleted file mode 100644 index a778b3f..0000000 --- a/modules/gadgets/gadgets.inc.php +++ /dev/null @@ -1,59 +0,0 @@ -changeTpl($template, NO_SKIN); - - header('Content-Type: application/xml; charset=utf-8'); -} - -function init_igoogle_html($template, $auth = AUTH_PUBLIC) -{ - $page =& Platal::page(); - $page->changeTpl('gadgets/ig-skin.tpl', NO_SKIN); - $page->register_modifier('escape_html', 'escape_html'); - $page->default_modifiers = Array('@escape_html'); - header('Accept-Charset: utf-8'); - - // Adds external JavaScript libraries provided by iGoogle to the page. - if (Env::has('libs')) { - $libs = split(',', Env::s('libs')); - foreach ($libs as $lib) { - if (preg_match('@^[a-z0-9/._-]+$@i', $lib) && !preg_match('@([.][.])|([.]/)|(//)@', $lib)) { - $page->append('gadget_js', 'https://www.google.com/ig/f/' . $lib); - } - } - } - - // Redirects the user to the login pagin if required. - if ($auth > S::v('auth', AUTH_PUBLIC)) { - $page->assign('gadget_tpl', 'gadgets/ig-login.tpl'); - return false; - } - - $page->assign('gadget_tpl', $template); - return true; -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/geoloc.php b/modules/geoloc.php deleted file mode 100644 index 08b42fa..0000000 --- a/modules/geoloc.php +++ /dev/null @@ -1,113 +0,0 @@ - $this->make_hook('default', AUTH_COOKIE), - 'admin/geoloc' => $this->make_hook('admin', AUTH_MDP, 'admin'), - 'admin/geoloc/dynamap' => $this->make_hook('admin_dynamap', AUTH_MDP, 'admin'), - ); - } - - function handler_default(&$page, $action = null, $subaction = null) - { - global $globals; - - $set = new UserSet(); - $set->addMod('geoloc', 'Geolocalisation', true); - $set->apply('geoloc', $page, $action, $subaction); - } - - function handler_admin(&$page, $action = false) { - $page->changeTpl('geoloc/admin.tpl'); - require_once("geoloc.inc.php"); - $page->assign('pl_title','Polytechnique.org - Administration - Geolocalisation'); - - $nb_synchro = 0; - - if (Env::has('id') && is_numeric(Env::v('id'))) { - if (synchro_city(Env::v('id'))) $nb_synchro ++; - } - - if ($action == 'missinglat') { - $res = XDB::iterRow("SELECT id FROM geoloc_city WHERE lat = 0 AND lon = 0"); - while ($a = $res->next()) if (synchro_city($a[0])) $nb_synchro++; - } - - if ($nb_synchro) - $page->trigSuccess(($nb_synchro > 1)?($nb_synchro." villes ont été synchronisées"):"Une ville a été synchronisée"); - - $res = XDB::query("SELECT COUNT(*) FROM geoloc_city WHERE lat = 0 AND lon = 0"); - $page->assign("nb_missinglat", $res->fetchOneCell()); - } - - function handler_admin_dynamap(&$page, $action = false) { - $page->changeTpl('geoloc/admin_dynamap.tpl'); - - if ($action == 'cities_not_on_map') { - require_once('geoloc.inc.php'); - if (!fix_cities_not_on_map(20)) - $page->trigError("Impossible d'accéder au webservice"); - else - $refresh = true; - } - - if ($action == 'smallest_maps') { - require_once('geoloc.inc.php'); - set_smallest_levels(); - } - - if ($action == 'precise_coordinates') { - XDB::execute("UPDATE adresses AS a - INNER JOIN geoloc_city AS c ON(a.cityid = c.id) - SET a.glat = c.lat / 100000, a.glng = c.lon / 100000"); - } - - if ($action == 'newmaps') { - require_once('geoloc.inc.php'); - if (!get_new_maps(Env::v('url'))) - $page->trigError("Impossible d'accéder aux nouvelles cartes"); - } - - $countMissing = XDB::query("SELECT COUNT(*) FROM geoloc_city AS c LEFT JOIN geoloc_city_in_maps AS m ON(c.id = m.city_id) WHERE m.city_id IS NULL"); - $missing = $countMissing->fetchOneCell(); - - $countNoSmallest = XDB::query("SELECT SUM(IF(infos = 'smallest',1,0)) AS n FROM geoloc_city_in_maps GROUP BY city_id ORDER BY n"); - $noSmallest = $countNoSmallest->fetchOneCell() == 0; - - $countNoCoordinates = XDB::query("SELECT COUNT(*) FROM adresses WHERE cityid IS NOT NULL AND glat = 0 AND glng = 0"); - $noCoordinates = $countNoCoordinates->fetchOneCell(); - - if (isset($refresh) && $missing) { - $page->assign("pl_extra_header", ""); - } - $page->assign("nb_cities_not_on_map", $missing); - $page->assign("no_smallest", $noSmallest); - $page->assign("no_coordinates", $noCoordinates); - } - -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/geoloc/.gitignore b/modules/geoloc/.gitignore deleted file mode 100644 index da97ff7..0000000 --- a/modules/geoloc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.swf diff --git a/modules/googleapps.php b/modules/googleapps.php deleted file mode 100644 index eeaffb6..0000000 --- a/modules/googleapps.php +++ /dev/null @@ -1,226 +0,0 @@ -mailstorage->googleapps_domain) { - return array(); - } - - return array( - 'googleapps' => $this->make_hook('index', AUTH_MDP), - 'admin/googleapps' => $this->make_hook('admin', AUTH_MDP. 'admin'), - 'admin/googleapps/job' => $this->make_hook('admin_job', AUTH_MDP, 'admin'), - 'admin/googleapps/user' => $this->make_hook('admin_user', AUTH_MDP, 'admin'), - ); - } - - function handler_index(&$page, $action = null, $subaction = null) - { - require_once("emails.inc.php"); - require_once("googleapps.inc.php"); - $page->changeTpl('googleapps/index.tpl'); - $page->addJsLink('motdepasse.js'); - $page->assign('pl_title', 'Polytechnique.org - Compte Google Apps'); - - $account = new GoogleAppsAccount(S::v('uid'), S::v('forlife')); - - // Fills up the 'is Google Apps redirection active' variable. - $page->assign('redirect_active', false); - $page->assign('redirect_unique', true); - - if ($account->active()) { - $redirect = new Redirect(S::v('uid')); - $page->assign('redirect_unique', !$redirect->other_active('googleapps')); - - $storage = new EmailStorage(S::v('uid'), 'googleapps'); - $page->assign('redirect_active', $storage->active); - } - - // Updates the Google Apps account as required. - if ($action) { - if ($action == 'password') { - if ($subaction == 'sync') { - $account->set_password_sync(true); - $account->set_password(S::v('password')); - pl_redirect('googleapps#password'); - } else if ($subaction == 'nosync') { - $account->set_password_sync(false); - } else if (Post::has('response2') && !$account->sync_password) { - S::assert_xsrf_token(); - $account->set_password(Post::v('response2')); - } - } - - if ($action == 'suspend' && Post::has('suspend') && $account->active()) { - S::assert_xsrf_token(); - - if ($account->pending_update_suspension) { - $page->trigWarning("Ton compte est déjà en cours de désactivation."); - } else { - if ($redirect->modify_one_email('googleapps', false) == SUCCESS) { - $account->suspend(); - $page->trigSuccess("Ton compte Google Apps est dorénavant désactivé."); - } else { - $page->trigError("Ton compte Google Apps est ta seule adresse de redirection. Ton compte ne peux pas être désactivé."); - } - } - } elseif ($action == 'unsuspend' && Post::has('unsuspend') && $account->suspended()) { - $account->unsuspend(Post::b('redirect_mails', true)); - $page->trigSuccess("Ta demande de réactivation a bien été prise en compte."); - } - - if ($action == 'create') { - $page->assign('has_password_sync', Get::has('password_sync')); - $page->assign('password_sync', Get::b('password_sync', true)); - } - if ($action == 'create' && Post::has('password_sync') && Post::has('redirect_mails')) { - S::assert_xsrf_token(); - - $password_sync = Post::b('password_sync'); - $redirect_mails = Post::b('redirect_mails'); - if ($password_sync) { - $password = S::v('password'); - } else { - $password = Post::v('response2'); - } - - $account->create($password_sync, $password, $redirect_mails); - $page->trigSuccess("La demande de création de ton compte Google Apps a bien été enregistrée."); - } - } - - $page->assign('account', $account); - } - - function handler_admin(&$page, $action = null) { - require_once("googleapps.inc.php"); - $page->changeTpl('googleapps/admin.tpl'); - $page->assign('pl_title', 'Polytechnique.org - Administration Google Apps'); - $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid'))); - - if ($action == 'ack') { - $qid = @func_get_arg(2); - if ($qid) { - XDB::execute( - "DELETE FROM gapps_queue - WHERE q_id = {?} AND p_status = 'hardfail'", $qid); - $page->trigSuccess("La requête échouée a bien été retirée."); - } - } - - // Retrieves latest pending administrative requests from the gappsd queue. - $res = XDB::iterator( - "SELECT q_id, q_recipient_id, a.alias, j_type, j_parameters, - UNIX_TIMESTAMP(q.p_entry_date) AS p_entry_date - FROM gapps_queue AS q - LEFT JOIN aliases AS a ON (a.id = q_recipient_id AND a.type = 'a_vie') - WHERE p_status IN ('idle', 'active', 'softfail') AND - p_admin_request IS TRUE - ORDER BY p_entry_date"); - while ($request = $res->next()) { - $j_parameters = json_decode($request['j_parameters'], true); - unset($j_parameters['username']); - $parameters = array_keys($j_parameters); - $request['parameters'] = implode(', ', $parameters); - - $page->append('admin_requests', $request); - } - - // Retrieves latest failed requests from the gappsd queue. - $res = XDB::iterator( - "SELECT q.q_id, q.q_recipient_id, a.alias, q.j_type, q.r_result, - UNIX_TIMESTAMP(q.p_entry_date) AS p_entry_date - FROM gapps_queue AS q - LEFT JOIN aliases AS a ON (a.id = q.q_recipient_id AND a.type = 'a_vie') - WHERE q.p_status = 'hardfail' - ORDER BY p_entry_date DESC - LIMIT 20"); - $page->assign('failed_requests', $res); - } - - function handler_admin_job(&$page, $job = null) { - require_once("googleapps.inc.php"); - $page->changeTpl('googleapps/admin.job.tpl'); - $page->assign('pl_title', 'Polytechnique.org - Administration Google Apps'); - $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid'))); - - if ($job) { - $res = XDB::query( - "SELECT q.*, ao.alias AS q_owner, ar.alias AS q_recipient - FROM gapps_queue AS q - LEFT JOIN aliases AS ao ON (ao.id = q.q_owner_id AND ao.type = 'a_vie') - LEFT JOIN aliases AS ar ON (ar.id = q.q_recipient_id AND ar.type = 'a_vie') - WHERE q_id = {?}", $job); - $sql_job = $res->fetchOneAssoc(); - $sql_job['decoded_parameters'] = var_export(json_decode($sql_job['j_parameters'], true), true); - $page->assign('job', $sql_job); - } - } - - function handler_admin_user(&$page, $user = null, $action = null) { - require_once("emails.inc.php"); - require_once("googleapps.inc.php"); - $page->changeTpl('googleapps/admin.user.tpl'); - $page->assign('pl_title', 'Polytechnique.org - Administration Google Apps'); - $page->assign('googleapps_admin', GoogleAppsAccount::is_administrator(S::v('uid'))); - - if (!$user && Post::has('login')) { - $user = Post::v('login'); - } - if ($user && !is_numeric($user)) { - $res = XDB::query("SELECT id FROM aliases WHERE alias = {?} AND type != 'homonyme'", $user); - $user = $res->fetchOneCell(); - } - - if ($user) { - $account = new GoogleAppsAccount($user); - $storage = new EmailStorage($user, 'googleapps'); - - // Force synchronization of plat/al and Google Apps passwords. - if ($action == 'forcesync' && $account->sync_password) { - $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user); - $account->set_password($res->fetchOneCell()); - $page->trigSuccess('Le mot de passe a été synchronisé.'); - } - - // Displays basic account information. - $page->assign('account', $account); - $page->assign('admin_account', GoogleAppsAccount::is_administrator($user)); - $page->assign('googleapps_storage', $storage->active); - $page->assign('user', $user); - - // Retrieves user's pending requests. - $res = XDB::iterator( - "SELECT q_id, q_recipient_id, p_status, j_type, UNIX_TIMESTAMP(p_entry_date) AS p_entry_date - FROM gapps_queue - WHERE q_recipient_id = {?} - ORDER BY p_entry_date DESC", $user); - $page->assign('requests', $res); - } - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/lists.php b/modules/lists.php deleted file mode 100644 index 9bdba57..0000000 --- a/modules/lists.php +++ /dev/null @@ -1,817 +0,0 @@ - $this->make_hook('lists', AUTH_MDP), - 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'user', NO_AUTH), - 'lists/create' => $this->make_hook('create', AUTH_MDP), - - 'lists/members' => $this->make_hook('members', AUTH_COOKIE), - 'lists/annu' => $this->make_hook('annu', AUTH_COOKIE), - 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE), - 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - - 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP), - 'lists/admin' => $this->make_hook('admin', AUTH_MDP), - 'lists/options' => $this->make_hook('options', AUTH_MDP), - 'lists/delete' => $this->make_hook('delete', AUTH_MDP), - - 'lists/soptions' => $this->make_hook('soptions', AUTH_MDP), - 'lists/check' => $this->make_hook('check', AUTH_MDP), - 'admin/lists' => $this->make_hook('admin_all', AUTH_MDP, 'admin'), - ); - } - - function on_subscribe($forlife, $uid, $promo, $password) - { - $this->prepare_client(null); - $this->client->subscribe("promo$promo"); - } - - function prepare_client(&$page) - { - global $globals; - - require_once dirname(__FILE__).'/lists/lists.inc.php'; - - $this->client = new MMList(S::v('uid'), S::v('password')); - return $globals->mail->domain; - } - - function get_pending_ops($domain, $list) - { - list($subs,$mails) = $this->client->get_pending_ops($list); - $res = XDB::query("SELECT mid - FROM ml_moderate - WHERE ml = {?} AND domain = {?}", - $list, $domain); - $mids = $res->fetchColumn(); - foreach ($mails as $key=>$mail) { - if (in_array($mail['id'], $mids)) { - unset($mails[$key]); - } - } - return array($subs, $mails); - } - - function handler_lists(&$page) - { - function filter_owner($list) - { - return $list['own']; - } - - function filter_member($list) - { - return $list['sub']; - } - - $domain = $this->prepare_client($page); - - $page->changeTpl('lists/index.tpl'); - $page->addJsLink('ajax.js'); - $page->assign('pl_title','Polytechnique.org - Listes de diffusion'); - - - if (Get::has('del')) { - $this->client->unsubscribe(Get::v('del')); - pl_redirect('lists'); - } - if (Get::has('add')) { - $this->client->subscribe(Get::v('add')); - pl_redirect('lists'); - } - if (Post::has('promo_add')) { - $promo = Post::i('promo_add'); - if ($promo >= 1900 and $promo < 2100) { - $this->client->subscribe("promo$promo"); - } else { - $page->trigSuccess("promo incorrecte, il faut une promo sur 4 chiffres."); - } - } - $listes = $this->client->get_lists(); - $owner = array_filter($listes, 'filter_owner'); - $listes = array_diff_key($listes, $owner); - $member = array_filter($listes, 'filter_member'); - $listes = array_diff_key($listes, $member); - foreach ($owner as $key=>$liste) { - list($subs,$mails) = $this->get_pending_ops($domain, $liste['list']); - $owner[$key]['subscriptions'] = $subs; - $owner[$key]['mails'] = $mails; - } - $page->register_modifier('hdc', 'list_header_decode'); - $page->assign_by_ref('owner', $owner); - $page->assign_by_ref('member', $member); - $page->assign_by_ref('public', $listes); - } - - function handler_ajax(&$page, $list = null) - { - header('Content-Type: text/html; charset="UTF-8"'); - $domain = $this->prepare_client($page); - $page->changeTpl('lists/liste.inc.tpl', NO_SKIN); - if (Get::has('unsubscribe')) { - $this->client->unsubscribe($list); - } - if (Get::has('subscribe')) { - $this->client->subscribe($list); - } - if (Get::has('sadd')) { /* 4 = SUBSCRIBE */ - $this->client->handle_request($list, Get::v('sadd'), 4, ''); - } - if (Get::has('mid')) { - $this->moderate_mail($domain, $list, Get::i('mid')); - } - - list($liste, $members, $owners) = $this->client->get_members($list); - if ($liste['own']) { - list($subs,$mails) = $this->get_pending_ops($domain, $list); - $liste['subscriptions'] = $subs; - $liste['mails'] = $mails; - } - $page->register_modifier('hdc', 'list_header_decode'); - $page->assign_by_ref('liste', $liste); - } - - function handler_create(&$page) - { - global $globals; - - $page->changeTpl('lists/create.tpl'); - - $owners = preg_split("/[\s]+/", Post::v('owners'), -1, PREG_SPLIT_NO_EMPTY); - $members = preg_split("/[\s]+/", Post::v('members'), -1, PREG_SPLIT_NO_EMPTY); - - // click on validate button 'add_owner_sub' or type - if (Post::has('add_owner_sub') && Post::has('add_owner')) { - require_once('user.func.inc.php'); - // if we want to add an owner and then type , then both - // add_owner_sub and add_owner are filled. - $oforlifes = get_users_forlife_list(Post::v('add_owner'), true); - $mforlifes = get_users_forlife_list(Post::v('add_member'), true); - if (!is_null($oforlifes)) { - $owners = array_merge($owners, $oforlifes); - } - // if we want to add a member and then type , then - // add_owner_sub is filled, whereas add_owner is empty. - if (!is_null($mforlifes)) { - $members = array_merge($members, $mforlifes); - } - } - - // click on validate button 'add_member_sub' - if (Post::has('add_member_sub') && Post::has('add_member')) { - require_once('user.func.inc.php'); - $forlifes = get_users_forlife_list(Post::v('add_member'), true); - if (!is_null($forlifes)) { - $members = array_merge($members, $forlifes); - } - } - - ksort($owners); - $owners = array_unique($owners); - ksort($members); - $members = array_unique($members); - - $page->assign('owners', join(' ', $owners)); - $page->assign('members', join(' ', $members)); - - if (!Post::has('submit')) { - return; - } - - $asso = Post::v('asso'); - $liste = Post::v('liste'); - - if (empty($liste)) { - $page->trigError('Le champ «adresse souhaitée» est vide.'); - } - if (!preg_match("/^[a-zA-Z0-9\-]*$/", $liste)) { - $page->trigError('Le nom de la liste ne doit contenir que des lettres non accentuées, chiffres et tirets.'); - } - - if (($asso == "binet") || ($asso == "alias")) { - $promo = Post::i('promo'); - $domain = $promo . '.' . $globals->mail->domain; - - if (($promo < 1921) || ($promo > date('Y'))) { - $page->trigError('La promotion est mal renseignée, elle doit être du type : 2004.'); - } - - $new = $liste . '@' . $domain; - $res = XDB::query('SELECT COUNT(*) FROM x4dat.virtual WHERE alias={?}', $new); - - } else { - if ($asso == "groupex") { - $groupex_name = Post::v('groupex_name'); - - $res_groupe = XDB::query('SELECT mail_domain FROM groupex.asso WHERE nom={?}', $groupex_name); - $domain = $res_groupe->fetchOneCell(); - - if (!$domain) { - $page->trigError('Il n\'y a aucun groupe de ce nom sur Polytechnique.net.'); - } - - $new = $liste . '@' . $domain; - $res = XDB::query('SELECT COUNT(*) FROM x4dat.virtual WHERE alias={?}', $new); - } else { - $res = XDB::query("SELECT COUNT(*) FROM aliases WHERE alias={?}", $liste); - $domain = $globals->mail->domain; - } - } - - $n = $res->fetchOneCell(); - - if ($n) { - $page->trigError('L\'«adresse souhaitée» est déjà prise.'); - } - - if (!Post::v('desc')) { - $page->trigError('Le sujet est vide.'); - } - - if (!count($owners)) { - $page->trigError('Il n\'y a pas de gestionnaire.'); - } - - if (count($members)<4) { - $page->trigError('Il n\'y a pas assez de membres.'); - } - - if (!$page->nb_errs()) { - $page->assign('created', true); - require_once 'validations.inc.php'; - $req = new ListeReq(S::v('uid'), $asso, $liste, $domain, - Post::v('desc'), Post::i('advertise'), - Post::i('modlevel'), Post::i('inslevel'), - $owners, $members); - $req->submit(); - } - } - - function handler_members(&$page, $liste = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $this->prepare_client($page); - - $page->changeTpl('lists/members.tpl'); - - if (Get::has('del')) { - $this->client->unsubscribe($liste); - pl_redirect('lists/members/'.$liste); - } - - if (Get::has('add')) { - $this->client->subscribe($liste); - pl_redirect('lists/members/'.$liste); - } - - $members = $this->client->get_members($liste); - - $tri_promo = !Env::b('alpha'); - - if (list($det,$mem,$own) = $members) { - $membres = list_sort_members($mem, $tri_promo); - $moderos = list_sort_owners($own, $tri_promo); - - $page->assign_by_ref('details', $det); - $page->assign_by_ref('members', $membres); - $page->assign_by_ref('owners', $moderos); - $page->assign('nb_m', count($mem)); - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit d'en voir les détails"); - } - } - - function handler_annu(&$page, $liste = null, $action = null, $subaction = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $this->prepare_client($page); - - if (Get::has('del')) { - $this->client->unsubscribe($liste); - pl_redirect('lists/annu/'.$liste); - } - if (Get::has('add')) { - $this->client->subscribe($liste); - pl_redirect('lists/annu/'.$liste); - } - - $owners = $this->client->get_owners($liste); - if (!is_array($owners)) { - $page->kill("La liste n'existe pas ou tu n'as pas le droit d'en voir les détails"); - } - - global $platal; - list(,$members) = $this->client->get_members($liste); - $users = array(); - foreach ($members as $m) { - $users[] = $m[1]; - } - require_once 'userset.inc.php'; - $view = new ArraySet($users); - $view->addMod('trombi', 'Trombinoscope', true, array('with_promo' => true)); - if (empty($GLOBALS['IS_XNET_SITE'])) { - $view->addMod('minifiche', 'Minifiches', false); - } - $view->addMod('geoloc', 'Planisphère'); - $view->apply("lists/annu/$liste", $page, $action, $subaction); - if ($action == 'geoloc' && $subaction) { - return; - } - - $page->changeTpl('lists/annu.tpl'); - $moderos = list_sort_owners($owners[1]); - $page->assign_by_ref('details', $owners[0]); - $page->assign_by_ref('owners', $moderos); - } - - function handler_archives(&$page, $liste = null, $action = null, $artid = null) - { - global $globals; - - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $domain = $this->prepare_client($page); - - $page->changeTpl('lists/archives.tpl'); - - if (list($det) = $this->client->get_members($liste)) { - if (substr($liste,0,5) != 'promo' && ($det['ins'] || $det['priv']) - && !$det['own'] && ($det['sub'] < 2)) { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de la consulter."); - } - $get = Array('listname' => $liste, 'domain' => $domain); - if (Post::has('updateall')) { - $get['updateall'] = Post::v('updateall'); - } - require_once 'banana/ml.inc.php'; - get_banana_params($get, null, $action, $artid); - run_banana($page, 'MLBanana', $get); - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de la consulter."); - } - } - - function handler_rss(&$page, $liste = null, $alias = null, $hash = null) - { - require_once('rss.inc.php'); - $uid = init_rss(null, $alias, $hash); - if (!$uid || !$liste) { - exit; - } - - $res = XDB::query("SELECT user_id AS uid, password, alias AS forlife - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') - WHERE u.user_id = {?}", $uid); - $row = $res->fetchOneAssoc(); - $_SESSION = array_merge($row, $_SESSION); - - $domain = $this->prepare_client($page); - if (list($det) = $this->client->get_members($liste)) { - if (substr($liste,0,5) != 'promo' && ($det['ins'] || $det['priv']) - && !$det['own'] && ($det['sub'] < 2)) { - exit; - } - require_once('banana/ml.inc.php'); - $banana = new MLBanana(S::v('forlife'), Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2')); - $banana->run(); - } - exit; - } - - function moderate_mail($domain, $liste, $mid) - { - if (Env::has('mok')) { - $action = 'accept'; - } elseif (Env::has('mno')) { - $action = 'refuse'; - } elseif (Env::has('mdel')) { - $action = 'delete'; - } else { - return false; - } - Get::kill('mid'); - return XDB::execute("INSERT IGNORE INTO ml_moderate - VALUES ({?}, {?}, {?}, {?}, {?}, NOW(), {?}, NULL)", - $liste, $domain, $mid, S::i('uid'), $action, Post::v('reason')); - } - - function handler_moderate(&$page, $liste = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $domain = $this->prepare_client($page); - - $page->changeTpl('lists/moderate.tpl'); - - $page->register_modifier('hdc', 'list_header_decode'); - - if (Env::has('sadd') || Env::has('sdel')) { - if (Env::has('sadd')) { /* 4 = SUBSCRIBE */ - $sub = $this->client->get_pending_sub($liste, Env::v('sadd')); - $this->client->handle_request($liste,Env::v('sadd'),4,''); - $info = "validée"; - } - if (Post::has('sdel')) { /* 2 = REJECT */ - $sub = $this->client->get_pending_sub($liste, Env::v('sdel')); - $this->client->handle_request($liste, Post::v('sdel'), 2, utf8_decode(Post::v('reason'))); - $info = "refusée"; - } - if ($sub) { - $mailer = new PlMailer(); - $mailer->setFrom("$liste-bounces@{$domain}"); - $mailer->addTo("$liste-owner@{$domain}"); - $mailer->addHeader('Reply-To', "$liste-owner@{$domain}"); - $mailer->setSubject("L'inscription de {$sub['name']} a été $info"); - $text = "L'inscription de {$sub['name']} à la liste $liste@{$domain} a été $info par " . S::v('prenom') . ' ' - . S::v('nom') . '(' . S::v('promo') . ")\n"; - if (trim(Post::v('reason'))) { - $text .= "\nLa raison invoquée est :\n" . Post::v('reason'); - } - $mailer->setTxtBody(wordwrap($text, 72)); - $mailer->send(); - } - if (Env::has('sadd')) { - pl_redirect('lists/moderate/'.$liste); - } - } - - if (Post::has('moderate_mails') && Post::has('select_mails')) { - $mails = array_keys(Post::v('select_mails')); - foreach($mails as $mail) { - $this->moderate_mail($domain, $liste, $mail); - } - } elseif (Env::has('mid')) { - if (Get::has('mid') && !Env::has('mok') && !Env::has('mdel')) { - $page->changeTpl('lists/moderate_mail.tpl'); - require_once('banana/moderate.inc.php'); - $params = array('listname' => $liste, 'domain' => $domain, - 'artid' => Get::i('mid'), 'part' => Get::v('part'), 'action' => Get::v('action')); - $params['client'] = $this->client; - run_banana($page, 'ModerationBanana', $params); - - $msg = file_get_contents('/etc/mailman/fr/refuse.txt'); - $msg = str_replace("%(adminaddr)s", "$liste-owner@{$domain}", $msg); - $msg = str_replace("%(request)s", "<< SUJET DU MAIL >>", $msg); - $msg = str_replace("%(reason)s", "<< TON EXPLICATION >>", $msg); - $msg = str_replace("%(listname)s", $liste, $msg); - $page->assign('msg', $msg); - return; - } - - $mail = $this->moderate_mail($domain, $liste, Env::i('mid')); - } elseif (Env::has('sid')) { - if (list($subs,$mails) = $this->get_pending_ops($domain, $liste)) { - foreach($subs as $user) { - if ($user['id'] == Env::v('sid')) { - $page->changeTpl('lists/moderate_sub.tpl'); - $page->assign('del_user', $user); - return; - } - } - } - - } - - if (list($subs,$mails) = $this->get_pending_ops($domain, $liste)) { - foreach ($mails as $key=>$mail) { - $mails[$key]['stamp'] = strftime("%Y%m%d%H%M%S", $mail['stamp']); - if ($mail['fromx']) { - $page->assign('with_fromx', true); - } else { - $page->assign('with_nonfromx', true); - } - } - $page->assign_by_ref('subs', $subs); - $page->assign_by_ref('mails', $mails); - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de la modérer"); - } - } - - static public function no_login_callback($login) - { - require_once 'user.func.inc.php'; - global $list_unregistered, $globals; - - $users = get_not_registered_user($login, true); - if ($users && $users->total()) { - if (!isset($list_unregistered)) { - $list_unregistered = array(); - } - $list_unregistered[$login] = $users; - } else { - list($name, $dom) = @explode('@', $login); - if ($dom == $globals->mail->domain || $dom == $globals->mail->domain2) { - _default_user_callback($login); - } - } - } - - function handler_admin(&$page, $liste = null) - { - global $globals; - - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $domain = $this->prepare_client($page); - - $page->changeTpl('lists/admin.tpl'); - - if (Env::has('send_mark')) { - $actions = Env::v('mk_action'); - $uids = Env::v('mk_uid'); - $mails = Env::v('mk_email'); - foreach ($actions as $key=>$action) { - switch ($action) { - case 'none': - break; - - case 'marketu': case 'markets': - require_once 'emails.inc.php'; - $mail = valide_email($mails[$key]); - if (isvalid_email_redirection($mail)) { - $from = ($action == 'marketu') ? 'user' : 'staff'; - $market = Marketing::get($uids[$key], $mail); - if (!$market) { - $market = new Marketing($uids[$key], $mail, 'list', "$liste@$domain", $from, S::v('uid')); - $market->add(); - break; - } - } - - default: - XDB::execute('INSERT IGNORE INTO register_subs (uid, type, sub, domain) - VALUES ({?}, \'list\', {?}, {?})', - $uids[$key], $liste, $domain); - } - } - } - - if (Env::has('add_member')) { - require_once('user.func.inc.php'); - $members = get_users_forlife_list(Env::v('add_member'), - false, - array('ListsModule', 'no_login_callback')); - $arr = $this->client->mass_subscribe($liste, $members); - if (is_array($arr)) { - foreach($arr as $addr) { - $page->trigSuccess("{$addr[0]} inscrit."); - } - } - } - - if (Env::has('del_member')) { - if (strpos(Env::v('del_member'), '@') === false) { - $this->client->mass_unsubscribe( - $liste, array(Env::v('del_member').'@'.$globals->mail->domain)); - } else { - $this->client->mass_unsubscribe($liste, array(Env::v('del_member'))); - } - pl_redirect('lists/admin/'.$liste); - } - - if (Env::has('add_owner')) { - require_once('user.func.inc.php'); - $owners = get_users_forlife_list(Env::v('add_owner'), false, array('ListsModule', 'no_login_callback')); - if ($owners) { - foreach ($owners as $login) { - if ($this->client->add_owner($liste, $login)) { - $page->trigSuccess($alias." ajouté aux modérateurs."); - } - } - } - } - - if (Env::has('del_owner')) { - if (strpos(Env::v('del_owner'), '@') === false) { - $this->client->del_owner($liste, Env::v('del_owner').'@'.$globals->mail->domain); - } else { - $this->client->del_owner($liste, Env::v('del_owner')); - } - pl_redirect('lists/admin/'.$liste); - } - - if (list($det,$mem,$own) = $this->client->get_members($liste)) { - global $list_unregistered; - if ($list_unregistered) { - $page->assign_by_ref('unregistered', $list_unregistered); - } - $membres = list_sort_members($mem, @$tri_promo); - $moderos = list_sort_owners($own, @$tri_promo); - - $page->assign_by_ref('details', $det); - $page->assign_by_ref('members', $membres); - $page->assign_by_ref('owners', $moderos); - $page->assign('np_m', count($mem)); - - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de l'administrer.
    " - ." Si tu penses qu'il s'agit d'une erreur, " - ."contact le support"); - } - } - - function handler_options(&$page, $liste = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $this->prepare_client($page); - - $page->changeTpl('lists/options.tpl'); - - if (Post::has('submit')) { - $values = $_POST; - $values = array_map('utf8_decode', $values); - $spamlevel = intval($values['bogo_level']); - $unsurelevel = intval($values['unsure_level']); - if ($spamlevel == 0) { - $unsurelevel = 0; - } - if ($spamlevel > 3 || $spamlevel < 0 || $unsurelevel < 0 || $unsurelevel > 1) { - $page->trigError("Réglage de l'antispam non valide"); - } else { - $this->client->set_bogo_level($liste, ($spamlevel << 1) + $unsurelevel); - } - switch($values['moderate']) { - case '0': - $values['generic_nonmember_action'] = 0; - $values['default_member_moderation'] = 0; - break; - case '1': - $values['generic_nonmember_action'] = 1; - $values['default_member_moderation'] = 0; - break; - case '2': - $values['generic_nonmember_action'] = 1; - $values['default_member_moderation'] = 1; - break; - } - unset($values['submit'], $values['bogo_level'], $values['moderate']); - $values['send_goodbye_msg'] = !empty($values['send_goodbye_msg']); - $values['admin_notify_mchanges'] = !empty($values['admin_notify_mchanges']); - $values['subscribe_policy'] = empty($values['subscribe_policy']) ? 0 : 2; - if (isset($values['subject_prefix'])) { - $values['subject_prefix'] = trim($values['subject_prefix']).' '; - } - $this->client->set_owner_options($liste, $values); - } elseif (isvalid_email(Post::v('atn_add'))) { - $this->client->add_to_wl($liste, Post::v('atn_add')); - } elseif (Get::has('atn_del')) { - $this->client->del_from_wl($liste, Get::v('atn_del')); - pl_redirect('lists/options/'.$liste); - } - - if (list($details,$options) = $this->client->get_owner_options($liste)) { - $page->assign_by_ref('details', $details); - $page->assign_by_ref('options', $options); - $bogo_level = intval($this->client->get_bogo_level($liste)); - $page->assign('unsure_level', $bogo_level & 1); - $page->assign('bogo_level', $bogo_level >> 1); - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de l'administrer"); - } - } - - function handler_delete(&$page, $liste = null) - { - global $globals; - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $domain = $this->prepare_client($page); - if ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) { - $domain = ''; - $table = 'aliases'; - $type = 'liste'; - } else { - $domain = '@' . $domain; - $table = 'virtual'; - $type = 'list'; - } - - $page->changeTpl('lists/delete.tpl'); - if (Post::v('valid') == 'OUI') { - if ($this->client->delete_list($liste, Post::b('del_archive'))) { - foreach (array('', '-owner', '-admin', '-bounces', '-unsubscribe') as $app) { - XDB::execute("DELETE FROM $table - WHERE type={?} AND alias={?}", - $type, $liste.$app.$domain); - } - $page->assign('deleted', true); - } else { - $page->kill('Une erreur est survenue lors de la suppression de la liste.
    ' - . 'Contact les administrateurs du site pour régler le problème : ' - . 'support@polytechnique.org'); - } - } elseif (list($details,$options) = $this->client->get_owner_options($liste)) { - $page->assign_by_ref('details', $details); - $page->assign_by_ref('options', $options); - $page->assign('bogo_level', $this->client->get_bogo_level($liste)); - } else { - $page->kill("La liste n'existe pas ou tu n'as pas le droit de l'administrer"); - } - } - - function handler_soptions(&$page, $liste = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $this->prepare_client($page); - - $page->changeTpl('lists/soptions.tpl'); - - if (Post::has('submit')) { - $values = $_POST; - $values = array_map('utf8_decode', $values); - unset($values['submit']); - $values['advertised'] = empty($values['advertised']) ? false : true; - $values['archive'] = empty($values['archive']) ? false : true; - $this->client->set_admin_options($liste, $values); - } - - if (list($details,$options) = $this->client->get_admin_options($liste)) { - $page->assign_by_ref('details', $details); - $page->assign_by_ref('options', $options); - } else { - $page->kill("La liste n'existe pas"); - } - } - - function handler_check(&$page, $liste = null) - { - if (is_null($liste)) { - return PL_NOT_FOUND; - } - - $this->prepare_client($page); - - $page->changeTpl('lists/check.tpl'); - - if (Post::has('correct')) { - $this->client->check_options($liste, true); - } - - if (list($details,$options) = $this->client->check_options($liste)) { - $page->assign_by_ref('details', $details); - $page->assign_by_ref('options', $options); - } else { - $page->kill("La liste n'existe pas"); - } - } - - function handler_admin_all(&$page) { - $page->changeTpl('lists/admin_all.tpl'); - $page->assign('pl_title','Polytechnique.org - Administration - Mailing lists'); - - $client = new MMList(S::v('uid'), S::v('password')); - $listes = $client->get_all_lists(); - $page->assign_by_ref('listes', $listes); - } -} - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/lists/lists.inc.php b/modules/lists/lists.inc.php deleted file mode 100644 index c3a5abf..0000000 --- a/modules/lists/lists.inc.php +++ /dev/null @@ -1,99 +0,0 @@ -mail->domain || $dom == $globals->mail->domain2) { - $res = XDB::query('SELECT prenom, IF(nom_usage="", nom, nom_usage), promo, - (e.uid IS NULL AND FIND_IN_SET("googleapps", u.mail_storage) = 0) - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON u.user_id = a.id - LEFT JOIN emails AS e ON (e.flags = "active" AND e.uid = u.user_id) - WHERE a.alias = {?} - GROUP BY u.user_id', $m); - if(list($prenom, $nom, $promo, $broken) = $res->fetchOneRow()) { - $key = $tri_promo ? $promo : strtoupper($nom{0}); - $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $m, 'p' => (!$tri_promo ? $promo : null), 'b' => $broken); - } else { - $membres[0][] = Array('l' => $mem, 'b' => $broken); - } - } else { - $res = XDB::query('SELECT m2.uid, - IF(m2.origine="X", u.prenom, m1.prenom) AS prenom, - IF(m2.origine="X", u.nom, m1.nom) AS nom, - IF(m2.origine="X", u.promo, "non-X") AS promo, - 0 - FROM groupex.membres AS m1 - LEFT JOIN groupex.membres AS m2 ON(m1.email=m2.email AND m2.asso_id={?}) - LEFT JOIN auth_user_md5 AS u ON(m2.origine = "X" AND m2.uid = u.user_id) - WHERE m1.email={?}', $globals->asso('id'), $mem); - if (list($uid, $prenom, $nom, $promo) = $res->fetchOneRow()) { - $key = $tri_promo ? ($promo != 'non-X' ? $promo : 0) : strtoupper($nom{0}); - if ($tri_promo) { - $promo = null; - } - $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $mem, 'x' => $uid, 'p' => $promo); - } else { - $membres[0][] = Array('l' => $mem, 'p' => (!$tri_promo ? 'non-X' : null)); - } - } - } - - ksort($membres); - foreach($membres as $key=>$val) ksort($membres[$key]); - return $membres; -} - -// }}} -// {{{ function list_sort_members - -function list_sort_members(&$members, $tri_promo = true) { - $member_list = array_map(create_function('$arr', 'return $arr[1];'), $members); - return list_sort_owners($member_list, $tri_promo); -} - -// }}} -// {{{ function list_header_decode - -function _list_header_decode($charset, $c, $str) { - $s = ($c == 'Q' || $c == 'q') ? quoted_printable_decode($str) : base64_decode($str); - $s = iconv($charset, 'UTF-8', $s); - return str_replace('_', ' ', $s); -} - -function list_header_decode($value) { - if (!$value) { - return "[pas de sujet]"; - } - $val = preg_replace('/(=\?[^?]*\?[BQbq]\?[^?]*\?=) (=\?[^?]*\?[BQbq]\?[^?]*\?=)/', '\1\2', $value); - return preg_replace('/=\?([^?]*)\?([BQbq])\?([^?]*)\?=/e', '_list_header_decode("\1", "\2", "\3")', $val); -} - -// }}} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/lists/mail_templates/adminsubscribeack.txt b/modules/lists/mail_templates/adminsubscribeack.txt deleted file mode 100644 index 2b391f3..0000000 --- a/modules/lists/mail_templates/adminsubscribeack.txt +++ /dev/null @@ -1,4 +0,0 @@ -Nous vous confirmons l'abonnement de %(member)s -à la liste de diffusion {{{LIST}}}. - - diff --git a/modules/lists/mail_templates/adminunsubscribeack.txt b/modules/lists/mail_templates/adminunsubscribeack.txt deleted file mode 100644 index fc3bcdd..0000000 --- a/modules/lists/mail_templates/adminunsubscribeack.txt +++ /dev/null @@ -1,2 +0,0 @@ -L'abonnement de %(member)s à %(listname)s a été résilié. - diff --git a/modules/lists/mail_templates/checkdbs.txt b/modules/lists/mail_templates/checkdbs.txt deleted file mode 100644 index 475254e..0000000 --- a/modules/lists/mail_templates/checkdbs.txt +++ /dev/null @@ -1,8 +0,0 @@ -La liste {{{LIST}}} a %(count)d requête(s) en attente -d'une action de votre part sur la page web : - - {{{MODERATE}}} - -Merci de bien vouloir prendre le temps de les traiter. -Cet avis de requête(s) en attente vous sera envoyé -chaque jour où des messages sont en attente de modération. diff --git a/modules/lists/mail_templates/newlist.txt b/modules/lists/mail_templates/newlist.txt deleted file mode 100644 index 4091944..0000000 --- a/modules/lists/mail_templates/newlist.txt +++ /dev/null @@ -1,7 +0,0 @@ -La liste de diffusion {{{LIST}}} vient d'être créée pour vous. - -Vous pouvez en régler les paramètres depuis la page web : - - {{{ADMIN}}} - -Pour toute question adressez-vous à support@polytechnique.org. diff --git a/modules/lists/mail_templates/postauth.txt b/modules/lists/mail_templates/postauth.txt deleted file mode 100644 index 14a5980..0000000 --- a/modules/lists/mail_templates/postauth.txt +++ /dev/null @@ -1,13 +0,0 @@ -En tant que modérateur de la liste, votre autorisation est nécessaire -pour que le message suivant soit acheminé vers les abonnés à la liste -de diffusion : - - Liste: {{{LIST}}} - De: %(sender)s - Objet: %(subject)s - Raison: %(reason)s - -Quand vous le souhaitez, consultez la page web pour accepter ou refuser -le message : - - {{{MODERATE}}} diff --git a/modules/lists/mail_templates/postheld.txt b/modules/lists/mail_templates/postheld.txt deleted file mode 100644 index a348eba..0000000 --- a/modules/lists/mail_templates/postheld.txt +++ /dev/null @@ -1,13 +0,0 @@ -Votre courrier à '{{{LIST}}}' dont l'objet est - - %(subject)s - -a bien été transmis à l'animateur de la liste de diffusion, -afin qu'il puisse le valider. - -En effet, - - %(reason)s - -Vous serez informé de l'action prise par le modérateur dans -les plus brefs délais. diff --git a/modules/lists/mail_templates/refuse.txt b/modules/lists/mail_templates/refuse.txt deleted file mode 100644 index db72166..0000000 --- a/modules/lists/mail_templates/refuse.txt +++ /dev/null @@ -1,13 +0,0 @@ -Vous avez envoyé un message à la liste de diffusion {{{LIST}}} : - - %(request)s - -Le modérateur n'a pas souhaité diffuser votre message vers les -abonnés à la liste pour la raison suivante : - - "%(reason)s" - -Toute question ou commentaire doit être adressé aux modérateurs de la -liste à cette adresse : - - {{{ALIST}}} diff --git a/modules/lists/mail_templates/subauth.txt b/modules/lists/mail_templates/subauth.txt deleted file mode 100644 index 652a796..0000000 --- a/modules/lists/mail_templates/subauth.txt +++ /dev/null @@ -1,10 +0,0 @@ -En tant qu'animateur de la liste de diffusion, votre -autorisation est requise pour une demande d'abonnement : - - Pour: %(username)s - -Quand vous le pourrez, consultez la page web : - - {{{MODERATE}}} - -pour indiquer la suite que vous donnez à cette demande. diff --git a/modules/lists/mail_templates/subscribeack.txt b/modules/lists/mail_templates/subscribeack.txt deleted file mode 100644 index 29bea77..0000000 --- a/modules/lists/mail_templates/subscribeack.txt +++ /dev/null @@ -1,13 +0,0 @@ -Bienvenue sur la liste {{{LIST}}} - -%(welcome)s - -Pour écrire à la liste, envoyez votre message à : - - {{{LIST}}} - -Les informations générales concernant cette liste (composition, -trombinoscope, ...) sont à l'adresse : - - {{{MEMBERS}}} - diff --git a/modules/lists/platal.mrc b/modules/lists/platal.mrc deleted file mode 100644 index a887369..0000000 --- a/modules/lists/platal.mrc +++ /dev/null @@ -1,493 +0,0 @@ - - - - -%d-%m-%y - - -50 - - - - - -text/plain -text/html - - - -m2h_external::filter; forceinline -m2h_text_plain::filter; fancyquote maxwidth=80 quoteclass=quote - - - -/var/spool/platal/archives/attachments/ - - - -../attach - - - - - - - - - -MY-LINK -?liste={$$smarty.request.liste}&rep={$$smarty.request.rep}&file= - - - -TOP-ARCH -