When a member posts a comment, accepts invitation requests or likes an items, a message/email will be sent to owner to tell him about the status changed,
The service handles these message is Notification.

The following attachment describe a notification message about friend request acceptance.

Notification item is stored at phpfox_notification table, look in to the table, there are following columns

As same as Feed service, Developers do not insert data into this table, they use notification service instead.


Phpfox::getService('notification.process')->add($sType, $iItemId, $iOwnerUserId, $iSenderUserId = null, $force = false);

When others post comments, like, share a to do list item, phpFox will use callback mechanist to tell an application would to like
to send the owner a notification.

Following section show you how to integrate with comment, like, share

Integration Feed Comment

Update Callback service, edit following 3 methods

    // this callback method is required by comment service
    public function addComment($aVals)
    {
        // update total comment
        $this->database()
            ->updateCounter('todolist_task', 'total_comment', 'task_id',
                $aVals['item_id']);

        // send notification
        if ($aVals['user_id'] != $aVals['comment_user_id']) {
            Phpfox::getService('notification.process')
                ->add('comment_todolist', $aVals['item_id'], $aVals['user_id']);
        }
    }

    // this method is require to retry comment notification item
    public function getCommentNotification($aNotification)
    {
        // fetch item
        $aRow = $this->database()
            ->select('b.task_id, b.name, b.user_id, u.gender, u.full_name')
            ->from(Phpfox::getT('todolist_task'), 'b')
            ->join(Phpfox::getT('user'), 'u', 'u.user_id = b.user_id')
            ->where('b.task_id = ' . (int)$aNotification['item_id'])
            ->execute('getSlaveRow');

        // validate to do list item
        if (!isset($aRow['task_id'])) {
            return false;
        }

        // get user name
        $sUsers = Phpfox::getService('notification')->getUsers($aNotification);

        // to do list title
        $sTitle = $aRow['name'];

        // get translate message
        $sMessage = _p('User comment on to do title', [
            'users'         => $sUsers,
            'row_full_name' => $aRow['full_name'],
            'title'         => $sTitle,
        ]);

        // get link
        $url = Phpfox::getLib('url')
            ->permalink('to-do-list.view', $aRow['task_id'], $aRow['name']);

        return [
            'link'    => $url,
            'message' => $sMessage,
            'icon'    => '',
        ];
    }

Create another account, use new account to comment on to do list feed.

logged in back to the account which posted to do item.
Click on notification panel, the result is similar to attachment.

Next Chapter