class PhotosController in Album Photos 8.4
View albums and recent images.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\photos\Controller\PhotosController
Expanded class hierarchy of PhotosController
File
- src/
Controller/ PhotosController.php, line 16
Namespace
Drupal\photos\ControllerView source
class PhotosController extends ControllerBase {
/**
* The database connection.
*
* @var \Drupal\Core\Database\Connection
*/
protected $connection;
/**
* The renderer.
*
* @var \Drupal\Core\Render\RendererInterface
*/
protected $renderer;
/**
* Constructor.
*
* @param \Drupal\Core\Database\Connection $connection
* The database connection.
* @param \Drupal\Core\Render\RendererInterface $renderer
* The renderer.
*/
public function __construct(Connection $connection, RendererInterface $renderer) {
$this->connection = $connection;
$this->renderer = $renderer;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('database'), $container
->get('renderer'));
}
/**
* Album views.
*/
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;
}
}
}
/**
* Returns an overview of recent albums and photos.
*
* @return array
* A render array for the photos_default theme.
*/
public function contentOverview() {
$account = $this
->currentUser();
$content = [];
if ($account
->id() && $account
->hasPermission('create photo')) {
$val = PhotosImage::blockView('user', 5, 'photos/image', $account
->id());
$content['user']['image'] = isset($val['content']) ? $val['content'] : '';
$val = $this
->albumViews('user', 5, 'photos/user/' . $account
->id() . '/album', $account
->id());
$content['user']['album'] = $val['content'] ? $val['content'] : '';
}
$content['site']['image'] = PhotosImage::blockView('latest', 5, 'photos/image');
$content['site']['album'] = $this
->albumViews('latest', 5, 'photos/album');
return [
'#theme' => 'photos_default',
'#content' => $content,
'#empty' => $this
->t('No photos available.'),
];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PhotosController:: |
protected | property | The database connection. | |
PhotosController:: |
protected | property | The renderer. | |
PhotosController:: |
public | function | Album views. | |
PhotosController:: |
public | function | Returns an overview of recent albums and photos. | |
PhotosController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
PhotosController:: |
public | function | Constructor. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |