diff --git a/config/module.config.php b/config/module.config.php index 077878a..020b8b3 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -1,16 +1,44 @@ [ + 'routes' => [ + 'archiveSiteMeta' => [ + //'type' => \Laminas\Router\Http\Segment::class, + 'type' => \Laminas\Router\Http\Literal::class, + 'options' => [ + 'route' => '/api/collections/search', + 'defaults' => [ + '__NAMESPACE__' => 'ArchiveSiteMeta\Controller', + 'controller' => Controller\ArchiveSiteMetaController::class, + 'action' => 'index', + ], + ], + ], + ], + ], + 'controllers' => [ + 'invokables' => [ + Controller\ArchiveSiteMetaController::class => Controller\ArchiveSiteMetaController::class, + ], + ], 'view_manager' => [ 'template_path_stack' => [ dirname(__DIR__) . '/view', ], + 'strategies' => [ + 'ViewJsonStrategy', + ], 'template_map' => [ + // used to remove available blocks when editing a page + 'omeka/site-admin/page/edit' => __DIR__ . '/../../../themes/archive/view/omeka/site-admin/page/edit.phtml', + //'archive-site-meta/archive-site-meta/index' => __DIR__ . '/../view/collections/index.phtml', //'layout/layout' => __DIR__ . '/../../../themes/archive/view/layout/layout.phtml', //'omeka/index/index' => __DIR__ . '/../../../themes/archive/view/omeka/site/index/index.phtml', - 'omeka/search/results' => __DIR__ . '/../../../themes/archive/view/omeka/search/results.phtml', - 'omeka/site-admin/page/edit' => __DIR__ . '/../../../themes/archive/view/omeka/site-admin/page/edit.phtml', + //'omeka/search/results' => __DIR__ . '/../../../themes/archive/view/omeka/search/results.phtml', //'common/site-list-entry' => __DIR__ . '/../../../themes/archive/view/common/site-list-entry.phtml', ], ], diff --git a/src/Controller/ArchiveSiteMetaController.php b/src/Controller/ArchiveSiteMetaController.php new file mode 100644 index 0000000..9980ef9 --- /dev/null +++ b/src/Controller/ArchiveSiteMetaController.php @@ -0,0 +1,71 @@ + 10, + //'in_sites' => true, + 'fulltext_search' => $this->params()->fromQuery('fulltext_search'), + ]; + $resources = [ + 'site_pages' => [ + 'action' => 'site-pages', + 'query' => $query, + 'response' => null, + ], + 'items' => [ + 'action' => 'items', + 'query' => array_merge($query, ['in_sites' => true]), + 'response' => null, + ], + /* + 'item_sets' => [ + 'action' => 'item-sets', + 'query' => array_merge($query, ['in_sites' => true]), + 'response' => null, + ], + */ + ]; + + $resourceNames = ['site_pages', 'items']; + + //$ids = $this->api()->search('site_pages', $query)->getContent(); + //$ids = $this->api()->search('site_pages', $query, ['return' => 'site'])->getContent(); + //$ids = $this->api()->search('site_pages', $query, ['returnScalar' => 'site'])->getContent(); + + $query_results = array(); + $items = $this->api()->search('items', $resources['items']['query'])->getContent(); + foreach($items as $item) { + foreach($item->sites() as $site){ + array_push($query_results, $site->id()); + } + } + $pages = $this->api()->search('site_pages', + $resources['site_pages']['query'], + ['returnScalar' => 'site'])->getContent(); + foreach($pages as $page) { + array_push($query_results, (int)$page); + } + $search_results = []; + foreach($query_results as $site_id) { + if (array_key_exists($site_id, $search_results)) { + $search_results[$site_id] = $search_results[$site_id] + 1; + } else { + $search_results[$site_id] = 1; + } + } + return new JsonModel($search_results); + } +} diff --git a/view/collections/index.phtml b/view/collections/index.phtml new file mode 100644 index 0000000..fd4d315 --- /dev/null +++ b/view/collections/index.phtml @@ -0,0 +1,3 @@ + + +