Beispiel #1
0
function peopleaggregator_getItems($args)
{
    global $_PA;
    require_once PA::$path . "/api/Item/Item.php";
    $remote_user = @$args['remoteUser'];
    if ($remote_user) {
        if (!$_PA->enable_widgetization_server) {
            throw new PAException(OPERATION_NOT_PERMITTED, "Widgetization disabled; you cannot use remote user functions");
        }
        require_once PA::$path . "/api/User/ShadowUser.php";
        require_once PA::$path . "/api/Rating/Rating.php";
        require_once PA::$path . "/ext/PA_Rating/PA_Rating.php";
        $remote_id = explode(":", $remote_user);
        if (count($remote_id) == 1) {
            throw new PAException(INVALID_ID, "Remote user IDs must be of the form 'namespace:id'");
        }
        $u = new ShadowUser($remote_id[0]);
        $u->load($remote_id[1]);
        if (!$u->user_id) {
            throw new PAException(USER_NOT_FOUND, "Failed to locate user '" . $remote_id[1] . "' in namespace '" . $remote_id[0] . "'");
        }
    } else {
        $u = NULL;
    }
    $items_out = array();
    foreach (explode(",", $args['ids']) as $packed_id) {
        $item_id = explode(":", $packed_id);
        if (count($item_id) == 1) {
            throw new PAException(INVALID_ID, "Individual item IDs must be of the form 'type:id'");
        }
        $item = Item::find_by_subject($item_id[0], $item_id[1]);
        if ($item == NULL) {
            continue;
        }
        // ignore IDs that don't exist
        $item_out = item_to_array($item);
        if ($u) {
            $params = array('rating_type' => $item_id[0], 'user_id' => $u->user_id, 'type_id' => $item_id[1]);
            $user_rating_details = PA_Rating::get($params);
            if (count($user_rating_details)) {
                $item_out['userRating'] = (int) $user_rating_details[0]->rating;
            }
        }
        $items_out[] = $item_out;
    }
    return array("success" => TRUE, "msg" => "Retrieved " . count($items_out) . " item(s)", "items" => $items_out);
}
function rating($rating_type, $type_id, $scale = 5)
{
    require_once 'api/Rating/Rating.php';
    require_once 'api/PA_Rating/PA_Rating.php';
    $return = array('overall' => null, 'new' => null);
    $Rating = new Rating();
    $Rating->set_rating_type($rating_type);
    $Rating->set_type_id((int) $type_id);
    $details = $Rating->get_rating();
    if (!empty($details)) {
        foreach ($details as $entity) {
            $stars_count = round($entity->total_rating / $entity->total_max_rating * $scale);
            $faded_stars_count = $scale - $stars_count;
            $existing_rating = null;
            for ($cnt = 0; $cnt < $stars_count; ++$cnt) {
                $return['overall'] .= '<img src="' . PA::$theme_url . '/images/star.gif" alt="star" />';
            }
            for ($cnt = 0; $cnt < $faded_stars_count; ++$cnt) {
                $return['overall'] .= '<img src="' . PA::$theme_url . '/images/starfaded.gif" alt="star" />';
            }
        }
    } else {
        for ($cnt = 0; $cnt < $scale; ++$cnt) {
            $return['overall'] .= '<img src="' . PA::$theme_url . '/images/starfaded.gif" alt="star" />';
        }
    }
    $user_rating = 0;
    if (!empty(PA::$login_uid)) {
        $params = array('rating_type' => $rating_type, 'user_id' => PA::$login_uid, 'type_id' => $type_id);
        $user_rating_details = PA_Rating::get(null, $params);
        // FIXME: this might not be set
        $user_rating = @$user_rating_details[0]->rating;
    }
    for ($counter = 1; $counter <= $user_rating; ++$counter) {
        $return['new'] .= '<img class="user_star';
        if ($counter == $user_rating) {
            $return['new'] .= ' current_rating';
        }
        $return['new'] .= '" src="' . PA::$theme_url . '/images/star.gif" alt="star" id="star_' . $type_id . '_' . $counter . '" onmouseover="javascript:toggle_stars.mouseover(' . $counter . ', ' . $type_id . ')" onmouseout="javascript:toggle_stars.mouseout(' . $counter . ', ' . $type_id . ')" onclick="javascript:toggle_stars.click(' . $counter . ', ' . $type_id . ', \'' . $rating_type . '\', ' . $scale . ')" />';
    }
    for (; $counter <= $scale; ++$counter) {
        $return['new'] .= '<img class="user_star" src="' . PA::$theme_url . '/images/starfaded.gif" alt="star" id="star_' . $type_id . '_' . $counter . '" onmouseover="javascript:toggle_stars.mouseover(' . $counter . ', ' . $type_id . ')" onmouseout="javascript:toggle_stars.mouseout(' . $counter . ', ' . $type_id . ')" onclick="javascript:toggle_stars.click(' . $counter . ', ' . $type_id . ', \'' . $rating_type . '\', ' . $scale . ')" />';
    }
    return $return;
}
 function get_ratings($rating_type, $type_id)
 {
     $scale = 5;
     $return = array('overall' => null, 'new' => null);
     $this->rating_cnt = 0;
     $this->avg_rating = 0;
     $Rating = new Rating();
     $Rating->set_rating_type($rating_type);
     $Rating->set_type_id($type_id);
     $this->details = $details = $Rating->get_rating();
     if (!empty($details)) {
         foreach ($details as $entity) {
             $avg_rating = $entity->total_rating / $entity->total_max_rating * $scale;
             $stars_count = round($avg_rating);
             $this->rating_cnt = $entity->ratings;
             $this->avg_rating = round($avg_rating, 1);
             $faded_stars_count = $scale - $stars_count;
             for ($cnt = 0; $cnt < $stars_count; ++$cnt) {
                 $return['overall'] .= '<div class="star"></div>';
             }
             for ($cnt = 0; $cnt < $faded_stars_count; ++$cnt) {
                 $return['overall'] .= '<div class="starfaded"></div>';
             }
         }
     } else {
         for ($cnt = 0; $cnt < $scale; ++$cnt) {
             $return['overall'] .= '<div class="starfaded"></div>';
         }
     }
     if (!empty(PA::$login_user->user_id)) {
         $params = array('rating_type' => $rating_type, 'user_id' => PA::$login_user->user_id, 'type_id' => $type_id);
         $user_rating_details = PA_Rating::get($params);
     }
     $user_rating = @$user_rating_details[0]->rating ? $user_rating_details[0]->rating : 0;
     for ($counter = 1; $counter <= $user_rating; ++$counter) {
         $return['new'] .= '<div class="user_star';
         if ($counter == $user_rating) {
             $return['new'] .= ' current_rating';
         }
         $return['new'] .= ' star" id="star_' . $type_id . '_' . $counter . '" onmouseover="javascript:toggle_stars.mouseover(' . $counter . ', \'' . $type_id . '\')" onmouseout="javascript:toggle_stars.mouseout(' . $counter . ', \'' . $type_id . '\')" onclick="javascript:toggle_stars.click(' . $counter . ', \'' . $type_id . '\', \'' . $rating_type . '\', ' . $scale . ')" ></div>';
     }
     for (; $counter <= $scale; ++$counter) {
         $return['new'] .= '<div class="user_star starfaded" id="star_' . $type_id . '_' . $counter . '" onmouseover="javascript:toggle_stars.mouseover(' . $counter . ', \'' . $type_id . '\')" onmouseout="javascript:toggle_stars.mouseout(' . $counter . ', \'' . $type_id . '\')" onclick="javascript:toggle_stars.click(' . $counter . ', \'' . $type_id . '\', \'' . $rating_type . '\', ' . $scale . ')" ></div>';
     }
     return $return;
 }