merged from stable

This commit is contained in:
gustav_delius 2005-06-13 18:42:17 +00:00
parent 84a422500e
commit f3d7f1ca50
7 changed files with 42 additions and 83 deletions

View File

@ -4,7 +4,7 @@
///// This page offers a way to define category level datasets /////
/////////////////////////////////////////////////////////////////////
require_once("../../../../config.php");
require_once("$CFG->dirroot/config.php");
require_variable($category);
optional_variable($question);

View File

@ -11,7 +11,7 @@
*/
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/lib.php');
require_once('remote.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/remote.php');
/**
* RQP question type class
@ -61,11 +61,12 @@ class quiz_rqp_qtype extends quiz_default_questiontype {
quiz_rqp_debug_soap($item);
return $result;
}
if ($item->sourceErrors) {
array_walk($item->sourceErrors,
create_function('&$val', '$val = $val->message;'));
$result->notice = get_string('invalidsource', 'quiz', $options) .
'<br />' . implode('<br />', array_values($item->sourceErrors));
if ($item->error) {
$result->notice = $item->error;
return $result;
}
if ($item->warning) {
$result->notice = $item->warning;
return $result;
}
// Time dependent items are not supported by the quiz module yet

View File

@ -10,7 +10,7 @@
*/
// Load functions for the RQP-SOAP binding
require_once('rqp.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/rqp.php');
// Remote item processing flags (cached from server)
define('REMOTE_TEMPLATE', 4);

View File

@ -11,7 +11,7 @@
// Load the SOAP library that gives a unified wrapping to either the native
// PHP5 SOAP extension if available or to nuSOAP otherwise.
require_once('uni_soap.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/uni_soap.php');
/**
* Base RQP URI for RQP-defined identifiers
@ -68,23 +68,12 @@ function rqp_server_info($connection) {
* @param anyURI $format Item format
* @return object Object holding the return parameters or a SoapFault.
*/
function rqp_item_info($connection, $source, $format='', $index=0) {
function rqp_item_info($connection, $source, $format='') {
$itemInfo = soap_call($connection, 'RQP_ItemInformation',
array('source'=>$source, 'format'=>$format, 'index'=>$index));
array('source'=>$source, 'format'=>$format));
if (is_soap_fault($itemInfo)) {
return $itemInfo;
}
// put the sourceErrors into an associative array indexed by the
// error identifier
$sourceErrors = array();
if (!empty($itemInfo->sourceErrors)) {
foreach ($itemInfo->sourceErrors as $error) {
$id = $error->identifier;
unset($error->identifier);
$sourceErrors[$id] = (object) $error;
}
}
$itemInfo->sourceErrors = $sourceErrors;
return $itemInfo;
}
@ -94,21 +83,15 @@ function rqp_item_info($connection, $source, $format='', $index=0) {
* @param SoapClient $connection The URL of the RQP server that we want to connect to
* @param string $source Item source
* @param anyURI $format Item format
* @param array $options Options array
* @return object Object holding the return parameters or a SoapFault.
*/
function rqp_process_template($connection, $source, $format='') {
function rqp_process_template($connection, $source, $format='', $options=array()) {
$return = soap_call($connection, 'RQP_ProcessTemplate',
array('source'=>$source, 'format'=>$format));
array('source'=>$source, 'format'=>$format, 'options'=>$options));
if (is_soap_fault($return)) {
return $return;
}
$templateVars = array();
if (!empty($return->templateVars)) {
foreach ($return->templateVars as $var) {
$templateVars[$var->identifier] = $var->values;
}
}
$return->templateVars = $templateVars;
return $return;
}
@ -118,26 +101,15 @@ function rqp_process_template($connection, $source, $format='') {
* @param SoapClient $connection The URL of the RQP server that we want to connect to
* @param string $source Item source
* @param anyURI $format Item format
* @param array $templateVars Associative array of template variables
* @return object Object holding the return parameters or a SoapFault.
*/
function rqp_clone($connection, $source, $format='', $templateVars=array()) {
// make an array of key-value pairs from the template variables array
array_walk($templateVars, create_function('&$val, $key',
'$val = (object) array(\'identifier\'=>$key, \'values\'=>$val);'));
function rqp_clone($connection, $source, $format='') {
$return = soap_call($connection, 'RQP_Clone', array('source'=>$source,
'format'=>$format, 'templateVars'=>array_values($templateVars)));
'format'=>$format));
if (is_soap_fault($return)) {
return $return;
}
$templateVars = array();
if (!empty($return->templateVars)) {
foreach ($return->templateVars as $var) {
$templateVars[$var->identifier] = $var->values;
}
}
$return->templateVars = $templateVars;
return $return;
}
@ -148,31 +120,21 @@ function rqp_clone($connection, $source, $format='', $templateVars=array()) {
* @param SoapClient $connection The URL of the RQP server that we want to connect to
* @param string $source Item source
* @param anyURI $format Item format
* @param array $options Options array
* @param string $persistentData String giving the state of the item session
* @param array $templateVars Associative array of template variables
* @param string $embedPrefix
* @return object Object holding the return parameters or a SoapFault.
*/
function rqp_session_info($connection, $source, $format='', $persistentData='',
$templateVars=array(), $embedPrefix='', $index=0) {
function rqp_session_info($connection, $source, $format='', $options=array(), $persistentData='') {
// make an array of key-value pairs from the template variables array
array_walk($templateVars, create_function('&$val, $key',
array_walk($options, create_function('&$val, $key',
'$val = (object) array(\'identifier\'=>$key, \'values\'=>$val);'));
$return = soap_call($connection, 'RQP_SessionInformation',
array('source'=>$source, 'format'=>$format, 'index'=>$index,
'templateVars'=>array_values($templateVars),
'persistentData'=>$persistentData, 'embedPrefix'=>$embedPrefix));
array('source'=>$source, 'format'=>$format, 'options'=>$options,
'persistentData'=>$persistentData));
if (is_soap_fault($return)) {
return $return;
}
$templateVars = array();
if (!empty($return->templateVars)) {
foreach ($return->templateVars as $var) {
$templateVars[$var->identifier] = $var->values;
}
}
$return->templateVars = $templateVars;
$responses = array();
if (!empty($return->correctResponses)) {
foreach ($return->correctResponses as $var) {
@ -189,24 +151,20 @@ function rqp_session_info($connection, $source, $format='', $persistentData='',
* @param SoapClient $connection The URL of the RQP server that we want to connect to
* @param string $source Item source
* @param anyURI $format Item format
* @param array $options Options array
* @param string $persistentData String giving the state of the item session
* @param string $embedPrefix
* @param array $responses Student responses from the form elements
* @param boolean $advanceState Should the item be advanced to the next state?
* @param anyURI $renderFormat
* @param array $templateVars Associative array of template variables
* @param anyURI $mediaBase
* @param anyURI $appletBase
* @param anyURI $modalFormat
* @param array $inputData Array of responses
* @param array $directives Array of directives
* @param array $mimetypes Array of mime types orederd by preference
* @param string $namePrefix
* @param anyURI $itemBase
* @param anyURI $resourceBase
* @param anyURI tempfileBase
* @return object Object holding the return parameters or a SoapFault.
*/
function rqp_render($connection, $source, $format='', $persistentData='',
$embedPrefix='', $responses=array(), $advanceState=true, $renderFormat='',
$templateVars=array(), $mediaBase='', $appletBase='',
$modalFormat='', $index=0) {
// make an array of key-value pairs from the template vars array
array_walk($templateVars, create_function('&$val, $key',
'$val = (object) array(\'identifier\'=>$key, \'values\'=>$val);'));
function rqp_render($connection, $source, $format='', $options=array(), $persistentData='',
$inputData=array(), $directives=array(), $mimetypes=array(), $namePrefix='',
$itemBase='', $resourceBase='', $tempfileBase='') {
// make an array of name-value pairs from the responses array
array_walk($responses, create_function('&$val, $key',

View File

@ -2,10 +2,10 @@
// This page lists all the available RQP question types
require_once('../../../../config.php');
require_once($CFG->dirroot . '/config.php');
require_once($CFG->libdir.'/tablelib.php');
require_once('lib.php');
require_once('remote.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/lib.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/remote.php');
$info = optional_param('info', 0, PARAM_INT); // id of server for which to show info
$delete = optional_param('delete', 0, PARAM_INT); // id of server to delete

View File

@ -4,11 +4,11 @@
if (class_exists('SoapClient')) {
// Use the native PHP5 support
require_once('uni_soap.php5');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/uni_soap.php5');
}
else{
// Use nuSOAP instead
require_once('nusoap.php');
require_once($CFG->dirroot . '/mod/quiz/questiontypes/rqp/nusoap.php');
function make_soap_fault($faultcode, $faultstring, $faultactor='', $detail='', $faultname='', $headerfault='') {
return new soap_fault($faultcode, $faultactor, $faultstring, $detail);

View File

@ -212,10 +212,10 @@ class quiz_shortanswer_qtype extends quiz_default_questiontype {
$replace = array('\\\\', '\+', '\(', '\)', '\[', '\]', '\-');
if (strpos(' '.$response1, '*')) {
$answer0 = str_replace('\*','@@@@@@',$response1);
$answer0 = str_replace('*','.*',$response1);
$answer0 = str_replace($search, $replace, $response1);
$answer0 = str_replace('@@@@@@', '\*',$response1);
$response1 = str_replace('\*','@@@@@@',$response1);
$response1 = str_replace('*','.*',$response1);
$response1 = str_replace($search, $replace, $response1);
$response1 = str_replace('@@@@@@', '\*',$response1);
if (ereg('^'.$response1.'$', $response0)) {
return true;