public function delete($pk = null) { $k = $this->_tbl_key; $pk = is_null($pk) ? $this->{$k} : $pk; if (parent::delete($pk)) { $db = JFactory::getDbo(); $query = "DELETE FROM #__judirectory_criterias_values WHERE rating_id = {$pk}"; $db->setQuery($query); $db->execute(); JUDirectoryHelper::deleteLogs('rating', $pk); return true; } return false; }
protected function _delete($comment) { JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_judirectory/tables'); $db = $this->_db; $query = "DELETE FROM #__judirectory_subscriptions WHERE item_id = " . $comment->id . " AND type = 'comment'"; $db->setQuery($query); $db->execute(); $query = "DELETE FROM #__judirectory_reports WHERE item_id = " . $comment->id . " AND type = 'comment'"; $db->setQuery($query); $db->execute(); $query = "SELECT r.id FROM #__judirectory_rating AS r JOIN #__judirectory_comments AS cm ON r.id = cm.rating_id WHERE cm.id = " . $comment->id; $db->setQuery($query); $ratingIds = $db->loadColumn(); if ($ratingIds) { $ratingTable = JTable::getInstance("Rating", "JUDirectoryTable"); foreach ($ratingIds as $ratingId) { $ratingTable->delete($ratingId); } } if ($comment->parent_id == 0 && $comment->approved == 1) { $query = "SELECT SUM(score) AS total_ratings, COUNT(*) AS total_votes FROM #__judirectory_rating AS rating LEFT JOIN #__judirectory_comments AS comment ON (comment.rating_id = rating.id AND comment.approved = 1) WHERE rating.listing_id = " . $comment->listing_id; $db->setQuery($query); $score = $db->loadObject(); $listing_table = JTable::getInstance("Listing", "JUDirectoryTable"); if ($listing_table->load($comment->listing_id)) { if ($score->total_votes > 0) { $listing_table->rating = (double) $score->total_ratings / $score->total_votes; } else { $listing_table->rating = 0; } $listing_table->total_votes = $score->total_votes; $listing_table->store(); } } $query = "DELETE FROM #__judirectory_mailqs\n\t\t\t WHERE item_id =" . $comment->id . "\n\t\t\t\t\t\tAND email_id IN (SELECT id FROM #__judirectory_emails WHERE (`event` LIKE 'comment.%' and `event` != 'comment.delete'))"; $db->setQuery($query); $db->execute(); JUDirectoryHelper::deleteLogs('comment', $comment->id); return true; }
public function delete($pk = null) { JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_judirectory/tables'); $k = $this->_tbl_key; $pk = is_null($pk) ? $this->{$k} : $pk; $db = JFactory::getDbo(); $query = "DELETE FROM #__judirectory_subscriptions WHERE item_id = {$pk} AND type = 'listing'"; $db->setQuery($query); $db->execute(); $query = "SELECT * FROM #__judirectory_comments WHERE listing_id = " . $pk; $db->setQuery($query); $commentIds = $db->loadColumn(); if ($commentIds) { $commentTable = JTable::getInstance("Comment", "JUDirectoryTable"); foreach ($commentIds as $commentId) { $commentTable->delete($commentId); } } $query = "SELECT id FROM #__judirectory_rating WHERE listing_id = {$pk}"; $db->setQuery($query); $ratingItemIds = $db->loadColumn(); if ($ratingItemIds) { $ratingTable = JTable::getInstance("Rating", "JUDirectoryTable"); foreach ($ratingItemIds as $ratingItemId) { $ratingTable->delete($ratingItemId); } } $query = "DELETE FROM #__judirectory_reports WHERE item_id = {$pk} AND type = 'listing'"; $db->setQuery($query); $db->execute(); $query = "SELECT id FROM #__judirectory_collections_items WHERE listing_id = {$pk}"; $db->setQuery($query); $collectionItemIds = $db->loadColumn(); if ($collectionItemIds) { $collectionItemTable = JTable::getInstance("CollectionItem", "JUDirectoryTable"); foreach ($collectionItemIds as $collectionItemId) { $collectionItemTable->delete($collectionItemId); } } JUDirectoryHelper::deleteLogs('listing', $pk); $query = "DELETE FROM #__judirectory_mailqs\n\t\t\t WHERE item_id =" . $pk . "\n\t\t\t\t\t\tAND email_id IN (SELECT id FROM #__judirectory_emails WHERE (`event` LIKE 'listing.%' AND `event` != 'listing.delete'))"; $db->setQuery($query); $db->execute(); $query = $db->getQuery(true); $query->select('id'); $query->from('#__judirectory_listings'); $query->where('approved=' . -$pk); $db->setQuery($query); $tempListingIds = $db->loadColumn(); if (count($tempListingIds)) { foreach ($tempListingIds as $tempListingId) { $this->deleteMainData($tempListingId, true); } } $cat_id = JUDirectoryFrontHelperCategory::getMainCategoryId($this->id); $this->deleteMainData($pk); if (parent::delete($pk)) { $app = JFactory::getApplication(); if ($app->isSite()) { $registry = new JRegistry(); $registry->loadObject($this); $mailData = $registry->toArray(); $mailData['cat_id'] = $cat_id; if ($this->approved < 1) { JUDirectoryFrontHelperMail::sendEmailByEvent('listing.reject', $this->id, $mailData); } else { JUDirectoryFrontHelperMail::sendEmailByEvent('listing.delete', $this->id, $mailData); } } return true; } else { return false; } }
public function delete(&$pks) { $dispatcher = JDispatcher::getInstance(); $pks = (array) $pks; $table = $this->getTable(); JPluginHelper::importPlugin('content'); $modelListing = JModelLegacy::getInstance('Listing', 'JUDirectoryModel'); $listingTable = JTable::getInstance("Listing", "JUDirectoryTable"); $canDeleteCatIds = $canNotDeleteCatIds = $canDeleteListingIds = $canNotDeleteListingIds = array(); $db = JFactory::getDbo(); while (!empty($pks)) { $pk = array_shift($pks); $table->reset(); if ($table->load($pk)) { $deleteCurrentCat = true; if ($this->canDelete($table)) { $query = $db->getQuery(true); $query->SELECT('listing_id'); $query->FROM('#__judirectory_listings_xref'); $query->WHERE('cat_id=' . $pk . ' AND main=1'); $db->setQuery($query); $listingIds = $db->loadColumn(); if ($listingIds) { foreach ($listingIds as $listingId) { $listingTable->reset(); if ($listingTable->load($listingId)) { if ($modelListing->canDelete($listingTable)) { $canDeleteListingIds[] = $listingId; } else { $canNotDeleteListingIds[] = $listingId; $deleteCurrentCat = false; } } } } } else { $deleteCurrentCat = false; } if (!$deleteCurrentCat) { $canNotDeleteCatIds[] = $pk; } else { $canDeleteCatIds[] = $pk; } $query = $db->getQuery(true); $query->select('id'); $query->from('#__judirectory_categories'); $query->where('lft > ' . (int) $table->lft); $query->where('rgt < ' . (int) $table->rgt); $query->order('lft'); $db->setQuery($query); $childIds = $db->loadColumn(); foreach ($childIds as $childId) { if (!in_array($childId, $pks)) { array_push($pks, $childId); } } } } if ($canNotDeleteCatIds) { foreach ($canNotDeleteCatIds as $caNotDeleteCatId) { $categories = $table->getPath($caNotDeleteCatId); if ($categories) { foreach ($categories as $category) { $canDeleteCatIdIndex = array_search($category->id, $canDeleteCatIds); if ($canDeleteCatIdIndex !== false) { unset($canDeleteCatIds[$canDeleteCatIdIndex]); $canNotDeleteCatIds[] = $category->id; } } } } } $canDeleteListingIds = array_unique($canDeleteListingIds); if ($canDeleteListingIds) { foreach ($canDeleteListingIds as $listingId) { if (!$listingTable->delete($listingId)) { $this->setError($listingTable->getError()); return false; } } } $canDeleteCatIds = array_unique($canDeleteCatIds); if ($canDeleteCatIds) { foreach ($canDeleteCatIds as $pk) { if ($table->load($pk)) { $context = $this->option . '.' . $this->name; $result = $dispatcher->trigger($this->event_before_delete, array($context, $table)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } if (!$table->delete($pk, false)) { $this->setError($table->getError()); return false; } else { $query = "DELETE FROM #__judirectory_categories_relations WHERE cat_id=" . $pk; $db->setQuery($query); $db->execute(); $query = "DELETE FROM #__judirectory_listings_xref WHERE main=0 AND cat_id=" . $pk; $db->setQuery($query); $db->execute(); $query = "SELECT mod_id FROM #__judirectory_moderators_xref WHERE cat_id = " . $pk; $db->setQuery($query); $moderatorIds = $db->loadColumn(); $query = "DELETE FROM #__judirectory_moderators_xref WHERE cat_id=" . $pk; $db->setQuery($query); $db->execute(); if ($moderatorIds) { $modTable = JTable::getInstance("Moderator", "JUDirectoryTable"); foreach ($moderatorIds as $moderatorId) { $query = $db->getQuery(true); $query->select('COUNT(*)'); $query->from('#__judirectory_moderators AS m'); $query->join('', '#__judirectory_moderators_xref AS mxref ON m.id = mxref.mod_id'); $query->where('m.id =' . $moderatorId); $db->setQuery($query); $totalModeratedCats = $db->loadResult(); if ($totalModeratedCats <= 0) { $modTable->reset(); if ($modTable->load(array($moderatorId))) { $modTable->delete(); } } } } $images = json_decode($table->images); if (is_object($images)) { if ($images->intro_image) { $intro_image = JUDirectoryFrontHelper::getDirectory('category_intro_image_directory', 'media/com_judirectory/images/category/intro/') . $images->intro_image; $ori_intro_image = JUDirectoryFrontHelper::getDirectory('category_intro_image_directory', 'media/com_judirectory/images/category/intro/') . "original/" . $images->intro_image; if (JFile::exists(JPATH_ROOT . "/" . $ori_intro_image)) { JFile::delete(JPATH_ROOT . "/" . $ori_intro_image); } if (JFile::exists(JPATH_ROOT . "/" . $intro_image)) { JFile::delete(JPATH_ROOT . "/" . $intro_image); } } if ($images->detail_image) { $detail_image = JUDirectoryFrontHelper::getDirectory('category_detail_image_directory', 'media/com_judirectory/images/category/detail/') . $images->detail_image; $ori_detail_image = JUDirectoryFrontHelper::getDirectory('category_detail_image_directory', 'media/com_judirectory/images/category/detail/') . "original/" . $images->detail_image; if (JFile::exists(JPATH_ROOT . "/" . $detail_image)) { JFile::delete(JPATH_ROOT . "/" . $detail_image); } if (JFile::exists(JPATH_ROOT . "/" . $ori_detail_image)) { JFile::delete(JPATH_ROOT . "/" . $ori_detail_image); } } } if ($table->level == 0 || $table->level == 1) { $query = "DELETE FROM #__judirectory_emails_xref WHERE cat_id = " . $table->id; $db->setQuery($query); $db->execute(); } JUDirectoryHelper::deleteLogs('category', $pk); $query = "DELETE FROM #__judirectory_fields_ordering WHERE `item_id` = " . $table->id . " AND `type` = 'category'"; $db->setQuery($query); $db->execute(); $dispatcher->trigger($this->event_after_delete, array($context, $table)); } } } } if ($canDeleteCatIds) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::plural('COM_JUDIRECTORY_CATEGORIES_N_ITEMS_DELETED', count($canDeleteCatIds))); } $canNotDeleteCatIds = array_unique($canNotDeleteCatIds); if ($canNotDeleteCatIds) { JError::raiseWarning(500, JText::plural('COM_JUDIRECTORY_CATEGORIES_N_ITEMS_NOT_DELETED', count($canNotDeleteCatIds))); } $this->cleanCache(); return true; }