Klasse Search Verbesserung

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
BeezyT
Beiträge: 29
Registriert: Mi 21. Mär 2007, 11:26
Kontaktdaten:

Klasse Search Verbesserung

Beitrag von BeezyT »

Die Methode getSubTree in der Klasse Search bestimmt die Kategorien, in denen gesucht werden soll.
Es wird die Mandateneinstellung searchrange/include ausgelesen und eigentlich sollte dann der ganze Baum unter den dort angegebenen Kategorien ausgelesen werden. Leider wird nur eine Unterebene ausgelesen. Ich habe diese Funktion ergänzt und die Performanz der Methode auch noch beträchtlich verbessert. Die neue Methode sieht wie folgt aus:

Code: Alles auswählen

    /**
     * @param $cat_start Root of a category tree
	 * @return Category Tree 
     */	
	function getSubTree($cat_start)
	{
		// get immediate children
    	$sql = "
			SELECT
                B.idcat
            FROM
                ".$this->cfg['tab']['cat']." AS B,
				".$this->cfg['tab']['cat_lang']." AS C
            WHERE
				B.idcat  = C.idcat AND
				B.parentid = '".Contenido_Security::toInteger($cat_start)."' AND
				C.idlang = '".Contenido_Security::toInteger($this->lang)."' AND
                B.idclient = '".Contenido_Security::toInteger($this->client)."'";
         
        if ($this->bDebug) {echo "<pre>$sql</pre>";} 
    	$this->db->query($sql);

		$sub_cats = array();
    	while ($this->db->next_record()) {
    		$sub_cats[] = intval($this->db->f('idcat'));
		}
		
		// recurse
		foreach ($sub_cats as $sub_cat) {
			foreach ($this->getSubTree($sub_cat) as $sub_sub_cat) {
				$sub_cats[] = $sub_sub_cat;
			}
    	}
		
    	return $sub_cats;
	}
Ich würde mich freuen, wenn die Methode in einer neuen Contenido Version übernommen werden würde.
Antworten