Exemple #1
0
 /**
  * Award badges the user is eligible for
  * @param ElggUser $user
  */
 public static function rewardUser($user = null)
 {
     if (!$user) {
         $user = elgg_get_logged_in_user_entity();
     }
     $reward = new gmReward($user);
     $reward->setLog("Rewarding user with {$user->guid}");
     foreach (self::$rewards as $guid => $badge) {
         // check if the user already has this badge
         if (self::isClaimed($guid, $user->guid)) {
             $reward->setLog("Badge {$badge->entity}->title is already claimed by the user");
             continue;
         }
         // uncovering the badge requires the user to spend points
         // user will need to opt in and claim the badge
         if ($badge->entity->points_cost > 0) {
             $reward->setLog("Badge {$badge->entity}->title requires the user to spend {$badge->entity->points_cost} points; user's action is required");
             continue;
         }
         if (!self::isEligible($guid, $user->guid)) {
             $reward->setLog("User does not meet criteria for badge {$badge->entity}->title");
         }
         if (self::claimBadge($guid, $user->guid)) {
             $reward->setLog("User has been awarded a new badge {$badge->entity}->title");
             $reward->new_user_badges[] = $badge->entity;
         }
     }
     return $reward;
 }
Exemple #2
0
/**
 * Setup entity menu
 *
 * @param string $hook		Equals 'register'
 * @param string $type		Equals 'menu:entity'
 * @param array $return		Current menu
 * @param array $params		Additional params
 * @return array			Updated menu
 */
function entity_menu_setup($hook, $type, $return, $params)
{
    $entity = elgg_extract('entity', $params);
    if (!elgg_instanceof($entity, 'object', HYPEGAMEMECHANICS_BADGE_SUBTYPE)) {
        return $return;
    }
    $return = array();
    if ($entity->canEdit()) {
        $options = array('name' => 'edit', 'text' => elgg_echo('edit'), 'title' => elgg_echo('edit:this'), 'href' => PAGEHANDLER . "/badge/edit/{$entity->guid}", 'priority' => 200);
        $return[] = ElggMenuItem::factory($options);
        $options = array('name' => 'delete', 'text' => elgg_view_icon('delete'), 'title' => elgg_echo('delete:this'), 'href' => "action/badge/delete?guid={$entity->guid}", 'confirm' => elgg_echo('deleteconfirm'), 'priority' => 300);
        $return[] = ElggMenuItem::factory($options);
    }
    if (!gmReward::isClaimed($entity->guid) && gmReward::isEligible($entity->guid)) {
        $options = array('name' => 'claim', 'text' => elgg_echo('mechanics:claim'), 'href' => "action/badge/claim?guid={$entity->guid}", 'is_action' => true, 'confirm' => $entity->points_cost > 0 ? elgg_echo('mechanics:claim:confirm', array($entity->points_cost)) : false, 'priority' => 400);
        $return[] = ElggMenuItem::factory($options);
    }
    return $return;
}