
This addon allows you to create complex criteria for advanced trophies or user group promotions with custom PHP code.
For example, you can use:
- Count the number of threads the user has created in specific forum
- Analyze users signatures
- Count the number of likes on single messages
- Retreive data from addons (like Resource Manager or Question Threads)
- See how many times (and when) user has edited his post
- ...
Moreover you can even combine default xenForo criteria and your custom PHP code!
Your possibilities are limited only by your imagination!
Installation:
- Download an addon archive and unpack it somewhere
- Open upload folder and move src folder to your forum root directory
- In admin panel go to "Add-ons" section and install "PHP Criteria" addon
You can now create advanced trophies/promotions!
How to use:
When creating a new trophy/promotion you can see a new tab called "PHP Callback":

This tab opens a pane where you can set a path to .php class and an exact method to be executed:

For example, according to the image above we need to create a file Criteria.php at src/addons with the following content:
PHP:
<?php
class Criteria
{
public static function trophy_AllForOne(\XF\App $app, \XF\Entity\User $user)
{
//
// YOU CUSTOM CRITERIA CODE GOES BELOW
//
// Getting the database
$db = $app->db();
// Database query for selecting the maximum number of likes for single user post
$query = "SELECT `likes` FROM `xf_post` WHERE `user_id` = ? ORDER BY `likes` DESC LIMIT 1";
// Retrieving the maximum number of likes
$likes = $db->fetchOne($query, [$user->user_id]);
// Checking that we have a result from database (we do expect a number)
if(is_int($likes))
{
// Returning true if user has a message with 5 or more likes or false if he has not
return ($likes >= 5);
}
else
{
return false;
}
}
}