Exemplo n.º 1
0
    /**
     * getter for messages
     *
     * @param	int	$room
     * @param	int	$user
     * @param	int	$time
     * @param	int	$game
     * @return array
     */
    public static function getMessages($room, $toUser = 0, $time = 0, $game = 0)
    {
        $colorRepository = new ColorRepository(TRUE);
        $colors = $colorRepository->getAll();
        $colorList = array();
        foreach ($colors as $color) {
            $colorList[$color['id']] = $color;
        }
        $query = 'SELECT user.*, message.*
			FROM ' . DB_PREFIX . self::$table . ' AS message
			LEFT JOIN ' . DB_PREFIX . 'user AS user ON message.user = user.id
			WHERE room=' . intval($room) . ' AND tstamp > ' . intval($time) . '
				AND to_user IN (' . intval($toUser) . ', 0)';
        if ($game) {
            $query .= ' AND game=' . intval($game);
        }
        if ($toUser) {
            $query .= ' AND NOT not_to_user IN (' . $toUser . ')';
        }
        $query .= ' ORDER BY message.id DESC LIMIT 100';
        $messages = DB::fetchAll($query);
        $messages = array_reverse($messages);
        foreach ($messages as &$message) {
            if ($message['localize_key']) {
                $message['text'] = Localize::getMessage($message['localize_key'], unserialize($message['localize_params']));
            }
            $message['color'] = $colorList[$message['color']]['code'];
        }
        return $messages;
    }
Exemplo n.º 2
0
 /**
  * log the user - if not exists register him/her and then log the user
  *
  * @return	void
  */
 public static function userLogin()
 {
     $errors = array();
     $hash = addslashes(Utils::get('hash'));
     if ($hash) {
         $userRepository = new UserRepository();
         $user = $userRepository->getOneByHash($hash);
     } else {
         if (Utils::post('username') != '') {
             $username = addslashes(Utils::post('username'));
             if (!ctype_alnum($username)) {
                 $errors['username'] = '******';
                 // TODO localize
             }
         } else {
             $errors['username'] = '******';
             // TODO localize
         }
         if (Utils::post('password') != '') {
             $password = md5(addslashes(Utils::post('password')));
         } else {
             $errors['password'] = '******';
             // TODO localize
         }
         if (empty($errors)) {
             $userRepository = new UserRepository();
             $userExist = $userRepository->getOneByUsername($username);
             if ($userExist === NULL) {
                 $colorRepository = new ColorRepository();
                 $count = $colorRepository->getCountAll();
                 $rand = rand(1, $count);
                 $params = array('username' => $username, 'password' => $password, 'color' => $rand);
                 $user = new User($params);
                 $user = $user->save(TRUE);
             } elseif ($userExist['password'] != $password) {
                 $errors['password'] = '******';
             } else {
                 $user = $userExist;
             }
         }
     }
     if ($user && empty($errors)) {
         // TODO po prihlaseni treba nejako zmazat v memcachi query, ktora vybera usera podla cookie_value
         // lebo teraz to stale vracia vysledok z memcache -> ked sa prihlasim v dvoch browsroch, v obidvoch to funguje
         // neodhlasi ma z toho prveho
         $cookieValue = md5(time() . $user['id'] . $user['username']);
         DB::update(DB_PREFIX . 'user', array('cookie_value' => $cookieValue), 'id = ' . $user['id']);
         $expire = Utils::post('remember') == 1 ? strtotime('+1 year') : 0;
         setcookie(self::$cookieName, $cookieValue, $expire, '/');
         return TRUE;
     } else {
         return $errors;
     }
 }
Exemplo n.º 3
0
 protected function setup()
 {
     $loggedUser = LoggedUser::whoIsLogged();
     if (Utils::post('change_settings')) {
         // TODO check if password and confirm password match
         $loggedUser['password'] = md5(Utils::post('password'));
         $loggedUser['name'] = Utils::post('name');
         $loggedUser['surname'] = Utils::post('surname');
         $loggedUser['color'] = intval(Utils::post('color'));
         $loggedUser->save();
     }
     MySmarty::assign('loggedUser', $loggedUser);
     $colorRepository = new ColorRepository();
     $colors = $colorRepository->getAll();
     MySmarty::assign('colors', $colors);
 }
Exemplo n.º 4
0
 protected function run()
 {
     if ($this->check == self::OK) {
         $colorRepository = new ColorRepository();
         $count = $colorRepository->getCountAll();
         $randomColor = mt_rand(1, $count);
         $userParams = array('username' => 'AI-' . str_pad(mt_rand(0, 999), 3, 0, STR_PAD_LEFT), 'color' => $randomColor);
         $userRepository = new UserRepository();
         $newUser = $userRepository->getOneByUsername($userParams['username']);
         if (!$newUser) {
             $newUser = new User($userParams);
             $newUser = $newUser->save(TRUE);
         }
         $playersCount = GameUtils::getPosition($this->game);
         $strategyRepository = new AiStrategyRepository();
         $strategyRepository->addOrderBy(array('RAND()' => ''));
         $strategy = $strategyRepository->getOneBy();
         $params = array('game' => $this->game['id'], 'user' => $newUser['id'], 'seat' => GameUtils::getSeatOnPosition($playersCount), 'ai_strategy' => $strategy['id']);
         $player = new Player($params);
         $player->save();
     }
 }
Exemplo n.º 5
0
 public function getFontColor()
 {
     $colorRepository = new ColorRepository();
     return $colorRepository->getOneById($this['color']);
 }