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:
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
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;
}
Kann mir da jemand weiterhelfen? Ist ja nicht gerade ein alltägliche Frage ;-)
Vielen herzlichen Dank schon allein fürs Durchlesen, Basti