You are here

public function SendTinCanStatement::processItem in Opigno TinCan API 8

Same name and namespace in other branches
  1. 3.x src/Plugin/QueueWorker/SendTinCanStatement.php \Drupal\opigno_tincan_api\Plugin\QueueWorker\SendTinCanStatement::processItem()

Works on a single queue item.

Parameters

mixed $data: The data that was passed to \Drupal\Core\Queue\QueueInterface::createItem() when the item was queued.

Throws

\Drupal\Core\Queue\RequeueException Processing is not yet finished. This will allow another process to claim the item immediately.

\Exception A QueueWorker plugin may throw an exception to indicate there was a problem. The cron process will log the exception, and leave the item in the queue to be processed again later.

\Drupal\Core\Queue\SuspendQueueException More specifically, a SuspendQueueException should be thrown when a QueueWorker plugin is aware that the problem will affect all subsequent workers of its queue. For example, a callback that makes HTTP requests may find that the remote server is not responding. The cron process will behave as with a normal Exception, and in addition will not attempt to process further items from the current item's queue during the current cron run.

Overrides QueueWorkerInterface::processItem

See also

\Drupal\Core\Cron::processQueues()

File

src/Plugin/QueueWorker/SendTinCanStatement.php, line 58

Class

SendTinCanStatement
Send TinCan Statement.

Namespace

Drupal\opigno_tincan_api\Plugin\QueueWorker

Code

public function processItem($data) {

  // _opigno_tincan_api_send_statement.
  // The variables 'opigno_tincan_api_*'
  // will be used to send the statement to the LRS.
  $config = $this->configFactory
    ->get('opigno_tincan_api.settings');
  $endpoint = $config
    ->get('opigno_tincan_api_endpoint');
  $username = $config
    ->get('opigno_tincan_api_username');
  $password = $config
    ->get('opigno_tincan_api_password');
  if (empty($endpoint) || empty($username) || empty($password)) {
    return FALSE;
  }
  $lrs = new RemoteLRS($endpoint, '1.0.1', $username, $password);
  $response = $lrs
    ->saveStatement($data->statement);
  if ($response->success === FALSE) {
    $this->logger
      ->get('Opigno Tincan API')
      ->error('The following statement could not be sent :<br /><pre>' . print_r($statement
      ->asVersion('1.0.1'), TRUE) . '</pre><br/>', []);
    return FALSE;
  }
  return TRUE;
}