Example #1
0
    public function beforeDelete(){

        if(parent::beforeDelete()){
            $check = NfyDbMessage::model()->countByAttributes(array('message_body_id'=>$this->message_body_id), 'id != :id', array(':id'=>(int)$this->id));
            if(empty($check)){
                NfyMessageBody::model()->deleteByPk($this->message_body_id);
            }
            return true;
        }
        return false;
    }
Example #2
0
    /**
     * Removes deleted messages from the storage.
     * @return array of removed message ids
     */
    public function removeDeleted()
    {
        $trx = NfyDbMessage::model()->getDbConnection()->getCurrentTransaction() !== null ? null : NfyDbMessage::model()->getDbConnection()->beginTransaction();
      //  $pk = NfyDbMessage::model()->tableSchema->primaryKey;

      //  $messages = NfyDbMessage::model()->withQueue($this->id)->deleted()->findAllByPk($message_id, array('select' => $pk, 'index' => $pk));
        $messages = NfyDbMessage::model()->withQueue($this->id)->deleted()->findAllByPk($message_id);
        $message_ids = array();
        if(!empty($messages)){
            foreach($messages as $message){
                $message_ids[] = $message->id;
                $message->delete();
            }
        }
      //  $message_ids = array_keys($messages);
      //  NfyDbMessage::model()->deleteByPk($message_ids);
        if ($trx !== null) {
            $trx->commit();
        }
        return $message_ids;
    }
Example #3
0
 /**
  * Fetches details of a single message, allows to release or delete it or sends a new message.
  * @param string $id queue name
  * @param string $subscriber_id
  * @param string $message_id
  */
 public function actionMessage($queue_name, $subscriber_id = null, $message_id = null)
 {
     if (($subscriber_id = trim($subscriber_id)) === '') {
         $subscriber_id = null;
     }
     list($queue, $authItems) = $this->loadQueue($queue_name, array('nfy.message.read', 'nfy.message.create'));
     $this->verifySubscriber($queue, $subscriber_id);
     if ($queue instanceof NfyDbQueue) {
         NfyDbMessage::model()->withQueue($queue->id);
         if ($subscriber_id !== null) {
             NfyDbMessage::model()->withSubscriber($subscriber_id);
         }
         $dbMessage = NfyDbMessage::model()->findByPk($message_id);
         if ($dbMessage === null) {
             throw new CHttpException(404, Yii::t("NfyModule.app", 'Message with given ID was not found.'));
         }
         $messages = NfyDbMessage::createMessages($dbMessage);
         $message = reset($messages);
     } else {
         //! @todo should we even bother to locate a single message by id?
         $message = new NfyMessage();
         $message->setAttributes(array('id' => $message_id, 'subscriber_id' => $subscriber_id, 'status' => NfyMessage::AVAILABLE));
     }
     if (isset($_POST['delete'])) {
         $queue->delete($message->id, $message->subscriber_id);
         $this->redirect(array('messages', 'queue_name' => $queue_name, 'subscriber_id' => $message->subscriber_id));
     }
     $this->render('message', array('queue' => $queue, 'queue_name' => $queue_name, 'dbMessage' => $dbMessage, 'message' => $message, 'authItems' => $authItems));
 }