public function loadNamedObjects(PhabricatorObjectQuery $query, array $names)
 {
     $id_map = array();
     foreach ($names as $name) {
         $id = (int) substr($name, 1);
         $id_map[$id][] = $name;
     }
     $objects = id(new PonderQuestionQuery())->setViewer($query->getViewer())->withIDs(array_keys($id_map))->execute();
     $results = array();
     foreach ($objects as $id => $object) {
         foreach (idx($id_map, $id, array()) as $name) {
             $results[$name] = $object;
         }
     }
     return $results;
 }
 public function loadNamedObjects(PhabricatorObjectQuery $query, array $names)
 {
     $id_map = array();
     foreach ($names as $name) {
         $id = substr($name, 1);
         $id_map[$id][] = $name;
     }
     $objects = id(new PhabricatorRepositoryQuery())->setViewer($query->getViewer())->withCallsigns(array_keys($id_map))->execute();
     $results = array();
     foreach ($objects as $object) {
         $callsign = $object->getCallsign();
         foreach (idx($id_map, $callsign, array()) as $name) {
             $results[$name] = $object;
         }
     }
     return $results;
 }
 public function loadNamedObjects(PhabricatorObjectQuery $query, array $names)
 {
     $id_map = array();
     foreach ($names as $name) {
         // Maybe normalize these some day?
         $id = $name;
         $id_map[$id][] = $name;
     }
     $objects = id(new PhabricatorMailingListQuery())->setViewer($query->getViewer())->withEmails(array_keys($id_map))->execute();
     $results = array();
     foreach ($objects as $id => $object) {
         $email = $object->getEmail();
         foreach (idx($id_map, $email, array()) as $name) {
             $results[$name] = $object;
         }
     }
     return $results;
 }
 public function loadNamedObjects(PhabricatorObjectQuery $query, array $names)
 {
     $id_map = array();
     foreach ($names as $name) {
         $id = substr($name, 1);
         $id = phutil_utf8_strtolower($id);
         $id_map[$id][] = $name;
     }
     $objects = id(new PhabricatorPeopleQuery())->setViewer($query->getViewer())->withUsernames(array_keys($id_map))->execute();
     $results = array();
     foreach ($objects as $id => $object) {
         $user_key = $object->getUsername();
         $user_key = phutil_utf8_strtolower($user_key);
         foreach (idx($id_map, $user_key, array()) as $name) {
             $results[$name] = $object;
         }
     }
     return $results;
 }
 public function loadNamedObjects(PhabricatorObjectQuery $query, array $names)
 {
     // If the user types "#YoloSwag", we still want to match "#yoloswag", so
     // we normalize, query, and then map back to the original inputs.
     $map = array();
     foreach ($names as $key => $slug) {
         $map[$this->normalizeSlug(substr($slug, 1))][] = $slug;
     }
     $projects = id(new PhabricatorProjectQuery())->setViewer($query->getViewer())->withSlugs(array_keys($map))->needSlugs(true)->execute();
     $result = array();
     foreach ($projects as $project) {
         $slugs = $project->getSlugs();
         $slug_strs = mpull($slugs, 'getSlug');
         foreach ($slug_strs as $slug) {
             $slug_map = idx($map, $slug, array());
             foreach ($slug_map as $original) {
                 $result[$original] = $project;
             }
         }
     }
     return $result;
 }