Extension:SocialProfile/Developer information

Overview
SocialProfile consists of 9 components:


 * SystemGifts — awards functionality
 * UserActivity — social recent changes, such as the feed of friends' recent activity, etc.
 * UserBoard — user-to-user messages
 * UserGifts — gifting functionality
 * UserProfile — social profile pages
 * UserRelationship — friend/foe relationships
 * UserStats — statistics, such as the User Levels system
 * UserSystemMessages — used to send "You have advanced to level [fill in this]" messages to users when User Levels is activated ($wgUserLevels is defined)
 * UserWelcome —  parser hook for displaying social info on a wiki page

Of these, UserWelcome is not enabled by default.

If you want to become a SocialProfile developer, feel free to drop Jack Phoenix a line and then apply for commit access.

Uploads
SocialProfile has three special pages, which are used to upload images that are used by SocialProfile:


 * Special:UploadAvatar (SocialProfile/UserProfile/SpecialUploadAvatar.php), which stores its files in, is used to upload users' avatars. This special page can be accessed via the social profile page by any user who has the 'upload' user right (any registered user by default).
 * Special:GiftManagerLogo (SocialProfile/UserGifts/SpecialGiftManagerLogo.php), which stores its files in, is used to upload images associated with user-to-user gifts. This special page can be accessed via Special:GiftManager by any user with the 'giftmanager' user right (administrators and members of the staff group by default). If $wgMaxCustomUserGiftCount is greater than 0, then normal users (users without the 'giftmanager' user right) can access this special page, too.
 * Special:SystemGiftManagerLogo (SocialProfile/SystemGifts/SpecialSystemGiftManagerLogo.php), which stores its files in, is used to upload award (system gift) images. This special page can be accessed by users with the 'awardsmanage' user right (administrators and members of the staff group by default).

Files uploaded via these special pages are not treated as normal MediaWiki files.

Image file name formats:
 * user avatars:  (i.e. testwiki_1_l.png; size can be l for large, ml for medium-large, s for small)
 * gift images:  (i.e. 4_m.gif)
 * award (system gift) images:  (i.e. sg_15_s.jpg)

In the past, all of these special pages used ImageMagick to resize the images. Since r93067, PHP's GD library has been supported so SocialProfile's image uploads should function properly even on platforms where ImageMagick is not available.

Hooks
There are several hooks in the SocialProfile codebase which allow you to alter or inject data.

If you need more hooks added to the core of SocialProfile, please discuss with Jack Phoenix about it, preferrably providing a good reason why a new hook should be added. :-)

Customization of Profile
You can add anything above and below both columns of the profile by the following hooks:

Example extension that uses UserProfile's hooks
The following piece of code adds a "Xbox Gamecard" section to social profile pages: