public function moveCats($cat_id_arr, $tocat_id, $move_option_arr) { $tocat_id = (int) $tocat_id; $cat_id_arr = (array) $cat_id_arr; if (empty($cat_id_arr)) { JError::raiseWarning(100, JText::_('COM_JUDOWNLOAD_NO_SOURCE_CATEGORY_SELECTED')); return false; } if (empty($tocat_id)) { JError::raiseWarning(100, JText::_('COM_JUDOWNLOAD_NO_TARGET_CATEGORY_SELECTED')); return false; } $user = JFactory::getUser(); $table = $this->getTable(); if (!$table->load($tocat_id)) { JError::raiseWarning(500, JText::_('COM_JUDOWNLOAD_TARGET_CATEGORY_NOT_FOUND')); return false; } $assetName = 'com_judownload.category.' . (int) $tocat_id; $candoCreate = $user->authorise('judl.category.create', $assetName); if (!$candoCreate) { JError::raiseError(100, JText::sprintf('COM_JUDOWNLOAD_CAN_NOT_CREATE_CATEGORY_IN_CATEGORY_X', $table->title)); return false; } set_time_limit(0); $total_moved_categories = 0; foreach ($cat_id_arr as $cat_id) { if (!$table->load($cat_id, true)) { continue; } $assetName = 'com_judownload.category.' . (int) $cat_id; $candoEdit = $user->authorise('judl.category.edit', $assetName); if (!$candoEdit) { JError::raiseWarning(100, JText::_('COM_JUDOWNLOAD_YOU_DONT_HAVE_PERMISSION_TO_EDIT_CAT')); continue; } if ($this->isChildCategory($cat_id, $tocat_id) || $tocat_id == $table->parent_id) { continue; } $table->setLocation($tocat_id, 'last-child'); if (in_array('keep_extra_fields', $move_option_arr)) { if ($table->selected_fieldgroup == -1) { $tocat_obj = JUDownloadHelper::getCategoryByID($tocat_id); if ($table->fieldgroup_id != $tocat_obj->fieldgroup_id) { $table->selected_fieldgroup = $table->fieldgroup_id; } } } else { if ($table->fieldgroup_id != 0) { JUDownloadHelper::changeInheritedFieldGroupId($table->id, 0); $query = "DELETE FROM #__judownload_fields_ordering WHERE `item_id` = " . $table->id . " AND `type` = 'category'"; $db = JFactory::getDbo(); $db->setQuery($query); $db->execute(); } $table->selected_fieldgroup = $table->fieldgroup_id = 0; } if (in_array('keep_rates', $move_option_arr)) { if ($table->selected_criteriagroup == -1) { $tocat_obj = JUDownloadHelper::getCategoryByID($tocat_id); if ($table->criteriagroup_id != $tocat_obj->criteriagroup_id) { $table->selected_criteriagroup = $table->criteriagroup_id; } } } else { $table->selected_criteriagroup = $table->criteriagroup_id = 0; JUDownloadHelper::changeInheritedCriteriagroupId($table->id, $table->criteriagroup_id); } if ($table->style_id == -1) { if ($table->parent_id != $tocat_id) { $oldTemplateStyleObject = JUDownloadFrontHelperTemplate::getTemplateStyleOfCategory($table->id); $newTemplateStyleObject = JUDownloadFrontHelperTemplate::getTemplateStyleOfCategory($tocat_id); if ($oldTemplateStyleObject->template_id != $newTemplateStyleObject->template_id) { if (in_array('keep_template_params', $move_option_arr)) { $table->style_id = $oldTemplateStyleObject->id; } else { $table->template_params = ''; JUDownloadFrontHelperTemplate::removeTemplateParamsOfInheritedStyleCatDoc($table->id); } } } } if ($table->store()) { $total_moved_categories++; } } return $total_moved_categories; }