]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
UI on profile settings page to opt out of following everyone
authorEvan Prodromou <evan@status.net>
Tue, 26 Oct 2010 19:33:35 +0000 (15:33 -0400)
committerEvan Prodromou <evan@status.net>
Tue, 26 Oct 2010 19:33:35 +0000 (15:33 -0400)
plugins/FollowEveryone/FollowEveryonePlugin.php
plugins/FollowEveryone/User_followeveryone_prefs.php

index 67ed927ce0000799307fd77fcd3b2c2dc004e426..09afbfd8a7595e1ec8fdadc2cc2b7a93e2f8faed 100644 (file)
@@ -150,6 +150,47 @@ class FollowEveryonePlugin extends Plugin
         }
     }
 
+    /**
+     * Show a checkbox on the profile form to ask whether to follow everyone
+     *
+     * @param Action $action The action being executed
+     *
+     * @return boolean hook value
+     */
+
+    function onEndProfileFormData($action)
+    {
+        $user = common_current_user();
+
+        $action->elementStart('li');
+        // TRANS: Checkbox label in form for profile settings.
+        $action->checkbox('followeveryone', _('Follow everyone'),
+                          ($action->arg('followeveryone')) ?
+                          $action->arg('followeveryone') :
+                          User_followeveryone_prefs::followEveryone($user->id));
+        $action->elementEnd('li');
+
+        return true;
+    }
+
+    /**
+     * Save checkbox value for following everyone
+     *
+     * @param Action $action The action being executed
+     *
+     * @return boolean hook value
+     */
+
+    function onEndProfileSaveForm($action)
+    {
+        $user = common_current_user();
+
+        User_followeveryone_prefs::savePref($user->id,
+                                            $action->boolean('followeveryone'));
+
+        return true;
+    }
+
     /**
      * Provide version information about this plugin.
      *
index 44375d04249794fd2118133b9041e443987bff21..d1d9b5f3f75d03bfd7b3224c377e25880ab6c3c9 100644 (file)
@@ -145,4 +145,22 @@ class User_followeveryone_prefs extends Memcached_DataObject
             return (bool)$ufep->followeveryone;
         }
     }
+
+    static function savePref($user_id, $followEveryone)
+    {
+        $ufep = self::staticGet('user_id', $user_id);
+
+        if (empty($ufep)) {
+            $ufep = new User_followeveryone_prefs();
+            $ufep->user_id = $user_id;
+            $ufep->followeveryone = $followEveryone;
+            $ufep->insert();
+        } else {
+            $orig = clone($ufep);
+            $ufep->followeveryone = $followEveryone;
+            $ufep->update();
+        }
+
+        return true;
+    }
 }