Beispiel #1
0
 public function delete($pk = null)
 {
     $db = JFactory::getDbo();
     $k = $this->_tbl_key;
     $pk = is_null($pk) ? $this->{$k} : $pk;
     $this->load($pk);
     if ($this->home == 1 || $this->default == 1) {
         $this->setError(JText::_('COM_JUDOWNLOAD_CAN_NOT_DELETE_DEFAULT_TEMPLATE_STYLE'));
         return false;
     }
     $defaultStyleObject = JUDownloadFrontHelperTemplate::getDefaultTemplateStyle();
     $query = $db->getQuery(true);
     $query->update('#__judownload_categories');
     $query->set('style_id = -2');
     if ($defaultStyleObject->template_id != $this->template_id) {
         $query->set('template_params = ""');
     }
     $query->where('parent_id = 0');
     $query->where('style_id = ' . $pk);
     $db->setQuery($query);
     $db->execute();
     $query = $db->getQuery(true);
     $query->select('id');
     $query->from('#__judownload_categories');
     $query->where('style_id = ' . $pk);
     $db->setQuery($query);
     $categoryArrayAssignedToStyle = $db->loadColumn();
     $query = $db->getQuery(true);
     $query->update('#__judownload_categories');
     $query->set('style_id = -1');
     $query->where('parent_id != 0');
     $query->where('style_id = ' . $pk);
     $db->setQuery($query);
     $db->execute();
     foreach ($categoryArrayAssignedToStyle as $categoryIdAssignedToStyle) {
         $styleObjectOfCategory = JUDownloadFrontHelperTemplate::getTemplateStyleOfCategory($categoryIdAssignedToStyle);
         if ($styleObjectOfCategory->template_id != $this->template_id) {
             $query = $db->getQuery(true);
             $query->update('#__judownload_categories');
             $query->set('template_params = ""');
             $query->where('id = ' . $categoryIdAssignedToStyle);
             $db->setQuery($query);
             $db->execute();
             $query = $db->getQuery(true);
             $query->update('#__judownload_documents AS d');
             $query->set('d.template_params = ""');
             $query->join('', '#__judownload_documents_xref AS dxref ON d.id = dxref.doc_id AND dxref.main = 1');
             $query->where('d.style_id = -1');
             $query->where('dxref.cat_id = ' . $categoryIdAssignedToStyle);
             $db->setQuery($query);
             $db->execute();
             JUDownloadFrontHelperTemplate::removeTemplateParamsOfInheritedStyleCatDoc($categoryIdAssignedToStyle);
         }
     }
     $query = $db->getQuery(true);
     $query->select('d.id');
     $query->select('dxref.cat_id AS cat_id');
     $query->from('#__judownload_documents AS d');
     $query->join('', '#__judownload_documents_xref AS dxref ON d.id = dxref.doc_id AND dxref.main = 1');
     $query->where('d.style_id = ' . $pk);
     $db->setQuery($query);
     $documentObjectListAssignedToStyle = $db->loadObjectList();
     $catArrayResetTemplateParams = array();
     foreach ($documentObjectListAssignedToStyle as $documentObject) {
         $styleObjectOfCategory = JUDownloadFrontHelperTemplate::getTemplateStyleOfCategory($documentObject->cat_id);
         if ($styleObjectOfCategory->template_id != $this->template_id) {
             $catArrayResetTemplateParams[] = $documentObject->cat_id;
         }
     }
     $catArrayResetTemplateParams = array_unique($catArrayResetTemplateParams);
     if (is_array($catArrayResetTemplateParams) && count($catArrayResetTemplateParams)) {
         $query = $db->getQuery(true);
         $query->update('#__judownload_documents AS d');
         $query->join('', '#__judownload_documents_xref AS dxref ON d.id = dxref.doc_id AND dxref.main = 1');
         $query->set('d.template_params = ""');
         $query->set('d.style_id = -1');
         $query->where('dxref.cat_id IN (' . implode(',', $catArrayResetTemplateParams) . ')');
         $query->where('d.style_id = ' . $pk);
         $db->setQuery($query);
         $db->execute();
     }
     return parent::delete($pk);
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 public function save($data)
 {
     $app = JFactory::getApplication();
     $categoryArrayAddToStyle = $data['categories'] ? $data['categories'] : array();
     unset($data['categories']);
     $dispatcher = JDispatcher::getInstance();
     $table = $this->getTable();
     $key = $table->getKeyName();
     $pk = !empty($data[$key]) ? $data[$key] : (int) $this->getState($this->getName() . '.id');
     $isNew = true;
     $db = JFactory::getDbo();
     $defaultTemplateStyleObject = JUDownloadFrontHelperTemplate::getDefaultTemplateStyle();
     JPluginHelper::importPlugin('content');
     try {
         if ($pk > 0) {
             $table->load($pk);
             if ($table->home == 1) {
                 $data["home"] = 1;
             }
             $templateId = $table->template_id;
             $isNew = false;
         } else {
             $templateId = $data["template_id"];
         }
         if ($data["home"] == 1 && $table->home != 1) {
             if ($templateId != $defaultTemplateStyleObject->template_id) {
                 if ($data['changeTemplateStyleAction'] == 1) {
                     JUDownloadFrontHelperTemplate::updateStyleIdForCatDocUsingDefaultStyle($defaultTemplateStyleObject->id);
                     $app->enqueueMessage(JText::sprintf('COM_JUDOWNLOAD_DEFAULT_TEMPLATE_STYLE_HAS_BEEN_CHANGED_TO_X', $defaultTemplateStyleObject->title), 'Notice');
                 } else {
                     JUDownloadFrontHelperTemplate::removeTemplateParamsOfCatDocUsingDefaultStyle();
                 }
             }
         }
         if ($data['home']) {
             if ($data['home'] != 1) {
                 if ($defaultTemplateStyleObject->template_id != $templateId) {
                     $data['home'] = 0;
                 }
             }
         }
         $query = $db->getQuery(true);
         $query->select("tpl.*");
         $query->select("plg.title,plg.folder");
         $query->from("#__judownload_templates AS tpl");
         $query->join("", "#__judownload_plugins AS plg ON plg.id = tpl.plugin_id");
         $query->where("tpl.id = " . $templateId);
         $db->setQuery($query);
         $templateObject = $db->loadObject();
         if (!is_object($templateObject)) {
             $this->setError(JText::_("COM_JUDOWNLOAD_TEMPLATE_DOES_NOT_EXIST"));
             return false;
         }
         $query = $db->getQuery(true);
         $query->select("id");
         $query->from("#__judownload_template_styles");
         $query->where("template_id = " . $templateObject->parent_id);
         $db->setQuery($query);
         $styleParentObjectList = $db->loadColumn();
         $parentStyleId = (int) $data["parent_id"];
         if (is_array($styleParentObjectList) && !empty($styleParentObjectList)) {
             if (!in_array($parentStyleId, $styleParentObjectList)) {
                 $this->setError(JText::_("COM_JUDOWNLOAD_INVALID_PARENT_STYLE"));
                 return false;
             }
         } else {
             if ($templateObject->parent_id == 1) {
                 $this->setError(JText::_("COM_JUDOWNLOAD_PARENT_STYLE_DOES_NOT_EXIST_YOU_NEED_TO_CREATE_ROOT_STYLE"));
                 return false;
             }
             $query = $db->getQuery(true);
             $query->select("tpl.*");
             $query->select("plg.title,plg.folder");
             $query->from("#__judownload_templates AS tpl");
             $query->join("", "#__judownload_plugins AS plg ON plg.id = tpl.plugin_id");
             $query->where("tpl.id = " . $templateObject->parent_id);
             $db->setQuery($query);
             $templateParentObject = $db->loadObject();
             $this->setError(JText::_("COM_JUDOWNLOAD_PARENT_STYLE_DOES_NOT_EXIST") . $templateParentObject->title);
             return false;
         }
         if ($table->parent_id != $data['parent_id'] || $data['id'] == 0) {
             $table->setLocation($data['parent_id'], 'last-child');
         }
         if (!$table->bind($data)) {
             $this->setError($table->getError());
             return false;
         }
         $this->prepareTable($table);
         if (!$table->check()) {
             $this->setError($table->getError());
             return false;
         }
         $result = $dispatcher->trigger($this->event_before_save, array($this->option . '.' . $this->name, &$table, $isNew));
         if (in_array(false, $result, true)) {
             $this->setError($table->getError());
             return false;
         }
         if (!$table->store()) {
             $this->setError($table->getError());
             return false;
         }
         if ($table->home) {
             $query = $db->getQuery(true);
             $query->update("#__judownload_template_styles");
             $query->set("home = 0");
             $query->where("home = " . $db->quote($table->home));
             $query->where("id != " . $table->id);
             $db->setQuery($query);
             $db->execute();
         }
         $query = $db->getQuery(true);
         $query->select('id');
         $query->from('#__judownload_categories');
         $query->where('style_id =' . $table->id);
         $db->setQuery($query);
         $categoryArrayAssignedToStyle = $db->loadColumn();
         $categoryArrayRemovedStyle = array_diff($categoryArrayAssignedToStyle, $categoryArrayAddToStyle);
         if (!empty($categoryArrayRemovedStyle)) {
             foreach ($categoryArrayRemovedStyle as $categoryIdRemovedStyle) {
                 $query = $db->getQuery(true);
                 $query->update('#__judownload_categories');
                 $query->set('style_id = -2');
                 if ($defaultTemplateStyleObject->template_id != $table->template_id) {
                     $query->set('template_params = ""');
                 }
                 $query->where('parent_id = 0');
                 $query->where('id = ' . $categoryIdRemovedStyle);
                 $db->setQuery($query);
                 $db->execute();
                 $query = $db->getQuery(true);
                 $query->update('#__judownload_categories');
                 $query->set('style_id = -1');
                 $query->where('parent_id != 0');
                 $query->where('id = ' . $categoryIdRemovedStyle);
                 $db->setQuery($query);
                 $db->execute();
             }
             foreach ($categoryArrayRemovedStyle as $categoryIdRemovedStyle) {
                 $templateStyleOfCategoryObject = JUDownloadFrontHelperTemplate::getTemplateStyleOfCategory($categoryIdRemovedStyle);
                 if ($templateStyleOfCategoryObject->template_id != $table->template_id) {
                     $query = $db->getQuery(true);
                     $query->update('#__judownload_categories');
                     $query->set('template_params = ""');
                     $query->where('style_id = -1');
                     $query->where('parent_id != 0');
                     $query->where('id = ' . $categoryIdRemovedStyle);
                     $db->setQuery($query);
                     $db->execute();
                     JUDownloadFrontHelperTemplate::removeTemplateParamsOfInheritedStyleCatDoc($categoryIdRemovedStyle);
                 }
             }
         }
         if (!empty($categoryArrayAddToStyle)) {
             foreach ($categoryArrayAddToStyle as $categoryIdAddToStyle) {
                 $query = $db->getQuery(true);
                 $query->update('#__judownload_categories');
                 $query->set('style_id = ' . $table->id);
                 $query->where('style_id != ' . $table->id);
                 $query->where('id = ' . $categoryIdAddToStyle);
                 $db->setQuery($query);
                 $db->execute();
                 JUDownloadFrontHelperTemplate::removeTemplateParamsOfInheritedStyleCatDoc($categoryIdAddToStyle);
             }
         }
         $this->cleanCache();
         $dispatcher->trigger($this->event_after_save, array($this->option . '.' . $this->name, &$table, $isNew));
     } catch (Exception $e) {
         $this->setError($e->getMessage());
         return false;
     }
     $pkName = $table->getKeyName();
     if (isset($table->{$pkName})) {
         $this->setState($this->getName() . '.id', $table->{$pkName});
     }
     $this->setState($this->getName() . '.new', $isNew);
     return true;
 }