Author: chabotc
Date: Sun Aug  2 12:05:10 2009
New Revision: 800038

URL: http://svn.apache.org/viewvc?rev=800038&view=rev
Log:
JIRA-678, allow for chained autoloading

Modified:
    incubator/shindig/trunk/php/config/container.php
    incubator/shindig/trunk/php/index.php

Modified: incubator/shindig/trunk/php/config/container.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/config/container.php?rev=800038&r1=800037&r2=800038&view=diff
==============================================================================
--- incubator/shindig/trunk/php/config/container.php (original)
+++ incubator/shindig/trunk/php/config/container.php Sun Aug  2 12:05:10 2009
@@ -112,6 +112,10 @@
   // Force these libraries to be external (included through <script src="..."> 
tags), this way they could be cached by the browser
   'focedJsLibs' => '',
 
+  // After checking the internal __autoload function, shindig can also call 
the 'extension_autoloader' function to load an 
+  // unknown custom class, this is particuarly useful for when intergrating 
shindig into an existing framework that also depends on autoloading
+  'extension_autoloader' => false,
+
   // Configurable classes. Change these to the class name to use, and make 
sure the auto-loader can find them
   'blacklist_class' => 'BasicGadgetBlacklist',
   'remote_content' => 'BasicRemoteContent',
@@ -158,7 +162,6 @@
   // If your development server is behind a proxy, enter the proxy details 
here in 'proxy.host.com:port' format.
   'proxy' => '',
 
-
   // If your server is behind a reverse proxy, set the real hostname here so 
that OAuth signatures match up, for example:
   // 'http_host' => 'modules.partuza.nl'
   'http_host' => false,

Modified: incubator/shindig/trunk/php/index.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/index.php?rev=800038&r1=800037&r2=800038&view=diff
==============================================================================
--- incubator/shindig/trunk/php/index.php (original)
+++ incubator/shindig/trunk/php/index.php Sun Aug  2 12:05:10 2009
@@ -46,23 +46,10 @@
 // All configurable classes are autoloaded (see config.php for the 
configurable classes)
 // To load these, we scan our entire directory structure
 function __autoload($className) {
-  $locations = array(
-    'src/common',
-    'src/common/sample',
-    'src/gadgets',
-    'src/gadgets/servlet',
-    'src/gadgets/oauth',
-    'src/gadgets/sample',
-    'src/social',
-    'src/social/servlet',
-    'src/social/service',
-    'src/social/opensocial',
-    'src/social/model',
-    'src/social/spi',
-    'src/social/converters',
-    'src/social/oauth',
-    'src/social/sample'
-  );
+  $locations = array('src/common', 'src/common/sample', 'src/gadgets', 
'src/gadgets/servlet', 
+      'src/gadgets/oauth', 'src/gadgets/sample', 'src/social', 
'src/social/servlet', 
+      'src/social/service', 'src/social/opensocial', 'src/social/model', 
'src/social/spi', 
+      'src/social/converters', 'src/social/oauth', 'src/social/sample');
   $extension_class_paths = Config::get('extension_class_paths');
   if (! empty($extension_class_paths)) {
     $locations = array_merge(explode(',', $extension_class_paths), $locations);
@@ -71,27 +58,28 @@
   $fileName = $className . '.php';
   foreach ($locations as $path) {
     if (file_exists("{$path}/$fileName")) {
-      require $path.'/'.$fileName;
-      break;
+      require $path . '/' . $fileName;
+      return;
     }
   }
+  if (($loader = Config::get('extension_autoloader')) && 
function_exists($loader)) {
+    call_user_func($loader, $className);
+  }
 }
 
-$servletMap = array(
-    Config::get('web_prefix') . '/gadgets/files' => 'FilesServlet',
-    Config::get('web_prefix') . '/gadgets/js' => 'JsServlet',
-    Config::get('web_prefix') . '/gadgets/proxy' => 'ProxyServlet',
-    Config::get('web_prefix') . '/gadgets/makeRequest' => 'MakeRequestServlet',
-    Config::get('web_prefix') . '/gadgets/ifr' => 'GadgetRenderingServlet',
-    Config::get('web_prefix') . '/gadgets/metadata' => 'MetadataServlet',
-    Config::get('web_prefix') . '/gadgets/oauthcallback' => 
'OAuthCallbackServlet',
-    Config::get('web_prefix') . '/gadgets/api/rpc' => 'JsonRpcServlet',
-    Config::get('web_prefix') . '/gadgets/api/rest' => 'DataServiceServlet',
-    Config::get('web_prefix') . '/social/rest' => 'DataServiceServlet',
-    Config::get('web_prefix') . '/social/rpc' => 'JsonRpcServlet',
-    Config::get('web_prefix') . '/public.crt' => 'CertServlet',
-    Config::get('web_prefix') . '/public.cer' => 'CertServlet'
-);
+$servletMap = array(Config::get('web_prefix') . '/gadgets/files' => 
'FilesServlet', 
+    Config::get('web_prefix') . '/gadgets/js' => 'JsServlet', 
+    Config::get('web_prefix') . '/gadgets/proxy' => 'ProxyServlet', 
+    Config::get('web_prefix') . '/gadgets/makeRequest' => 
'MakeRequestServlet', 
+    Config::get('web_prefix') . '/gadgets/ifr' => 'GadgetRenderingServlet', 
+    Config::get('web_prefix') . '/gadgets/metadata' => 'MetadataServlet', 
+    Config::get('web_prefix') . '/gadgets/oauthcallback' => 
'OAuthCallbackServlet', 
+    Config::get('web_prefix') . '/gadgets/api/rpc' => 'JsonRpcServlet', 
+    Config::get('web_prefix') . '/gadgets/api/rest' => 'DataServiceServlet', 
+    Config::get('web_prefix') . '/social/rest' => 'DataServiceServlet', 
+    Config::get('web_prefix') . '/social/rpc' => 'JsonRpcServlet', 
+    Config::get('web_prefix') . '/public.crt' => 'CertServlet', 
+    Config::get('web_prefix') . '/public.cer' => 'CertServlet');
 
 // Try to match the request url to our servlet mapping
 $servlet = false;


Reply via email to