chg: [tag] Simplified taxonomy handling

pull/6578/head
Jakub Onderka 2020-11-22 11:22:02 +01:00
parent 7c7a8f2817
commit b48df40e8e
1 changed files with 11 additions and 17 deletions

View File

@ -45,14 +45,7 @@ class TagsController extends AppController
);
$exception = false;
$passedArgsArray = $this->_harvestParameters($filterData, $exception);
$taxonomies = $this->Taxonomy->listTaxonomies(array('full' => false, 'enabled' => true));
$taxonomyNamespaces = array();
if (!empty($taxonomies)) {
foreach ($taxonomies as $taxonomy) {
$taxonomyNamespaces[$taxonomy['namespace']] = $taxonomy;
}
}
$taxonomyTags = array();
$this->Event->recursive = -1;
if (!empty($passedArgsArray['favouritesOnly'])) {
$tag_id_list = $this->Tag->FavouriteTag->find('list', array(
@ -82,6 +75,8 @@ class TagsController extends AppController
$paginated = $this->paginate();
}
$tagList = array();
$taxonomyTags = array();
$taxonomyNamespaces = $this->Taxonomy->listTaxonomies(array('full' => false, 'enabled' => true));
foreach ($paginated as $k => $tag) {
$tagList[] = $tag['Tag']['id'];
if (!empty($tag['FavouriteTag'])) {
@ -97,16 +92,15 @@ class TagsController extends AppController
$paginated[$k]['Tag']['favourite'] = false;
}
unset($paginated[$k]['FavouriteTag']);
if (!empty($taxonomyNamespaces)) {
$taxonomyNamespaceArrayKeys = array_keys($taxonomyNamespaces);
foreach ($taxonomyNamespaceArrayKeys as $tns) {
if (substr(strtoupper($tag['Tag']['name']), 0, strlen($tns)) === strtoupper($tns)) {
$paginated[$k]['Tag']['Taxonomy'] = $taxonomyNamespaces[$tns];
if (!isset($taxonomyTags[$tns])) {
$taxonomyTags[$tns] = $this->Taxonomy->getTaxonomyTags($taxonomyNamespaces[$tns]['id'], true);
}
$paginated[$k]['Tag']['Taxonomy']['expanded'] = isset($taxonomyTags[$tns][strtoupper($tag['Tag']['name'])]) ? $taxonomyTags[$tns][strtoupper($tag['Tag']['name'])] : $tag['Tag']['name'];
foreach ($taxonomyNamespaces as $namespace => $taxonomy) {
if (substr(strtoupper($tag['Tag']['name']), 0, strlen($namespace)) === strtoupper($namespace)) {
$paginated[$k]['Tag']['Taxonomy'] = $taxonomy;
if (!isset($taxonomyTags[$namespace])) {
$taxonomyTags[$namespace] = $this->Taxonomy->getTaxonomyTags($taxonomy['id'], true);
}
$paginated[$k]['Tag']['Taxonomy']['expanded'] = isset($taxonomyTags[$namespace][strtoupper($tag['Tag']['name'])]) ? $taxonomyTags[$namespace][strtoupper($tag['Tag']['name'])] : $tag['Tag']['name'];
break;
}
}
}