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