]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OpenX/OpenXPlugin.php
* onPluginVersion added.
[quix0rs-gnu-social.git] / plugins / OpenX / OpenXPlugin.php
index 96ed82b447cac3882d79e5e2c1b2ad1606271cab..5d3bb2306ca7a880bde6e80932d3301d1c538bbe 100644 (file)
@@ -31,22 +31,6 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-$_OpenXPlugin_Script = <<<ENDOFSCRIPT
-var m3_u = '%s';
-var m3_r = Math.floor(Math.random()*99999999999);
-if (!document.MAX_used) document.MAX_used = ',';
-document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
-document.write ("?zoneid=%s");
-document.write ('&amp;cb=' + m3_r);
-if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
-document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
-document.write ("&amp;loc=" + escape(window.location));
-if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
-if (document.context) document.write ("&context=" + escape(document.context));
-if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
-document.write ("'><\/scr"+"ipt>");
-ENDOFSCRIPT;
-
 /**
  * Plugin for OpenX Ad Server
  *
@@ -91,11 +75,26 @@ ENDOFSCRIPT;
  *
  * @seeAlso  UAPPlugin
  */
-
 class OpenXPlugin extends UAPPlugin
 {
     public $adScript = null;
 
+    function initialize()
+    {
+        parent::initialize();
+
+        // A little bit of chicanery so we avoid overwriting values that
+        // are passed in with the constructor
+        foreach (array('mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper', 'adScript') as $setting) {
+            $value = common_config('openx', $setting);
+            if (!empty($value)) { // not found
+                $this->$setting = $value;
+            }
+        }
+
+        return true;
+    }
+
     /**
      * Show a medium rectangle 'ad'
      *
@@ -103,7 +102,6 @@ class OpenXPlugin extends UAPPlugin
      *
      * @return void
      */
-
     protected function showMediumRectangle($action)
     {
         $this->showAd($action, $this->mediumRectangle);
@@ -116,7 +114,6 @@ class OpenXPlugin extends UAPPlugin
      *
      * @return void
      */
-
     protected function showRectangle($action)
     {
         $this->showAd($action, $this->rectangle);
@@ -129,7 +126,6 @@ class OpenXPlugin extends UAPPlugin
      *
      * @return void
      */
-
     protected function showWideSkyscraper($action)
     {
         $this->showAd($action, $this->wideSkyscraper);
@@ -142,7 +138,6 @@ class OpenXPlugin extends UAPPlugin
      *
      * @return void
      */
-
     protected function showLeaderboard($action)
     {
         $this->showAd($action, $this->leaderboard);
@@ -156,12 +151,77 @@ class OpenXPlugin extends UAPPlugin
      *
      * @return void
      */
-
     protected function showAd($action, $zone)
     {
-        global $_OpenXPlugin_Script;
+$scr = <<<ENDOFSCRIPT
+var m3_u = '%s';
+var m3_r = Math.floor(Math.random()*99999999999);
+if (!document.MAX_used) document.MAX_used = ',';
+document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
+document.write ("?zoneid=%d");
+document.write ('&amp;cb=' + m3_r);
+if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
+document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
+document.write ("&amp;loc=" + escape(window.location));
+if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
+if (document.context) document.write ("&context=" + escape(document.context));
+if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
+document.write ("'><\/scr"+"ipt>");
+ENDOFSCRIPT;
+
+        $action->inlineScript(sprintf($scr, $this->adScript, $zone));
+        return true;
+    }
+
+    function onRouterInitialized($m)
+    {
+        $m->connect('admin/openx',
+                    array('action' => 'openxadminpanel'));
+
+        return true;
+    }
+
+    function onAutoload($cls)
+    {
+        $dir = dirname(__FILE__);
 
-        $action->inlineScript(sprintf($_OpenXPlugin_Script, $this->adScript, $zone));
+        switch ($cls)
+        {
+        case 'OpenxadminpanelAction':
+            require_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
+            return false;
+        default:
+            return true;
+        }
+    }
+
+    function onEndAdminPanelNav($menu) {
+        if (AdminPanelAction::canAdmin('openx')) {
+            // TRANS: Menu item title/tooltip
+            $menu_title = _m('OpenX configuration');
+            // TRANS: Menu item for site administration
+            $menu->out->menuItem(common_local_url('openxadminpanel'), _m('OpenX'),
+                                 $menu_title, $action_name == 'openxadminpanel', 'nav_openx_admin_panel');
+        }
         return true;
     }
-}
\ No newline at end of file
+
+    /**
+     * Add our version information to output
+     *
+     * @param array &$versions Array of version-data arrays
+     *
+     * @return boolean hook value
+     */
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'OpenX',
+                            'version' => STATUSNET_VERSION,
+                            'author' => 'Evan Prodromou',
+                            'homepage' => 'http://status.net/wiki/Plugin:OpenX',
+                            'rawdescription' =>
+                            // TRANS: Plugin description.
+                            _m('Plugin for <a href="http://www.openx.org/">OpenX Ad Server</a>.'));
+        return true;
+    }
+}