/** * search2 * Get albums, artists and songs matching the given criteria. * Takes query with optional artist count, artist offset, album count, album offset, song count and song offset in parameters. */ public static function search2($input, $elementName = "searchResult2") { self::check_version($input, "1.2.0"); $query = self::check_parameter($input, 'query'); $operator = 0; if (strlen($query) > 1) { if (substr($query, -1) == "*") { $query = substr($query, 0, -1); $operator = 2; // Start with } } $artistCount = isset($input['artistCount']) ? $input['artistCount'] : 20; $artistOffset = $input['artistOffset']; $albumCount = isset($input['albumCount']) ? $input['albumCount'] : 20; $albumOffset = $input['albumOffset']; $songCount = isset($input['songCount']) ? $input['songCount'] : 20; $songOffset = $input['songOffset']; $sartist = array(); $sartist['limit'] = $artistCount; if ($artistOffset) { $sartist['offset'] = $artistOffset; } $sartist['rule_1_input'] = $query; $sartist['rule_1_operator'] = $operator; $sartist['rule_1'] = "name"; $sartist['type'] = "artist"; if ($artistCount > 0) { $artists = Search::run($sartist); } $salbum = array(); $salbum['limit'] = $albumCount; if ($albumOffset) { $salbum['offset'] = $albumOffset; } $salbum['rule_1_input'] = $query; $salbum['rule_1_operator'] = $operator; $salbum['rule_1'] = "title"; $salbum['type'] = "album"; if ($albumCount > 0) { $albums = Search::run($salbum); } $ssong = array(); $ssong['limit'] = $songCount; if ($songOffset) { $ssong['offset'] = $songOffset; } $ssong['rule_1_input'] = $query; $ssong['rule_1_operator'] = $operator; $ssong['rule_1'] = "anywhere"; $ssong['type'] = "song"; if ($songCount > 0) { $songs = Search::run($ssong); } $r = Subsonic_XML_Data::createSuccessResponse(); Subsonic_XML_Data::addSearchResult($r, $artists, $albums, $songs, $elementName); self::apiOutput($input, $r); }