You've already forked joomla_test
							
							
		
			
	
	
		
			376 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			376 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @package     Joomla.Administrator
							 | 
						||
| 
								 | 
							
								 * @subpackage  com_finder
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
							 | 
						||
| 
								 | 
							
								 * @license     GNU General Public License version 2 or later; see LICENSE
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								defined('_JEXEC') or die;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Stemmer base class for the Finder indexer package.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package     Joomla.Administrator
							 | 
						||
| 
								 | 
							
								 * @subpackage  com_finder
							 | 
						||
| 
								 | 
							
								 * @since       2.5
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class FinderIndexerTaxonomy
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * An internal cache of taxonomy branch data.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @var    array
							 | 
						||
| 
								 | 
							
									 * @since  2.5
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static $branches = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * An internal cache of taxonomy node data.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @var    array
							 | 
						||
| 
								 | 
							
									 * @since  2.5
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static $nodes = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to add a branch to the taxonomy tree.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   string   $title   The title of the branch.
							 | 
						||
| 
								 | 
							
									 * @param   integer  $state   The published state of the branch. [optional]
							 | 
						||
| 
								 | 
							
									 * @param   integer  $access  The access state of the branch. [optional]
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  integer  The id of the branch.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function addBranch($title, $state = 1, $access = 1)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Check to see if the branch is in the cache.
							 | 
						||
| 
								 | 
							
										if (isset(self::$branches[$title]))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return self::$branches[$title]->id;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check to see if the branch is in the table.
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->select('*')
							 | 
						||
| 
								 | 
							
											->from($db->quoteName('#__finder_taxonomy'))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('parent_id') . ' = 1')
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('title') . ' = ' . $db->quote($title));
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Get the result.
							 | 
						||
| 
								 | 
							
										$result = $db->loadObject();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if the database matches the input data.
							 | 
						||
| 
								 | 
							
										if (!empty($result) && $result->state == $state && $result->access == $access)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// The data matches, add the item to the cache.
							 | 
						||
| 
								 | 
							
											self::$branches[$title] = $result;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											return self::$branches[$title]->id;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										/*
							 | 
						||
| 
								 | 
							
										 * The database did not match the input. This could be because the
							 | 
						||
| 
								 | 
							
										 * state has changed or because the branch does not exist. Let's figure
							 | 
						||
| 
								 | 
							
										 * out which case is true and deal with it.
							 | 
						||
| 
								 | 
							
										 */
							 | 
						||
| 
								 | 
							
										$branch = new JObject;
							 | 
						||
| 
								 | 
							
										if (empty($result))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Prepare the branch object.
							 | 
						||
| 
								 | 
							
											$branch->parent_id = 1;
							 | 
						||
| 
								 | 
							
											$branch->title = $title;
							 | 
						||
| 
								 | 
							
											$branch->state = (int) $state;
							 | 
						||
| 
								 | 
							
											$branch->access = (int) $access;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Prepare the branch object.
							 | 
						||
| 
								 | 
							
											$branch->id = (int) $result->id;
							 | 
						||
| 
								 | 
							
											$branch->parent_id = (int) $result->parent_id;
							 | 
						||
| 
								 | 
							
											$branch->title = $result->title;
							 | 
						||
| 
								 | 
							
											$branch->state = (int) $result->title;
							 | 
						||
| 
								 | 
							
											$branch->access = (int) $result->access;
							 | 
						||
| 
								 | 
							
											$branch->ordering = (int) $result->ordering;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Store the branch.
							 | 
						||
| 
								 | 
							
										self::storeNode($branch);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Add the branch to the cache.
							 | 
						||
| 
								 | 
							
										self::$branches[$title] = $branch;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return self::$branches[$title]->id;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to add a node to the taxonomy tree.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   string   $branch  The title of the branch to store the node in.
							 | 
						||
| 
								 | 
							
									 * @param   string   $title   The title of the node.
							 | 
						||
| 
								 | 
							
									 * @param   integer  $state   The published state of the node. [optional]
							 | 
						||
| 
								 | 
							
									 * @param   integer  $access  The access state of the node. [optional]
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  integer  The id of the node.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function addNode($branch, $title, $state = 1, $access = 1)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Check to see if the node is in the cache.
							 | 
						||
| 
								 | 
							
										if (isset(self::$nodes[$branch][$title]))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											return self::$nodes[$branch][$title]->id;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Get the branch id, insert it if it does not exist.
							 | 
						||
| 
								 | 
							
										$branchId = self::addBranch($branch);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check to see if the node is in the table.
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->select('*')
							 | 
						||
| 
								 | 
							
											->from($db->quoteName('#__finder_taxonomy'))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('parent_id') . ' = ' . $db->quote($branchId))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('title') . ' = ' . $db->quote($title));
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Get the result.
							 | 
						||
| 
								 | 
							
										$result = $db->loadObject();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if the database matches the input data.
							 | 
						||
| 
								 | 
							
										if (!empty($result) && $result->state == $state && $result->access == $access)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// The data matches, add the item to the cache.
							 | 
						||
| 
								 | 
							
											self::$nodes[$branch][$title] = $result;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											return self::$nodes[$branch][$title]->id;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										/*
							 | 
						||
| 
								 | 
							
										 * The database did not match the input. This could be because the
							 | 
						||
| 
								 | 
							
										 * state has changed or because the node does not exist. Let's figure
							 | 
						||
| 
								 | 
							
										 * out which case is true and deal with it.
							 | 
						||
| 
								 | 
							
										 */
							 | 
						||
| 
								 | 
							
										$node = new JObject;
							 | 
						||
| 
								 | 
							
										if (empty($result))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Prepare the node object.
							 | 
						||
| 
								 | 
							
											$node->parent_id = (int) $branchId;
							 | 
						||
| 
								 | 
							
											$node->title = $title;
							 | 
						||
| 
								 | 
							
											$node->state = (int) $state;
							 | 
						||
| 
								 | 
							
											$node->access = (int) $access;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Prepare the node object.
							 | 
						||
| 
								 | 
							
											$node->id = (int) $result->id;
							 | 
						||
| 
								 | 
							
											$node->parent_id = (int) $result->parent_id;
							 | 
						||
| 
								 | 
							
											$node->title = $result->title;
							 | 
						||
| 
								 | 
							
											$node->state = (int) $result->title;
							 | 
						||
| 
								 | 
							
											$node->access = (int) $result->access;
							 | 
						||
| 
								 | 
							
											$node->ordering = (int) $result->ordering;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Store the node.
							 | 
						||
| 
								 | 
							
										self::storeNode($node);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Add the node to the cache.
							 | 
						||
| 
								 | 
							
										self::$nodes[$branch][$title] = $node;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return self::$nodes[$branch][$title]->id;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to add a map entry between a link and a taxonomy node.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   integer  $linkId  The link to map to.
							 | 
						||
| 
								 | 
							
									 * @param   integer  $nodeId  The node to map to.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  boolean  True on success.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function addMap($linkId, $nodeId)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Insert the map.
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->select($db->quoteName('link_id'))
							 | 
						||
| 
								 | 
							
											->from($db->quoteName('#__finder_taxonomy_map'))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('link_id') . ' = ' . (int) $linkId)
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('node_id') . ' = ' . (int) $nodeId);
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
										$db->execute();
							 | 
						||
| 
								 | 
							
										$id = (int) $db->loadResult();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$map = new JObject;
							 | 
						||
| 
								 | 
							
										$map->link_id = (int) $linkId;
							 | 
						||
| 
								 | 
							
										$map->node_id = (int) $nodeId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if ($id)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$db->updateObject('#__finder_taxonomy_map', $map);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											$db->insertObject('#__finder_taxonomy_map', $map);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to get the title of all taxonomy branches.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  array  An array of branch titles.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function getBranchTitles()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Set user variables
							 | 
						||
| 
								 | 
							
										$user = JFactory::getUser();
							 | 
						||
| 
								 | 
							
										$groups = implode(',', $user->getAuthorisedViewLevels());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Create a query to get the taxonomy branch titles.
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->select($db->quoteName('title'))
							 | 
						||
| 
								 | 
							
											->from($db->quoteName('#__finder_taxonomy'))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('parent_id') . ' = 1')
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('state') . ' = 1')
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('access') . ' IN (' . $groups . ')');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Get the branch titles.
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
										$results = $db->loadColumn();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $results;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to find a taxonomy node in a branch.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   string  $branch  The branch to search.
							 | 
						||
| 
								 | 
							
									 * @param   string  $title   The title of the node.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  mixed  Integer id on success, null on no match.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function getNodeByTitle($branch, $title)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Set user variables
							 | 
						||
| 
								 | 
							
										$user = JFactory::getUser();
							 | 
						||
| 
								 | 
							
										$groups = implode(',', $user->getAuthorisedViewLevels());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Create a query to get the node.
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->select('t1.*')
							 | 
						||
| 
								 | 
							
											->from($db->quoteName('#__finder_taxonomy') . ' AS t1')
							 | 
						||
| 
								 | 
							
											->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS t2 ON t2.id = t1.parent_id')
							 | 
						||
| 
								 | 
							
											->where('t1.access IN (' . $groups . ')')
							 | 
						||
| 
								 | 
							
											->where('t1.state = 1')
							 | 
						||
| 
								 | 
							
											->where('t1.title LIKE ' . $db->quote($db->escape($title) . '%'))
							 | 
						||
| 
								 | 
							
											->where('t2.access IN (' . $groups . ')')
							 | 
						||
| 
								 | 
							
											->where('t2.state = 1')
							 | 
						||
| 
								 | 
							
											->where('t2.title = ' . $db->quote($branch));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Get the node.
							 | 
						||
| 
								 | 
							
										$db->setQuery($query, 0, 1);
							 | 
						||
| 
								 | 
							
										$result = $db->loadObject();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $result;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to remove map entries for a link.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   integer  $linkId  The link to remove.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  boolean  True on success.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function removeMaps($linkId)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Delete the maps.
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
										$query = $db->getQuery(true)
							 | 
						||
| 
								 | 
							
											->delete($db->quoteName('#__finder_taxonomy_map'))
							 | 
						||
| 
								 | 
							
											->where($db->quoteName('link_id') . ' = ' . (int) $linkId);
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
										$db->execute();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to remove orphaned taxonomy nodes and branches.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  integer  The number of deleted rows.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									public static function removeOrphanNodes()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// Delete all orphaned nodes.
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
										$query = 'DELETE t' .
							 | 
						||
| 
								 | 
							
											' FROM ' . $db->quoteName('#__finder_taxonomy') . ' AS t' .
							 | 
						||
| 
								 | 
							
											' LEFT JOIN ' . $db->quoteName('#__finder_taxonomy_map') . ' AS m ON m.node_id = t.id' .
							 | 
						||
| 
								 | 
							
											' WHERE t.parent_id > 1' .
							 | 
						||
| 
								 | 
							
											' AND m.link_id IS NULL';
							 | 
						||
| 
								 | 
							
										$db->setQuery($query);
							 | 
						||
| 
								 | 
							
										$db->execute();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return $db->getAffectedRows();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Method to store a node to the database.  This method will accept either a branch or a node.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param   object  $item  The item to store.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return  boolean  True on success.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @since   2.5
							 | 
						||
| 
								 | 
							
									 * @throws  Exception on database error.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									protected static function storeNode($item)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$db = JFactory::getDbo();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Check if we are updating or inserting the item.
							 | 
						||
| 
								 | 
							
										if (empty($item->id))
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Insert the item.
							 | 
						||
| 
								 | 
							
											$db->insertObject('#__finder_taxonomy', $item, 'id');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											// Update the item.
							 | 
						||
| 
								 | 
							
											$db->updateObject('#__finder_taxonomy', $item, 'id');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |