Open Data Catalog v2.0.0
DkanDataset.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use Drupal\Core\TypedData\ComplexDataInterface;
7 use Drupal\node\Entity\Node;
8 use Drupal\search_api\Datasource\DatasourcePluginBase;
9 
18 class DkanDataset extends DatasourcePluginBase {
19 
25  public function getPropertyDefinitions() {
26  return Dataset::definition();
27  }
28 
34  public function getItemIds($page = NULL) {
35  $pageSize = 250;
36  $ids = [];
37  $query = \Drupal::entityQuery('node')
38  ->condition('status', 1)
39  ->condition('type', 'data')
40  ->condition('field_data_type', 'dataset');
41 
42  $total = $query->count()->execute();
43  $pages = floor($total / $pageSize);
44 
45  if ($page <= $pages) {
46 
47  $query = \Drupal::entityQuery('node')
48  ->condition('status', 1)
49  ->condition('type', 'data')
50  ->condition('field_data_type', 'dataset')
51  ->range($page * $pageSize, $pageSize);
52  $nids = $query->execute();
53 
54  foreach ($nids as $id) {
55  $node = Node::load($id);
56  $ids[] = $node->uuid();
57  }
58 
59  return $ids;
60  }
61  return NULL;
62  }
63 
69  public function loadMultiple(array $ids) {
70  /* @var $dataStorage \Drupal\dkan_data\Storage\Data */
71  $dataStorage = \Drupal::service("dkan_data.storage");
72  $dataStorage->setSchema('dataset');
73 
74  $items = [];
75  foreach ($ids as $id) {
76  $items[$id] = new Dataset($dataStorage->retrieve($id));
77  }
78 
79  return $items;
80  }
81 
87  public function getItemId(ComplexDataInterface $item) {
88  return $item->get('identifier');
89  }
90 
91 }
Drupal\dkan_search\ComplexData\Dataset\definition
static definition()
Definition: Dataset.php:20
Drupal\dkan_search\ComplexData\Dataset
Definition: Dataset.php:14
Drupal\dkan_search\Plugin\search_api\datasource\DkanDataset
Definition: DkanDataset.php:18
Drupal\dkan_search\Plugin\search_api\datasource\DkanDataset\getItemId
getItemId(ComplexDataInterface $item)
Definition: DkanDataset.php:87
Drupal\dkan_search\Plugin\search_api\datasource
Definition: DkanDataset.php:3
Drupal\dkan_search\Plugin\search_api\datasource\DkanDataset\getItemIds
getItemIds($page=NULL)
Definition: DkanDataset.php:34
Drupal\dkan_search\Plugin\search_api\datasource\DkanDataset\getPropertyDefinitions
getPropertyDefinitions()
Definition: DkanDataset.php:25
Drupal\dkan_search\Plugin\search_api\datasource\DkanDataset\loadMultiple
loadMultiple(array $ids)
Definition: DkanDataset.php:69