class UserpointsTransactionController in User Points 7.2
Userpoints transaction controller.
Hierarchy
- class \DrupalDefaultEntityController implements DrupalEntityControllerInterface
- class \EntityAPIController implements EntityAPIControllerRevisionableInterface
Expanded class hierarchy of UserpointsTransactionController
1 string reference to 'UserpointsTransactionController'
- userpoints_entity_info in ./
userpoints.module - Implements hook_entity_info().
File
- ./
userpoints.transaction.inc, line 1197 - Contains the UserpointsTransaction and related classes.
View source
class UserpointsTransactionController extends EntityAPIController {
/**
* Overrides EntityAPIController::save().
*
* It is not permitted to update a approved or denied transaction except
* marking it as expird. Any attemt to change a property of such a transaction
* will result in an immediate exception.
*/
public function save($entity, DatabaseTransaction $transaction = NULL) {
// Prevent saving when any of the required properties are missing.
if (!$entity
->getPoints() || !$entity
->getUid() || !$entity
->getOperation()) {
$entity
->abort();
throw new UserpointsTransactionIncompleteException();
}
// Call the before hook to allow modules to change and deny this.
// @todo: Rename this hook?
module_invoke_all('userpoints_transaction_before', $entity);
// Abort if the transaction has been denied.
if ($entity
->isDenied()) {
$entity
->abort();
return FALSE;
}
$return = parent::save($entity, $transaction);
// Update totals if the transaction is approved and not expired.
if ($entity
->isApproved() && !$entity
->isExpired()) {
$this
->updateTotals($entity->tid, $entity->uid, $entity->points);
}
// Display a message unless disabled or no message exists.
if ($entity
->getDisplay() && ($message = $entity
->getMessage())) {
drupal_set_message($message);
}
// Reset original status to current one
$entity
->resetOriginalStatus();
return $return;
}
/**
* Update the total aggregations of the corresponding user.
*/
protected function updateTotals($tid, $uid, $points) {
// Update this category.
$this
->updateTotalsCategory($tid, $uid, $points);
// Update the total over all categories.
$this
->updateTotalsCategory('all', $uid, $points);
}
/**
* Update the totals of a specific category.
*
* Updating the total of all categories is supported by using 'all' for the
* $tid.
*/
protected function updateTotalsCategory($tid, $uid, $points) {
$table = 'userpoints';
if ($tid === 'all') {
// Use a different table for the overall total.
$table = 'userpoints_total';
}
// Always update the time stamp and the total points.
$total = array(
'last_update' => REQUEST_TIME,
'points' => $points + userpoints_get_current_points($uid, $tid),
);
// Update the total max points if necessary.
$max_points_total = userpoints_get_max_points($uid, $tid);
if ($total['points'] > $max_points_total) {
$total['max_points'] = $total['points'];
}
// The keys for the merge query. The tid is only added when not 'all'.
$keys = array(
'uid' => $uid,
);
if ($tid !== 'all') {
$keys['tid'] = $tid;
}
// Save the updates.
db_merge($table)
->key($keys)
->fields($total)
->execute();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DrupalDefaultEntityController:: |
protected | property | Whether this entity type should use the static cache. | |
DrupalDefaultEntityController:: |
protected | property | Static cache of entities, keyed by entity ID. | |
DrupalDefaultEntityController:: |
protected | property | Array of information about the entity. | |
DrupalDefaultEntityController:: |
protected | property | Entity type for this controller instance. | |
DrupalDefaultEntityController:: |
protected | property | Additional arguments to pass to hook_TYPE_load(). | |
DrupalDefaultEntityController:: |
protected | property | Name of the entity's ID field in the entity database table. | |
DrupalDefaultEntityController:: |
protected | property | Name of entity's revision database table field, if it supports revisions. | |
DrupalDefaultEntityController:: |
protected | property | The table that stores revisions, if the entity supports revisions. | |
DrupalDefaultEntityController:: |
protected | function | Attaches data to entities upon loading. | 4 |
DrupalDefaultEntityController:: |
protected | function | Gets entities from the static cache. | 1 |
DrupalDefaultEntityController:: |
protected | function | Stores entities in the static entity cache. | |
DrupalDefaultEntityController:: |
protected | function | Ensures integer entity IDs are valid. | |
DrupalDefaultEntityController:: |
protected | function | Callback for array_filter that removes non-integer IDs. | |
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
protected | property | ||
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
|
EntityAPIController:: |
protected | function |
Overrides DrupalDefaultEntityController::buildQuery(). Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerRevisionableInterface::deleteRevision(). Overrides EntityAPIControllerRevisionableInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
|
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Overridden. Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
public | function | Builds and executes the query for loading. | |
EntityAPIController:: |
protected | function | Renders a single entity property. | |
EntityAPIController:: |
public | function |
Overrides DrupalDefaultEntityController::resetCache(). Overrides DrupalDefaultEntityController:: |
1 |
EntityAPIController:: |
protected | function | Saves an entity revision. | |
EntityAPIController:: |
public | function |
Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface:: |
1 |
EntityAPIController:: |
public | function |
Overridden. Overrides DrupalDefaultEntityController:: |
1 |
UserpointsTransactionController:: |
public | function |
Overrides EntityAPIController::save(). Overrides EntityAPIController:: |
|
UserpointsTransactionController:: |
protected | function | Update the total aggregations of the corresponding user. | |
UserpointsTransactionController:: |
protected | function | Update the totals of a specific category. |