]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/implugin.php
The overloaded DB_DataObject function staticGet is now called getKV
[quix0rs-gnu-social.git] / lib / implugin.php
index 8cbf7d33ed59e2cbacba4e95a1f90591f79d4295..3eba3469fd80517704f964d910736a52789da5a7 100644 (file)
@@ -42,7 +42,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 abstract class ImPlugin extends Plugin
 {
     //name of this IM transport
@@ -59,7 +58,6 @@ abstract class ImPlugin extends Plugin
      */
     abstract function normalize($screenname);
 
-
     /**
      * validate (ensure the validity of) a screenname
      *
@@ -79,7 +77,7 @@ abstract class ImPlugin extends Plugin
     /**
      * send a single notice to a given screenname
      * The implementation should put raw data, ready to send, into the outgoing
-     *   queue using enqueue_outgoing_raw()
+     *   queue using enqueueOutgoingRaw()
      *
      * @param string $screenname screenname to send to
      * @param Notice $notice notice to send
@@ -88,13 +86,13 @@ abstract class ImPlugin extends Plugin
      */
     function sendNotice($screenname, $notice)
     {
-        return $this->sendMessage($screenname, $this->format_notice($notice));
+        return $this->sendMessage($screenname, $this->formatNotice($notice));
     }
 
     /**
      * send a message (text) to a given screenname
      * The implementation should put raw data, ready to send, into the outgoing
-     *   queue using enqueue_outgoing_raw()
+     *   queue using enqueueOutgoingRaw()
      *
      * @param string $screenname screenname to send to
      * @param Notice $body text to send
@@ -106,8 +104,8 @@ abstract class ImPlugin extends Plugin
     /**
      * receive a raw message
      * Raw IM data is taken from the incoming queue, and passed to this function.
-     * It should parse the raw message and call handle_incoming()
-     * 
+     * It should parse the raw message and call handleIncoming()
+     *
      * Returning false may CAUSE REPROCESSING OF THE QUEUE ITEM, and should
      * be used for temporary failures only. For permanent failures such as
      * unrecognized addresses, return true to indicate your processing has
@@ -124,7 +122,7 @@ abstract class ImPlugin extends Plugin
      *
      * @return string screenname of this plugin
      */
-    abstract function daemon_screenname();
+    abstract function daemonScreenname();
 
     /**
      * get the microid uri of a given screenname
@@ -135,7 +133,7 @@ abstract class ImPlugin extends Plugin
      */
     function microiduri($screenname)
     {
-        return $this->transport . ':' . $screenname;    
+        return $this->transport . ':' . $screenname;
     }
     //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - MISC ========================\
 
@@ -144,7 +142,7 @@ abstract class ImPlugin extends Plugin
      *
      * @param object $data
      */
-    function enqueue_outgoing_raw($data)
+    function enqueueOutgoingRaw($data)
     {
         $qm = QueueManager::get();
         $qm->enqueue($data, $this->transport . '-out');
@@ -155,7 +153,7 @@ abstract class ImPlugin extends Plugin
      *
      * @param object $data
      */
-    function enqueue_incoming_raw($data)
+    function enqueueIncomingRaw($data)
     {
         $qm = QueueManager::get();
         $qm->enqueue($data, $this->transport . '-in');
@@ -168,11 +166,11 @@ abstract class ImPlugin extends Plugin
      *
      * @return User user
      */
-    function get_user($screenname)
+    function getUser($screenname)
     {
-        $user_im_prefs = $this->get_user_im_prefs_from_screenname($screenname);
+        $user_im_prefs = $this->getUserImPrefsFromScreenname($screenname);
         if($user_im_prefs){
-            $user = User::staticGet('id', $user_im_prefs->user_id);
+            $user = User::getKV('id', $user_im_prefs->user_id);
             $user_im_prefs->free();
             return $user;
         }else{
@@ -180,7 +178,6 @@ abstract class ImPlugin extends Plugin
         }
     }
 
-
     /**
      * given a screenname, get the User_im_prefs object for this transport
      *
@@ -188,7 +185,7 @@ abstract class ImPlugin extends Plugin
      *
      * @return User_im_prefs user_im_prefs
      */
-    function get_user_im_prefs_from_screenname($screenname)
+    function getUserImPrefsFromScreenname($screenname)
     {
         $user_im_prefs = User_im_prefs::pkeyGet(
             array('transport' => $this->transport,
@@ -200,7 +197,6 @@ abstract class ImPlugin extends Plugin
         }
     }
 
-
     /**
      * given a User, get their screenname
      *
@@ -208,9 +204,9 @@ abstract class ImPlugin extends Plugin
      *
      * @return string screenname of that user
      */
-    function get_screenname($user)
+    function getScreenname($user)
     {
-        $user_im_prefs = $this->get_user_im_prefs_from_user($user);
+        $user_im_prefs = $this->getUserImPrefsFromUser($user);
         if ($user_im_prefs) {
             return $user_im_prefs->screenname;
         } else {
@@ -218,7 +214,6 @@ abstract class ImPlugin extends Plugin
         }
     }
 
-
     /**
      * given a User, get their User_im_prefs
      *
@@ -226,7 +221,7 @@ abstract class ImPlugin extends Plugin
      *
      * @return User_im_prefs user_im_prefs of that user
      */
-    function get_user_im_prefs_from_user($user)
+    function getUserImPrefsFromUser($user)
     {
         $user_im_prefs = User_im_prefs::pkeyGet(
             array('transport' => $this->transport,
@@ -246,14 +241,14 @@ abstract class ImPlugin extends Plugin
      *
      * @param boolean success
      */
-    protected function send_from_site($screenname, $msg)
+    protected function sendFromSite($screenname, $msg)
     {
         $text = '['.common_config('site', 'name') . '] ' . $msg;
         $this->sendMessage($screenname, $text);
     }
 
     /**
-     * send a confirmation code to a user
+     * Send a confirmation code to a user
      *
      * @param string $screenname screenname sending to
      * @param string $code the confirmation code
@@ -261,15 +256,18 @@ abstract class ImPlugin extends Plugin
      *
      * @return boolean success value
      */
-    function send_confirmation_code($screenname, $code, $user)
+    function sendConfirmationCode($screenname, $code, $user)
     {
-        $body = sprintf(_('User "%s" on %s has said that your %s screenname belongs to them. ' .
-          'If that\'s true, you can confirm by clicking on this URL: ' .
-          '%s' .
+        // TRANS: Body text for confirmation code e-mail.
+        // TRANS: %1$s is a user nickname, %2$s is the StatusNet sitename,
+        // TRANS: %3$s is the display name of an IM plugin.
+        $body = sprintf(_('User "%1$s" on %2$s has said that your %3$s screenname belongs to them. ' .
+          'If that is true, you can confirm by clicking on this URL: ' .
+          '%4$s' .
           ' . (If you cannot click it, copy-and-paste it into the ' .
-          'address bar of your browser). If that user isn\'t you, ' .
-          'or if you didn\'t request this confirmation, just ignore this message.'),
-          $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', array('code' => $code)));
+          'address bar of your browser). If that user is not you, ' .
+          'or if you did not request this confirmation, just ignore this message.'),
+          $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', null, array('code' => $code)));
 
         return $this->sendMessage($screenname, $body);
     }
@@ -285,7 +283,7 @@ abstract class ImPlugin extends Plugin
      * @return boolean success flag
      */
 
-    function public_notice($notice)
+    function publicNotice($notice)
     {
         // Now, users who want everything
 
@@ -318,18 +316,17 @@ abstract class ImPlugin extends Plugin
      * @return boolean success flag
      */
 
-    function broadcast_notice($notice)
+    function broadcastNotice($notice)
     {
-
         $ni = $notice->whoGets();
 
         foreach ($ni as $user_id => $reason) {
-            $user = User::staticGet($user_id);
+            $user = User::getKV($user_id);
             if (empty($user)) {
                 // either not a local user, or just not found
                 continue;
             }
-            $user_im_prefs = $this->get_user_im_prefs_from_user($user);
+            $user_im_prefs = $this->getUserImPrefsFromUser($user);
             if(!$user_im_prefs || !$user_im_prefs->notify){
                 continue;
             }
@@ -350,7 +347,9 @@ abstract class ImPlugin extends Plugin
             case NOTICE_INBOX_SOURCE_GROUP:
                 break;
             default:
-                throw new Exception(sprintf(_("Unknown inbox source %d."), $reason));
+                // TRANS: Exception thrown when trying to deliver a notice to an unknown inbox.
+                // TRANS: %d is the unknown inbox ID (number).
+                throw new Exception(sprintf(_('Unknown inbox source %d.'), $reason));
             }
 
             common_log(LOG_INFO,
@@ -371,7 +370,7 @@ abstract class ImPlugin extends Plugin
      * @return string plain-text version of the notice, with user nickname prefixed
      */
 
-    function format_notice($notice)
+    function formatNotice($notice)
     {
         $profile = $notice->getProfile();
         return $profile->nickname . ': ' . $notice->content . ' [' . $notice->id . ']';
@@ -384,7 +383,7 @@ abstract class ImPlugin extends Plugin
      * @param string $body message text
      * @return boolean true if the message was a command and was executed, false if it was not a command
      */
-    protected function handle_command($user, $body)
+    protected function handleCommand($user, $body)
     {
         $inter = new CommandInterpreter();
         $cmd = $inter->handle_command($user, $body);
@@ -402,7 +401,7 @@ abstract class ImPlugin extends Plugin
      * @param string $txt message text
      * @return boolean true if autoreply
      */
-    protected function is_autoreply($txt)
+    protected function isAutoreply($txt)
     {
         if (preg_match('/[\[\(]?[Aa]uto[-\s]?[Rr]e(ply|sponse)[\]\)]/', $txt)) {
             return true;
@@ -418,7 +417,7 @@ abstract class ImPlugin extends Plugin
      * @param string $txt message text
      * @return boolean true if OTR
      */
-    protected function is_otr($txt)
+    protected function isOtr($txt)
     {
         if (preg_match('/^\?OTR/', $txt)) {
             return true;
@@ -436,34 +435,34 @@ abstract class ImPlugin extends Plugin
      *
      * @param boolean success
      */
-    protected function handle_incoming($from, $notice_text)
+    protected function handleIncoming($from, $notice_text)
     {
-        $user = $this->get_user($from);
+        $user = $this->getUser($from);
         // For common_current_user to work
         global $_cur;
         $_cur = $user;
 
         if (!$user) {
-            $this->send_from_site($from, 'Unknown user; go to ' .
+            $this->sendFromSite($from, 'Unknown user; go to ' .
                              common_local_url('imsettings') .
                              ' to add your address to your account');
             common_log(LOG_WARNING, 'Message from unknown user ' . $from);
             return;
         }
-        if ($this->handle_command($user, $notice_text)) {
+        if ($this->handleCommand($user, $notice_text)) {
             common_log(LOG_INFO, "Command message by $from handled.");
             return;
-        } else if ($this->is_autoreply($notice_text)) {
+        } else if ($this->isAutoreply($notice_text)) {
             common_log(LOG_INFO, 'Ignoring auto reply from ' . $from);
             return;
-        } else if ($this->is_otr($notice_text)) {
+        } else if ($this->isOtr($notice_text)) {
             common_log(LOG_INFO, 'Ignoring OTR from ' . $from);
             return;
         } else {
 
             common_log(LOG_INFO, 'Posting a notice from ' . $user->nickname);
 
-            $this->add_notice($from, $user, $notice_text);
+            $this->addNotice($from, $user, $notice_text);
         }
 
         $user->free();
@@ -481,14 +480,19 @@ abstract class ImPlugin extends Plugin
      *
      * @param boolean success
      */
-    protected function add_notice($screenname, $user, $body)
+    protected function addNotice($screenname, $user, $body)
     {
         $body = trim(strip_tags($body));
         $content_shortened = common_shorten_links($body);
         if (Notice::contentTooLong($content_shortened)) {
-          $this->send_from_site($screenname, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'),
-                                          Notice::maxContent(),
-                                          mb_strlen($content_shortened)));
+          $this->sendFromSite($screenname,
+                              // TRANS: Message given when a status is too long. %1$s is the maximum number of characters,
+                              // TRANS: %2$s is the number of characters sent (used for plural).
+                              sprintf(_m('Message too long - maximum is %1$d character, you sent %2$d.',
+                                         'Message too long - maximum is %1$d characters, you sent %2$d.',
+                                         Notice::maxContent()),
+                                      Notice::maxContent(),
+                                      mb_strlen($content_shortened)));
           return;
         }
 
@@ -496,11 +500,10 @@ abstract class ImPlugin extends Plugin
             $notice = Notice::saveNew($user->id, $content_shortened, $this->transport);
         } catch (Exception $e) {
             common_log(LOG_ERR, $e->getMessage());
-            $this->send_from_site($from, $e->getMessage());
+            $this->sendFromSite($from, $e->getMessage());
             return;
         }
 
-        common_broadcast_notice($notice);
         common_log(LOG_INFO,
                    'Added notice ' . $notice->id . ' from user ' . $user->nickname);
         $notice->free();
@@ -508,7 +511,7 @@ abstract class ImPlugin extends Plugin
     }
 
     //========================EVENT HANDLERS========================\
-    
+
     /**
      * Register notice queue handler
      *
@@ -532,7 +535,7 @@ abstract class ImPlugin extends Plugin
 
     function onStartEnqueueNotice($notice, &$transports)
     {
-        $profile = Profile::staticGet($notice->profile_id);
+        $profile = Profile::getKV($notice->profile_id);
 
         if (!$profile) {
             common_log(LOG_WARNING, 'Refusing to broadcast notice with ' .
@@ -599,14 +602,14 @@ abstract class ImPlugin extends Plugin
     {
         $transports[$this->transport] = array(
             'display' => $this->getDisplayName(),
-            'daemon_screenname' => $this->daemon_screenname());
+            'daemonScreenname' => $this->daemonScreenname());
     }
 
     function onSendImConfirmationCode($transport, $screenname, $code, $user)
     {
         if($transport == $this->transport)
         {
-            $this->send_confirmation_code($screenname, $code, $user);
+            $this->sendConfirmationCode($screenname, $code, $user);
             return false;
         }
     }
@@ -617,15 +620,22 @@ abstract class ImPlugin extends Plugin
         return true;
     }
 
+    function onHaveImPlugin(&$haveImPlugin) {
+        $haveImPlugin = true; // set flag true (we're loaded, after all!)
+        return false; // stop looking
+    }
+
     function initialize()
     {
         if( ! common_config('queue', 'enabled'))
         {
-            throw new ServerException("Queueing must be enabled to use IM plugins");
+            // TRANS: Server exception thrown trying to initialise an IM plugin without meeting all prerequisites.
+            throw new ServerException(_('Queueing must be enabled to use IM plugins.'));
         }
 
         if(is_null($this->transport)){
-            throw new ServerException('transport cannot be null');
+            // TRANS: Server exception thrown trying to initialise an IM plugin without a transport method.
+            throw new ServerException(_('Transport cannot be null.'));
         }
     }
 }