Changeset 952

Show
Ignore:
Timestamp:
02/16/06 19:42:00 (7 years ago)
Author:
max-horvath
Message:

"2006-02-16 Max Horvath <max.horvath@…>

  • added full PHPdoc documentation to Mail class
  • added more temporary-email-address-providers to the black-list
  • Login site now uses a Smarty template to render HTML page
  • Refactored signup site - now it also includes the help toolbox
  • removed Phlickr directory in /lib dir as Phlickr must be installed via PEAR
  • modified gen.sh to include new template folders for the translation file generation"
Location:
trunk/wifidog-auth
Files:
20 modified

Legend:

Unmodified
Added
Removed
  • trunk/wifidog-auth/CHANGELOG

    r947 r952  
     12006-02-16 Max Horváth <max.horvath@maxspot.de> 
     2    * added full PHPdoc documentation to Mail class 
     3    * added more temporary-email-address-providers to the black-list 
     4        * Login site now uses a Smarty template to render HTML page 
     5        * Refactored signup site - now it also includes the help toolbox 
     6        * removed Phlickr directory in /lib dir as Phlickr must be installed via 
     7          PEAR 
     8        * modified gen.sh to include new template folders for the 
     9          translation file generation 
     10 
    1112006-02-15 Max Horváth <max.horvath@maxspot.de> 
    212        * Login site now uses a Smarty template to render HTML page 
     
    919        * in an attemp to enter the administration interface of WiFiDog and not 
    1020          being logged in you'll be redirected to the administration interface after 
    11           a successful login, if you are an admin or owner of a node. This only works 
    12           for a virtual login, as it isn't needed to be done when logging in via a 
    13           WiFiDog node (then you have to login anyway on the splash page first) 
     21          a successful login, if you are an admin or owner of a node. This only 
     22          works for a virtual login, as it isn't needed to be done when logging in 
     23          via a WiFiDog node (then you have to login anyway on the splash page 
     24          first) 
    1425        * fixed preview of network in administration interface as content for a 
    1526          network as is isn't available in the code, yet 
     
    21322006-02-07 Benoit Grégoire  <bock@step.polymtl.ca> 
    2233        * Fix a bunch of file inclusion bugs in the statistics subsystem. 
    23           This is only a ad-hac fix. It seems the requires for just about every class 
    24           have been stripped off. This must be fixed, all classes should require_once 
    25           all classes or include that they need that isn't included by a parent class. 
     34          This is only a ad-hac fix. It seems the requires for just about every 
     35          class have been stripped off. This must be fixed, all classes should 
     36          require_once all classes or include that they need that isn't included by 
     37          a parent class. 
    2638 
    27392006-02-06 Benoit Grégoire  <bock@step.polymtl.ca> 
    2840        * wifidog/local_content/default/hotspot_logo.jpg: Delete deprecated file 
    29         * wifidog/local_content/default/hotspot_logo_banner.jpg: Delete deprecated file 
     41        * wifidog/local_content/default/hotspot_logo_banner.jpg: Delete deprecated 
     42          file 
    3043 
    31442006-02-04 Max Horváth <max.horvath@maxspot.de> 
     
    5770 
    58712006-01-31 Benoit Grégoire  <bock@step.polymtl.ca> 
    59         * path_defines_base.php:  Fix syntax errors in the exception thrown.  Add more meaningfull output 
     72        * path_defines_base.php:  Fix syntax errors in the exception thrown. Add 
     73          more meaningfull output 
    6074 
    61752006-01-29 Max Horváth <max.horvath@maxspot.de> 
     
    8195 
    82962006-01-24 Benoit Grégoire  <bock@step.polymtl.ca> 
    83         * Dependencies.php:  We missed one more instance of non-unifrom code for path detection. 
    84         The Dependencies class now uses the code in include/path_defines_base.php like the rest of the system. 
    85         Also make it return more usefull error messages. 
    86         * SmartyWifidog.php:  Output the error returned by Dependencies if Smarty cannot be found for some reason. 
     97        * Dependencies.php:  We missed one more instance of non-unifrom code for 
     98          path detection. The Dependencies class now uses the code in 
     99          include/path_defines_base.php like the rest of the system. Also make it 
     100          returns more usefull error messages. 
     101        * SmartyWifidog.php: Output the error returned by Dependencies if Smarty 
     102      cannot be found for some reason. 
    87103 
    881042006-01-23 Max Horváth <max.horvath@maxspot.de> 
     
    91107          the fly now, in the future we'll be generating a nightly PHPdoc on 
    92108          wifidog.org 
    93         * renamed "ChangeLog" to CHANGELOG, resulting this file being parsed by PHPdoc 
     109        * renamed "ChangeLog" to CHANGELOG, resulting this file being parsed by 
     110          PHPdoc 
    94111        * moved "header.gif" image to its own folder in the images directory 
    95112        * touched almost every PHP file in WiFiDog auth server for PHPdoc generating 
     
    101118 
    1021192006-01-22 Benoit Grégoire  <bock@step.polymtl.ca> 
    103         * common.php:  Real fix for Ticket #59 ;) 
    104         * common.php:  Untested fix for Ticket #59 
     120        * common.php: Real fix for Ticket #59 ;) 
     121        * common.php: Untested fix for Ticket #59 
    105122 
    1061232006-01-18 François Proulx <francois.proulx@gmail.com> 
    107         * Remove unneeded .cvsignore files since ths svn:ignore property is set to the same list 
     124        * Remove unneeded .cvsignore files since the svn:ignore property is set to 
     125          the same list 
    108126 
    1091272006-01-11 Rob Janes <janes.rob@gmail.com> 
    110     * classes/User.php: added setters, getters, throw exceptions, added refresh() subr, tweaked language 
     128    * classes/User.php: added setters, getters, throw exceptions, added 
     129      refresh() subr, tweaked language 
    111130 
    1121312006-01-09 Max Horváth <max.horvath@maxspot.de> 
     
    114133 
    1151342006-01-08 Benoit Grégoire  <bock@step.polymtl.ca> 
    116         * common.php:  Improve path detection code, and start moving PATH detection back to a central location. 
    117         You should NEVER go to any $_SERVER[] variables for path related stuff, all you need is already available 
    118          in defines. 
    119         * UserReport.php:  Remove dangling reference to BASEPATH. 
    120         * install.php:  Use centralised path detection. 
     135        * common.php: Improve path detection code, and start moving PATH detection 
     136          back to a central location. You should NEVER go to any $_SERVER[] 
     137          variables for path related stuff, all you need is already available 
     138          in defines. 
     139        * UserReport.php: Remove dangling reference to BASEPATH. 
     140        * install.php: Use centralised path detection. 
    121141 
    1221422006-01-04 Benoit Grégoire  <bock@step.polymtl.ca> 
    123         * config.php, common.php:  Completely remove SYSTEM_PATH from config.php, making one less config option to manage.  It is now autodetected. 
     143        * config.php, common.php: Completely remove SYSTEM_PATH from config.php, 
     144          making one less config option to manage.  It is now autodetected. 
    124145 
    1251462006-01-03 Rob Janes <janes.rob@gmail.com> 
     
    135156 
    1361572006-01-04 Pascal Leclerc <isf@plec.ca> 
    137     * install.php : New security validation and small bugs fix in admin account creation 
     158    * install.php: New security validation and small bugs fix in admin account 
     159      creation 
    138160 
    1391612006-01-02 Rob Janes <janes.rob@gmail.com> 
     
    158180 
    1591812005-12-28 Max Horváth <max.horvath@maxspot.de> 
    160         * Removed BASEPATH define from source - resulting in a better require-overview 
     182        * Removed BASEPATH define from source - resulting in a better 
     183          require-overview 
    161184        * speed improvement of 7% by optimizing Dependencies class 
    162185        * improved documentation of content classes 
     
    1641872005-12-26 François Proulx <francois.proulx@gmail.com> 
    165188        * Fixed bug when the same user was owner of many nodes 
    166         * Added missing reference to content_display_location initial data in dump script 
     189        * Added missing reference to content_display_location initial data in dump 
     190          script 
    167191 
    1681922005-12-26 François Proulx <francois.proulx@gmail.com> 
     
    171195        * Fully translated FormSelectGenerator class, Locale 
    172196        * Added comments to Utils, Locale etc.. 
    173         * Fully tested installation from scratch using blank database with installation script 
     197        * Fully tested installation from scratch using blank database with 
     198          installation script 
    174199        * Improved installation script a bit 
    175200        * Synched SQL for CVS schema 29 --> 33 
     
    180205        * added PhpDocumentor documentation 
    181206        * added WiFiDog skin to HTMLeditor 
    182         * language selection in a content class now shows the language name instead of 
    183           the language code 
     207        * language selection in a content class now shows the language name instead 
     208          of the language code 
    184209        * added caching support to content classes Langstring and TrivialLangstring 
    185210 
    1862112005-12-15 Max Horváth <max.horvath@maxspot.de> 
    187         * fixed bug in dependencies class when gettext support for PHP is not available 
     212        * fixed bug in dependencies class when gettext support for PHP is not 
     213          available 
    188214 
    1892152005-12-14 Max Horváth <max.horvath@maxspot.de> 
     
    193219        * added FCKeditor to the supported libraries 
    194220        * added new content type: HTMLeditor 
    195         * added new caching class which uses PEAR::Cache_Lite - must be enabled in config.php 
     221        * added new caching class which uses PEAR::Cache_Lite - must be enabled in 
     222          config.php 
    196223        * HTMLeditor is the first class using the new caching class 
    197224        * removed unused function from content type Langstring 
    198         * beautified and reorganized config.php and added a new switch for the caching class 
     225        * beautified and reorganized config.php and added a new switch for the 
     226          caching class 
    199227 
    2002282005-12-06 Max Horváth <max.horvath@maxspot.de> 
     
    208236 
    2092372005-11-30 Benoit Grégoire  <bock@step.polymtl.ca> 
    210         * User.php: Fix a bug in the sql query in isUserValid().  Checked that the change works with postgresql 7.4 and 8. 
    211         It is still not understood why ISF doesn't encounter this bug on it's production server. 
     238        * User.php: Fix a bug in the sql query in isUserValid(). Checked that the 
     239          change works with postgresql 7.4 and 8. It is still not understood why 
     240          ISF doesn't encounter this bug on it's production server. 
    212241 
    2132422005-11-28 François Proulx <francois.proulx@gmail.com> 
     
    2302592005-11-11 François Proulx <francois.proulx@gmail.com> 
    231260        * Fixed Admin hotspot location map 
    232         * Take note : Google Maps updated their API key system, so that you simply need to register a key for the whole domain. 
     261        * Take note: Google Maps updated their API key system, so that you simply 
     262          need to register a key for the whole domain. 
    233263          ie. one key for http://auth.abc.org will work even in sub-directories 
    234         * Changed the Content classes structure to make them "pluggable" more easily. 
     264        * Changed the Content classes structure to make them "pluggable" more easily 
    235265          as requested during last developpers meeting 
    236         * node_list.php now support column sorting, node_id are naturally sorted (numerical order, alphabetic) 
     266        * node_list.php now support column sorting, node_id are naturally sorted 
     267          (numerical order, alphabetic) 
    237268        * Added 2-dimensionnal natural sort algorithm to Utils class 
    238269        * fixed Node::getSelectNodeUI to naturally sort by node_id 
     
    2472782005-11-01 Max Horváth <max.horvath@maxspot.de> 
    248279        * added german translation 
    249         * modified gen.sh to include geocoder and statistics classes for the translation 
    250           file generation 
     280        * modified gen.sh to include geocoder and statistics classes for the 
     281          translation file generation 
    251282        * modified hotspot status page to allow translations of every string 
    252283        * modified node list page to allow translations of every string 
    253284        * modified FAQ page to allow translations of every string 
    254         * fixed bug in FAQ page which caused the Safari browser to display very large 
    255           text 
    256         * modified online users page in administration to allow translations of every 
    257           string 
     285        * fixed bug in FAQ page which caused the Safari browser to display very 
     286          large text 
     287        * modified online users page in administration to allow translations of 
     288          every string 
    258289        * added Phlickr directory to /lib 
    259290 
     
    267298 
    2682992005-10-24 Benoit Grégoire  <bock@step.polymtl.ca> 
    269         * AuthenticatorRadius:  Fix bug reported by kouete, by inspection.  Fix not actually tested. 
    270          Guys, read the documentation of the function parameters when you code, it's there to help you ;) 
     300        * AuthenticatorRadius:  Fix bug reported by kouete, by inspection. Fix not 
     301          actually tested. Guys, read the documentation of the function parameters 
     302          when you code, it's there to help you ;) 
    271303 
    2723042005-10-21 Francois Proulx <francois.proulx@gmail.com> 
     
    287319 
    2883202005-10-06 Benoit Grégoire  <bock@step.polymtl.ca> 
    289         * AuthenticatorLocalUserNoSignup:  Make a new authenticator, identical to AuthenticatorLocalUser 
    290          but disalowing new user signup.  When setting up a server, you can add your users, and then change 
    291          the authenticator class from AuthenticatorLocalUser to AuthenticatorLocalUserNoSignup 
    292         * signup.php:  Actually enforce it.  Still needs improvement, as the network is still shown for signing up. 
     321        * AuthenticatorLocalUserNoSignup:  Make a new authenticator, identical to 
     322          AuthenticatorLocalUser but disalowing new user signup.  When setting up 
     323          a server, you can add your users, and then change the authenticator class 
     324          from AuthenticatorLocalUser to AuthenticatorLocalUserNoSignup 
     325        * signup.php: Actually enforce it. Still needs improvement, as the network 
     326          is still shown for signing up. 
    293327 
    2943282005-10-04 Francois Proulx <francois.proulx@gmail.com> 
     
    3003342005-10-04 Benoit Grégoire  <bock@step.polymtl.ca> 
    301335        * Remove a bunch of deprecated methods from the Node object, 
    302          document undocumented methods. 
    303         * Make the node id editable.  This allows the gateway "MAC address as node ID" 
    304          patch by London wireless to be usable with the standard auth server, and to 
    305          transition to using MAC address as node ID. 
     336          document undocumented methods. 
     337        * Make the node id editable.  This allows the gateway "MAC address as node 
     338          ID" patch by London wireless to be usable with the standard auth server, 
     339          and to transition to using MAC address as node ID. 
    306340        * Fix a saving problem with all the content types with some versions of PHP 
    307         * Add a new Content type:  IFrameRest.  This allows the result of a REST style query 
    308         returning HTML to be displayed in a HTML iframeset.  Currently supported are 
    309         substitution of the node_id, the user_id and the last display date in the get query. 
    310         * CVS version of the auth server should now be "reasonnably" safe to use in production, 
    311         so the 2005-09-01 notice is no longuer in effect. 
     341        * Add a new Content type:  IFrameRest.  This allows the result of a REST 
     342          style query returning HTML to be displayed in a HTML iframeset. Currently 
     343          supported are substitution of the node_id, the user_id and the last 
     344          display date in the get query. 
     345        * CVS version of the auth server should now be "reasonnably" safe to use in 
     346          production, so the 2005-09-01 notice is no longuer in effect. 
    312347 
    3133482005-10-04 Francois Proulx <francois.proulx@gmail.com> 
     
    3193542005-09-27 Philippe April  <philippe@ilesansfil.org> 
    320355        * Guess the best language from what the browser sends, 
    321         otherwise use the default. 
     356          otherwise use the default. 
    322357 
    3233582005-09-26 Francois Proulx <francois.proulx@gmail.com> 
     
    325360 
    3263612005-09-26 Benoit Grégoire  <bock@step.polymtl.ca> 
    327         * login/index.php, stylesheet.css:  Make the create new account bigger, and remove unnecessary words. 
     362        * login/index.php, stylesheet.css:  Make the create new account bigger, and 
     363          remove unnecessary words. 
    328364 
    3293652005-09-26 Francois Proulx <francois.proulx@gmail.com> 
     
    3413772005-09-25 Benoit Grégoire  <bock@step.polymtl.ca> 
    342378        * Statistics:  At long last, the monster statistics commit. 
    343          We finally have a stable, documented and uniform codebase for statistics. 
    344          This resulted is removal of several functions in other classes too. 
    345          There are a few new reports, but mostly, each report is a lot more flexible. 
    346          Still TODO: 
    347          -Security:  This is to be implemented directly in the Statistics class, 
    348           by forcing restrictions to the selected nodes and network. 
    349          -Support selecting multiple users for a report. 
    350           The code and SQL queries support it, but the UI doesn't. 
    351           An easy and quick way would be to simply parse a coma-separated list. 
    352          Comment are off course welcome! 
     379          We finally have a stable, documented and uniform codebase for statistics. 
     380          This resulted is removal of several functions in other classes too. 
     381          There are a few new reports, but mostly, each report is a lot more 
     382          flexible. 
     383          Still TODO: 
     384          - Security:  This is to be implemented directly in the Statistics class, 
     385            by forcing restrictions to the selected nodes and network. 
     386          - Support selecting multiple users for a report. 
     387            The code and SQL queries support it, but the UI doesn't. An easy and 
     388            quick way would be to simply parse a coma-separated list. Comment are 
     389            off course welcome! 
    353390 
    3543912005-09-25 Francois Proulx <francois.proulx@gmail.com> 
    355392        * Updated initial SQL script to schema 29 
    356         * Remove useless includes in some files, preventing from using the "plugin" contents 
     393        * Remove useless includes in some files, preventing from using the "plugin" 
     394          contents 
    357395 
    3583962005-09-25 Philippe April  <philippe@ilesansfil.org> 
    359397        * Make method getCurrentRealNode ORDER BY DESC so it picks 
    360         up the latest network name 
     398          up the latest network name 
    361399 
    3624002005-09-20 Francois Proulx <francois.proulx@gmail.com> 
     
    3764142005-09-16 Francois Proulx <francois.proulx@gmail.com> 
    377415        * Added Mail Classes to circumvent mb_send_mail UTF-8 problems 
    378         * This class provides UTF-8 mailing for validation e-mail, lost password, lost username... 
    379         * Fixes reported bug where users would not receive validation email on some servers 
     416        * This class provides UTF-8 mailing for validation e-mail, lost password, 
     417          lost username... 
     418        * Fixes reported bug where users would not receive validation email on 
     419          some servers 
    380420 
    3814212005-09-13 Francois Proulx <francois.proulx@gmail.com> 
     
    389429 
    3904302005-09-12 Benoit Grégoire  <bock@step.polymtl.ca> 
    391         * schema_validate.php:  Fix a bug version 26.  The conversion of the old account_origin as a parameter 
    392         to the authenticator was wrong.  To fix it manually if you already ran the script, 
    393          you must quote the parameter in column network_authenticator_params in the networks table. 
     431        * schema_validate.php:  Fix a bug version 26.  The conversion of the old 
     432          account_origin as a parameter to the authenticator was wrong.  To fix it 
     433          manually if you already ran the script, you must quote the parameter in 
     434          column network_authenticator_params in the networks table. 
    394435        * Network.php:  Fix improper quoting of Authenticator arguments. 
    395436        * RssPressReview.php:  Make expansion of today's item optionnal. 
     
    404445        * Fixed Flickr support 
    405446        * Now using PEAR version of Phlickr 
    406         * Download the latest package and install like this : pear install PhlickrXYZ.tar.gz 
     447        * Download the latest package and install like this: pear install 
     448          PhlickrXYZ.tar.gz 
    407449 
    4084502005-09-10 Francois Proulx <francois.proulx@gmail.com> 
     
    4204622005-09-10 Philippe April  <philippe@ilesansfil.org> 
    421463        * signup.php: Fixed bug in detecting is the user is already part of the 
    422         network. 
     464          network. 
    423465        * classes/{Authenticator,Network,Node}.php: isset, and issues preventing 
    424         users from logging out. 
     466          users from logging out. 
    425467        * add BASEPATH to most files with require_once 
    426468        * Added dependency checking class 
     
    4304722005-09-10 Francois Proulx <francois.proulx@gmail.com> 
    431473        * Automatically redirect user to login form when trying to access admin 
    432         * Added various isset, empty tests, vars init in stats (to avoid php warning) 
     474        * Added various isset, empty tests, vars init in stats (to avoid PHP 
     475          warning) 
    433476 
    4344772005-09-08 Philippe April  <philippe@ilesansfil.org> 
     
    449492 
    4504932005-09-07 Benoit Grégoire  <bock@step.polymtl.ca> 
    451         * RssPressReview.php:  Fix z-index so the hovers will overlap the expanded news. 
    452         * login/index.php:  Reorganise code to make it more legible and comment what it does. 
    453         Emphasise error messages and put them right above where they clicked so users can actually see them. 
     494        * RssPressReview.php:  Fix z-index so the hovers will overlap the expanded 
     495          news. 
     496        * login/index.php:  Reorganise code to make it more legible and comment what 
     497          it does. Emphasise error messages and put them right above where they 
     498          clicked so users can actually see them. 
    454499        * Security.php:  Remove deprecated login code 
    455500        * Authenticator.php: Change calling convention for better encapsulation 
    456         * New feature:  Support multiple simultaneous logins if enabled in network configuration 
     501        * New feature:  Support multiple simultaneous logins if enabled in network 
     502          configuration 
    457503        * New feature (in testing): Splash-only node support 
    458504 
    4595052005-09-05 Benoit Grégoire  <bock@step.polymtl.ca> 
    460         * include/common.php:  Add code to undo the effect of magic_quote if enabled in the server config.  It is still strongly recommended to disable magic_quote 
     506        * include/common.php:  Add code to undo the effect of magic_quote if enabled 
     507          in the server config.  It is still strongly recommended to disable 
     508          magic_quote 
    461509        * Node.php:  Add UI for splash only node and custom portal 
    462510        * Update schema 
     
    477525        Use the release tagged 1.0m1 in production. 
    478526        * Network abstraction mostly complete, including UI. 
    479         All that is missing is new network creation, network stakeholder UI and testing. 
     527          All that is missing is new network creation, network stakeholder UI and 
     528          testing. 
    480529        * Cleanup the config file of all the now unneeded constants. 
    481          Note that the install script is currently broken. 
    482         There can now be multiple networks on the server. 
    483         The install script will have to make sure that there is at least one, with one super-admin 
     530          Note that the install script is currently broken. 
     531          There can now be multiple networks on the server. 
     532          The install script will have to make sure that there is at least one, with 
     533          one super-admin 
    484534 
    4855352005-08-31 Francois Proulx <francois.proulx@gmail.com> 
    486         * Fixed bug where node ID containing periods, whitespaces or underscores would confuse PHP 
     536        * Fixed bug where node ID containing periods, whitespaces or underscores 
     537          would confuse PHP 
    487538        * MD5 hash is used to make sur the http vars are unique 
    488539        * This is only valid for Node administration 
     
    4985492005-08-29 Philippe April <philippe@ilesansfil.org> 
    499550        * js/gmaps_hotspots_status_map.js: Fixed small bug in that makes prevents 
    500         IE to see the map properly. 
     551          IE to see the map properly. 
    501552 
    5025532005-08-22 Pascal Leclerc  <pascal@plec.ca> 
    503554        * install.php, Change javascript to OnClick + dependencie note 
    504555        * schema_validate.php, Fix broken DB update for install.php 
    505         * SmartyWifidog.php, Add automatic redirect to install.php if Smarty not installed 
     556        * SmartyWifidog.php, Add automatic redirect to install.php if Smarty not 
     557          installed 
    506558 
    5075592005-08-22 Francois Proulx <francois.proulx@gmail.com> 
     
    510562 
    5115632005-08-21 Francois Proulx <francois.proulx@gmail.com> 
    512         * Added reference to new street address fields in mapping page and on status template 
     564        * Added reference to new street address fields in mapping page and on status 
     565          template 
    513566        * Fix bug on line 756 of RssPressReview , added check for empty var. 
    514567        * Flickr support is broken, added  bug to sf.net tracker 
     
    522575        * New schema version 
    523576        * install.php, tmp/magpie_cache/:  Move all magpie caches 
    524         to a central location, adjust install script to match. 
    525         * classes/MainUI.php:  Add $_REQUEST array output if debug_request is set as a parameter to the page 
    526         * classes/Network.php, classes/Node.php:  Change content ordering to be most recently subscribed first, 
    527          this is a stopgap measure while waiting for Content ordering to be explicitely settable. 
     577          to a central location, adjust install script to match. 
     578        * classes/MainUI.php:  Add $_REQUEST array output if debug_request is set as 
     579          a parameter to the page 
     580        * classes/Network.php, classes/Node.php:  Change content ordering to be most 
     581          recently subscribed first, this is a stopgap measure while waiting for 
     582          Content ordering to be explicitely settable. 
    528583        * classes/Content/RssAggregator.php:  Full admin UI, some bug fixes 
    529         * lib/RssPressReview/RssPressReview.php: New version, adds isFeedAvailable() and getFeedTitle() methods. 
     584        * lib/RssPressReview/RssPressReview.php: New version, adds isFeedAvailable() 
     585          and getFeedTitle() methods. 
    530586          Fixes minor bugs 
    531587 
    5325882005-08-17 Pascal Leclerc  <pascal@plec.ca> 
    533         * Added install script + minor changes in schema_validate.php 
     589    * Added install script + minor changes in schema_validate.php 
    534590 
    5355912005-08-15 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    5385942005-08-15 Benoit Grégoire  <bock@step.polymtl.ca> 
    539595        * Run sync_sql_for_cvs.sh 
    540         * sql/dump_initial_data_postgres.sh:  Fix a hardcoded reference to rss_url which no longer exists 
     596        * sql/dump_initial_data_postgres.sh:  Fix a hardcoded reference to rss_url 
     597          which no longer exists 
    541598        * .project:  Remove mistakenly commited file in last commit 
    542599        * .cvsignore:  Add file to avoid previous error 
     
    551608        * Changed config.php GMAPS_API_KEY to GMAPS_PUBLIC_API_KEY 
    552609        * Added GMAPS_ADMIN_API_KEY, needed for admin UI 
    553         * This is a stupid limitation of the Google Maps API which matches the complete URL path 
     610        * This is a stupid limitation of the Google Maps API which matches the 
     611          complete URL path 
    554612        * Added /classes/GisPoint.php class 
    555613        * Will add geocode + Google Maps capabilities very soon 
    556614        * Notice : the XML schema will change very soon... 
    557         * I will try to keep the streetAddress field intact so I won't break backward compat. 
     615        * I will try to keep the streetAddress field intact so I won't break 
     616          backward compat. 
    558617 
    5596182005-08-12 Benoit Grégoire  <bock@step.polymtl.ca> 
    560         * classes/MainUI.php: Move the call to schema_validate() in MainUI's constructor 
    561         * lib/RssPressReview/RssPressReview.php: Finish rewrite. Move there to reflect 
    562         it's independently maintained status 
     619        * classes/MainUI.php: Move the call to schema_validate() in MainUI's 
     620          constructor 
     621        * lib/RssPressReview/RssPressReview.php: Finish rewrite. Move there to 
     622          reflect it's independently maintained status 
    563623        * wifidog/classes/Content/HotspotRss.php:  Delete the class, obsolete 
    564         * wifidog/classes/Content/RssAggregator.php:  Functionnal, but needs it's admin UI written. 
    565         * wifidog/include/schema_validate.php:  Create the table structure for the new RssAggregator. 
    566         Remove rss_url in nodes table, no longer needed.  Move it's data to the new Content class. 
     624        * wifidog/classes/Content/RssAggregator.php:  Functionnal, but needs it's 
     625          admin UI written. 
     626        * wifidog/include/schema_validate.php:  Create the table structure for the 
     627          new RssAggregator. 
     628          Remove rss_url in nodes table, no longer needed.  Move it's data to the 
     629          new Content class. 
    567630 
    5686312005-08-11 Francois Proulx <francois.proulx@gmail.com> 
     
    5756382005-08-10 Francois Proulx <francois.proulx@gmail.com> 
    576639        * Added Geocoders 
    577                 * /classes/AbstractGeocoder.php 
    578                 * /classes/Geocoders/GeocoderCanada.php 
    579                 * /classes/Geocoders/GeocoderUsa.php 
     640          - /classes/AbstractGeocoder.php 
     641          - /classes/Geocoders/GeocoderCanada.php 
     642          - /classes/Geocoders/GeocoderUsa.php 
    580643        * This will be used for enterring GIS data 
    581         * Coming in the next few days : set hotspot gis using Google Maps + Geocoding 
     644        * Coming in the next few days: set hotspot gis using Google Maps + Geocoding 
    582645 
    5836462005-01-25 Pascal Leclerc  <pascal@plec.ca> 
     
    592655 
    5936562005-07-12 Francois Proulx <francois.proulx@gmail.com> 
    594         * Changed XML element from hotspotsMetadata to hotspots and added networkUri element to networkMetadata 
     657        * Changed XML element from hotspotsMetadata to hotspots and added networkUri 
     658          element to networkMetadata 
    595659 
    5966602005-07-12 Francois Proulx <francois.proulx@gmail.com> 
    597661        * Fixed XML protocol for exchanging hotspots status. 
    598                 * Should now be considered stable (stamped v1.0) 
     662        * Should now be considered stable (stamped v1.0) 
    599663        * Fixed hotspots status map to reflect the changes 
    600664        * Added french translations 
    601665 
    6026662005-07-11 Francois Proulx <francois.proulx@gmail.com> 
    603         * Changed link to hotspots map using NON ssl because Google Keys are sensitive to the whole path. 
     667        * Changed link to hotspots map using NON ssl because Google Keys are 
     668          sensitive to the whole path. 
    604669 
    6056702005-07-11 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    623688        * Unsmartied index.php , added link to map 
    624689        * Check config.php to set corresponding values 
    625         * You can now use hotspot_status.php?format=XML along with xslt query string parament to convert your XML document 
     690        * You can now use hotspot_status.php?format=XML along with xslt query string 
     691          parament to convert your XML document 
    626692        * For this to work, You need to have activated XSLT ( see config file ) 
    627693 
     
    629695        * Added Google Maps mapping venues_map.php 
    630696        * /js/venues_status_map.js  JavaScript code for Mapping 
    631         * In beta : tested successfuly with 48 nodes in the Montreal area, loads in a snap 
     697        * In beta : tested successfuly with 48 nodes in the Montreal area, loads in 
     698          a snap 
    632699 
    6337002005-07-03 Francois Proulx <francois.proulx@gmail.com> 
     
    639706 
    6407072005-06-28 Benoit Grégoire  <bock@step.polymtl.ca> 
    641         * classes/Content/Langstring.php:  Bug fix:  Langstring was always non-persistent, no matter the checkbox.  Move the code to TrivialLangstring.php where it belongs. 
     708        * classes/Content/Langstring.php:  Bug fix:  Langstring was always 
     709          non-persistent, no matter the checkbox.  Move the code to 
     710          TrivialLangstring.php where it belongs. 
    642711 
    6437122005-06-21 Benoit Grégoire  <bock@step.polymtl.ca> 
    644         * portal/inted.php:  Implement the start button functionnality (maybe it would be better to call it 
    645          "use the Internet").  From now on, once authenticated and when pressing the start 
    646           button on the portal, the user will be sent to the page he originally tried to 
    647           access.  A second window will be popped with the portal page so he can come back 
    648            to it. The window is collapsed, and can be expanded back by clicking on the link. 
    649            I tried to make it cross platform (and mostly did) but it's still buggy in IE. 
    650  
    651           At the same time, this fixes the goof reported by Rob Kelley of nycwireless.net 
    652  
    653         * portal/missing_original_url.php:  Displayed when the user tries to use the start button but for some reason the original url is unavailable 
    654         * common.php:  New define CURRENT_REQUEST_URL, hopefully containing the full URL in 
    655         the user's URL bar. 
     713        * portal/inted.php:  Implement the start button functionnality (maybe it 
     714          would be better to call it "use the Internet").  From now on, once 
     715          authenticated and when pressing the start button on the portal, the user 
     716          will be sent to the page he originally tried to access.  A second window 
     717          will be popped with the portal page so he can come back to it. The window 
     718          is collapsed, and can be expanded back by clicking on the link. I tried 
     719          to make it cross platform (and mostly did) but it's still buggy in IE. 
     720 
     721          At the same time, this fixes the goof reported by Rob Kelley of 
     722          nycwireless.net 
     723 
     724        * portal/missing_original_url.php:  Displayed when the user tries to use the 
     725          start button but for some reason the original url is unavailable 
     726        * common.php:  New define CURRENT_REQUEST_URL, hopefully containing the full 
     727          URL in the user's URL bar. 
    656728 
    657729 
    6587302005-06-17 Francois Proulx <francois.proulx@gmail.com> 
    659731        * Removed forced Pattern Language on all hotspots 
    660         * Do not show hotspot logo in portal page, only on login, until we find a better layout 
     732        * Do not show hotspot logo in portal page, only on login, until we find a 
     733          better layout 
    661734 
    6627352005-06-16 Francois Proulx <francois.proulx@gmail.com> 
     
    682755 
    6837562005-05-30 Francois Proulx <francois.proulx@gmail.com> 
    684         * Changed language selectbox name so it does not clash with ISF's domain cookie 
     757        * Changed language selectbox name so it does not clash with ISF's domain 
     758          cookie 
    685759        * Fixed setlocale algorithm in Locale.php 
    686760 
     
    6907642005-05-27 Francois Proulx <francois.proulx@gmail.com> 
    691765        * Changed the signup process to make it smoother for users 
    692                 * The user will automatically be granted the 15 minutes if he's signing up at a real hotspot 
    693                 * If the user closes his browser during the 15 minutes and loses its session, we will regenerate it 
    694         * Added big red message to the top of the portal page, warning user to validate as soon as possible 
     766        * The user will automatically be granted the 15 minutes if he's signing up 
     767          at a real hotspot 
     768        * If the user closes his browser during the 15 minutes and loses its 
     769          session, we will regenerate it 
     770        * Added big red message to the top of the portal page, warning user to 
     771          validate as soon as possible 
    695772        * Fixed translation typos 
    696773 
    6977742005-05-26 Benoit Grégoire  <bock@step.polymtl.ca> 
    698         * Someone moved the fallback gettext functions definition (for when gettext isn't installed) inside the static setCurrentLocale method, completely breaking the system when PHP doesn't have gettext support.  This is an untested fix. 
     775        * Someone moved the fallback gettext functions definition (for when gettext 
     776          isn't installed) inside the static setCurrentLocale method, completely 
     777          breaking the system when PHP doesn't have gettext support.  This is an 
     778          untested fix. 
    699779 
    7007802005-05-24 Francois Proulx <francois.proulx@gmail.com> 
    701         * Fixed bug in auth.php to let users go through when the click twice on the login button 
     781        * Fixed bug in auth.php to let users go through when the click twice on the 
     782          login button 
    702783        * Fixed bug in hotspot_log.php 
    703784 
    7047852005-05-24 Francois Proulx <francois.proulx@gmail.com> 
    705         * Added "Get access statistics" button to Node admin to get hotspot specific stats 
     786        * Added "Get access statistics" button to Node admin to get hotspot specific 
     787          stats 
    706788        * Added search box in Users log to get a specific user stats quickly 
    707789 
     
    711793 
    7127942005-05-18 Francois Proulx <francois.proulx@gmail.com> 
    713         * Added strip_tags in RssPreview ( some malformed HTML would break the page layout ) 
     795        * Added strip_tags in RssPreview ( some malformed HTML would break the page 
     796          layout) 
    714797 
    7157982005-05-16 Francois Proulx <francois.proulx@gmail.com> 
    716         * Changed login message in MainUI to make it clearer what the login button will do 
     799        * Changed login message in MainUI to make it clearer what the login button 
     800          will do 
    717801 
    7188022005-05-13 Philippe April <philippe@ilesansfil.org> 
     
    725809 
    7268102005-05-10 Francois Proulx <francois.proulx@gmail.com> 
    727         * Fixed Login link in signup page ( MainUI.php ) if the Session has gw_id, gw_address, gw_port 
    728           show physical login link 
     811        * Fixed Login link in signup page ( MainUI.php ) if the Session has gw_id, 
     812          gw_address, gw_port show physical login link 
    729813 
    7308142005-05-10 Francois Proulx <francois.proulx@gmail.com> 
     
    7448282005-05-04 Francois Proulx <francois.proulx@gmail.com> 
    745829        * Implemented caching for Flickr 
    746         * Need to contact Phlickr to see how we could do better, since serialize does not work OK on objects 
     830        * Need to contact Phlickr to see how we could do better, since serialize 
     831          does not work OK on objects 
    747832 
    7488332005-05-04 Francois Proulx <francois.proulx@gmail.com> 
     
    776861 
    7778622005-04-30 Francois Proulx <francois.proulx@gmail.com> 
    778         * Fixed bug that could potentially let non owners add content in /content through content groups 
    779         * Admin menu won't show node selector if the user is not owner of at least one hotspot 
     863        * Fixed bug that could potentially let non owners add content in /content 
     864          through content groups 
     865        * Admin menu won't show node selector if the user is not owner of at least 
     866          one hotspot 
    780867        * Added Width, height support for Picture 
    781868 
     
    796883 
    7978842005-04-29 François Proulx <francois.proulx@gmail.com> 
    798         * Removed all inline unuseful javascript code on submit buttons onclick='submit()' 
     885        * Removed all inline unuseful javascript code on submit buttons 
     886          onclick='submit()' 
    799887        * This conflicted with the actual click on the submit button in Safari 
    800888        * Fixed check in Network for isOwner, only check superAdmin 
    801         * Fixed bug so you can't add an existing content group to itself ( deadlock ) 
     889        * Fixed bug so you can't add an existing content group to itself (deadlock) 
    802890        * Started coding Pattern language narrative display 
    803891 
     
    805893        * Wrote User.php addcontent, removeContent, getAllContent() 
    806894        * Wrote Content.php subscrite() and unsubscribe() 
    807         * Added parameters to getAllContent() in Node and Network ( exclude_subscribed_content ) 
     895        * Added parameters to getAllContent() in Node and Network 
     896          (exclude_subscribed_content) 
    808897        * These will be used for subscribing a to some content 
    809898        * Pattern Language will be the first to use it 
     
    812901 
    8139022005-04-28 François Proulx <francois.proulx@gmail.com> 
    814         * Logout button build a query string containing gw_id, gw_address, gw_port ( if available ), so that a user at a physical hotspot will get the login page from the hotspot he is. 
     903        * Logout button build a query string containing gw_id, gw_address, gw_port 
     904          ( if available ), so that a user at a physical hotspot will get the login 
     905          page from the hotspot he is. 
    815906        * Fixed but in Locale ( did not propertly set the locale in the session ) 
    816907 
    8179082005-04-28 François Proulx <francois.proulx@gmail.com> 
    818         * Added check in MainUI toolbar so that it won't show "NOT logged in ?" message when connect to a real hotspot ( not virtual ) 
    819                 * This message confused many users ( they clicked and got the virtual login instead ! ) 
    820         * Hide adminstration features ( statistics, hotspot creation, network wide content etc...) from all but Super admins 
     909        * Added check in MainUI toolbar so that it won't show "NOT logged in ?" 
     910          message when connect to a real hotspot ( not virtual ) 
     911        * This message confused many users ( they clicked and got the virtual login 
     912          instead ! ) 
     913        * Hide adminstration features ( statistics, hotspot creation, network wide 
     914          content etc...) from all but Super admins 
    821915        * Fixed getAllLocativeArtisticContent in Node.php added is_persistent check 
    822         * Added $associate_existing_content parameter to processNewContentUI to allows reuse for existing content ( in ContentGroup ) 
     916        * Added $associate_existing_content parameter to processNewContentUI to 
     917          allows reuse for existing content ( in ContentGroup ) 
    823918        * Fixed bug in FlickrPhotoStream delete ( missing return from parent ) 
    824919        * Added security check in all content classes ( ProcessAdminUI ) 
     
    8329272005-04-26 François Proulx <francois.proulx@gmail.com> 
    833928        * Added /content/ for displaying all content elements 
    834                 * Logging is disable when viewing them 
    835                 * All content elements will expand 
    836                 * Pattern languages won't display everything ( special property ) isExpandable 
     929        * Logging is disable when viewing them 
     930        * All content elements will expand 
     931        * Pattern languages won't display everything ( special property ) 
     932          isExpandable 
    837933        * Added a link in portal pages to go to /content/ 
    838934        * Added Show all contents button in content_admin.php 
    839935 
    8409362005-04-27 Benoit Grégoire  <bock@step.polymtl.ca> 
    841         * Content.php, ContentGroup.php:  All Content now implement the isDisplayableAt($node).  Used by the portal, if content has nothing displayabel, the entire content is skipped. 
     937        * Content.php, ContentGroup.php:  All Content now implement the 
     938          isDisplayableAt($node).  Used by the portal, if content has nothing 
     939          displayabel, the entire content is skipped. 
    842940 
    8439412005-04-27 Benoit Grégoire  <bock@step.polymtl.ca> 
    844         * FlickrPhotostream.php:  Fix the object so it doesn't crash when flicker is disabled. 
     942        * FlickrPhotostream.php:  Fix the object so it doesn't crash when flicker is 
     943          disabled. 
    845944 
    8469452005-04-27 Benoit Grégoire  <bock@step.polymtl.ca> 
    847         * ContentGroup.php:  Fully functionnal content rotation engine, with all options supported.    Rotation based on session may not be reliable if the user isn't truly logged in (from a node). 
     946        * ContentGroup.php:  Fully functionnal content rotation engine, with all 
     947          options supported. Rotation based on session may not be reliable if the 
     948          user isn't truly logged in (from a node). 
    848949 
    8499502005-04-26 François Proulx <francois.proulx@gmail.com> 
     
    855956 
    8569572005-04-26 Benoit Grégoire  <bock@step.polymtl.ca> 
    857         * ContentGroupElement.php:  It shouldn't be allowed to create a new content element in isolation.  Unfortunately the UI allows if for now.  Such content will now be deleted. 
     958        * ContentGroupElement.php:  It shouldn't be allowed to create a new content 
     959          element in isolation.  Unfortunately the UI allows if for now.  Such 
     960          content will now be deleted. 
    858961        * Locale:  Fix string selection algorithm to pick the right language. 
    859962        * Content:  Implement display logging. 
     
    8619642005-04-26 François Proulx <francois.proulx@gmail.com> 
    862965        * stylesheet rework 
     966 
    8639672005-04-26 François Proulx <francois.proulx@gmail.com> 
    864968        * Fixed wrong location for change password link 
     969 
    8659702005-04-25 François Proulx <francois.proulx@gmail.com> 
    866971        * Portal page styling 
     
    8719762005-04-26 Benoit Grégoire  <bock@step.polymtl.ca> 
    872977        * ContentGroup.php:  Make bad selection mode eror non-fatal. 
     978 
    8739792005-04-25 Benoit Grégoire  <bock@step.polymtl.ca> 
    874980        * Fix bug in ContentGroup enumeration 
     
    8859912005-04-25 François Proulx <francois.proulx@gmail.com 
    886992        * More interface work 
     993 
    8879942005-04-25 François Proulx <francois.proulx@gmail.com 
    888995        * Completed integration of new interface with new objects 
    889996 
    8909972005-04-25 Benoit Grégoire  <bock@step.polymtl.ca> 
    891         * Integration merge, should work, but there will be display problems everywhere.  Expect further commits today. 
     998        * Integration merge, should work, but there will be display problems 
     999          everywhere.  Expect further commits today. 
    8921000        * Almost 100% complete Network abstraction 
    8931001        * Much better object encapsulation.  Deprecated methods not removed yet. 
    894         * Add MainUI class.  Used to display the interface.  Inner workings still need work. 
     1002        * Add MainUI class.  Used to display the interface.  Inner workings still 
     1003          need work. 
    8951004 
    89610052005-04-23 François Proulx <francois.proulx@gmail.com> 
     
    93810472005-04-18 Benoit Grégoire  <bock@step.polymtl.ca> 
    9391048        * Hotspot and network content association, continue access control work. 
    940         * hotspot_owner.php: Fix wrong assignement of user_id that prevented the script from working. 
    941         * All files:  Remove whitespace and carriage return after the ?> closing tags. 
     1049        * hotspot_owner.php: Fix wrong assignement of user_id that prevented the 
     1050          script from working. 
     1051        * All files:  Remove whitespace and carriage return after the ?> closing 
     1052          tags. 
    9421053 
    94310542005-04-18 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    9451056 
    94610572005-04-15 Benoit Grégoire  <bock@step.polymtl.ca> 
    947         * Support more of the content object model, do a half-decent CSS for the admin interface. 
     1058        * Support more of the content object model, do a half-decent CSS for the 
     1059          admin interface. 
    9481060 
    94910612005-04-14 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    95510672005-04-14 Benoit Grégoire  <bock@step.polymtl.ca> 
    9561068        * Fix Content object enumeration preventing usage of admin interface 
    957         * Partial fix for RSS feed encoding (multiple feed aggregation still broken); 
     1069        * Partial fix for RSS feed encoding (multiple feed aggregation still broken) 
    9581070 
    95910712005-04-14 Benoit Grégoire  <bock@step.polymtl.ca> 
    960         * First part of the future content delivery infrastructure.  Many files added. 
     1072        * First part of the future content delivery infrastructure. Many files added 
    9611073 
    96210742005-04-01 François Proulx  <francois.proulx@gmail.com> 
     
    9651077 
    96610782005-04-01 Benoit Grégoire  <bock@step.polymtl.ca> 
    967         * wifidog/templates/auth_sources_selection.html:  Add missing file from francois's commit. 
     1079        * wifidog/templates/auth_sources_selection.html:  Add missing file from 
     1080          Francois's commit. 
    9681081 
    96910822005-04-01 Philippe April <philippe@ilesansfil.org> 
     
    9731086 
    97410872005-04-01 Francois Proulx  <francois.proulx@gmail.com> 
    975         * EVERYTHING IS NOW UTF-8 YOU MUST EDIT YOUR FILES WITH AN UTF-8 COMPLIANT EDITOR 
     1088        * EVERYTHING IS NOW UTF-8 YOU MUST EDIT YOUR FILES WITH AN UTF-8 COMPLIANT 
     1089          EDITOR 
    9761090        * The database will be converted to UTF-8 (version 5) 
    977         * Added select boxes ( or hidden ) html form elements to choose the network for signup, lost password, username 
     1091        * Added select boxes ( or hidden ) html form elements to choose the network 
     1092          for signup, lost password, username 
    9781093 
    97910942005-04-01 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    98811032005-03-31 Benoit Grégoire  <bock@step.polymtl.ca> 
    9891104        * Remove spaces after php blocks in various files. 
    990         * Temporarily fix single authentication source not present bug in login smarty template.  All other places where we select the network will be fixed tommorow. 
     1105        * Temporarily fix single authentication source not present bug in login 
     1106          smarty template.  All other places where we select the network will be 
     1107          fixed tommorow. 
    9911108        * Fix initial schema errors. 
    9921109 
     
    10131130        * Translated the validation, lost password, username e-mails 
    10141131        * Tested quite a bit, this version is considered stable 
    1015         * A few examples on how set different RADIUS or local authenticators can be found in the config.php 
     1132        * A few examples on how set different RADIUS or local authenticators can be 
     1133          found in the config.php 
    10161134 
    101711352005-03-29 François Proulx  <francois.proulx@gmail.com> 
    1018         * schema_validate.php : Modified schema : dropped e-mail + account unique index, dropped email not empty constraint 
     1136        * schema_validate.php : Modified schema : dropped e-mail + account unique 
     1137          index, dropped email not empty constraint 
    10191138        * Schema is now at version 3 
    10201139        * Coded RADIUS authentication 
    1021         * Modified templates to show a select box when more than one server is configured 
     1140        * Modified templates to show a select box when more than one server is 
     1141          configured 
    10221142        * Coded RADIUS accounting and backward compatibility accounting 
    10231143        * Modified many statistics SQL queries to match new Users table 
    10241144        * modified statistics templates to match user_id and account_origin 
    1025         * TODO : Fix lost_username and lost_password ( issue since we dropped the unique constraint on emails... ) 
     1145        * TODO : Fix lost_username and lost_password ( issue since we dropped the 
     1146          unique constraint on emails... ) 
    10261147        * TODO : Heavy testing possibly with remote RADIUS servers 
    10271148 
    102811492005-03-28 Benoit Grégoire  <bock@step.polymtl.ca> 
    1029         * sql:  Put initial data in a transaction, and specify the wifidog user so you do not have to su to it while using sync_sql_for_svs 
     1150        * sql:  Put initial data in a transaction, and specify the wifidog user so 
     1151          you do not have to su to it while using sync_sql_for_svs 
    10301152 
    103111532005-03-28 Benoit Grégoire  <bock@step.polymtl.ca> 
    10321154        * common.php:  Add get_guid() function 
    1033         * validate_schema.php: New auto-upgrade script to allow autaumatic schema upgrade.  Note that you must still update dump_initial_data_postgres.sh and use sync_sql_for_cvs.sh so new users aren't left in the cold. 
    1034         * New class Authenticator (and subclasses):  Begin virtualizing the login process. 
     1155        * validate_schema.php: New auto-upgrade script to allow autaumatic schema 
     1156          upgrade.  Note that you must still update dump_initial_data_postgres.sh 
     1157          and use sync_sql_for_cvs.sh so new users aren't left in the cold. 
     1158        * New class Authenticator (and subclasses):  Begin virtualizing the login 
     1159          process. 
    10351160 
    103611612005-03-24 Benoit Grégoire  <bock@step.polymtl.ca> 
    1037         * Statistics.php: Fix getMostGreedyUsers returning bad values when incoming and outgoing for all connections from a user have null values. 
    1038         * wifidog/local_content/default/portal.html: Fix layout so it resizes properly.  This in an interim measure. 
    1039         * Update schema.  This will allow automatic schema updates in the future.  TO update a live server: 
    1040                 BEGIN; 
    1041                 CREATE TABLE schema_info ( 
    1042                     tag text PRIMARY KEY, 
    1043                     value text 
    1044                 ); 
    1045                 INSERT INTO schema_info (tag, value) VALUES ('schema_version', '1'); 
    1046                 COMMIT; 
     1162        * Statistics.php: Fix getMostGreedyUsers returning bad values when incoming 
     1163          and outgoing for all connections from a user have null values. 
     1164        * wifidog/local_content/default/portal.html: Fix layout so it resizes 
     1165          properly.  This in an interim measure. 
     1166        * Update schema.  This will allow automatic schema updates in the future. 
     1167          TO update a live server: 
     1168 
     1169      BEGIN; 
     1170      CREATE TABLE schema_info ( 
     1171            tag text PRIMARY KEY, 
     1172            value text 
     1173          ); 
     1174          INSERT INTO schema_info (tag, value) VALUES ('schema_version', '1'); 
     1175          COMMIT; 
    10471176 
    104811772005-03-16 Matthew Asham <matthewa@bcwireless.net> 
    1049  * config.php: will use "local.config.php" instead, if present.  avoid cvs over-writing. 
    1050  * signup.php: if CUSTOM_SIGNUP_URL is defined, signup.php will re-direct.  For integration with existing auth systems 
    1051  * hotspot_status.php: ob_clean may complain about buffering.  muted. 
    1052  * ./classes/RssPressReview.inc: if rss_source['url'] is blank, ignore the feed. 
     1178    * config.php: will use "local.config.php" instead, if present.  avoid cvs 
     1179      over-writing. 
     1180    * signup.php: if CUSTOM_SIGNUP_URL is defined, signup.php will re-direct. 
     1181      For integration with existing auth systems 
     1182    * hotspot_status.php: ob_clean may complain about buffering.  muted. 
     1183    * ./classes/RssPressReview.inc: if rss_source['url'] is blank, ignore the 
     1184      feed. 
    10531185 
    105411862005-02-22 Benoit Grégoire  <bock@step.polymtl.ca> 
    1055         * sql/dump_initial_data_postgres.sh, wifidog-postgres-initial-data.sql, wifidog-postgres-schema.sql:-Widen the connections size to fix int4 wraparound problems.  To update a running server, execute the following sql sniplet: 
    1056 BEGIN; 
    1057 ALTER TABLE connections RENAME incoming TO incoming_old; 
    1058 ALTER TABLE connections ADD COLUMN incoming int8; 
    1059 ALTER TABLE connections RENAME outgoing TO outgoing_old; 
    1060 ALTER TABLE connections ADD COLUMN outgoing int8; 
    1061 UPDATE connections set incoming=incoming_old, outgoing=outgoing_old; 
    1062 ALTER TABLE connections DROP COLUMN incoming_old; 
    1063 ALTER TABLE connections DROP COLUMN outgoing_old; 
    1064 COMMIT; 
     1187        * sql/dump_initial_data_postgres.sh, wifidog-postgres-initial-data.sql, 
     1188          wifidog-postgres-schema.sql:-Widen the connections size to fix int4 
     1189          wraparound problems.  To update a running server, execute the following 
     1190          sql sniplet: 
     1191 
     1192      BEGIN; 
     1193      ALTER TABLE connections RENAME incoming TO incoming_old; 
     1194      ALTER TABLE connections ADD COLUMN incoming int8; 
     1195      ALTER TABLE connections RENAME outgoing TO outgoing_old; 
     1196      ALTER TABLE connections ADD COLUMN outgoing int8; 
     1197      UPDATE connections set incoming=incoming_old, outgoing=outgoing_old; 
     1198      ALTER TABLE connections DROP COLUMN incoming_old; 
     1199      ALTER TABLE connections DROP COLUMN outgoing_old; 
     1200      COMMIT; 
     1201 
    10651202        * wifidog/admin/hotspot.php: Missing file from phil's commit. 
    1066         * wifidog/locale/fr/LC_MESSAGES/messages.mo, messages.po:  New translation by Benoit St-André 
     1203        * wifidog/locale/fr/LC_MESSAGES/messages.mo, messages.po:  New translation 
     1204          by Benoit St-André 
    10671205 
    106812062005-02-14 Philippe April <philippe@ilesansfil.org> 
    10691207        * gw_message.php: the "activate" message was not properly defined and 
    1070         would cause an error to show up instead of the nice activate your account 
    1071         message 
     1208          would cause an error to show up instead of the nice activate your account 
     1209          message 
    10721210 
    107312112005-02-14 Philippe April <philippe@ilesansfil.org> 
    10741212        * wifidog/locale/gen.s: Was not working as expected, it will now get the 
    1075         gettext from smarty properly. 
     1213          gettext from smarty properly. 
    10761214        * Updated TODO with ideas on making config better 
    10771215 
    107812162005-01-31 Benoit Grégoire  <bock@step.polymtl.ca> 
    10791217        * wifidog/templates/hotspot_status.html:  Restore the number of nodes 
    1080         * wifidog/hotspot_status.php: Restore the number of nodes, add formatting and more information to the RSS feed. 
     1218        * wifidog/hotspot_status.php: Restore the number of nodes, add formatting 
     1219          and more information to the RSS feed. 
    10811220 
    108212212005-01-26 Philippe April <isf_lists@philippeapril.com> 
     
    11121251        * wifidog/hotspot_status.php: Allow export of the list as a RSS feed 
    11131252        * wifidog/classes/RssPressReview.inc:  Make it truly functionnal. 
    1114         * wifidog/portal/index.php:  Support multiple RSS feeds.  The system will automatically pick the best 5 entries from all the feeds.  It will compensate for disparate publication intervals.  An entry from a feed that does not publish often will live longer than an entry from a feed that publishes very often.  If a feed doesn't have any entry that makes the cut, it will not appear at all. 
     1253        * wifidog/portal/index.php:  Support multiple RSS feeds.  The system will 
     1254          automatically pick the best 5 entries from all the feeds.  It will 
     1255          compensate for disparate publication intervals.  An entry from a feed that 
     1256          does not publish often will live longer than an entry from a feed that 
     1257          publishes very often.  If a feed doesn't have any entry that makes the 
     1258          cut, it will not appear at all. 
    11151259        * wifidog/templates/hotspot_status.html:  Add link to the RSS version. 
    11161260 
    111712612005-01-11 Benoit Grégoire  <bock@step.polymtl.ca> 
    1118         * wifidog/config.php:  Add list of hotspot to network rss feed list (not yet functionnal) 
    1119         * wifidog/hotspot_status.php:  Allow RSS export of the list of deployed HotSpots. 
    1120         * wifidog/admin/incoming_outgoing_swap.php:  Script to swap incoming and outgoing in your data.  only use this if you had gateways before 1.0.2 and wish to correct your logs before you upgrade. 
     1262        * wifidog/config.php:  Add list of hotspot to network rss feed list (not yet 
     1263          functionnal) 
     1264        * wifidog/hotspot_status.php:  Allow RSS export of the list of deployed 
     1265          Hotspots. 
     1266        * wifidog/admin/incoming_outgoing_swap.php:  Script to swap incoming and 
     1267          outgoing in your data. Only use this if you had gateways before 1.0.2 
     1268          and wish to correct your logs before you upgrade. 
    11211269        * wifidog/classes/RssPressReview.inc:  Missing file from previous commit. 
    1122         * wifidog/portal/index.php: Preliminary work to enable smart press review of multiple RSS feeds. 
     1270        * wifidog/portal/index.php: Preliminary work to enable smart press review 
     1271          of multiple RSS feeds. 
    11231272 
    112412732005-01-10 Benoit Grégoire  <bock@step.polymtl.ca> 
    1125         * include/common.php: Fix SSL security warnings.  If SSL is enabled and the page was actually served over SSL, all media in the file will be served over SSL. Add a new define (BASE_NON_SSL_PATH) to allow us to make links that break out of SSL mode.  From now on, use the self adapting BASE_URL_PATH in most circumstance, BASE_SSL_PATH to enter SSL mode, and BASE_URL_PATH to break out of it. 
     1274        * include/common.php: Fix SSL security warnings.  If SSL is enabled and the 
     1275          page was actually served over SSL, all media in the file will be served 
     1276          over SSL. Add a new define (BASE_NON_SSL_PATH) to allow us to make links 
     1277          that break out of SSL mode.  From now on, use the self adapting 
     1278          BASE_URL_PATH in most circumstance, BASE_SSL_PATH to enter SSL mode, 
     1279          and BASE_URL_PATH to break out of it. 
    11261280 
    112712812005-01-10 Benoit Grégoire  <bock@step.polymtl.ca> 
    1128         * admin/user_stats.php: Add three top tens to the statistics:  Top ten apetite for bandwidth, top ten travelers, most addicted users. 
     1282        * admin/user_stats.php: Add three top tens to the statistics:  Top ten 
     1283          apetite for bandwidth, top ten travelers, most addicted users. 
    11291284 
    113012852005-01-04 Benoit Grégoire  <bock@step.polymtl.ca> 
    1131         * wifidog/local_content/default/hotspot_logo_banner.jpg: Make it much thinner. 
     1286        * wifidog/local_content/default/hotspot_logo_banner.jpg: Make it much 
     1287          thinner. 
    11321288        * wifidog/local_content/default/login.html: Remove announcements 
    11331289        * wifidog/include/user_management_menu.php: Fix mailto: 
    1134         * wifidog/auth/index.php: Fix auth server part of the no data transmited statistics bug. 
     1290        * wifidog/auth/index.php: Fix auth server part of the no data transmited 
     1291          statistics bug. 
    11351292        * wifidog/admin/index.php: Add link to statistics 
    11361293        * wifidog/admin/user_stats.php: Activate security. 
    1137         * wifidog/index.php: Make the distinction between the two hotspot status pages clearer. 
     1294        * wifidog/index.php: Make the distinction between the two hotspot status 
     1295          pages clearer. 
    11381296 
    113912972004-12-08 Benoit Grégoire  <bock@step.polymtl.ca> 
    11401298        * wifidog/index.php: Add menu 
    1141         * wifidog/include/user_management_menu.php: Editorial change, make translateable 
     1299        * wifidog/include/user_management_menu.php: Editorial change, make 
     1300          translateable 
    11421301        * wifidog/portal/index.php:  Fix RSS feeds 
    11431302 
    114413032004-12-03 Benoit Grégoire  <bock@step.polymtl.ca> 
    1145         * wifidog/admin/user_stats.php,  wifidog/classes/Statistics.php:  Embryonic aggregate user stats.  Currently allows you to find out the rate at which your users subscribe. 
    1146         * wifidog/config.php, wifidog/local_content/default/login.html, wifidog/include/user_management_menu.php:  Add hotspot status page to login page. 
     1304        * wifidog/admin/user_stats.php,  wifidog/classes/Statistics.php:  Embryonic 
     1305          aggregate user stats.  Currently allows you to find out the rate at which 
     1306          your users subscribe. 
     1307        * wifidog/config.php, wifidog/local_content/default/login.html, 
     1308          wifidog/include/user_management_menu.php:  Add hotspot status page to 
     1309          login page. 
    11471310        * wifidog/hotspot_status.php: Cosmetic 
    11481311        * wifidog/admin/hotspot_log.php: Stats now need admin privileges 
     
    115113142004-11-19 Benoit Grégoire  <bock@step.polymtl.ca> 
    11521315        * TODO: Add email domains to blacklist 
    1153         * wifidog/config.php, wifidog/include/user_management_menu.php: Add tech support email address 
    1154         * wifidog/hotspot_status.php: List of HotSpots that are open with summary of information.  Designed to be included as part of another page. 
     1316        * wifidog/config.php, wifidog/include/user_management_menu.php: Add tech 
     1317          support email address 
     1318        * wifidog/hotspot_status.php: List of HotSpots that are open with summary of 
     1319          information.  Designed to be included as part of another page. 
    11551320        * wifidog/local_content/common/wifidog_logo_banner.gif: Add wifidog logo 
    1156         * wifidog/local_content/default/hotspot_logo_banner.jpg: Shrink the logo and write unknown hotspot, however this is still really ugly 
    1157         * wifidog/local_content/default/login.html, portal.html, stylesheet.css: Cosmetic fixes 
    1158         * wifidog/local_content/default/login.html.fr, portal.html.fr: Delete the files, this isn't the approach we will use for translation. 
    1159         * sql/wifidog-postgres-initial-data.sql, wifidog-postgres-schema.sql: Update with new node information structures. 
     1321        * wifidog/local_content/default/hotspot_logo_banner.jpg: Shrink the logo 
     1322          and write unknown hotspot, however this is still really ugly 
     1323        * wifidog/local_content/default/login.html, portal.html, stylesheet.css: 
     1324          Cosmetic fixes 
     1325        * wifidog/local_content/default/login.html.fr, portal.html.fr: Delete the 
     1326          files, this isn't the approach we will use for translation. 
     1327        * sql/wifidog-postgres-initial-data.sql, wifidog-postgres-schema.sql: 
     1328          Update with new node information structures. 
    11601329 
    116113302004-11-04 Benoit Grégoire  <bock@step.polymtl.ca> 
    1162         * wifidog/admin/hotspot_log.php: Add number of currently connected users here as well. 
     1331        * wifidog/admin/hotspot_log.php: Add number of currently connected users 
     1332          here as well. 
    11631333 
    116413342004-11-03 Benoit Grégoire  <bock@step.polymtl.ca> 
    11651335        * wifidog/ping/index.php: Log user-agent 
    11661336        * extensive statistics work 
    1167         * sql/wifidog-postgres-schema.sql: Add description field for hotspots and log user-agent 
     1337        * sql/wifidog-postgres-schema.sql: Add description field for hotspots and 
     1338          log user-agent 
    11681339 
    116913402004-10-28 Benoit Grégoire  <bock@step.polymtl.ca> 
    1170         * sql/wifidog-postgres-schema.sql:  Add constraints to avoid empty string in email or user_id. 
     1341        * sql/wifidog-postgres-schema.sql:  Add constraints to avoid empty string 
     1342          in email or user_id. 
    11711343        * Some statistics fixes 
    11721344 
    117313452004-09-29 Alexandre Carmel-Veilleux <acv@acv.ca> 
    11741346        * wifidog/admin/index.php: Integrated the changes contributed 
    1175         on the mailing list by Rikhardur EGILSSON (fname.lname@oecd.org), 
    1176         mainly a missing ' in some HTML. 
     1347          on the mailing list by Rikhardur EGILSSON (fname.lname@oecd.org), 
     1348          mainly a missing ' in some HTML. 
    11771349 
    117813502004-09-28 Yanik Crépeau <yanik@exScriptis.com> 
    1179         * wifidog/include/common.php: Added commented header with cvs 
    1180         keywords. 
     1351    * wifidog/include/common.php: Added commented header with cvs 
     1352          keywords. 
    11811353        * wifidog/include/common.php: Added commented code (not executing) for 
    1182         further testing with language/localization issues. 
     1354          further testing with language/localization issues. 
    11831355 
    118413562004-09-27 Benoit Grégoire  <bock@step.polymtl.ca> 
    1185         * sql/wifidog-postgres-schema.sql:  Remove non SQL standard "COMMENT ON" comments 
     1357        * sql/wifidog-postgres-schema.sql:  Remove non SQL standard "COMMENT ON" 
     1358          comments 
    11861359 
    118713602004-09-27 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    119013632004-09-27 Benoit Grégoire  <bock@step.polymtl.ca> 
    11911364        * sql/wifidog-postgres-schema.sql:  Fix layout for the node_owners table 
    1192         * Begin integrating Patrick Tanguay's new layout and generate the css dynamically to allow for background images. 
     1365        * Begin integrating Patrick Tanguay's new layout and generate the css 
     1366          dynamically to allow for background images. 
    11931367 
    119413682004-09-22 Benoit Grégoire  <bock@step.polymtl.ca> 
    11951369        * portal/index.php:  Fix users appearing online at every hotspot. 
    1196         * wifidog/classes/Style.php, wifidog/login/index.php:  Fix some potential cache problems and help with validation. 
     1370        * wifidog/classes/Style.php, wifidog/login/index.php:  Fix some potential 
     1371          cache problems and help with validation. 
    11971372 
    119813732004-09-18 Benoit Grégoire  <bock@step.polymtl.ca> 
    11991374        * wifidog/config.php:  Add VALIDATION_GRACE_TIME configuration parameter. 
    1200         * wifidog/auth/index.php:  Move grace time date arithmetics to the database, fixes validation period not working.  Stop storing VALIDATION_FAILES status to the database.  Add check for validation period expiration at stage login, not just stage counters, this will fix one minute validation period. 
    1201         * wifidog/login/index.php:  Check validation period activation, and if period is expired, explain to the user instead of redirecting to the gateway. 
     1375        * wifidog/auth/index.php:  Move grace time date arithmetics to the database, 
     1376          fixes validation period not working.  Stop storing VALIDATION_FAILES 
     1377          status to the database.  Add check for validation period expiration at 
     1378          stage login, not just stage counters, this will fix one minute 
     1379          validation period. 
     1380        * wifidog/login/index.php:  Check validation period activation, and if 
     1381          period is expired, explain to the user instead of redirecting to the 
     1382          gateway. 
    12021383        * wifidog/user_management/index.php:  Fix SQL error at new user registration. 
    12031384 
     
    120913902004-08-31 Benoit Grégoire  <bock@step.polymtl.ca> 
    12101391        * sql/: Update the postgres schemas and add scripts to ease maintaining it. 
    1211         * sql/sync_sql_for_cvs.sh: Should you modify the schema in your db, run this script to the chances will be available in the cvs schemas and initial data. 
    1212         * sql/dump_initial_data_postgres.sh: This does the actual dump of the data in a runnable form.  Note that this needs to be edited manually if you add a new table requiring initial data. 
     1392        * sql/sync_sql_for_cvs.sh: Should you modify the schema in your db, run this 
     1393          script to the chances will be available in the cvs schemas and initial 
     1394          data. 
     1395        * sql/dump_initial_data_postgres.sh: This does the actual dump of the data 
     1396          in a runnable form.  Note that this needs to be edited manually if you add 
     1397          a new table requiring initial data. 
    12131398        * INSTALL:  Update for postgres.  Somebody please test this. 
    12141399 
    121514002004-08-31 Benoit Grégoire  <bock@step.polymtl.ca> 
    1216         * wifidog/ping/index.php: Implement logging of which hotspot sent the heartbeat, from which ip and when. 
     1401        * wifidog/ping/index.php: Implement logging of which hotspot sent the 
     1402          heartbeat, from which ip and when. 
    12171403        * wifidog/node_list.php:  Primitive but functionnal hotspot status page. 
    12181404        * wifidog/include/user_management_menu.php:  Change menu labels 
    1219         * wifidog/local_content/default/login.html: Improve layout.  Someone needs to make this stylesheet correct, I took shortcuts... 
     1405        * wifidog/local_content/default/login.html: Improve layout.  Someone needs 
     1406          to make this stylesheet correct, I took shortcuts... 
    12201407        * wifidog/local_content/default/stylesheet.css:  Reduce H1 font size. 
    1221         * wifidog/user_management/index.php:  Display the menu, will eventually allow us to present proper help text. 
     1408        * wifidog/user_management/index.php:  Display the menu, will eventually 
     1409          allow us to present proper help text. 
    12221410 
    122314112004-08-30 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    12301418 
    123114192004-08-28 Benoit Grégoire  <bock@step.polymtl.ca> 
    1232         * Fix big gaping security hole in login page (password would be ignored if the username was used to login) 
     1420        * Fix big gaping security hole in login page (password would be ignored if 
     1421          the username was used to login) 
    12331422        * PostgreSql port 
    12341423        * Change the method to determine who is online 
     
    12361425        * Fix missing update of token update date. 
    12371426        * Counters wouldn't get updated for stage=LOGOUT 
    1238         * wifidog/auth/index.php:  Added a Messages: response in addition to Auth: so we can know what the hell the server is up to.  Currently you need to run wifidog in debug level 7 to see it. That message should be parsed so it is visible in debug level 6. 
     1427        * wifidog/auth/index.php:  Added a Messages: response in addition to Auth: 
     1428          so we can know what the hell the server is up to.  Currently you need to 
     1429          run wifidog in debug level 7 to see it. That message should be parsed so 
     1430          it is visible in debug level 6. 
    12391431        * wifidog/auth/index.php:   Fix code injection vulnerability. 
    12401432 
     
    124914412004-08-11 Benoit Grégoire  <bock@step.polymtl.ca> 
    12501442        * wifidog/config.php: Add USER_MANAGEMENT_PAGE 
    1251         * wifidog/include/user_management_menu.php:  Code meant to deal with non-standard ports broke the menu.  Hopefully fixed. 
     1443        * wifidog/include/user_management_menu.php:  Code meant to deal with 
     1444          non-standard ports broke the menu.  Hopefully fixed. 
    12521445        * Add alex's mising changelog entry... 
    12531446 
    125414472004-08-11 Alexandre Carmel-Veilleux <acv@acv.ca> 
    1255         * wifidog/ping/index.php: will now reply if the wifidog auth server is up. to be used by wifidog to do heartbeats. 
     1448        * wifidog/ping/index.php: will now reply if the wifidog auth server is up. 
     1449          To be used by wifidog to do heartbeats. 
    12561450 
    125714512004-08-07 Benoit Grégoire  <bock@step.polymtl.ca> 
    1258         * Add code to import a NoCat user database (passwd).  The username will be generated from the first part of the email if the name was en email. 
    1259         * Change password hashing algorithm to make it compatible with NoCat (For the curious among you, the hashing algorithm is now:  take the md5 digest in binary format of the password, and base64 encode it. 
    1260         * Table schema changed to accomodate newhash length (users.pass is now varchar(32)) 
     1452        * Add code to import a NoCat user database (passwd).  The username will be 
     1453          generated from the first part of the email if the name was en email. 
     1454        * Change password hashing algorithm to make it compatible with NoCat (For 
     1455          the curious among you, the hashing algorithm is now:  take the md5 
     1456          digest in binary format of the password, and base64 encode it. 
     1457        * Table schema changed to accomodate newhash length (users.pass is now 
     1458          varchar(32)) 
    12611459        * The user is now allowed to login with either his username or his email. 
    12621460 
    126314612004-08-03 Pascal Leclerc  <pascal@plec.ca> 
    1264         * wifidog/classes/SmartyWifidog.php: Fix path validation bug, replace NODE_CONTENT_URL with NODE_CONTENT_PHP_RELATIVE_PATH 
     1462        * wifidog/classes/SmartyWifidog.php: Fix path validation bug, replace 
     1463          NODE_CONTENT_URL with NODE_CONTENT_PHP_RELATIVE_PATH 
    12651464        * wifidog/classes/AbstractDb.php: Add class=warning for better display 
    12661465        * wifidog/config.php: Add SYSTEM_PATH and test/fix non-standard server ports 
    12671466 
    126814672004-08-03 Benoit Grégoire  <bock@step.polymtl.ca> 
    1269         * Make gettext support optionnal, and define GETTEXT_AVAILABLE, will be set to true if gettext is available.  If false, blank _() and gettext() functions will be defined so the system still works. 
     1468        * Make gettext support optionnal, and define GETTEXT_AVAILABLE, will be set 
     1469          to true if gettext is available.  If false, blank _() and gettext() 
     1470          functions will be defined so the system still works. 
    12701471 
    127114722004-08-03 Benoit Grégoire  <bock@step.polymtl.ca> 
     
    12761477        * Demo page to allow people to hack more easely on it 
    12771478        * Support for multiple nodes.  TODO:  Merge with the database project. 
    1278         * Very cool local content architecture.  Every hotspot can have a folder in the local_content directory.  This folder can be filed by a single logo, leaving all the rest to the default content, or be completely custom (stylesheet, login page, portal page, header, etc.) 
    1279         * Everything in local content is templated with smarty, no problem with web designer wrecking havoc on the auth server.  You can edit everything in local_content/default even if you only speak html. 
    1280         * No need to set any path in the web server config files (that one was a bitch to implement) 
    1281         * RSS feed support (optionnal, with magpierss), one feed per node (url stored in the database, works great, but no gui to edit it yet) and one network-wide RSS feed. 
     1479        * Very cool local content architecture.  Every hotspot can have a folder in 
     1480          the local_content directory.  This folder can be filed by a single logo, 
     1481          leaving all the rest to the default content, or be completely custom 
     1482          (stylesheet, login page, portal page, header, etc.) 
     1483        * Everything in local content is templated with smarty, no problem with 
     1484          web designer wrecking havoc on the auth server.  You can edit everything 
     1485          in local_content/default even if you only speak html. 
     1486        * No need to set any path in the web server config files (that one was a 
     1487          bitch to implement) 
     1488        * RSS feed support (optionnal, with magpierss), one feed per node (url 
     1489          stored in the database, works great, but no gui to edit it yet) and one 
     1490          network-wide RSS feed. 
    12821491        * All path are editable from the config file 
    1283         * "Productize" the thing, so it make sense for other groups to install it (the network name, url, default RSS, and such are set from the config file. 
     1492        * "Productize" the thing, so it make sense for other groups to install it 
     1493          (the network name, url, default RSS, and such are set from the config 
     1494          file). 
    12841495        * Put most strings in gettext calls for easy future translation. 
    12851496        * User can request that the server send the validation email again 
    12861497        * User can change password 
    12871498        * User who forgot his username can have it mailed to him. 
    1288         * User who lost his password can ask the system to generate a new one and mail it to him. 
     1499        * User who lost his password can ask the system to generate a new one and 
     1500          mail it to him. 
    12891501        * Email is now a separate field to preserve user privacy. 
    12901502        * Enforces (politely) that there are no duplicate emails in the database 
    1291         * Database abstraction layer with very nice debugging features (just append true at the end of the call, and you'll see the query, the results, the query plan and number of affected rows.  Also allow future upgrade to postgres. 
     1503        * Database abstraction layer with very nice debugging features (just append 
     1504          true at the end of the call, and you'll see the query, the results, the 
     1505          query plan and number of affected rows.  Also allow future upgrade to 
     1506          postgres. 
    12921507        * Lots of other things I forgot. 
    1293  
    1294         * User who forgot his username can have it mailed to him. 
    1295         * User who lost his password can ask the system to generate a new one and mail it to him. 
    1296         * Email is now a separate field to preserve user privacy. 
    1297         * Enforces (politely) that there are no duplicate emails in the database 
    1298         * Database abstraction layer with very nice debugging features (just append true at the end of the call, and you'll see the query, the results, the query plan and number of affected rows.  Also allow future upgrade to postgres. 
    1299         * Lots of other things I forgot. 
    1300  
  • trunk/wifidog-auth/INSTALL

    r939 r952  
    33 
    44- PHP 5.x (http://www.php.net) 
     5- PHP's mbstring extention installed 
    56- PHP's php-xml extention installed (Required if RSS support is on) 
    67- PHP's dom extension installed (Required if you want to export the list of 
    78  Hotspots as a RSS feed) 
     9- PHP's curl extension installed (Required if you want to use Phlickr) 
    810- PHP compiled with gettext support (Will be autodetected if unavailable, but 
    911  you will loose internationalization) 
     
    1517  content with a HTML text editor aka WYSIWYG editor) 
    1618- PEAR (if you need RADIUS auth support, see below) 
    17 - Phlickr installed as a PEAR package (http://phlickr.sourceforge.net/) (required 
    18   if you want to use the content class accessing Flickr photo albums) 
     19- Phlickr 0.2.5+ installed as a PEAR package (http://phlickr.sourceforge.net/) 
     20  (required if you want to use the content class accessing Flickr photo albums) 
    1921- PEAR packages radius, Auth_RADIUS and Crypt_CHAP (required if you need RADIUS 
    2022  support) 
  • trunk/wifidog-auth/wifidog/change_password.php

    r914 r952  
    8282        $ui = new MainUI(); 
    8383        $smarty->assign("message", _("Your password has been changed succesfully.")); 
    84         $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     84        $ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    8585        $ui->display(); 
    8686        exit; 
  • trunk/wifidog-auth/wifidog/classes/Cache.php

    r938 r952  
    107107    { 
    108108        // Check if need to load PEAR::Cache_Lite. 
    109         if ($this->cachingEnabled()) { 
     109        if ($this->_cachingEnabled()) { 
    110110            // Proceed if $id is set, only. 
    111111            if ($id != null && $id != "") { 
     
    144144     * @access private 
    145145     */ 
    146     private function cachingEnabled() 
     146    private function _cachingEnabled() 
    147147    { 
    148148        // Init values. 
  • trunk/wifidog-auth/wifidog/classes/Dependencies.php

    r938 r952  
    173173 * End: 
    174174 */ 
     175 
    175176?> 
  • trunk/wifidog-auth/wifidog/classes/HtmlSafe.php

    r938 r952  
    141141     * @access private 
    142142     */ 
    143     private function setTags(&$tagList, $tags, $appendTags = false) 
     143    private function _setTags(&$tagList, $tags, $appendTags = false) 
    144144    { 
    145145        // Init values 
     
    185185    public function setDeleteTags($deleteTags, $appendTags = false) 
    186186    { 
    187         $_retVal = $this->setTags($this->_deleteTags, $deleteTags, $appendTags); 
     187        $_retVal = $this->_setTags($this->_deleteTags, $deleteTags, $appendTags); 
    188188 
    189189        if ($_retVal) { 
     
    220220    public function setDeleteTagsContent($deleteTagsContent, $appendTags = false) 
    221221    { 
    222         $_retVal = $this->setTags($this->_deleteTagsContent, $deleteTagsContent, $appendTags); 
     222        $_retVal = $this->_setTags($this->_deleteTagsContent, $deleteTagsContent, $appendTags); 
    223223 
    224224        if ($_retVal) { 
     
    255255    public function setAttributes($attributes, $appendTags = false) 
    256256    { 
    257         $_retVal = $this->setTags($this->_attributes, $attributes, $appendTags); 
     257        $_retVal = $this->_setTags($this->_attributes, $attributes, $appendTags); 
    258258 
    259259        if ($_retVal) { 
  • trunk/wifidog-auth/wifidog/classes/Mail.php

    r915 r952  
    11<?php 
    2  
    32 
    43/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 
     
    5352class Mail 
    5453{ 
    55         // List of fake e-mails hosts 
    56         private static $_hosts_black_list = array ("simplicato.net", "mytrashmail.com", "spamhole.com", "mailexpire.com", "sneakemail.com", "spamex.com", "emailias.com", "mymailoasis.com", "spamcon.org", "spamgourmet.com", "spammotel.com", "dodgeit.com"); 
    57  
    58         // Business domain attributes 
    59         private $from_name; 
    60         private $from_email; 
    61         private $to_name; 
    62         private $to_email; 
    63         private $subject; 
    64         private $body; 
    65  
    66         public function __construct() 
    67         { 
    68         } 
    69  
    70         private function encodeMimeHeader($header) 
     54        /** 
     55         * List of fake e-mails hosts 
     56         * 
     57         * @var array 
     58         * 
     59         * @static 
     60         * @access private 
     61         */ 
     62        private static $_hosts_black_list = array( 
     63           "discardmail.com", "dodgeit.com", "emailias.com", "jetable.org", 
     64           "mailexpire.com", "mailinator.com", "mailnull.com", "mymailoasis.com", 
     65           "mytrashmail.com", "simplicato.net", "sneakemail.com", "sofort-mail.de", 
     66           "spamcon.org", "spamex.com", "spamgourmet.com", "spamhole.com", 
     67           "spammotel.com", "trash-mail.de", "woodyland.org" 
     68           ); 
     69 
     70        /** 
     71         * Name email will been sent from 
     72         * 
     73         * @var string 
     74         * 
     75         * @access private 
     76         */ 
     77        private $_fromName; 
     78 
     79        /** 
     80         * Address email will be sent from 
     81         * 
     82         * @var string 
     83         * 
     84         * @access private 
     85         */ 
     86        private $_fromEmail; 
     87 
     88        /** 
     89         * Name email will be sent to 
     90         * 
     91         * @var string 
     92         * 
     93         * @access private 
     94         */ 
     95        private $_toName; 
     96 
     97        /** 
     98         * Address email will be sent to 
     99         * 
     100         * @var string 
     101         * 
     102         * @access private 
     103         */ 
     104        private $_toEmail; 
     105 
     106        /** 
     107         * Subject of email 
     108         * 
     109         * @var string 
     110         * 
     111         * @access private 
     112         */ 
     113        private $_subject; 
     114 
     115        /** 
     116         * Content of email 
     117         * 
     118         * @var string 
     119         * 
     120         * @access private 
     121         */ 
     122        private $_body; 
     123 
     124    /** 
     125     * Encodes the MIME header 
     126     * 
     127     * @param string $header Header of email 
     128     * 
     129     * @return string Encoded MIME header 
     130     * 
     131     * @access private 
     132     * 
     133     * @see http://www.php.net/manual/en/function.mb-send-mail.php 
     134     */ 
     135        private function _encodeMimeHeader($header) 
    71136        { 
    72137                // BASE 64 according to the RFC 
    73                 // Taken from : www.php.net mb_send_mail comments 
    74138                $header = preg_replace('/([^a-z ])/ie', 'sprintf("=%02x",ord(StripSlashes("\\1")))', $header); 
    75139                $header = str_replace(' ', '_', $header); 
     
    77141        } 
    78142 
     143        /** 
     144         * Returns name of sender of email 
     145         * 
     146         * @return string Name of sender of email 
     147         * 
     148         * @access public 
     149         */ 
     150        public function getSenderName() 
     151        { 
     152                return $this->_fromName; 
     153        } 
     154 
     155        /** 
     156         * Sets name of sender of email 
     157         * 
     158         * @param string $name Name of sender of email 
     159         * 
     160         * @return void 
     161         * 
     162         * @access public 
     163         */ 
     164        public function setSenderName($name) 
     165        { 
     166                // Encode name 
     167                $this->_fromName = $this->_encodeMimeHeader($name); 
     168        } 
     169 
     170        /** 
     171         * Returns address of sender of email 
     172         * 
     173         * @return string Address of sender of email 
     174         * 
     175         * @access public 
     176         */ 
     177        public function getSenderEmail() 
     178        { 
     179                return $this->_fromEmail; 
     180        } 
     181 
     182        /** 
     183         * Sets address of sender of email 
     184         * 
     185         * @param string $mail Address of sender of email 
     186         * 
     187         * @return void 
     188         * 
     189         * @access public 
     190         */ 
     191        public function setSenderEmail($mail) 
     192        { 
     193                $this->_fromEmail = $mail; 
     194        } 
     195 
     196        /** 
     197         * Returns name of recipient of email 
     198         * 
     199         * @return string Name of recipient of email 
     200         * 
     201         * @access public 
     202         */ 
     203        public function getRecipientName() 
     204        { 
     205                return $this->_toName; 
     206        } 
     207 
     208        /** 
     209         * Sets name of recipient of email 
     210         * 
     211         * @param string $name Name of recipient of email 
     212         * 
     213         * @return void 
     214         * 
     215         * @access public 
     216         */ 
     217        public function setRecipientName($name) 
     218        { 
     219            // Encode name 
     220                $this->_toName = $this->_encodeMimeHeader($name); 
     221        } 
     222 
     223        /** 
     224         * Returns address of recipient of email 
     225         * 
     226         * @return string Address of recipient of email 
     227         * 
     228         * @access public 
     229         */ 
     230        public function getRecipientEmail() 
     231        { 
     232                return $this->_toEmail; 
     233        } 
     234 
     235        /** 
     236         * Sets address of recipient of email 
     237         * 
     238         * @param string $mail Address of recipient of email 
     239         * 
     240         * @return void 
     241         * 
     242         * @access public 
     243         */ 
     244        public function setRecipientEmail($mail) 
     245        { 
     246                $this->_toEmail = $mail; 
     247        } 
     248 
     249        /** 
     250         * Returns subject of email 
     251         * 
     252         * @return string Subject of email 
     253         * 
     254         * @access public 
     255         */ 
     256        public function getMessageSubject() 
     257        { 
     258                return $this->_subject; 
     259        } 
     260 
     261        /** 
     262         * Sets subject of email 
     263         * 
     264         * @param string $subject Subject of email 
     265         * 
     266         * @return void 
     267         * 
     268         * @access public 
     269         */ 
     270        public function setMessageSubject($subject) 
     271        { 
     272                $this->_subject = $this->_encodeMimeHeader($subject); 
     273        } 
     274 
     275        /** 
     276         * Returns message body of email 
     277         * 
     278         * @return string Message body of email 
     279         * 
     280         * @access public 
     281         */ 
    79282        public function getMessageBody() 
    80283        { 
    81                 return $this->body; 
    82         } 
    83  
    84         public function getMessageSubject() 
    85         { 
    86                 return $this->subject; 
    87         } 
    88  
    89         public function getRecipientName() 
    90         { 
    91                 return $this->to_name; 
    92         } 
    93  
    94         public function getRecipientEmail() 
    95         { 
    96                 return $this->to_email; 
    97         } 
    98  
    99         public function getSenderName() 
    100         { 
    101                 return $this->from_name; 
    102         } 
    103  
    104         public function getSenderEmail() 
    105         { 
    106                 return $this->from_email; 
    107         } 
    108  
    109         // Packs e-mail and send it according to RFC822 
     284                return $this->_body; 
     285        } 
     286 
     287        /** 
     288         * Sets message body of email 
     289         * 
     290         * @param string $body Message body of email 
     291         * 
     292         * @return void 
     293         * 
     294         * @access public 
     295         */ 
     296        public function setMessageBody($body) 
     297        { 
     298                $this->_body = $body; 
     299        } 
     300 
     301        /** 
     302         * Packs email and sends it according to RFC822 
     303         * 
     304         * @return bool True if email could be sent 
     305         * 
     306         * @access public 
     307         */ 
    110308        public function send() 
    111309        { 
    112                 $headers = "From: \"".$this->getSenderName()."\" <".$this->getSenderEmail().">\r\n"; 
    113                 $headers .= "Reply-To: ".$this->getSenderEmail()."\r\n"; 
     310        if ($this->getRecipientName() != "") { 
     311            $headers  = "To: \"" . $this->getRecipientName() . "\" <" . $this->getRecipientEmail() . ">\r\n"; 
     312            } 
     313 
     314                $headers  = "From: \"" . $this->getSenderName() . "\" <" . $this->getSenderEmail() . ">\r\n"; 
     315                $headers .= "Reply-To: " . $this->getSenderEmail() . "\r\n"; 
    114316                $headers .= "Content-Type: text/plain; charset=utf-8"; 
    115                 $args = "-f".$this->getSenderEmail(); 
     317 
     318                if (defined("WIFIDOG_NAME")) { 
     319                  $headers .= "\r\n" . "X-Mailer: " . WIFIDOG_NAME . defined("WIFIDOG_VERSION") ? "/" . WIFIDOG_VERSION : ""; 
     320                } 
     321 
     322                $args = "-f" . $this->getSenderEmail(); 
     323 
    116324                return mail($this->getRecipientEmail(), $this->getMessageSubject(), $this->getMessageBody(), $headers, $args); 
    117325        } 
    118326 
    119         public function setMessageBody($body) 
    120         { 
    121                 $this->body = $body; 
    122         } 
    123  
    124         public function setMessageSubject($subject) 
    125         { 
    126                 $this->subject = $this->encodeMimeHeader($subject); 
    127         } 
    128  
    129         public function setRecipientEmail($mail) 
    130         { 
    131                 $this->to_email = $mail; 
    132         } 
    133  
    134         public function setSenderName($name) 
    135         { 
    136                 // Encode header 
    137                 $this->from_name = $this->encodeMimeHeader($name); 
    138         } 
    139  
    140         public function setSenderEmail($mail) 
    141         { 
    142                 $this->from_email = $mail; 
    143         } 
    144  
    145         /** 
    146          * Validates an e-mail address 
     327        /** 
     328         * Validates an email address 
    147329         * 
    148330         * This function will make sure an e-mail is RFC822 compliant 
    149331         * and is not black listed. 
    150332         * 
    151          * Here's an example of how to use the function: 
    152          * <code> 
    153          * Mail::validateEmailAddress($mail); 
    154          * </code> 
    155          * 
    156          * @param string $mail The e-mail address to validate 
    157          * 
    158          * @return boolean Returns whether the e-mail is valid or not 
    159          * 
    160          * @access public 
     333         * @param string $mail The email address to validate 
     334         * 
     335         * @return bool Returns whether the email address is valid or not 
     336         * 
    161337         * @static 
     338         * @access public 
    162339         */ 
    163340        public static function validateEmailAddress($email) 
    164341        { 
    165                 $matches = null; 
    166                 // Test if the email matches the regexp 
     342            // Init values 
     343                $_matches = null; 
     344                $_retVal = false; 
     345 
     346                // Test if the email address is valid 
    167347                $regex = "/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i"; 
    168                 if (preg_match_all($regex, $email, $matches)) 
    169                 { 
    170                         // If the hostname is black listed, reject the e-mail. 
    171                         $full_hostname = $matches[2][0].".".$matches[3][0]; 
    172                         if(in_array($full_hostname, self::$_hosts_black_list)) 
    173                                 return false; 
    174                         else 
    175                                 return true; 
     348 
     349                if (preg_match_all($regex, $email, $_matches)) { 
     350                        // If the hostname is black listed, reject the email address 
     351                        $full_hostname = $_matches[2][0] . "." . $_matches[3][0]; 
     352 
     353                        if (!in_array($full_hostname, self::$_hosts_black_list)) { 
     354                            $_retVal = true; 
     355                        } 
    176356                } 
    177                 else 
    178                         return false; 
     357 
     358                return $_retVal; 
    179359        } 
    180360 
     
    188368 * End: 
    189369 */ 
     370 
    190371?> 
  • trunk/wifidog-auth/wifidog/config.php

    r938 r952  
    313313 */ 
    314314define('WIFIDOG_NAME', 'WiFiDog Authentication server'); 
    315 define('WIFIDOG_VERSION', 'CVS'); 
     315define('WIFIDOG_VERSION', '(Development)'); 
    316316 
    317317/** 
  • trunk/wifidog-auth/wifidog/include/init_php.php

    r950 r952  
    8484    if (function_exists("apc_clear_cache")) { 
    8585        ini_set("apc.enabled", 0); 
     86        ini_set("apc.optimization", 0); 
    8687 
    8788        /** 
     
    103104    if (function_exists("eaccelerator_rm")) { 
    104105        ini_set("eaccelerator.enable", 0); 
     106        ini_set("eaccelerator.optimizer", 0); 
    105107    } 
    106108} 
  • trunk/wifidog-auth/wifidog/local_content/common/stylesheet.css

    r882 r952  
    189189/** Messages */ 
    190190.errormsg { 
    191     font-weight: bold;   
     191    font-weight: bold; 
    192192    color: red; 
    193193} 
    194194.warningmsg { 
    195     font-weight: bold;   
     195    font-weight: bold; 
    196196    color: teal; 
    197197} 
    198198.successmsg { 
    199     font-weight: bold;   
     199    font-weight: bold; 
    200200    color: green; 
    201201} 
    202202.msg { 
    203     font-weight: bold;   
     203    font-weight: bold; 
    204204    color: black; 
    205205} 
     
    207207/* The content container */ 
    208208.content { 
    209     border: 2px solid gray;  
     209    border: 2px solid gray; 
    210210    width:auto; 
    211211} 
     
    222222 /* The class name of the container */ 
    223223.admin_class { 
    224     /*float: left;*/  
     224    /*float: left;*/ 
    225225    color:grey; 
    226226    border: none; 
     
    228228} 
    229229 
    230 .admin_section_container {  
    231     display: block; 
    232     border: 1px solid #DDDDFF;  
     230.admin_section_container { 
     231    display: block; 
     232    border: 1px solid #DDDDFF; 
    233233    background-color: #FBFBFF; 
    234234    margin: 5px; 
    235     width:auto;  
     235    width:auto; 
    236236} 
    237237#NodeSelector select { 
     
    247247    font-weight: bold; 
    248248} 
    249 .admin_section_data {  
     249.admin_section_data { 
    250250    display: inline; 
    251251} 
     
    343343    font-size: medium; 
    344344    font-weight: bold; 
    345          
     345 
    346346    color: #46a43a; 
    347347    border : 1px solid #46a43a; 
     
    605605} 
    606606 
     607.pretty_fieldset a { 
     608    font-size: 12pt; 
     609} 
     610 
    607611.pretty_fieldset .red { 
    608612    background-color: red; 
     
    623627#map_toolbox { 
    624628    display: inline; 
    625     float: right;        
     629    float: right; 
    626630} 
    627631#map_postalcode_overlay { 
     
    644648#map_outer_hotspots_list { 
    645649    background-color: #ffffff; 
    646     width: 33%;  
     650    width: 33%; 
    647651    height: 500px; 
    648652    overflow: auto; 
    649     float: right;  
     653    float: right; 
    650654} 
    651655#map_hotspots_list { 
     
    654658#map_frame { 
    655659    font: 10pt "Arial",sans-serif; 
    656     width: 66%;  
     660    width: 66%; 
    657661    height: 500px; 
    658662} 
  • trunk/wifidog-auth/wifidog/locale/gen.sh

    r813 r952  
    22    echo '<?php' > smarty.txt 
    33    find ../templates -name "*.html" -exec ./gensmarty.pl {} >> smarty.txt \; 
     4    find ../templates/classes -name "*.tpl" -exec ./gensmarty.pl {} >> smarty.txt \; 
     5    find ../templates/sites -name "*.tpl" -exec ./gensmarty.pl {} >> smarty.txt \; 
    46    find ../local_content -name "*.html" -exec ./gensmarty.pl {} >> smarty.txt \; 
    57    find ../admin/templates -name "*.html" -exec ./gensmarty.pl {} >> smarty.txt \; 
  • trunk/wifidog-auth/wifidog/login/index.php

    r947 r952  
    6060require_once('classes/Network.php'); 
    6161require_once('classes/MainUI.php'); 
    62 require_once('classes/SmartyWifidog.php'); 
    6362 
    6463// Init values 
     
    212211 * Start login interface section 
    213212 */ 
    214  
    215 // Init Smarty 
    216 $smarty = new SmartyWifidog(); 
    217213 
    218214// Init ALL smarty SWITCH values 
  • trunk/wifidog-auth/wifidog/lost_password.php

    r916 r952  
    8080 
    8181            $smarty->assign('message', _('A new password has been emailed to you.')); 
    82             //$smarty->display('templates/validate.html'); 
     82 
    8383            $ui = new MainUI(); 
    84             $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     84            $ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    8585            $ui->display(); 
    8686            exit; 
  • trunk/wifidog-auth/wifidog/lost_username.php

    r916 r952  
    7171 
    7272        $smarty->assign("message", _("Your username has been emailed to you.")); 
    73         //$smarty->display("templates/validate.html"); 
     73 
    7474        $ui = new MainUI(); 
    75         $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     75        $ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    7676        $ui->display(); 
    7777        exit; 
  • trunk/wifidog-auth/wifidog/resend_validation.php

    r916 r952  
    7171 
    7272            $smarty->assign('message', _("An email with confirmation instructions was sent to your email address.")); 
    73             //$smarty->display("templates/validate.html"); 
     73 
    7474            $ui = new MainUI(); 
    75             $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     75            $ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    7676            $ui->display(); 
    7777            exit; 
  • trunk/wifidog-auth/wifidog/signup.php

    r916 r952  
    4040 * @author     Philippe April 
    4141 * @author     Benoit Gregoire <bock@step.polymtl.ca> 
     42 * @author     Max Horvath <max.horvath@maxspot.de> 
    4243 * @copyright  2004-2006 Philippe April 
    4344 * @copyright  2004-2006 Benoit Gregoire, Technologies Coeus inc. 
     45 * @copyright  2006 Max Horvath, maxspot GmbH 
    4446 * @version    Subversion $Id$ 
    4547 * @link       http://www.wifidog.org/ 
     
    5759require_once('classes/Mail.php'); 
    5860 
    59 if (defined("CUSTOM_SIGNUP_URL")) 
    60 { 
    61     header("Location: ".CUSTOM_SIGNUP_URL."?gw=".base64_encode($_SERVER['REQUEST_URI'])); 
     61/** 
     62 * Load custom signup URL if it has been defined in config.php 
     63 */ 
     64if (defined("CUSTOM_SIGNUP_URL")) { 
     65    header("Location: " . CUSTOM_SIGNUP_URL . "?gw=" . base64_encode($_SERVER['REQUEST_URI'])); 
    6266    exit; 
    6367} 
    6468 
     69/** 
     70 * Validates the format of an username 
     71 * 
     72 * @param string $username The username 
     73 * 
     74 * @return void 
     75 * 
     76 * @throws Exeption if no username was given or if the username contains 
     77 *         invalid characters 
     78 */ 
    6579function validate_username($username) 
    6680{ 
    67     if (!isset ($username) || !$username) 
     81    if (!isset ($username) || !$username) { 
    6882        throw new Exception(_('Username is required.')); 
    69  
    70     if (!ereg("^[0-9a-zA-Z_]*$", $username)) 
     83    } 
     84 
     85    if (!ereg("^[0-9a-zA-Z_]*$", $username)) { 
    7186        throw new Exception(_('Username contains invalid characters.')); 
    72 } 
    73  
     87    } 
     88} 
     89 
     90/** 
     91 * Validates the format of an email address 
     92 * 
     93 * @param string $email The email address 
     94 * 
     95 * @return void 
     96 * 
     97 * @throws Exeption if no email address was given or if the format of the email 
     98 *         address is invalid characters or if the domain of the email address 
     99 *         is black-listed 
     100 */ 
    74101function validate_email($email) 
    75102{ 
    76     if (!isset ($email) || !$email) 
     103    if (!isset ($email) || !$email) { 
    77104        throw new Exception(_("A valid email address is required.")); 
    78  
    79         if(Mail::validateEmailAddress($email) === false) 
    80         throw new Exception(_("The email address must be of the form user@domain.com and is not black-listed.")); 
    81 } 
    82  
     105    } 
     106 
     107        if (Mail::validateEmailAddress($email) === false) { 
     108        throw new Exception(_("The email address must be valid (i.e. user@domain.com). Please understand that we also black-listed various temporary-email-address providers.")); 
     109        } 
     110} 
     111 
     112/** 
     113 * Validates the format of a password 
     114 * 
     115 * @param string $password       The password 
     116 * @param string $password_again Copy of password 
     117 * 
     118 * @return void 
     119 * 
     120 * @throws Exeption if no password was given or if the password contains 
     121 *         invalid characters or if the two given passwords don't match or 
     122 *         if the password is too short 
     123 */ 
    83124function validate_passwords($password, $password_again) 
    84125{ 
    85     if (!isset ($password) || !$password) 
     126    if (!isset ($password) || !$password) { 
    86127        throw new Exception(_("A password of at least 6 characters is required.")); 
    87  
    88     if (!ereg("^[0-9a-zA-Z]*$", $password)) 
     128    } 
     129 
     130    if (!ereg("^[0-9a-zA-Z]*$", $password)) { 
    89131        throw new Exception(_("Password contains invalid characters.")); 
    90  
    91     if (!isset ($password_again)) 
     132    } 
     133 
     134    if (!isset ($password_again)) { 
    92135        throw new Exception(_("You must type your password twice.")); 
    93  
    94     if ($password != $password_again) 
     136    } 
     137 
     138    if ($password != $password_again) { 
    95139        throw new Exception(_("Passwords do not match.")); 
    96  
    97     if (strlen($password) < 6) 
     140    } 
     141 
     142    if (strlen($password) < 6) { 
    98143        throw new Exception(_("Password is too short, it must be 6 characters minimum.")); 
    99 } 
    100  
    101 if (isset ($_REQUEST["submit"])) 
    102 { 
     144    } 
     145} 
     146 
     147/** 
     148 * Process signing up 
     149 */ 
     150 
     151// Init ALL smarty SWITCH values 
     152$smarty->assign('sectionTOOLCONTENT', false); 
     153$smarty->assign('sectionMAINCONTENT', false); 
     154 
     155// Init ALL smarty values 
     156$smarty->assign('username', ""); 
     157$smarty->assign('email', ""); 
     158$smarty->assign('error', ""); 
     159$smarty->assign('auth_sources', ""); 
     160$smarty->assign('selected_auth_source', ""); 
     161 
     162if (isset ($_REQUEST["submit"])) { 
     163    // Secure entered values 
    103164    $username = trim($_REQUEST['username']); 
    104165    $email = trim($_REQUEST['email']); 
    105166    $password = trim($_REQUEST['password']); 
    106167    $password_again = trim($_REQUEST['password_again']); 
     168 
    107169    $smarty->assign('username', $username); 
    108170    $smarty->assign('email', $email); 
     171 
    109172    $network = Network::getObject($_REQUEST['auth_source']); 
    110     try 
    111     { 
    112         if (!isset($network)) 
     173 
     174    try { 
     175        if (!isset($network)) { 
    113176            throw new Exception(_("Sorry, this network does not exist !")); 
    114         if (!$network->getAuthenticator()->isRegistrationPermitted()) 
     177        } 
     178 
     179        if (!$network->getAuthenticator()->isRegistrationPermitted()) { 
    115180            throw new Exception(_("Sorry, this network does not accept new user registration !")); 
     181        } 
     182 
     183        // Validate entered values 
    116184        validate_username($username); 
    117185        validate_email($email); 
    118186        validate_passwords($password, $password_again); 
    119187 
    120         if (User :: getUserByUsernameAndOrigin($username, $network)) 
     188        // Check if user exists 
     189        if (User::getUserByUsernameAndOrigin($username, $network)) { 
    121190            throw new Exception(_("Sorry, a user account is already associated to this username. Pick another one.")); 
    122  
    123         if (User :: getUserByEmailAndOrigin($email, $network)) 
     191        } 
     192 
     193        if (User::getUserByEmailAndOrigin($email, $network)) { 
    124194            throw new Exception(_("Sorry, a user account is already associated to this email address.")); 
    125  
    126         $created_user = User :: createUser(get_guid(), $username, $network, $email, $password); 
     195        } 
     196 
     197        // Create user and send him the validation email 
     198        $created_user = User::createUser(get_guid(), $username, $network, $email, $password); 
    127199        $created_user->sendValidationEmail(); 
    128200 
    129         // If the user is at a REAL hotspot, give him his 15 minutes right away 
     201        // If the user is at a REAL hotspot, give him his sign-up minutes right away 
    130202        $gw_id = $session->get(SESS_GW_ID_VAR); 
    131203        $gw_address = $session->get(SESS_GW_ADDRESS_VAR); 
    132204        $gw_port = $session->get(SESS_GW_PORT_VAR); 
    133205 
    134         if($gw_id && $gw_address && $gw_port) 
    135         { 
     206        if ($gw_id && $gw_address && $gw_port) { 
     207            // Init values 
     208            $errmsg = ""; 
     209 
    136210            // Authenticate this new user automatically 
    137211            $authenticated_user = $network->getAuthenticator()->login($username, $password, $errmsg); 
    138212 
    139213            // Make sure the user IDs match 
    140             if(($created_user->getId() == $authenticated_user->getId())) 
    141             { 
     214            if(($created_user->getId() == $authenticated_user->getId())) { 
    142215                $token = $created_user->generateConnectionToken(); 
    143                 header("Location: http://{$gw_address}:{$gw_port}/wifidog/auth?token={$token}"); 
     216 
     217                header("Location: http://" . $gw_address . ":" . $gw_port . "/wifidog/auth?token=" . $token); 
     218            } else { 
     219                header("Location: " . BASE_NON_SSL_PATH); 
    144220            } 
    145             else 
    146                 header("Location: ".BASE_NON_SSL_PATH); 
    147         } 
    148         else 
     221        } else { 
    149222            $smarty->assign('message', _('An email with confirmation instructions was sent to your email address.  Your account has been granted 15 minutes of access to retrieve your email and validate your account.  You may now open a browser window and go to any remote Internet address to obtain the login page.')); 
    150  
    151         //$smarty->display("templates/validate.html"); 
    152  
     223        } 
     224 
     225        /* 
     226         * Render output 
     227         */ 
    153228        $ui = new MainUI(); 
    154         $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     229        $ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    155230        $ui->display(); 
     231 
     232        // We're done ... 
    156233        exit; 
    157234    } 
    158     catch (Exception $e) 
    159     { 
     235 
     236    catch (Exception $e) { 
    160237        $smarty->assign('error', $e->getMessage()); 
    161238    } 
    162239} 
     240 
     241/* 
     242 * Tool content 
     243 */ 
     244 
     245// Set section of Smarty template 
     246$smarty->assign('sectionTOOLCONTENT', true); 
     247 
     248// Compile HTML code 
     249$html = $smarty->fetch("templates/sites/signup.tpl"); 
     250 
     251/* 
     252 * Main content 
     253 */ 
     254 
     255// Reset ALL smarty SWITCH values 
     256$smarty->assign('sectionTOOLCONTENT', false); 
     257$smarty->assign('sectionMAINCONTENT', false); 
     258 
     259// Set section of Smarty template 
     260$smarty->assign('sectionMAINCONTENT', true); 
     261 
    163262// Add the auth servers list to smarty variables 
    164263$sources = array (); 
     264 
    165265// Preserve keys 
    166 $network_array=Network::getAllNetworks(); 
    167 foreach ($network_array as $network) 
    168     if ($network->getAuthenticator()->isRegistrationPermitted()) 
     266$network_array = Network::getAllNetworks(); 
     267 
     268foreach ($network_array as $network) { 
     269    if ($network->getAuthenticator()->isRegistrationPermitted()) { 
    169270        $sources[$network->getId()] = $network->getName(); 
    170  
    171 isset ($sources) && $smarty->assign('auth_sources', $sources); 
     271    } 
     272} 
     273 
     274if (isset($sources)) { 
     275    $smarty->assign('auth_sources', $sources); 
     276} 
     277 
    172278// Pass the account_origin along, if it's set 
    173 isset ($_REQUEST["auth_source"]) && $smarty->assign('selected_auth_source', $_REQUEST["auth_source"]); 
    174  
     279if (isset($_REQUEST["auth_source"])) { 
     280    $smarty->assign('selected_auth_source', $_REQUEST["auth_source"]); 
     281} 
     282 
     283$smarty->assign('SelectNetworkUI', Network::getSelectNetworkUI('auth_source')); 
     284 
     285// Compile HTML code 
     286$html_body = $smarty->fetch("templates/sites/signup.tpl"); 
     287 
     288/* 
     289 * Render output 
     290 */ 
    175291$ui = new MainUI(); 
    176 $smarty->assign('SelectNetworkUI', Network::getSelectNetworkUI('auth_source')); 
    177 $ui->setMainContent($smarty->fetch("templates/signup.html")); 
     292$ui->setToolContent($html); 
     293$ui->setMainContent($html_body); 
    178294$ui->display(); 
    179295 
  • trunk/wifidog-auth/wifidog/templates/signup.html

    r785 r952  
    1 <fieldset class="pretty_fieldset"> 
     1{* 
     2 
     3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 
     4 
     5// +-------------------------------------------------------------------+ 
     6// | WiFiDog Authentication Server                                     | 
     7// | =============================                                     | 
     8// |                                                                   | 
     9// | The WiFiDog Authentication Server is part of the WiFiDog captive  | 
     10// | portal suite.                                                     | 
     11// +-------------------------------------------------------------------+ 
     12// | PHP version 5 required.                                           | 
     13// +-------------------------------------------------------------------+ 
     14// | Homepage:     http://www.wifidog.org/                             | 
     15// | Source Forge: http://sourceforge.net/projects/wifidog/            | 
     16// +-------------------------------------------------------------------+ 
     17// | This program is free software; you can redistribute it and/or     | 
     18// | modify it under the terms of the GNU General Public License as    | 
     19// | published by the Free Software Foundation; either version 2 of    | 
     20// | the License, or (at your option) any later version.               | 
     21// |                                                                   | 
     22// | This program is distributed in the hope that it will be useful,   | 
     23// | but WITHOUT ANY WARRANTY; without even the implied warranty of    | 
     24// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     | 
     25// | GNU General Public License for more details.                      | 
     26// |                                                                   | 
     27// | You should have received a copy of the GNU General Public License | 
     28// | along with this program; if not, contact:                         | 
     29// |                                                                   | 
     30// | Free Software Foundation           Voice:  +1-617-542-5942        | 
     31// | 59 Temple Place - Suite 330        Fax:    +1-617-542-2652        | 
     32// | Boston, MA  02111-1307,  USA       gnu@gnu.org                    | 
     33// |                                                                   | 
     34// +-------------------------------------------------------------------+ 
     35 
     36/** 
     37 * Sign up page 
     38 * 
     39 * @package    WiFiDogAuthServer 
     40 * @subpackage Templates 
     41 * @author     Philippe April 
     42 * @author     Benoit Gregoire <bock@step.polymtl.ca> 
     43 * @author     Max Horvath <max.horvath@maxspot.de> 
     44 * @copyright  2004-2006 Philippe April 
     45 * @copyright  2004-2006 Benoit Gregoire, Technologies Coeus inc. 
     46 * @copyright  2006 Max Horvath, maxspot GmbH 
     47 * @version    Subversion $Id$ 
     48 * @link       http://www.wifidog.org/ 
     49 */ 
     50 
     51*} 
     52 
     53{if $sectionTOOLCONTENT} 
     54{* 
     55    BEGIN section TOOLCONTENT 
     56*} 
     57    <div id="login_form"> 
     58        <h1>{"I'm having difficulties"|_}:</h1> 
     59 
     60        <ul> 
     61            <li><a href="{$base_ssl_path}lost_username.php">{"I Forgot my username"|_}</a></li> 
     62            <li><a href="{$base_ssl_path}lost_password.php">{"I Forgot my password"|_}</a></li> 
     63            <li><a href="{$base_ssl_path}resend_validation.php">{"Re-send the validation email"|_}</a></li> 
     64            <li><a href="{$base_ssl_path}faq.php">{"Frequently asked questions"|_}</a></li> 
     65        </ul> 
     66    </div> 
     67 
     68    <script type="text/javascript"> 
     69        <!-- 
     70            document.getElementById("form_username").focus(); 
     71        //--> 
     72    </script> 
     73{* 
     74    END section TOOLCONTENT 
     75*} 
     76{/if} 
     77 
     78{if $sectionMAINCONTENT} 
     79{* 
     80    BEGIN section MAINCONTENT 
     81*} 
     82    <fieldset class="pretty_fieldset"> 
    283        <legend>{"Register a free account with"|_} {$hotspot_network_name}</legend> 
    384 
    485        <form name="signup_form" method="post"> 
    5         {if $SelectNetworkUI} 
    6         {$SelectNetworkUI} 
    7         {/if} 
    8         <table> 
    9         <tr> 
    10             <th>{"Username desired"|_}:</th> 
    11             <td><input type="text" name="username" value="{$username}" size="20" id="form_username"></td> 
    12         </tr> 
    13         <tr> 
    14             <th>{"Your email address"|_}:</th> 
    15             <td><input type="text" name="email" value="{$email}" size="30"></td> 
    16         </tr> 
    17         <tr> 
    18             <th>{"Password"|_}:</th> 
    19             <td><input type="password" name="password" size="20"></td> 
    20         </tr> 
    21         <tr> 
    22             <th>{"Password (again)"|_}:</th> 
    23             <td><input type="password" name="password_again" size="20"></td> 
    24         </tr> 
    25         <tr> 
    26             <th></th> 
    27             <td><input class="submit" type="submit" name="submit" value="{"Sign-up"|_}"></td> 
    28         </tr> 
    29         </table> 
     86            {if $SelectNetworkUI} 
     87                {$SelectNetworkUI} 
     88            {/if} 
     89 
     90            <table> 
     91                <tr> 
     92                    <th>{"Username desired"|_}:</th> 
     93                    <td><input type="text" name="username" value="{$username}" size="30" id="form_username"></td> 
     94                </tr> 
     95                <tr> 
     96                    <th>{"Your email address"|_}:</th> 
     97                    <td><input type="text" name="email" value="{$email}" size="30"></td> 
     98                </tr> 
     99                <tr> 
     100                    <th>{"Password"|_}:</th> 
     101                    <td><input type="password" name="password" size="30"></td> 
     102                </tr> 
     103                <tr> 
     104                    <th>{"Password (again)"|_}:</th> 
     105                    <td><input type="password" name="password_again" size="30"></td> 
     106                </tr> 
     107                <tr> 
     108                    <th></th> 
     109                    <td><input class="submit" type="submit" name="submit" value="{"Sign-up"|_}"></td> 
     110                </tr> 
     111            </table> 
    30112        </form> 
    31113 
    32114        <hr> 
    33115 
    34         <p><b>{"Please note"|_}</b>: {"While accounts are free, we <em>strongly</em> suggest that you use your previously created account if you have one."|_}</p> 
     116        <p> 
     117            <b>{"Please note"|_}</b>: 
     118            {"While accounts are free, we <em>strongly</em> suggest that you use your previously created account if you have one."|_} 
     119        </p> 
    35120 
    36         <p><b>{"Note to free web-based email users"|_}</b>: {"Sometimes our validation email ends up in the 'spam' folder of some providers. If you have not received any email with the validation URL 5 minutes after submitting this form, please take a look in the spam folder."|_}</p> 
     121        <p> 
     122            <b>{"Note to free web-based email users"|_}</b>: 
     123            {"Sometimes our validation email ends up in the 'spam' folder of some providers. If you have not received any email with the validation URL 5 minutes after submitting this form, please take a look in the spam folder."|_} 
     124        </p> 
    37125 
    38         <p>{"You can also use the following links if you need help"|_}:</p> 
    39         <ul> 
    40         <li><a style="font-size: 12pt;" href="{$smarty.const.BASE_SSL_PATH}lost_username.php">{"I Forgot my username"|_}</a></li> 
    41         <li><a style="font-size: 12pt;" href="{$smarty.const.BASE_SSL_PATH}lost_password.php">{"I Forgot my password"|_}</a></li> 
    42         </ul> 
     126        <p> 
     127            <b>{"You can also use the following links if you need help"|_}:</b> 
     128            <ul> 
     129                <li><a href="{$smarty.const.BASE_SSL_PATH}lost_username.php">{"I Forgot my username"|_}</a></li> 
     130                <li><a href="{$smarty.const.BASE_SSL_PATH}lost_password.php">{"I Forgot my password"|_}</a></li> 
     131            </ul> 
     132        </p> 
     133    </fieldset> 
    43134 
    44 </fieldset> 
    45      
    46 <div id="help"> 
    47     {if $error} 
    48     {$error} 
    49     {else} 
    50     {"Your email address must be valid in order for your account to be activated"|_}. 
    51     {/if} 
    52 </div> 
     135    <div id="help"> 
     136        {if $error} 
     137            <div class="errormsg">{$error}</div> 
     138        {else} 
     139            {"Your email address must be valid in order for your account to be activated"|_}. 
     140        {/if} 
     141    </div> 
    53142 
    54 <script language="javascript"> 
    55 document.getElementById("form_username").focus(); 
    56 </script> 
     143    <script type="text/javascript"> 
     144        <!-- 
     145            document.getElementById("form_username").focus(); 
     146        //--> 
     147    </script> 
     148{* 
     149    END section MAINCONTENT 
     150*} 
     151{/if} 
  • trunk/wifidog-auth/wifidog/templates/sites/login.tpl

    r948 r952  
    3535 
    3636/** 
    37  * Content of tool pane 
     37 * Login page 
    3838 * 
    3939 * @package    WiFiDogAuthServer 
     
    8989    </div> 
    9090 
    91     <script type="text/javascript" language="JavaScript"> 
    92     <!-- 
    93         document.getElementById("form_username").focus(); 
    94     //--> 
     91    <script type="text/javascript"> 
     92        <!-- 
     93            document.getElementById("form_username").focus(); 
     94        //--> 
    9595    </script> 
    9696{* 
  • trunk/wifidog-auth/wifidog/templates/validate.html

    r567 r952  
    1     <div id="sent_validation"> 
    2         <p>{$message|nl2br}</p> 
    3     </div> 
     1{* 
     2 
     3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 
     4 
     5// +-------------------------------------------------------------------+ 
     6// | WiFiDog Authentication Server                                     | 
     7// | =============================                                     | 
     8// |                                                                   | 
     9// | The WiFiDog Authentication Server is part of the WiFiDog captive  | 
     10// | portal suite.                                                     | 
     11// +-------------------------------------------------------------------+ 
     12// | PHP version 5 required.                                           | 
     13// +-------------------------------------------------------------------+ 
     14// | Homepage:     http://www.wifidog.org/                             | 
     15// | Source Forge: http://sourceforge.net/projects/wifidog/            | 
     16// +-------------------------------------------------------------------+ 
     17// | This program is free software; you can redistribute it and/or     | 
     18// | modify it under the terms of the GNU General Public License as    | 
     19// | published by the Free Software Foundation; either version 2 of    | 
     20// | the License, or (at your option) any later version.               | 
     21// |                                                                   | 
     22// | This program is distributed in the hope that it will be useful,   | 
     23// | but WITHOUT ANY WARRANTY; without even the implied warranty of    | 
     24// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     | 
     25// | GNU General Public License for more details.                      | 
     26// |                                                                   | 
     27// | You should have received a copy of the GNU General Public License | 
     28// | along with this program; if not, contact:                         | 
     29// |                                                                   | 
     30// | Free Software Foundation           Voice:  +1-617-542-5942        | 
     31// | 59 Temple Place - Suite 330        Fax:    +1-617-542-2652        | 
     32// | Boston, MA  02111-1307,  USA       gnu@gnu.org                    | 
     33// |                                                                   | 
     34// +-------------------------------------------------------------------+ 
     35 
     36/** 
     37 * Validation message 
     38 * 
     39 * @package    WiFiDogAuthServer 
     40 * @subpackage Templates 
     41 * @author     Max Horvath <max.horvath@maxspot.de> 
     42 * @copyright  2006 Max Horvath, maxspot GmbH 
     43 * @version    Subversion $Id$ 
     44 * @link       http://www.wifidog.org/ 
     45 */ 
     46 
     47*} 
     48 
     49<div id="sent_validation"> 
     50    <p>{$message|nl2br}</p> 
     51</div> 
  • trunk/wifidog-auth/wifidog/validate.php

    r916 r952  
    8686 
    8787$ui = new MainUI(); 
    88 $ui->setMainContent($smarty->fetch("templates/validate.html")); 
     88$ui->setMainContent($smarty->fetch("templates/sites/validate.tpl")); 
    8989$ui->display(); 
    9090