Esempio n. 1
0
 /**
  * Check if the passed user is an admin
  *
  * If no user id is passed, the current update is checked for a valid message sender.
  *
  * @param int|null $user_id
  *
  * @return bool
  */
 public function isAdmin($user_id = null)
 {
     if ($user_id === null && $this->update !== null) {
         if (($message = $this->update->getMessage()) && ($from = $message->getFrom())) {
             $user_id = $from->getId();
         } elseif (($inline_query = $this->update->getInlineQuery()) && ($from = $inline_query->getFrom())) {
             $user_id = $from->getId();
         } elseif (($chosen_inline_result = $this->update->getChosenInlineResult()) && ($from = $chosen_inline_result->getFrom())) {
             $user_id = $from->getId();
         } elseif (($callback_query = $this->update->getCallbackQuery()) && ($from = $callback_query->getFrom())) {
             $user_id = $from->getId();
         } elseif (($edited_message = $this->update->getEditedMessage()) && ($from = $edited_message->getFrom())) {
             $user_id = $from->getId();
         }
     }
     return $user_id === null ? false : in_array($user_id, $this->admins_list);
 }
Esempio n. 2
0
 /**
  * Insert request into database
  *
  * @todo self::$pdo->lastInsertId() - unsafe usage if expected previous insert fails?
  *
  * @param Entities\Update &$update
  *
  * @return bool
  */
 public static function insertRequest(Update &$update)
 {
     $update_id = $update->getUpdateId();
     if ($update->getUpdateType() == 'message') {
         $message = $update->getMessage();
         if (self::insertMessageRequest($message)) {
             $message_id = $message->getMessageId();
             $chat_id = $message->getChat()->getId();
             return self::insertTelegramUpdate($update_id, $chat_id, $message_id, null, null, null, null);
         }
     } elseif ($update->getUpdateType() == 'inline_query') {
         $inline_query = $update->getInlineQuery();
         if (self::insertInlineQueryRequest($inline_query)) {
             $inline_query_id = $inline_query->getId();
             return self::insertTelegramUpdate($update_id, null, null, $inline_query_id, null, null, null);
         }
     } elseif ($update->getUpdateType() == 'chosen_inline_result') {
         $chosen_inline_result = $update->getChosenInlineResult();
         if (self::insertChosenInlineResultRequest($chosen_inline_result)) {
             $chosen_inline_result_local_id = self::$pdo->lastInsertId();
             return self::insertTelegramUpdate($update_id, null, null, null, $chosen_inline_result_local_id, null, null);
         }
     } elseif ($update->getUpdateType() == 'callback_query') {
         $callback_query = $update->getCallbackQuery();
         if (self::insertCallbackQueryRequest($callback_query)) {
             $callback_query_id = $callback_query->getId();
             return self::insertTelegramUpdate($update_id, null, null, null, null, $callback_query_id, null);
         }
     } elseif ($update->getUpdateType() == 'edited_message') {
         $edited_message = $update->getEditedMessage();
         if (self::insertEditedMessageRequest($edited_message)) {
             $chat_id = $edited_message->getChat()->getId();
             $edited_message_local_id = self::$pdo->lastInsertId();
             return self::insertTelegramUpdate($update_id, $chat_id, null, null, null, null, $edited_message_local_id);
         }
     }
     return false;
 }
Esempio n. 3
0
 /**
  * Insert request into database
  *
  * @param Entities\Update &$update
  *
  * @return bool
  */
 public static function insertRequest(Update &$update)
 {
     $update_id = $update->getUpdateId();
     if ($update->getUpdateType() == 'message') {
         $message = $update->getMessage();
         $message_id = $message->getMessageId();
         $chat_id = $message->getChat()->getId();
         self::insertMessageRequest($message);
         return self::insertTelegramUpdate($update_id, $chat_id, $message_id, null, null, null);
     } elseif ($update->getUpdateType() == 'inline_query') {
         $inline_query = $update->getInlineQuery();
         $inline_query_id = $inline_query->getId();
         self::insertInlineQueryRequest($inline_query);
         return self::insertTelegramUpdate($update_id, null, null, $inline_query_id, null, null);
     } elseif ($update->getUpdateType() == 'chosen_inline_result') {
         $chosen_inline_query = $update->getChosenInlineResult();
         if (!self::isDbConnected()) {
             return false;
         }
         try {
             //Inline query Table
             $mysql_query = 'INSERT INTO `' . TB_CHOSEN_INLINE_QUERY . '`
                 (
                 `result_id`, `user_id`, `location`, `inline_message_id`, `query`, `created_at`
                 )
                 VALUES (
                 :result_id, :user_id, :location, :inline_message_id, :query, :created_at
                 )';
             $sth_insert_chosen_inline_query = self::$pdo->prepare($mysql_query);
             $date = self::getTimestamp(time());
             $result_id = $chosen_inline_query->getResultId();
             $from = $chosen_inline_query->getFrom();
             $user_id = null;
             if (is_object($from)) {
                 $user_id = $from->getId();
                 self::insertUser($from, $date);
             }
             $location = $chosen_inline_query->getLocation();
             $inline_message_id = $chosen_inline_query->getInlineMessageId();
             $query = $chosen_inline_query->getQuery();
             $sth_insert_chosen_inline_query->bindParam(':result_id', $result_id, \PDO::PARAM_STR);
             $sth_insert_chosen_inline_query->bindParam(':user_id', $user_id, \PDO::PARAM_INT);
             $sth_insert_chosen_inline_query->bindParam(':location', $location, \PDO::PARAM_INT);
             $sth_insert_chosen_inline_query->bindParam(':inline_message_id', $inline_message_id, \PDO::PARAM_INT);
             $sth_insert_chosen_inline_query->bindParam(':query', $query, \PDO::PARAM_STR);
             $sth_insert_chosen_inline_query->bindParam(':created_at', $date, \PDO::PARAM_STR);
             $status = $sth_insert_chosen_inline_query->execute();
             $chosen_inline_query_local_id = self::$pdo->lastInsertId();
         } catch (PDOException $e) {
             throw new TelegramException($e->getMessage());
         }
         return self::insertTelegramUpdate($update_id, null, null, null, $chosen_inline_query_local_id, null);
     } elseif ($update->getUpdateType() == 'callback_query') {
         $callback_query = $update->getCallbackQuery();
         $callback_query_id = $callback_query->getId();
         self::insertCallbackQueryRequest($callback_query);
         return self::insertTelegramUpdate($update_id, null, null, null, null, $callback_query_id);
     }
 }