Beispiel #1
0
 /**
  * Search Users and wishLists by username or email
  * @param string|VulnerableField $searchQuery
  * @return array
  */
 public function searchWishlists($searchQuery)
 {
     if ($searchQuery instanceof VulnerableField) {
         $searchString = $searchQuery->copy('%' . $searchQuery->raw() . '%');
     } else {
         $searchString = '%' . $searchQuery . '%';
     }
     /** @var User[] $users */
     $users = $this->pixie->db->query('select')->fields('id')->table('tbl_users', 'user')->join(['tbl_wish_list', 'wishlists'], ['wishlists.user_id', 'user.id'])->where('wishlists.type', 'public')->where('and', [array('email', 'like', $searchString), array('or', array('username', 'like', $searchString))])->execute()->as_array(true);
     $userIds = [];
     foreach ($users as $usr) {
         $userIds[] = $usr->id;
         // That's correct, not ->id()
     }
     if ($userIds) {
         $users = $this->pixie->orm->get('User')->where('id', 'IN', $this->pixie->db->expr('(' . implode(',', $userIds) . ')'))->find_all()->as_array();
     } else {
         $users = [];
     }
     $userList = array();
     $followers = array();
     if ($this->pixie->auth->user() !== null) {
         $userFollowers = $this->pixie->orm->get('WishListFollowers')->where('user_id', $this->pixie->auth->user()->id())->find_all()->as_array();
         foreach ($userFollowers as $userFollower) {
             $followers[] = $userFollower->follower_id;
         }
     }
     $curUser = $this->pixie->auth->user();
     foreach ($users as $user) {
         if ($curUser && $user->id() == $curUser->id()) {
             continue;
         }
         $userList[$user->id()] = $user->as_array();
         $userList[$user->id()]['remembered'] = in_array($user->id(), $followers) ? true : false;
         $userList[$user->id()]['wishLists'] = array();
         $publicListExists = false;
         foreach ($user->lists as $list) {
             if ($list->type != self::TYPE_PUBLIC) {
                 continue;
             }
             $userList[$user->id()]['wishLists'][] = $list->as_array();
             $publicListExists = true;
         }
         if (!$publicListExists) {
             unset($userList[$user->id()]);
         }
     }
     return $userList;
 }