hook_userpoints_info()
This hook allows to define the operations am module uses and allows to provide translatable, dynamic descriptions for these.
Example implementations:
Static description:
/**
* Implements hook_userpoints_info().
*/
function userpoints_userpoints_info() {
return array(
'expiry' => array(
'description' => t('!Points have expired.', userpoints_translation()),
)
);
}
Dynamic description with a callback function:
function userpoints_nc_userpoints_info() {
return array(
'userpoints_nc_node_insert' => array(
'description callback' => 'userpoints_nc_description_callback',
'description' => t('Content was created.'),
),
'userpoints_nc_node_publish' => array(
'description callback' => 'userpoints_nc_description_callback',
),
);
}
The callback function recieves the $operation object and the referenced $entity (if any) to provide a dynamic description.
Example (shortened):
function userpoints_nc_description_callback($operation, $entity) {
$arguments = array();
// Try to load content type name.
if ($operation->entity_type == 'comment' && $entity) {
$node = node_load($entity->nid);
$arguments['%title'] = $node->title;
}
elseif ($operation->entity_type == 'node' && $entity) {
$arguments['%title'] = $entity->title;
}
switch ($operation->operation) {
case 'userpoints_nc_node_insert':
return t('Added %title.', $arguments);
break;
}
}
More features based on this hook are planned, for example a flood control module that allows to define which operation can be executed how often.
Use of description in userpoints_userpoints_api() is deprecated and operation is a technical name
Instead, hook_userpoints_info() should be implemented to provide a description that can be translated. Additionally, operation is now a technical string that is not displayed to normal users anymore. Instead displaying operation and description, only a single column called "Reason" is shown which displays the description, if available or the operation if not.
Example in Drupal 6:
$params = array(
'points' => 5,
'operation' => t('Some operation'),
'description' => t('Description for the operation.'),
);
userpoints_userpoints_api($params);
Example in Drupal 7:
/**
* Implements hook_userpoints_info().
*/
function userpoints_userpoints_info() {
return array(
'mymodule_some_operation' => array(
'description' => t('Description for the operation.'),
)
);
}
$params = array(
'uid' => $user->uid,
'points' => 5,
'operation' => 'mymodule_some_operation',
);
userpoints_userpointsapi($params);