From: Florent Bruneau Date: Sun, 22 Jun 2008 14:11:24 +0000 (+0200) Subject: Cleanup core branch X-Git-Tag: core/1.0.0~70 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=b1ee04c545a3ec61d0464afee7222be8b98424c4;p=platal.git Cleanup core branch Signed-off-by: Florent Bruneau --- 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 171dcb6..0000000 Binary files a/htdocs/images/L.gif and /dev/null differ diff --git a/htdocs/images/T.gif b/htdocs/images/T.gif deleted file mode 100644 index cf2335f..0000000 Binary files a/htdocs/images/T.gif and /dev/null differ diff --git a/htdocs/images/asso-montants.png b/htdocs/images/asso-montants.png deleted file mode 100644 index 3838d88..0000000 Binary files a/htdocs/images/asso-montants.png and /dev/null differ diff --git a/htdocs/images/asso.png b/htdocs/images/asso.png deleted file mode 100644 index 9a9f7f2..0000000 Binary files a/htdocs/images/asso.png and /dev/null differ diff --git a/htdocs/images/ax_mail_header.jpg b/htdocs/images/ax_mail_header.jpg deleted file mode 100644 index ab98f38..0000000 Binary files a/htdocs/images/ax_mail_header.jpg and /dev/null differ diff --git a/htdocs/images/bandeau.jpg b/htdocs/images/bandeau.jpg deleted file mode 100644 index 1f83ffe..0000000 Binary files a/htdocs/images/bandeau.jpg and /dev/null differ diff --git a/htdocs/images/barre.png b/htdocs/images/barre.png deleted file mode 100644 index 7f73860..0000000 Binary files a/htdocs/images/barre.png and /dev/null differ diff --git a/htdocs/images/barre_small.png b/htdocs/images/barre_small.png deleted file mode 100644 index f57ea4a..0000000 Binary files a/htdocs/images/barre_small.png and /dev/null differ diff --git a/htdocs/images/carre.jpg b/htdocs/images/carre.jpg deleted file mode 100644 index b0b3edf..0000000 Binary files a/htdocs/images/carre.jpg and /dev/null differ diff --git a/htdocs/images/dflt_carre.jpg b/htdocs/images/dflt_carre.jpg deleted file mode 100644 index 29d4606..0000000 Binary files a/htdocs/images/dflt_carre.jpg and /dev/null differ diff --git a/htdocs/images/dn.png b/htdocs/images/dn.png deleted file mode 100644 index a4f8e50..0000000 Binary files a/htdocs/images/dn.png and /dev/null differ diff --git a/htdocs/images/equipe.jpg b/htdocs/images/equipe.jpg deleted file mode 100644 index e423a37..0000000 Binary files a/htdocs/images/equipe.jpg and /dev/null differ diff --git a/htdocs/images/favicon.ico b/htdocs/images/favicon.ico deleted file mode 100755 index 9f7e6bc..0000000 Binary files a/htdocs/images/favicon.ico and /dev/null differ diff --git a/htdocs/images/favicon.png b/htdocs/images/favicon.png deleted file mode 100644 index 0e4b1d1..0000000 Binary files a/htdocs/images/favicon.png and /dev/null differ diff --git a/htdocs/images/fin_logo.jpg b/htdocs/images/fin_logo.jpg deleted file mode 100644 index 435165c..0000000 Binary files a/htdocs/images/fin_logo.jpg and /dev/null differ diff --git a/htdocs/images/flags/AD.gif b/htdocs/images/flags/AD.gif deleted file mode 100644 index 57b4997..0000000 Binary files a/htdocs/images/flags/AD.gif and /dev/null differ diff --git a/htdocs/images/flags/AE.gif b/htdocs/images/flags/AE.gif deleted file mode 100644 index 78d15b6..0000000 Binary files a/htdocs/images/flags/AE.gif and /dev/null differ diff --git a/htdocs/images/flags/AF.gif b/htdocs/images/flags/AF.gif deleted file mode 100644 index 9889408..0000000 Binary files a/htdocs/images/flags/AF.gif and /dev/null differ diff --git a/htdocs/images/flags/AG.gif b/htdocs/images/flags/AG.gif deleted file mode 100644 index 48f8e7b..0000000 Binary files a/htdocs/images/flags/AG.gif and /dev/null differ diff --git a/htdocs/images/flags/AI.gif b/htdocs/images/flags/AI.gif deleted file mode 100644 index 1cbc579..0000000 Binary files a/htdocs/images/flags/AI.gif and /dev/null differ diff --git a/htdocs/images/flags/AL.gif b/htdocs/images/flags/AL.gif deleted file mode 100644 index c44fe0a..0000000 Binary files a/htdocs/images/flags/AL.gif and /dev/null differ diff --git a/htdocs/images/flags/AM.gif b/htdocs/images/flags/AM.gif deleted file mode 100644 index 2915e30..0000000 Binary files a/htdocs/images/flags/AM.gif and /dev/null differ diff --git a/htdocs/images/flags/AN.gif b/htdocs/images/flags/AN.gif deleted file mode 100644 index cb570c6..0000000 Binary files a/htdocs/images/flags/AN.gif and /dev/null differ diff --git a/htdocs/images/flags/AO.gif b/htdocs/images/flags/AO.gif deleted file mode 100644 index 3011b19..0000000 Binary files a/htdocs/images/flags/AO.gif and /dev/null differ diff --git a/htdocs/images/flags/AR.gif b/htdocs/images/flags/AR.gif deleted file mode 100644 index a9f71f7..0000000 Binary files a/htdocs/images/flags/AR.gif and /dev/null differ diff --git a/htdocs/images/flags/AS.gif b/htdocs/images/flags/AS.gif deleted file mode 100644 index d776ec2..0000000 Binary files a/htdocs/images/flags/AS.gif and /dev/null differ diff --git a/htdocs/images/flags/AT.gif b/htdocs/images/flags/AT.gif deleted file mode 100644 index 87e1217..0000000 Binary files a/htdocs/images/flags/AT.gif and /dev/null differ diff --git a/htdocs/images/flags/AU.gif b/htdocs/images/flags/AU.gif deleted file mode 100644 index 5269c6a..0000000 Binary files a/htdocs/images/flags/AU.gif and /dev/null differ diff --git a/htdocs/images/flags/AW.gif b/htdocs/images/flags/AW.gif deleted file mode 100644 index 27fdb4d..0000000 Binary files a/htdocs/images/flags/AW.gif and /dev/null differ diff --git a/htdocs/images/flags/AX.gif b/htdocs/images/flags/AX.gif deleted file mode 100644 index 0ceb684..0000000 Binary files a/htdocs/images/flags/AX.gif and /dev/null differ diff --git a/htdocs/images/flags/AZ.gif b/htdocs/images/flags/AZ.gif deleted file mode 100644 index d771618..0000000 Binary files a/htdocs/images/flags/AZ.gif and /dev/null differ diff --git a/htdocs/images/flags/BA.gif b/htdocs/images/flags/BA.gif deleted file mode 100644 index 9bf5f0a..0000000 Binary files a/htdocs/images/flags/BA.gif and /dev/null differ diff --git a/htdocs/images/flags/BB.gif b/htdocs/images/flags/BB.gif deleted file mode 100644 index b7d08e5..0000000 Binary files a/htdocs/images/flags/BB.gif and /dev/null differ diff --git a/htdocs/images/flags/BD.gif b/htdocs/images/flags/BD.gif deleted file mode 100644 index 0fd27ec..0000000 Binary files a/htdocs/images/flags/BD.gif and /dev/null differ diff --git a/htdocs/images/flags/BE.gif b/htdocs/images/flags/BE.gif deleted file mode 100644 index ae09bfb..0000000 Binary files a/htdocs/images/flags/BE.gif and /dev/null differ diff --git a/htdocs/images/flags/BF.gif b/htdocs/images/flags/BF.gif deleted file mode 100644 index 9d6772c..0000000 Binary files a/htdocs/images/flags/BF.gif and /dev/null differ diff --git a/htdocs/images/flags/BG.gif b/htdocs/images/flags/BG.gif deleted file mode 100644 index 11cf8ff..0000000 Binary files a/htdocs/images/flags/BG.gif and /dev/null differ diff --git a/htdocs/images/flags/BH.gif b/htdocs/images/flags/BH.gif deleted file mode 100644 index 56aa72b..0000000 Binary files a/htdocs/images/flags/BH.gif and /dev/null differ diff --git a/htdocs/images/flags/BI.gif b/htdocs/images/flags/BI.gif deleted file mode 100644 index 6e2cbe1..0000000 Binary files a/htdocs/images/flags/BI.gif and /dev/null differ diff --git a/htdocs/images/flags/BJ.gif b/htdocs/images/flags/BJ.gif deleted file mode 100644 index e676116..0000000 Binary files a/htdocs/images/flags/BJ.gif and /dev/null differ diff --git a/htdocs/images/flags/BM.gif b/htdocs/images/flags/BM.gif deleted file mode 100644 index 9feb87b..0000000 Binary files a/htdocs/images/flags/BM.gif and /dev/null differ diff --git a/htdocs/images/flags/BN.gif b/htdocs/images/flags/BN.gif deleted file mode 100644 index b7b6b0f..0000000 Binary files a/htdocs/images/flags/BN.gif and /dev/null differ diff --git a/htdocs/images/flags/BO.gif b/htdocs/images/flags/BO.gif deleted file mode 100644 index 4844f85..0000000 Binary files a/htdocs/images/flags/BO.gif and /dev/null differ diff --git a/htdocs/images/flags/BR.gif b/htdocs/images/flags/BR.gif deleted file mode 100644 index 8c86616..0000000 Binary files a/htdocs/images/flags/BR.gif and /dev/null differ diff --git a/htdocs/images/flags/BS.gif b/htdocs/images/flags/BS.gif deleted file mode 100644 index c0a741e..0000000 Binary files a/htdocs/images/flags/BS.gif and /dev/null differ diff --git a/htdocs/images/flags/BT.gif b/htdocs/images/flags/BT.gif deleted file mode 100644 index abe2f3c..0000000 Binary files a/htdocs/images/flags/BT.gif and /dev/null differ diff --git a/htdocs/images/flags/BV.gif b/htdocs/images/flags/BV.gif deleted file mode 100644 index 6202d1f..0000000 Binary files a/htdocs/images/flags/BV.gif and /dev/null differ diff --git a/htdocs/images/flags/BW.gif b/htdocs/images/flags/BW.gif deleted file mode 100644 index 986ab63..0000000 Binary files a/htdocs/images/flags/BW.gif and /dev/null differ diff --git a/htdocs/images/flags/BY.gif b/htdocs/images/flags/BY.gif deleted file mode 100644 index 43ffcd4..0000000 Binary files a/htdocs/images/flags/BY.gif and /dev/null differ diff --git a/htdocs/images/flags/BZ.gif b/htdocs/images/flags/BZ.gif deleted file mode 100644 index 791737f..0000000 Binary files a/htdocs/images/flags/BZ.gif and /dev/null differ diff --git a/htdocs/images/flags/CA.gif b/htdocs/images/flags/CA.gif deleted file mode 100644 index 457d966..0000000 Binary files a/htdocs/images/flags/CA.gif and /dev/null differ diff --git a/htdocs/images/flags/CC.gif b/htdocs/images/flags/CC.gif deleted file mode 100644 index 3f78327..0000000 Binary files a/htdocs/images/flags/CC.gif and /dev/null differ diff --git a/htdocs/images/flags/CD.gif b/htdocs/images/flags/CD.gif deleted file mode 100644 index 1afa9d4..0000000 Binary files a/htdocs/images/flags/CD.gif and /dev/null differ diff --git a/htdocs/images/flags/CF.gif b/htdocs/images/flags/CF.gif deleted file mode 100644 index 35787ca..0000000 Binary files a/htdocs/images/flags/CF.gif and /dev/null differ diff --git a/htdocs/images/flags/CG.gif b/htdocs/images/flags/CG.gif deleted file mode 100644 index e0a62a5..0000000 Binary files a/htdocs/images/flags/CG.gif and /dev/null differ diff --git a/htdocs/images/flags/CH.gif b/htdocs/images/flags/CH.gif deleted file mode 100644 index d5c0e5b..0000000 Binary files a/htdocs/images/flags/CH.gif and /dev/null differ diff --git a/htdocs/images/flags/CI.gif b/htdocs/images/flags/CI.gif deleted file mode 100644 index 844120a..0000000 Binary files a/htdocs/images/flags/CI.gif and /dev/null differ diff --git a/htdocs/images/flags/CK.gif b/htdocs/images/flags/CK.gif deleted file mode 100644 index 2edb739..0000000 Binary files a/htdocs/images/flags/CK.gif and /dev/null differ diff --git a/htdocs/images/flags/CL.gif b/htdocs/images/flags/CL.gif deleted file mode 100644 index cbc370e..0000000 Binary files a/htdocs/images/flags/CL.gif and /dev/null differ diff --git a/htdocs/images/flags/CM.gif b/htdocs/images/flags/CM.gif deleted file mode 100644 index 1fb102b..0000000 Binary files a/htdocs/images/flags/CM.gif and /dev/null differ diff --git a/htdocs/images/flags/CN.gif b/htdocs/images/flags/CN.gif deleted file mode 100644 index b052530..0000000 Binary files a/htdocs/images/flags/CN.gif and /dev/null differ diff --git a/htdocs/images/flags/CO.gif b/htdocs/images/flags/CO.gif deleted file mode 100644 index d0e15ca..0000000 Binary files a/htdocs/images/flags/CO.gif and /dev/null differ diff --git a/htdocs/images/flags/CR.gif b/htdocs/images/flags/CR.gif deleted file mode 100644 index 0728dd6..0000000 Binary files a/htdocs/images/flags/CR.gif and /dev/null differ diff --git a/htdocs/images/flags/CS.gif b/htdocs/images/flags/CS.gif deleted file mode 100644 index 101db64..0000000 Binary files a/htdocs/images/flags/CS.gif and /dev/null differ diff --git a/htdocs/images/flags/CU.gif b/htdocs/images/flags/CU.gif deleted file mode 100644 index 291255c..0000000 Binary files a/htdocs/images/flags/CU.gif and /dev/null differ diff --git a/htdocs/images/flags/CV.gif b/htdocs/images/flags/CV.gif deleted file mode 100644 index 43c6c6c..0000000 Binary files a/htdocs/images/flags/CV.gif and /dev/null differ diff --git a/htdocs/images/flags/CX.gif b/htdocs/images/flags/CX.gif deleted file mode 100644 index a5b4308..0000000 Binary files a/htdocs/images/flags/CX.gif and /dev/null differ diff --git a/htdocs/images/flags/CY.gif b/htdocs/images/flags/CY.gif deleted file mode 100644 index 35c661e..0000000 Binary files a/htdocs/images/flags/CY.gif and /dev/null differ diff --git a/htdocs/images/flags/CZ.gif b/htdocs/images/flags/CZ.gif deleted file mode 100644 index 0a605e5..0000000 Binary files a/htdocs/images/flags/CZ.gif and /dev/null differ diff --git a/htdocs/images/flags/DE.gif b/htdocs/images/flags/DE.gif deleted file mode 100644 index 75728dd..0000000 Binary files a/htdocs/images/flags/DE.gif and /dev/null differ diff --git a/htdocs/images/flags/DJ.gif b/htdocs/images/flags/DJ.gif deleted file mode 100644 index 212406d..0000000 Binary files a/htdocs/images/flags/DJ.gif and /dev/null differ diff --git a/htdocs/images/flags/DK.gif b/htdocs/images/flags/DK.gif deleted file mode 100644 index 03e75bd..0000000 Binary files a/htdocs/images/flags/DK.gif and /dev/null differ diff --git a/htdocs/images/flags/DM.gif b/htdocs/images/flags/DM.gif deleted file mode 100644 index 2f87f3c..0000000 Binary files a/htdocs/images/flags/DM.gif and /dev/null differ diff --git a/htdocs/images/flags/DO.gif b/htdocs/images/flags/DO.gif deleted file mode 100644 index f7d0bad..0000000 Binary files a/htdocs/images/flags/DO.gif and /dev/null differ diff --git a/htdocs/images/flags/DZ.gif b/htdocs/images/flags/DZ.gif deleted file mode 100644 index ed580a7..0000000 Binary files a/htdocs/images/flags/DZ.gif and /dev/null differ diff --git a/htdocs/images/flags/EC.gif b/htdocs/images/flags/EC.gif deleted file mode 100644 index 9e41e0e..0000000 Binary files a/htdocs/images/flags/EC.gif and /dev/null differ diff --git a/htdocs/images/flags/EE.gif b/htdocs/images/flags/EE.gif deleted file mode 100644 index 9397a2d..0000000 Binary files a/htdocs/images/flags/EE.gif and /dev/null differ diff --git a/htdocs/images/flags/EG.gif b/htdocs/images/flags/EG.gif deleted file mode 100644 index 6857c7d..0000000 Binary files a/htdocs/images/flags/EG.gif and /dev/null differ diff --git a/htdocs/images/flags/EH.gif b/htdocs/images/flags/EH.gif deleted file mode 100644 index dd0391c..0000000 Binary files a/htdocs/images/flags/EH.gif and /dev/null differ diff --git a/htdocs/images/flags/ER.gif b/htdocs/images/flags/ER.gif deleted file mode 100644 index 3d4d612..0000000 Binary files a/htdocs/images/flags/ER.gif and /dev/null differ diff --git a/htdocs/images/flags/ES.gif b/htdocs/images/flags/ES.gif deleted file mode 100644 index c27d65e..0000000 Binary files a/htdocs/images/flags/ES.gif and /dev/null differ diff --git a/htdocs/images/flags/ET.gif b/htdocs/images/flags/ET.gif deleted file mode 100644 index f77995d..0000000 Binary files a/htdocs/images/flags/ET.gif and /dev/null differ diff --git a/htdocs/images/flags/FI.gif b/htdocs/images/flags/FI.gif deleted file mode 100644 index 8d3a191..0000000 Binary files a/htdocs/images/flags/FI.gif and /dev/null differ diff --git a/htdocs/images/flags/FJ.gif b/htdocs/images/flags/FJ.gif deleted file mode 100644 index 486151c..0000000 Binary files a/htdocs/images/flags/FJ.gif and /dev/null differ diff --git a/htdocs/images/flags/FK.gif b/htdocs/images/flags/FK.gif deleted file mode 100644 index 37b5ecf..0000000 Binary files a/htdocs/images/flags/FK.gif and /dev/null differ diff --git a/htdocs/images/flags/FM.gif b/htdocs/images/flags/FM.gif deleted file mode 100644 index 7f8723b..0000000 Binary files a/htdocs/images/flags/FM.gif and /dev/null differ diff --git a/htdocs/images/flags/FO.gif b/htdocs/images/flags/FO.gif deleted file mode 100644 index 4a90fc0..0000000 Binary files a/htdocs/images/flags/FO.gif and /dev/null differ diff --git a/htdocs/images/flags/FR.gif b/htdocs/images/flags/FR.gif deleted file mode 100644 index 43d0b80..0000000 Binary files a/htdocs/images/flags/FR.gif and /dev/null differ diff --git a/htdocs/images/flags/GA.gif b/htdocs/images/flags/GA.gif deleted file mode 100644 index 23fd5f0..0000000 Binary files a/htdocs/images/flags/GA.gif and /dev/null differ diff --git a/htdocs/images/flags/GB.gif b/htdocs/images/flags/GB.gif deleted file mode 100644 index 3e16ff8..0000000 Binary files a/htdocs/images/flags/GB.gif and /dev/null differ diff --git a/htdocs/images/flags/GD.gif b/htdocs/images/flags/GD.gif deleted file mode 100644 index 25ea312..0000000 Binary files a/htdocs/images/flags/GD.gif and /dev/null differ diff --git a/htdocs/images/flags/GE.gif b/htdocs/images/flags/GE.gif deleted file mode 100644 index faa7f12..0000000 Binary files a/htdocs/images/flags/GE.gif and /dev/null differ diff --git a/htdocs/images/flags/GG.gif b/htdocs/images/flags/GG.gif deleted file mode 100644 index a19101d..0000000 Binary files a/htdocs/images/flags/GG.gif and /dev/null differ diff --git a/htdocs/images/flags/GH.gif b/htdocs/images/flags/GH.gif deleted file mode 100644 index 273fb7d..0000000 Binary files a/htdocs/images/flags/GH.gif and /dev/null differ diff --git a/htdocs/images/flags/GI.gif b/htdocs/images/flags/GI.gif deleted file mode 100644 index 7b1984b..0000000 Binary files a/htdocs/images/flags/GI.gif and /dev/null differ diff --git a/htdocs/images/flags/GL.gif b/htdocs/images/flags/GL.gif deleted file mode 100644 index ef445be..0000000 Binary files a/htdocs/images/flags/GL.gif and /dev/null differ diff --git a/htdocs/images/flags/GM.gif b/htdocs/images/flags/GM.gif deleted file mode 100644 index 6847c5a..0000000 Binary files a/htdocs/images/flags/GM.gif and /dev/null differ diff --git a/htdocs/images/flags/GN.gif b/htdocs/images/flags/GN.gif deleted file mode 100644 index a982ac6..0000000 Binary files a/htdocs/images/flags/GN.gif and /dev/null differ diff --git a/htdocs/images/flags/GP.gif b/htdocs/images/flags/GP.gif deleted file mode 100644 index 31166db..0000000 Binary files a/htdocs/images/flags/GP.gif and /dev/null differ diff --git a/htdocs/images/flags/GQ.gif b/htdocs/images/flags/GQ.gif deleted file mode 100644 index 8b4e0cc..0000000 Binary files a/htdocs/images/flags/GQ.gif and /dev/null differ diff --git a/htdocs/images/flags/GR.gif b/htdocs/images/flags/GR.gif deleted file mode 100644 index b4c8c04..0000000 Binary files a/htdocs/images/flags/GR.gif and /dev/null differ diff --git a/htdocs/images/flags/GS.gif b/htdocs/images/flags/GS.gif deleted file mode 100644 index ccc96ec..0000000 Binary files a/htdocs/images/flags/GS.gif and /dev/null differ diff --git a/htdocs/images/flags/GT.gif b/htdocs/images/flags/GT.gif deleted file mode 100644 index 7e94d1d..0000000 Binary files a/htdocs/images/flags/GT.gif and /dev/null differ diff --git a/htdocs/images/flags/GU.gif b/htdocs/images/flags/GU.gif deleted file mode 100644 index eafef68..0000000 Binary files a/htdocs/images/flags/GU.gif and /dev/null differ diff --git a/htdocs/images/flags/GW.gif b/htdocs/images/flags/GW.gif deleted file mode 100644 index 55f7571..0000000 Binary files a/htdocs/images/flags/GW.gif and /dev/null differ diff --git a/htdocs/images/flags/GY.gif b/htdocs/images/flags/GY.gif deleted file mode 100644 index 1cb4cd7..0000000 Binary files a/htdocs/images/flags/GY.gif and /dev/null differ diff --git a/htdocs/images/flags/HK.gif b/htdocs/images/flags/HK.gif deleted file mode 100644 index 798af96..0000000 Binary files a/htdocs/images/flags/HK.gif and /dev/null differ diff --git a/htdocs/images/flags/HN.gif b/htdocs/images/flags/HN.gif deleted file mode 100644 index 6c4ffe8..0000000 Binary files a/htdocs/images/flags/HN.gif and /dev/null differ diff --git a/htdocs/images/flags/HR.gif b/htdocs/images/flags/HR.gif deleted file mode 100644 index 557c660..0000000 Binary files a/htdocs/images/flags/HR.gif and /dev/null differ diff --git a/htdocs/images/flags/HT.gif b/htdocs/images/flags/HT.gif deleted file mode 100644 index 059604a..0000000 Binary files a/htdocs/images/flags/HT.gif and /dev/null differ diff --git a/htdocs/images/flags/HU.gif b/htdocs/images/flags/HU.gif deleted file mode 100644 index 6142d86..0000000 Binary files a/htdocs/images/flags/HU.gif and /dev/null differ diff --git a/htdocs/images/flags/ID.gif b/htdocs/images/flags/ID.gif deleted file mode 100644 index 865161b..0000000 Binary files a/htdocs/images/flags/ID.gif and /dev/null differ diff --git a/htdocs/images/flags/IE.gif b/htdocs/images/flags/IE.gif deleted file mode 100644 index 506ad28..0000000 Binary files a/htdocs/images/flags/IE.gif and /dev/null differ diff --git a/htdocs/images/flags/IL.gif b/htdocs/images/flags/IL.gif deleted file mode 100644 index c8483ae..0000000 Binary files a/htdocs/images/flags/IL.gif and /dev/null differ diff --git a/htdocs/images/flags/IM.gif b/htdocs/images/flags/IM.gif deleted file mode 100644 index 7e14bd6..0000000 Binary files a/htdocs/images/flags/IM.gif and /dev/null differ diff --git a/htdocs/images/flags/IN.gif b/htdocs/images/flags/IN.gif deleted file mode 100644 index 1cd8027..0000000 Binary files a/htdocs/images/flags/IN.gif and /dev/null differ diff --git a/htdocs/images/flags/IO.gif b/htdocs/images/flags/IO.gif deleted file mode 100644 index de7e7ab..0000000 Binary files a/htdocs/images/flags/IO.gif and /dev/null differ diff --git a/htdocs/images/flags/IQ.gif b/htdocs/images/flags/IQ.gif deleted file mode 100644 index c34fe3c..0000000 Binary files a/htdocs/images/flags/IQ.gif and /dev/null differ diff --git a/htdocs/images/flags/IR.gif b/htdocs/images/flags/IR.gif deleted file mode 100644 index 156040f..0000000 Binary files a/htdocs/images/flags/IR.gif and /dev/null differ diff --git a/htdocs/images/flags/IS.gif b/htdocs/images/flags/IS.gif deleted file mode 100644 index b42502d..0000000 Binary files a/htdocs/images/flags/IS.gif and /dev/null differ diff --git a/htdocs/images/flags/IT.gif b/htdocs/images/flags/IT.gif deleted file mode 100644 index d79e90e..0000000 Binary files a/htdocs/images/flags/IT.gif and /dev/null differ diff --git a/htdocs/images/flags/JE.gif b/htdocs/images/flags/JE.gif deleted file mode 100644 index 636110b..0000000 Binary files a/htdocs/images/flags/JE.gif and /dev/null differ diff --git a/htdocs/images/flags/JM.gif b/htdocs/images/flags/JM.gif deleted file mode 100644 index 0bed67c..0000000 Binary files a/htdocs/images/flags/JM.gif and /dev/null differ diff --git a/htdocs/images/flags/JO.gif b/htdocs/images/flags/JO.gif deleted file mode 100644 index 03daf8a..0000000 Binary files a/htdocs/images/flags/JO.gif and /dev/null differ diff --git a/htdocs/images/flags/JP.gif b/htdocs/images/flags/JP.gif deleted file mode 100644 index 444c1d0..0000000 Binary files a/htdocs/images/flags/JP.gif and /dev/null differ diff --git a/htdocs/images/flags/KE.gif b/htdocs/images/flags/KE.gif deleted file mode 100644 index c2b5d45..0000000 Binary files a/htdocs/images/flags/KE.gif and /dev/null differ diff --git a/htdocs/images/flags/KG.gif b/htdocs/images/flags/KG.gif deleted file mode 100644 index 72a4d41..0000000 Binary files a/htdocs/images/flags/KG.gif and /dev/null differ diff --git a/htdocs/images/flags/KH.gif b/htdocs/images/flags/KH.gif deleted file mode 100644 index 30a1831..0000000 Binary files a/htdocs/images/flags/KH.gif and /dev/null differ diff --git a/htdocs/images/flags/KI.gif b/htdocs/images/flags/KI.gif deleted file mode 100644 index 4a0751a..0000000 Binary files a/htdocs/images/flags/KI.gif and /dev/null differ diff --git a/htdocs/images/flags/KM.gif b/htdocs/images/flags/KM.gif deleted file mode 100644 index 5859595..0000000 Binary files a/htdocs/images/flags/KM.gif and /dev/null differ diff --git a/htdocs/images/flags/KN.gif b/htdocs/images/flags/KN.gif deleted file mode 100644 index bb9cc34..0000000 Binary files a/htdocs/images/flags/KN.gif and /dev/null differ diff --git a/htdocs/images/flags/KP.gif b/htdocs/images/flags/KP.gif deleted file mode 100644 index 6e0ca09..0000000 Binary files a/htdocs/images/flags/KP.gif and /dev/null differ diff --git a/htdocs/images/flags/KR.gif b/htdocs/images/flags/KR.gif deleted file mode 100644 index 1cddbe7..0000000 Binary files a/htdocs/images/flags/KR.gif and /dev/null differ diff --git a/htdocs/images/flags/KW.gif b/htdocs/images/flags/KW.gif deleted file mode 100644 index 1efc734..0000000 Binary files a/htdocs/images/flags/KW.gif and /dev/null differ diff --git a/htdocs/images/flags/KY.gif b/htdocs/images/flags/KY.gif deleted file mode 100644 index d3d02ee..0000000 Binary files a/htdocs/images/flags/KY.gif and /dev/null differ diff --git a/htdocs/images/flags/KZ.gif b/htdocs/images/flags/KZ.gif deleted file mode 100644 index 24baebe..0000000 Binary files a/htdocs/images/flags/KZ.gif and /dev/null differ diff --git a/htdocs/images/flags/LA.gif b/htdocs/images/flags/LA.gif deleted file mode 100644 index d14cf4d..0000000 Binary files a/htdocs/images/flags/LA.gif and /dev/null differ diff --git a/htdocs/images/flags/LB.gif b/htdocs/images/flags/LB.gif deleted file mode 100644 index 003d83a..0000000 Binary files a/htdocs/images/flags/LB.gif and /dev/null differ diff --git a/htdocs/images/flags/LC.gif b/htdocs/images/flags/LC.gif deleted file mode 100644 index d06b955..0000000 Binary files a/htdocs/images/flags/LC.gif and /dev/null differ diff --git a/htdocs/images/flags/LI.gif b/htdocs/images/flags/LI.gif deleted file mode 100644 index 713c58e..0000000 Binary files a/htdocs/images/flags/LI.gif and /dev/null differ diff --git a/htdocs/images/flags/LK.gif b/htdocs/images/flags/LK.gif deleted file mode 100644 index 1b3ee7f..0000000 Binary files a/htdocs/images/flags/LK.gif and /dev/null differ diff --git a/htdocs/images/flags/LR.gif b/htdocs/images/flags/LR.gif deleted file mode 100644 index 435af9e..0000000 Binary files a/htdocs/images/flags/LR.gif and /dev/null differ diff --git a/htdocs/images/flags/LS.gif b/htdocs/images/flags/LS.gif deleted file mode 100644 index 427ae95..0000000 Binary files a/htdocs/images/flags/LS.gif and /dev/null differ diff --git a/htdocs/images/flags/LT.gif b/htdocs/images/flags/LT.gif deleted file mode 100644 index dee9c60..0000000 Binary files a/htdocs/images/flags/LT.gif and /dev/null differ diff --git a/htdocs/images/flags/LU.gif b/htdocs/images/flags/LU.gif deleted file mode 100644 index 7d7293e..0000000 Binary files a/htdocs/images/flags/LU.gif and /dev/null differ diff --git a/htdocs/images/flags/LV.gif b/htdocs/images/flags/LV.gif deleted file mode 100644 index 17e71b7..0000000 Binary files a/htdocs/images/flags/LV.gif and /dev/null differ diff --git a/htdocs/images/flags/LY.gif b/htdocs/images/flags/LY.gif deleted file mode 100644 index a654c30..0000000 Binary files a/htdocs/images/flags/LY.gif and /dev/null differ diff --git a/htdocs/images/flags/MA.gif b/htdocs/images/flags/MA.gif deleted file mode 100644 index fc78411..0000000 Binary files a/htdocs/images/flags/MA.gif and /dev/null differ diff --git a/htdocs/images/flags/MC.gif b/htdocs/images/flags/MC.gif deleted file mode 100644 index 02a7c8e..0000000 Binary files a/htdocs/images/flags/MC.gif and /dev/null differ diff --git a/htdocs/images/flags/MD.gif b/htdocs/images/flags/MD.gif deleted file mode 100644 index e4b8a7e..0000000 Binary files a/htdocs/images/flags/MD.gif and /dev/null differ diff --git a/htdocs/images/flags/MG.gif b/htdocs/images/flags/MG.gif deleted file mode 100644 index a91b577..0000000 Binary files a/htdocs/images/flags/MG.gif and /dev/null differ diff --git a/htdocs/images/flags/MH.gif b/htdocs/images/flags/MH.gif deleted file mode 100644 index 92f5f48..0000000 Binary files a/htdocs/images/flags/MH.gif and /dev/null differ diff --git a/htdocs/images/flags/MK.gif b/htdocs/images/flags/MK.gif deleted file mode 100644 index 7aeb831..0000000 Binary files a/htdocs/images/flags/MK.gif and /dev/null differ diff --git a/htdocs/images/flags/ML.gif b/htdocs/images/flags/ML.gif deleted file mode 100644 index 53d6f49..0000000 Binary files a/htdocs/images/flags/ML.gif and /dev/null differ diff --git a/htdocs/images/flags/MM.gif b/htdocs/images/flags/MM.gif deleted file mode 100644 index 9e0a275..0000000 Binary files a/htdocs/images/flags/MM.gif and /dev/null differ diff --git a/htdocs/images/flags/MN.gif b/htdocs/images/flags/MN.gif deleted file mode 100644 index dff8ea5..0000000 Binary files a/htdocs/images/flags/MN.gif and /dev/null differ diff --git a/htdocs/images/flags/MO.gif b/htdocs/images/flags/MO.gif deleted file mode 100644 index 66cf5b4..0000000 Binary files a/htdocs/images/flags/MO.gif and /dev/null differ diff --git a/htdocs/images/flags/MP.gif b/htdocs/images/flags/MP.gif deleted file mode 100644 index 73b7147..0000000 Binary files a/htdocs/images/flags/MP.gif and /dev/null differ diff --git a/htdocs/images/flags/MQ.gif b/htdocs/images/flags/MQ.gif deleted file mode 100644 index 570bc5d..0000000 Binary files a/htdocs/images/flags/MQ.gif and /dev/null differ diff --git a/htdocs/images/flags/MR.gif b/htdocs/images/flags/MR.gif deleted file mode 100644 index f52fcf0..0000000 Binary files a/htdocs/images/flags/MR.gif and /dev/null differ diff --git a/htdocs/images/flags/MS.gif b/htdocs/images/flags/MS.gif deleted file mode 100644 index 5e5a67a..0000000 Binary files a/htdocs/images/flags/MS.gif and /dev/null differ diff --git a/htdocs/images/flags/MT.gif b/htdocs/images/flags/MT.gif deleted file mode 100644 index 45c709f..0000000 Binary files a/htdocs/images/flags/MT.gif and /dev/null differ diff --git a/htdocs/images/flags/MU.gif b/htdocs/images/flags/MU.gif deleted file mode 100644 index 081ab45..0000000 Binary files a/htdocs/images/flags/MU.gif and /dev/null differ diff --git a/htdocs/images/flags/MV.gif b/htdocs/images/flags/MV.gif deleted file mode 100644 index 46b6387..0000000 Binary files a/htdocs/images/flags/MV.gif and /dev/null differ diff --git a/htdocs/images/flags/MW.gif b/htdocs/images/flags/MW.gif deleted file mode 100644 index ad045a0..0000000 Binary files a/htdocs/images/flags/MW.gif and /dev/null differ diff --git a/htdocs/images/flags/MX.gif b/htdocs/images/flags/MX.gif deleted file mode 100644 index ddc75d0..0000000 Binary files a/htdocs/images/flags/MX.gif and /dev/null differ diff --git a/htdocs/images/flags/MY.gif b/htdocs/images/flags/MY.gif deleted file mode 100644 index fc7d523..0000000 Binary files a/htdocs/images/flags/MY.gif and /dev/null differ diff --git a/htdocs/images/flags/MZ.gif b/htdocs/images/flags/MZ.gif deleted file mode 100644 index 7d63508..0000000 Binary files a/htdocs/images/flags/MZ.gif and /dev/null differ diff --git a/htdocs/images/flags/NA.gif b/htdocs/images/flags/NA.gif deleted file mode 100644 index c0babe7..0000000 Binary files a/htdocs/images/flags/NA.gif and /dev/null differ diff --git a/htdocs/images/flags/NC.gif b/htdocs/images/flags/NC.gif deleted file mode 100644 index b1e91b9..0000000 Binary files a/htdocs/images/flags/NC.gif and /dev/null differ diff --git a/htdocs/images/flags/NE.gif b/htdocs/images/flags/NE.gif deleted file mode 100644 index ff4eaf0..0000000 Binary files a/htdocs/images/flags/NE.gif and /dev/null differ diff --git a/htdocs/images/flags/NF.gif b/htdocs/images/flags/NF.gif deleted file mode 100644 index c83424c..0000000 Binary files a/htdocs/images/flags/NF.gif and /dev/null differ diff --git a/htdocs/images/flags/NG.gif b/htdocs/images/flags/NG.gif deleted file mode 100644 index bdde7cb..0000000 Binary files a/htdocs/images/flags/NG.gif and /dev/null differ diff --git a/htdocs/images/flags/NI.gif b/htdocs/images/flags/NI.gif deleted file mode 100644 index d05894d..0000000 Binary files a/htdocs/images/flags/NI.gif and /dev/null differ diff --git a/htdocs/images/flags/NL.gif b/htdocs/images/flags/NL.gif deleted file mode 100644 index c1c8f46..0000000 Binary files a/htdocs/images/flags/NL.gif and /dev/null differ diff --git a/htdocs/images/flags/NO.gif b/htdocs/images/flags/NO.gif deleted file mode 100644 index 6202d1f..0000000 Binary files a/htdocs/images/flags/NO.gif and /dev/null differ diff --git a/htdocs/images/flags/NP.gif b/htdocs/images/flags/NP.gif deleted file mode 100644 index 1096893..0000000 Binary files a/htdocs/images/flags/NP.gif and /dev/null differ diff --git a/htdocs/images/flags/NR.gif b/htdocs/images/flags/NR.gif deleted file mode 100644 index 2e4c0c5..0000000 Binary files a/htdocs/images/flags/NR.gif and /dev/null differ diff --git a/htdocs/images/flags/NU.gif b/htdocs/images/flags/NU.gif deleted file mode 100644 index 618210a..0000000 Binary files a/htdocs/images/flags/NU.gif and /dev/null differ diff --git a/htdocs/images/flags/NZ.gif b/htdocs/images/flags/NZ.gif deleted file mode 100644 index 028a5dc..0000000 Binary files a/htdocs/images/flags/NZ.gif and /dev/null differ diff --git a/htdocs/images/flags/OM.gif b/htdocs/images/flags/OM.gif deleted file mode 100644 index 2b8c775..0000000 Binary files a/htdocs/images/flags/OM.gif and /dev/null differ diff --git a/htdocs/images/flags/PA.gif b/htdocs/images/flags/PA.gif deleted file mode 100644 index d518b2f..0000000 Binary files a/htdocs/images/flags/PA.gif and /dev/null differ diff --git a/htdocs/images/flags/PC.gif b/htdocs/images/flags/PC.gif deleted file mode 100644 index 0fb695a..0000000 Binary files a/htdocs/images/flags/PC.gif and /dev/null differ diff --git a/htdocs/images/flags/PE.gif b/htdocs/images/flags/PE.gif deleted file mode 100644 index 3bc7639..0000000 Binary files a/htdocs/images/flags/PE.gif and /dev/null differ diff --git a/htdocs/images/flags/PF.gif b/htdocs/images/flags/PF.gif deleted file mode 100644 index 849297a..0000000 Binary files a/htdocs/images/flags/PF.gif and /dev/null differ diff --git a/htdocs/images/flags/PG.gif b/htdocs/images/flags/PG.gif deleted file mode 100644 index 2d20b07..0000000 Binary files a/htdocs/images/flags/PG.gif and /dev/null differ diff --git a/htdocs/images/flags/PH.gif b/htdocs/images/flags/PH.gif deleted file mode 100644 index 12b380a..0000000 Binary files a/htdocs/images/flags/PH.gif and /dev/null differ diff --git a/htdocs/images/flags/PK.gif b/htdocs/images/flags/PK.gif deleted file mode 100644 index f3f62c2..0000000 Binary files a/htdocs/images/flags/PK.gif and /dev/null differ diff --git a/htdocs/images/flags/PL.gif b/htdocs/images/flags/PL.gif deleted file mode 100644 index bf10646..0000000 Binary files a/htdocs/images/flags/PL.gif and /dev/null differ diff --git a/htdocs/images/flags/PM.gif b/htdocs/images/flags/PM.gif deleted file mode 100644 index 99bf6fd..0000000 Binary files a/htdocs/images/flags/PM.gif and /dev/null differ diff --git a/htdocs/images/flags/PN.gif b/htdocs/images/flags/PN.gif deleted file mode 100644 index 4bc86a1..0000000 Binary files a/htdocs/images/flags/PN.gif and /dev/null differ diff --git a/htdocs/images/flags/PR.gif b/htdocs/images/flags/PR.gif deleted file mode 100644 index 6d5d589..0000000 Binary files a/htdocs/images/flags/PR.gif and /dev/null differ diff --git a/htdocs/images/flags/PS.gif b/htdocs/images/flags/PS.gif deleted file mode 100644 index 6afa3b7..0000000 Binary files a/htdocs/images/flags/PS.gif and /dev/null differ diff --git a/htdocs/images/flags/PT.gif b/htdocs/images/flags/PT.gif deleted file mode 100644 index e735f74..0000000 Binary files a/htdocs/images/flags/PT.gif and /dev/null differ diff --git a/htdocs/images/flags/PW.gif b/htdocs/images/flags/PW.gif deleted file mode 100644 index 5854510..0000000 Binary files a/htdocs/images/flags/PW.gif and /dev/null differ diff --git a/htdocs/images/flags/PY.gif b/htdocs/images/flags/PY.gif deleted file mode 100644 index f2e66af..0000000 Binary files a/htdocs/images/flags/PY.gif and /dev/null differ diff --git a/htdocs/images/flags/QA.gif b/htdocs/images/flags/QA.gif deleted file mode 100644 index 2e843ff..0000000 Binary files a/htdocs/images/flags/QA.gif and /dev/null differ diff --git a/htdocs/images/flags/RO.gif b/htdocs/images/flags/RO.gif deleted file mode 100644 index f5d5f12..0000000 Binary files a/htdocs/images/flags/RO.gif and /dev/null differ diff --git a/htdocs/images/flags/RU.gif b/htdocs/images/flags/RU.gif deleted file mode 100644 index b525c46..0000000 Binary files a/htdocs/images/flags/RU.gif and /dev/null differ diff --git a/htdocs/images/flags/RW.gif b/htdocs/images/flags/RW.gif deleted file mode 100644 index 0d095f7..0000000 Binary files a/htdocs/images/flags/RW.gif and /dev/null differ diff --git a/htdocs/images/flags/SA.gif b/htdocs/images/flags/SA.gif deleted file mode 100644 index 179961b..0000000 Binary files a/htdocs/images/flags/SA.gif and /dev/null differ diff --git a/htdocs/images/flags/SB.gif b/htdocs/images/flags/SB.gif deleted file mode 100644 index 8f5ff83..0000000 Binary files a/htdocs/images/flags/SB.gif and /dev/null differ diff --git a/htdocs/images/flags/SC.gif b/htdocs/images/flags/SC.gif deleted file mode 100644 index 31b4767..0000000 Binary files a/htdocs/images/flags/SC.gif and /dev/null differ diff --git a/htdocs/images/flags/SD.gif b/htdocs/images/flags/SD.gif deleted file mode 100644 index 53ae214..0000000 Binary files a/htdocs/images/flags/SD.gif and /dev/null differ diff --git a/htdocs/images/flags/SE.gif b/htdocs/images/flags/SE.gif deleted file mode 100644 index 80f6285..0000000 Binary files a/htdocs/images/flags/SE.gif and /dev/null differ diff --git a/htdocs/images/flags/SG.gif b/htdocs/images/flags/SG.gif deleted file mode 100644 index 5663d39..0000000 Binary files a/htdocs/images/flags/SG.gif and /dev/null differ diff --git a/htdocs/images/flags/SH.gif b/htdocs/images/flags/SH.gif deleted file mode 100644 index dcc7f3b..0000000 Binary files a/htdocs/images/flags/SH.gif and /dev/null differ diff --git a/htdocs/images/flags/SI.gif b/htdocs/images/flags/SI.gif deleted file mode 100644 index 23852b5..0000000 Binary files a/htdocs/images/flags/SI.gif and /dev/null differ diff --git a/htdocs/images/flags/SK.gif b/htdocs/images/flags/SK.gif deleted file mode 100644 index 1b3f22b..0000000 Binary files a/htdocs/images/flags/SK.gif and /dev/null differ diff --git a/htdocs/images/flags/SL.gif b/htdocs/images/flags/SL.gif deleted file mode 100644 index f0f3492..0000000 Binary files a/htdocs/images/flags/SL.gif and /dev/null differ diff --git a/htdocs/images/flags/SM.gif b/htdocs/images/flags/SM.gif deleted file mode 100644 index 04d98de..0000000 Binary files a/htdocs/images/flags/SM.gif and /dev/null differ diff --git a/htdocs/images/flags/SN.gif b/htdocs/images/flags/SN.gif deleted file mode 100644 index 6dac870..0000000 Binary files a/htdocs/images/flags/SN.gif and /dev/null differ diff --git a/htdocs/images/flags/SO.gif b/htdocs/images/flags/SO.gif deleted file mode 100644 index f196169..0000000 Binary files a/htdocs/images/flags/SO.gif and /dev/null differ diff --git a/htdocs/images/flags/SR.gif b/htdocs/images/flags/SR.gif deleted file mode 100644 index 0f7499a..0000000 Binary files a/htdocs/images/flags/SR.gif and /dev/null differ diff --git a/htdocs/images/flags/ST.gif b/htdocs/images/flags/ST.gif deleted file mode 100644 index 4f1e6e0..0000000 Binary files a/htdocs/images/flags/ST.gif and /dev/null differ diff --git a/htdocs/images/flags/SU.gif b/htdocs/images/flags/SU.gif deleted file mode 100644 index ddbe77f..0000000 Binary files a/htdocs/images/flags/SU.gif and /dev/null differ diff --git a/htdocs/images/flags/SV.gif b/htdocs/images/flags/SV.gif deleted file mode 100644 index 2d7b159..0000000 Binary files a/htdocs/images/flags/SV.gif and /dev/null differ diff --git a/htdocs/images/flags/SY.gif b/htdocs/images/flags/SY.gif deleted file mode 100644 index dc8bd50..0000000 Binary files a/htdocs/images/flags/SY.gif and /dev/null differ diff --git a/htdocs/images/flags/SZ.gif b/htdocs/images/flags/SZ.gif deleted file mode 100644 index f37aaf8..0000000 Binary files a/htdocs/images/flags/SZ.gif and /dev/null differ diff --git a/htdocs/images/flags/TC.gif b/htdocs/images/flags/TC.gif deleted file mode 100644 index 11a8c23..0000000 Binary files a/htdocs/images/flags/TC.gif and /dev/null differ diff --git a/htdocs/images/flags/TD.gif b/htdocs/images/flags/TD.gif deleted file mode 100644 index 7aa8a10..0000000 Binary files a/htdocs/images/flags/TD.gif and /dev/null differ diff --git a/htdocs/images/flags/TF.gif b/htdocs/images/flags/TF.gif deleted file mode 100644 index 51a4325..0000000 Binary files a/htdocs/images/flags/TF.gif and /dev/null differ diff --git a/htdocs/images/flags/TG.gif b/htdocs/images/flags/TG.gif deleted file mode 100644 index ca6b4e7..0000000 Binary files a/htdocs/images/flags/TG.gif and /dev/null differ diff --git a/htdocs/images/flags/TH.gif b/htdocs/images/flags/TH.gif deleted file mode 100644 index 0130792..0000000 Binary files a/htdocs/images/flags/TH.gif and /dev/null differ diff --git a/htdocs/images/flags/TJ.gif b/htdocs/images/flags/TJ.gif deleted file mode 100644 index 2fe38d4..0000000 Binary files a/htdocs/images/flags/TJ.gif and /dev/null differ diff --git a/htdocs/images/flags/TK.gif b/htdocs/images/flags/TK.gif deleted file mode 100644 index 3d3a727..0000000 Binary files a/htdocs/images/flags/TK.gif and /dev/null differ diff --git a/htdocs/images/flags/TL.gif b/htdocs/images/flags/TL.gif deleted file mode 100644 index df22d58..0000000 Binary files a/htdocs/images/flags/TL.gif and /dev/null differ diff --git a/htdocs/images/flags/TM.gif b/htdocs/images/flags/TM.gif deleted file mode 100644 index 36d0994..0000000 Binary files a/htdocs/images/flags/TM.gif and /dev/null differ diff --git a/htdocs/images/flags/TN.gif b/htdocs/images/flags/TN.gif deleted file mode 100644 index 917d428..0000000 Binary files a/htdocs/images/flags/TN.gif and /dev/null differ diff --git a/htdocs/images/flags/TO.gif b/htdocs/images/flags/TO.gif deleted file mode 100644 index d7ed4d1..0000000 Binary files a/htdocs/images/flags/TO.gif and /dev/null differ diff --git a/htdocs/images/flags/TR.gif b/htdocs/images/flags/TR.gif deleted file mode 100644 index e407d55..0000000 Binary files a/htdocs/images/flags/TR.gif and /dev/null differ diff --git a/htdocs/images/flags/TT.gif b/htdocs/images/flags/TT.gif deleted file mode 100644 index 47d3b80..0000000 Binary files a/htdocs/images/flags/TT.gif and /dev/null differ diff --git a/htdocs/images/flags/TV.gif b/htdocs/images/flags/TV.gif deleted file mode 100644 index 3c33827..0000000 Binary files a/htdocs/images/flags/TV.gif and /dev/null differ diff --git a/htdocs/images/flags/TW.gif b/htdocs/images/flags/TW.gif deleted file mode 100644 index cacfd9b..0000000 Binary files a/htdocs/images/flags/TW.gif and /dev/null differ diff --git a/htdocs/images/flags/TZ.gif b/htdocs/images/flags/TZ.gif deleted file mode 100644 index 82b52ca..0000000 Binary files a/htdocs/images/flags/TZ.gif and /dev/null differ diff --git a/htdocs/images/flags/UA.gif b/htdocs/images/flags/UA.gif deleted file mode 100644 index 5d6cd83..0000000 Binary files a/htdocs/images/flags/UA.gif and /dev/null differ diff --git a/htdocs/images/flags/UG.gif b/htdocs/images/flags/UG.gif deleted file mode 100644 index 58b731a..0000000 Binary files a/htdocs/images/flags/UG.gif and /dev/null differ diff --git a/htdocs/images/flags/UM.gif b/htdocs/images/flags/UM.gif deleted file mode 100644 index 3b4c848..0000000 Binary files a/htdocs/images/flags/UM.gif and /dev/null differ diff --git a/htdocs/images/flags/US.gif b/htdocs/images/flags/US.gif deleted file mode 100644 index 8f198f7..0000000 Binary files a/htdocs/images/flags/US.gif and /dev/null differ diff --git a/htdocs/images/flags/UY.gif b/htdocs/images/flags/UY.gif deleted file mode 100644 index 12848c7..0000000 Binary files a/htdocs/images/flags/UY.gif and /dev/null differ diff --git a/htdocs/images/flags/UZ.gif b/htdocs/images/flags/UZ.gif deleted file mode 100644 index dc9daec..0000000 Binary files a/htdocs/images/flags/UZ.gif and /dev/null differ diff --git a/htdocs/images/flags/VA.gif b/htdocs/images/flags/VA.gif deleted file mode 100644 index 2bd7446..0000000 Binary files a/htdocs/images/flags/VA.gif and /dev/null differ diff --git a/htdocs/images/flags/VC.gif b/htdocs/images/flags/VC.gif deleted file mode 100644 index 4821381..0000000 Binary files a/htdocs/images/flags/VC.gif and /dev/null differ diff --git a/htdocs/images/flags/VE.gif b/htdocs/images/flags/VE.gif deleted file mode 100644 index 19ce6c1..0000000 Binary files a/htdocs/images/flags/VE.gif and /dev/null differ diff --git a/htdocs/images/flags/VG.gif b/htdocs/images/flags/VG.gif deleted file mode 100644 index 1fc0f96..0000000 Binary files a/htdocs/images/flags/VG.gif and /dev/null differ diff --git a/htdocs/images/flags/VI.gif b/htdocs/images/flags/VI.gif deleted file mode 100644 index 66f9e74..0000000 Binary files a/htdocs/images/flags/VI.gif and /dev/null differ diff --git a/htdocs/images/flags/VN.gif b/htdocs/images/flags/VN.gif deleted file mode 100644 index f1e20c9..0000000 Binary files a/htdocs/images/flags/VN.gif and /dev/null differ diff --git a/htdocs/images/flags/VU.gif b/htdocs/images/flags/VU.gif deleted file mode 100644 index 8a8b2b0..0000000 Binary files a/htdocs/images/flags/VU.gif and /dev/null differ diff --git a/htdocs/images/flags/WF.gif b/htdocs/images/flags/WF.gif deleted file mode 100644 index eaa954b..0000000 Binary files a/htdocs/images/flags/WF.gif and /dev/null differ diff --git a/htdocs/images/flags/WS.gif b/htdocs/images/flags/WS.gif deleted file mode 100644 index a51f939..0000000 Binary files a/htdocs/images/flags/WS.gif and /dev/null differ diff --git a/htdocs/images/flags/YE.gif b/htdocs/images/flags/YE.gif deleted file mode 100644 index 7b0183d..0000000 Binary files a/htdocs/images/flags/YE.gif and /dev/null differ diff --git a/htdocs/images/flags/YT.gif b/htdocs/images/flags/YT.gif deleted file mode 100644 index a2267c0..0000000 Binary files a/htdocs/images/flags/YT.gif and /dev/null differ diff --git a/htdocs/images/flags/YU.gif b/htdocs/images/flags/YU.gif deleted file mode 100644 index bef9a31..0000000 Binary files a/htdocs/images/flags/YU.gif and /dev/null differ diff --git a/htdocs/images/flags/ZA.gif b/htdocs/images/flags/ZA.gif deleted file mode 100644 index ede5258..0000000 Binary files a/htdocs/images/flags/ZA.gif and /dev/null differ diff --git a/htdocs/images/flags/ZM.gif b/htdocs/images/flags/ZM.gif deleted file mode 100644 index b2851d2..0000000 Binary files a/htdocs/images/flags/ZM.gif and /dev/null differ diff --git a/htdocs/images/flags/ZW.gif b/htdocs/images/flags/ZW.gif deleted file mode 100644 index 02901f6..0000000 Binary files a/htdocs/images/flags/ZW.gif and /dev/null differ diff --git a/htdocs/images/goodies/README b/htdocs/images/goodies/README deleted file mode 100644 index ae70e85..0000000 --- a/htdocs/images/goodies/README +++ /dev/null @@ -1,7 +0,0 @@ -Those images have been fetched from external servers. They are *not* covered by Plat/al's GPL license. -Please check with image owners for more information on copyrights and utilization limitations. - -add-google.gif: http://gmodules.com/ig/images/plus_google.gif -add-google-calendar.gif: http://www.google.com/calendar/images/ext/gc_button1.gif -add-netvibes.gif: http://www.netvibes.com/img/add2netvibes.gif -add-yahoo: http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif diff --git a/htdocs/images/goodies/add-google-calendar.gif b/htdocs/images/goodies/add-google-calendar.gif deleted file mode 100644 index 7884948..0000000 Binary files a/htdocs/images/goodies/add-google-calendar.gif and /dev/null differ diff --git a/htdocs/images/goodies/add-google.gif b/htdocs/images/goodies/add-google.gif deleted file mode 100644 index 43b7889..0000000 Binary files a/htdocs/images/goodies/add-google.gif and /dev/null differ diff --git a/htdocs/images/goodies/add-netvibes.gif b/htdocs/images/goodies/add-netvibes.gif deleted file mode 100644 index 6159586..0000000 Binary files a/htdocs/images/goodies/add-netvibes.gif and /dev/null differ diff --git a/htdocs/images/goodies/add-newsgator.gif b/htdocs/images/goodies/add-newsgator.gif deleted file mode 100644 index 6d9bdef..0000000 Binary files a/htdocs/images/goodies/add-newsgator.gif and /dev/null differ diff --git a/htdocs/images/goodies/add-yahoo.gif b/htdocs/images/goodies/add-yahoo.gif deleted file mode 100644 index b6f8047..0000000 Binary files a/htdocs/images/goodies/add-yahoo.gif and /dev/null differ 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 6677cf3..0000000 Binary files a/htdocs/images/icons/add.gif and /dev/null differ diff --git a/htdocs/images/icons/arrow_refresh.gif b/htdocs/images/icons/arrow_refresh.gif deleted file mode 100644 index 1bfcf13..0000000 Binary files a/htdocs/images/icons/arrow_refresh.gif and /dev/null differ diff --git a/htdocs/images/icons/bell.gif b/htdocs/images/icons/bell.gif deleted file mode 100644 index b0a1965..0000000 Binary files a/htdocs/images/icons/bell.gif and /dev/null differ diff --git a/htdocs/images/icons/bin_empty.gif b/htdocs/images/icons/bin_empty.gif deleted file mode 100644 index 337e0e2..0000000 Binary files a/htdocs/images/icons/bin_empty.gif and /dev/null differ diff --git a/htdocs/images/icons/book_next.gif b/htdocs/images/icons/book_next.gif deleted file mode 100644 index 111bcbf..0000000 Binary files a/htdocs/images/icons/book_next.gif and /dev/null differ diff --git a/htdocs/images/icons/bullet_arrow_down.gif b/htdocs/images/icons/bullet_arrow_down.gif deleted file mode 100644 index daa2eec..0000000 Binary files a/htdocs/images/icons/bullet_arrow_down.gif and /dev/null differ diff --git a/htdocs/images/icons/bullet_arrow_up.gif b/htdocs/images/icons/bullet_arrow_up.gif deleted file mode 100644 index 834ba5c..0000000 Binary files a/htdocs/images/icons/bullet_arrow_up.gif and /dev/null differ diff --git a/htdocs/images/icons/calendar_view_day.gif b/htdocs/images/icons/calendar_view_day.gif deleted file mode 100644 index b07c373..0000000 Binary files a/htdocs/images/icons/calendar_view_day.gif and /dev/null differ diff --git a/htdocs/images/icons/clock.gif b/htdocs/images/icons/clock.gif deleted file mode 100644 index 5629813..0000000 Binary files a/htdocs/images/icons/clock.gif and /dev/null differ diff --git a/htdocs/images/icons/comments.gif b/htdocs/images/icons/comments.gif deleted file mode 100644 index 49bc3f6..0000000 Binary files a/htdocs/images/icons/comments.gif and /dev/null differ diff --git a/htdocs/images/icons/cross.gif b/htdocs/images/icons/cross.gif deleted file mode 100644 index 7008fdc..0000000 Binary files a/htdocs/images/icons/cross.gif and /dev/null differ diff --git a/htdocs/images/icons/date_edit.gif b/htdocs/images/icons/date_edit.gif deleted file mode 100644 index 212c6e1..0000000 Binary files a/htdocs/images/icons/date_edit.gif and /dev/null differ diff --git a/htdocs/images/icons/delete.gif b/htdocs/images/icons/delete.gif deleted file mode 100644 index e553a92..0000000 Binary files a/htdocs/images/icons/delete.gif and /dev/null differ diff --git a/htdocs/images/icons/email.gif b/htdocs/images/icons/email.gif deleted file mode 100644 index 81eee6a..0000000 Binary files a/htdocs/images/icons/email.gif and /dev/null differ diff --git a/htdocs/images/icons/email_attach.gif b/htdocs/images/icons/email_attach.gif deleted file mode 100644 index a2e606c..0000000 Binary files a/htdocs/images/icons/email_attach.gif and /dev/null differ diff --git a/htdocs/images/icons/error.gif b/htdocs/images/icons/error.gif deleted file mode 100644 index de6dc7b..0000000 Binary files a/htdocs/images/icons/error.gif and /dev/null differ diff --git a/htdocs/images/icons/feed.gif b/htdocs/images/icons/feed.gif deleted file mode 100644 index 09ecd61..0000000 Binary files a/htdocs/images/icons/feed.gif and /dev/null differ diff --git a/htdocs/images/icons/feed_add.gif b/htdocs/images/icons/feed_add.gif deleted file mode 100644 index cb1e280..0000000 Binary files a/htdocs/images/icons/feed_add.gif and /dev/null differ diff --git a/htdocs/images/icons/flag_green.gif b/htdocs/images/icons/flag_green.gif deleted file mode 100644 index f6e21e0..0000000 Binary files a/htdocs/images/icons/flag_green.gif and /dev/null differ diff --git a/htdocs/images/icons/flag_orange.gif b/htdocs/images/icons/flag_orange.gif deleted file mode 100644 index f76560a..0000000 Binary files a/htdocs/images/icons/flag_orange.gif and /dev/null differ diff --git a/htdocs/images/icons/flag_red.gif b/htdocs/images/icons/flag_red.gif deleted file mode 100644 index f1de9db..0000000 Binary files a/htdocs/images/icons/flag_red.gif and /dev/null differ diff --git a/htdocs/images/icons/group.gif b/htdocs/images/icons/group.gif deleted file mode 100644 index 85619a2..0000000 Binary files a/htdocs/images/icons/group.gif and /dev/null differ diff --git a/htdocs/images/icons/information.gif b/htdocs/images/icons/information.gif deleted file mode 100644 index 9e9186c..0000000 Binary files a/htdocs/images/icons/information.gif and /dev/null differ diff --git a/htdocs/images/icons/lightbulb.gif b/htdocs/images/icons/lightbulb.gif deleted file mode 100644 index 981106e..0000000 Binary files a/htdocs/images/icons/lightbulb.gif and /dev/null differ diff --git a/htdocs/images/icons/lock.gif b/htdocs/images/icons/lock.gif deleted file mode 100644 index 9d82baa..0000000 Binary files a/htdocs/images/icons/lock.gif and /dev/null differ diff --git a/htdocs/images/icons/lock_add.gif b/htdocs/images/icons/lock_add.gif deleted file mode 100644 index e25ae71..0000000 Binary files a/htdocs/images/icons/lock_add.gif and /dev/null differ diff --git a/htdocs/images/icons/lock_open.gif b/htdocs/images/icons/lock_open.gif deleted file mode 100644 index 5ec9078..0000000 Binary files a/htdocs/images/icons/lock_open.gif and /dev/null differ diff --git a/htdocs/images/icons/magnifier.gif b/htdocs/images/icons/magnifier.gif deleted file mode 100644 index 203174e..0000000 Binary files a/htdocs/images/icons/magnifier.gif and /dev/null differ diff --git a/htdocs/images/icons/map.gif b/htdocs/images/icons/map.gif deleted file mode 100644 index dd87dfc..0000000 Binary files a/htdocs/images/icons/map.gif and /dev/null differ diff --git a/htdocs/images/icons/money.gif b/htdocs/images/icons/money.gif deleted file mode 100644 index 1040ec7..0000000 Binary files a/htdocs/images/icons/money.gif and /dev/null differ diff --git a/htdocs/images/icons/null.gif b/htdocs/images/icons/null.gif deleted file mode 100644 index 4682c24..0000000 Binary files a/htdocs/images/icons/null.gif and /dev/null differ diff --git a/htdocs/images/icons/package_add.gif b/htdocs/images/icons/package_add.gif deleted file mode 100644 index 51753bc..0000000 Binary files a/htdocs/images/icons/package_add.gif and /dev/null differ diff --git a/htdocs/images/icons/package_delete.gif b/htdocs/images/icons/package_delete.gif deleted file mode 100644 index 9e96b17..0000000 Binary files a/htdocs/images/icons/package_delete.gif and /dev/null differ diff --git a/htdocs/images/icons/page_edit.gif b/htdocs/images/icons/page_edit.gif deleted file mode 100644 index 9f6eb3b..0000000 Binary files a/htdocs/images/icons/page_edit.gif and /dev/null differ diff --git a/htdocs/images/icons/resultset_first.gif b/htdocs/images/icons/resultset_first.gif deleted file mode 100644 index f0830ee..0000000 Binary files a/htdocs/images/icons/resultset_first.gif and /dev/null differ diff --git a/htdocs/images/icons/resultset_last.gif b/htdocs/images/icons/resultset_last.gif deleted file mode 100644 index 752b4e1..0000000 Binary files a/htdocs/images/icons/resultset_last.gif and /dev/null differ diff --git a/htdocs/images/icons/resultset_next.gif b/htdocs/images/icons/resultset_next.gif deleted file mode 100644 index 6f84518..0000000 Binary files a/htdocs/images/icons/resultset_next.gif and /dev/null differ diff --git a/htdocs/images/icons/resultset_previous.gif b/htdocs/images/icons/resultset_previous.gif deleted file mode 100644 index 465328c..0000000 Binary files a/htdocs/images/icons/resultset_previous.gif and /dev/null differ diff --git a/htdocs/images/icons/table.gif b/htdocs/images/icons/table.gif deleted file mode 100644 index 8235437..0000000 Binary files a/htdocs/images/icons/table.gif and /dev/null differ diff --git a/htdocs/images/icons/thumb_down.gif b/htdocs/images/icons/thumb_down.gif deleted file mode 100644 index d2e54b0..0000000 Binary files a/htdocs/images/icons/thumb_down.gif and /dev/null differ diff --git a/htdocs/images/icons/thumb_up.gif b/htdocs/images/icons/thumb_up.gif deleted file mode 100644 index 8ff3f1f..0000000 Binary files a/htdocs/images/icons/thumb_up.gif and /dev/null differ diff --git a/htdocs/images/icons/tick.gif b/htdocs/images/icons/tick.gif deleted file mode 100644 index 4e4b5ed..0000000 Binary files a/htdocs/images/icons/tick.gif and /dev/null differ diff --git a/htdocs/images/icons/user_edit.gif b/htdocs/images/icons/user_edit.gif deleted file mode 100644 index a09c161..0000000 Binary files a/htdocs/images/icons/user_edit.gif and /dev/null differ diff --git a/htdocs/images/icons/user_gray.gif b/htdocs/images/icons/user_gray.gif deleted file mode 100644 index adaf88d..0000000 Binary files a/htdocs/images/icons/user_gray.gif and /dev/null differ diff --git a/htdocs/images/icons/user_suit.gif b/htdocs/images/icons/user_suit.gif deleted file mode 100644 index e0333f1..0000000 Binary files a/htdocs/images/icons/user_suit.gif and /dev/null differ diff --git a/htdocs/images/icons/vcard.gif b/htdocs/images/icons/vcard.gif deleted file mode 100644 index fc618e3..0000000 Binary files a/htdocs/images/icons/vcard.gif and /dev/null differ diff --git a/htdocs/images/icons/wand.gif b/htdocs/images/icons/wand.gif deleted file mode 100644 index 5e35252..0000000 Binary files a/htdocs/images/icons/wand.gif and /dev/null differ diff --git a/htdocs/images/icons/weather_cloudy.gif b/htdocs/images/icons/weather_cloudy.gif deleted file mode 100644 index a1d2be9..0000000 Binary files a/htdocs/images/icons/weather_cloudy.gif and /dev/null differ diff --git a/htdocs/images/icons/world_go.gif b/htdocs/images/icons/world_go.gif deleted file mode 100644 index 9fad760..0000000 Binary files a/htdocs/images/icons/world_go.gif and /dev/null differ diff --git a/htdocs/images/icons/wrench.gif b/htdocs/images/icons/wrench.gif deleted file mode 100644 index 6e388b4..0000000 Binary files a/htdocs/images/icons/wrench.gif and /dev/null differ diff --git a/htdocs/images/k1.gif b/htdocs/images/k1.gif deleted file mode 100644 index 5397861..0000000 Binary files a/htdocs/images/k1.gif and /dev/null differ diff --git a/htdocs/images/k2.gif b/htdocs/images/k2.gif deleted file mode 100644 index 37eb368..0000000 Binary files a/htdocs/images/k2.gif and /dev/null differ diff --git a/htdocs/images/lists_date.png b/htdocs/images/lists_date.png deleted file mode 100644 index 6b8602a..0000000 Binary files a/htdocs/images/lists_date.png and /dev/null differ diff --git a/htdocs/images/lists_first.png b/htdocs/images/lists_first.png deleted file mode 100644 index 7adb24c..0000000 Binary files a/htdocs/images/lists_first.png and /dev/null differ diff --git a/htdocs/images/lists_firstia.png b/htdocs/images/lists_firstia.png deleted file mode 100644 index f2794f7..0000000 Binary files a/htdocs/images/lists_firstia.png and /dev/null differ diff --git a/htdocs/images/lists_last.png b/htdocs/images/lists_last.png deleted file mode 100644 index a6adece..0000000 Binary files a/htdocs/images/lists_last.png and /dev/null differ diff --git a/htdocs/images/lists_lastia.png b/htdocs/images/lists_lastia.png deleted file mode 100644 index 205c2cc..0000000 Binary files a/htdocs/images/lists_lastia.png and /dev/null differ diff --git a/htdocs/images/lists_next.png b/htdocs/images/lists_next.png deleted file mode 100644 index 62e6d36..0000000 Binary files a/htdocs/images/lists_next.png and /dev/null differ diff --git a/htdocs/images/lists_nextia.png b/htdocs/images/lists_nextia.png deleted file mode 100644 index c687d74..0000000 Binary files a/htdocs/images/lists_nextia.png and /dev/null differ diff --git a/htdocs/images/lists_prev.png b/htdocs/images/lists_prev.png deleted file mode 100644 index e2578a1..0000000 Binary files a/htdocs/images/lists_prev.png and /dev/null differ diff --git a/htdocs/images/lists_previa.png b/htdocs/images/lists_previa.png deleted file mode 100644 index b5489a4..0000000 Binary files a/htdocs/images/lists_previa.png and /dev/null differ diff --git a/htdocs/images/lists_thread.png b/htdocs/images/lists_thread.png deleted file mode 100644 index 84d1d1a..0000000 Binary files a/htdocs/images/lists_thread.png and /dev/null differ diff --git a/htdocs/images/logo-xnet.png b/htdocs/images/logo-xnet.png deleted file mode 100644 index c071736..0000000 Binary files a/htdocs/images/logo-xnet.png and /dev/null differ diff --git a/htdocs/images/logo-xorg.png b/htdocs/images/logo-xorg.png deleted file mode 100644 index dffa2ff..0000000 Binary files a/htdocs/images/logo-xorg.png and /dev/null differ diff --git a/htdocs/images/logo.jpg b/htdocs/images/logo.jpg deleted file mode 100644 index dd97a20..0000000 Binary files a/htdocs/images/logo.jpg and /dev/null differ diff --git a/htdocs/images/logo.png b/htdocs/images/logo.png deleted file mode 100644 index b08c016..0000000 Binary files a/htdocs/images/logo.png and /dev/null differ diff --git a/htdocs/images/logoBR.jpg b/htdocs/images/logoBR.jpg deleted file mode 100644 index 1f50ff7..0000000 Binary files a/htdocs/images/logoBR.jpg and /dev/null differ diff --git a/htdocs/images/logo_binets.png b/htdocs/images/logo_binets.png deleted file mode 100644 index 1487a8c..0000000 Binary files a/htdocs/images/logo_binets.png and /dev/null differ diff --git a/htdocs/images/logo_evenements.png b/htdocs/images/logo_evenements.png deleted file mode 100644 index 2fefaba..0000000 Binary files a/htdocs/images/logo_evenements.png and /dev/null differ diff --git a/htdocs/images/logo_groupesx.png b/htdocs/images/logo_groupesx.png deleted file mode 100644 index d22a5da..0000000 Binary files a/htdocs/images/logo_groupesx.png and /dev/null differ diff --git a/htdocs/images/logo_institutions.png b/htdocs/images/logo_institutions.png deleted file mode 100644 index 27e42d4..0000000 Binary files a/htdocs/images/logo_institutions.png and /dev/null differ diff --git a/htdocs/images/logo_plan.png b/htdocs/images/logo_plan.png deleted file mode 100644 index aba9cb3..0000000 Binary files a/htdocs/images/logo_plan.png and /dev/null differ diff --git a/htdocs/images/logo_promotions.png b/htdocs/images/logo_promotions.png deleted file mode 100644 index c425ef3..0000000 Binary files a/htdocs/images/logo_promotions.png and /dev/null differ diff --git a/htdocs/images/logo_recherche.png b/htdocs/images/logo_recherche.png deleted file mode 100644 index e90341b..0000000 Binary files a/htdocs/images/logo_recherche.png and /dev/null differ diff --git a/htdocs/images/logo_xorg_nl.png b/htdocs/images/logo_xorg_nl.png deleted file mode 100644 index 4bfe20f..0000000 Binary files a/htdocs/images/logo_xorg_nl.png and /dev/null differ diff --git a/htdocs/images/medals/bundesverdienstkreuz.jpg b/htdocs/images/medals/bundesverdienstkreuz.jpg deleted file mode 100644 index f94f175..0000000 Binary files a/htdocs/images/medals/bundesverdienstkreuz.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_1418.jpg b/htdocs/images/medals/croix_1418.jpg deleted file mode 100644 index 1a218aa..0000000 Binary files a/htdocs/images/medals/croix_1418.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_3945.jpg b/htdocs/images/medals/croix_3945.jpg deleted file mode 100644 index 100e91e..0000000 Binary files a/htdocs/images/medals/croix_3945.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_cc.jpg b/htdocs/images/medals/croix_cc.jpg deleted file mode 100644 index 3d16ef2..0000000 Binary files a/htdocs/images/medals/croix_cc.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_cv.jpg b/htdocs/images/medals/croix_cv.jpg deleted file mode 100644 index ef19bf3..0000000 Binary files a/htdocs/images/medals/croix_cv.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_cv1418.jpg b/htdocs/images/medals/croix_cv1418.jpg deleted file mode 100644 index 4bc0b50..0000000 Binary files a/htdocs/images/medals/croix_cv1418.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_toe.jpg b/htdocs/images/medals/croix_toe.jpg deleted file mode 100644 index fb9b4e7..0000000 Binary files a/htdocs/images/medals/croix_toe.jpg and /dev/null differ diff --git a/htdocs/images/medals/croix_vm.jpg b/htdocs/images/medals/croix_vm.jpg deleted file mode 100644 index ca97cb3..0000000 Binary files a/htdocs/images/medals/croix_vm.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_acd.jpg b/htdocs/images/medals/honn_acd.jpg deleted file mode 100644 index d354286..0000000 Binary files a/htdocs/images/medals/honn_acd.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_adfs.jpg b/htdocs/images/medals/honn_adfs.jpg deleted file mode 100644 index bcc7f80..0000000 Binary files a/htdocs/images/medals/honn_adfs.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_ae.jpg b/htdocs/images/medals/honn_ae.jpg deleted file mode 100644 index bb7f215..0000000 Binary files a/htdocs/images/medals/honn_ae.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_agr.jpg b/htdocs/images/medals/honn_agr.jpg deleted file mode 100644 index 34ff92c..0000000 Binary files a/htdocs/images/medals/honn_agr.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_ap.jpg b/htdocs/images/medals/honn_ap.jpg deleted file mode 100644 index 65c0200..0000000 Binary files a/htdocs/images/medals/honn_ap.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_dou.jpg b/htdocs/images/medals/honn_dou.jpg deleted file mode 100644 index bdec3b4..0000000 Binary files a/htdocs/images/medals/honn_dou.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_ef.jpg b/htdocs/images/medals/honn_ef.jpg deleted file mode 100644 index 3e27b5c..0000000 Binary files a/htdocs/images/medals/honn_ef.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_epi.jpg b/htdocs/images/medals/honn_epi.jpg deleted file mode 100644 index 1da84f6..0000000 Binary files a/htdocs/images/medals/honn_epi.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_mci.jpg b/htdocs/images/medals/honn_mci.jpg deleted file mode 100644 index 53d5225..0000000 Binary files a/htdocs/images/medals/honn_mci.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_pd.jpg b/htdocs/images/medals/honn_pd.jpg deleted file mode 100644 index 8237bfd..0000000 Binary files a/htdocs/images/medals/honn_pd.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_pen.jpg b/htdocs/images/medals/honn_pen.jpg deleted file mode 100644 index a77d633..0000000 Binary files a/htdocs/images/medals/honn_pen.jpg and /dev/null differ diff --git a/htdocs/images/medals/honn_sm.jpg b/htdocs/images/medals/honn_sm.jpg deleted file mode 100644 index 5e179b9..0000000 Binary files a/htdocs/images/medals/honn_sm.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_aero.jpg b/htdocs/images/medals/mili_aero.jpg deleted file mode 100644 index 743d03e..0000000 Binary files a/htdocs/images/medals/mili_aero.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_an.jpg b/htdocs/images/medals/mili_an.jpg deleted file mode 100644 index b929f9d..0000000 Binary files a/htdocs/images/medals/mili_an.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_defnat.jpg b/htdocs/images/medals/mili_defnat.jpg deleted file mode 100644 index 6269f19..0000000 Binary files a/htdocs/images/medals/mili_defnat.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_ev.jpg b/htdocs/images/medals/mili_ev.jpg deleted file mode 100644 index ce309fb..0000000 Binary files a/htdocs/images/medals/mili_ev.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_eva.jpg b/htdocs/images/medals/mili_eva.jpg deleted file mode 100644 index 4dff51c..0000000 Binary files a/htdocs/images/medals/mili_eva.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_gn.jpg b/htdocs/images/medals/mili_gn.jpg deleted file mode 100644 index 2f3d2ad..0000000 Binary files a/htdocs/images/medals/mili_gn.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_ib.jpg b/htdocs/images/medals/mili_ib.jpg deleted file mode 100644 index d5039fa..0000000 Binary files a/htdocs/images/medals/mili_ib.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_mili.jpg b/htdocs/images/medals/mili_mili.jpg deleted file mode 100644 index d7c2276..0000000 Binary files a/htdocs/images/medals/mili_mili.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_om.jpg b/htdocs/images/medals/mili_om.jpg deleted file mode 100644 index 99067bf..0000000 Binary files a/htdocs/images/medals/mili_om.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_smv.jpg b/htdocs/images/medals/mili_smv.jpg deleted file mode 100644 index 03444d1..0000000 Binary files a/htdocs/images/medals/mili_smv.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_ssa.jpg b/htdocs/images/medals/mili_ssa.jpg deleted file mode 100644 index 22786c8..0000000 Binary files a/htdocs/images/medals/mili_ssa.jpg and /dev/null differ diff --git a/htdocs/images/medals/mili_trn.jpg b/htdocs/images/medals/mili_trn.jpg deleted file mode 100644 index e28fd46..0000000 Binary files a/htdocs/images/medals/mili_trn.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_al.jpg b/htdocs/images/medals/ordre_al.jpg deleted file mode 100644 index 55ec97c..0000000 Binary files a/htdocs/images/medals/ordre_al.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_lib.jpg b/htdocs/images/medals/ordre_lib.jpg deleted file mode 100644 index 8c3f109..0000000 Binary files a/htdocs/images/medals/ordre_lib.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_ma.jpg b/htdocs/images/medals/ordre_ma.jpg deleted file mode 100644 index f4776a5..0000000 Binary files a/htdocs/images/medals/ordre_ma.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_mm.jpg b/htdocs/images/medals/ordre_mm.jpg deleted file mode 100644 index cffbd1a..0000000 Binary files a/htdocs/images/medals/ordre_mm.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_nm.jpg b/htdocs/images/medals/ordre_nm.jpg deleted file mode 100644 index 07d835e..0000000 Binary files a/htdocs/images/medals/ordre_nm.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_onlh.jpg b/htdocs/images/medals/ordre_onlh.jpg deleted file mode 100644 index cbaa9a6..0000000 Binary files a/htdocs/images/medals/ordre_onlh.jpg and /dev/null differ diff --git a/htdocs/images/medals/ordre_pa.jpg b/htdocs/images/medals/ordre_pa.jpg deleted file mode 100644 index 0e590f8..0000000 Binary files a/htdocs/images/medals/ordre_pa.jpg and /dev/null differ diff --git a/htdocs/images/medals/prix_fields.gif b/htdocs/images/medals/prix_fields.gif deleted file mode 100644 index d8cc546..0000000 Binary files a/htdocs/images/medals/prix_fields.gif and /dev/null differ diff --git a/htdocs/images/medals/prix_nb_eco.jpg b/htdocs/images/medals/prix_nb_eco.jpg deleted file mode 100644 index ec93c83..0000000 Binary files a/htdocs/images/medals/prix_nb_eco.jpg and /dev/null differ diff --git a/htdocs/images/medals/prix_nb_lit.jpg b/htdocs/images/medals/prix_nb_lit.jpg deleted file mode 100644 index 8b04fda..0000000 Binary files a/htdocs/images/medals/prix_nb_lit.jpg and /dev/null differ diff --git a/htdocs/images/medals/prix_nb_med.jpg b/htdocs/images/medals/prix_nb_med.jpg deleted file mode 100644 index 26a8cc1..0000000 Binary files a/htdocs/images/medals/prix_nb_med.jpg and /dev/null differ diff --git a/htdocs/images/medals/prix_nb_paix.jpg b/htdocs/images/medals/prix_nb_paix.jpg deleted file mode 100644 index bfd76b1..0000000 Binary files a/htdocs/images/medals/prix_nb_paix.jpg and /dev/null differ diff --git a/htdocs/images/medals/prix_nb_pc.jpg b/htdocs/images/medals/prix_nb_pc.jpg deleted file mode 100644 index 7bc7b7d..0000000 Binary files a/htdocs/images/medals/prix_nb_pc.jpg and /dev/null differ diff --git a/htdocs/images/medals/resi_cvr.jpg b/htdocs/images/medals/resi_cvr.jpg deleted file mode 100644 index 8e7301c..0000000 Binary files a/htdocs/images/medals/resi_cvr.jpg and /dev/null differ diff --git a/htdocs/images/medals/resi_dr.jpg b/htdocs/images/medals/resi_dr.jpg deleted file mode 100644 index 22f7585..0000000 Binary files a/htdocs/images/medals/resi_dr.jpg and /dev/null differ diff --git a/htdocs/images/medals/resi_rf.jpg b/htdocs/images/medals/resi_rf.jpg deleted file mode 100644 index f312967..0000000 Binary files a/htdocs/images/medals/resi_rf.jpg and /dev/null differ 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 06f2061..0000000 Binary files a/htdocs/images/none.png and /dev/null differ diff --git a/htdocs/images/oval.png b/htdocs/images/oval.png deleted file mode 100644 index 05fbe12..0000000 Binary files a/htdocs/images/oval.png and /dev/null differ diff --git a/htdocs/images/oval2.png b/htdocs/images/oval2.png deleted file mode 100644 index 5f7dc0b..0000000 Binary files a/htdocs/images/oval2.png and /dev/null differ diff --git a/htdocs/images/parfait.jpg b/htdocs/images/parfait.jpg deleted file mode 100644 index 1518f85..0000000 Binary files a/htdocs/images/parfait.jpg and /dev/null differ diff --git a/htdocs/images/puce.png b/htdocs/images/puce.png deleted file mode 100644 index 2396856..0000000 Binary files a/htdocs/images/puce.png and /dev/null differ diff --git a/htdocs/images/skins/Defaut.png b/htdocs/images/skins/Defaut.png deleted file mode 100644 index 6443e80..0000000 Binary files a/htdocs/images/skins/Defaut.png and /dev/null differ diff --git a/htdocs/images/skins/Espace.png b/htdocs/images/skins/Espace.png deleted file mode 100644 index 34ffe45..0000000 Binary files a/htdocs/images/skins/Espace.png and /dev/null differ diff --git a/htdocs/images/skins/HumLinux.png b/htdocs/images/skins/HumLinux.png deleted file mode 100644 index 6c3d5c8..0000000 Binary files a/htdocs/images/skins/HumLinux.png and /dev/null differ diff --git a/htdocs/images/skins/Keynote.png b/htdocs/images/skins/Keynote.png deleted file mode 100644 index a49f4fc..0000000 Binary files a/htdocs/images/skins/Keynote.png and /dev/null differ diff --git a/htdocs/images/skins/Linux.png b/htdocs/images/skins/Linux.png deleted file mode 100644 index d6e7983..0000000 Binary files a/htdocs/images/skins/Linux.png and /dev/null differ diff --git a/htdocs/images/skins/LiteSkin.png b/htdocs/images/skins/LiteSkin.png deleted file mode 100644 index b117123..0000000 Binary files a/htdocs/images/skins/LiteSkin.png and /dev/null differ diff --git a/htdocs/images/skins/NBviolet.png b/htdocs/images/skins/NBviolet.png deleted file mode 100644 index cc1c53f..0000000 Binary files a/htdocs/images/skins/NBviolet.png and /dev/null differ diff --git a/htdocs/images/skins/NewXorg.png b/htdocs/images/skins/NewXorg.png deleted file mode 100644 index 08eab1d..0000000 Binary files a/htdocs/images/skins/NewXorg.png and /dev/null differ diff --git a/htdocs/images/skins/OldTimes.png b/htdocs/images/skins/OldTimes.png deleted file mode 100644 index 488d7bf..0000000 Binary files a/htdocs/images/skins/OldTimes.png and /dev/null differ diff --git a/htdocs/images/skins/OpenWeb.png b/htdocs/images/skins/OpenWeb.png deleted file mode 100644 index 97184bf..0000000 Binary files a/htdocs/images/skins/OpenWeb.png and /dev/null differ diff --git a/htdocs/images/skins/Sharky.png b/htdocs/images/skins/Sharky.png deleted file mode 100644 index 75959f8..0000000 Binary files a/htdocs/images/skins/Sharky.png and /dev/null differ diff --git a/htdocs/images/skins/Spectral.png b/htdocs/images/skins/Spectral.png deleted file mode 100644 index 2539ff0..0000000 Binary files a/htdocs/images/skins/Spectral.png and /dev/null differ diff --git a/htdocs/images/skins/Trapped.png b/htdocs/images/skins/Trapped.png deleted file mode 100644 index 2f42730..0000000 Binary files a/htdocs/images/skins/Trapped.png and /dev/null differ diff --git a/htdocs/images/skins/default_ban.jpg b/htdocs/images/skins/default_ban.jpg deleted file mode 100644 index 8b96d8f..0000000 Binary files a/htdocs/images/skins/default_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/default_headlogo.jpg b/htdocs/images/skins/default_headlogo.jpg deleted file mode 100644 index 35a296e..0000000 Binary files a/htdocs/images/skins/default_headlogo.jpg and /dev/null differ diff --git a/htdocs/images/skins/default_lesX.gif b/htdocs/images/skins/default_lesX.gif deleted file mode 100644 index bdb5285..0000000 Binary files a/htdocs/images/skins/default_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/default_snapshot.png b/htdocs/images/skins/default_snapshot.png deleted file mode 100644 index 4de8ca9..0000000 Binary files a/htdocs/images/skins/default_snapshot.png and /dev/null differ diff --git a/htdocs/images/skins/default_titre.gif b/htdocs/images/skins/default_titre.gif deleted file mode 100644 index 0900c86..0000000 Binary files a/htdocs/images/skins/default_titre.gif and /dev/null differ diff --git a/htdocs/images/skins/espace_ban.jpg b/htdocs/images/skins/espace_ban.jpg deleted file mode 100644 index 7dc79a1..0000000 Binary files a/htdocs/images/skins/espace_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/espace_lesX.gif b/htdocs/images/skins/espace_lesX.gif deleted file mode 100644 index e02dcfb..0000000 Binary files a/htdocs/images/skins/espace_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/espace_logo.gif b/htdocs/images/skins/espace_logo.gif deleted file mode 100644 index 94d7373..0000000 Binary files a/htdocs/images/skins/espace_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/espace_menu.jpg b/htdocs/images/skins/espace_menu.jpg deleted file mode 100644 index 7d3dced..0000000 Binary files a/htdocs/images/skins/espace_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/espace_titre.jpg b/htdocs/images/skins/espace_titre.jpg deleted file mode 100644 index fc3749d..0000000 Binary files a/htdocs/images/skins/espace_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/humlinux_background.jpg b/htdocs/images/skins/humlinux_background.jpg deleted file mode 100644 index c101f19..0000000 Binary files a/htdocs/images/skins/humlinux_background.jpg and /dev/null differ diff --git a/htdocs/images/skins/humlinux_lesX.gif b/htdocs/images/skins/humlinux_lesX.gif deleted file mode 100644 index 7540466..0000000 Binary files a/htdocs/images/skins/humlinux_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/humlinux_logo.gif b/htdocs/images/skins/humlinux_logo.gif deleted file mode 100644 index 843cd8c..0000000 Binary files a/htdocs/images/skins/humlinux_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/humlinux_menu.jpg b/htdocs/images/skins/humlinux_menu.jpg deleted file mode 100644 index c7840fa..0000000 Binary files a/htdocs/images/skins/humlinux_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/keynote_ban.png b/htdocs/images/skins/keynote_ban.png deleted file mode 100644 index c201367..0000000 Binary files a/htdocs/images/skins/keynote_ban.png and /dev/null differ diff --git a/htdocs/images/skins/keynote_bg.png b/htdocs/images/skins/keynote_bg.png deleted file mode 100644 index 642627f..0000000 Binary files a/htdocs/images/skins/keynote_bg.png and /dev/null differ diff --git a/htdocs/images/skins/keynote_bg_lighter.png b/htdocs/images/skins/keynote_bg_lighter.png deleted file mode 100644 index 0942d42..0000000 Binary files a/htdocs/images/skins/keynote_bg_lighter.png and /dev/null differ diff --git a/htdocs/images/skins/keynote_bg_verylighter.png b/htdocs/images/skins/keynote_bg_verylighter.png deleted file mode 100644 index 63e689c..0000000 Binary files a/htdocs/images/skins/keynote_bg_verylighter.png and /dev/null differ diff --git a/htdocs/images/skins/keynote_logo.png b/htdocs/images/skins/keynote_logo.png deleted file mode 100644 index 207000f..0000000 Binary files a/htdocs/images/skins/keynote_logo.png and /dev/null differ diff --git a/htdocs/images/skins/keynote_title.gif b/htdocs/images/skins/keynote_title.gif deleted file mode 100644 index ba94279..0000000 Binary files a/htdocs/images/skins/keynote_title.gif and /dev/null differ diff --git a/htdocs/images/skins/keynote_topborder.png b/htdocs/images/skins/keynote_topborder.png deleted file mode 100644 index a4abede..0000000 Binary files a/htdocs/images/skins/keynote_topborder.png and /dev/null differ diff --git a/htdocs/images/skins/linux_ban.jpg b/htdocs/images/skins/linux_ban.jpg deleted file mode 100644 index 8b96d8f..0000000 Binary files a/htdocs/images/skins/linux_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/linux_lesX.jpg b/htdocs/images/skins/linux_lesX.jpg deleted file mode 100644 index f87b036..0000000 Binary files a/htdocs/images/skins/linux_lesX.jpg and /dev/null differ diff --git a/htdocs/images/skins/linux_logo.jpg b/htdocs/images/skins/linux_logo.jpg deleted file mode 100644 index 23a4836..0000000 Binary files a/htdocs/images/skins/linux_logo.jpg and /dev/null differ diff --git a/htdocs/images/skins/linux_menu.gif b/htdocs/images/skins/linux_menu.gif deleted file mode 100644 index e565824..0000000 Binary files a/htdocs/images/skins/linux_menu.gif and /dev/null differ diff --git a/htdocs/images/skins/linux_snapshot.png b/htdocs/images/skins/linux_snapshot.png deleted file mode 100644 index 537a078..0000000 Binary files a/htdocs/images/skins/linux_snapshot.png and /dev/null differ diff --git a/htdocs/images/skins/linux_titre.jpg b/htdocs/images/skins/linux_titre.jpg deleted file mode 100644 index 77d3ea4..0000000 Binary files a/htdocs/images/skins/linux_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/liteskin_logo.png b/htdocs/images/skins/liteskin_logo.png deleted file mode 100644 index d399bf5..0000000 Binary files a/htdocs/images/skins/liteskin_logo.png and /dev/null differ diff --git a/htdocs/images/skins/liteskin_titre.png b/htdocs/images/skins/liteskin_titre.png deleted file mode 100644 index f2c3266..0000000 Binary files a/htdocs/images/skins/liteskin_titre.png and /dev/null differ diff --git a/htdocs/images/skins/nbviolet_ban.jpg b/htdocs/images/skins/nbviolet_ban.jpg deleted file mode 100644 index 0e72b71..0000000 Binary files a/htdocs/images/skins/nbviolet_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/nbviolet_lesX.gif b/htdocs/images/skins/nbviolet_lesX.gif deleted file mode 100644 index 73ffeaa..0000000 Binary files a/htdocs/images/skins/nbviolet_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/nbviolet_logo.gif b/htdocs/images/skins/nbviolet_logo.gif deleted file mode 100644 index e50d9e5..0000000 Binary files a/htdocs/images/skins/nbviolet_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/nbviolet_menu.jpg b/htdocs/images/skins/nbviolet_menu.jpg deleted file mode 100644 index 0e4e153..0000000 Binary files a/htdocs/images/skins/nbviolet_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/nbviolet_titre.jpg b/htdocs/images/skins/nbviolet_titre.jpg deleted file mode 100644 index 8b71e37..0000000 Binary files a/htdocs/images/skins/nbviolet_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/newxorg_background.jpg b/htdocs/images/skins/newxorg_background.jpg deleted file mode 100644 index 9bf4a91..0000000 Binary files a/htdocs/images/skins/newxorg_background.jpg and /dev/null differ diff --git a/htdocs/images/skins/newxorg_ban.gif b/htdocs/images/skins/newxorg_ban.gif deleted file mode 100644 index ab53e9d..0000000 Binary files a/htdocs/images/skins/newxorg_ban.gif and /dev/null differ diff --git a/htdocs/images/skins/newxorg_ban.png b/htdocs/images/skins/newxorg_ban.png deleted file mode 100644 index 257cbe3..0000000 Binary files a/htdocs/images/skins/newxorg_ban.png and /dev/null differ diff --git a/htdocs/images/skins/newxorg_logo.jpg b/htdocs/images/skins/newxorg_logo.jpg deleted file mode 100644 index dd97a20..0000000 Binary files a/htdocs/images/skins/newxorg_logo.jpg and /dev/null differ diff --git a/htdocs/images/skins/newxorg_menu.jpg b/htdocs/images/skins/newxorg_menu.jpg deleted file mode 100644 index ee30e89..0000000 Binary files a/htdocs/images/skins/newxorg_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/newxorg_titre.jpg b/htdocs/images/skins/newxorg_titre.jpg deleted file mode 100644 index e501851..0000000 Binary files a/htdocs/images/skins/newxorg_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/oldtimes_ban.jpg b/htdocs/images/skins/oldtimes_ban.jpg deleted file mode 100644 index 8b96d8f..0000000 Binary files a/htdocs/images/skins/oldtimes_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/oldtimes_lesX.gif b/htdocs/images/skins/oldtimes_lesX.gif deleted file mode 100644 index d50346d..0000000 Binary files a/htdocs/images/skins/oldtimes_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/oldtimes_logo.gif b/htdocs/images/skins/oldtimes_logo.gif deleted file mode 100644 index c5ea6e5..0000000 Binary files a/htdocs/images/skins/oldtimes_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/oldtimes_menu.jpg b/htdocs/images/skins/oldtimes_menu.jpg deleted file mode 100644 index 0464f9b..0000000 Binary files a/htdocs/images/skins/oldtimes_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/oldtimes_titre.jpg b/htdocs/images/skins/oldtimes_titre.jpg deleted file mode 100644 index 3d52911..0000000 Binary files a/htdocs/images/skins/oldtimes_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/sharky_ban.png b/htdocs/images/skins/sharky_ban.png deleted file mode 100644 index 191e10a..0000000 Binary files a/htdocs/images/skins/sharky_ban.png and /dev/null differ diff --git a/htdocs/images/skins/sharky_bubbles.png b/htdocs/images/skins/sharky_bubbles.png deleted file mode 100644 index d6b2781..0000000 Binary files a/htdocs/images/skins/sharky_bubbles.png and /dev/null differ diff --git a/htdocs/images/skins/sharky_logo.png b/htdocs/images/skins/sharky_logo.png deleted file mode 100644 index 0288275..0000000 Binary files a/htdocs/images/skins/sharky_logo.png and /dev/null differ diff --git a/htdocs/images/skins/spectral_ban.jpg b/htdocs/images/skins/spectral_ban.jpg deleted file mode 100644 index 0e72b71..0000000 Binary files a/htdocs/images/skins/spectral_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/spectral_lesX.jpg b/htdocs/images/skins/spectral_lesX.jpg deleted file mode 100644 index 1426bf0..0000000 Binary files a/htdocs/images/skins/spectral_lesX.jpg and /dev/null differ diff --git a/htdocs/images/skins/spectral_logo.gif b/htdocs/images/skins/spectral_logo.gif deleted file mode 100644 index e50d9e5..0000000 Binary files a/htdocs/images/skins/spectral_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/spectral_menu.jpg b/htdocs/images/skins/spectral_menu.jpg deleted file mode 100644 index 05d5946..0000000 Binary files a/htdocs/images/skins/spectral_menu.jpg and /dev/null differ diff --git a/htdocs/images/skins/spectral_titre.jpg b/htdocs/images/skins/spectral_titre.jpg deleted file mode 100644 index 77d3ea4..0000000 Binary files a/htdocs/images/skins/spectral_titre.jpg and /dev/null differ diff --git a/htdocs/images/skins/trapped_ban.jpg b/htdocs/images/skins/trapped_ban.jpg deleted file mode 100644 index 78e05bb..0000000 Binary files a/htdocs/images/skins/trapped_ban.jpg and /dev/null differ diff --git a/htdocs/images/skins/trapped_lesX.gif b/htdocs/images/skins/trapped_lesX.gif deleted file mode 100644 index 56abf93..0000000 Binary files a/htdocs/images/skins/trapped_lesX.gif and /dev/null differ diff --git a/htdocs/images/skins/trapped_logo.gif b/htdocs/images/skins/trapped_logo.gif deleted file mode 100644 index 6282465..0000000 Binary files a/htdocs/images/skins/trapped_logo.gif and /dev/null differ diff --git a/htdocs/images/skins/trapped_menu.gif b/htdocs/images/skins/trapped_menu.gif deleted file mode 100644 index cfb57d6..0000000 Binary files a/htdocs/images/skins/trapped_menu.gif and /dev/null differ diff --git a/htdocs/images/skins/trapped_monstre.jpg b/htdocs/images/skins/trapped_monstre.jpg deleted file mode 100644 index cc14405..0000000 Binary files a/htdocs/images/skins/trapped_monstre.jpg and /dev/null differ diff --git a/htdocs/images/skins/trapped_titre.gif b/htdocs/images/skins/trapped_titre.gif deleted file mode 100644 index cfb57d6..0000000 Binary files a/htdocs/images/skins/trapped_titre.gif and /dev/null differ diff --git a/htdocs/images/skins/wiz_active.png b/htdocs/images/skins/wiz_active.png deleted file mode 100644 index b600fc4..0000000 Binary files a/htdocs/images/skins/wiz_active.png and /dev/null differ diff --git a/htdocs/images/skins/wiz_background.png b/htdocs/images/skins/wiz_background.png deleted file mode 100644 index d9c1656..0000000 Binary files a/htdocs/images/skins/wiz_background.png and /dev/null differ diff --git a/htdocs/images/skins/wiz_hover.png b/htdocs/images/skins/wiz_hover.png deleted file mode 100644 index 39b66fe..0000000 Binary files a/htdocs/images/skins/wiz_hover.png and /dev/null differ diff --git a/htdocs/images/skins/wiz_normal.png b/htdocs/images/skins/wiz_normal.png deleted file mode 100644 index bcf01a0..0000000 Binary files a/htdocs/images/skins/wiz_normal.png and /dev/null differ diff --git a/htdocs/images/skins/wiz_xnet_background.png b/htdocs/images/skins/wiz_xnet_background.png deleted file mode 100644 index 61d695a..0000000 Binary files a/htdocs/images/skins/wiz_xnet_background.png and /dev/null differ diff --git a/htdocs/images/texte_binets.jpg b/htdocs/images/texte_binets.jpg deleted file mode 100644 index 87bb026..0000000 Binary files a/htdocs/images/texte_binets.jpg and /dev/null differ diff --git a/htdocs/images/texte_evenements.jpg b/htdocs/images/texte_evenements.jpg deleted file mode 100644 index 45880c0..0000000 Binary files a/htdocs/images/texte_evenements.jpg and /dev/null differ diff --git a/htdocs/images/texte_groupesx.jpg b/htdocs/images/texte_groupesx.jpg deleted file mode 100644 index d4cdcd5..0000000 Binary files a/htdocs/images/texte_groupesx.jpg and /dev/null differ diff --git a/htdocs/images/texte_institutions.jpg b/htdocs/images/texte_institutions.jpg deleted file mode 100644 index f814d3c..0000000 Binary files a/htdocs/images/texte_institutions.jpg and /dev/null differ diff --git a/htdocs/images/texte_plan.jpg b/htdocs/images/texte_plan.jpg deleted file mode 100644 index a97eaec..0000000 Binary files a/htdocs/images/texte_plan.jpg and /dev/null differ diff --git a/htdocs/images/texte_promotions.jpg b/htdocs/images/texte_promotions.jpg deleted file mode 100644 index cae17aa..0000000 Binary files a/htdocs/images/texte_promotions.jpg and /dev/null differ diff --git a/htdocs/images/texte_recherche.jpg b/htdocs/images/texte_recherche.jpg deleted file mode 100644 index 1818a71..0000000 Binary files a/htdocs/images/texte_recherche.jpg and /dev/null differ diff --git a/htdocs/images/up.png b/htdocs/images/up.png deleted file mode 100644 index dfad497..0000000 Binary files a/htdocs/images/up.png and /dev/null differ diff --git a/htdocs/images/wait.gif b/htdocs/images/wait.gif deleted file mode 100644 index 085ccae..0000000 Binary files a/htdocs/images/wait.gif and /dev/null differ diff --git a/htdocs/images/x.png b/htdocs/images/x.png deleted file mode 100644 index 6a45564..0000000 Binary files a/htdocs/images/x.png and /dev/null differ diff --git a/htdocs/images/xorg.png b/htdocs/images/xorg.png deleted file mode 100644 index 0e4b1d1..0000000 Binary files a/htdocs/images/xorg.png and /dev/null differ diff --git a/htdocs/index.html b/htdocs/index.html deleted file mode 100644 index 1d34714..0000000 --- a/htdocs/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - 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' : '
  • ') : ''; - 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 dc32a23..0000000 Binary files a/modules/carnet/fonts/Vera.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraBI.php b/modules/carnet/fonts/VeraBI.php deleted file mode 100644 index 7915611..0000000 --- a/modules/carnet/fonts/VeraBI.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'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 2ee4581..0000000 Binary files a/modules/carnet/fonts/VeraBI.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraBd.php b/modules/carnet/fonts/VeraBd.php deleted file mode 100644 index e12a384..0000000 --- a/modules/carnet/fonts/VeraBd.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'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 f5fa4d0..0000000 Binary files a/modules/carnet/fonts/VeraBd.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraIt.php b/modules/carnet/fonts/VeraIt.php deleted file mode 100644 index 879e8bb..0000000 --- a/modules/carnet/fonts/VeraIt.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'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 b172197..0000000 Binary files a/modules/carnet/fonts/VeraIt.z and /dev/null differ 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 9ef6a31..0000000 Binary files a/modules/carnet/fonts/VeraMoBI.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraMoBd.php b/modules/carnet/fonts/VeraMoBd.php deleted file mode 100644 index 20a6c37..0000000 --- a/modules/carnet/fonts/VeraMoBd.php +++ /dev/null @@ -1,25 +0,0 @@ -928,'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 8aae085..0000000 Binary files a/modules/carnet/fonts/VeraMoBd.z and /dev/null differ 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 de24404..0000000 Binary files a/modules/carnet/fonts/VeraMoIt.z and /dev/null differ 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 4c6eb76..0000000 Binary files a/modules/carnet/fonts/VeraMono.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraSe.php b/modules/carnet/fonts/VeraSe.php deleted file mode 100644 index ba30529..0000000 --- a/modules/carnet/fonts/VeraSe.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=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 e228cce..0000000 Binary files a/modules/carnet/fonts/VeraSe.z and /dev/null differ diff --git a/modules/carnet/fonts/VeraSeBd.php b/modules/carnet/fonts/VeraSeBd.php deleted file mode 100644 index a2b4b8d..0000000 --- a/modules/carnet/fonts/VeraSeBd.php +++ /dev/null @@ -1,25 +0,0 @@ -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 b94115b..0000000 Binary files a/modules/carnet/fonts/VeraSeBd.z and /dev/null differ diff --git a/modules/email.php b/modules/email.php deleted file mode 100644 index a992963..0000000 --- a/modules/email.php +++ /dev/null @@ -1,702 +0,0 @@ - $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 -

    [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 . -} -