public function PhotosController::albumViews in Album Photos 8.4
Album views.
1 call to PhotosController::albumViews()
- PhotosController::contentOverview in src/
Controller/ PhotosController.php - Returns an overview of recent albums and photos.
File
- src/
Controller/ PhotosController.php, line 58
Class
- PhotosController
- View albums and recent images.
Namespace
Drupal\photos\ControllerCode
public function albumViews($type, $limit, $url = 0, $uid = 0, $sort = ' n.nid DESC') {
$query = $this->connection
->select('photos_album', 'p');
$query
->join('node_field_data', 'n', 'n.nid = p.pid');
$query
->join('users_field_data', 'u', 'u.uid = n.uid');
$query
->fields('p', [
'count',
'fid',
])
->fields('n', [
'nid',
'title',
])
->fields('u', [
'uid',
'name',
]);
$query
->condition('n.status', 1);
if ($type == 'user') {
$query
->condition('n.uid', $uid);
}
if ($type == 'rand') {
$query
->orderRandom();
}
else {
$query
->orderBy('n.nid', 'DESC');
}
$query
->range(0, $limit);
$query
->addTag('node_access');
$results = $query
->execute();
$i = 0;
foreach ($results as $result) {
$photos_album = new PhotosAlbum($result->nid);
$cover = $photos_album
->getCover($result->fid);
$view = '';
if ($cover && isset($cover['view'])) {
$view = $this->renderer
->render($cover['view']);
}
$album[] = [
'node' => $result,
'view' => $view,
];
++$i;
}
if ($i) {
$photo_block = [
'#theme' => 'photos_block',
'#images' => $album,
'#block_type' => 'album',
];
$content = $this->renderer
->render($photo_block);
$url = Url::fromUri('base:' . $url);
if ($url && $i >= $limit) {
$more_link = [
'#type' => 'more_link',
'#url' => $url,
'#title' => $this
->t('View more'),
];
$content .= $this->renderer
->render($more_link);
}
if ($type == 'user') {
return [
'content' => $content,
'title' => $this
->t("@name's albums", [
'@name' => $album[0]['node']->name,
]),
];
}
else {
return $content;
}
}
}