Example #1
0
 public function searchTag(Application $app, Request $request)
 {
     $term = trim(strtolower($request->query->get('term')));
     $res = [];
     if ($term) {
         $provider = new TagProvider();
         foreach ($provider->getLookupTable() as $namespace => $tags) {
             $ns = strpos($namespace, $term);
             foreach ($tags as $tagname => $datas) {
                 if ($ns === false && strpos($tagname, $term) === false) {
                     continue;
                 }
                 $res[] = ['id' => $namespace . '/' . $tagname, 'label' => $datas['namespace'] . ' / ' . $datas['tagname'], 'value' => $datas['namespace'] . ':' . $datas['tagname']];
             }
         }
     }
     return $app->json($res);
 }
 public function searchTag(Request $request)
 {
     $term = str_replace(['/', ':', '.'], ' ', strtolower($request->query->get('term')));
     $res = [];
     $term = explode(' ', $term, 2);
     if (($term[0] = trim($term[0])) != '') {
         if (($nparts = count($term)) == 2) {
             $term[1] = trim($term[1]);
         }
         $provider = new TagProvider();
         foreach ($provider->getLookupTable() as $namespace => $tags) {
             $match_ns = strpos($namespace, $term[0]) !== false;
             if ($nparts == 2 && !$match_ns) {
                 // with "abc:xyz", "abc" MUST match the namespace
                 continue;
             }
             foreach ($tags as $tagname => $datas) {
                 if ($nparts == 1) {
                     // "abc" can match the namespace OR the tagname
                     $match = $match_ns || strpos($tagname, $term[0]) !== false;
                 } else {
                     // match "abc:xyz" against namespace (already true) AND tagname
                     $match = $term[1] == '' || strpos($tagname, $term[1]) !== false;
                 }
                 if ($match) {
                     $res[] = ['id' => $namespace . '/' . $tagname, 'label' => $datas['namespace'] . ' / ' . $datas['tagname'], 'value' => $datas['namespace'] . ':' . $datas['tagname']];
                 }
             }
         }
     }
     return $this->app->json($res);
 }