Adds collection API #3

Merged
chris merged 5 commits from collection-api into develop 2021-11-10 14:04:18 +01:00
3 changed files with 104 additions and 2 deletions

View File

@ -1,16 +1,44 @@
<?php <?php
use Laminas\Router\Http\Literal;
namespace ArchiveSiteMeta; namespace ArchiveSiteMeta;
return [ return [
//https://docs.laminas.dev/tutorials/getting-started/routing-and-controllers/
'router' => [
'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' => [ 'view_manager' => [
'template_path_stack' => [ 'template_path_stack' => [
dirname(__DIR__) . '/view', dirname(__DIR__) . '/view',
], ],
'strategies' => [
'ViewJsonStrategy',
],
'template_map' => [ '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', //'layout/layout' => __DIR__ . '/../../../themes/archive/view/layout/layout.phtml',
//'omeka/index/index' => __DIR__ . '/../../../themes/archive/view/omeka/site/index/index.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/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',
//'common/site-list-entry' => __DIR__ . '/../../../themes/archive/view/common/site-list-entry.phtml', //'common/site-list-entry' => __DIR__ . '/../../../themes/archive/view/common/site-list-entry.phtml',
], ],
], ],

View File

@ -0,0 +1,71 @@
<?php
namespace ArchiveSiteMeta\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\JsonModel;
class ArchiveSiteMetaController extends AbstractActionController
{
public function __construct()
{
}
public function indexAction()
{
$query = [
'limit' => 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);
}
}

View File

@ -0,0 +1,3 @@
<?php echo "this is index.phtml"; ?>