本文整理汇总了PHP中Contest::s方法的典型用法代码示例。如果您正苦于以下问题:PHP Contest::s方法的具体用法?PHP Contest::s怎么用?PHP Contest::s使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Contest
的用法示例。
在下文中一共展示了Contest::s方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
/**
* Main method.
*
* @since 0.1
*
* @param string $subPage
*/
public function execute($subPage)
{
$subPage = str_replace('_', ' ', $subPage);
$subPage = explode('/', $subPage, 2);
$challengeTitle = count($subPage) > 1 ? $subPage[1] : false;
$subPage = $subPage[0];
if (!parent::execute($subPage)) {
return;
}
$out = $this->getOutput();
/**
* @var $contest Contest
*/
$contest = Contest::s()->selectRow(null, array('name' => $subPage));
if ($contest === false) {
$out->redirect(SpecialPage::getTitleFor('Contests')->getLocalURL());
} else {
$out->setPageTitle(wfMsgExt('contest-contest-title', 'parseinline', $contest->getField('name')));
$this->displayNavigation();
$this->showGeneralInfo($contest);
if ($this->getUser()->isAllowed('contestadmin')) {
$this->showMailFunctionality($contest);
}
$out->addHTML(Html::element('h3', array(), wfMsg('contest-contest-contestants')));
$this->addFilterOptionsToSession();
$this->showFilterControl($contest, $challengeTitle);
$this->showContestants($contest, $challengeTitle);
$out->addModules('contest.special.contest');
}
}
示例2: showNoSuchContest
/**
* Handle requests for non-existing contests, or requests with no contest specified.
* If the contest does not exist, an error is shown, unless there is only one existing
* contest, in which case the user is redirected to it, which also happens when no contest
* is specified. If there are multiple active contests, a list is shown.
*
* @since 0.2
*
* @param string $subPage
*/
protected function showNoSuchContest($subPage)
{
$out = $this->getOutput();
$c = Contest::s()->select(array('name', 'status', 'end'), array('status' => Contest::STATUS_ACTIVE));
$contests = array();
// It can also be expired, but this is stored as active in the db, so matches the selection.
// It'd be better to get rid of this special behaviour so this kind of code is not needed.
foreach ($c as $contest) {
if ($contest->getStatus() == Contest::STATUS_ACTIVE) {
$contests[] = $contest;
}
}
if (count($contests) == 1) {
$out->redirect($this->getTitle($contests[0]->getField('name'))->getLocalURL());
} else {
if (!is_null($subPage) && trim($subPage) !== '') {
$this->showError('contest-welcome-unknown');
}
if (count($contests) == 0) {
$out->addWikiMsg('contest-welcome-no-contests-active');
} else {
$items = array();
foreach ($contests as $contest) {
$items[] = '<li>' . Html::element('a', array('href' => $this->getTitle($contest->getField('name'))->getLocalURL()), $contest->getField('name')) . '</li>';
}
$out->addWikiMsg('contest-welcome-active-contests');
$out->addHTML(Html::rawElement('ul', array(), implode("\n", $items)));
}
}
$out->returnToMain();
}
示例3: displayContests
/**
* Displays the contests.
*
* @since 0.1
*/
protected function displayContests()
{
$contests = Contest::s()->select(array('id', 'name', 'status', 'end', 'submission_count'));
if (count($contests) > 0) {
$this->displayContestsTable($contests);
}
$this->getOutput()->addModules('ext.contest.special.contests');
}
示例4: execute
public function execute()
{
global $wgUser;
if (!$wgUser->isAllowed('contestadmin') || $wgUser->isBlocked()) {
$this->dieUsageMsg(array('badaccess-groups'));
}
$params = $this->extractRequestParams();
$everythingOk = true;
$contestIds = is_null($params['contestids']) ? array() : $params['contestids'];
$challengeIds = is_null($params['challengeids']) ? array() : $params['challengeids'];
if (!is_null($params['challengetitles'])) {
$challenges = ContestChallenge::s()->select('id', array('title' => $params['challengetitles']));
if ($challenges === false) {
// TODO: error
}
foreach ($challenges as $challenge) {
$challengeIds[] = $challenge->getId();
}
}
if (!is_null($params['contestnames'])) {
$contests = Contest::s()->select('id', array('name' => $params['contestnames']));
if ($contests === false) {
// TODO: error
}
foreach ($contests as $contest) {
$contestIds[] = $contest->getId();
}
}
$conditions = array();
if (count($contestIds) > 0) {
$conditions['contest_id'] = $contestIds;
}
if (count($challengeIds) > 0) {
$conditions['challenge_id'] = $challengeIds;
}
if (!is_null($params['ids']) && count($params['ids']) > 0) {
$conditions['id'] = $params['ids'];
}
$contestants = ContestContestant::s()->select(array('id', 'user_id', 'contest_id', 'email'), $conditions);
$contestantCount = count($contestants);
if ($contestants !== false && $contestantCount > 0) {
$setSize = ContestSettings::get('reminderJobSize');
$limit = count($contestants);
for ($i = 0; $i <= $limit; $i += $setSize) {
$this->createReminderJob(array_slice($contestants, $i, $setSize));
}
} else {
$everythingOk = false;
}
$this->getResult()->addValue(null, 'success', $everythingOk);
if ($everythingOk) {
$this->getResult()->addValue(null, 'contestantcount', $contestantCount);
}
}
示例5: showPage
/**
* Show the page.
*
* @since 0.1
*
* @param string $subPage
*/
protected function showPage($subPage)
{
$out = $this->getOutput();
$subPage = explode('/', $subPage);
$contestName = $subPage[0];
$challengeId = count($subPage) > 1 ? $subPage[1] : false;
$contest = Contest::s()->selectRow(null, array('name' => $contestName));
if ($contest === false) {
$this->showError('contest-signup-unknown');
$out->returnToMain();
return;
}
switch ($contest->getStatus()) {
case Contest::STATUS_ACTIVE:
$this->showEnabledPage($contest, $challengeId);
break;
case Contest::STATUS_DRAFT:
$this->showWarning('contest-signup-draft');
$out->returnToMain();
break;
case Contest::STATUS_FINISHED:
case Contest::STATUS_EXPIRED:
$this->showWarning('contest-signup-finished');
$out->returnToMain();
break;
}
}
示例6: handleSubmissionView
/**
* Handle view requests for the page.
*
* @since 0.1
*
* @param string $contestName
*/
protected function handleSubmissionView($contestName)
{
$out = $this->getOutput();
$contest = Contest::s()->selectRow(null, array('name' => $contestName));
if ($contest === false) {
$this->showError('contest-submission-unknown');
$out->returnToMain();
} else {
switch ($contest->getStatus()) {
case Contest::STATUS_ACTIVE:
$this->handleEnabledPage($contest);
break;
case Contest::STATUS_FINISHED:
case Contest::STATUS_EXPIRED:
$this->showWarning('contest-submission-finished');
$out->returnToMain();
break;
}
}
}
示例7: getContest
/**
* Gets the contest for this participant.
*
* @since 0.1
*
* @param array|string|null $fields The fields to load, null for all fields.
*
* @return Contest
*/
public function getContest($fields = null)
{
if (!is_null($this->contest)) {
return $this->contest;
}
$contest = Contest::s()->selectRow($fields, array('id' => $this->getField('contest_id')));
if (is_null($this->contest) && is_null($fields)) {
$this->contest = $contest;
}
return $contest;
}
示例8: onSubmit
/**
* Process the form. At this point we know that the user passes all the criteria in
* userCanExecute(), and if the data array contains 'Username', etc, then Username
* resets are allowed.
*
* @param array $data
*
* @return Bool|Array
*/
public function onSubmit(array $data)
{
$fields = array();
foreach ($data as $name => $value) {
$matches = array();
if (preg_match('/contest-(.+)/', $name, $matches)) {
if ($matches[1] == 'end') {
$value = wfTimestamp(TS_MW, strtotime($value));
}
$fields[$matches[1]] = $value;
}
}
// If no ID is set, this means it's a new contest, so set the ID to null for an insert.
// However, the user can have hot the back button after creation of a new contest,
// re-submitting the form. In this case, get the ID of the already existing item for an update.
if (!array_key_exists('id', $fields) || $fields['id'] === '') {
$contest = Contest::s()->selectRow('id', array('name' => $fields['name']));
$fields['id'] = $contest === false ? null : $contest->getField('id');
}
$contest = new Contest($fields, is_null($fields['id']));
$contest->setChallenges($this->getSubmittedChallenges());
$success = $contest->writeAllToDB();
$success = $this->removeDeletedChallenges($data['delete-challenges']) && $success;
if ($success) {
return true;
} else {
return array();
// TODO
}
}