29        $this->db = 
$DIC->database();
 
   30        $this->
user = $DIC->user();
 
   31        $this->assignment = $a_assignment;
 
   32        $this->assignment_id = $a_assignment->
getId();
 
   40        $set = 
$ilDB->query(
"SELECT count(*) cnt" .
 
   41            " FROM exc_assignment_peer" .
 
   42            " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer"));
 
   43        $cnt = 
$ilDB->fetchAssoc($set);
 
   44        return (
bool) $cnt[
"cnt"];
 
   54        $set = 
$ilDB->query(
"SELECT DISTINCT(user_id)" .
 
   55            " FROM exc_returned" .
 
   56            " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
   57            " AND (filename IS NOT NULL OR atext IS NOT NULL)");
 
   58        while ($row = 
$ilDB->fetchAssoc($set)) {
 
   59            $user_ids[] = $row[
"user_id"];
 
   70        if (!$this->assignment->afterDeadlineStrict()) {
 
   77            include_once(
"./Modules/Exercise/PeerReview/class.ExcPeerReviewDistribution.php");
 
   78            $distribution = new \ILIAS\Exercise\PeerReview\ExcPeerReviewDistribution($user_ids, $this->assignment->getPeerReviewMin());
 
   80            foreach ($user_ids as $rater_id) {
 
   81                foreach ($distribution->getPeersOfRater($rater_id) as $peer_id) {
 
   82                    $ilDB->manipulate(
"INSERT INTO exc_assignment_peer" .
 
   83                        " (ass_id, giver_id, peer_id)" .
 
   84                        " VALUES (" . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
   85                        ", " . 
$ilDB->quote($rater_id, 
"integer") .
 
   86                        ", " . 
$ilDB->quote($peer_id, 
"integer") . 
")");
 
  101                foreach (array_keys($reviews) as $giver_id) {
 
  104                    foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
 
  105                        $crit->setPeerReviewContext($this->assignment, $giver_id, $peer_id);
 
  106                        $crit->resetReview();
 
  112            $ilDB->manipulate(
"DELETE FROM exc_assignment_peer" .
 
  113                " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer"));
 
  125            $peer_ids = $invalid_peer_ids = $invalid_giver_ids = $all_reviews = array();
 
  127                $peer_ids[] = $peer_id;
 
  129                if (!in_array($peer_id, $all_valid) ||
 
  130                    !in_array($peer_id, $all_exc)) {
 
  131                    $invalid_peer_ids[] = $peer_id;
 
  133                foreach ($reviews as $giver_id => 
$valid) {
 
  134                    if (!in_array($giver_id, $all_valid) ||
 
  135                        !in_array($peer_id, $all_exc)) {
 
  136                        $invalid_giver_ids[] = $giver_id;
 
  138                        $all_reviews[$peer_id][$giver_id] = 
$valid;
 
  142            $invalid_giver_ids = array_unique($invalid_giver_ids);
 
  144            $missing_user_ids = array();
 
  145            foreach ($all_valid as $user_id) {
 
  147                if (!in_array($user_id, $peer_ids)) {
 
  148                    $missing_user_ids[] = $user_id;
 
  152            $not_returned_ids = array();
 
  153            foreach ($all_exc as $user_id) {
 
  154                if (!in_array($user_id, $all_valid)) {
 
  155                    $not_returned_ids[] = $user_id;
 
  160                "invalid" => (
sizeof($missing_user_ids) ||
 
  161                    sizeof($invalid_peer_ids) ||
 
  162                    sizeof($invalid_giver_ids)),
 
  163                "missing_user_ids" => $missing_user_ids,
 
  164                "not_returned_ids" => $not_returned_ids,
 
  165                "invalid_peer_ids" => $invalid_peer_ids,
 
  166                "invalid_giver_ids" => $invalid_giver_ids,
 
  167                "reviews" => $all_reviews);
 
  175            if ($item[
"peer_id"] == $a_peer_id) {
 
  182        $data = $peer[
"pcomment"];
 
  184            $items = @unserialize(
$data);
 
  185            if (!is_array($items)) {
 
  187                $items = array(
"text" => 
$data);
 
  201            $set = 
$ilDB->query(
"SELECT *" .
 
  202                " FROM exc_assignment_peer" .
 
  203                " WHERE giver_id = " . 
$ilDB->quote($a_user_id, 
"integer") .
 
  204                " AND ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
  205                " ORDER BY peer_id");
 
  206            while ($row = 
$ilDB->fetchAssoc($set)) {
 
  207                $row[
"seq"] = ++$idx;
 
  218            if ($peer[
"peer_id"] == $a_peer_id) {
 
  230        $data = $a_data[
"pcomment"];
 
  232            $values = @unserialize(
$data);
 
  233            if (!is_array($values)) {
 
  235                $values = array(
"text" => 
$data);
 
  246        foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
 
  247            $crit_id = $crit->getId()
 
  250            $crit->setPeerReviewContext(
 
  255            if (!$crit->validate($values[$crit_id])) {
 
  258            if ($crit->hasValue($values[$crit_id])) {
 
  273        $set = 
$ilDB->query(
"SELECT *" .
 
  274            " FROM exc_assignment_peer" .
 
  275            " WHERE peer_id = " . 
$ilDB->quote($a_user_id, 
"integer") .
 
  276            " AND ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
  277            " ORDER BY peer_id");
 
  278        while ($row = 
$ilDB->fetchAssoc($set)) {
 
  279            if (!$a_only_valid ||
 
  283                $row[
"seq"] = ++$idx;
 
  297        $set = 
$ilDB->query(
"SELECT *" .
 
  298            " FROM exc_assignment_peer" .
 
  299            " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
  300            " ORDER BY peer_id");
 
  301        while ($row = 
$ilDB->fetchAssoc($set)) {
 
  303            if (!$a_only_valid ||
 
  305                $res[$row[
"peer_id"]][$row[
"giver_id"]] = 
$valid;
 
  317        $set = 
$ilDB->query(
"SELECT ass_id" .
 
  318            " FROM exc_assignment_peer" .
 
  319            " WHERE giver_id = " . 
$ilDB->quote(
$ilUser->getId(), 
"integer") .
 
  320            " AND peer_id = " . 
$ilDB->quote($a_peer_id, 
"integer") .
 
  321            " AND ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer"));
 
  322        $row = 
$ilDB->fetchAssoc($set);
 
  323        return (
bool) $row[
"ass_id"];
 
  331        $ilDB->manipulate(
"UPDATE exc_assignment_peer" .
 
  333            " WHERE giver_id = " . 
$ilDB->quote(
$ilUser->getId(), 
"integer") .
 
  334            " AND peer_id = " . 
$ilDB->quote($a_peer_id, 
"integer") .
 
  335            " AND ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer"));
 
  344            "pcomment" => serialize($a_values),
 
  345            "peer_id" => $a_peer_id,
 
  350        $sql = 
"UPDATE exc_assignment_peer" .
 
  352            ",pcomment  = " . 
$ilDB->quote(serialize($a_values), 
"text") .
 
  353            ",is_valid = " . 
$ilDB->quote((
int) 
$valid, 
"integer") .
 
  354            " WHERE giver_id = " . 
$ilDB->quote(
$ilUser->getId(), 
"integer") .
 
  355            " AND peer_id = " . 
$ilDB->quote($a_peer_id, 
"integer") .
 
  356            " AND ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer");
 
  358        $ilDB->manipulate($sql);
 
  372        $set = 
$ilDB->query(
"SELECT *" .
 
  373            " FROM exc_assignment_peer" .
 
  374            " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer") .
 
  375            " AND giver_id = " . 
$ilDB->quote($a_user_id, 
"integer"));
 
  376        while ($row = 
$ilDB->fetchAssoc($set)) {
 
  377            if (!(
bool) $a_validate ||
 
  391        $set = 
$ilDB->query(
"SELECT COUNT(DISTINCT(user_id)) cnt" .
 
  392            " FROM exc_returned" .
 
  393            " WHERE ass_id = " . 
$ilDB->quote($this->assignment_id, 
"integer"));
 
  394        $cnt = 
$ilDB->fetchAssoc($set);
 
  395        $cnt = (int) $cnt[
"cnt"];
 
  409        if (!$this->assignment->getPeerReviewSimpleUnlock()) {
 
  410            $needed = $this->assignment->getPeerReviewMin();
 
  416        $min = min($max, $needed);
 
  429        if (!$this->assignment->afterDeadlineStrict()) {
 
  441        switch ($this->assignment->getPeerReviewValid()) {
 
  443                return (
bool) $no_of_feedbacks;
 
  447                $min = min($max, $this->assignment->getPeerReviewMin());
 
  449                return (($min - $no_of_feedbacks) < 1);
 
  461            "SELECT DISTINCT(giver_id) FROM exc_assignment_peer " .
 
  462            " WHERE ass_id = " . 
$ilDB->quote($a_ass_id, 
"integer") .
 
  463            " AND tstamp is NULL" 
  466        while ($row = 
$ilDB->fetchAssoc($set)) {
 
  467            array_push($user_ids, $row[
"giver_id"]);
 
An exception for terminatinating execution or to throw for unit testing.
getId()
Get assignment id.
const PEER_REVIEW_VALID_NONE
const PEER_REVIEW_VALID_ALL
const PEER_REVIEW_VALID_ONE
countGivenFeedback($a_validate=true, $a_user_id=null)
hasPeerReviewAccess($a_peer_id)
getAllPeerReviews($a_only_valid=true)
isFeedbackValidForPassed($a_user_id)
updatePeerReview($a_peer_id, array $a_values)
getMaxPossibleFeedbacks()
getPeerReviewsByGiver($a_user_id)
__construct(ilExAssignment $a_assignment)
getPeerReviewsByPeerId($a_user_id, $a_only_valid=false)
static lookupGiversWithPendingFeedback($a_ass_id)
validatePeerReview(array $a_data)
validatePeerReviewGroups()
getValidPeerReviewUsers()
updatePeerReviewTimestamp($a_peer_id)
getPeerMaskedId($a_giver_id, $a_peer_id)
getNumberOfMissingFeedbacksForReceived()
getPeerReviewValues($a_giver_id, $a_peer_id)
static _getMembers($a_obj_id)
static getLogger($a_component_id)
Get component logger.
static now()
Return current timestamp in Y-m-d H:i:s format.
foreach($_POST as $key=> $value) $res