http://www.mediawiki.org/wiki/Special:Code/MediaWiki/90533

Revision: 90533
Author:   zhenya
Date:     2011-06-21 16:39:29 +0000 (Tue, 21 Jun 2011)
Log Message:
-----------
Class

Added Paths:
-----------
    trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php

Added: trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php               
                (rev 0)
+++ trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php       
2011-06-21 16:39:29 UTC (rev 90533)
@@ -0,0 +1,104 @@
+<?php
+
+class UserStatusClass {
+    
+       /* private */ function __construct($u_id) {
+                global $wgOut, $wgScriptPath;
+                
$wgOut->addScriptFile($wgScriptPath.'/extensions/SocialProfile/UserStatus/UserStatus.js'
 );  //Does not work
+       }
+    
+    public function getStatus($u_id) {
+        $dbr = wfGetDB(DB_SLAVE);
+        $res = $dbr->select('user_status', '*', array('us_user_id' => $u_id), 
__METHOD__);
+        $message = array();
+        if (empty($res)) {
+            $message = '';
+        } else {
+            foreach ($res as $row) {
+                $message = array(
+                    'us_user_id' => $row->us_user_id,
+                    'us_status' => htmlspecialchars($row->us_status),
+                );
+            }
+        }
+        return $message;
+    }
+
+    /*
+     * 
+     */
+
+    public function setStatus($u_id, $message) {
+        if (mb_strlen($message) > 140) { // change
+            //ERROR. Message lenth is too long
+            return;
+        }
+        $dbw = wfGetDB(DB_MASTER);
+        $res = $dbw->select('user_status', '*', array('us_user_id' => $u_id), 
__METHOD__);
+        $i = 0;
+        foreach ($res as $row)
+            $i++;
+        if ($i == 0) {
+            $dbw->insert(
+                    'user_status',
+                    /* SET */ array(
+                'us_user_id' => $u_id,
+                'us_status' => $message,), __METHOD__
+            );
+        } else {
+            $dbw->update(
+                    'user_status',
+                    /* SET */ array('us_status' => $message),
+                    /* WHERE */ array('us_user_id' => $u_id), __METHOD__
+            );
+        }
+        $this->useStatusHistory('insert',$u_id);
+        return;
+    }
+
+    /*
+     * Method that manipulates the user_status_history table
+     * $mode - varieble for realization of two methods. 
+     * Variants:
+     *  'insert'
+     *  'select'
+     */
+    public function useStatusHistory($mode,$u_id) {
+        $dbw = wfGetDB(DB_MASTER);
+        $userHistory = $dbw->select('user_status_history', '*', 
array('ush_user_id' => $u_id), __METHOD__, array('ORDER BY' => 'ush_timestamp 
ASC'));
+        $i = 0;
+        $history = array();
+        foreach ($userHistory as $row) {
+            $i++;
+            $history[] = array(
+                'ush_id' => $row->ush_id,
+                'ush_user_id' => $row->ush_user_id,
+                'ush_timestamp' => $row->ush_timestamp,
+                'ush_status' => $row->ush_status,
+            );
+        }
+        if ($mode=='select') return $history;  
+        if ($mode=='insert'){
+            $currentStuts = $this->getStatus($u_id);
+
+            if ($i < 4) {
+                $dbw->insert(
+                        'user_status_history',
+                        /* SET */ array(
+                        'ush_user_id' => $u_id,
+                        'ush_status' => $currentStuts['us_status']), __METHOD__
+                );
+            } else {
+                $dbw->update(
+                        'user_status_history',
+                        /* SET */ array('ush_status' => 
$currentStuts['us_status']), 
+                        /*WHERE*/ array('ush_user_id' => $u_id,
+                                  'ush_timestamp' => 
$history[0]['ush_timestamp']),
+                                  __METHOD__);
+            }
+            return;
+        }
+    }
+}
+
+?>
\ No newline at end of file


Property changes on: 
trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php
___________________________________________________________________
Added: svn:eol-style
   + native


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to