|
@@ -24,13 +24,16 @@ class PodcastRorController extends ControllerBase {
|
|
|
|
|
|
private function query($baseQuery) {
|
|
|
//TODO: estrai argomento dall'url
|
|
|
- $arg = array('ror_news', 'redazionali', 'news_trasmissioni');
|
|
|
+ $arg = array('ror_news', 'redazionali', 'news_trasmissioni', 'rassegna_stampa');
|
|
|
+ $now = new \Drupal\Core\Datetime\DrupalDateTime('now');
|
|
|
+ $now_formatted = $now->format(\Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface::DATETIME_STORAGE_FORMAT);
|
|
|
$query = $baseQuery
|
|
|
->condition('status', '1')
|
|
|
->condition('type', $arg, 'IN')
|
|
|
- ->sort('nid', 'DESC')
|
|
|
- ->range(0, 20);
|
|
|
- \Drupal::logger('podcast_ror')->info(var_export(\Drupal::request()->query->get('trxid'), true));
|
|
|
+ ->condition('field_tx_date', $now_formatted, '<')
|
|
|
+ ->sort('field_tx_date', 'DESC')
|
|
|
+ ->range(0, 30);
|
|
|
+ // \Drupal::logger('podcast_ror')->info(var_export(\Drupal::request()->query->get('trxid'), true));
|
|
|
//$trxid = \Drupal::request()->query->get('trxid');
|
|
|
// TODO: se nell'url c'e' un trx=, allora bisogna
|
|
|
// aggiungere che arg=news_trasmissioni
|
|
@@ -43,9 +46,13 @@ class PodcastRorController extends ControllerBase {
|
|
|
$data['nodes'] = array();
|
|
|
foreach($nodes_e as $nid => $node) {
|
|
|
$data['nodes'][$nid] = $node->toArray();
|
|
|
- $data['nodes'][$nid]['summary'] = htmlspecialchars(substr(
|
|
|
- html_entity_decode(strip_tags($data['nodes'][$nid]['body'][0]['value'])),
|
|
|
- 0, 3500), ENT_XML1, 'UTF-8');
|
|
|
+ if( count($data['nodes'][$nid]['body']) > 0 ) {
|
|
|
+ $data['nodes'][$nid]['summary'] = htmlspecialchars(substr(
|
|
|
+ html_entity_decode(strip_tags($data['nodes'][$nid]['body'][0]['value'])),
|
|
|
+ 0, 3500), ENT_XML1, 'UTF-8');
|
|
|
+ } else {
|
|
|
+ $data['nodes'][$nid]['summary'] = "";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$first = true;
|
|
@@ -54,26 +61,42 @@ class PodcastRorController extends ControllerBase {
|
|
|
$data['nodes'][$nid]['img'] = array();
|
|
|
foreach( $node->get('field_contenuti_audio')->referencedEntities() as $ai => $entity) {
|
|
|
$data['nodes'][$nid]['audio'][$ai] = $entity->toArray();
|
|
|
+
|
|
|
//$data['nodes'][$nid]['audio'][$ai]['text'] = print_r($data['nodes'][$nid]['audio'][$ai]['field_audio_link'], true);
|
|
|
}
|
|
|
- foreach( $node->get('field_image')->referencedEntities() as $ai => $entity) {
|
|
|
- $arr = $entity->toArray();
|
|
|
- $data['nodes'][$nid]['img'][] = array(
|
|
|
- 'uri' => file_create_url($arr['uri'][0]['value']),
|
|
|
- // 'raw' => $arr,
|
|
|
+ if($node->hasField('field_image')) {
|
|
|
+ $node_images = $node->get('field_image');
|
|
|
+ foreach( $node_images->referencedEntities() as $ai => $entity) {
|
|
|
+ $arr = $entity->toArray();
|
|
|
+ $data['nodes'][$nid]['img'][] = array(
|
|
|
+ 'uri' => file_create_url($arr['uri'][0]['value']),
|
|
|
+ // 'raw' => $arr,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } else { // alcuni content_type non hanno immagine (rassegna stampa)
|
|
|
+ $data['nodes'][$nid]['img'][] = [];
|
|
|
+ }
|
|
|
+ $data['nodes'][$nid]['tx'] = "";
|
|
|
+ if($node->getType() == 'news_trasmissioni') {
|
|
|
+ $tx = \Drupal\taxonomy\Entity\Term::load(
|
|
|
+ $node->get('field_trasmissione')->target_id
|
|
|
);
|
|
|
+ if($tx !== null) {
|
|
|
+ $data['nodes'][$nid]['tx'] = $tx->getName();
|
|
|
+ }
|
|
|
}
|
|
|
if($first === true) {
|
|
|
- // print_r($data['nodes'][$nid]['img']);
|
|
|
$first = false;
|
|
|
}
|
|
|
}
|
|
|
return $data;
|
|
|
}
|
|
|
- public function podcast($query) {
|
|
|
+ public function podcast($query, $title) {
|
|
|
+ // TODO: add $title argument to the function
|
|
|
$template = $this->twig->loadTemplate(drupal_get_path('module', 'podcast_ror') . '/templates/podcast.html.twig');
|
|
|
$tmpl_data = [ 'ror' => array('podcast' => $this->query($query),
|
|
|
'url' => \Drupal::service('path.current')->getPath(),
|
|
|
+ 'title' => $title,
|
|
|
)];
|
|
|
//$variables['ror']['url'] =
|
|
|
$xml = $template->render($tmpl_data);
|
|
@@ -82,18 +105,19 @@ class PodcastRorController extends ControllerBase {
|
|
|
}
|
|
|
public function podcastAll() {
|
|
|
$query = \Drupal::entityQuery('node');
|
|
|
- return $this->podcast($query);
|
|
|
+ return $this->podcast($query, 'Tutti gli aggiornamenti, i redazionali, le trasmissioni della radio di chi se la sente');
|
|
|
}
|
|
|
- //public function podcastByType(NodeInterface $ctype) {
|
|
|
public function podcastByType($contentType) {
|
|
|
$query = \Drupal::entityQuery('node')
|
|
|
->condition('type', $contentType);
|
|
|
- return $this->podcast($query);
|
|
|
+ // TODO: get "nice name" for $contentType
|
|
|
+ return $this->podcast($query, $contentType);
|
|
|
}
|
|
|
public function podcastByTrxID($trxID) {
|
|
|
$query = \Drupal::entityQuery('node')
|
|
|
->condition('type', 'news_trasmissioni')
|
|
|
->condition('field_trasmissione', $trxID);
|
|
|
- return $this->podcast($query);
|
|
|
+ // TODO: discover Trx name, and pass it as podcast title
|
|
|
+ return $this->podcast($query, 'Trasmissione ' . $trxID);
|
|
|
}
|
|
|
}
|