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

Revision: 93541
Author:   zhenya
Date:     2011-07-30 16:52:13 +0000 (Sat, 30 Jul 2011)
Log Message:
-----------
Added SpecialUserStatus.php where u (soon only admin) can delete messages.
Made some changes for the "i like" system(not implemented yet). Fixed some 
things

Modified Paths:
--------------
    trunk/extensions/SocialProfile/SocialProfile.php
    trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php
    trunk/extensions/SocialProfile/UserStatus/UserStatus.css
    trunk/extensions/SocialProfile/UserStatus/UserStatus.js
    trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php
    trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php
    trunk/extensions/SocialProfile/UserStatus/userstatus.sql

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

Modified: trunk/extensions/SocialProfile/SocialProfile.php
===================================================================
--- trunk/extensions/SocialProfile/SocialProfile.php    2011-07-30 16:38:46 UTC 
(rev 93540)
+++ trunk/extensions/SocialProfile/SocialProfile.php    2011-07-30 16:52:13 UTC 
(rev 93541)
@@ -38,7 +38,7 @@
 $wgAutoloadClasses['SpecialViewRelationshipRequests'] = $dir . 
'UserRelationship/SpecialViewRelationshipRequests.php';
 $wgAutoloadClasses['SpecialViewRelationships'] = $dir . 
'UserRelationship/SpecialViewRelationships.php';
 $wgAutoloadClasses['SpecialViewUserBoard'] = $dir . 
'UserBoard/SpecialUserBoard.php';
-
+$wgAutoloadClasses['SpecialUserStatus'] = $dir . 
'UserStatus/SpecialUserStatus.php';
 $wgAutoloadClasses['RemoveAvatar'] = $dir . 
'UserProfile/SpecialRemoveAvatar.php';
 $wgAutoloadClasses['UpdateEditCounts'] = $dir . 
'UserStats/SpecialUpdateEditCounts.php';
 $wgAutoloadClasses['UserBoard'] = $dir . 'UserBoard/UserBoardClass.php';
@@ -73,6 +73,7 @@
 $wgSpecialPages['UserBoard'] = 'SpecialViewUserBoard';
 $wgSpecialPages['ViewRelationshipRequests'] = 
'SpecialViewRelationshipRequests';
 $wgSpecialPages['ViewRelationships'] = 'SpecialViewRelationships';
+$wgSpecialPages['UserStatus'] = 'SpecialUserStatus';
 
 // Special page groups for MW 1.13+
 $wgSpecialPageGroups['AddRelationship'] = 'users';

Modified: trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php
===================================================================
--- trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php      
2011-07-30 16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php      
2011-07-30 16:52:13 UTC (rev 93541)
@@ -1785,7 +1785,7 @@
        function getStatus( $userId ) {
                global $wgUser;
 
-               $us_class = new UserStatusClass( $userId );
+               $us_class = new UserStatusClass();
                $user_status_array = $us_class->getStatus( $userId );
                if ( empty( $user_status_array ) ) {
                        $buf = '';
@@ -1806,7 +1806,7 @@
 
                        return 
"<script>UserStatus.toShowMode('$buf','$userId');</script>";
                } else {
-                       return $buf;
+                       return 
$buf."<script>UserStatus.publicHistoryButton('$userId');</script>";
                }
        }
 

Copied: trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php (from 
rev 92938, trunk/extensions/SocialProfile/UserBoard/SpecialSendBoardBlast.php)
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php             
                (rev 0)
+++ trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php     
2011-07-30 16:52:13 UTC (rev 93541)
@@ -0,0 +1,25 @@
+<?php
+
+class SpecialUserStatus extends UnlistedSpecialPage {
+
+       /**
+        * Constructor
+        */
+       public function __construct() {
+               global $wgOut, $wgScriptPath;
+               
+               parent::__construct( 'UserStatus' );
+               $wgOut->addScriptFile( $wgScriptPath . 
'/extensions/SocialProfile/UserStatus/UserStatus.js' );
+       }
+
+       public function execute( $params ) {
+               global $wgOut;
+               
+               $output = "Enter username: <input type=\"text\"  
id=\"us-name-input\"> ";
+               $output .= "<input type=\"button\" value=\"Find\" 
onclick=\"javascript:UserStatus.specialGetHistory();\">";
+               $output .= "<div id=\"us-special\"> </div>";
+               $wgOut->addHTML($output);
+               return;
+       }
+       
+}

Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus.css
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/UserStatus.css    2011-07-30 
16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserStatus/UserStatus.css    2011-07-30 
16:52:13 UTC (rev 93541)
@@ -1,5 +1,5 @@
 #status-box {
-       width : 400px;
+       width : 440px;
        padding: 0px;
        margin: 0px;
 }
@@ -34,6 +34,7 @@
 #user-status-history {
        background-color: orange;
        color: white;
+       text-align: left;
 }
 
 #user-status-history a {
@@ -54,4 +55,8 @@
 #status-bar {
        margin-left: 20px;
        text-align: left;
+}
+
+#like-status a {
+       text-decoration: none;
 }
\ No newline at end of file

Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus.js
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/UserStatus.js     2011-07-30 
16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserStatus/UserStatus.js     2011-07-30 
16:52:13 UTC (rev 93541)
@@ -15,6 +15,10 @@
                }
                document.getElementById('status-letter-count').innerHTML =len + 
" "+_US_LETTERS;
        },
+       
+       publicHistoryButton: function( id ) {
+               document.getElementById( 'user-status-block' ).innerHTML += 
'<br> <a id="us-link" href="javascript:UserStatus.useHistory(' + id + 
');">'+_US_HISTORY+'</a>';
+       },
     
        toEditMode: function( status, id ) {
                var editbar = '<input id="user-status-input" type="text" 
size="50" value="' + 
@@ -52,5 +56,23 @@
 
        fromHistoryToStatus: function( str ) {
                document.getElementById('user-status-input').value = str;
+       },
+       
+       specialGetHistory: function() {
+               var us_name = document.getElementById("us-name-input").value;
+               var block = document.getElementById("us-special");
+               sajax_do_call( 'SpecialGetStatusByName', [us_name], block );
+       },
+       
+       specialHistoryDelete: function(id) {
+               var block = document.getElementById("us-special");
+                       sajax_do_call( 'SpecialHistoryDelete', [id], block );
+                       this.specialGetHistory();
+       },
+       
+       specialStatusDelete: function(id) {
+               var block = document.getElementById("us-special");
+                       sajax_do_call( 'SpecialStatusDelete', [id], block );
+                       this.specialGetHistory();
        }
 };
\ No newline at end of file

Modified: trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php       
2011-07-30 16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php       
2011-07-30 16:52:13 UTC (rev 93541)
@@ -1,16 +1,15 @@
 <?php
 /**
  * Class to manipulate user-specific status messages.
- *
+ * 
  * @file
  */
 class UserStatusClass {
 
-       /* private */ function __construct( $u_id ) {
+       /* private */ function __construct() {
                global $wgOut, $wgScriptPath;
                $wgOut->addExtensionStyle( $wgScriptPath . 
'/extensions/SocialProfile/UserStatus/UserStatus.css' );
                $wgOut->addScriptFile( $wgScriptPath . 
'/extensions/SocialProfile/UserStatus/UserStatus.js' );
-                
        }
 
        public function getStatus( $u_id ) {
@@ -29,6 +28,7 @@
                } else {
                        foreach ( $res as $row ) {
                                $message = array(
+                                       'us_id' => $row->us_id,
                                        'us_user_id' => $row->us_user_id,
                                        'us_status' => htmlspecialchars( 
$row->us_status ),
                                );
@@ -37,6 +37,12 @@
 
                return $message;
        }
+               
+       public function removeStatus( $status_id ) {
+               $dbr = wfGetDB( DB_MASTER );
+               $dbr->delete('user_status', array( 'us_id' => $status_id ), 
__METHOD__);
+               return;
+       }
 
        /**
         * Add a status message to the database.
@@ -48,7 +54,6 @@
                $message = trim($message);
                if (( mb_strlen( $message ) > 70 ) || ( mb_strlen( $message ) < 
1 ))  {
                        // ERROR. Message length is too long
-                       // @todo Communicate failure to the end-user somehow... 
                        return;
                }
 
@@ -116,6 +121,7 @@
                                'ush_user_id' => $row->ush_user_id,
                                'ush_timestamp' => $row->ush_timestamp,
                                'ush_status' => $row->ush_status,
+                               'ush_likes' => $row->ush_likes,
                        );
                }
 
@@ -151,4 +157,10 @@
                        return;
                }
        }
+       
+       public function removeHistoryStatus( $status_id ) {
+               $dbr = wfGetDB( DB_MASTER );
+               $dbr->delete('user_status_history', array( 'ush_id' => 
$status_id ), __METHOD__);
+               return;
+       }
 }
\ No newline at end of file

Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php      
2011-07-30 16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php      
2011-07-30 16:52:13 UTC (rev 93541)
@@ -5,7 +5,7 @@
 $wgAjaxExportList[] = 'wfSaveStatus';
 
 function wfSaveStatus( $u_id, $status ) {
-       $us_class = new UserStatusClass( $u_id );
+       $us_class = new UserStatusClass();
        $us_class->setStatus( $u_id, $status );
        $user_status_array = $us_class->getStatus( $u_id );
        $buf = $user_status_array['us_status'];
@@ -17,20 +17,72 @@
 $wgAjaxExportList[] = 'wfGetHistory';
 
 function wfGetHistory( $u_id ) {
-       $us_class = new UserStatusClass( $u_id );
+       $us_class = new UserStatusClass();
        $historyArray = $us_class->useStatusHistory('select', $u_id);
                $output='<table id="user-status-history">';
                foreach ($historyArray as $row ) {
                        $time = DateTime::createFromFormat('Y-m-d 
H:i:s',$row['ush_timestamp']);
                
-            $output .= '<tr><td id="status-history-time">'.date_format($time, 
'j M G:i').' </td>';
-            $output .= '<td><a 
href="javascript:UserStatus.fromHistoryToStatus(\''.$row['ush_status'].'\');">'
-                       .$row['ush_status'].'</a></td></tr>';
+            $output .= '<tr><td width="60" 
id="status-history-time">'.date_format($time, 'j M G:i').' </td>';
+            $output .= '<td width="360"><a 
href="javascript:UserStatus.fromHistoryToStatus(\''.$row['ush_status'].'\');">'
+                       .$row['ush_status'].'</a></td>';
+                       //$output .='<td width="20" id="like-status"> <a 
href="javascript:UserStatus.likeIt('.$row['ush_id'].')" title="I like it!" 
>&#9829;</a>  '.$row['ush_likes'].'</td></tr>';
                }
        $output.='</table>';
        return $output;
 }
 
+$wgAjaxExportList[] = 'SpecialGetStatusByName';
+
+function SpecialGetStatusByName( $user_name ) {
+       global $wgUser;
+       $output="";
+       $user_id = $wgUser->idFromName($user_name);
+
+       if (empty ($user_id)) {
+               $output.="<div>Wrong name or user does not exist</div>";
+       } else {
+               $us_class = new UserStatusClass();
+               $currentStatus = $us_class->getStatus($user_id);
+               $output .="<br><div>USER ID: $user_id, USERNAME: 
$user_name</div><br>";
+
+               if (!empty ($currentStatus)) {
+                       $output .="CURRENT STATUS:<br>
+                                               <input id=\"ush_delete\" 
type=\"button\" value=\"Delete\" 
+                                               
onclick=\"javascript:UserStatus.specialStatusDelete('".$currentStatus['us_id']."');\">"
+                                               
.$currentStatus['us_status']."<br><br>";
+               }
+
+               $output .="HISTORY:<br>";
+
+               $userHistory = $us_class->useStatusHistory('select', $user_id);
+               if(empty ($userHistory)) {
+                       $output .= "No history";
+               } else {
+                       foreach ( $userHistory as $row ) {
+                               $output .=  "<input id=\"ush_delete\" 
type=\"button\" value=\"Delete\" 
+                                                       
onclick=\"javascript:UserStatus.specialHistoryDelete('".$row['ush_id']."');\">"
+                                                       
.$row['ush_timestamp']." - ".$row['ush_status']." <br>";
+                       }
+               }
+       }
+       return $output;
+}
+
+$wgAjaxExportList[] = 'SpecialHistoryDelete';
+function SpecialHistoryDelete( $id ) {
+       $us_class = new UserStatusClass();
+       $us_class->removeHistoryStatus($id);
+       return "";
+}
+
+$wgAjaxExportList[] = 'SpecialStatusDelete';
+function SpecialStatusDelete( $id ) {
+       $us_class = new UserStatusClass();
+       $us_class->removeStatus($id);
+       return "";
+}
+
 $wgHooks['MakeGlobalVariablesScript'][] = 'addJSGlobals';
 
 function addJSGlobals( $vars ) {
@@ -46,16 +98,16 @@
 $wgHooks['UserProfileBeginRight'][] = 'wfUserProfileStatusOutput';
 
 function wfUserProfileStatusOutput( $user_profile ) {
-        global $wgOut , $wgEnableUserStatus;
-               if ( $wgEnableUserStatus ) {
-                       $userStatus = $user_profile->getStatus( 
$user_profile->user_id );
-                       $output = '<div id="status-box">
-                                               <div id="status-box-top"></div>
-                                                       <div 
id="status-box-content">
-                                                               <div 
id="user-status-block">' . $userStatus . '</div>
-                                                       </div>
-                                               </div>';
-                       $wgOut->addHTML($output);
-               }
-        return true;
+       global $wgOut , $wgEnableUserStatus;
+       if ( $wgEnableUserStatus ) {
+               $userStatus = $user_profile->getStatus( $user_profile->user_id 
);
+               $output = '<div id="status-box">
+                                       <div id="status-box-top"></div>
+                                               <div id="status-box-content">
+                                                       <div 
id="user-status-block">' . $userStatus . '</div>
+                                               </div>
+                                       </div>';
+               $wgOut->addHTML($output);
+       }
+       return true;
 }
\ No newline at end of file

Modified: trunk/extensions/SocialProfile/UserStatus/userstatus.sql
===================================================================
--- trunk/extensions/SocialProfile/UserStatus/userstatus.sql    2011-07-30 
16:38:46 UTC (rev 93540)
+++ trunk/extensions/SocialProfile/UserStatus/userstatus.sql    2011-07-30 
16:52:13 UTC (rev 93541)
@@ -13,5 +13,6 @@
   `ush_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
   `ush_user_id` int(11) NOT NULL default '0',
   `ush_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
-  `ush_status` varchar(140) NOT NULL default ''
+  `ush_status` varchar(140) NOT NULL default '',
+  `ush_likes` int(11) NOT NULL default '0'
 )/*$wgDBTableOptions*/;


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

Reply via email to