This is an old revision of the document!
Table of Contents
BetaUserPoints Developers API documentation
Introduction BetaUserPoints - API integration in a Third party component (advanced)
This documentation is priorly dedicated to developers and anyone with sufficient knowledge of PHP language and Joomla 4 component development.
Licence: BetaUserPoints is released under license GNU/GPL License. Author: Bernard Gilly – Adrien Roussel - Martin Brampton. This project started as AlphaUserPoints back in 2008.
Plugin/Rule creation
Plugin creation (new rule creation for a 3rd party component) is done in 2 steps
Step1 - API insertion in a component
Just insert the following API in the component code where needed. The best is to make it follow a user action that could give the users some points or take some. For example : in a comment system component or in a forum, just add the API after the comment or topic INSERT query in the database.
Basic API
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; if ( file_exists($api_AUP)) { require_once $api_AUP; BetaUserPointsHelper::newpoints( 'function_name' ); }`
function\_name is the name of the rule that will be used to attribute points to the current user (if logged in). For each BetaUserPoints integrated rule (system rules), names syntax is as follows:
example: sysplgaup\_newregistered for new users points attribution
It is convenient to keep the same name syntax for third party components plugin as follows:
plgaup\_functionname
Example: plgaup\_newcomment or plgaup\_newtopic for a comment system or forum API integration. To name a rule that would give points when adding a new topic in Kunena: plgaup\_kunena\_topic\_create.
Keep in mind that this method only gives points to the current user logged in. This is the Basic API.
Attribute points to another user than the current user
To give points to anothe user than the one connected, only the user id is required. To get his BetaUserPoints (AUPID) Identity, we just need to use the getAnyUserReferreID(). This method is the one used to give points to an article author when the article is being read by someone on the site.
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; ``if ( file_exists($api_AUP)) ``{ require_once $api_AUP; $aupid = BetaUserPointsHelper::getAnyUserReferreID( $userID ); if ( $aupid ) BetaUserPointsHelper::newpoints( 'function_name', $aupid ); }`
Prevent from attributing points more than once for the same action
To avoid that a user would get points many times for something allready done, we can add a reference key. When calling the BetaUserPointsHelper::newpoints function, a pre check is done on this reference key. This method is used in the rule where a user reading an article would give points to the author.
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; if ( file_exists($api_AUP)) { require_once $api_AUP; $keyreference = BetaUserPointsHelper::buildKeyreference('function_name', ‘item id’ ); BetaUserPointsHelper::newpoints( 'function_name', , $keyreference); }`
=== Adding information datas ===
To add information datas to be displayed in the action details, just add a new parameter as follows:
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; ``if ( file_exists($api_AUP)) { require_once $api_AUP; $keyreference = BetaUserPointsHelper::buildKeyreference('function_name', ‘item id’ ); BetaUserPointsHelper::newpoints( function_name',
, $keyreference,'information_datas'); }`
Using different amounts of points on the same rule
A component might also need to add or to take points for different amounts. For example, when buying goods with points. Products have different prices, a fixed amount in the rule would'nt make it. The API $randompoints parameter comes instead of the amount of points set in the rule. It can be negative in case of purchases or penalities.
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; ``if ( file_exists($api_AUP)) { require_once $api_AUP; $keyreference = BetaUserPointsHelper::buildKeyreference('function_name', ‘item id’ ); BetaUserPointsHelper::newpoints( function_name',, $keyreference,
,-1450); }`
Get the result from a successfull operation
In a more advanced code, if the component routine needs to know if the operation has been successfull or not, (enough amount of points for a purchase in a user account), we can add a 'feedback' parameter. It has a Boolean type value. Code example:
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; ``if ( file_exists($api_AUP)) { require_once $api_AUP; $keyreference=BetaUserPointsHelper::buildKeyreference('plgaup_purchasewithvirtuemart', $transactionID ); if (BetaUserPointsHelper::newpoints( 'plgaup_purchasewithvirtuemart', , $keyreference, 'Product reference: AM-5245', -1290, true)) { [… code continued …] } }`
=== Remove the constraint on the type of user ===
In a customized code component, you can force and remove the constraint on a rule to the user level by adding the parameter _force = 1_. The existing rule will be available now for _guest, registered and special_.
=== Display an additional system message on frontend ===
You can display a specific message on frontend by adding the parameter frontmessage=”You custom message”. API full implementation
`BetaUserPointsHelper::newpoints( string$pluginfunction, [string$AUPIDotheruser =
], [string$keyreference = ], [string$data =
], [integer$randompoints = 0], ``[boolean$feedback = false], [integer$force=0], [string$frontmessage=] );`
Note: If the operation is a points substraction, the account has to have at least the same amount of points. If not, a notice warns the user that he doe'snt have enough points to complete the action (by default). You can set up general parameter in the configuration of BetaUserPoints, in backend administrator to allows your users to have a negative account.
==== Step 2 - XML file creation ====
Then developers have to create an xml file to make easier the installation process in the BetaUserPoints component. This xml file has to be utf-8 encoded (required). All developers of third party extensions for Joomla! can add directly at the root of their frontend component a unique xml file containing all the rules for a single component. Deveoper has to respect the ordering and tags: structure example: [betauserpoints\_rule.xml](images/stories/documentation/betauserpoints/betauserpoints_rule.xml) Tag “component” is the name of the third component like “com\_kunena” or other. As it is the same component, it is worth repeating for each rule in the tag “rule”.
Administrator of the website which install a third component with this xml file can autodetect directly from the button “auto-detect plugins” in control panel of BetaUserPoints.
This xml file has to be utf-8 encoded (required) but not be zipped! Just put this file at the root of frontend component folder or plugin or module and include this file in your installer extension. This file must be named exactly as follows: betauserpoints\_rule.xml
=== Code list for categories : ===
ar → articles
cd → coupons
co → community
fo → forums/comments
li → links
mu → music
ot → other
ph → photo
po → polls
pu → purchase
re → recommend/send to a friend
sh → shopping
su → private
sy → system rules
us → users
vi → video
NOTE : Optionally, you can avoid this step manually by filling all the fields in the creation of a new rule directly in the rule manager (button 'New' in toolbar).
===== Plugin/Rule installation =====
\- auto-detect xml file at the root of frontend component:
Click on the button “Auto-detect plugins” in the control panel of BetaUserPoints after installation of third component, plugin or module. Check regularly or periodically by clicking on this button.
===== Using BetaUserPoints informations in a third party component =====
You can easily use the profile information of a user directly in a third component.
\⇒ Before using a function, you must include the API at least once in your page like this:
`$api_AUP = JPATH_SITE.'/components/com_betauserpoints/helper.php'; if ( file_exists($api_AUP)) { require_once $api_AUP; }`
=== Profile information ===
To get the entire profile information, just use the function getUserInfo();
Just use the referreid of BetaUserPoints user or the Joomla ID of the user (id of Joomla users table).
Use the first method with the referreid to get user Information profile like this :
`BetaUserPointsHelper::getUserInfo($referrerid );`
If you do not have the referreid, you can use the ID of user in the second parameter like this :
`$user = JFactory::getUser(); $userid = $user→id ; $profil = BetaUserPointsHelper::getUserInfo (
, $user→id );`
Then you can get the following user informations: $profil→name $profil→username $profil→registerDate $profil→lastvisitDate $profil→email $profil→referreid $profil→points $profil→max\_points $profil→last\_update $profil→referraluser $profil→referrees $profil→blocked $profil→birthdate $profil→avatar $profil→levelrank $profil→leveldate $profil→gender $profil→aboutme $profil→website $profil→phonehome $profil→phonemobile $profil→address $profil→zipcode $profil→city $profil→country $profil→education $profil→graduationyear $profil→job $profil→facebook $profil→twitter $profil→icq $profil→aim $profil→yim $profil→msn $profil→skype $profil→gtalk $profil→xfire $profil→profileviews
Get AUP avatar of user
Display the image of avatar from BetaUserPoints.
`$avatar = BetaUserPointsHelper:: getAupAvatar( $userid, [$linktoprofil=0], [ $width=48], [$height=48], [$class=], [$otherprofileurl=
] ) echo $avatar ;`
if $linktoprofil set to 1, display avatar with the link to the AUP profil of this user.
Get link to AUP user profile
Get the url to show the profile of a user.
`$linktoAUPprofil = BetaUserPointsHelper::getAupLinkToProfil($userid);`
Get link to AUP users list
Get the url to show the list of users with points etc…
`$linktoAUPusersList = BetaUserPointsHelper:: getAupUsersURL();`
Get avatar Path of a user
Get the avatar path of a specific user
`$avatarPath = BetaUserPointsHelper:: getAvatarPath( $userid );`
Get avatar Live Path of a user
Get the live url avatar path of a specific user
`$avatarLivePath = BetaUserPointsHelper:: getAvatarLivePath( $userid ); `
Get the medals list of a user
`$medalslistuser = getUserMedals($referrerid);`
or
`$medalslistuser = getUserMedals(, $userid);`
return $medallistuser→id
return $medallistuser→rank (name of medal)
return $medallistuser→description (reason for awarded)
return $medallistuser→icon (name file icon)
return $medallistuser→image (name file image) Complete example to display large image of medals:
`$user = JFactory::getUser(); ``$userid = $user→id ; if(!defined(“_AUP_MEDALS_PATH”)) { define('_AUP_MEDALS_PATH', JURI::root() . 'components/com_betauserpoints/assets/images/awards/large/’); } if(!defined(“_AUP_MEDALS_LIVE_PATH”)) { define('_AUP_ MEDALS _LIVE_PATH', JURI::base(true) . '/components/com_betauserpoints/assets/images/awards /large/'); } $medalslistuser = BetaUserPointsHelper::getUserMedals(
, $userid ); for each ( $medalslistuser as $medallistuser ) { echo '<img src=“'. _AUP_MEDALS_LIVE_PATH'.$medallistuser→image . '” alt=“” />'; }`
Get the ReferreID of any user
`$referreid = BetaUserPointsHelper::getAnyUserReferreID( $userID );`
Get the current total points of any user
Use the first method with the referreid to get the total points
`$totalPoints = BetaUserPointsHelper::getCurrentTotalPoints( $referrerid ); `If you do not have the referreid, you can use the ID of user (joomla) in the second parameter like this :
`$user = JFactory::getUser(); $userid = $user→id ; $totalPoints = BetaUserPointsHelper::getCurrentTotalPoints( '', $userid );`
Get the list of activities
`$listActivities = BetaUserPointsHelper::getListActivity($type='all', $userid='all', $numrows=0); ` $params $type = all | positive | negative $params $userid = all or unique userID $params $limit = int (0 by default) example-1 → ————————————————————————- example-1 → $listActivities = BetaUserPointsHelper::getListActivity('all', 'all'); example-1 SAME AS → $listActivities = BetaUserPointsHelper::getListActivity(); example-1 → show all activities with pagination, positive and negative points of activity for all users \———————————————————————————– example-2 → ————————————————————————- example-2 → $user = JFactory::getUser(); example-2 → $userID = $user→id; example-2 → $listActivities = BetaUserPointsHelper::getListActivity('positive',$userID,20); example-2 → show only positive points of activity for the current user logged in and show only 20 rows of recent activities
Returns an array or $rows List of available fields : insert\_date referreid points (of this activity) datareference rule\_name plugin\_function category
Get the next user rank
`$nextrankinfo = BetaUserPointsHelper::getNextUserRank($referrerid='’, $userid='0', currentrank);`
return $nextrankinfo→id return $nextrankinfo→rank (name of rank) return $nextrankinfo→description (description of rank) return $nextrankinfo→levelpoints (level points to reach this rank) return $nextrankinfo→typerank (return 0) return $nextrankinfo→icon (name file icon) return $nextrankinfo→image (name file image)
Get version of AUP
`$num_aup_version = BetaUserPointsHelper::getAupVersion();`
Returns the current version of BetaUserPoints like → 1.0.0
BetaUserPoints is open to third party component
Create your own plugin for BetaUserPoints ! Plugins provide functions which are associated with trigger events.
Available events in BetaUserPoints:
\- onBeforeInsertUserActivityBetaUserPoints - onUpdateBetaUserPoints \- onAfterUpdateBetaUserPoints \- onChangeLevelBetaUserPoints \- onUnlockMedalBetaUserPoints \- onGetNewRankBetaUserPoints \- onResetGeneralPointsBetaUserPoints \- onBeforeDeleteUserActivityBetaUserPoints \- onAfterDeleteUserActivityBetaUserPoints \- onBeforeDeleteAllUserActivitiesBetaUserPoints \- onAfterDeleteAllUserActivitiesBetaUserPoints \- onBeforeMakeRaffleBetaUserPoints \- onAfterMakeRaffleBetaUserPoints
You can see the example file /plugins/betauserpoints/example\_plugin\_aup.php in your Joomla directory with parameters for each functions.
[betauserpoints](/extensions/index.php?option=com_tags&view=tag&id=4-betauserpoints), [alphauserpoints](/extensions/index.php?option=com_tags&view=tag&id=5-alphauserpoints)
* Created on 15 January 2016. * Last updated on 5 April 2023.