Пример #1
0
 /**
  * Creates a new message collection or message.
  * Exapmples:
  * /messages/john.doe
  * /messages/john.doe/notification
  */
 public function handlePost(RequestItem $requestItem)
 {
     $this->checkService();
     $requestItem->applyUrlTemplate(self::$MESSAGES_PATH);
     $userIds = $requestItem->getUsers();
     HandlerPreconditions::requireSingular($userIds, "UserId is not singular.");
     $msgCollId = $requestItem->getParameter("msgCollId");
     $entity = $requestItem->getParameter("entity");
     // If the parameters contain 'message' the request is from the old api(< 0.9).
     if ($requestItem->getParameter("message")) {
         $entity = $requestItem->getParameter("message");
         $msgCollId = "@outbox";
     }
     if (empty($msgCollId)) {
         // Creates a message collection.
         $messageCollection = $entity;
         HandlerPreconditions::requireNotEmpty($messageCollection, "Filed entity not specified.");
         $title = isset($messageCollection['title']) ? trim($messageCollection['title']) : '';
         HandlerPreconditions::requireCondition(strlen($title) > 0, "Title must be specified.");
         return $this->service->createMessageCollection($userIds[0], $messageCollection, $requestItem->getToken());
     } else {
         // Creates a message.
         $messageIds = $requestItem->getListParameter("messageId");
         HandlerPreconditions::requireEmpty($messageIds, "messageId cannot be specified in create method.");
         $message = $entity;
         HandlerPreconditions::requireNotEmpty($message, "Filed entity not specified.");
         HandlerPreconditions::requireEmpty($messageIds, "messageId cannot be specified in create method.");
         // Message fields validation.
         $title = isset($message['title']) ? trim($message['title']) : '';
         HandlerPreconditions::requireCondition(strlen($title) > 0, "Title must be specified.");
         HandlerPreconditions::requireNotEmpty($message['recipients'], "Field recipients is required.");
         HandlerPreconditions::requireCondition(is_array($message['recipients']), "recipients must be array.");
         return $this->service->createMessage($userIds[0], $msgCollId, $message, $requestItem->getToken());
     }
 }