Openfire: Add user subscription status as “both”

Problem : Issue when i add user using RestApi 

include "vendor/autoload.php";
$api = new GidkomOpenFireRestApiOpenFireRestApi;
$api->secret = "mySecretKey";
$api->host = "HostName";
$api->port = "9090";
$api->useSSL = false;
$api->plugin = "/plugins/restapi/v1";  // plugin 

For adding user to Roster i am using following code

$jid="xyz@domainname";
//Add to roster
$data=$api->addToRoster("abc", $jid);

Which points to OpenFireRestApi.php which do have function named addToRoster

 /**
     * Adds to this OpenFire user's roster
     *
     * @param   string          $username       Username
     * @param   string          $jid            JID
     * @param   string|false    $name           Name         (Optional)
     * @param   int|false       $subscription   Subscription (Optional)
     * @return  json|false                     Json with data or error, or False when something went fully wrong
     */
    public function addToRoster($username, $jid, $name=false, $subscription=false)
    {
        $endpoint = '/users/'.$username.'/roster';
        return $this->doRequest('post', $endpoint, compact('jid','name','subscription'));
    }

So we’ve used

$data=$api->addToRoster("abc", $jid,"DummyName",3);

Where 3 is subscription type as both = 3 which is mentioned.

But when i add user shows subscription type as none only.

Solution :-

There is problem with php-openfire-restapi classes

Need to change name of parameters So do following changes :

//Add to roster
$username = "username in which you want to add roster";
$jid = "another users JID";
$nickname= "nick name of another user";
$subscription ="3";
$result = $api->addToRoster($username, $jid,$nickname,$subscription);

and change following line in /src/Gidkom/OpenFireRestApi/OpenFireRestApi.php file

public function addToRoster($username, $jid, $name=false, $subscription=false)
    {
        $nickname=$name;
        $subscriptionType=$subscription;
        $endpoint = '/users/'.$username.'/roster';
        return $this->doRequest('post', $endpoint, compact('jid','nickname','subscriptionType'));
    }

Here I have changed parameter names.

You may also like

Leave a Reply