Esempio n. 1
0
	/** create a new Exercise from scratch.
	# */
	public function createExercise( $userName, $size, $collection_id, $questionLanguages, $answerLanguages, $hide ) {

		# this can be simplified for now...
		# first get a master exercise...
		$fetcher = new OWFetcher();
		$fullSetXML = $fetcher->getFullSetXML_asString( $collection_id, array_merge( $questionLanguages, $answerLanguages ) );
		$fullSet = new DOMDocument();
		$success = $fullSet->loadXML( $fullSetXML );
		if ( !$success ) {
			throw new Exception( "Failed to load category XML from server" );
		}

		$exercise = new Exercise( $fetcher, $fullSet );
		$exercise->setQuestionLanguages( $questionLanguages );
		$exercise->setAnswerLanguages( $answerLanguages );
		$exercise->setHide( $hide );

		# This is the master exercise... which we should now store and 
		# worship. That's for mark II though. 
		# Today we toss it in the trash and just snarf a
		# subset instead. Mean huh?

		$subExercise = $exercise->randSubExercise( $size );
		$this->saveExercise( $subExercise, $userName );
		return $subExercise;
	}
Esempio n. 2
0
	/** On the basis of the subset array provided, create new exercise object */
	public function getSubExercize( $subset ) {
		$dom = new DOMDocument();
		$collection = $dom->createElement( "collection" );
		$dom->appendChild( $collection );
		foreach ( $subset as $dmid ) {
			 # Grab each node from the current full set, $_depth must always start at 0
			 # and ($fetch=false) we just want the current state, 
			 # we can fetch things later at our leisure.
			$questionNode = $this->_getQuestionNode( $dmid, $this->fullSet, 0, false );
			$questionNode = $dom->importNode( $questionNode, true );
			$collection->appendChild( $questionNode );
		}
		$newExercise = new Exercise( $this->fetcher, $dom, $subset );
		$newExercise->setQuestionLanguages( $this->getQuestionLanguages() );
		$newExercise->setAnswerLanguages( $this->getAnswerLanguages() );
		$newExercise->setHide( $this->getHide() );

		return $newExercise;
	}