summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rwxr-xr-xserver/Test/AppTestClass.php13
-rw-r--r--server/Test/imageTests.php90
-rw-r--r--server/core/Image.php487
3 files changed, 398 insertions, 192 deletions
diff --git a/server/Test/AppTestClass.php b/server/Test/AppTestClass.php
index 311b9bf..40a5847 100755
--- a/server/Test/AppTestClass.php
+++ b/server/Test/AppTestClass.php
@@ -1,6 +1,12 @@
<?php
include_once("../core/Plugin_Api.php");
include_once("../core/LibOverride/genTokenOptions.php");
+include_once("../core/ErrorManagement.php");
+
+use OpenStack\Common\Error\BadResponseError;
+use OpenStack\Common\Error\BaseError;
+use OpenStack\Common\Error\NotImplementedError;
+use OpenStack\Common\Error\UserInputError;
class AppTest{
@@ -9,6 +15,7 @@ class AppTest{
protected $tokenClass;
protected $tokenPost;
protected $output;
+ protected $errorClass;
public function __construct($args){
@@ -17,6 +24,7 @@ class AppTest{
$this->openstack = new OpenStack\OpenStack([]);
$this->pluginsApi = plugin_api::getInstance();
$this->output = array();
+ $this->errorClass = new errorManagement($this);
}
@@ -70,4 +78,9 @@ class AppTest{
echo json_encode($this->output);
}
+ public function getErrorInstance(){
+
+ return $this->errorClass;
+
+ }
} \ No newline at end of file
diff --git a/server/Test/imageTests.php b/server/Test/imageTests.php
index 94ff7b6..47a69e2 100644
--- a/server/Test/imageTests.php
+++ b/server/Test/imageTests.php
@@ -1,35 +1,6 @@
<?php
-require '../vendor/autoload.php';
-include('/istic-openstack/server/init.php');
-
-/*
-$options = Array();
-$options["user"] = Array("name"=>"admin", "password"=>"ae5or6cn", "domain"=>["id"=>"Default"]);
-$options["scope"] = Array("project"=>Array("name"=>"admin", "domain"=>["id"=>"Default"]));
-$options["authUrl"] = "http://148.60.11.31:5000/v3";
-
-$openstack = new OpenStack\OpenStack($options);
-
-//$identity = $openstack->identityV3();
-//var_dump($identity);
-// Since usernames will not be unique across an entire OpenStack installation,
-// when authenticating with them you must also provide your domain ID. You do
-// not have to do this if you authenticate with a user ID.
-/*$token = $identity->generateToken([
- 'user' => [
- 'name' => 'admin',
- 'password' => 'ae5or6cn',
- 'domain' => [
- 'id' => 'Default'
- ]
- ]
- ]);
- */
-//$compute = $openstack->computeV2(["region" => "RegionOne"]);
-//$image= $openstack->imagesV2(["region" => "RegionOne"]);
-//var_dump($compute->client);
-//$servers = $compute->listServers(true);
-echo 'toto';
+include('InitTest.php');
+include_once("../core/Image.php");
$image = new Image($App);
@@ -43,52 +14,57 @@ $opt['minDisk'] = 1;
$opt['protected'] = false;
$opt['minRam'] = 10;
-//$new_image = $image->create_image($opt);
-
+//$new_image = $image->createImage($opt);
//Liste des images
-$images = $image->list_images();
+$images = $image->listImage();
-echo "Images présentes :";
-echo "</br>";
-
-foreach($images as $i){
- echo $i->name;
- if($i->name == "Test"){
- $id_image = $i->id;
- $list = $i->tags;
- echo $i->status;
+if(isset($images)){
+ echo "Images présentes :";
+ echo "</br>";
+ foreach($images as $i){
+ echo $i->name;
+ if($i->name == "Test"){
+ $id_image = $i->id;
+ $list = $i->tags;
+ echo $i->status;
+ }
+ echo "</br>";
}
echo "</br>";
-}
-echo "</br>";
-if(isset($list)){
- foreach ($list as $l) {
- echo $l;
- echo "</br>";
- }
+ if(isset($list)){
+ foreach ($list as $l) {
+ echo $l;
+ echo "</br>";
+ }
+}
+}
+else{
+ echo "Aucune image présente\n";
}
+
+
// Détails Image
-//$details = $image->image_details($id_image);
+//$details = $image->imageDetails($id_image);
-//$image->delete_image('123456');
+$image->deleteImage('123456');
-//$image->desactivate_image($id_image);
-//$image->reactivate_image($id_image);
+//$image->desactivateImage($id_image);
+//$image->reactivateImage($id_image);
//$file_name = "/home/yogg/Downloads/TinyCore-6.4.1.iso";
-//$image->upload_image($id_image, $file_name);
+//$image->uploadImage($id_image, $file_name);
-//$image->download_image($id_image);
+//$image->downloadImage($id_image);
/*
$opt_update = Array();
$opt_update['name'] = "Test";
$opt_update['tags'] = null;
-$update = $image->update_image($id_image, $opt_update);
+$update = $image->updateImage($id_image, $opt_update);
echo $update->name;
*/
diff --git a/server/core/Image.php b/server/core/Image.php
index 3001eea..85a245f 100644
--- a/server/core/Image.php
+++ b/server/core/Image.php
@@ -1,7 +1,4 @@
<?php
-
-//require 'CoreInterface.php';
-
/**
* File containing the Image Class.
*
@@ -12,15 +9,18 @@
*
* @todo Complete the functions with errors detection and finish the descriptions
*/
-
-
+use OpenStack\Common\Error\BadResponseError;
+use OpenStack\Common\Error\BaseError;
+use OpenStack\Common\Error\NotImplementedError;
+use OpenStack\Common\Error\UserInputError;
+
/**
* Image Class of the back-end application
*
* ADD CLASS DESCRIPTION
*
*/
-class image{
+class image {
//implements Core
/** @var App $app protected, contains the main app object */
@@ -43,12 +43,25 @@ class image{
* @return Image
*/
public function __construct($app){
- $this->app = $app;
- $this->libClass = $app->getLibClass("Image");
+ if(!isset($app)){
+ // Renvoyer erreur
+ }
+ try{
+ $this->app = $app;
+ $this->libClass = $app->getLibClass("Image");
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
-
+ private $images = array();
/**
* Details about an image
@@ -57,55 +70,80 @@ class image{
* options for the image creation
*
**/
- public function create_image(array $opt){
- // VOIR SI MAUVAIS TYPE
- $options = Array();
- if(isset($opt['name'])){ // string, rendre le nom obligatoire, vérifier nom pas déjà pris
- }
- else{
- //ERROR
- }
- if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn
- $options['id'] = $opt['id'];
- }
- if(isset($opt['visibility'])){ // public, private
- $options['visibility'] = $opt['visibility'];
- }
- if(isset($opt['tags'])){ // list
- $options['tags'] = $opt['tags'];
- }
- if(isset($opt['containerFormat'])){ // string : ami, ari, aki, bare, ovf, ova, docker
- $options['containerFormat'] = $opt['containerFormat'];
- }
- if(isset($opt['diskFormat'])){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso
- $options['diskFormat'] = $opt['diskFormat'];
- }
- if(isset($opt['minDisk'])){ //int
- $options['minDisk'] = $opt['minDisk'];
- }
- if(isset($opt['minRam'])){ // int
- $options['minRam'] = $opt['minRam'];
+ public function createImage(array $opt){
+ if(!isset($opt)){
+ // Renvoyer erreur
}
- if(isset($opt['protected'])){ // boolean
- $options['protected'] = $opt['protected'];
- }
- if(isset($opt['properties'])){ // type dict ?
- $options['properties'] = $opt['properties'];
- }
- $image = $this->oidentity->createImage($options);
+ try{
+ // VOIR SI MAUVAIS TYPE
+ $options = Array();
+ if(isset($opt['name'])){ // string, rendre le nom obligatoire, vérifier nom pas déjà pris
+ }
+ else{
+ //ERROR
+ }
+ if(isset($opt['id'])){ // UUID : nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn
+ $options['id'] = $opt['id'];
+ }
+ if(isset($opt['visibility'])){ // public, private
+ $options['visibility'] = $opt['visibility'];
+ }
+ if(isset($opt['tags'])){ // list
+ $options['tags'] = $opt['tags'];
+ }
+ if(isset($opt['containerFormat'])){ // string : ami, ari, aki, bare, ovf, ova, docker
+ $options['containerFormat'] = $opt['containerFormat'];
+ }
+ if(isset($opt['diskFormat'])){ // string : ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, iso
+ $options['diskFormat'] = $opt['diskFormat'];
+ }
+ if(isset($opt['minDisk'])){ //int
+ $options['minDisk'] = $opt['minDisk'];
+ }
+ if(isset($opt['minRam'])){ // int
+ $options['minRam'] = $opt['minRam'];
+ }
+ if(isset($opt['protected'])){ // boolean
+ $options['protected'] = $opt['protected'];
+ }
+ if(isset($opt['properties'])){ // type dict ?
+ $options['properties'] = $opt['properties'];
+ }
+ $image = $this->libClass->createImage($options);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
return $image;
}
- /*
- * List images
+ /**
+ * List the images of the server
+ *
+ * @return the list with all images on the server
*/
- public function list_images(){
- // vérifier si au moins une image
- $service = $this->oidentity;
- $images = $service->listImages();
- return $images;
+ public function listImage(){
+ try{
+ // vérifier si au moins une image
+ $l = $this->libClass->listImages();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
+ return $l;
+
}
/**
@@ -115,11 +153,25 @@ class image{
* identifier of the image
*
**/
- public function image_details($id){
- //vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- return $image;
+ public function detailsImage($id){
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+
+ try{
+ //vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ return $image;
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
/**
@@ -131,33 +183,49 @@ class image{
* @param array $opt
* options for the image creation
**/
- public function update_image($id, array $opt){
- //vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- $options = Array();
-
- // Voir vérification des types
- if(isset($opt['name'])){ //string
- $options['name'] = $opt['name'];
- }
- if(isset($opt['minDisk'])){ //int
- $options['minDisk'] = $opt['minDisk'];
- }
- if(isset($opt['minRam'])){ // int
- $options['minRam'] = $opt['minRam'];
- }
- if(isset($opt['protected'])){ // boolean
- $options['protected'] = $opt['protected'];
- }
- if(isset($opt['visibility'])){ // public, private
- $options['visibility'] = $opt['visibility'];
+ public function updateImage($id, array $opt){
+ if(!isset($id)){
+ // Renvoyer erreur
}
- if(isset($opt['tags'])){ // list
- $options['tags'] = $opt['tags'];
+ if(!isset($opt)){
+ // Renvoyer erreur
}
- $image->update($options);
+
+ try{
+ //vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ $options = Array();
+ // Voir vérification des types
+ if(isset($opt['name'])){ //string
+ $options['name'] = $opt['name'];
+ }
+ if(isset($opt['minDisk'])){ //int
+ $options['minDisk'] = $opt['minDisk'];
+ }
+ if(isset($opt['minRam'])){ // int
+ $options['minRam'] = $opt['minRam'];
+ }
+ if(isset($opt['protected'])){ // boolean
+ $options['protected'] = $opt['protected'];
+ }
+ if(isset($opt['visibility'])){ // public, private
+ $options['visibility'] = $opt['visibility'];
+ }
+ if(isset($opt['tags'])){ // list
+ $options['tags'] = $opt['tags'];
+ }
+ $image->update($options);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
return $image;
}
@@ -167,11 +235,25 @@ class image{
* @param string $id
* identifier of the image
**/
- public function delete_image($id){
+ public function deleteImage($id){
// si protected = true, demander de le mettre a false
// vérifier existence image
- $service = $this->oidentity;
- $service->getImage($id)->delete();
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+ try{
+ $service = $this->libClass;
+ $service->getImage($id)->delete();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
+
}
/**
@@ -180,11 +262,24 @@ class image{
* @param string $id
* identifier of the image
**/
- public function reactivate_image($id){
- // vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- $image->reactivate();
+ public function reactivateImage($id){
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ $image->reactivate();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
/**
@@ -193,11 +288,24 @@ class image{
* @param string $id
* identifier of the image
**/
- public function desactivate_image($id){
- // vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- $image->deactivate();
+ public function desactivateImage($id){
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ $image->deactivate();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
/**
@@ -209,12 +317,28 @@ class image{
* @param string $file_name
* path of the image
**/
- public function upload_image($id, $file_name){
- // vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR
- $image->uploadData($stream);
+ public function uploadImage($id, $file_name){
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+ if(!isset($file_name)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ $stream = \GuzzleHttp\Psr7\stream_for(fopen($file_name, 'r')); // A VOIR
+ $image->uploadData($stream);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
/**
@@ -223,12 +347,25 @@ class image{
* @param string $id
* identifier of the image
**/
- public function download_image($id){
- // vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($id);
- $stream = $image->downloadData();
- return $stream;
+ public function downloadImage($id){
+ if(!isset($id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($id);
+ $stream = $image->downloadData();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
+ return $stream;
}
/**
@@ -240,12 +377,28 @@ class image{
* @param string $member_id
* identifier of the member
**/
- public function add_member($image_id, $member_id){
- // vérifier existence image
- // on doit être le proprio de l'image
- // vérifier membre existe
- $service = $this->oidentity;
- $member_id = $service>getImage($image_id)->addMember($member_id);
+ public function addMemberImage($image_id, $member_id){
+ if(!isset($image_id)){
+ // Renvoyer erreur
+ }
+ if(!isset($member_id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ // on doit être le proprio de l'image
+ // vérifier membre existe
+ $service = $this->libClass;
+ $member_id = $service>getImage($image_id)->addMember($member_id);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
@@ -255,11 +408,27 @@ class image{
* @param string $image_id
* identifier of the image
**/
- public function list_member($image_id, $member_id){
- // vérifier existence image
- $service = $this->oidentity;
- $image = $service->getImage($image_id);
- $members = $image->listMembers();
+ public function listMemberImage($image_id, $member_id){
+ if(!isset($image_id)){
+ // Renvoyer erreur
+ }
+ if(!isset($member_id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ $service = $this->libClass;
+ $image = $service->getImage($image_id);
+ $members = $image->listMembers();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
return $members;
}
@@ -272,12 +441,28 @@ class image{
* @param string $member_id
* identifier of the member
**/
- public function detail_member($image_id, $member_id){
- // vérifier existence image
- // on doit être le proprio de l'image
- // vérifier membre existe
- $service = $this->oidentity;
- $member = $service>getImage($image_id)->getMember($member_id);
+ public function detailMemberImage($image_id, $member_id){
+ if(!isset($image_id)){
+ // Renvoyer erreur
+ }
+ if(!isset($member_id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ // on doit être le proprio de l'image
+ // vérifier membre existe
+ $service = $this->libClass;
+ $member = $service>getImage($image_id)->getMember($member_id);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
return $member;
}
@@ -290,12 +475,28 @@ class image{
* @param string $member_id
* identifier of the member
**/
- public function remove_member($image_id, $member_id){
- // vérifier existence image
- // on doit être le proprio de l'image
- // vérifier membre existe
- $service = $this->oidentity;
- $service>getImage($image_id)->getMember($member_id)->delete();
+ public function removeMemberImage($image_id, $member_id){
+ if(!isset($image_id)){
+ // Renvoyer erreur
+ }
+ if(!isset($member_id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ // on doit être le proprio de l'image
+ // vérifier membre existe
+ $service = $this->libClass;
+ $service>getImage($image_id)->getMember($member_id)->delete();
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
/**
@@ -310,13 +511,29 @@ class image{
* @param string $status
* new status for the member
**/
- public function update_member($image_id, $member_id, $status){
- // vérifier existence image
- // on doit être le proprio de l'image
- // vérifier membre existe
- $service = $this->oidentity;
- $member = $service>getImage($image_id)->getMember($member_id)->updateStatus($status);
+ public function updateMemberImage($image_id, $member_id, $status){
+ if(!isset($image_id)){
+ // Renvoyer erreur
+ }
+ if(!isset($member_id)){
+ // Renvoyer erreur
+ }
+ try{
+ // vérifier existence image
+ // on doit être le proprio de l'image
+ // vérifier membre existe
+ $service = $this->libClass;
+ $member = $service>getImage($image_id)->getMember($member_id)->updateStatus($status);
+ }catch(BadResponseError $e){
+ $this->app->getErrorInstance()->BadResponseHandler($e);
+ }catch(UserInputError $e){
+ $this->app->getErrorInstance->UserInputHandler($e);
+ }catch(BaseError $e){
+ $this->app->getErrorInstance->BaseErrorHandler($e);
+ }catch(NotImplementedError $e){
+ $this->app->getErrorInstance->NotImplementedHandler($e);
+ }
}
}
-?>
+?> \ No newline at end of file