]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add WikiHashtagsPlugin
authorEvan Prodromou <evan@controlyourself.ca>
Fri, 15 May 2009 21:57:26 +0000 (17:57 -0400)
committerEvan Prodromou <evan@controlyourself.ca>
Fri, 15 May 2009 21:57:52 +0000 (17:57 -0400)
plugins/WikiHashtagsPlugin.php [new file with mode: 0644]

diff --git a/plugins/WikiHashtagsPlugin.php b/plugins/WikiHashtagsPlugin.php
new file mode 100644 (file)
index 0000000..4d386e1
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * Plugin to show WikiHashtags content in the sidebar
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Plugin
+ * @package   Laconica
+ * @author    Evan Prodromou <evan@controlyourself.ca>
+ * @copyright 2008 Control Yourself, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://laconi.ca/
+ */
+
+if (!defined('LACONICA')) {
+    exit(1);
+}
+
+define('WIKIHASHTAGSPLUGIN_VERSION', '0.1');
+
+/**
+ * Plugin to use WikiHashtags
+ *
+ * @category Plugin
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://laconi.ca/
+ *
+ * @see      Event
+ */
+
+class WikiHashtagsPlugin extends Plugin
+{
+    function __construct($code=null)
+    {
+        parent::__construct();
+    }
+
+    function onStartShowSections($action)
+    {
+        common_debug('WikiHashtags: got called');
+        $name = $action->trimmed('action');
+
+        if ($name == 'tag') {
+            common_debug('WikiHashtags: called by tag');
+
+            $taginput = $action->trimmed('tag');
+            $tag = common_canonical_tag($taginput);
+
+            if (!empty($tag)) {
+                common_debug('WikiHashtags: have a tag: ' . $tag);
+
+                $url = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=render',
+                               urlencode($tag));
+                $editurl = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=edit',
+                                   urlencode($tag));
+
+                common_debug('WikiHashtags: have an url: ' . $url);
+
+                $context = stream_context_create(array('http' => array('method' => "GET",
+                                                                       'header' =>
+                                                                       "User-Agent: " . $this->userAgent())));
+                $html = @file_get_contents($url, false, $context);
+
+                common_debug('WikiHashtags: results are: ' . $html);
+
+                $action->elementStart('div', array('id' => 'wikihashtags', 'class' => 'section'));
+
+                $action->element('h2', null, _('WikiHashtags'));
+
+                if (!empty($html)) {
+                    $action->element('style', null, 'span.editsection { display: none }');
+                    $action->raw($html);
+                    $action->element('a', array('href' => $editurl),
+                                     _('Edit'));
+                } else {
+                    $action->element('a', array('href' => $editurl),
+                                     sprintf(_('Start the article for #%s on WikiHashtags'), $tag));
+                }
+
+                $action->elementEnd('div');
+            }
+        }
+
+        return true;
+    }
+
+    function userAgent()
+    {
+        return 'WikiHashtagsPlugin/'.WIKIHASHTAGSPLUGIN_VERSION .
+          ' Laconica/' . LACONICA_VERSION;
+    }
+}