Add a binder for Horde_Service_Facebook object, and use it in
authorMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 1 May 2010 17:29:45 +0000 (13:29 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 1 May 2010 17:29:45 +0000 (13:29 -0400)
services/facebook.php

framework/Core/lib/Horde/Core/Binder/Facebook.php [new file with mode: 0644]
framework/Core/package.xml
horde/services/facebook.php

diff --git a/framework/Core/lib/Horde/Core/Binder/Facebook.php b/framework/Core/lib/Horde/Core/Binder/Facebook.php
new file mode 100644 (file)
index 0000000..ba2be04
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+/**
+ * @category Horde
+ * @package Core
+ */
+class Horde_Core_Binder_Facebook implements Horde_Injector_Binder
+{
+    public function create(Horde_Injector $injector)
+    {
+        global $conf;
+
+        if (empty($conf['facebook']['key']) || empty($conf['facebook']['secret'])) {
+            throw new Horde_Exception('Unable to find required Facebook configuration.');
+        }
+
+        /* Facebook key and secret */
+        $apikey = $conf['facebook']['key'];
+        $secret = $conf['facebook']['secret'];
+
+        /* Create required objects */
+        $context = array('http_client' => $injector->getInstance('Horde_Http_Client'),
+                         'http_request' => $injector->getInstance('Horde_Controller_Request_Http'));
+
+       return new Horde_Service_Facebook($apikey, $secret, $context);
+    }
+
+    public function equals (Horde_Injector_Binder $binder)
+    {
+        return false;
+    }
+}
\ No newline at end of file
index ea946b9..7e0ce8f 100644 (file)
@@ -82,6 +82,7 @@ Application Framework.
        <file name="Template.php" role="php" />
        <file name="Token.php" role="php" />
        <file name="Vfs.php" role="php" />
+       <file name="Facebook.php" role="php" />
       </dir> <!-- /lib/Horde/Core/Binder -->
       <dir name="Factory">
        <file name="Editor.php" role="php" />
@@ -231,6 +232,7 @@ Application Framework.
    <install name="lib/Horde/Core/Binder/Template.php" as="Horde/Core/Binder/Template.php" />
    <install name="lib/Horde/Core/Binder/Token.php" as="Horde/Core/Binder/Token.php" />
    <install name="lib/Horde/Core/Binder/Vfs.php" as="Horde/Core/Binder/Vfs.php" />
+   <install name="lib/Horde/Core/Binder/Facebook.php" as="Horde/Core/Binder/Facebook.php" />
    <install name="lib/Horde/Core/Factory/Editor.php" as="Horde/Core/Factory/Editor.php" />
    <install name="lib/Horde/Core/Factory/Identity.php" as="Horde/Core/Factory/Identity.php" />
    <install name="lib/Horde/Core/Factory/KolabServer.php" as="Horde/Core/Factory/KolabServer.php" />
index 475c3e7..e47d272 100644 (file)
 require_once dirname(__FILE__) . '/../lib/Application.php';
 Horde_Registry::appInit('horde');
 
-if (empty($conf['facebook']['enabled']) ||
-    empty($conf['facebook']['key']) ||
-    empty($conf['facebook']['secret'])) {
-
+$GLOBALS['injector']->addBinder('Facebook', new Horde_Core_Binder_Facebook());
+try {
+    $facebook = $GLOBALS['injector']->getInstance('Facebook');
+} catch (Horde_Exception $e) {
     $horde_url = Horde::url($registry->get('webroot', 'horde') . '/index.php');
     header('Location: ' . $horde_url);
-    exit;
 }
 
-// Facebook key and secret
-$apikey = $conf['facebook']['key'];
-$secret = $conf['facebook']['secret'];
-
-// Create required objects
-$context = array('http_client' => new Horde_Http_Client(),
-                 'http_request' => new Horde_Controller_Request_Http());
-
-$facebook = new Horde_Service_Facebook($apikey, $secret, $context);
-
 // See why we are here.
 if ($token = Horde_Util::getFormData('auth_token')) {
     // Assume we are here for a successful authentication if we have a