/** * 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); }
/** * 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; }