Hilfe - Suche - Mitglieder - Kalender
Vollansicht: idcat/idcatside Child-Prüfung
Forum Sefrengo.org > Allgemeine Foren > Entwicklung
Chregu
Hallo Zusammen

Ich erstelle gerade eine neue Modulversion des Random Image. Nun habe ich eine Frage.

Suche ich eine Methode um zu prüfen ob eine aktuelle idcat bzw. idcatside ein Child einer bestimmt idcat (auch über mehrere Stufen!) ist.
Gibt es dazu eine Methode in der API? Oder muss ich von der aktuellen idcat bzw. idcatside jeweils den Parent abfragen
und prüfen bis die Routine im Root angelangt ist?

Danke für eure Hilfe.

Gruss
Chris
andi
hallo chris

bin mir unsicher, aber vielleicht hilft dir dies?


gruss andi
bjoern
Gibt es so bei den Cat- und Pageinfos meines Wissens noch nicht. Was es bei der 1.4.1 geben wird ist die Methode "getIdcatsidesByIdcat", also alle Idcatsides, die zu einer Idcat gehören. Ich hänge Dir die beiden Klassen mal als aktuellste Version an. Wenn Du die für das Modul entsprechend erweitern willst, kannst Du das gerne tun. Ich prüf das dann kurz und wenns OK ist, dann kommts in die 1.4.1 .

Chregu
Danke für eure Infos...

Habe mir jetzt das ganze angesehen. Aus meiner Sicht wäre es am am besten auf einer Klasse SF_PAGE_Page eine Methode isChildOf( $idcat ) zu realisieren.
Falls nicht angedacht ist so eine Klasse zu erstellen müsste dies auf der Klasse SF_PAGE_Pageinfos was aus meiner Sicht nicht ganz korrekt ist...

Was meint Ihr?

Gruss
Chris
bjoern
Bitte in die Pageinfos packen. Das ist die Klasse, die für die schnelle Abfrage von Werten in Navigationsmodulen, etc. gedacht ist.
Chregu
Hallo Bjoern

Hier die beiden Methoden. Habe diese soweit Möglich getestet. War nicht ganz so einfach...

SF_PAGE_Catinfos
QUELLTEXT
    function isChildOf($idcatChild, $idcat){
        $_cat =& sf_factoryGetObject('PAGE', 'Cat');
        $_cat->loadByIdcatIdlang($idcatChild, $this->config['idlang']);

        if( $_cat->getIdcat() == $idcat ||
            $_cat->getParent() == $idcat ||
            $_cat->getRootparent() == $idcat ){
            return true;
        }
        else if( $_cat->getIdcat() == $_cat->getRootparent() || $_cat->getRootparent() != 0 ){
            return false;
        }
        else{
            return $this->isChildOf($_cat->getIdcat(), $idcat);
        }
    }



SF_PAGE_Pageinfos
QUELLTEXT
    function isChildOf($idcatChild, $idcat){
        $_cat =& sf_factoryGetObject('PAGE', 'Cat');
        $_cat->loadByIdcatIdlang($idcatChild, $this->config['idlang']);

        if( $_cat->getIdcat() == $idcat ||
            $_cat->getParent() == $idcat ||
            $_cat->getRootparent() == $idcat ){
            return true;
        }
        else if( $_cat->getIdcat() == $_cat->getRootparent() || $_cat->getRootparent() != 0 ){
            return false;
        }
        else{
            $_catsides =& sf_factoryGetObject('PAGE', 'Catinfos');
            $_catsides->setIdlang($this->config['idlang']);
            $_catsides->generate();
            return $_catsides->isChildOf($_cat->getIdcat(), $idcat);
        }
    }


Hoffe Sie können genutzt werden.

Gruss
Chris
bjoern
Ist schon mal ein Ansatz. Generell verstehe ich nicht, warum Du bei SF_PAGE_Catinfos ein CatObjekt erzeugst und nicht einfach mit $this die vorhandenen Methoden ansprichst. Also $this->getParent(), $this->getRootParent() .

Bei den Pageinfos ist ein catinfoobjekt schon initialisiert. Du erreichst es mit $this->catinfos, daher habe ich mal den Code da schon mal angepasst.

Generell bin ich der meinung, das Du an alle Daten kommst, ohne neue Objekte zu initialisieren.

Normale Variablen bitte $min_unterstrich und nich als Kamelhöckernotation, das wird nur bei Klassen und Methoden gemacht.

Ein phpdoc Kopf für die Methoden fehlt noch, also

/**
* DESCRIPTION
*
* @param datatype name descriptiom
* @return datatype descriptiom
*/

SF_PAGE_Pageinfos
QUELLTEXT
    function isChildOf($idcatChild, $idcat){
        $_cat =& sf_factoryGetObject('PAGE', 'Cat');
        $_cat->loadByIdcatIdlang($idcatChild, $this->config['idlang']);

        if( $_cat->getIdcat() == $idcat ||
            $_cat->getParent() == $idcat ||
            $_cat->getRootparent() == $idcat ){
            return true;
        }
        else if( $_cat->getIdcat() == $_cat->getRootparent() || $_cat->getRootparent() != 0 ){
            return false;
        }
        else{
            $this->catinfos->isChildOf($_cat->getIdcat(), $idcat);
        }
    }
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.