Application Packaging Standard

Last updated 18-Mar-2019

Subscribe to Events

To subscribe on ‘user available’ and ‘user changed’ events, use the following example:

<?php
   ...
  public function provision() {
      ...
      $apsc2 = \APS\Request::getController();
      $apsc = $apsc2->impersonate($this);
      $sub = new \APS\EventSubscription(\APS\EventSubscription::Changed, "onUserChanged");
      $sub->source->type='http://aps-standard.org/types/core/user/1.0';
      $apsc->subscribe($this, $sub);

      $sub = new \APS\EventSubscription(\APS\EventSubscription::Available, "onUserAvailable");
      $sub->source->type='http://aps-standard.org/types/core/user/1.0';
      $apsc->subscribe($this, $sub);
      ...
  }
    ....

  /**
   * @verb(POST)
   * @path("/onUserChanged")
   * @param("http://aps-standard.org/types/core/resource/1.0#Notification",body)
   */
  public function onUserChanged($notification) {
      $apsc = \APS\Request::getController();
      $apsc2 = $apsc->impersonate($this);
      $user = $apsc2->getResource($notification->source->id);
      $displayName = $user->displayName;
      $login = $user->login;
      $mail = $user->email;
      ...
  }

  /**
   * @verb(POST)
   * @path("/onUserAvailable")
   * @param("http://aps-standard.org/types/core/resource/1.0#Notification",body)
   */
  public function onUserAvailable($notification) {
      $apsc = \APS\Request::getController();
      $apsc2 = $apsc->impersonate($this);
      $user = $apsc2->getResource($notification->source->id);
      $displayName = $user->displayName;
      $login = $user->login;
      $mail = $user->email;
      ...
  }

Subscription Limit Changed event:

<?php

$apsc2 = \APS\Request::getController();
$apsc = $apsc2->impersonate($this);
$subLimitchange = new \APS\EventSubscription("http://parallels.com/aps/events/pa/subscription/limits/changed", "onSubcriptionLimitchange");
$subLimitchange->source = new stdClass();
$subLimitchange->source->id = $this->subscription->aps->id;
$apsc->subscribe($this, $subLimitchange);

/**
 * @verb(POST)
 * @path("/onSubcriptionLimitchange")
 * @param("http://aps-standard.org/types/core/resource/1.0#Notification",body)
 */
public function onSubcriptionLimitchange($notification) {
    $apsc = \APS\Request::getController();
    $apsc2 = $apsc->impersonate($this);
    $subscription = $apsc2->getResource($notification->source->id);
    $subscrRTs = $subscription->resources();
    ....
}

Read more: