function _avatar_selection_image_list in Avatar Selection 7
Same name and namespace in other branches
- 5.2 avatar_selection.module \_avatar_selection_image_list()
- 5 avatar_selection.module \_avatar_selection_image_list()
- 6 avatar_selection.module \_avatar_selection_image_list()
Get the list of avatars available to a certain user.
Parameters
$user: User object (optional).
$set_type: Set type, can be 'role' or 'og' (optional).
$set_id: The unique identifier of the set (optional).
$from: The offset.
$count: Number of avatars to return.
Return value
Return an array with the list of avatars for the current user, together with the number of avatars.
4 calls to _avatar_selection_image_list()
- avatar_selection_edit_form in ./
avatar_selection.admin.inc - Create the form structure for listing the avatars and managing them in the 'Manage Avatars' tab under the Avatar Selection administration page.
- avatar_selection_form_user_profile_form_alter in ./
avatar_selection.module - Implements hook_form_alter().
- avatar_selection_form_user_register_form_alter in ./
avatar_selection.module - Implements hook_form_alter().
- avatar_selection_get_random_image in ./
avatar_selection.module - Select a random avatar picture for a certain user.
File
- ./
avatar_selection.module, line 491 - The Avatar Selection module allows the user to pick an avatar image from a list already loaded by an administrative user, and to the administrator to disable uploading other avatar files by the user.
Code
function _avatar_selection_image_list($user = '', $set_type = '', $set_id = 0, $from = 0, $count = 0) {
$avatars = array();
$url = file_build_uri('avatar_selection');
file_prepare_directory($url);
$total = 0;
// Prepare base query.
$count_query = db_select('avatar_selection', 'avs')
->fields('avs', array(
'fid',
))
->distinct();
$query = db_select('avatar_selection', 'avs')
->fields('avs', array(
'avatar',
'fid',
'name',
'weight',
))
->distinct()
->orderBy('weight', 'ASC')
->orderBy('name', 'ASC')
->orderBy('avatar', 'ASC');
// If we're searching on a particular role - join avatar_selection_roles table.
if ($set_type == 'role') {
if ($set_id) {
$count_avsr_alias = $count_query
->join('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid AND avsr.rid = :rid', array(
':rid' => $set_id,
));
$avsr_alias = $query
->join('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid AND avsr.rid = :rid', array(
':rid' => $set_id,
));
}
else {
$count_avsr_alias = $count_query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$count_query
->isNULL("{$count_avsr_alias}.rid");
$avsr_alias = $query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$query
->isNULL("{$avsr_alias}.rid");
}
}
elseif ($set_type == 'og') {
if ($set_id) {
$count_avs_og_alias = $count_query
->join('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid AND avs_og.ogid = :ogid', array(
':ogid' => $set_id,
));
$avs_og_alias = $query
->join('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid AND avs_og.ogid = :ogid', array(
':ogid' => $set_id,
));
}
else {
$count_avs_og_alias = $count_query
->leftJoin('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid');
$count_query
->isNULL("{$count_avs_og_alias}.ogid");
$avs_og_alias = $query
->leftJoin('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid');
$query
->isNULL("{$avs_og_alias}.ogid");
}
}
elseif (!empty($user)) {
// Set up some variables.
$user_roles = array_keys($user->roles);
$user_og = array();
if (module_exists('og') && !empty($user->group_audience)) {
$og_groups = $user->group_audience;
if (!empty($og_groups) && is_array($og_groups)) {
foreach ($og_groups as $key => $groups) {
foreach ($groups as $group) {
$user_og[] = $group['gid'];
}
}
}
}
// Organic groups enabled - join avatar_selection_og table.
if (module_exists('og') && !empty($user_og)) {
if (variable_get('avatar_selection_distinctive_avatars', FALSE) || $user->uid != 1) {
$count_avs_og_alias = $count_query
->leftJoin('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid');
$count_query
->condition(db_or()
->isNULL("{$count_avs_og_alias}.ogid")
->condition("{$count_avs_og_alias}.ogid", $user_og, 'IN'));
$avs_og_alias = $query
->leftJoin('avatar_selection_og', 'avs_og', 'avs.aid = avs_og.aid');
$query
->condition(db_or()
->isNULL("{$avs_og_alias}.ogid")
->condition("{$avs_og_alias}.ogid", $user_og, 'IN'));
}
}
// Distinct avatars are enabled - join avatar_selection_usage and avatar_selection_roles tables.
if (variable_get('avatar_selection_distinctive_avatars', FALSE)) {
$count_usage_alias = $count_query
->leftJoin('avatar_selection_usage', 'u', 'u.fid = avs.fid');
$count_query
->isNull('u.fid');
$count_avsr_alias = $count_query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$count_query
->condition(db_or()
->isNULL("{$count_avsr_alias}.rid")
->condition("{$count_avsr_alias}.rid", $user_roles, 'IN'));
$usage_alias = $query
->leftJoin('avatar_selection_usage', 'u', 'u.fid = avs.fid');
$query
->isNull('u.fid');
$avsr_alias = $query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$query
->condition(db_or()
->isNULL("{$avsr_alias}.rid")
->condition("{$avsr_alias}.rid", $user_roles, 'IN'));
}
elseif ($user->uid != 1) {
$count_avsr_alias = $count_query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$count_query
->condition(db_or()
->isNULL("{$count_avsr_alias}.rid")
->condition("{$count_avsr_alias}.rid", $user_roles, 'IN'));
$avsr_alias = $query
->leftJoin('avatar_selection_roles', 'avsr', 'avs.aid = avsr.aid');
$query
->condition(db_or()
->isNULL("{$avsr_alias}.rid")
->condition("{$avsr_alias}.rid", $user_roles, 'IN'));
}
}
// Execute the queries.
$total = $count_query
->countQuery()
->execute()
->fetchField();
$count = $count ? $count : $total;
$result = $query
->range($from, $count)
->execute();
// Theme images.
if (module_exists('image')) {
$imagecache_preset = variable_get('avatar_selection_imagecache_preset', 0);
}
foreach ($result as $avatar) {
$filepath = $url . '/' . $avatar->avatar;
if (module_exists('image') && $imagecache_preset && file_valid_uri($filepath)) {
$avatars[$avatar->fid] = theme('image_style', array(
'style_name' => $imagecache_preset,
'path' => $filepath,
'alt' => $avatar->name,
'title' => $avatar->name,
));
}
else {
$avatars[$avatar->fid] = theme('image', array(
'path' => $filepath,
'alt' => $avatar->name,
'title' => $avatar->name,
));
}
}
$selects['avatars'] = $avatars;
$selects['total'] = $total;
return $selects;
}