Skip to content

guillaumev/php-pens

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

This library is an implementation of the PENS specification (see http://pens.lmstesting.com/pages/whatispens.htm) in PHP. It provides a PENSServer class and, in the future, will provide a PENSClient class.

Requirements

You need at least PHP 5.2 with the curl extension installed to use this library.

State

Currently, some features are missing (such as the possibility to send alerts or the possibility to send receipts to a mailto url), and the library is not considered as stable.

How do I create a server ?

Assuming the URL of your server is http://www.myserver.com, create a file called pens.php at the root so that it is accessible through http://www.myserver.com/pens.php.

In this file, write the following code:

// Assuming the library is accessible through pens/pens.php
require_once("pens/pens.php");
// Create a concrete class that extends PENSPackageHandler and 
// write your implementation of the processPackage method in it
class MyPackageHandler extends PENSPackageHandler {
	// See the documentation of the processPackage method for more information
	public function processPackage($request, $path_to_package) {
		// Write your implementation of the package handling here
	}
}
// Create an instance of your handler and configure it
// See the file pens_package_handler.php for more information
$handler = new MyPackageHandler();
$handler->setSupportedPackageTypes(array("scorm-pif"));
$handler->setSupportedPackageFormats(array("zip"));
// Initialize the server
$server = PENSServer::singleton();
$server->setPackageHandler($handler);
// The server should only receive collect commands, so call the receiveCollect method
$server->receiveCollect();

How do I create a client ?

The role of the PENSClient is simply to receive receipts and alerts from the server and process them. Here is how to create a client.

require_once("pens/pens.php");
// Create a request handler if you need one. This allows you to do some processing on the requests (store them in a DB, send them to an email address etc...)
// You do not need to create a request handler if you do not want to process the requests
class MyRequestHandler extends PENSRequestHandler {
	public function processRequest($request, $response) {
		// Do the processing of the alert or the receipt here
	}
}
// Instantiate the handler
$handler = new MyRequestHandler();
// Create the client and set the request handler
$client = PENSClient::singleton();
$client->setRequestHandler($handler);
// Parse and process the request
$client->receiveRequest();

Licence

The php-pens library is published under the GNU GPL 3 licence (see COPYING)

Credits

The author of the library is Guillaume Viguier-Just <guillaume@viguierjust.com> and this library has been realized mainly for use in the Chamilo project (http://www.chamilo.org).

This library was realized as part of my work in Beeznest Latino (http://www.beeznest.com), for the Chamilo project.

Also note the use of a library called rfc2396regexes written by Rudy Desjardins and distributed as GPL v2

About

Library for PENS written in php

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages