From cb6b20e4b0fa9d2505ff624a3e7a2baf7dc38514 Mon Sep 17 00:00:00 2001 From: Cyril Vazquez <cyril.vazquez@maarch.org> Date: Thu, 28 Jun 2012 11:21:45 +0000 Subject: [PATCH] --- .../core/tests/class/DataObjectController.php | 21 +++-- .../core/tests/class/DataObjectSchema.php | 4 +- .../core/tests/class/MessageController.php | 88 +++++++++++++++---- 3 files changed, 83 insertions(+), 30 deletions(-) diff --git a/core/trunk/core/tests/class/DataObjectController.php b/core/trunk/core/tests/class/DataObjectController.php index e286630f1bb..5f8814a421b 100644 --- a/core/trunk/core/tests/class/DataObjectController.php +++ b/core/trunk/core/tests/class/DataObjectController.php @@ -34,9 +34,11 @@ class dataObjectController extends DOMDocument $this->messageController = new MessageController(); $this->messageController->logLevel = Message::INFO; $this->messageController->debug = true; - $this->messageController->caller = __FILE__; - $this->messageController->loadMessageFile($_SESSION['config']['corepath'] . '/core/xml/DataObjectController_Messages.xml'); + $this->messageController->loadMessageFile( + $_SESSION['config']['corepath'] + . '/core/xml/DataObjectController_Messages.xml' + ); } @@ -45,7 +47,7 @@ class dataObjectController extends DOMDocument $this->schema = new DataObjectSchema(); $this->schema->loadSchema($xsdFile); - $dasSources = $this->schema->getDataAccessServiceSources(); + $dasSources = $this->schema->getSources(); for($i=0; $i<count($dasSources); $i++) { $dasSource = $dasSources[$i]; switch($dasSource->type) { @@ -57,7 +59,7 @@ class dataObjectController extends DOMDocument $dasSource->dbname, $dasSource->port ); - $options = $this->schema->getDataAccessServiceSourceOptions($dasSource); + $options = $this->schema->getSourceOptions($dasSource); $this->dataAccessServices[$dasSource->name] = new dataAccessService_Database( $dsn, @@ -133,12 +135,10 @@ class dataObjectController extends DOMDocument $messageId = 'libxml' . $libXMLError->code; $messageParams = array($libXMLError->message); $messageLang = $_SESSION['config']['lang']; - $messageFunc = 'dataObjectController::validate'; $message = $this->messageController->sendMessage( $messageId, $messageParams, - $messageLang, - $messageFunc + $messageLang ); $this->messages[] = $message; } @@ -252,8 +252,11 @@ class dataObjectController extends DOMDocument public function getLabel($objectName) { $objectSchema = $this->schema->getObjectSchema($objectName); - if($objectSchema->{'das:label'}) return $objectSchema->{'das:label'}; - else return $objectSchema->name; + if($objectSchema->{'das:label'}) { + return $objectSchema->{'das:label'}; + } else { + return $objectSchema->name; + } } public function getContentLabels($objectName) diff --git a/core/trunk/core/tests/class/DataObjectSchema.php b/core/trunk/core/tests/class/DataObjectSchema.php index 1842bb73e98..69630a1b9a5 100644 --- a/core/trunk/core/tests/class/DataObjectSchema.php +++ b/core/trunk/core/tests/class/DataObjectSchema.php @@ -64,7 +64,7 @@ class DataObjectSchema return $this->xpath->query($query, $contextElement); } - public function getDataAccessServiceSources() + public function getSources() { $DSnodes = $this->xpath('/xsd:schema/xsd:annotation/xsd:appinfo/das:source'); for($i=0; $i<$DSnodes->length; $i++) { @@ -73,7 +73,7 @@ class DataObjectSchema return $DS; } - public function getDataAccessServiceSourceOptions($datasource) + public function getSourceOptions($datasource) { $optionNodes = $this->xpath('./das:option', $datasource); for($i=0; $i<$optionNodes->length; $i++) { diff --git a/core/trunk/core/tests/class/MessageController.php b/core/trunk/core/tests/class/MessageController.php index fc673b3f03b..e7ad3ee5bc0 100644 --- a/core/trunk/core/tests/class/MessageController.php +++ b/core/trunk/core/tests/class/MessageController.php @@ -4,8 +4,6 @@ class MessageController extends DOMDocument { - - private $caller; private $logLevel; private $debug; private $xpath; @@ -13,7 +11,6 @@ class MessageController public function __set($name, $value) { switch($name) { - case 'caller' : $this->caller = $value; case 'logLevel' : $this->logLevel = $value; case 'debug' : $this->debug = $value; } @@ -49,31 +46,77 @@ class MessageController return $this->xpath->query($query, $contextElement); } - public function sendMessage( + + public function getMessageDefinition($messageId) + { + $messageDefinitions = $this->xpath("//message[@id='".$messageId."']"); + if($messageDefinitions->length === 0) return false; + $messageDefinition = $messageDefinitions->item(0); + return $messageDefinition; + } + + public function getMessageText( $messageId, $messageParams = array(), - $messageLang = 'fr', - $messageFunc = false + $messageLang = 'fr' ) { // Get message definition - $messageDefinitions = $this->xpath("//message[@id='".$messageId."']"); - if($messageDefinitions->length === 0) return false; - $messageDefinition = $messageDefinitions->item(0); + $messageDefinition = $this->getMessageDefinition($messageId); + + // Get Text + $messageText = $this->makeMessageText( + $messageDefinition, + $messageParams, + $messageLang + ); + return $messageText; + } + + private function makeMessageText( + $messageDefinition, + $messageParams = array(), + $messageLang = 'fr' + ) + { // Get message text in requested language $messageTexts = $this->xpath("./text[@lang='".$messageLang."']", $messageDefinition); if($messageTexts->length === 0) $messageText = $this->xpath("./text", $messageDefinition)->item(0)->nodeValue; $messageText = $messageTexts->item(0)->nodeValue; $messageText = vsprintf($messageText, $messageParams); + return $messageText; + + } + + public function sendMessage( + $messageId, + $messageParams = array(), + $messageLang = 'fr' + ) + { + // Get message definition + $messageDefinition = $this->getMessageDefinition($messageId); + + // Make Text + $messageText = $this->makeMessageText( + $messageDefinition, + $messageParams, + $messageLang + ); + + // Get backtrace + $backtrace = debug_backtrace(); + $messageBacktrace = $backtrace[1]; + // Create message object $message = new Message( $messageDefinition->level, $messageDefinition->id, $messageText, - $this->caller, - $messageFunc + $messageLang, + $messageBacktrace ); $_SESSION['messages'][] = $message; @@ -107,18 +150,25 @@ class Message public $level; public $id; public $text; - public $file; - public $func; - public $debug; - - function Message($level, $id, $text, $file, $func) + public $lang; + public $file; + public $line; + public $class; + public $func; + + + + function Message($level, $id, $text, $lang, $backtrace) { $this->timestamp = date('Y-m-d H-i-s.u'); $this->level = $level; $this->id = $id; - $this->text = $text; - $this->file = $file; - $this->func = $func; + $this->text = trim($text); + $this->lang = $lang; + $this->file = $backtrace['file']; + $this->line = $backtrace['line']; + $this->class = $backtrace['class']; + $this->func = $backtrace['function']; } } \ No newline at end of file -- GitLab