<?php
class Homework
{
/* Usunięto konstruktor i inne metody z wcześniejszych przykładów */
/*
  Pobranie powiązanych prac domowych
  Przypisanie $force wartości true, aby wymusić na metodzie ponowne pobranie elementów potomnych
*/
function getSubmissions($force = false)
{
    // Niezbędny jest identyfikator posta
    if(empty($this->id))
        return array();

    // Czy prace domowe zostały pobrane?
    if(!empty($this->submissions) && !$force)
        return $this->submissions;

    // Mamy prace domowe
    $this->submissions = get_children(array(
        'post_parent' => $this->id,
        'post_type' => 'submissions',
        'post_status' => 'published'
    ));

    // Sprawdzamy, czy mamy do czynienia z tablicą
    if(empty($this->submissions))
        $this->submissions = array();

    return $this->submissions;
}

/*
    Ustalenie ocen
*/
function doFlatCurve($maxscore = 100)
{
    $this->getSubmissions();

    // Ustalenie najlepszej oceny
    $highscore = 0;
    foreach($this->submissions as $submission)
    {
        $highscore = max($submission->score, $highscore);
    }

    // Ustalenie krzywej
    $curve = $maxscore - $highscore;

    // Poprawienie niższych ocen
    foreach($this->submissions as $submission)
    {
        
            update_post_meta(
                $submission->ID,
                "score",
                min( $maxscore, $submission->score + $curve )
            );
        }
    }
}
?>
