diff --git a/Module.php b/Module.php index 73eed2c..0aaa643 100644 --- a/Module.php +++ b/Module.php @@ -138,4 +138,16 @@ class Module extends AbstractModule return true; } + /** + * Code to run when first using the module. + * + * @param MvcEvent $event + */ + public function onBootstrap(MvcEvent $event): void + { + parent::onBootstrap($event); + + $acl = $this->getServiceLocator()->get('Omeka\Acl'); + $acl->allow(null, 'Controller\ArchiveSiteMetaController'); + } } diff --git a/config/module.config.php b/config/module.config.php index 077878a..9d1e2b6 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' => 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/src/View/Helper/ArchiveSiteMetaViewHelper.php b/src/View/Helper/ArchiveSiteMetaViewHelper.php index c4ba4e1..b19ca2f 100644 --- a/src/View/Helper/ArchiveSiteMetaViewHelper.php +++ b/src/View/Helper/ArchiveSiteMetaViewHelper.php @@ -119,6 +119,9 @@ class ArchiveSiteMetaViewHelper extends AbstractHelper $view = $this->getView(); return isset($view->site) ? $view->site - : $view->getHelperPluginManager()->get('Laminas\View\Helper\ViewModel')->getRoot()->getVariable('site'); + : $view->getHelperPluginManager() + ->get('Laminas\View\Helper\ViewModel') + ->getRoot() + ->getVariable('site'); } } 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 @@ + + +