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))