From 70635ff6f06b3d6123060ff18430a584cf26f529 Mon Sep 17 00:00:00 2001
From: Llewellyn van der Merwe
Date: Sat, 30 May 2020 20:49:13 +0200
Subject: [PATCH] Added notice to the compiler where it detects mismatching
category view target names. Added the update script for categories in JCB.
Made adjustments all across JCB to act according to gh-561 implementation.
---
README.md | 4 +-
admin/README.txt | 4 +-
admin/helpers/compiler/c_Fields.php | 30 +++++-
admin/helpers/compiler/e_Interpretation.php | 34 +++---
admin/helpers/componentbuilder.php | 4 +-
admin/layouts/fieldtype/fields_fullwidth.php | 4 +-
admin/models/forms/field.xml | 3 +-
admin/models/forms/fieldtype.xml | 2 +-
admin/views/fields/tmpl/default_body.php | 4 +-
admin/views/fields/view.html.php | 4 +-
admin/views/fieldtypes/tmpl/default_body.php | 4 +-
admin/views/fieldtypes/view.html.php | 4 +-
componentbuilder.xml | 2 +-
script.php | 105 +++++++++++++++----
site/helpers/route.php | 4 +-
15 files changed, 154 insertions(+), 58 deletions(-)
diff --git a/README.md b/README.md
index b60e50426..b4c6b07c4 100644
--- a/README.md
+++ b/README.md
@@ -144,11 +144,11 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 29th May, 2020
++ *Last Build*: 30th May, 2020
+ *Version*: 2.11.2
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **282456**
++ *Line count*: **282524**
+ *Field count*: **1522**
+ *File count*: **1785**
+ *Folder count*: **295**
diff --git a/admin/README.txt b/admin/README.txt
index b60e50426..b4c6b07c4 100644
--- a/admin/README.txt
+++ b/admin/README.txt
@@ -144,11 +144,11 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 29th May, 2020
++ *Last Build*: 30th May, 2020
+ *Version*: 2.11.2
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **282456**
++ *Line count*: **282524**
+ *Field count*: **1522**
+ *File count*: **1785**
+ *Folder count*: **295**
diff --git a/admin/helpers/compiler/c_Fields.php b/admin/helpers/compiler/c_Fields.php
index a6f365590..bb99927e2 100644
--- a/admin/helpers/compiler/c_Fields.php
+++ b/admin/helpers/compiler/c_Fields.php
@@ -4112,7 +4112,7 @@ class Fields extends Structure
{
$this->setScriptMediaSwitch[$typeName] = $typeName;
}
- // setup gategory for this view
+ // setup category for this view
if ($dbSwitch && $typeName === 'category')
{
if (isset($this->catOtherName[$view_name_list])
@@ -4134,13 +4134,37 @@ class Fields extends Structure
$field['settings']->xml, 'extension="', '"'
), $this->placeholders
);
- // if they left out the extention for some reason
+ // if they left out the extension for some reason
if (!ComponentbuilderHelper::checkString($_extension))
{
$_extension = 'com_' . $this->componentCodeName . '.'
. $otherView;
}
- // load the category builder
+ // check the context (does our target match)
+ if (strpos($_extension, '.') !== false)
+ {
+ $target_view = trim(explode('.', $_extension)[1]);
+ // from my understanding the target extension view and the otherView must align
+ // so I will here check that it does, and if not raise an error message to fix this
+ if ($target_view !== $otherView)
+ {
+ $target_extension = trim(explode('.', $_extension)[0]);
+ $correction = $target_extension . '.' . $otherView;
+ $this->app->enqueueMessage(
+ JText::sprintf('
Category targeting view mismatch
+ The
+ category field in (%s) admin view has a mismatching target view.
+
To correct the mismatch, the extension value %s
in the
+ field must be changed to %s
+ for
+ best category integration with Joomla.
+
Please watch
+ this tutorial before proceeding!!!,
+ code fix
', $field['field'], $view_name_single, $_extension, $field['field'], $correction), 'Error'
+ );
+ }
+ }
+ // load the category builder - TODO must move all to single view
$this->categoryBuilder[$view_name_list] = array('code' => $name,
'name' => $listLangName,
'extension' => $_extension);
diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php
index f687a3b93..1cbc5af5a 100644
--- a/admin/helpers/compiler/e_Interpretation.php
+++ b/admin/helpers/compiler/e_Interpretation.php
@@ -8476,19 +8476,21 @@ class Interpretation extends Fields
public function getCategoryContentType($view, $views, $component)
{
+ // get the other view
+ $otherView = $this->catCodeBuilder[$view]['view'];
$category = $this->catCodeBuilder[$view]['code'];
$Component = ComponentbuilderHelper::safeString($component, 'F');
$View = ComponentbuilderHelper::safeString($view, 'F');
// build uninstall script for content types
$this->uninstallScriptBuilder[$View . ' ' . $category] = 'com_'
- . $component . '.' . $views . '.category';
+ . $component . '.' . $otherView . '.category';
$this->uninstallScriptContent[$View . ' ' . $category] = $View . ' '
. $category;
// set the title
$array['type_title'] = $Component . ' ' . $View . ' '
. ComponentbuilderHelper::safeString($category, 'F');
// set the alias
- $array['type_alias'] = 'com_' . $component . '.' . $views . '.category';
+ $array['type_alias'] = 'com_' . $component . '.' . $otherView . '.category';
// set the table
$array['table']
= '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
@@ -11450,13 +11452,10 @@ class Interpretation extends Fields
// if to be linked
if ($item['type'] === 'category' && !$item['title'])
{
- // get the other view
- $otherViews = $this->catCodeBuilder[$viewName_single]['views'];
-
// return the link to category
return 'index.php?option=com_categories&task=category.edit&id='
- . $item['code'] . '; ?>&extension=com_'
- . $this->componentCodeName . '.' . $otherViews;
+ . $item['code'] . '; ?>&extension='
+ . $this->categoryBuilder[$viewName_list]['extension'];
}
elseif ($item['type'] === 'user' && !$item['title'])
{
@@ -11517,11 +11516,10 @@ class Interpretation extends Fields
if ($item['type'] === 'category' && !$item['title'])
{
// get the other view
- $otherViews = $this->catCodeBuilder[$viewName_single]['views'];
-
+ $otherView = $this->catCodeBuilder[$viewName_single]['view'];
// return the authority to category
return $user . "->authorise('core.edit', 'com_"
- . $this->componentCodeName . "." . $otherViews
+ . $this->componentCodeName . "." . $otherView
. ".category.' . (int)\$item->" . $item['code'] . ")";
}
elseif ($item['type'] === 'user' && !$item['title'])
@@ -17459,6 +17457,10 @@ class Interpretation extends Fields
$otherViews = $viewName_list;
$otherView = $viewName_single;
}
+ // set the OtherView value
+ $this->fileContentDynamic['category' . $otherView][$this->hhh
+ . 'otherview' . $this->hhh]
+ = $otherView;
// load the category helper details in not already loaded
if (!isset(
$this->fileContentDynamic['category' . $otherView][$this->hhh
@@ -17593,7 +17595,7 @@ class Interpretation extends Fields
. " If the category has been passed in the URL check it.";
$allow[] = $this->_t(3)
. "\$allow = \$user->authorise('core.create', \$this->option . '."
- . $otherViews . ".category.' . \$categoryId);";
+ . $otherView . ".category.' . \$categoryId);";
$allow[] = $this->_t(2) . "}";
$allow[] = PHP_EOL . $this->_t(2) . "if (\$allow === null)";
$allow[] = $this->_t(2) . "{";
@@ -18168,6 +18170,8 @@ class Interpretation extends Fields
) . " Check for existing item.";
$getForm[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Modify the form based on Edit State access controls.";
+ // get the other view
+ $otherView = $this->catCodeBuilder[$viewName_single]['view'];
// check if the item has permissions.
if ($coreLoad && isset($core['core.edit.state'])
&& isset($this->permissionBuilder[$core['core.edit.state']])
@@ -18185,7 +18189,7 @@ class Interpretation extends Fields
. $viewName_single . ".' . (int) \$id))";
$getForm[] = $this->_t(3)
. "|| (isset(\$catid) && \$catid != 0 && !\$user->authorise('core.edit.state', 'com_"
- . $component . "." . $viewName_list
+ . $component . "." . $otherView
. ".category.' . (int) \$catid))";
$getForm[] = $this->_t(3)
. "|| (\$id == 0 && !\$user->authorise('"
@@ -18199,7 +18203,7 @@ class Interpretation extends Fields
. $component . "." . $viewName_single . ".' . (int) \$id))";
$getForm[] = $this->_t(3)
. "|| (isset(\$catid) && \$catid != 0 && !\$user->authorise('core.edit.state', 'com_"
- . $component . "." . $viewName_list
+ . $component . "." . $otherView
. ".category.' . (int) \$catid))";
$getForm[] = $this->_t(3)
. "|| (\$id == 0 && !\$user->authorise('core.edit.state', 'com_"
@@ -18728,7 +18732,7 @@ class Interpretation extends Fields
$allow[] = PHP_EOL . $this->_t(3) . "\$user = JFactory::getUser();";
$allow[] = $this->_t(3)
. "\$allow = \$user->authorise('core.delete', 'com_"
- . $component . "." . $otherViews
+ . $component . "." . $otherView
. ".category.' . (int) \$record->catid);";
// check if the item has permissions.
if ($coreLoad
@@ -18882,7 +18886,7 @@ class Interpretation extends Fields
$allow[] = $this->_t(2) . "{";
$allow[] = $this->_t(3)
. "\$catpermission = \$user->authorise('core.edit.state', 'com_"
- . $component . "." . $otherViews
+ . $component . "." . $otherView
. ".category.' . (int) \$record->catid);";
$allow[] = $this->_t(3)
. "if (!\$catpermission && !is_null(\$catpermission))";
diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php
index cf7d9cd02..433fc969a 100644
--- a/admin/helpers/componentbuilder.php
+++ b/admin/helpers/componentbuilder.php
@@ -6033,12 +6033,12 @@ abstract class ComponentbuilderHelper
if ($user->authorise('field.access', 'com_componentbuilder') && $user->authorise('field.submenu', 'com_componentbuilder'))
{
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_FIELDS'), 'index.php?option=com_componentbuilder&view=fields', $submenu === 'fields');
- JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_FIELD_FIELDS_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_componentbuilder.fields', $submenu === 'categories.fields');
+ JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_FIELD_FIELDS_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_componentbuilder.field', $submenu === 'categories.field');
}
if ($user->authorise('fieldtype.access', 'com_componentbuilder') && $user->authorise('fieldtype.submenu', 'com_componentbuilder'))
{
JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_SUBMENU_FIELDTYPES'), 'index.php?option=com_componentbuilder&view=fieldtypes', $submenu === 'fieldtypes');
- JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_FIELDTYPE_FIELDTYPES_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_componentbuilder.fieldtypes', $submenu === 'categories.fieldtypes');
+ JHtmlSidebar::addEntry(JText::_('COM_COMPONENTBUILDER_FIELDTYPE_FIELDTYPES_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_componentbuilder.fieldtype', $submenu === 'categories.fieldtype');
}
if ($user->authorise('language_translation.access', 'com_componentbuilder') && $user->authorise('language_translation.submenu', 'com_componentbuilder'))
{
diff --git a/admin/layouts/fieldtype/fields_fullwidth.php b/admin/layouts/fieldtype/fields_fullwidth.php
index 4ab41c6b1..b8fba47f6 100644
--- a/admin/layouts/fieldtype/fields_fullwidth.php
+++ b/admin/layouts/fieldtype/fields_fullwidth.php
@@ -118,8 +118,8 @@ $can = ComponentbuilderHelper::getActions('field');
store); ?>
- authorise('core.edit', 'com_componentbuilder.fields.category.' . (int)$item->catid)): ?>
- escape($item->category_title); ?>
+ authorise('core.edit', 'com_componentbuilder.field.category.' . (int)$item->catid)): ?>
+ escape($item->category_title); ?>
escape($item->category_title); ?>
diff --git a/admin/models/forms/field.xml b/admin/models/forms/field.xml
index 2f3a39fea..211698f6d 100644
--- a/admin/models/forms/field.xml
+++ b/admin/models/forms/field.xml
@@ -227,8 +227,7 @@
type="category"
name="catid"
label="COM_COMPONENTBUILDER_FIELD_CATID_LABEL"
- extension="com_componentbuilder.fields"
- default=""
+ extension="com_componentbuilder.field"
description="COM_COMPONENTBUILDER_FIELD_CATID_DESCRIPTION"
class="inputbox"
/>
diff --git a/admin/models/forms/fieldtype.xml b/admin/models/forms/fieldtype.xml
index ac00e85e6..e456efeb4 100644
--- a/admin/models/forms/fieldtype.xml
+++ b/admin/models/forms/fieldtype.xml
@@ -449,7 +449,7 @@
type="category"
name="catid"
label="COM_COMPONENTBUILDER_FIELDTYPE_CATID_LABEL"
- extension="com_componentbuilder.fieldtypes"
+ extension="com_componentbuilder.fieldtype"
default=""
description="COM_COMPONENTBUILDER_FIELDTYPE_CATID_DESCRIPTION"
class="inputbox"
diff --git a/admin/views/fields/tmpl/default_body.php b/admin/views/fields/tmpl/default_body.php
index e79c51bd9..382ce7d16 100644
--- a/admin/views/fields/tmpl/default_body.php
+++ b/admin/views/fields/tmpl/default_body.php
@@ -95,8 +95,8 @@ $edit = "index.php?option=com_componentbuilder&view=fields&task=field.edit";
|
- user->authorise('core.edit', 'com_componentbuilder.fields.category.' . (int)$item->catid)): ?>
- escape($item->category_title); ?>
+ user->authorise('core.edit', 'com_componentbuilder.field.category.' . (int)$item->catid)): ?>
+ escape($item->category_title); ?>
escape($item->category_title); ?>
diff --git a/admin/views/fields/view.html.php b/admin/views/fields/view.html.php
index 2beec06b4..3fc356eba 100644
--- a/admin/views/fields/view.html.php
+++ b/admin/views/fields/view.html.php
@@ -196,7 +196,7 @@ class ComponentbuilderViewFields extends JViewLegacy
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_CATEGORY'),
'filter_category_id',
- JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fields'), 'value', 'text', $this->state->get('filter.category_id'))
+ JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.field'), 'value', 'text', $this->state->get('filter.category_id'))
);
if ($this->canBatch && $this->canCreate && $this->canEdit)
@@ -205,7 +205,7 @@ class ComponentbuilderViewFields extends JViewLegacy
JHtmlBatch_::addListSelection(
JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_CATEGORY'),
'batch[category]',
- JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fields'), 'value', 'text')
+ JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.field'), 'value', 'text')
);
}
diff --git a/admin/views/fieldtypes/tmpl/default_body.php b/admin/views/fieldtypes/tmpl/default_body.php
index 0c4d65319..887e1812f 100644
--- a/admin/views/fieldtypes/tmpl/default_body.php
+++ b/admin/views/fieldtypes/tmpl/default_body.php
@@ -77,8 +77,8 @@ $edit = "index.php?option=com_componentbuilder&view=fieldtypes&task=fieldtype.ed
|
- user->authorise('core.edit', 'com_componentbuilder.fieldtypes.category.' . (int)$item->catid)): ?>
- escape($item->category_title); ?>
+ user->authorise('core.edit', 'com_componentbuilder.fieldtype.category.' . (int)$item->catid)): ?>
+ escape($item->category_title); ?>
escape($item->category_title); ?>
diff --git a/admin/views/fieldtypes/view.html.php b/admin/views/fieldtypes/view.html.php
index 075cdb23f..fac139380 100644
--- a/admin/views/fieldtypes/view.html.php
+++ b/admin/views/fieldtypes/view.html.php
@@ -191,7 +191,7 @@ class ComponentbuilderViewFieldtypes extends JViewLegacy
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_CATEGORY'),
'filter_category_id',
- JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fieldtypes'), 'value', 'text', $this->state->get('filter.category_id'))
+ JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fieldtype'), 'value', 'text', $this->state->get('filter.category_id'))
);
if ($this->canBatch && $this->canCreate && $this->canEdit)
@@ -200,7 +200,7 @@ class ComponentbuilderViewFieldtypes extends JViewLegacy
JHtmlBatch_::addListSelection(
JText::_('COM_COMPONENTBUILDER_KEEP_ORIGINAL_CATEGORY'),
'batch[category]',
- JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fieldtypes'), 'value', 'text')
+ JHtml::_('select.options', JHtml::_('category.options', 'com_componentbuilder.fieldtype'), 'value', 'text')
);
}
}
diff --git a/componentbuilder.xml b/componentbuilder.xml
index f96061588..d4551f41b 100644
--- a/componentbuilder.xml
+++ b/componentbuilder.xml
@@ -1,7 +1,7 @@
COM_COMPONENTBUILDER
- 29th May, 2020
+ 30th May, 2020
Llewellyn van der Merwe
llewellyn@joomlacomponentbuilder.com
http://www.joomlacomponentbuilder.com
diff --git a/script.php b/script.php
index 817b584db..a6775ed6a 100644
--- a/script.php
+++ b/script.php
@@ -1516,7 +1516,7 @@ class com_componentbuilderInstallerScript
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Field catid alias is found
- $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fields.category') );
+ $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.field.category') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
@@ -1527,7 +1527,7 @@ class com_componentbuilderInstallerScript
// Since there are load the needed field_catid type ids
$field_catid_ids = $db->loadColumn();
// Remove Field catid from the content type table
- $field_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fields.category') );
+ $field_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.field.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
@@ -1538,11 +1538,11 @@ class com_componentbuilderInstallerScript
if ($field_catid_done)
{
// If succesfully remove Field catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fields.category) type alias was removed from the #__content_type table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.field.category) type alias was removed from the #__content_type table'));
}
// Remove Field catid items from the contentitem tag map table
- $field_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fields.category') );
+ $field_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.field.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
@@ -1553,11 +1553,11 @@ class com_componentbuilderInstallerScript
if ($field_catid_done)
{
// If succesfully remove Field catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fields.category) type alias was removed from the #__contentitem_tag_map table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.field.category) type alias was removed from the #__contentitem_tag_map table'));
}
// Remove Field catid items from the ucm content table
- $field_catid_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.fields.category') );
+ $field_catid_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.field.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
@@ -1568,7 +1568,7 @@ class com_componentbuilderInstallerScript
if ($field_catid_done)
{
// If succesfully remove Field catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fields.category) type alias was removed from the #__ucm_content table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.field.category) type alias was removed from the #__ucm_content table'));
}
// Make sure that all the Field catid items are cleared from DB
@@ -1688,7 +1688,7 @@ class com_componentbuilderInstallerScript
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Fieldtype catid alias is found
- $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtypes.category') );
+ $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtype.category') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
@@ -1699,7 +1699,7 @@ class com_componentbuilderInstallerScript
// Since there are load the needed fieldtype_catid type ids
$fieldtype_catid_ids = $db->loadColumn();
// Remove Fieldtype catid from the content type table
- $fieldtype_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtypes.category') );
+ $fieldtype_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtype.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
@@ -1710,11 +1710,11 @@ class com_componentbuilderInstallerScript
if ($fieldtype_catid_done)
{
// If succesfully remove Fieldtype catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtypes.category) type alias was removed from the #__content_type table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtype.category) type alias was removed from the #__content_type table'));
}
// Remove Fieldtype catid items from the contentitem tag map table
- $fieldtype_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtypes.category') );
+ $fieldtype_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_componentbuilder.fieldtype.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
@@ -1725,11 +1725,11 @@ class com_componentbuilderInstallerScript
if ($fieldtype_catid_done)
{
// If succesfully remove Fieldtype catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtypes.category) type alias was removed from the #__contentitem_tag_map table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtype.category) type alias was removed from the #__contentitem_tag_map table'));
}
// Remove Fieldtype catid items from the ucm content table
- $fieldtype_catid_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.fieldtypes.category') );
+ $fieldtype_catid_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_componentbuilder.fieldtype.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
@@ -1740,7 +1740,7 @@ class com_componentbuilderInstallerScript
if ($fieldtype_catid_done)
{
// If succesfully remove Fieldtype catid add queued success message.
- $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtypes.category) type alias was removed from the #__ucm_content table'));
+ $app->enqueueMessage(JText::_('The (com_componentbuilder.fieldtype.category) type alias was removed from the #__ucm_content table'));
}
// Make sure that all the Fieldtype catid items are cleared from DB
@@ -5890,6 +5890,75 @@ class com_componentbuilderInstallerScript
JFile::delete($wiki_menu);
}
}
+ // target version less then or equal to 2.11.2
+ if (count($this->JCBversion) == 3 && $this->JCBversion[0] <= 2 && ($this->JCBversion[1] < 11 || ($this->JCBversion[1] == 11 && $this->JCBversion[2] <= 2)))
+ {
+ // we need to make a database correction for the field categories and the fieldtype categories
+ $fix_categories = array(
+ 'com_componentbuilder.fields' => 'com_componentbuilder.field',
+ 'com_componentbuilder.fieldtypes' => 'com_componentbuilder.fieldtype'
+ );
+ // targeted tables (to fix all places categories are mapped into Joomla)
+ $fix_tables = array(
+ 'content_types' => array(
+ 'id' => 'type_id',
+ 'key' => 'type_alias',
+ 'suffix' => '.category'),
+ 'contentitem_tag_map' => array(
+ 'id' => 'type_id',
+ 'key' => 'type_alias',
+ 'suffix' => '.category'),
+ 'ucm_content' => array(
+ 'id' => 'core_content_id',
+ 'key' => 'core_type_alias',
+ 'suffix' => '.category'),
+ 'categories' => array(
+ 'id' => 'id',
+ 'key' => 'extension',
+ 'suffix' => '')
+ );
+
+ // the script that does the work
+ foreach ($fix_categories as $fix => $category)
+ {
+ // loop over the targeted tables
+ foreach ($fix_tables as $_table => $_update)
+ {
+ // Create a new query object.
+ $query = $db->getQuery(true);
+ // get all type_ids
+ $query->select($db->quoteName($_update['id']));
+ $query->from($db->quoteName('#__' . $_table));
+ $query->where( $db->quoteName($_update['key']) . ' = ' . $db->quote($fix . $_update['suffix']));
+ // Reset the query using our newly populated query object.
+ $db->setQuery($query);
+ $db->execute();
+ if ($db->getNumRows())
+ {
+
+ // all these must be updated
+ $ids = $db->loadColumn();
+ // Fields to update.
+ $fields = array(
+ $db->quoteName($_update['key']) . ' = ' . $db->quote($category . $_update['suffix'])
+ );
+ // Conditions for which records should be updated.
+ $conditions = array(
+ $db->quoteName($_update['id']) . ' IN (' . implode(', ', $ids) . ')'
+ );
+ $query->update($db->quoteName('#__' . $_table))->set($fields)->where($conditions);
+ $db->setQuery($query);
+ $result = $db->execute();
+ // on success
+ if ($result)
+ {
+ $app->enqueueMessage("Updated #__$_table - " . $_update['key'] . " from $fix" . $_update['suffix'] . " to $category" . $_update['suffix'] . "! ", 'Notice');
+ }
+
+ }
+ }
+ }
+ }
}
}
@@ -6136,7 +6205,7 @@ class com_componentbuilderInstallerScript
// Create the field category content type object.
$field_category = new stdClass();
$field_category->type_title = 'Componentbuilder Field Catid';
- $field_category->type_alias = 'com_componentbuilder.fields.category';
+ $field_category->type_alias = 'com_componentbuilder.field.category';
$field_category->table = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$field_category->field_mappings = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$field_category->router = 'ComponentbuilderHelperRoute::getCategoryRoute';
@@ -6160,7 +6229,7 @@ class com_componentbuilderInstallerScript
// Create the fieldtype category content type object.
$fieldtype_category = new stdClass();
$fieldtype_category->type_title = 'Componentbuilder Fieldtype Catid';
- $fieldtype_category->type_alias = 'com_componentbuilder.fieldtypes.category';
+ $fieldtype_category->type_alias = 'com_componentbuilder.fieldtype.category';
$fieldtype_category->table = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$fieldtype_category->field_mappings = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$fieldtype_category->router = 'ComponentbuilderHelperRoute::getCategoryRoute';
@@ -7850,7 +7919,7 @@ class com_componentbuilderInstallerScript
// Create the field category content type object.
$field_category = new stdClass();
$field_category->type_title = 'Componentbuilder Field Catid';
- $field_category->type_alias = 'com_componentbuilder.fields.category';
+ $field_category->type_alias = 'com_componentbuilder.field.category';
$field_category->table = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$field_category->field_mappings = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$field_category->router = 'ComponentbuilderHelperRoute::getCategoryRoute';
@@ -7908,7 +7977,7 @@ class com_componentbuilderInstallerScript
// Create the fieldtype category content type object.
$fieldtype_category = new stdClass();
$fieldtype_category->type_title = 'Componentbuilder Fieldtype Catid';
- $fieldtype_category->type_alias = 'com_componentbuilder.fieldtypes.category';
+ $fieldtype_category->type_alias = 'com_componentbuilder.fieldtype.category';
$fieldtype_category->table = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$fieldtype_category->field_mappings = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$fieldtype_category->router = 'ComponentbuilderHelperRoute::getCategoryRoute';
diff --git a/site/helpers/route.php b/site/helpers/route.php
index 341ed01c4..441972641 100644
--- a/site/helpers/route.php
+++ b/site/helpers/route.php
@@ -85,8 +85,8 @@ abstract class ComponentbuilderHelperRoute
}
$views = array(
- "com_componentbuilder.fields" => "field",
- "com_componentbuilder.fieldtypes" => "fieldtype");
+ "com_componentbuilder.field" => "field",
+ "com_componentbuilder.fieldtype" => "fieldtype");
$view = $views[$category->extension];
if ($id < 1 || !($category instanceof JCategoryNode))
|