/**
  * @see Form::readData()
  */
 public function readData()
 {
     parent::readData();
     // read objects
     $this->sponsorList->sqlOffset = ($this->pageNo - 1) * $this->itemsPerPage;
     $this->sponsorList->sqlLimit = $this->itemsPerPage;
     $this->sponsorList->readObjects();
     $this->isSponsor = $this->entry->isSponsor();
     // init sidebar
     $this->sidebar = new ContestSidebar($this->entry, array('sponsorList', 'advertiseSponsor'));
 }
 /**
  * returns all sidebar data in format, which can be cached
  */
 protected function _init()
 {
     // get classes
     $classList = new ContestClassTree();
     $classList->readObjects();
     // get jurys
     if (!$this->contest || $this->contest->isEnabledJury()) {
         $juryList = new ContestJuryList();
         if ($this->contest !== null) {
             $juryList->sqlConditions .= 'contest_jury.contestID = ' . $this->contest->contestID . ' AND contest_jury.state = "accepted" ';
         } else {
             $juryList->sqlJoins .= " INNER JOIN wcf" . WCF_N . "_contest contest ON contest.contestID = contest_jury.contestID ";
             $juryList->sqlConditions .= 'contest.state IN ("scheduled", "closed") AND contest_jury.state = "accepted" ';
         }
         $juryList->sqlOrderBy = 'juryID DESC';
         $juryList->readObjects();
     } else {
         $juryList = null;
     }
     // get participants
     $participantList = new ContestParticipantList();
     if ($this->contest !== null) {
         $participantList->sqlConditions .= 'contest_participant.contestID = ' . $this->contest->contestID . ' AND contest_participant.state = "accepted" ';
     } else {
         $participantList->sqlJoins .= " INNER JOIN wcf" . WCF_N . "_contest contest ON contest.contestID = contest_participant.contestID ";
         $participantList->sqlConditions .= 'contest.state IN ("scheduled", "closed") AND contest_participant.state = "accepted" ';
     }
     $participantList->sqlLimit = 10;
     $participantList->sqlOrderBy = 'participantID DESC';
     $participantList->readObjects();
     // get sponsors
     $sponsorList = new ContestSponsorList();
     if ($this->contest !== null) {
         $sponsorList->sqlConditions .= 'contest_sponsor.contestID = ' . $this->contest->contestID . ' AND contest_sponsor.state = "accepted" ';
     } else {
         $sponsorList->sqlJoins .= " INNER JOIN wcf" . WCF_N . "_contest contest ON contest.contestID = contest_sponsor.contestID ";
         $sponsorList->sqlConditions .= 'contest.state IN ("scheduled", "closed") AND contest_sponsor.state = "accepted" ';
     }
     $sponsorList->sqlOrderBy = 'sponsorID DESC';
     $sponsorList->readObjects();
     // get prices
     $priceList = new ContestPriceList();
     if ($this->contest !== null) {
         $priceList->sqlConditions .= 'contest_price.contestID = ' . $this->contest->contestID . ' AND contest_price.state != "declined" ';
     } else {
         $priceList->sqlJoins .= " INNER JOIN wcf" . WCF_N . "_contest contest ON contest.contestID = contest_price.contestID ";
         $priceList->sqlConditions .= 'contest.state IN ("scheduled", "closed") AND contest_price.state != "declined" ';
     }
     $priceList->sqlOrderBy = 'position ASC';
     $priceList->readObjects();
     // get tag cloud
     $tagList = null;
     if (MODULE_TAGGING) {
         $tagList = new ContestTagList($this->contest, WCF::getSession()->getVisibleLanguageIDArray());
         $tagList->readObjects();
     }
     // get latest entries
     $latestEntryList = new ContestList();
     if ($this->contest !== null) {
         $latestEntryList->sqlConditions .= 'contest.contestID != ' . $this->contest->contestID;
     }
     $latestEntryList->sqlLimit = 10;
     $latestEntryList->readObjects();
     // get latest solutions
     if (!$this->contest || $this->contest->enableSolution) {
         $latestSolutionList = new ContestSolutionList();
         if ($this->contest !== null) {
             $latestSolutionList->sqlConditions .= 'contest_solution.contestID = ' . $this->contest->contestID;
         }
         $latestSolutionList->sqlOrderBy = 'solutionID DESC';
         $latestSolutionList->sqlLimit = 5;
         $latestSolutionList->readObjects();
     } else {
         $latestSolutionList = null;
     }
     return array('classList' => $classList, 'juryList' => $juryList, 'participantList' => $participantList, 'sponsorList' => $sponsorList, 'priceList' => $priceList, 'tagList' => $tagList, 'latestEntryList' => $latestEntryList, 'latestSolutionList' => $latestSolutionList);
 }