Example #1
0
 public function getUser_has_user(ModelUser $user)
 {
     if (!isset($this->getUser_has_users()[$user->getId()])) {
         // FIXME : good idea?
         return ModelUser_has_user::newInstance()->hydrate(array('user_id1' => $this->getId(), 'user_id2' => $user->getId(), 'type' => 0));
     }
     return $this->user_has_user[$user->getId()];
 }
Example #2
0
    public function findAllCoworkers()
    {
        $k = '';
        foreach (array_keys(ModelUser::newInstance()->getPersistentData()) as $v) {
            $k .= "`user1`.`{$v}` `a__{$v}`, `user2`.`{$v}` `b__{$v}`,";
        }
        $sth = ServiceDb::getInstance()->prepare('
				select `user_has_user`.*,
				' . $k . '
				`user1`.`id` `a__id`,
				`user2`.`id` `b__id`
				from `user_has_user`
				left join `user` `user1` on `user1`.`id`=`user_has_user`.`user_id1`
				left join `user` `user2` on `user2`.`id`=`user_has_user`.`user_id2`
				where (`user_has_user`.`type` & ' . ModelUser_has_user::WORK . ' )
				and exists (
					select 1
					from `user_has_user` `foo`
					where `user_has_user`.`user_id2`=`foo`.`user_id1`
					and (`foo`.`type` & ' . ModelUser_has_user::WORK . ' )
				)');
        $sth->execute();
        $pairs = array();
        $arr = array();
        foreach ($sth->fetchAll() as $data) {
            $datax = array();
            // FIXME : find another way to avoir doublons
            if (in_array($data['a__id'] . '.' . $data['b__id'], $pairs) || in_array($data['b__id'] . '.' . $data['a__id'], $pairs)) {
                continue;
            }
            $pairs[] = $data['a__id'] . '.' . $data['b__id'];
            $a = ModelUser_has_user::newInstance()->hydrate($data);
            foreach ($data as $k => $v) {
                if (strpos($k, 'a__') === 0) {
                    $datax[str_replace('a__', '', $k)] = $v;
                }
            }
            $a->setUser1(ModelUser::newInstance()->hydrate($datax));
            foreach ($data as $k => $v) {
                if (strpos($k, 'b__') === 0) {
                    $datax[str_replace('b__', '', $k)] = $v;
                }
            }
            $a->setUser2(ModelUser::newInstance()->hydrate($datax));
            $arr[] = $a;
        }
        return $arr;
    }