]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
better parsing of query for action and page handlers
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 18 Dec 2009 12:39:02 +0000 (12:39 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 18 Dec 2009 12:39:02 +0000 (12:39 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@3768 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/actions.php
engine/lib/pagehandler.php

index 2a9b930b296cf7b7c843ed79af87ad51f9d9a2c0..ac4d70555c9e0e1a05bcbb3066484781aa25bf44 100644 (file)
 function action($action, $forwarder = "") {
        global $CONFIG;
 
-       $query = parse_url($_SERVER['REQUEST_URI']);
-       if (isset($query['query'])) {
-               $query = $query['query'];
-               $query = rawurldecode($query);
-               $query = explode('&',$query);
-               if (sizeof($query) > 0) {
-                       foreach($query as $queryelement) {
-                               $vals = explode('=',$queryelement, 2);
-                               if (sizeof($vals) > 1) {
-                                       set_input(trim($vals[0]),trim($vals[1]));
+       // if there are any query parameters, make them available from get_input
+       if (strpos($_SERVER['REQUEST_URI'], '?') !== FALSE) {
+               $query = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
+               if (isset($query)) {
+                       parse_str($query, $query_arr);
+                       if (is_array($query_arr)) {
+                               foreach($query_arr as $name => $val) {
+                                       // should we trim name and val?
+                                       set_input($name, $val);
                                }
                        }
                }
        }
-
+       
        $forwarder = str_replace($CONFIG->url, "", $forwarder);
        $forwarder = str_replace("http://", "", $forwarder);
        $forwarder = str_replace("@", "", $forwarder);
@@ -45,10 +44,7 @@ function action($action, $forwarder = "") {
        }
 
        if (isset($CONFIG->actions[$action])) {
-               if (
-                       (isadminloggedin()) ||
-                       (!$CONFIG->actions[$action]['admin'])
-               ) {
+               if ((isadminloggedin()) || (!$CONFIG->actions[$action]['admin'])) {
                        if ($CONFIG->actions[$action]['public'] || $_SESSION['id'] != -1) {
 
                                // Trigger action event TODO: This is only called before the primary action is called. We need to rethink actions for 1.5
index 79ac70c70d780777fa36d83200be576ca32286f8..99b50a2bf2f05b1c29b68af9583e99047c40ec2a 100644 (file)
@@ -20,16 +20,20 @@ function page_handler($handler, $page) {
 
        set_context($handler);
 
-       //parse_url($_SERVER['REQUEST_URI']);
-       $query = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
-       if (isset($query)) {
-               parse_str($query, $query_arr);
-               if (is_array($query_arr)) {
-                       foreach($query_arr as $name => $val) {
-                               set_input($name, $val);
+       // if there are any query parameters, make them available from get_input
+       if (strpos($_SERVER['REQUEST_URI'], '?') !== FALSE) {
+               $query = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
+               if (isset($query)) {
+                       parse_str($query, $query_arr);
+                       if (is_array($query_arr)) {
+                               foreach($query_arr as $name => $val) {
+                                       set_input($name, $val);
+                               }
                        }
                }
        }
+       
+       // if page url ends in a / then last element of $page is an empty string
        $page = explode('/',$page);
 
        if (!isset($CONFIG->pagehandler) || empty($handler)) {