ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilAssQuestionUserSolutionAdopter Class Reference
+ Collaboration diagram for ilAssQuestionUserSolutionAdopter:

Public Member Functions

 __construct (ilDB $db, ilSetting $assSettings, $isAssessmentLogEnabled)
 
 getUserId ()
 
 setUserId ($userId)
 
 getActiveId ()
 
 setActiveId ($activeId)
 
 getTargetPass ()
 
 setTargetPass ($targetPass)
 
 getQuestionIds ()
 
 setQuestionIds ($questionIds)
 
 perform ()
 

Protected Member Functions

 adoptQuestionAnswer ($questionId)
 
 resetTargetSolution ($questionId)
 
 resetTargetResult ($questionId)
 
 adoptSourceSolution ($questionId)
 
 adoptSourceResult ($questionId, $sourcePass)
 
 getPreparedDeleteSolutionRecordsStatement ()
 
 getPreparedSelectSolutionRecordsStatement ()
 
 getPreparedInsertSolutionRecordStatement ()
 
 getPreparedDeleteResultRecordStatement ()
 
 getPreparedSelectResultRecordStatement ()
 
 getPreparedInsertResultRecordStatement ()
 

Protected Attributes

 $db
 
 $processLockerFactory
 
 $userId
 
 $activeId
 
 $targetPass
 
 $questionIds
 

Static Protected Attributes

static $preparedDeleteSolutionRecordsStatement = null
 
static $preparedSelectSolutionRecordsStatement = null
 
static $preparedInsertSolutionRecordStatement = null
 
static $preparedDeleteResultRecordStatement = null
 
static $preparedSelectResultRecordStatement = null
 
static $preparedInsertResultRecordStatement = null
 

Detailed Description

Definition at line 11 of file class.ilAssQuestionUserSolutionAdopter.php.

Constructor & Destructor Documentation

◆ __construct()

ilAssQuestionUserSolutionAdopter::__construct ( ilDB  $db,
ilSetting  $assSettings,
  $isAssessmentLogEnabled 
)
Parameters
ilDB$db
ilSetting$assSettings
bool$isAssessmentLogEnabled

Definition at line 78 of file class.ilAssQuestionUserSolutionAdopter.php.

79 {
80 $this->db = $db;
81
82 $this->userId = null;
83 $this->activeId = null;
84 $this->targetPass = null;
85 $this->questionIds = array();
86
87 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionProcessLockerFactory.php';
88 $this->processLockerFactory = new ilAssQuestionProcessLockerFactory($assSettings, $db);
89 $this->processLockerFactory->setAssessmentLogEnabled($isAssessmentLogEnabled);
90 }

References $db.

Member Function Documentation

◆ adoptQuestionAnswer()

ilAssQuestionUserSolutionAdopter::adoptQuestionAnswer (   $questionId)
protected

Definition at line 171 of file class.ilAssQuestionUserSolutionAdopter.php.

172 {
173 $this->resetTargetSolution($questionId);
174 $this->resetTargetResult($questionId);
175
176 $sourcePass = $this->adoptSourceSolution($questionId);
177
178 if( $sourcePass !== null )
179 {
180 $this->adoptSourceResult($questionId, $sourcePass);
181 }
182 }

References adoptSourceResult(), adoptSourceSolution(), resetTargetResult(), and resetTargetSolution().

Referenced by perform().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adoptSourceResult()

ilAssQuestionUserSolutionAdopter::adoptSourceResult (   $questionId,
  $sourcePass 
)
protected

Definition at line 231 of file class.ilAssQuestionUserSolutionAdopter.php.

232 {
233 $res = $this->db->execute(
235 array($this->getActiveId(), $questionId, $sourcePass)
236 );
237
238 $row = $this->db->fetchAssoc($res);
239
240 $resultId = $this->db->nextId('tst_test_result');
241
242 $this->db->execute($this->getPreparedInsertResultRecordStatement(), array(
243 $resultId, $this->getActiveId(), $questionId, $this->getTargetPass(), time(),
244 $row['points'], $row['manual'], $row['hint_count'], $row['hint_points'], $row['answered']
245 ));
246 }

References $res, $row, getActiveId(), getPreparedInsertResultRecordStatement(), getPreparedSelectResultRecordStatement(), and getTargetPass().

Referenced by adoptQuestionAnswer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adoptSourceSolution()

ilAssQuestionUserSolutionAdopter::adoptSourceSolution (   $questionId)
protected

Definition at line 200 of file class.ilAssQuestionUserSolutionAdopter.php.

201 {
202 $res = $this->db->execute(
204 array($this->getActiveId(), $questionId, $this->getTargetPass())
205 );
206
207 $sourcePass = null;
208
209 while($row = $this->db->fetchAssoc($res))
210 {
211 if($sourcePass === null)
212 {
213 $sourcePass = $row['pass'];
214 }
215 elseif($row['pass'] < $sourcePass)
216 {
217 break;
218 }
219
220 $solutionId = $this->db->nextId('tst_solutions');
221
222 $this->db->execute($this->getPreparedInsertSolutionRecordStatement(), array(
223 $solutionId, $this->getActiveId(), $questionId, $this->getTargetPass(), time(),
224 $row['points'], $row['value1'], $row['value2']
225 ));
226 }
227
228 return $sourcePass;
229 }

References $res, $row, getActiveId(), getPreparedInsertSolutionRecordStatement(), getPreparedSelectSolutionRecordsStatement(), and getTargetPass().

Referenced by adoptQuestionAnswer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getActiveId()

ilAssQuestionUserSolutionAdopter::getActiveId ( )
Returns
int

Definition at line 111 of file class.ilAssQuestionUserSolutionAdopter.php.

References $activeId.

Referenced by adoptSourceResult(), adoptSourceSolution(), resetTargetResult(), and resetTargetSolution().

+ Here is the caller graph for this function:

◆ getPreparedDeleteResultRecordStatement()

ilAssQuestionUserSolutionAdopter::getPreparedDeleteResultRecordStatement ( )
protected

Definition at line 298 of file class.ilAssQuestionUserSolutionAdopter.php.

299 {
300 if( self::$preparedDeleteResultRecordStatement === null )
301 {
302 self::$preparedDeleteResultRecordStatement = $this->db->prepareManip(
303 "DELETE FROM tst_test_result WHERE active_fi = ? AND question_fi = ? AND pass = ?",
304 array('integer', 'integer', 'integer')
305 );
306 }
307
309 }

References $preparedDeleteResultRecordStatement.

Referenced by resetTargetResult().

+ Here is the caller graph for this function:

◆ getPreparedDeleteSolutionRecordsStatement()

ilAssQuestionUserSolutionAdopter::getPreparedDeleteSolutionRecordsStatement ( )
protected

Definition at line 248 of file class.ilAssQuestionUserSolutionAdopter.php.

249 {
250 if( self::$preparedDeleteSolutionRecordsStatement === null )
251 {
252 self::$preparedDeleteSolutionRecordsStatement = $this->db->prepareManip(
253 "DELETE FROM tst_solutions WHERE active_fi = ? AND question_fi = ? AND pass = ?",
254 array('integer', 'integer', 'integer')
255 );
256 }
257
259 }

References $preparedDeleteSolutionRecordsStatement.

Referenced by resetTargetSolution().

+ Here is the caller graph for this function:

◆ getPreparedInsertResultRecordStatement()

ilAssQuestionUserSolutionAdopter::getPreparedInsertResultRecordStatement ( )
protected

Definition at line 328 of file class.ilAssQuestionUserSolutionAdopter.php.

329 {
330 if( self::$preparedInsertResultRecordStatement === null )
331 {
332 $query = "
333 INSERT INTO tst_test_result (
334 test_result_id, active_fi, question_fi, pass, tstamp,
335 points, manual, hint_count, hint_points, answered
336 ) VALUES (
337 ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
338 )
339 ";
340
341 self::$preparedInsertResultRecordStatement = $this->db->prepareManip(
342 $query, array('integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'integer')
343 );
344 }
345
347 }

References $preparedInsertResultRecordStatement, and $query.

Referenced by adoptSourceResult().

+ Here is the caller graph for this function:

◆ getPreparedInsertSolutionRecordStatement()

ilAssQuestionUserSolutionAdopter::getPreparedInsertSolutionRecordStatement ( )
protected

Definition at line 278 of file class.ilAssQuestionUserSolutionAdopter.php.

279 {
280 if( self::$preparedInsertSolutionRecordStatement === null )
281 {
282 $query = "
283 INSERT INTO tst_solutions (
284 solution_id, active_fi, question_fi, pass, tstamp, points, value1, value2
285 ) VALUES (
286 ?, ?, ?, ?, ?, ?, ?, ?
287 )
288 ";
289
290 self::$preparedInsertSolutionRecordStatement = $this->db->prepareManip(
291 $query, array('integer', 'integer', 'integer', 'integer', 'integer', 'integer', 'text', 'text')
292 );
293 }
294
296 }

References $preparedInsertSolutionRecordStatement, and $query.

Referenced by adoptSourceSolution().

+ Here is the caller graph for this function:

◆ getPreparedSelectResultRecordStatement()

ilAssQuestionUserSolutionAdopter::getPreparedSelectResultRecordStatement ( )
protected

Definition at line 311 of file class.ilAssQuestionUserSolutionAdopter.php.

312 {
313 if( self::$preparedSelectResultRecordStatement === null )
314 {
315 $query = "
316 SELECT points, manual, hint_count, hint_points, answered FROM tst_test_result
317 WHERE active_fi = ? AND question_fi = ? AND pass = ?
318 ";
319
320 self::$preparedSelectResultRecordStatement = $this->db->prepare(
321 $query, array('integer', 'integer', 'integer')
322 );
323 }
324
326 }

References $preparedSelectResultRecordStatement, and $query.

Referenced by adoptSourceResult().

+ Here is the caller graph for this function:

◆ getPreparedSelectSolutionRecordsStatement()

ilAssQuestionUserSolutionAdopter::getPreparedSelectSolutionRecordsStatement ( )
protected

Definition at line 261 of file class.ilAssQuestionUserSolutionAdopter.php.

262 {
263 if( self::$preparedSelectSolutionRecordsStatement === null )
264 {
265 $query = "
266 SELECT pass, points, value1, value2 FROM tst_solutions
267 WHERE active_fi = ? AND question_fi = ? AND pass < ? ORDER BY pass DESC
268 ";
269
270 self::$preparedSelectSolutionRecordsStatement = $this->db->prepare(
271 $query, array('integer', 'integer', 'integer')
272 );
273 }
274
276 }

References $preparedSelectSolutionRecordsStatement, and $query.

Referenced by adoptSourceSolution().

+ Here is the caller graph for this function:

◆ getQuestionIds()

ilAssQuestionUserSolutionAdopter::getQuestionIds ( )
Returns
array

Definition at line 143 of file class.ilAssQuestionUserSolutionAdopter.php.

References $questionIds.

Referenced by perform().

+ Here is the caller graph for this function:

◆ getTargetPass()

ilAssQuestionUserSolutionAdopter::getTargetPass ( )
Returns
int

Definition at line 127 of file class.ilAssQuestionUserSolutionAdopter.php.

References $targetPass.

Referenced by adoptSourceResult(), adoptSourceSolution(), resetTargetResult(), and resetTargetSolution().

+ Here is the caller graph for this function:

◆ getUserId()

ilAssQuestionUserSolutionAdopter::getUserId ( )
Returns
int

Definition at line 95 of file class.ilAssQuestionUserSolutionAdopter.php.

References $userId.

Referenced by perform().

+ Here is the caller graph for this function:

◆ perform()

ilAssQuestionUserSolutionAdopter::perform ( )

Definition at line 156 of file class.ilAssQuestionUserSolutionAdopter.php.

157 {
158 $this->processLockerFactory->setUserId($this->getUserId());
159
160 foreach($this->getQuestionIds() as $questionId)
161 {
162 $this->processLockerFactory->setQuestionId($questionId);
163 $processLocker = $this->processLockerFactory->getLocker();
164
165 $processLocker->requestUserSolutionAdoptLock();
166 $this->adoptQuestionAnswer($questionId);
167 $processLocker->releaseUserSolutionAdoptLock();
168 }
169 }

References adoptQuestionAnswer(), getQuestionIds(), and getUserId().

+ Here is the call graph for this function:

◆ resetTargetResult()

ilAssQuestionUserSolutionAdopter::resetTargetResult (   $questionId)
protected

Definition at line 192 of file class.ilAssQuestionUserSolutionAdopter.php.

193 {
194 $this->db->execute(
196 array($this->getActiveId(), $questionId, $this->getTargetPass())
197 );
198 }

References getActiveId(), getPreparedDeleteResultRecordStatement(), and getTargetPass().

Referenced by adoptQuestionAnswer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetTargetSolution()

ilAssQuestionUserSolutionAdopter::resetTargetSolution (   $questionId)
protected

Definition at line 184 of file class.ilAssQuestionUserSolutionAdopter.php.

185 {
186 $this->db->execute(
188 array($this->getActiveId(), $questionId, $this->getTargetPass())
189 );
190 }

References getActiveId(), getPreparedDeleteSolutionRecordsStatement(), and getTargetPass().

Referenced by adoptQuestionAnswer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setActiveId()

ilAssQuestionUserSolutionAdopter::setActiveId (   $activeId)
Parameters
int$activeId

Definition at line 119 of file class.ilAssQuestionUserSolutionAdopter.php.

120 {
121 $this->activeId = $activeId;
122 }

References $activeId.

◆ setQuestionIds()

ilAssQuestionUserSolutionAdopter::setQuestionIds (   $questionIds)
Parameters
array$questionIds

Definition at line 151 of file class.ilAssQuestionUserSolutionAdopter.php.

152 {
153 $this->questionIds = $questionIds;
154 }

References $questionIds.

◆ setTargetPass()

ilAssQuestionUserSolutionAdopter::setTargetPass (   $targetPass)
Parameters
int$targetPass

Definition at line 135 of file class.ilAssQuestionUserSolutionAdopter.php.

136 {
137 $this->targetPass = $targetPass;
138 }

References $targetPass.

◆ setUserId()

ilAssQuestionUserSolutionAdopter::setUserId (   $userId)
Parameters
int$userId

Definition at line 103 of file class.ilAssQuestionUserSolutionAdopter.php.

104 {
105 $this->userId = $userId;
106 }

References $userId.

Field Documentation

◆ $activeId

ilAssQuestionUserSolutionAdopter::$activeId
protected

Definition at line 61 of file class.ilAssQuestionUserSolutionAdopter.php.

Referenced by getActiveId(), and setActiveId().

◆ $db

ilAssQuestionUserSolutionAdopter::$db
protected

Definition at line 46 of file class.ilAssQuestionUserSolutionAdopter.php.

Referenced by __construct().

◆ $preparedDeleteResultRecordStatement

ilAssQuestionUserSolutionAdopter::$preparedDeleteResultRecordStatement = null
staticprotected

◆ $preparedDeleteSolutionRecordsStatement

ilAssQuestionUserSolutionAdopter::$preparedDeleteSolutionRecordsStatement = null
staticprotected

◆ $preparedInsertResultRecordStatement

ilAssQuestionUserSolutionAdopter::$preparedInsertResultRecordStatement = null
staticprotected

◆ $preparedInsertSolutionRecordStatement

ilAssQuestionUserSolutionAdopter::$preparedInsertSolutionRecordStatement = null
staticprotected

◆ $preparedSelectResultRecordStatement

ilAssQuestionUserSolutionAdopter::$preparedSelectResultRecordStatement = null
staticprotected

◆ $preparedSelectSolutionRecordsStatement

ilAssQuestionUserSolutionAdopter::$preparedSelectSolutionRecordsStatement = null
staticprotected

◆ $processLockerFactory

ilAssQuestionUserSolutionAdopter::$processLockerFactory
protected

Definition at line 51 of file class.ilAssQuestionUserSolutionAdopter.php.

◆ $questionIds

ilAssQuestionUserSolutionAdopter::$questionIds
protected

Definition at line 71 of file class.ilAssQuestionUserSolutionAdopter.php.

Referenced by getQuestionIds(), and setQuestionIds().

◆ $targetPass

ilAssQuestionUserSolutionAdopter::$targetPass
protected

Definition at line 66 of file class.ilAssQuestionUserSolutionAdopter.php.

Referenced by getTargetPass(), and setTargetPass().

◆ $userId

ilAssQuestionUserSolutionAdopter::$userId
protected

Definition at line 56 of file class.ilAssQuestionUserSolutionAdopter.php.

Referenced by getUserId(), and setUserId().


The documentation for this class was generated from the following file: