OSDN Git Service

uri_pickup_normalize_pathtofile(): Added
authorhenoheno <henoheno>
Wed, 31 Dec 2008 15:44:14 +0000 (00:44 +0900)
committerhenoheno <henoheno>
Wed, 31 Dec 2008 15:44:14 +0000 (00:44 +0900)
uri_pickup_normalize(): Added the third argument $pathtofile

spam/SpamPickupTest.php
spam/spam_pickup.php

index 98d034b..005ca3c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-// $Id: SpamPickupTest.php,v 1.6 2008/12/30 11:13:49 henoheno Exp $
+// $Id: SpamPickupTest.php,v 1.7 2008/12/31 15:44:14 henoheno Exp $
 // Copyright (C) 2007 heno
 //
 // Design test case for spam.php (called from runner.php)
@@ -368,6 +368,14 @@ EOF;
                $results = uri_pickup_normalize(uri_pickup($test_string));
                $this->assertEquals('sss',            $results[0]['host']);
                $this->assertEquals('foo.html',       $results[0]['file']);
+
+               // uri_pickup_normalize_pathtofile()
+               $test_string = ' http://example.com/path/to/directory-accidentally-not-ended-with-slash ';
+               $results = uri_pickup_normalize_pathtofile(uri_pickup($test_string));
+               $this->assertEquals('/path/to/directory-accidentally-not-ended-with-slash',
+                       $results[0]['pathtofile']);
+               $this->assertEquals(FALSE, isset($results[0]['path']));
+               $this->assertEquals(FALSE, isset($results[0]['file']));
        }
 
        function testFunc_spam_uri_pickup()
index 3467348..c1a4d9d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-// $Id: spam_pickup.php,v 1.64 2008/12/30 11:13:49 henoheno Exp $
+// $Id: spam_pickup.php,v 1.65 2008/12/31 15:44:14 henoheno Exp $
 // Copyright (C) 2006-2007 PukiWiki Developers Team
 // License: GPL v2 or (at your option) any later version
 //
@@ -97,11 +97,15 @@ function uri_pickup_implode($uri = array())
                $tmp[] = ':';
                $tmp[] = & $uri['port'];
        }
-       if (isset($uri['path']) && $uri['path'] !== '') {
-               $tmp[] = & $uri['path'];
-       }
-       if (isset($uri['file']) && $uri['file'] !== '') {
-               $tmp[] = & $uri['file'];
+       if (isset($uri['pathtofile']) && $uri['pathtofile'] !== '') {
+               $tmp[] = & $uri['pathtofile'];
+       } else {
+               if (isset($uri['path']) && $uri['path'] !== '') {
+                       $tmp[] = & $uri['path'];
+               }
+               if (isset($uri['file']) && $uri['file'] !== '') {
+                       $tmp[] = & $uri['file'];
+               }
        }
        if (isset($uri['query']) && $uri['query'] !== '') {
                $tmp[] = '?';
@@ -120,7 +124,7 @@ function uri_pickup_implode($uri = array())
 
 // Normalize an array of URI arrays
 // NOTE: Give me the uri_pickup() results
-function uri_pickup_normalize(& $pickups, $destructive = TRUE)
+function uri_pickup_normalize(& $pickups, $destructive = TRUE, $pathtofile = FALSE)
 {
        if (! is_array($pickups)) return $pickups;
 
@@ -145,6 +149,28 @@ function uri_pickup_normalize(& $pickups, $destructive = TRUE)
                }
        }
 
+       if ($pathtofile) {
+               return uri_pickup_normalize_pathtofile($pickups, TRUE);
+       } else {
+               return $pickups;
+       }
+}
+
+// Normalize: 'path' + 'file' = 'pathtofile'
+// In some case, 'file' DOES NOT mean _filename_.
+// [EXAMPLE] http://example.com/path/to/directory-accidentally-not-ended-with-slash
+function uri_pickup_normalize_pathtofile(& $pickups, $removeoriginal = TRUE)
+{
+       if (! is_array($pickups)) return $pickups;
+
+       foreach (array_keys($pickups) as $key) {
+               $_key = & $pickups[$key];
+               if (! isset($_key['pathtofile']) && isset($_key['path'], $_key['file'])) {
+                       $_key['pathtofile'] = $_key['path'] . $_key['file'];
+                       if ($removeoriginal) unset($_key['path'], $_key['file']);
+               }
+       }
+
        return $pickups;
 }