Public Member Functions | Data Fields

ASS_MarkSchema Class Reference

A class defining mark schemas for assessment test objects. More...

Public Member Functions

 ASS_MarkSchema ()
 ASS_MarkSchema constructor.
 createSimpleSchema ($txt_failed_short="failed", $txt_failed_official="failed", $percentage_failed=0, $failed_passed=0, $txt_passed_short="passed", $txt_passed_official="passed", $percentage_passed=50, $passed_passed=1)
 Creates a simple mark schema for two mark steps.
 addMarkStep ($txt_short="", $txt_official="", $percentage=0, $passed=0)
 Adds a mark step to the mark schema.
 saveToDb ($test_id)
 Saves a ASS_MarkSchema object to a database.
 loadFromDb ($test_id)
 Loads a ASS_MarkSchema object from a database.
 flush ()
 Empties the mark schema and removes all mark steps.
 sort ()
 Sorts the mark schema using the minimum level values.
 deleteMarkStep ($index=0)
 Deletes a mark step.
 deleteMarkSteps ($indexes)
 Deletes multiple mark steps.
 getMatchingMark ($percentage)
 Returns the matching mark for a given percentage.
 checkMarks ()
 Check the marks for consistency.
 logAction ($test_id, $logtext="")
 Logs an action into the Test&Assessment log.

Data Fields

 $mark_steps

Detailed Description

A class defining mark schemas for assessment test objects.

A class defining mark schemas for assessment test objects

Author:
Helmut Schottmüller <helmut.schottmueller@mac.com>
Version:
Id:
class.assMarkSchema.php 11125 2006-06-10 08:02:02Z hschottm

class.assMarkSchema.php Assessment

Definition at line 36 of file class.assMarkSchema.php.


Member Function Documentation

ASS_MarkSchema::addMarkStep ( txt_short = "",
txt_official = "",
percentage = 0,
passed = 0 
)

Adds a mark step to the mark schema.

Adds a mark step to the mark schema. A new ASS_Mark object will be created and stored in the $mark_steps array.

Parameters:
string $txt_short The short text of the mark
string $txt_official The official text of the mark
double $percentage The minimum percentage level reaching the mark
integer $passed The passed status of the mark (0 = failed, 1 = passed) public
See also:
$mark_steps

Definition at line 105 of file class.assMarkSchema.php.

Referenced by createSimpleSchema(), and loadFromDb().

  {
                include_once "./assessment/classes/class.assMark.php";
    $mark = new ASS_Mark($txt_short, $txt_official, $percentage, $passed);
    array_push($this->mark_steps, $mark);
  }

Here is the caller graph for this function:

ASS_MarkSchema::ASS_MarkSchema (  ) 

ASS_MarkSchema constructor.

The constructor takes possible arguments an creates an instance of the ASS_MarkSchema object.

public

Definition at line 54 of file class.assMarkSchema.php.

  {
    $this->mark_steps = array();
  }

ASS_MarkSchema::checkMarks (  ) 

Check the marks for consistency.

Check the marks for consistency

Returns:
mixed true if the check succeeds, als a text string containing a language string for an error message public
See also:
$mark_steps

Definition at line 355 of file class.assMarkSchema.php.

        {
                $minimum_percentage = 100;
                $passed = 0;
    for ($i = 0; $i < count($this->mark_steps); $i++) {
                        if ($this->mark_steps[$i]->getMinimumLevel() < $minimum_percentage)
                        {
                                $minimum_percentage = $this->mark_steps[$i]->getMinimumLevel();
                        }
                        if ($this->mark_steps[$i]->getPassed())
                        {
                                $passed++;
                        }
    }
                if ($minimum_percentage != 0)
                {
                        return "min_percentage_ne_0";
                }
                if ($passed == 0)
                {
                        return "no_passed_mark";
                }
                return true;
        }

ASS_MarkSchema::createSimpleSchema ( txt_failed_short = "failed",
txt_failed_official = "failed",
percentage_failed = 0,
failed_passed = 0,
txt_passed_short = "passed",
txt_passed_official = "passed",
percentage_passed = 50,
passed_passed = 1 
)

Creates a simple mark schema for two mark steps.

Creates a simple mark schema for two mark steps: failed an passed.

Parameters:
string $txt_failed_short The short text of the failed mark
string $txt_failed_official The official text of the failed mark
double $percentage_failed The minimum percentage level reaching the failed mark
integer $failed_passed Indicates the passed status of the failed mark (0 = failed, 1 = passed)
string $txt_passed_short The short text of the passed mark
string $txt_passed_official The official text of the passed mark
double $percentage_passed The minimum percentage level reaching the passed mark
integer $passed_passed Indicates the passed status of the passed mark (0 = failed, 1 = passed) public
See also:
$mark_steps

Definition at line 76 of file class.assMarkSchema.php.

References addMarkStep(), and flush().

  {
    $this->flush();
    $this->addMarkStep($txt_failed_short, $txt_failed_official, $percentage_failed, $failed_passed);
    $this->addMarkStep($txt_passed_short, $txt_passed_official, $percentage_passed, $passed_passed);
  }

Here is the call graph for this function:

ASS_MarkSchema::deleteMarkStep ( index = 0  ) 

Deletes a mark step.

Deletes the mark step with a given index.

Parameters:
integer $index The index of the mark step to delete public
See also:
$mark_steps

Definition at line 301 of file class.assMarkSchema.php.

                                      {
    if ($index < 0) return;
    if (count($this->mark_steps) < 1) return;
    if ($index >= count($this->mark_steps)) return;
    unset($this->mark_steps[$index]);
    $this->mark_steps = array_values($this->mark_steps);
  }

ASS_MarkSchema::deleteMarkSteps ( indexes  ) 

Deletes multiple mark steps.

Deletes multiple mark steps using their index positions.

Parameters:
array $indexes An array with all the index positions to delete public
See also:
$mark_steps

Definition at line 318 of file class.assMarkSchema.php.

References $key.

                                     {
    foreach ($indexes as $key => $index) {
      if (!(($index < 0) or (count($this->mark_steps) < 1))) {
        unset($this->mark_steps[$index]);
      }
    }
    $this->mark_steps = array_values($this->mark_steps);
  }

ASS_MarkSchema::flush (  ) 

Empties the mark schema and removes all mark steps.

Empties the mark schema and removes all mark steps

public

See also:
$mark_steps

Definition at line 264 of file class.assMarkSchema.php.

Referenced by createSimpleSchema().

                   {
    $this->mark_steps = array();
  }

Here is the caller graph for this function:

ASS_MarkSchema::getMatchingMark ( percentage  ) 

Returns the matching mark for a given percentage.

Returns the matching mark for a given percentage

Parameters:
double $percentage A percentage value between 0 and 100
Returns:
mixed The mark object, if a matching mark was found, false otherwise public
See also:
$mark_steps

Definition at line 337 of file class.assMarkSchema.php.

                                        {
    for ($i = count($this->mark_steps) - 1; $i >= 0; $i--) {
      if ($percentage >= $this->mark_steps[$i]->getMinimumLevel()) {
        return $this->mark_steps[$i];
      }
    }
                return false;
  }

ASS_MarkSchema::loadFromDb ( test_id  ) 

Loads a ASS_MarkSchema object from a database.

Loads a ASS_MarkSchema object from a database (experimental)

Parameters:
integer $test_id A unique key which defines the test in the database public

Definition at line 239 of file class.assMarkSchema.php.

References $data, $query, $result, and addMarkStep().

  {
                global $ilDB;
                
    if (!$test_id) return;
    $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
      $ilDB->quote($test_id)
    );

    $result = $ilDB->query($query);
    if (strcmp(strtolower(get_class($result)), db_result) == 0) {
      while ($data = $result->fetchRow(DB_FETCHMODE_OBJECT)) {
        $this->addMarkStep($data->short_name, $data->official_name, $data->minimum_level, $data->passed);
      }
    }
  }

Here is the call graph for this function:

ASS_MarkSchema::logAction ( test_id,
logtext = "" 
)

Logs an action into the Test&Assessment log.

Logs an action into the Test&Assessment log

Parameters:
integer $test_id The database id of the test
string $logtext The log text public

Definition at line 389 of file class.assMarkSchema.php.

References $_GET, ilObjAssessmentFolder::_addLog(), and ilObjTest::_getObjectIDFromTestID().

Referenced by saveToDb().

        {
                global $ilUser;
                include_once "./classes/class.ilObjAssessmentFolder.php";
                ilObjAssessmentFolder::_addLog($ilUser->id, ilObjTest::_getObjectIDFromTestID($test_id), $logtext, "", "", TRUE, $_GET["ref_id"]);
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ASS_MarkSchema::saveToDb ( test_id  ) 

Saves a ASS_MarkSchema object to a database.

Saves a ASS_MarkSchema object to a database (experimental)

Parameters:
integer $test_id The database id of the related test public

Definition at line 125 of file class.assMarkSchema.php.

References $key, $lng, $query, $result, $row, ilObjAssessmentFolder::_enabledAssessmentLogging(), ilObjAssessmentFolder::_getLogLanguage(), and logAction().

  {
                global $lng;
                global $ilDB;

                $oldmarks = array();
                include_once "./classes/class.ilObjAssessmentFolder.php";
                if (ilObjAssessmentFolder::_enabledAssessmentLogging())
                {
                        $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
                                $ilDB->quote($test_id)
                        );
                        $result = $ilDB->query($query);
                        if ($result->numRows())
                        {
                                while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
                                {
                                        $oldmarks[$row["minimum_level"]] = $row;
                                }
                        }
                }
                
    if (!$test_id) return;
    // Delete all entries
    $query = sprintf("DELETE FROM tst_mark WHERE test_fi = %s",
      $ilDB->quote($test_id)
    );
    $result = $ilDB->query($query);
    if (count($this->mark_steps) == 0) return;
    
    // Write new datasets
    foreach ($this->mark_steps as $key => $value) 
                {
      $query = sprintf("INSERT INTO tst_mark (mark_id, test_fi, short_name, official_name, minimum_level, passed, TIMESTAMP) VALUES (NULL, %s, %s, %s, %s, %s, NULL)",
        $ilDB->quote($test_id),
        $ilDB->quote($value->getShortName()), 
        $ilDB->quote($value->getOfficialName()), 
        $ilDB->quote($value->getMinimumLevel()),
        $ilDB->quote(sprintf("%d", $value->getPassed()))
      );
      $result = $ilDB->query($query);
      if ($result == DB_OK) {
      }
    }
                if (ilObjAssessmentFolder::_enabledAssessmentLogging())
                {
                        $query = sprintf("SELECT * FROM tst_mark WHERE test_fi = %s ORDER BY minimum_level",
                                $ilDB->quote($test_id)
                        );
                        $result = $ilDB->query($query);
                        $newmarks = array();
                        if ($result->numRows())
                        {
                                while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
                                {
                                        $newmarks[$row["minimum_level"]] = $row;
                                }
                        }
                        foreach ($oldmarks as $level => $row)
                        {
                                if (array_key_exists($level, $newmarks))
                                {
                                        $difffields = array();
                                        foreach ($row as $key => $value)
                                        {
                                                if (strcmp($value, $newmarks[$level][$key]) != 0)
                                                {
                                                        switch ($key)
                                                        {
                                                                case "mark_id":
                                                                case "TIMESTAMP":
                                                                        break;
                                                                default:
                                                                        array_push($difffields, "$key: $value => " .$newmarks[$level][$key]); 
                                                                        break;
                                                        }
                                                }
                                        }
                                        if (count($difffields))
                                        {
                                                $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_changed", ilObjAssessmentFolder::_getLogLanguage()) . ": " . join($difffields, ", "));
                                        }
                                }
                                else
                                {
                                        $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_removed", ilObjAssessmentFolder::_getLogLanguage()) . ": " . 
                                                $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]);                                              
                                }
                        }
                        foreach ($newmarks as $level => $row)
                        {
                                if (!array_key_exists($level, $oldmarks))
                                {
                                        $this->logAction($test_id, $lng->txtlng("assessment", "log_mark_added", ilObjAssessmentFolder::_getLogLanguage()) . ": " . 
                                                $lng->txtlng("assessment", "tst_mark_minimum_level", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["minimum_level"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_short_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["short_name"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_official_form", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["official_name"] . ", " .
                                                $lng->txtlng("assessment", "tst_mark_passed", ilObjAssessmentFolder::_getLogLanguage()) . " = " . $row["passed"]);
                                }
                        }
                }
  }

Here is the call graph for this function:

ASS_MarkSchema::sort (  ) 

Sorts the mark schema using the minimum level values.

Sorts the mark schema using the minimum level values

public

See also:
$mark_steps

Definition at line 276 of file class.assMarkSchema.php.

References $res.

                  {
    function level_sort($a, $b) {
      if ($a->getMinimumLevel() == $b->getMinimumLevel()) {
        $res = strcmp($a->getShortName(), $b->getShortName());
        if ($res == 0) {
          return strcmp($a->getOfficialName(), $b->getOfficialName());
        } else {
          return $res;
        }
      }
      return ($a->getMinimumLevel() < $b->getMinimumLevel()) ? -1 : 1;
    }
    
    usort($this->mark_steps, 'level_sort');
  }


Field Documentation

ASS_MarkSchema::$mark_steps

Definition at line 45 of file class.assMarkSchema.php.


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