Quantcast
Channel: Joomla CMS Support Forum
Viewing all articles
Browse latest Browse all 20261

Jomsocial Profilfelder von außen/extern durchsuchen

$
0
0
Hallo!
Ich benutze schon sehr lange Joomla und auch schon seit längerem Jomsocial.
Nun bin ich gerade dabei eine Android-App zu schreiben, mit der ich auf Nachrichten usw. mobil zugreifen kann.

Leider scheitere ich aber an der Suchfunktion. Während in der Joomla-Tabelle "users" noch jeder User ganz simpel seine eine, einzige Zeile hat, macht Jomsocial für jeden User und jedes Profilfeld in der Tabelle "community_fields_values" eine eigene Zeile mit User-Id und value auf. Wenn ich also 5 Profilfelder (Alter, Geschlecht, ...) habe, dann hat jede User-Id dort 5 Zeilen. Ich habe leider zu wenig Erfahrung mit Datenbank-Suchen, sodass ich nicht durchschaue, wie man da mit Datenbankabfragen von außen seine gesuchten Einträge zurückbekommt.

Ich meine bei Jomsocial in models/search.php in Zeile 449 die Stelle gefunden zu haben, wo steht wie es Jomsocial selbst macht:

Code:

public function getAdvanceSearch($filter = array(), $join='and' , $avatarOnly = '' , $sorting = '' )
        {
                $limit                = $this->getState('limit');
                $limitstart = $this->getState('limitstart');
       
                $db        =& $this->getDBO();
               
                $query        = $this->_buildCustomQuery($filter, $join , $avatarOnly );
               
                //lets try temporary table here
                $tmptablename = 'tmpadv';
                $drop = 'DROP TEMPORARY TABLE IF EXISTS '.$tmptablename;
                $db->setQuery($drop);
                $db->query();
               
                $query = 'CREATE TEMPORARY TABLE '.$tmptablename.' '.$query;
                $db->setQuery($query);
                $db->query();
                $total = $db->getAffectedRows();
               
                //setting pagination object.
                $this->_pagination = new JPagination($total, $limitstart, $limit);

                $query = 'SELECT * FROM '.$tmptablename;
               
                // @rule: Sorting if required.
                if( !empty( $sorting ) )
                {
                        $query  .= $this->_getSort($sorting);
                }


                // execution of master query
                $query        .= ' LIMIT ' . $limitstart . ',' . $limit;
                $db->setQuery($query);

                $result = $db->loadResultArray();
               
                if($db->getErrorNum()) {
                        JError::raiseError( 500, $db->stderr());
                }

                // Preload CUser objects
                if(! empty($result))
                {
                        CFactory::loadUsers($result);
                }
                $cusers = array();
                for($i = 0; $i < count($result); $i++)
                {                       
                        //$usr = CFactory::getUser(        $result[$i]->user_id );
                        $usr = CFactory::getUser( $result[$i] );
                        $cusers[] = $usr;
                }               
               
                return        $cusers;
        }

Mir würde der einfache Fall, dass von den 5 Profilfeldern alle 5 zur Suche ausgefüllt sein müssen auch erstmal reichen. Habe davon aber leider gar nichts zum Laufen bekommen.


Kann mir da jemand weiterhelfen? Ist ja nicht gerade ein alltägliche Frage ;-)

Vielen herzlichen Dank schon allein fürs Durchlesen, Basti

Viewing all articles
Browse latest Browse all 20261