Beispiel #1
0
 /**
  * Insert Message request in db
  *
  * @return bool
  */
 public static function insertMessageRequest(Message &$message)
 {
     if (!self::isDbConnected()) {
         return false;
     }
     $from = $message->getFrom();
     $chat = $message->getChat();
     $chat_id = $chat->getId();
     $date = self::getTimestamp($message->getDate());
     $forward_from = $message->getForwardFrom();
     $forward_date = self::getTimestamp($message->getForwardDate());
     $photo = $message->getPhoto();
     $new_chat_participant = $message->getNewChatParticipant();
     $new_chat_photo = $message->getNewChatPhoto();
     $left_chat_participant = $message->getLeftChatParticipant();
     $migrate_from_chat_id = $message->getMigrateFromChatId();
     try {
         //chats table
         $sth2 = self::$pdo->prepare('INSERT INTO `' . TB_CHAT . '`
             (`id`, `type`, `title`, `created_at` ,`updated_at`, `old_id`)
             VALUES (:id, :type, :title, :date, :date, :oldid)
             ON DUPLICATE KEY UPDATE `type`=:type, `title`=:title, `updated_at`=:date');
         $chat_title = $chat->getTitle();
         $type = $chat->getType();
         $sth2->bindParam(':id', $chat_id, \PDO::PARAM_INT);
         $sth2->bindParam(':type', $type, \PDO::PARAM_INT);
         $sth2->bindParam(':title', $chat_title, \PDO::PARAM_STR, 255);
         $sth2->bindParam(':date', $date, \PDO::PARAM_STR);
         $sth2->bindParam(':oldid', $migrate_from_chat_id, \PDO::PARAM_INT);
         $status = $sth2->execute();
     } catch (PDOException $e) {
         throw new TelegramException($e->getMessage());
     }
     //insert user and the relation with the chat
     self::insertUser($from, $date, $chat);
     //Insert the forwarded message user in users table
     if (is_object($forward_from)) {
         self::insertUser($forward_from, $forward_date);
         $forward_from = $forward_from->getId();
     } else {
         $forward_from = null;
     }
     //Insert the new chat user
     if (is_object($new_chat_participant)) {
         self::insertUser($new_chat_participant, $date, $chat);
         $new_chat_participant = $new_chat_participant->getId();
     } else {
         $new_chat_participant = '';
     }
     //Insert the left chat user
     if (is_object($left_chat_participant)) {
         self::insertUser($left_chat_participant, $date, $chat);
         $left_chat_participant = $left_chat_participant->getId();
     } else {
         $left_chat_participant = '';
     }
     try {
         //Messages Table
         $sth = self::$pdo->prepare('INSERT IGNORE INTO `' . TB_MESSAGE . '`
             (
             `id`, `user_id`, `date`, `chat_id`, `forward_from`,
             `forward_date`, `reply_to_message`, `text`, `audio`, `document`,
             `photo`, `sticker`, `video`, `voice`, `caption`, `contact`,
             `location`, `new_chat_participant`, `left_chat_participant`,
             `new_chat_title`,`new_chat_photo`, `delete_chat_photo`, `group_chat_created`,
             `supergroup_chat_created`,  `channel_chat_created`,
             `migrate_from_chat_id`,  `migrate_to_chat_id` 
             )
             VALUES (:message_id, :user_id, :date, :chat_id, :forward_from,
             :forward_date, :reply_to_message, :text, :audio, :document,
             :photo, :sticker, :video, :voice, :caption, :contact,
             :location, :new_chat_participant, :left_chat_participant,
             :new_chat_title, :new_chat_photo, :delete_chat_photo, :group_chat_created,
             :supergroup_chat_created, :channel_chat_created,
             :migrate_from_chat_id, :migrate_to_chat_id 
             )');
         $message_id = $message->getMessageId();
         $from_id = $from->getId();
         $reply_to_message = $message->getReplyToMessage();
         $reply_to_message_id = null;
         if (is_object($reply_to_message)) {
             $reply_to_message_id = $reply_to_message->getMessageId();
             // please notice that, as explaied in the documentation, reply_to_message don't contain other
             // reply_to_message field so recursion deep is 1
             self::insertMessageRequest($reply_to_message);
         }
         $text = $message->getText();
         $audio = $message->getAudio();
         $document = $message->getDocument();
         $sticker = $message->getSticker();
         $video = $message->getVideo();
         $voice = $message->getVoice();
         $caption = $message->getCaption();
         $contact = $message->getContact();
         $location = $message->getLocation();
         $new_chat_title = $message->getNewChatTitle();
         $delete_chat_photo = $message->getDeleteChatPhoto();
         $group_chat_created = $message->getGroupChatCreated();
         $supergroup_chat_created = $message->getSupergroupChatCreated();
         $channel_chat_created = $message->getChannelChatCreated();
         $migrate_from_chat_id = $message->getMigrateFromChatId();
         $sth->bindParam(':message_id', $message_id, \PDO::PARAM_INT);
         $sth->bindParam(':user_id', $from_id, \PDO::PARAM_INT);
         $sth->bindParam(':date', $date, \PDO::PARAM_STR);
         $sth->bindParam(':chat_id', $chat_id, \PDO::PARAM_INT);
         $sth->bindParam(':forward_from', $forward_from, \PDO::PARAM_INT);
         $sth->bindParam(':forward_date', $forward_date, \PDO::PARAM_STR);
         $sth->bindParam(':reply_to_message', $reply_to_message_id, \PDO::PARAM_INT);
         $sth->bindParam(':text', $text, \PDO::PARAM_STR);
         $sth->bindParam(':audio', $audio, \PDO::PARAM_STR);
         $sth->bindParam(':document', $document, \PDO::PARAM_STR);
         $var = [];
         if (is_array($photo)) {
             foreach ($photo as $elm) {
                 $var[] = json_decode($elm, true);
             }
             $photo = json_encode($var);
         } else {
             $photo = '';
         }
         $sth->bindParam(':photo', $photo, \PDO::PARAM_STR);
         $sth->bindParam(':sticker', $sticker, \PDO::PARAM_STR);
         $sth->bindParam(':video', $video, \PDO::PARAM_STR);
         $sth->bindParam(':voice', $voice, \PDO::PARAM_STR);
         $sth->bindParam(':caption', $caption, \PDO::PARAM_STR);
         $sth->bindParam(':contact', $contact, \PDO::PARAM_STR);
         $sth->bindParam(':location', $location, \PDO::PARAM_STR);
         $sth->bindParam(':new_chat_participant', $new_chat_paticipant, \PDO::PARAM_INT);
         $sth->bindParam(':left_chat_participant', $left_chat_paticipant, \PDO::PARAM_INT);
         $sth->bindParam(':new_chat_title', $new_chat_title, \PDO::PARAM_STR);
         //Array of Photosize
         $var = [];
         if (is_array($new_chat_photo)) {
             foreach ($new_chat_photo as $elm) {
                 $var[] = json_decode($elm, true);
             }
             $new_chat_photo = json_encode($var);
         } else {
             $new_chat_photo = '';
         }
         $sth->bindParam(':new_chat_photo', $new_chat_photo, \PDO::PARAM_STR);
         $sth->bindParam(':delete_chat_photo', $delete_chat_photo, \PDO::PARAM_STR);
         $sth->bindParam(':group_chat_created', $group_chat_created, \PDO::PARAM_STR);
         $sth->bindParam(':supergroup_chat_created', $migrate_from_chat_id, \PDO::PARAM_INT);
         $sth->bindParam(':channel_chat_created', $supergroup_chat_created, \PDO::PARAM_INT);
         $sth->bindParam(':migrate_from_chat_id', $channel_chat_created, \PDO::PARAM_INT);
         $sth->bindParam(':migrate_to_chat_id', $migrate_from_chat_id, \PDO::PARAM_INT);
         $status = $sth->execute();
     } catch (PDOException $e) {
         throw new TelegramException($e->getMessage());
     }
     return true;
 }