------------------------------------------------------------
revno: 901
committer: Roger Martin <[email protected]>
branch nick: aikiframework
timestamp: Wed 2011-10-05 23:27:43 +0200
message:
  extensions can be filtered
modified:
  src/libs/aiki.php


--
lp:aikiframework
https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk

Your team Aiki Framework Developers is subscribed to branch lp:aikiframework.
To unsubscribe from this branch go to 
https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk/+edit-subscription
=== modified file 'src/libs/aiki.php'
--- src/libs/aiki.php	2011-10-04 19:45:24 +0000
+++ src/libs/aiki.php	2011-10-05 21:27:43 +0000
@@ -45,11 +45,11 @@
         $this->pretty_url = isset($_GET["pretty"]) ?  $_GET["pretty"] : "" ;
     }
 
-
+   
     /**
-     * return pretty url (path of url request)
-     * Example www.foo.com/bar/something bar/something is the pretty url.
-     * @return string
+     * magic method that allowed on demand libs and extensions
+     *
+     * @return object loaded class or false
      */
 
     public function __get ($what) {        
@@ -69,7 +69,6 @@
     public function load($class) {
         global $AIKI_ROOT_DIR;
 
-
         if (isset($this->$class))
             return $this->$class;
 
@@ -77,12 +76,26 @@
         // assets/extension/$class/$class.php
         if (file_exists($AIKI_ROOT_DIR.'/libs/'.$class.'.php'))     {
             require_once($AIKI_ROOT_DIR.'/libs/'.$class.'.php');
-        } elseif(file_exists($AIKI_ROOT_DIR.'/assets/extensions/'.$class.'.php')) {
-            require_once($AIKI_ROOT_DIR.'/assets/extensions/'.$class.'.php');
-        } elseif(file_exists( $AIKI_ROOT_DIR.'/assets/extensions/'.$class.'/'.$class.'.php')) {
-            require_once($AIKI_ROOT_DIR.'/assets/extensions/'.$class.'/'.$class.'.php');
         } else {
-            return false;
+            
+            // filter extensions..
+            $allowed = ",". $this->config->get("extensions-allowed","ALL").",";   
+            // a tip..be sure "web" doesn't match "web2date".
+                    
+            if ( $allowed != ",ALL,"){        
+                if ($allowed ==",NONE," or strpos($allowed,$class)===false){
+                    return false;   
+                }                
+            }
+                    
+            if(file_exists($AIKI_ROOT_DIR."/assets/extensions/{$class}.php")) {
+                require_once($AIKI_ROOT_DIR."/assets/extensions/{$class}.php");
+            } elseif (file_exists( $AIKI_ROOT_DIR.'/assets/extensions/{$class}/{$class}.php')) {
+                require_once($AIKI_ROOT_DIR."/assets/extensions/{$class}/{$class}.php");
+            } else {
+                return false;
+            }
+                        
         }
 
         $object = new $class();

_______________________________________________
Mailing list: https://launchpad.net/~aikiframework-devel
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~aikiframework-devel
More help   : https://help.launchpad.net/ListHelp

Reply via email to