ab7e69c509b867e903d4b0997879962438fbe0b1
[glcas.git] / libglcas / urlparser.php
1 <?php
2
3 // the purpose of this plugin is to take a url and figure out the owning class that should be called
4 error_log("glcasurlparser loaded");
5
6 class GLCASUrlParser {
7         function __construct($urlconfig, $config)
8         {
9                 $v = print_r($urlconfig, true);
10                 error_log("constructor for urlparser, $v");
11                 $this->urlClasses = $urlconfig;
12                 $this->config = $config;
13         }
14         
15         function getClass($url)
16         {
17                 error_log("getclass for $url");
18                 //echo "<pre>URL CLasses";
19                 //print_r($this->urlClasses);
20                 //echo "</pre>";
21                 $default = "";
22                 $base = "";
23                 if(is_array($this->urlClasses)) {
24                         foreach($this->urlClasses as $key => $val) {
25                                 error_log("checking url $url against $key, $val");
26                                 if($key == "/") {
27                                         $base = $val;
28                                         error_log("base set to $val");
29                                 } 
30                                 
31                                 // TODO: this is quite messy really, need to think about how i do /'s in urls for url parsers
32                                 if($key=="*") {
33                                         $default = $val;
34                                         error_log("catchall set to $val");
35                                 } else if($key != "/") {
36                                         // now the rest
37                                         if(preg_match("/$key/", $url)) {
38                                                 error_log("matched $url to $key and $val");
39                                                 return new $val($this->config);
40                                         }
41                                 }
42                         }
43                         
44                         // check for "bases"
45                         if($url == "/") {
46                                 return new $base($this->config);
47                         }
48                         
49                 }
50                 error_log("get class returns default");
51                 return new $default($this->config);
52         }
53         
54         private $urlClasses;
55         private $config;
56 }
57
58 ?>