ContentCalendarService.php in Content Planner 8
File
modules/content_calendar/src/ContentCalendarService.php
View source
<?php
namespace Drupal\content_calendar;
use Drupal\Core\Database\Driver\mysql\Connection;
class ContentCalendarService {
protected $database;
protected $contentTypeConfigService;
public function __construct(Connection $database, ContentTypeConfigService $content_type_config_service) {
$this->database = $database;
$this->contentTypeConfigService = $content_type_config_service;
}
public function getNodesByType($node_type, $filters = []) {
$query = $this->database
->select('node_field_data', 'nfd');
$query
->innerJoin('users_field_data', 'ufd', 'nfd.uid = ufd.uid');
$query
->addField('nfd', 'nid');
$query
->addField('nfd', 'title');
$query
->addField('nfd', 'created');
$query
->addField('nfd', 'status');
$query
->addField('nfd', 'uid');
$query
->addField('ufd', 'name', 'username');
$query
->addField('nfd', 'publish_on');
$query
->condition('nfd.type', $node_type);
$query
->orderBy('nfd.created', 'ASC');
if (isset($filters['year']) && $filters['year'] && is_numeric($filters['year'])) {
if (isset($filters['month']) && $filters['month'] && is_numeric($filters['month'])) {
$month_from = $filters['month'];
$month_to = $filters['month'];
}
else {
$month_from = 1;
$month_to = 12;
}
$datetime_from = DateTimeHelper::getFirstDayOfMonth($month_from, $filters['year']);
$datetime_to = DateTimeHelper::getLastDayOfMonth($month_to, $filters['year']);
$or_conditions = $query
->orConditionGroup();
$scheduler_date_conditions = $query
->andConditionGroup();
$scheduler_date_conditions
->condition('nfd.publish_on', $datetime_from
->format('U'), '>=');
$scheduler_date_conditions
->condition('nfd.publish_on', $datetime_to
->format('U'), '<=');
$or_conditions
->condition($scheduler_date_conditions);
$created_date_conditions = $query
->andConditionGroup();
$created_date_conditions
->condition('nfd.created', $datetime_from
->format('U'), '>=');
$created_date_conditions
->condition('nfd.created', $datetime_to
->format('U'), '<=');
$or_conditions
->condition($created_date_conditions);
$query
->condition($or_conditions);
}
$result = $query
->execute()
->fetchAll();
if ($result) {
return $result;
}
return [];
}
}