Florent Bruneau [Tue, 28 Sep 2010 09:04:14 +0000 (11:04 +0200)]
Add interface PlIteraface and the corresponding abstract class
PlAbstractIterable.
PlIterable aims at providing a common interface for the objects that can
produce a PlIterator. It extends PHP's IteratorAggregate that provides an
interface for producing a PHP's iterator.
PlAbstractIterable provides a default implementation for
IteratorAggregate::getIterator.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 28 Sep 2010 08:18:29 +0000 (10:18 +0200)]
Add tests for XDBFormat.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 28 Sep 2010 08:11:52 +0000 (10:11 +0200)]
Add PlIteratorUtils::foreachIterator() to build a PHP's Iterator from a
PlIterator.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Mon, 27 Sep 2010 08:26:10 +0000 (10:26 +0200)]
Directly invoke XDB::prepare() instead of using __autoload + call_user_func_array.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Mon, 27 Sep 2010 08:22:20 +0000 (10:22 +0200)]
Big cleanup of XDB.
* get rid of these annoying _ in member and method names
* introduces XDBFormat interface in order to allow objects to provide
their own formatting when used as a query argument.
* s/XorgDB/XDB/
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Riton [Fri, 24 Sep 2010 19:12:47 +0000 (21:12 +0200)]
Extracted PlSqlJoin out of PlFilter class file
Signed-off-by: Riton <henri.jouhaud@polytechnique.org>
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Riton [Thu, 23 Sep 2010 09:19:49 +0000 (11:19 +0200)]
Forgot to switch the constructor to protected
Signed-off-by: Riton <henri.jouhaud@polytechnique.org>
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Stéphane Jacob [Sat, 18 Sep 2010 15:58:09 +0000 (17:58 +0200)]
Prevents warnings in plwizard.tpl.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Florent Bruneau [Fri, 17 Sep 2010 12:34:44 +0000 (14:34 +0200)]
Don't allow empty flags.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Fri, 17 Sep 2010 12:34:24 +0000 (14:34 +0200)]
Merge remote branch 'origin/core-1.1.0' into core
Florent Bruneau [Fri, 17 Sep 2010 12:31:17 +0000 (14:31 +0200)]
Actual security fix id.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Fri, 17 Sep 2010 12:20:34 +0000 (14:20 +0200)]
Fix an error in permission handling: all pages where accessible without
admin permission.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Stéphane Jacob [Fri, 10 Sep 2010 12:23:16 +0000 (14:23 +0200)]
Prevents php warning when trying to retrieve a non-existing image (Closes #1146).
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Florent Bruneau [Thu, 9 Sep 2010 13:22:23 +0000 (15:22 +0200)]
Update ChangeLog
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Riton [Thu, 9 Sep 2010 12:54:30 +0000 (14:54 +0200)]
Made plat/al php5.3 compliant
- split => preg_split or explode
- handler(&$page) => handler($page)
- abstract static => interface
Signed-off-by: Riton <henri.jouhaud@polytechnique.org>
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Riton [Tue, 7 Sep 2010 15:33:18 +0000 (17:33 +0200)]
Switched PlImage's fields from private to protected
Signed-off-by: Riton <henri.jouhaud@polytechnique.org>
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Riton [Sat, 4 Sep 2010 14:54:49 +0000 (16:54 +0200)]
Inserted a pl_error field in the json responses
Signed-off-by: Riton <henri.jouhaud@polytechnique.org>
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Wed, 1 Sep 2010 19:21:33 +0000 (20:21 +0100)]
Minor fix on PlUser: declare the "email" field too.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Mon, 30 Aug 2010 12:25:55 +0000 (14:25 +0200)]
Define a range of debug flags available for "users" (ie clients of the
core).
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Mon, 23 Aug 2010 00:22:11 +0000 (02:22 +0200)]
Oops.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Sun, 22 Aug 2010 22:14:39 +0000 (00:14 +0200)]
Add "groups" to PlFilter.
Would return the list of (name, nb_res) for a given field
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 16 Aug 2010 22:11:19 +0000 (00:11 +0200)]
Update doc for PlSet to explain 'arg' functions
Rename the Smarty part of these for consistency.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 16 Aug 2010 21:42:06 +0000 (23:42 +0200)]
Add comments to plset.php, remove useless var from calls.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Stéphane Jacob [Sun, 8 Aug 2010 23:58:02 +0000 (01:58 +0200)]
Removes trailing spaces.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Raphaël Barrois [Sat, 7 Aug 2010 16:37:46 +0000 (18:37 +0200)]
Add a $page-> function for displaying a message and a "continue" link
For instance, "The following users have been added correctly; continue?"
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Stéphane Jacob [Tue, 27 Jul 2010 11:32:03 +0000 (13:32 +0200)]
Slightly modifies select_db_table plugin.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Stéphane Jacob [Sun, 25 Jul 2010 21:57:44 +0000 (23:57 +0200)]
Fixes use of an uninitialised variable in icon compiler.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Stéphane Jacob [Mon, 19 Jul 2010 21:19:57 +0000 (23:19 +0200)]
Prevents notice in skin templates.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Florent Bruneau [Fri, 2 Jul 2010 13:48:06 +0000 (15:48 +0200)]
Manage site errors using exceptions.
This has 3 main avantages:
- Error may not be fatal (e.g. a SQL error must not be fatal during the
execution of the unit tests)
- We can have the backtrace
- The same code handle all the kind of errors.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Thu, 1 Jul 2010 08:34:37 +0000 (10:34 +0200)]
Changelog for the next release.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Thu, 1 Jul 2010 08:24:34 +0000 (10:24 +0200)]
Should fix Recoverable Errors on wiki pages.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Wed, 30 Jun 2010 09:44:21 +0000 (11:44 +0200)]
Release time for the core.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Stéphane Jacob [Fri, 25 Jun 2010 07:51:52 +0000 (09:51 +0200)]
Prenvents '##' to be escaped to '' in SQL querries (Closes #1156).
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Pascal Corpet [Thu, 24 Jun 2010 20:28:15 +0000 (22:28 +0200)]
Enables sorting of option fields in table editor.
Pascal Corpet [Tue, 22 Jun 2010 21:08:25 +0000 (23:08 +0200)]
Fix table editor : edit entry with id = 0 doesn't mean add a new entry
Florent Bruneau [Sat, 19 Jun 2010 09:22:46 +0000 (11:22 +0200)]
Add PlMailer::setTo() (thus making PlMailer reusable).
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Pascal Corpet [Tue, 15 Jun 2010 22:32:08 +0000 (00:32 +0200)]
When force_login doesn't work, auth will fail
Pascal Corpet [Tue, 15 Jun 2010 20:29:48 +0000 (22:29 +0200)]
MMList : adds a method to replace email in all lists where it is used
Pascal Corpet [Sun, 13 Jun 2010 20:57:41 +0000 (22:57 +0200)]
Try not to return empty email if you can find one
Pascal Corpet [Sun, 6 Jun 2010 23:12:56 +0000 (01:12 +0200)]
small hack to return by ref
Pascal Corpet [Sun, 6 Jun 2010 20:36:01 +0000 (22:36 +0200)]
Add optional fields listing from other tables in table editor.
Florent Bruneau [Sat, 5 Jun 2010 16:51:43 +0000 (18:51 +0200)]
Update ChangeLog
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 5 Jun 2010 16:47:38 +0000 (18:47 +0200)]
Should fix a long standing bug preventing mail with accentuated From to be
sent and generating corrupted To/Cc headers. Close #1073.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Pascal Corpet [Sat, 5 Jun 2010 12:52:15 +0000 (14:52 +0200)]
Fixes message when adding a new entry with tableeditor. Closes #1022.
Signed-off-by: Pascal Corpet <pascal.corpet@m4x.org>
Florent Bruneau [Sat, 5 Jun 2010 12:45:47 +0000 (14:45 +0200)]
Implements __unset on PlUser.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 1 Jun 2010 20:22:03 +0000 (22:22 +0200)]
Fix quoted-printable encoder when the subject contains a '?'
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Pascal Corpet [Sun, 30 May 2010 12:16:45 +0000 (14:16 +0200)]
fix HTML validation
Pascal Corpet [Sat, 29 May 2010 08:44:37 +0000 (10:44 +0200)]
fix toggledesc in PlFilterOrder. Fixes all order bugs in PlSets
Raphaël Barrois [Fri, 28 May 2010 10:37:23 +0000 (12:37 +0200)]
Fix problem with PlParallelIteratorUtils (Closes #1056)
Bug when a subiterator comes to its end.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Wed, 26 May 2010 08:26:02 +0000 (10:26 +0200)]
Fix date formatting
PHP has a libc-like formatting, which support only dates between 1901 and
2038 ; and another one, which doesn't support that formatting...
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Sun, 16 May 2010 20:24:26 +0000 (22:24 +0200)]
Flatten PFC_NChildren arguments.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Fri, 7 May 2010 17:56:36 +0000 (19:56 +0200)]
Fix UTs for make_datetime
PHP can't make a difference between two DateTime with different
values...
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Fri, 7 May 2010 13:01:23 +0000 (15:01 +0200)]
Add new function for parsing dates
* reads from DateTime / string / int objects
* replaces code in modifier.date_format
* complete with UTs :P
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Fri, 26 Mar 2010 11:15:47 +0000 (12:15 +0100)]
Allow for default "assert" error message.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Sat, 1 May 2010 13:37:49 +0000 (15:37 +0200)]
Non-fatal SQL errors when running unit tests.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Wed, 28 Apr 2010 19:40:53 +0000 (21:40 +0200)]
Add pl_flatten to transform arrays containing other arrays into a flat
array containing only non-array items.
e.g.:
array(array(1), 2) -> array(1, 2)
Stéphane Jacob [Thu, 22 Apr 2010 08:59:06 +0000 (10:59 +0200)]
Adds timestamp in SQL errors (Closes #1031).
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Florent Bruneau [Sat, 17 Apr 2010 20:19:03 +0000 (22:19 +0200)]
Add basic tests of the platal engine.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sun, 11 Apr 2010 09:37:29 +0000 (11:37 +0200)]
Partially rewrites the Platal engine.
This rewrites aims at providing a better API to:
* include support for %grp directly in the engine (no more hack required
in Xnet classes).
* Factorize code and makes code easier to understand.
* Improves hook lookup performances (O(strlen(path) instead of
O(hook_count * strlen(path)).
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 10 Apr 2010 15:56:38 +0000 (17:56 +0200)]
PlSet provides the keys of the set in smarty.
Also fix a minor warning.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Mon, 22 Mar 2010 15:02:25 +0000 (16:02 +0100)]
Modify PlSet to allow for custom PlFilter getters
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Thu, 18 Mar 2010 20:45:30 +0000 (21:45 +0100)]
Add PlEmptyIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Sun, 21 Mar 2010 21:37:31 +0000 (22:37 +0100)]
Load XDB to workaround a segfault in PHP.
call_user_func_array(array('XDB', 'format'), $params); leads to a crash of
PHP when XDB has not been loaded.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sun, 21 Mar 2010 20:35:54 +0000 (21:35 +0100)]
Fix issues with logger instantiation.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sun, 21 Mar 2010 19:11:31 +0000 (20:11 +0100)]
Let say this is a 'typo'.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sun, 21 Mar 2010 12:55:16 +0000 (13:55 +0100)]
session, page, globals and logger are built using factories.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 20 Mar 2010 15:57:16 +0000 (16:57 +0100)]
Should avoid the user object to be rebuild on each page.
Warning: not sure at all this is a good idea: you have to invalidate the
object stored in the session (if any) if you want to reload a parameter
(like the display name).
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 20 Mar 2010 15:00:39 +0000 (16:00 +0100)]
Cleanup bug submission form.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 20 Mar 2010 13:59:37 +0000 (14:59 +0100)]
Fix support for wiki hooks.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 20 Mar 2010 13:51:12 +0000 (14:51 +0100)]
Add possibility to declare wiki hooks.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Tue, 16 Mar 2010 11:13:35 +0000 (12:13 +0100)]
Fixes detection of a "single" callback given to PlParallelIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Tue, 16 Mar 2010 11:04:55 +0000 (12:04 +0100)]
Add ut for PlParallelIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Tue, 16 Mar 2010 01:53:24 +0000 (02:53 +0100)]
Fixes PlSubIterator according to unit tests...
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Tue, 16 Mar 2010 00:18:56 +0000 (01:18 +0100)]
Add unit tests for callbacks and PlSubIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 15 Mar 2010 12:22:23 +0000 (13:22 +0100)]
Add PlParallelIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 15 Mar 2010 12:21:37 +0000 (13:21 +0100)]
Fixes PlSubIterator
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Sun, 14 Mar 2010 09:46:29 +0000 (10:46 +0100)]
Full coverage of PlDict by unit tests.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sun, 14 Mar 2010 09:09:59 +0000 (10:09 +0100)]
Use assertSame instead of assertEquals because we need to be sure the type
has not been altered.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 13 Mar 2010 21:50:39 +0000 (22:50 +0100)]
PlHeap::iterator returns a flat array iterator.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 13 Mar 2010 21:50:15 +0000 (22:50 +0100)]
Add tests to cover PlHeap and PlMergeIterator.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 13 Mar 2010 21:28:38 +0000 (22:28 +0100)]
Simplify (and fix) PlFilterIterator.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 13 Mar 2010 21:27:20 +0000 (22:27 +0100)]
More unit tests.
New tests fully cover:
* array iterator
* filter/map iterator
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Thu, 11 Mar 2010 10:10:41 +0000 (11:10 +0100)]
Cleaner: don't hide syntax errors.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Thu, 11 Mar 2010 10:04:33 +0000 (11:04 +0100)]
Improves unit testing.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 9 Mar 2010 21:44:57 +0000 (22:44 +0100)]
Add make test.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 9 Mar 2010 21:21:28 +0000 (22:21 +0100)]
Basic tests of array iterator (need more tests).
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 9 Mar 2010 21:09:39 +0000 (22:09 +0100)]
Add XDB escaping unit tests.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Tue, 9 Mar 2010 21:09:14 +0000 (22:09 +0100)]
Add basic include for unit tests.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Mon, 8 Mar 2010 15:22:48 +0000 (16:22 +0100)]
Fix problem in PlIteratorUtils
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 8 Mar 2010 01:00:38 +0000 (02:00 +0100)]
Add PlIteratorUtils::getObjectProperty callback
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Raphaël Barrois [Mon, 8 Mar 2010 00:57:50 +0000 (01:57 +0100)]
Bugfix in PlIteratorUtils::getArrayValueCallback
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Florent Bruneau [Sat, 6 Mar 2010 21:36:19 +0000 (22:36 +0100)]
Makes compilation error debugging easier.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 6 Mar 2010 21:15:50 +0000 (22:15 +0100)]
Dumb implementation of missing PlSubIterator::first().
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Sat, 6 Mar 2010 18:20:41 +0000 (19:20 +0100)]
XDB::escaped use XDB::formatArray format to format array arguments.
What does this mean?
XDB::format('blah in {?}', $array);
is now the same as previous notation:
'blah in ' . XDB::formatArray($array);
WARNING: this might breaks some pieces of code where previous
serialisation of arrays was used.
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Florent Bruneau [Fri, 5 Mar 2010 22:02:16 +0000 (23:02 +0100)]
API changes on PlSqlJoin in order to simplify its usage.
New PlSqlJoin are built using factory functions (PlSqlJoin::left,
PlSqlJoin::right, PlSqlJoin::inner). The factories takes 2 arguments:
* a table name
* a XDB query format and its parameters
Example:
$join = PlSqlJoin::left('table', 'blah = {?} AND truc = {?}',
$param1, $param2);
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
Raphaël Barrois [Tue, 2 Mar 2010 22:37:05 +0000 (23:37 +0100)]
Fix problem with bounds in MultipageView
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Stéphane Jacob [Tue, 2 Mar 2010 20:20:11 +0000 (21:20 +0100)]
No need to fetch bounds if they are not required.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Stéphane Jacob [Tue, 2 Mar 2010 17:58:56 +0000 (18:58 +0100)]
Renames user_id to uid accordingly to our naming convention.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Stéphane Jacob [Mon, 1 Mar 2010 15:03:52 +0000 (16:03 +0100)]
Fixes bounds display on multipage view.
Signed-off-by: Stéphane Jacob <sj@m4x.org>
Bernardo Freitas Paulo da Costa [Sun, 28 Feb 2010 18:18:38 +0000 (19:18 +0100)]
Typo file->line
Signed-off-by: Bernardo Freitas Paulo da Costa <bernardo.da-costa@m4x.org>