From d32e714cc14f54b06a09a203e6ec56d3da01a5a3 Mon Sep 17 00:00:00 2001 From: nickw Date: Thu, 27 May 2010 19:44:55 +0000 Subject: Updating walled garden to register public pages as regular expressions. git-svn-id: http://code.elgg.org/elgg/trunk@6255 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/cron.php | 22 ++++++++++------------ engine/lib/sites.php | 31 +++++++++++++++++++------------ mod/sitepages/start.php | 8 +++----- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/engine/lib/cron.php b/engine/lib/cron.php index 75897fb21..223b6774f 100644 --- a/engine/lib/cron.php +++ b/engine/lib/cron.php @@ -57,18 +57,16 @@ function cron_page_handler($page) { } function cron_public_pages($hook, $type, $return_value, $params) { - global $CONFIG; - - $return_value[] = "{$CONFIG->url}pg/cron/minute"; - $return_value[] = "{$CONFIG->url}pg/cron/fiveminute"; - $return_value[] = "{$CONFIG->url}pg/cron/fifteenmin"; - $return_value[] = "{$CONFIG->url}pg/cron/halfhour"; - $return_value[] = "{$CONFIG->url}pg/cron/hourly"; - $return_value[] = "{$CONFIG->url}pg/cron/daily"; - $return_value[] = "{$CONFIG->url}pg/cron/weekly"; - $return_value[] = "{$CONFIG->url}pg/cron/monthly"; - $return_value[] = "{$CONFIG->url}pg/cron/yearly"; - $return_value[] = "{$CONFIG->url}pg/cron/reboot"; + $return_value[] = 'pg/cron/minute'; + $return_value[] = 'pg/cron/fiveminute'; + $return_value[] = 'pg/cron/fifteenmin'; + $return_value[] = 'pg/cron/halfhour'; + $return_value[] = 'pg/cron/hourly'; + $return_value[] = 'pg/cron/daily'; + $return_value[] = 'pg/cron/weekly'; + $return_value[] = 'pg/cron/monthly'; + $return_value[] = 'pg/cron/yearly'; + $return_value[] = 'pg/cron/reboot'; return $return_value; } diff --git a/engine/lib/sites.php b/engine/lib/sites.php index e6eb71afc..c17154f3d 100644 --- a/engine/lib/sites.php +++ b/engine/lib/sites.php @@ -270,18 +270,22 @@ class ElggSite extends ElggEntity { } } + // always allow index page + if ($url == $CONFIG->url) { + return TRUE; + } + // default public pages $defaults = array( - $CONFIG->url, - "{$CONFIG->url}action/login", - "{$CONFIG->url}pg/register/", - "{$CONFIG->url}action/register", - "{$CONFIG->url}account/forgotten_password.php", - "{$CONFIG->url}action/user/requestnewpassword", - "{$CONFIG->url}pg/resetpassword", - "{$CONFIG->url}upgrade.php", - "{$CONFIG->url}xml-rpc.php", - "{$CONFIG->url}mt/mt-xmlrpc.cgi", + 'action/login', + 'pg/register', + 'action/register', + 'account/forgotten_password\.php', + 'action/user/requestnewpassword', + 'pg/resetpassword', + 'upgrade\.php', + 'xml-rpc\.php', + 'mt/mt-xmlrpc\.cgi', ); // include a hook for plugin authors to include public pages @@ -290,8 +294,11 @@ class ElggSite extends ElggEntity { // lookup admin-specific public pages // allow public pages - if (in_array($url, array_merge($defaults, $plugins))) { - return TRUE; + foreach (array_merge($defaults, $plugins) as $public) { + $pattern = "`^{$CONFIG->url}$public/*$`i"; + if (preg_match($pattern, $url)) { + return TRUE; + } } // non-public page diff --git a/mod/sitepages/start.php b/mod/sitepages/start.php index 943688020..2974d3036 100644 --- a/mod/sitepages/start.php +++ b/mod/sitepages/start.php @@ -201,11 +201,9 @@ function sitepages_ecml_views_hook($hook, $entity_type, $return_value, $params) } function sitepages_public_pages($hook, $type, $return_value, $params) { - global $CONFIG; - - $return_value[] = "{$CONFIG->url}pg/sitepages/read/About/"; - $return_value[] = "{$CONFIG->url}pg/sitepages/read/Terms/"; - $return_value[] = "{$CONFIG->url}pg/sitepages/read/Privacy/"; + $return_value[] = 'pg/sitepages/read/About'; + $return_value[] = 'pg/sitepages/read/Terms'; + $return_value[] = 'pg/sitepages/read/Privacy'; return $return_value; } -- cgit v1.2.3