]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
SubMirror wizard work in progress: Twitter option now lets you type in a username...
authorBrion Vibber <brion@pobox.com>
Wed, 16 Mar 2011 00:15:25 +0000 (17:15 -0700)
committerBrion Vibber <brion@pobox.com>
Wed, 16 Mar 2011 00:15:25 +0000 (17:15 -0700)
plugins/SubMirror/actions/addmirror.php
plugins/SubMirror/actions/basemirror.php
plugins/SubMirror/actions/mirrorsettings.php
plugins/SubMirror/lib/addmirrorform.php
plugins/SubMirror/lib/addtwittermirrorform.php [new file with mode: 0644]

index 8c3a9740f3cd3528dd051ae596c621b362717070..31805c166936088e19c8f9306093384c8cfc1d57 100644 (file)
@@ -59,11 +59,27 @@ class AddMirrorAction extends BaseMirrorAction
     function prepare($args)
     {
         parent::prepare($args);
-        $this->feedurl = $this->validateFeedUrl($this->trimmed('feedurl'));
+        $feedurl = $this->getFeedUrl();
+        $this->feedurl = $this->validateFeedUrl($feedurl);
         $this->profile = $this->profileForFeed($this->feedurl);
         return true;
     }
 
+    function getFeedUrl()
+    {
+        $provider = $this->trimmed('provider');
+        switch ($provider) {
+        case 'feed':
+            return $this->trimmed('feedurl');
+        case 'twitter':
+            $screenie = $this->trimmed('screen_name');
+            $base = 'http://api.twitter.com/1/statuses/user_timeline.atom?screen_name=';
+            return $base . urlencode($screenie);
+        default:
+            throw new Exception('Internal form error: unrecognized feed provider.');
+        }
+    }
+
     function saveMirror()
     {
         if ($this->oprofile->subscribe()) {
index 3e3431103f1a0b030e699b06c50af5d2f7c56297..843dfb92e1600c671866d7c6c1945b304ac1dbf6 100644 (file)
@@ -68,7 +68,7 @@ abstract class BaseMirrorAction extends Action
         if (common_valid_http_url($url)) {
             return $url;
         } else {
-            $this->clientError(_m("Invalid feed URL."));
+            $this->clientError(sprintf(_m("Invalid feed URL: %s"), $url));
         }
     }
 
index ae09111ec4981b4b2ddf04af06ea4100bc50a2c7..90bbf3dffb30f0dd0e3e301ac67a74f7dfb62318 100644 (file)
@@ -100,7 +100,20 @@ class MirrorSettingsAction extends SettingsAction
 
     function showAddFeedForm()
     {
-        $form = new AddMirrorForm($this);
+        switch ($this->arg('provider')) {
+        case 'statusnet':
+            break;
+        case 'twitter':
+            $form = new AddTwitterMirrorForm($this);
+            break;
+        case 'wordpress':
+            break;
+        case 'linkedin':
+            break;
+        case 'feed':
+        default:
+            $form = new AddMirrorForm($this);
+        }
         $form->show();
     }
 
index e1d50c272c80954959fd1471b0ee52df5e687f8b..17edbd5e968c1cf8db34fc7ed1ca41ce5392028a 100644 (file)
@@ -49,6 +49,7 @@ class AddMirrorForm extends Form
      */
     function formData()
     {
+        $this->out->hidden('provider', 'feed');
         $this->out->elementStart('fieldset');
 
         $this->out->elementStart('ul');
@@ -67,7 +68,7 @@ class AddMirrorForm extends Form
         $this->out->elementEnd('fieldset');
     }
 
-    private function doInput($id, $name, $label, $value=null, $instructions=null)
+    protected function doInput($id, $name, $label, $value=null, $instructions=null)
     {
         $this->out->element('label', array('for' => $id), $label);
         $attrs = array('name' => $name,
diff --git a/plugins/SubMirror/lib/addtwittermirrorform.php b/plugins/SubMirror/lib/addtwittermirrorform.php
new file mode 100644 (file)
index 0000000..eb28aa0
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ * 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/>.
+ *
+ * @package   StatusNet
+ * @copyright 2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+class AddTwitterMirrorForm extends AddMirrorForm
+{
+
+    /**
+     * Visible or invisible data elements
+     *
+     * Display the form fields that make up the data of the form.
+     * Sub-classes should overload this to show their data.
+     *
+     * @return void
+     */
+    function formData()
+    {
+        $this->out->hidden('provider', 'twitter');
+        $this->out->elementStart('fieldset');
+
+        $this->out->elementStart('ul');
+
+        $this->li();
+        $this->doInput('addmirror-feedurl',
+                       'screen_name',
+                       _m('Twitter username:'),
+                       $this->out->trimmed('screen_name'));
+        $this->unli();
+
+        $this->li();
+        $this->out->submit('addmirror-save', _m('BUTTON','Add feed'));
+        $this->unli();
+        $this->out->elementEnd('ul');
+        $this->out->elementEnd('fieldset');
+    }
+}