Compare commits

...

6 commits

Author SHA1 Message Date
themohooks
cfab1d2e96 update admin pages 2025-02-18 00:28:37 +03:00
themohooks
118968739c update contests 2025-02-18 00:08:13 +03:00
themohooks
04373e197c update contest pages 2025-02-17 23:10:16 +03:00
themohooks
847ebb32be Update VotingWaiting.php 2025-02-17 22:33:04 +03:00
themohooks
0275ff30c6 update send pretend 2025-02-17 22:19:26 +03:00
themohooks
b41ec07317 contests 2025-02-17 22:10:46 +03:00
22 changed files with 348 additions and 307 deletions

View file

@ -0,0 +1,59 @@
<?php
namespace App\Controllers\Api\Contests;
use App\Services\{DB, Json};
class GetInfo
{
private array $contest;
private string $pretendsStatus;
private string $publicStatus;
public function __construct()
{
$this->fetchContest();
$this->setStatuses();
$this->outputJson();
}
private function fetchContest(): void
{
$statuses = [0, 1, 2];
foreach ($statuses as $status) {
$contest = DB::query('SELECT * FROM contests WHERE status = :status', [':status' => $status]);
if (!empty($contest)) {
$this->contest = $contest[0];
break;
}
}
}
private function setStatuses(): void
{
$time = time();
$status = $this->contest['status'] ?? null;
if ($status === 0) {
$this->pretendsStatus = ($this->contest['openpretendsdate'] > $time) ? 'waiting' : 'waitingforserver';
$this->publicStatus = 'closed';
} elseif ($status === 1) {
$this->pretendsStatus = ($this->contest['closepretendsdate'] > $time) ? 'opened' : 'waitingforserver';
$this->publicStatus = 'closed';
} elseif ($status === 2) {
$this->pretendsStatus = 'closed';
$this->publicStatus = ($this->contest['closedate'] <= $time) ? 'waitingforserver' : 'opened';
}
}
private function outputJson(): void
{
echo json_encode(array(
'contest' => $this->contest,
'statuses' => [
'pretends' => $this->pretendsStatus,
'public' => $this->publicStatus,
]
));
}
}

View file

@ -0,0 +1,46 @@
<?php
namespace App\Controllers\Api\Images\Contests;
use App\Services\{Auth, Router, GenerateRandomStr, DB, Json, EXIF};
use App\Models\{User, Vote, Photo};
class Rate
{
public function __construct()
{
$count = 3;
$uservotes = DB::query('SELECT COUNT(*) FROM contests_rates WHERE user_id=:uid AND contest_id=:cid', array(':uid' => Auth::userid(), ':cid' => $_GET['kid']))[0]['COUNT(*)'];
$countvotes = $count - $uservotes;
$contest = DB::query('SELECT * FROM contests WHERE id=:id', array(":id" => $_GET['kid']))[0];
$photo = new Photo($_GET['pid']);
if ($contest['status'] != 2) {
exit;
}
if ($photo->i('on_contest') != 1 && $photo->i('contest_id') != $_GET['kid']) {
exit;
}
if ((int)DB::query('SELECT photo_id FROM contests_rates WHERE photo_id=:pid AND user_id=:uid AND contest_id=:cid', array(':uid' => Auth::userid(), ':pid' => $_GET['pid'], ':cid' => $_GET['kid']))[0]['photo_id'] === (int)$_GET['pid']) {
DB::query('DELETE FROM contests_rates WHERE user_id=:uid AND photo_id=:pid AND contest_id=:cid', array(':pid' => $_GET['pid'], ':uid' => Auth::userid(), ':cid' => $_GET['kid']));
$status = 0;
$newval = $countvotes + 1;
} else {
$newval = $countvotes - 1;
if ($newval >= 0) {
DB::query('INSERT INTO contests_rates VALUES (\'0\', :pid, :uid, :cid)', array(':pid' => $_GET['pid'], ':uid' => Auth::userid(), ':cid' => $_GET['kid']));
$status = 1;
}
}
if ($newval < 0) {
$text = 'Вы можете выбрать максимум 3 фотографии.';
} else if ($newval === 0) {
$text = 'Вы выбрали 3 фотографии. Спасибо за голосование!';
} else {
$text = "Вы можете выбрать ещё {$newval} фото.";
}
echo '[{"' . $_GET['pid'] . '":'.$status.'},"' . $text . '"]';
}
}

View file

@ -12,12 +12,14 @@ class SendPretend
{ {
public function __construct() public function __construct()
{ {
DB::query('UPDATE photos SET on_contest=1, contest_id=:id WHERE id=:idd', array(':id'=>$_POST['cid'], ':idd'=>$_POST['photo_id'])); if (DB::query('SELECT contest_id FROM photos WHERE user_id=:uid', array(':uid' => Auth::userid()))[0]['contest_id'] != $_POST['cid']) {
echo json_encode( DB::query('UPDATE photos SET on_contest=1, contest_id=:id WHERE id=:idd', array(':id' => $_POST['cid'], ':idd' => $_POST['photo_id']));
array( echo json_encode(
'errorcode' => 0, array(
'error' => 0 'errorcode' => 0,
) 'error' => 0
); )
);
}
} }
} }

View file

@ -8,7 +8,6 @@ use \App\Controllers\Api\{Login, Register};
use \App\Controllers\Api\Subscribe as SubscribeUser; use \App\Controllers\Api\Subscribe as SubscribeUser;
use \App\Controllers\Api\Images\{Upload}; use \App\Controllers\Api\Images\{Upload};
use \App\Controllers\Api\Images\Rate as PhotoVote; use \App\Controllers\Api\Images\Rate as PhotoVote;
use \App\Controllers\Api\Images\RateContest as PhotoVoteContest;
use \App\Controllers\Api\Images\Compress as PhotoCompress; use \App\Controllers\Api\Images\Compress as PhotoCompress;
use \App\Controllers\Api\Images\CheckAll as PhotoCheckAll; use \App\Controllers\Api\Images\CheckAll as PhotoCheckAll;
use \App\Controllers\Api\Images\LoadRecent as PhotoLoadRecent; use \App\Controllers\Api\Images\LoadRecent as PhotoLoadRecent;
@ -21,6 +20,8 @@ use \App\Controllers\Api\Images\Comments\Pin as PhotoCommentPin;
use \App\Controllers\Api\Images\Comments\Load as PhotoCommentLoad; use \App\Controllers\Api\Images\Comments\Load as PhotoCommentLoad;
use \App\Controllers\Api\Images\Comments\Rate as PhotoCommentVote; use \App\Controllers\Api\Images\Comments\Rate as PhotoCommentVote;
use \App\Controllers\Api\Images\Contests\SendPretend as PhotoContestsSendPretend; use \App\Controllers\Api\Images\Contests\SendPretend as PhotoContestsSendPretend;
use \App\Controllers\Api\Images\Contests\Rate as PhotoContestsRate;
use \App\Controllers\Api\Contests\GetInfo as ContestsGetInfo;
use \App\Controllers\Api\GeoDB\Search as GeoDBSearch; use \App\Controllers\Api\GeoDB\Search as GeoDBSearch;
use \App\Controllers\Api\Vehicles\Load as VehiclesLoad; use \App\Controllers\Api\Vehicles\Load as VehiclesLoad;
use \App\Controllers\Api\Profile\Update as ProfileUpdate; use \App\Controllers\Api\Profile\Update as ProfileUpdate;
@ -57,7 +58,7 @@ class ApiController
return new PhotoVote(); return new PhotoVote();
} }
public static function photovotecontest() { public static function photovotecontest() {
return new PhotoVoteContest(); return new PhotoContestsRate();
} }
public static function photofavorite() { public static function photofavorite() {
return new PhotoFavorite(); return new PhotoFavorite();
@ -140,6 +141,9 @@ class ApiController
public static function vehiclesload() { public static function vehiclesload() {
return new VehiclesLoad(); return new VehiclesLoad();
} }
public static function contestsgetinfo() {
return new ContestsGetInfo();
}
} }

View file

@ -36,6 +36,9 @@ class ExecContests
case 2: case 2:
self::handleClosingContest($contest); self::handleClosingContest($contest);
break; break;
case 02:
self::handleClosePretendsByTime($contest);
break;
} }
} }
@ -56,20 +59,38 @@ class ExecContests
private static function handleClosePretends(array $contest) private static function handleClosePretends(array $contest)
{ {
if (self::isAnotherContestInStatus(2)) { if (self::isAnotherContestInStatus(2) || self::isAnotherContestInStatus(02)) {
echo "[{$contest['id']}] Waiting for another contest to end. Skip...\n"; echo "[{$contest['id']}] Waiting for another contest to end. Skip...\n";
return; return;
} }
if ($contest['closepretendsdate'] <= time() && $contest['opendate'] <= time()) { if ($contest['closepretendsdate'] <= time()) {
DB::query('UPDATE photos SET on_contest=2 WHERE on_contest=1 AND contest_id=:id', array(':id'=>$contest['id'])); DB::query('UPDATE photos SET on_contest=2 WHERE on_contest=1 AND contest_id=:id', array(':id'=>$contest['id']));
DB::query('UPDATE contests SET status = 2 WHERE id = :id', [':id' => $contest['id']]); if ($contest['opendate'] <= time()) {
DB::query('UPDATE contests SET status = 2 WHERE id = :id', [':id' => $contest['id']]);
echo "[{$contest['id']}] Opened.\n";
} else {
DB::query('UPDATE contests SET status = 02 WHERE id = :id', [':id' => $contest['id']]);
}
echo "[{$contest['id']}] Closed for pretends.\n"; echo "[{$contest['id']}] Closed for pretends.\n";
} else { } else {
echo "[{$contest['id']}] Not closed for pretends. Skip...\n"; echo "[{$contest['id']}] Not closed for pretends. Skip...\n";
} }
} }
private static function handleClosePretendsByTime(array $contest)
{
echo "[{$contest['id']}] Cheking for Open by time...\n";
if ($contest['opendate'] <= time()) {
DB::query('UPDATE contests SET status = 2 WHERE id = :id', [':id' => $contest['id']]);
echo "[{$contest['id']}] .\n";
} else {
echo "[{$contest['id']}] not opened by time. Skip...\n";
}
echo "[{$contest['id']}] Opened.\n";
}
private static function handleClosingContest(array $contest) private static function handleClosingContest(array $contest)
{ {
if ($contest['closedate'] > time()) { if ($contest['closedate'] > time()) {
@ -80,25 +101,32 @@ class ExecContests
echo "[{$contest['id']}] Ready for closing!\n"; echo "[{$contest['id']}] Ready for closing!\n";
self::processVotes($contest); self::processVotes($contest);
DB::query('UPDATE contests SET status = 3 WHERE id = :id', [':id' => $contest['id']]); DB::query('UPDATE contests SET status = 3 WHERE id = :id', [':id' => $contest['id']]);
DB::query('UPDATE photos SET contest_id = 0, on_contest = 0 WHERE contest_id = :id', [':id' => $contest['id']]);
echo "[{$contest['id']}] Closed.\n"; echo "[{$contest['id']}] Closed.\n";
if (NGALLERY['root']['contests']['autonew']['enabled'] === true) { if (NGALLERY['root']['contests']['autonew']['enabled'] === true) {
echo "Creating new contest..."; echo "Creating new contest...";
$theme = DB::query('SELECT * FROM contests_themes WHERE status=1 ORDER BY RAND() LIMIT 1')[0]; $theme = DB::query('SELECT * FROM contests_themes WHERE status=1 ORDER BY RAND() LIMIT 1')[0];
if (count($theme) <= 0) {
echo "Not found themes for autocreating Contest. Skip...\n";
return;
}
$time = time(); $time = time();
if (NGALLERY['root']['contests']['autonew']['pretendsopen'] === 'now') { if (NGALLERY['root']['contests']['autonew']['times']['pretendsopen'] === 'now') {
$pretendsopen = $time; $pretendsopen = $time;
$status = 1;
} else { } else {
$pretendsopen = Date::addTime(NGALLERY['root']['contests']['autonew']['pretendsopen']); $status = 0;
$pretendsopen = Date::addTime(NGALLERY['root']['contests']['autonew']['times']['pretendsopen']);
} }
$pretendsclose = Date::addTime(NGALLERY['root']['contests']['autonew']['pretendsclose']); $pretendsclose = Date::addTime(NGALLERY['root']['contests']['autonew']['times']['pretendsclose']);
if (NGALLERY['root']['contests']['autonew']['open'] === 'now') { if (NGALLERY['root']['contests']['autonew']['times']['open'] === 'now') {
$contestopen = $pretendsclose; $contestopen = $pretendsclose;
} else { } else {
$contestopen = Date::addTime(NGALLERY['root']['contests']['autonew']['open']); $contestopen = Date::addTime(NGALLERY['root']['contests']['autonew']['times']['open']);
} }
$contestclose = Date::addTime(NGALLERY['root']['contests']['autonew']['close']); $contestclose = Date::addTime(NGALLERY['root']['contests']['autonew']['times']['close']);
DB::query('INSERT INTO contests VALUES (\'0\', :themeid, :openprdate, :closeprdate, :opendate, :closedate, 0)', array(':themeid'=>$theme['id'], ':openprdate'=>$pretendsopen, ':closeprdate'=>$pretendsclose, ':opendate'=>$contestopen, ':closedate'=>$contestclose)); DB::query('INSERT INTO contests VALUES (\'0\', :themeid, :openprdate, :closeprdate, :opendate, :closedate, :status)', array(':themeid'=>$theme['id'], ':openprdate'=>$pretendsopen, ':closeprdate'=>$pretendsclose, ':opendate'=>$contestopen, ':closedate'=>$contestclose, ':status'=>$status));
echo "Contest created! Continue..."; echo "Contest created! Continue...";
} }
} }
@ -107,8 +135,8 @@ class ExecContests
{ {
$votes = DB::query( $votes = DB::query(
'SELECT user_id, photo_id, COUNT(*) AS vote_count 'SELECT user_id, photo_id, COUNT(*) AS vote_count
FROM photos_rates_contest WHERE contest_id = :id FROM contests_rates WHERE contest_id = :id
GROUP BY user_id ORDER BY vote_count DESC LIMIT 3', GROUP BY user_id ORDER BY vote_count DESC LIMIT 10',
[':id' => $contest['id']] [':id' => $contest['id']]
); );
@ -123,20 +151,28 @@ class ExecContests
{ {
$photo = DB::query('SELECT * FROM photos WHERE id = :id', [':id' => $vote['photo_id']])[0]; $photo = DB::query('SELECT * FROM photos WHERE id = :id', [':id' => $vote['photo_id']])[0];
$photoData = json_decode($photo['content'], true); $photoData = json_decode($photo['content'], true);
if (!isset($photoData['contests']) || !is_array($photoData['contests'])) {
$photoData['contests'] = [];
}
$theme = DB::query('SELECT title FROM contests_themes WHERE id = :id', [':id' => $contest['themeid']])[0]['title']; $theme = DB::query('SELECT title FROM contests_themes WHERE id = :id', [':id' => $contest['themeid']])[0]['title'];
$photoData['contests'] = [ $photoData['contests'][] = [
'id' => $contest['id'], 'id' => $contest['id'],
'contesttheme' => $theme, 'contesttheme' => $theme,
'votenum' => $vote['vote_count'], 'votenum' => $vote['vote_count'],
'place' => $place 'place' => $place
]; ];
DB::query('INSERT INTO contests_winners VALUES (\'0\', :photo_id, :place, :contest_id, :date)', array(':photo_id'=>$vote['photo_id'], ':place'=>$place, ':contest_id'=>$contest['id'], ':date'=>time()));
DB::query('UPDATE photos SET content = :content, on_contest=0, contest_id=0 WHERE id = :id', [ DB::query('UPDATE photos SET content = :content, on_contest=0, contest_id=0 WHERE id = :id', [
':id' => $vote['photo_id'], ':id' => $vote['photo_id'],
':content' => json_encode($photoData) ':content' => json_encode($photoData, JSON_UNESCAPED_UNICODE)
]); ]);
} }
private static function isAnotherContestInStatus(int $status): bool private static function isAnotherContestInStatus(int $status): bool

View file

@ -69,7 +69,9 @@ class Routes
Router::post('/api/photo/comment/$id/edit', 'ApiController@photocommentedit'); Router::post('/api/photo/comment/$id/edit', 'ApiController@photocommentedit');
Router::post('/api/photo/comment/$id/delete', 'ApiController@photocommentdelete'); Router::post('/api/photo/comment/$id/delete', 'ApiController@photocommentdelete');
Router::post('/api/photo/comment/$id/pin', 'ApiController@photocommentpin'); Router::post('/api/photo/comment/$id/pin', 'ApiController@photocommentpin');
Router::post('/api/photo/contests/sendpretend', 'ApiController@sendpretendphoto()'); Router::post('/api/photo/contests/sendpretend', 'ApiController@sendpretendphoto');
Router::get('/api/photo/contests/rate', 'ApiController@photovotecontest');
Router::get('/api/contests/getinfo', 'ApiController@contestsgetinfo');
Router::get('/api/vehicles/load', 'ApiController@vehiclesload'); Router::get('/api/vehicles/load', 'ApiController@vehiclesload');
Router::get('/api/geodb/search', 'ApiController@geodbsearch'); Router::get('/api/geodb/search', 'ApiController@geodbsearch');
if ($user->i('admin') > 0) { if ($user->i('admin') > 0) {

BIN
static/img/star_people.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

BIN
static/img/vs1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

BIN
static/img/vs2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

BIN
static/img/vs3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

View file

@ -84,10 +84,10 @@ body {
<i class="bx bx-world nav__icon"></i> <i class="bx bx-world nav__icon"></i>
<span class="nav__name">GeoDB<span class="badge text-bg-warning">BETA</span></span> <span class="nav__name">GeoDB<span class="badge text-bg-warning">BETA</span></span>
</a> </a>
<a href="/admin?type=Pages" class="nav__link"> <!--a href="/admin?type=Pages" class="nav__link">
<i class="bx bx-file-blank nav__icon"></i> <i class="bx bx-file-blank nav__icon"></i>
<span class="nav__name">Страницы</span> <span class="nav__name">Страницы</span>
</a> </!--a-->
<a href="/admin?type=Settings" class="nav__link"> <a href="/admin?type=Settings" class="nav__link">
<i class="bx bx-cog nav__icon"></i> <i class="bx bx-cog nav__icon"></i>
<span class="nav__name">Настройки<span class="badge text-bg-warning">BETA</span></span> <span class="nav__name">Настройки<span class="badge text-bg-warning">BETA</span></span>

View file

@ -60,6 +60,8 @@ if (!$task->isTaskExists("ExecContests", "php ".$_SERVER['DOCUMENT_ROOT'].$task-
$status = 'Ещё не проведён'; $status = 'Ещё не проведён';
} else if ($t['status'] === 1) { } else if ($t['status'] === 1) {
$status = 'Отбор кандидатов'; $status = 'Отбор кандидатов';
} else if ($t['status'] === 02) {
$status = 'Ещё не открыт для отбора победителей';
} else if ($t['status'] === 2) { } else if ($t['status'] === 2) {
$status = 'Отбор победителей'; $status = 'Отбор победителей';
} else if ($t['status'] === 3) { } else if ($t['status'] === 3) {

View file

@ -39,10 +39,10 @@ use \App\Models\User;
<div class="v-header__tabs"> <div class="v-header__tabs">
<div class="v-tabs"> <div class="v-tabs">
<div class="v-tabs__scroll"> <div class="v-tabs__scroll">
<div class="v-tabs__content"><a href="#" onclick="changeTab('full')" id="full" class="v-tab v-tab-b v-tab--active"><span class="v-tab__label"> <div class="v-tabs__content"><!--a href="#" onclick="changeTab('full')" id="full" class="v-tab v-tab-b"><span class="v-tab__label">
Полный список Полный список
</span></a><a href="#" onclick="changeTab('moderate')" id="moderate" class="v-tab v-tab-b"><span class="v-tab__label"> </span></!--a--><a href="#" onclick="changeTab('moderate')" id="moderate" class="v-tab v-tab-b v-tab--active"><span class="v-tab__label">
Ожидают модерации Ожидают модерации
</span></a> </span></a>
@ -54,7 +54,7 @@ use \App\Models\User;
</div> </div>
<script src="/js/diff.js"></script> <script src="/js/diff.js"></script>
<script src="/js/pwrite-compare.js"></script> <script src="/js/pwrite-compare.js"></script>
<div style="display: none;" id="moderate__block"> <div id="moderate__block"class="active__block" >
<div class="p20w" style="display:block"> <div class="p20w" style="display:block">
<table class="table"> <table class="table">
<tbody> <tbody>
@ -219,7 +219,7 @@ use \App\Models\User;
</tbody> </tbody>
</table> </table>
</div></div> </div></div>
<div style="display: none;" class="active__block" id="full__block"> <div style="display: none;" id="full__block">
fgdfg fgdfg
</div> </div>

View file

@ -86,10 +86,10 @@ function renderInputs($data, $prefix = '')
<div class="v-header__tabs"> <div class="v-header__tabs">
<div class="v-tabs"> <div class="v-tabs">
<div class="v-tabs__scroll"> <div class="v-tabs__scroll">
<div class="v-tabs__content"><a href="#" onclick="changeTab('config')" id="config" class="v-tab v-tab-b v-tab--active"><span class="v-tab__label"> <div class="v-tabs__content"><!--a href="#" onclick="changeTab('config')" id="config" class="v-tab v-tab-b v-tab--active"><span class="v-tab__label">
Конфиг сервера Конфиг сервера
</span></a><a href="#" onclick="changeTab('tasks')" id="tasks" class="v-tab v-tab-b"><span class="v-tab__label"> </span></!--a--><a href="#" onclick="changeTab('tasks')" id="tasks" class="v-tab v-tab-b v-tab--active"><span class="v-tab__label">
Задачи Задачи
</span></a> </span></a>
@ -99,7 +99,7 @@ function renderInputs($data, $prefix = '')
</div> </div>
</div> </div>
</div> </div>
<div class="active__block" id="config__block"> <div id="config__block" style="display: none;" >
<div class="alert alert-warning" role="alert"> <div class="alert alert-warning" role="alert">
Изменяйте только на свой страх и риск. Изменяйте только на свой страх и риск.
</div> </div>
@ -118,7 +118,7 @@ function renderInputs($data, $prefix = '')
</div> </div>
<div style="display: none;" id="tasks__block"> <div class="active__block"id="tasks__block">
<table class="table"> <table class="table">
<tbody> <tbody>
<tr> <tr>

View file

@ -1,7 +1,7 @@
<?php <?php
use \App\Services\{Auth, DB, Date}; use \App\Services\{Auth, DB, Date};
use \App\Models\User; use \App\Models\{User};
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@ -20,7 +20,7 @@ use \App\Models\User;
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?> <?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?>
<script> <script>
var kid = 2119; var kid = <?=DB::query('SELECT id FROM contests WHERE status=2')[0]['id']?>;
var tipTimeout = null; var tipTimeout = null;
@ -42,7 +42,7 @@ $(document).ready(function()
var savedClass = $(this).attr('class'); var savedClass = $(this).attr('class');
$(this).addClass('loading'); $(this).addClass('loading');
$.getJSON('/api.php', { action: 'vote-contest', kid: kid, pid: pid }, function (data) $.getJSON('/api/photo/contests/rate', { action: 'vote-contest', kid: kid, pid: pid }, function (data)
{ {
if (data[0]) if (data[0])
{ {
@ -89,195 +89,48 @@ $(document).ready(function()
<center> <center>
<h1>Фотоконкурс</h1> <h1>Фотоконкурс</h1>
<p class="narrow" style="font-size:19px"><b>Голосование</b> &nbsp;&middot;&nbsp; <a href="results">Победители</a> &nbsp;&middot;&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="/voting/waiting">Претенденты</a></p> <p class="narrow" style="font-size:19px"><b>Голосование</b> &nbsp;&middot;&nbsp; <a href="/voting/results">Победители</a> &nbsp;&middot;&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="/voting/waiting">Претенденты</a></p>
<div style="margin-top:20px">Чтобы проголосовать, отметьте одну, две или три фотографии, которые Вам понравились</div><br><br> <div style="margin-top:20px">Чтобы проголосовать, отметьте одну, две или три фотографии, которые Вам понравились</div><br><br>
<?php <?php
if (DB::query('SELECT status FROM contests WHERE status=2')[0]['status'] != 2) { if (DB::query('SELECT status FROM contests WHERE status=2')[0]['status'] != 2) {
$contest = DB::query('SELECT * FROM contests WHERE status=0')[0]; $contest = DB::query('SELECT * FROM contests WHERE status=1')[0];
echo '<div class="p20"> echo '<div class="p20">
<h4>Сейчас конкурс не проводится. Пожалуйста, заходите позже.</h4> <h4>Сейчас конкурс не проводится. Пожалуйста, заходите позже.</h4>
</div> </div>
<script>startCountdown(' . $contest['openpretendsdate'] . ');</script> <script>startCountdown(' . $contest['openpretendsdate'] . ');</script>
<h2>Следующий Фотоконкурс будет через:</h2> <h2>Следующий Фотоконкурс будет через:</h2>
<h1 id="countdown"></h1>'; <h1 id="countdown"></h1>';
} else { ?> } else { ?>
<div id="tip" lock="0"><span id="img"></span></div> <div id="tip" lock="0"><span id="img"></span></div>
<?php <?php
$photos_contest = DB::query('SELECT * FROM photos WHERE on_contest=1'); $contest = DB::query('SELECT * FROM contests WHERE status=2')[0];
$photos_contest = DB::query('SELECT * FROM photos WHERE on_contest=2 AND contest_id=:id', array(':id'=>$contest['id']));
foreach ($photos_contest as $pc) { foreach ($photos_contest as $pc) {
echo '<img pid="2068176" src="/photo/20/68/17/2068176.jpg" style="display:none"> $class = '';
if ((int)DB::query('SELECT photo_id FROM contests_rates WHERE photo_id=:pid AND user_id=:uid AND contest_id=:cid', array(':uid' => Auth::userid(), ':pid' => $pc['id'], ':cid' => $contest['id']))[0]['photo_id'] === (int)$pc['id']) {
$class = ' voted';
}
echo '<img pid="'.$pc['id'].'" src="'.$pc['photourl'].'" style="display:none">
<div class="p20p"> <div class="p20p">
<table> <table>
<tr> <tr>
<td><a href="#" pid="2068176" class="contestBtn"></a></td> <td><a href="#" pid="'.$pc['id'].'" class="contestBtn'.$class.'"></a></td>
<td class="pb_photo" id="p2068176"><a href="/photo/2068176/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/68/17/2068176_s.jpg" alt="630 КБ"> <td class="pb_photo" id="p2068176"><a href="/photo/'.$pc['id'].'/" target="_blank" class="prw"><img class="f" src="/api/photo/compress?url='.$pc['photourl'].'" data-src="/api/photo/compress?url='.$pc['photourl'].'" alt="630 КБ">
<div class="hpshade"> <div class="hpshade">
<div class="com-icon">2</div> <div class="eye-icon">'.DB::query('SELECT COUNT(*) FROM photos_views WHERE photo_id=:id', array(':id'=>$p['id']))[0]['COUNT(*)'].'</div>
<div class="eye-icon">182</div>
</div> </div>
</a></td> </a></td>
<td class="pb_descr"> <td class="pb_descr">
<p><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/237/" target="_blank">Гота</a></span>, &nbsp;Schindler/Siemens Be 4/8 &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/97221/#n586477" target="_blank">222</a></span></span> &nbsp;&nbsp; маршрут <a href="/search.php?cid=237&amp;type=1&amp;route=4" class="route">4</a></span></span><br><a href="/city/237/" target="_blank">Гота</a> &mdash; <a href="/articles/166/" target="_blank">Разные фотографии</a></p> <p>'.htmlspecialchars($pc['postbody']).'</p>
<p><b class="pw-place">Boxberg <img src="/img/place_arrow.gif" alt="/" width="15" height="11" style="position:relative; top:-1px; margin:0 3px"> Leina</b><br><br><span class="pw-descr">Настоящий немецкий Сайлент Хилл!<br /> <p><b class="pw-place">'.htmlspecialchars($pc['place']).'</b></p>
<br /> <p class="sm"><b>'.Date::zmdate($pc['posted_at']).'</b><br>Автор: <a href="/author/'.$pc['user_id'].'/">'.$user->i('username').'</a></p>
Echtes deutsches Silent Hill!</span></p> </td>
<p class="sm"><b>26 декабря 2024 г., четверг</b><br>Автор: <a href="/author/24525/">KIA-Trainz</a></p>
</td>
</tr> </tr>
</table> </table>
</div>'; </div>';
} }
?> ?>
<img pid="2073198" src="/photo/20/73/19/2073198.jpg" style="display:none"> <br>Число проголосовавших: <b><?=DB::query('SELECT COUNT(DISTINCT user_id) AS unique_user_count FROM contests_rates WHERE contest_id=:id', array(':id'=>$contest['id']))[0]['unique_user_count']?></b><br>Число голосов: <b><?=DB::query('SELECT COUNT(*) FROM contests_rates WHERE contest_id=:id', array(':id'=>$contest['id']))[0]['COUNT(*)']?></b><br><br>
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2073198" class="contestBtn"></a></td>
<td class="pb_photo" id="p2073198"><a href="/photo/2073198/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/73/19/2073198_s.jpg" alt="526 КБ">
<div class="hpshade">
<div class="eye-icon">246</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/2/" target="_blank">Санкт-Петербург</a></span>, <span class="s5">&nbsp;ЛВС-86К &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/4653/#n4758" target="_blank">8200</a></span></span>&nbsp;</span> &nbsp;&nbsp; маршрут <a href="/search.php?cid=2&amp;type=1&amp;route=52" class="route">52</a></span></span><br><a href="/city/2/" target="_blank">Санкт-Петербург</a> &mdash; <a href="/articles/1129/" target="_blank">Трамвайные линии и инфраструктура</a></p>
<p><b class="pw-place">Проспект Маршала Жукова</b></p>
<p class="sm"><b>18 ноября 2023 г., суббота</b><br>Автор: <a href="/author/19181/">Матвей Батуро</a></p>
</td>
</tr>
</table>
</div>
<img pid="2069925" src="/photo/20/69/92/2069925.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2069925" class="contestBtn"></a></td>
<td class="pb_photo" id="p2069925"><a href="/photo/2069925/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/69/92/2069925_s.jpg" alt="797 КБ">
<div class="hpshade">
<div class="com-icon">5</div>
<div class="eye-icon">251</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/2/" target="_blank">Санкт-Петербург</a></span>, &nbsp;71-931М «Витязь-М» &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/562421/#n745611" target="_blank">7903</a></span></span> &nbsp;&nbsp; перегонка</span></span><br><span style="word-spacing:-1px"><b><a href="/city/2/" target="_blank">Санкт-Петербург</a></b>, &nbsp;ПР (18М) &nbsp;<span class="nw"> <b><a href="/vehicle/5073/#n5182" target="_blank">С-7116</a></b></span> &nbsp;&nbsp; перегонка</span></p>
<p><b class="pw-place">Улица Куйбышева</b></p>
<p class="sm"><b>18 января 2025 г., суббота</b><br>Автор: <a href="/author/36016/">bo1ng10</a></p>
</td>
</tr>
</table>
</div>
<img pid="2070488" src="/photo/20/70/48/2070488.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2070488" class="contestBtn"></a></td>
<td class="pb_photo" id="p2070488"><a href="/photo/2070488/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/70/48/2070488_s.jpg" alt="656 КБ">
<div class="hpshade">
<div class="com-icon">5</div>
<div class="eye-icon">328</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><b><a href="/city/2/" target="_blank">Санкт-Петербург</a></b>, <span class="s5">&nbsp;71-134А (ЛМ-99АВ) &nbsp;<span class="nw"> <b><a href="/vehicle/5784/#n5890" target="_blank">8318</a></b></span>&nbsp;</span> &nbsp;&nbsp; маршрут <b><a href="/search.php?cid=2&amp;type=1&amp;route=41" class="route">41</a></b></span></p>
<p><b class="pw-place">Садовая улица</b></p>
<p class="sm"><b>31 января 2025 г., пятница</b><br>Автор: <a href="/author/31083/">Yastrebov Nikolay</a></p>
</td>
</tr>
</table>
</div>
<img pid="1456406" src="/photo/14/56/40/1456406.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="1456406" class="contestBtn"></a></td>
<td class="pb_photo" id="p1456406"><a href="/photo/1456406/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/14/56/40/1456406_s.jpg" alt="481 КБ">
<div class="hpshade">
<div class="com-icon">1</div>
<div class="eye-icon">582</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/101/" target="_blank">Харьков</a></span>, &nbsp;T3-ВПСт &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/452625/#n558420" target="_blank">3011</a></span></span> &nbsp;&nbsp; маршрут <a href="/search.php?cid=101&amp;type=1&amp;route=3" class="route">3</a>, СМЕ 3011+3012</span></span><br><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/101/" target="_blank">Харьков</a></span>, &nbsp;T3-ВПСт &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/452626/#n558421" target="_blank">3012</a></span></span> &nbsp;&nbsp; маршрут <a href="/search.php?cid=101&amp;type=1&amp;route=3" class="route">3</a>, СМЕ 3011+3012</span></span><br><a href="/city/101/" target="_blank">Харьков</a> &mdash; <a href="/articles/5380/" target="_blank">Трамвайные линии</a></p>
<p><b class="pw-place">Сергіївський майдан <img src="/img/place_arrow.gif" alt="/" width="15" height="11" style="position:relative; top:-1px; margin:0 3px"> Павлівська площа</b> | Сергиевская площадь <img src="/img/place_arrow.gif" alt="/" width="15" height="11" style="position:relative; top:-1px; margin:0 3px"> Павловская площадь</p>
<p class="sm"><b>6 марта 2021 г., суббота</b><br>Автор: <a href="/author/21015/">Moon_Expedition</a></p>
</td>
</tr>
</table>
</div>
<img pid="2074014" src="/photo/20/74/01/2074014.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2074014" class="contestBtn"></a></td>
<td class="pb_photo" id="p2074014"><a href="/photo/2074014/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/74/01/2074014_s.jpg" alt="555 КБ">
<div class="hpshade">
<div class="com-icon">16</div>
<div class="eye-icon">1286</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><b><a href="/city/2/" target="_blank">Санкт-Петербург</a></b>, &nbsp;ЛВС-86К &nbsp;<span class="nw"> <b><a href="/vehicle/135069/#n130294" target="_blank">5117</a></b></span> &nbsp;&nbsp; маршрут <b><a href="/search.php?cid=2&amp;type=1&amp;route=19" class="route">19</a></b></span><br><span style="word-spacing:-1px"><b><a href="/city/2/" target="_blank">Санкт-Петербург</a></b>, &nbsp;71-638-02 «Поларис» &nbsp;<span class="nw"> <b><a href="/vehicle/604225/#n803377" target="_blank">5810</a></b></span></span></p>
<p><b class="pw-place">К/ст &quot;Лахтинский разлив&quot;</b></p>
<p class="sm"><b>10 февраля 2025 г., понедельник</b><br>Автор: <a href="/author/26699/">Qwerty_qwertovich</a></p>
</td>
</tr>
</table>
</div>
<img pid="2072063" src="/photo/20/72/06/2072063.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2072063" class="contestBtn"></a></td>
<td class="pb_photo" id="p2072063"><a href="/photo/2072063/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/72/06/2072063_s.jpg" alt="674 КБ">
<div class="hpshade">
<div class="eye-icon">224</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><b><a href="/city/2/" target="_blank">Санкт-Петербург</a></b>, <span class="s3">&nbsp;81-717 (ЛВЗ) &nbsp;<span class="nw"> <b><a href="/vehicle/258072/#n614988" target="_blank">8451</a></b></span>&nbsp;</span></span></p>
<p><b class="pw-place">Электродепо &quot;Московское&quot; (ТЧ-3)</b><br><br><span class="pw-descr">Маневровые передвижения</span></p>
<p class="sm"><b>7 февраля 2025 г., пятница</b><br>Автор: <a href="/author/20006/">frunzenecc</a></p>
</td>
</tr>
</table>
</div>
<img pid="2068816" src="/photo/20/68/81/2068816.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2068816" class="contestBtn"></a></td>
<td class="pb_photo" id="p2068816"><a href="/photo/2068816/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/68/81/2068816_s.jpg" alt="675 КБ">
<div class="hpshade">
<div class="com-icon">3</div>
<div class="eye-icon">322</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><b><a href="/city/89/" target="_blank">Брест</a></b>, &nbsp;МАЗ-ЭТОН Т103 &nbsp;<span class="nw"> <b><a href="/vehicle/54899/#n53610" target="_blank">118</a></b></span> &nbsp;&nbsp; маршрут <b><a href="/search.php?cid=89&amp;type=2&amp;route=102" class="route">102</a></b></span></p>
<p><b class="pw-place">Вуліца Гаўрылава</b> | Улица Гаврилова</p>
<p class="sm"><b>29 января 2025 г., среда</b><br>Автор: <a href="/author/28158/">Ivan Tkachenko</a></p>
</td>
</tr>
</table>
</div>
<img pid="2060153" src="/photo/20/60/15/2060153.jpg" style="display:none">
<div class="p20p">
<table>
<tr>
<td><a href="#" pid="2060153" class="contestBtn"></a></td>
<td class="pb_photo" id="p2060153"><a href="/photo/2060153/" target="_blank" class="prw"><img class="f" src="/img/prw-loader.gif" data-src="/photo/20/60/15/2060153_s.jpg" alt="486 КБ">
<div class="hpshade">
<div class="eye-icon">204</div>
</div>
</a></td>
<td class="pb_descr">
<p><span style="word-spacing:-1px"><span class="sec"><span class="nf"><a href="/city/35/" target="_blank">Рига</a></span>, &nbsp;Tatra T3MR (T6B5-R) &nbsp;<span class="nw"> <span class="nf"><a href="/vehicle/53599/#n101864" target="_blank">35098</a></span></span> &nbsp;&nbsp; 35098+35108</span></span><br><a href="/city/35/" target="_blank">Рига</a> &mdash; <a href="/articles/7271/" target="_blank">Мосты</a></p>
<p><b class="pw-place">Slokas iela</b> | Улица Слокас</p>
<p class="sm"><b>28 октября 2024 г., понедельник</b><br>Автор: <a href="/author/18598/">Tučňák</a></p>
</td>
</tr>
</table>
</div>
<br>Число проголосовавших: <b>3</b><br>Число голосов: <b>6</b><br><br>
</center> </center>

View file

@ -1,7 +1,7 @@
<?php <?php
use \App\Services\{Auth, DB, Date}; use \App\Services\{Auth, DB, Date};
use \App\Models\User; use \App\Models\{User, Photo};
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@ -18,94 +18,57 @@ use \App\Models\User;
<div id="backgr"></div> <div id="backgr"></div>
<table class="tmain"> <table class="tmain">
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?> <?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?>
<?php
?>
<tr> <tr>
<td class="main"> <td class="main">
<center> <center>
<h1>Победители фотоконкурса</h1> <h1>Победители фотоконкурса</h1>
<p class="narrow" style="font-size:19px"><a href="/voting">Голосование</a> &nbsp;&middot;&nbsp; <b>Победители</b> &nbsp;&middot;&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="/voting/waiting">Претенденты</a></p> <p class="narrow" style="font-size:19px"><a href="/voting">Голосование</a> &nbsp;&middot;&nbsp; <b>Победители</b> &nbsp;&middot;&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="/voting/waiting">Претенденты</a></p>
<div style="margin:20px">Для вывода подробного отчёта о конкурсе нажмите на интересующую вас дату.</div> <?php
<div class="pages"><span class="pg">&laquo;&laquo;</span><span class="ps">1</span><a href="?show=results&amp;st=10" class="pg">2</a><a href="?show=results&amp;st=20" class="pg">3</a><a href="?show=results&amp;st=30" class="pg">4</a> &middot;&middot;&middot; <a href="?show=results&amp;st=2090" class="pg">210</a><a href="?show=results&amp;st=10" class="pg" id="NextLink">&raquo;&raquo;</a></div> $photos = DB::query("SELECT * FROM contests_winners
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-02-04" title="Подробный отчёт о конкурсе">04.02.2025</a></b></span><br><span class="sm">Линии и пейзажи</span></p> WHERE place BETWEEN 1 AND 3
<table> ORDER BY contest_id, place;
<tr>
<a href="/photo/2066028/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/66/02/2066028_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a> ");
<a href="/photo/2065380/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/38/2065380_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2064449/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/64/44/2064449_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a> $grouped = [];
</tr> foreach ($photos as $row) {
</table><br> $grouped[$row['contest_id']][] = $row;
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-02-03" title="Подробный отчёт о конкурсе">03.02.2025</a></b></span><br><span class="sm">Линии и пейзажи</span></p> }
<table> $final_result = [];
<tr> foreach ($grouped as $contest_id => $rows) {
<a href="/photo/1894111/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/18/94/11/1894111_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a> $chunks = array_chunk($rows, 3);
<a href="/photo/2063989/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/63/98/2063989_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a> foreach ($chunks as $chunk) {
<a href="/photo/2061805/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/61/80/2061805_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a> $final_result[] = $chunk;
</tr> }
</table><br> }
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-02-02" title="Подробный отчёт о конкурсе">02.02.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p>
<table> foreach ($final_result as $fc) {
<tr> $themeid = DB::query('SELECT themeid FROM contests WHERE id=:id', array(':id'=>$fc[0]['contest_id']))[0]['themeid'];
<a href="/photo/2065272/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/27/2065272_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a> $theme = DB::query('SELECT title FROM contests_themes WHERE id=:id', array(':id'=>$themeid))[0]['title'];
<a href="/photo/2064912/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/64/91/2064912_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a> echo '<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-02-04" title="Подробный отчёт о конкурсе">'.date('d.m.Y', $fc[0]['date']).'</a></b></span><br><span class="sm">'.$theme.'</span></p>
<a href="/photo/2026071/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/26/07/2026071_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a> <table>
</tr> <tr>';
</table><br> foreach ($fc as $f) {
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-02-01" title="Подробный отчёт о конкурсе">01.02.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p> $photo = new Photo($f['photo_id']);
<table> if ($f['place'] === 1) {
<tr> $img = 'vs3';
<a href="/photo/2064843/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/64/84/2064843_s.jpg?1" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a> } else if ($f['place'] === 2) {
<a href="/photo/2065143/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/14/2065143_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a> $img = 'vs2';
<a href="/photo/2063982/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/63/98/2063982_s.jpg?1" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a> } else if ($f['place'] === 3) {
</tr> $img = 'vs1';
</table><br> }
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-31" title="Подробный отчёт о конкурсе">31.01.2025</a></b></span><br><b class="sm">Итоговое голосование</b></p> echo '<a href="/photo/'.$f['photo_id'].'/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="'.$photo->i('photourl').'" class="f" style="margin-bottom:7px"><br><img src="/static/img/'.$img.'.png" style="position:relative; top:-2px"> &nbsp;</a>';
<table> }
<tr> echo '
<a href="/photo/2042060/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/42/06/2042060_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs5.png" style="position:relative; top:-2px"> &nbsp;</a> </tr>
</tr> </table><br>';
</table><br> }
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-30" title="Подробный отчёт о конкурсе">30.01.2025</a></b></span><br><span class="sm">Линии и пейзажи</span></p>
<table> ?>
<tr> <p class="narrow" style="font-size:19px"><a href="/voting">Голосование</a> &nbsp;&middot;&nbsp; <b>Победители</b> &nbsp;&middot;&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="/voting/waiting">Претенденты</a></p>
<a href="/photo/2058534/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/58/53/2058534_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2057575/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/57/57/2057575_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2058630/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/58/63/2058630_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
</tr>
</table><br>
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-29" title="Подробный отчёт о конкурсе">29.01.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p>
<table>
<tr>
<a href="/photo/2064029/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/64/02/2064029_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2065381/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/38/2065381_s.jpg?1" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2065050/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/05/2065050_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2065800/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/65/80/2065800_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
</tr>
</table><br>
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-28" title="Подробный отчёт о конкурсе">28.01.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p>
<table>
<tr>
<a href="/photo/2062445/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/62/44/2062445_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2048251/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/48/25/2048251_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2062446/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/62/44/2062446_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
</tr>
</table><br>
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-26" title="Подробный отчёт о конкурсе">26.01.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p>
<table>
<tr>
<a href="/photo/2061877/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/61/87/2061877_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs3.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2047310/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/47/31/2047310_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2060964/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/60/96/2060964_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
</tr>
</table><br>
<p><span class="narrow" style="font-size:21px"><b><a href="?show=table&amp;date=2025-01-25" title="Подробный отчёт о конкурсе">25.01.2025</a></b></span><br><span class="sm">Фотографии транспорта</span></p>
<table>
<tr>
<a href="/photo/2061294/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/61/29/2061294_s.jpg?2" class="f" style="margin-bottom:7px"><br><img src="/img/vs4.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2061425/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/61/42/2061425_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs2.png" style="position:relative; top:-2px"> &nbsp;</a>
<a href="/photo/2048649/" class="p20" style="display:table-cell; text-align:center; vertical-align:bottom; padding:20px 20px 10px; font-size:17px"><img src="/img/prw-loader.gif" data-src="/photo/20/48/64/2048649_s.jpg" class="f" style="margin-bottom:7px"><br><img src="/img/vs1.png" style="position:relative; top:-2px"> &nbsp;</a>
</tr>
</table><br>
<div class="pages"><span class="pg">&laquo;&laquo;</span><span class="ps">1</span><a href="?show=results&amp;st=10" class="pg">2</a><a href="?show=results&amp;st=20" class="pg">3</a><a href="?show=results&amp;st=30" class="pg">4</a> &middot;&middot;&middot; <a href="?show=results&amp;st=2090" class="pg">210</a><a href="?show=results&amp;st=10" class="pg" id="NextLink">&raquo;&raquo;</a></div>
<p class="narrow" style="font-size:19px"><a href="/voting.php">Голосование</a> &nbsp;&middot;&nbsp; <b>Победители</b> &nbsp;&middot;&nbsp; <a href="?show=rating">Рейтинг</a> &nbsp;&middot;&nbsp; <a href="?show=waiting">Претенденты</a></p>
</center> </center>
</td> </td>
</tr> </tr>

View file

@ -151,7 +151,9 @@ function convertUnixToRussianDateTime($unixTime)
data: $(this).serialize(), data: $(this).serialize(),
success: function(response) { success: function(response) {
var jsonData = JSON.parse(response); var jsonData = JSON.parse(response);
if (jsonData.errorcode === 0) {
alert('Фотография успешно отправлена на претенденты на Фотоконкурс');
}
} }
}); });

View file

@ -1,7 +1,7 @@
<?php <?php
use \App\Services\{Auth, DB, Date}; use \App\Services\{Auth, DB, Date};
use \App\Models\{User, VoteContest}; use \App\Models\{User, VoteContest, Vote};
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@ -31,25 +31,36 @@ use \App\Models\{User, VoteContest};
<?php <?php
if (DB::query('SELECT status FROM contests WHERE status=1')[0]['status'] === 1) { if (DB::query('SELECT status FROM contests WHERE status=1')[0]['status'] === 1) {
$contest = DB::query('SELECT * FROM contests WHERE status=1')[0]; $contest = DB::query('SELECT * FROM contests WHERE status=1')[0];
$photos_contest = DB::query('SELECT * FROM photos WHERE on_contest=1'); $photos_contest = DB::query('SELECT p.*, COUNT(prc.photo_id) AS rates_count
FROM photos p
LEFT JOIN photos_rates_contest prc ON p.id = prc.photo_id
WHERE p.on_contest = 1 AND p.contest_id = :id
GROUP BY p.id
ORDER BY rates_count DESC;
', array(':id'=>$contest['id']));
foreach ($photos_contest as $pc) { foreach ($photos_contest as $pc) {
$user = new User($pc['user_id']); $user = new User($pc['user_id']);
if (VoteContest::photo(Auth::userid(), $pc['id'], $contest['id']) === 1) {
$classp = 'voted';
} else if (VoteContest::photo(Auth::userid(), $pc['id'], $contest['id']) === 0) {
$classm = 'voted';
}
echo '<div class="p20p"> echo '<div class="p20p">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td class="pb_pre vote" style="padding-left:15px; padding-right:10px; display:table-cell" cid="'.$contest['id'].'" pid="'.$pc['id'].'"> <td class="pb_pre vote" style="padding-left:15px; padding-right:10px; display:table-cell" cid="'.$contest['id'].'" pid="'.$pc['id'].'">
<a href="#" vote="1" class="konk_btn"><span>Красиво, на&nbsp;конкурс!</span></a> <a href="#" vote="1" class="konk_btn '.$classp.'"><span>Красиво, на&nbsp;конкурс!</span></a>
<table style="margin:5px 0 7px; width:100px"> <table style="margin:5px 0 7px; width:100px">
<tbody> <tbody>
<tr> <tr>
<td style="width:20px"><img class="loader" pid="2072294" src="/img/loader.gif"></td> <td style="width:20px"><img class="loader" pid="2072294" src="/img/loader.gif"></td>
<td align="center" style="padding:2px"><b class="s_rating" pid="2072294">'.VoteContest::count($pc['id'], $contest['id']).'</b></td> <td align="center" style="padding:2px"><b class="s_rating" pid="'.$pc['id'].'">'.VoteContest::count($pc['id'], $contest['id']).'</b></td>
<td style="width:20px; display:table-cell" class="star" pid="2072294"><img src="/img/star_people.png" alt=""></td> <td style="width:20px; display:table-cell" class="star" pid="2072294"><img src="/img/star_people.png" alt=""></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<a href="#" vote="0" class="konk_btn"><span>Неконкурсное фото</span></a> <a href="#" vote="0" class="konk_btn '.$classm.'"><span>Неконкурсное фото</span></a>
</td> </td>
<td class="pb_photo" id="p2072294"><a href="/photo/'.$pc['id'].'" target="_blank" class="prw"><img class="f" src="/api/photo/compress?url='.$pc['photourl'].'" alt="597 КБ" style="display: inline;"> <td class="pb_photo" id="p2072294"><a href="/photo/'.$pc['id'].'" target="_blank" class="prw"><img class="f" src="/api/photo/compress?url='.$pc['photourl'].'" alt="597 КБ" style="display: inline;">
<div class="hpshade"> <div class="hpshade">
@ -76,7 +87,7 @@ use \App\Models\{User, VoteContest};
<br> <br>
<p class="narrow" style="font-size:19px"><a href="/voting.php">Голосование</a> &nbsp;·&nbsp; <a href="?show=results">Победители</a> &nbsp;·&nbsp; <a href="?show=rating">Рейтинг</a> &nbsp;·&nbsp; <b>Претенденты</b></p> <p class="narrow" style="font-size:19px"><a href="/voting">Голосование</a> &nbsp;·&nbsp; <a href="/voting/results">Победители</a> &nbsp;·&nbsp; <a href="/voting/rating">Рейтинг</a> &nbsp;·&nbsp; <b>Претенденты</b></p>
</center> </center>
</td> </td>
</tr> </tr>

View file

@ -134,20 +134,62 @@ LIMIT 10;');
$contest = DB::query('SELECT * FROM contests WHERE status=2')[0]; $contest = DB::query('SELECT * FROM contests WHERE status=2')[0];
$theme = DB::query('SELECT * FROM contests_themes WHERE id=:id', array(':id' => $contest['themeid']))[0]; $theme = DB::query('SELECT * FROM contests_themes WHERE id=:id', array(':id' => $contest['themeid']))[0];
echo ' <div id="contestNotify" style="float:left; border:solid 1px #171022; padding:6px 10px 7px; margin-bottom:13px; background-color:#E5D6FF"><h4>Фотоконкурс!</h4> echo ' <div id="contestNotify" style="float:left; border:solid 1px #171022; padding:6px 10px 7px; margin-bottom:13px; background-color:#E5D6FF"><h4>Фотоконкурс!</h4>
Закончится через: <b id="countdown"></b><br> <span id="timett">Закончится через:</span> <b id="countdown"></b><br>
Тематика: <b>' . $theme['title'] . '</b><br> Тематика: <b>' . $theme['title'] . '</b><br>
<b style="color: #412378;">Голосуйте за лучшие фотографии, которые должны стать победителями сегодняшнего конкурса!</b><br><br> <b style="color: #412378;">Голосуйте за лучшие фотографии, которые должны стать победителями сегодняшнего конкурса!</b><br><br>
<a href="/voting" style="background-color: #37009D; color: #fff;" type="button">Голосовать!</a> <div id="contestBtns"><a href="/voting" style="background-color: #37009D; color: #fff;" type="button">Голосовать!</a></div>
<script>startCountdown(' . $contest['closedate'] . ');</script>'; <script>startCountdown(' . $contest['closedate'] . ');</script>';
} else if (DB::query('SELECT status FROM contests WHERE status=1')[0]['status'] === 1) { } else if (DB::query('SELECT status FROM contests WHERE status=1')[0]['status'] === 1) {
$contest = DB::query('SELECT * FROM contests WHERE status=1')[0]; $contest = DB::query('SELECT * FROM contests WHERE status=1')[0];
$theme = DB::query('SELECT * FROM contests_themes WHERE id=:id', array(':id' => $contest['themeid']))[0]; $theme = DB::query('SELECT * FROM contests_themes WHERE id=:id', array(':id' => $contest['themeid']))[0];
echo ' <div id="contestNotify" style="float:left; border:solid 1px #171022; padding:6px 10px 7px; margin-bottom:13px; background-color:#E5D6FF"><h4>Фотоконкурс!</h4> echo ' <div id="contestNotify" style="float:left; border:solid 1px #171022; padding:6px 10px 7px; margin-bottom:13px; background-color:#E5D6FF"><h4>Фотоконкурс!</h4>
Начнётся через: <b id="countdown"></b><br> <span id="timett">Начнётся через:</span> <b id="countdown"></b><br>
Тематика: <b>' . $theme['title'] . '</b><br> Тематика: <b>' . $theme['title'] . '</b><br>
<b style="color: #412378;">Лучшие фотографии по мнению сообщества ' . NGALLERY['root']['title'] . ' будут отмечены</b><br><br> <b id="textContest" style="color: #412378;">Лучшие фотографии по мнению сообщества ' . NGALLERY['root']['title'] . ' будут отмечены</b><br><br>
<a href="/voting/sendpretend" style="background-color: #37009D; color: #fff;" type="button">Участвовать!</a> <a href="/voting/waiting" style="background-color: #37009D; color: #fff;" type="button">Голосовать за претендентов</a> <div id="contestBtns"><a href="/voting/sendpretend" style="background-color: #37009D; color: #fff;" type="button">Участвовать!</a> <a href="/voting/waiting" style="background-color: #37009D; color: #fff;" type="button">Голосовать за претендентов</a></div>
<script>startCountdown(' . $contest['closepretendsdate'] . ');</script>'; <script>
$(document).ready(function () {
let unixThreshold = '.$contest['closepretendsdate'].'; // Задайте нужное значение UNIX
let checkInterval = 1000; // Интервал проверки в миллисекундах (1 секунда)
let isRequestSent = false;
function checkUnixTime() {
let currentUnixTime = Math.floor(Date.now() / 1000);
if (currentUnixTime > unixThreshold) {
$("#countdown").text("Ожидаем ответ от сервера...");
$.ajax({
url: "/api/contests/getinfo", // Укажите свой URL
method: "GET",
success: function (response) {
let data = typeof response === "string" ? JSON.parse(response) : response;
if (data.statuses.pretends === "closed" && data.statuses.public === "opened") {
clearInterval(pingInterval); // Останавливаем старый пинг
$("#textContest").text("Голосуйте за лучшие фотографии, которые должны стать победителями сегодняшнего конкурса!");
$("#timett").text("Закончится через:");
$("#contestBtns").html(`<a href="/voting" style="background-color: #37009D; color: #fff;" type="button">Голосовать!</a>`)
unixThreshold = data.contest.closedate;
startCountdown(data.contest.closedate);
pingInterval = setInterval(checkUnixTime, checkInterval);
}
},
error: function (xhr, status, error) {
console.error("Ошибка запроса:", error);
}
});
} else {
console.log(currentUnixTime);
}
}
// Запускаем периодический пинг
let pingInterval = setInterval(checkUnixTime, checkInterval);
});
</script>';
} }

View file

@ -125,6 +125,25 @@ if ($photo->i('id') !== null) {
<img onerror="errimg(); this.onerror = null;" id="ph" src="<?= $photo->i('photourl') ?>" alt="" title="Фотография"> <img onerror="errimg(); this.onerror = null;" id="ph" src="<?= $photo->i('photourl') ?>" alt="" title="Фотография">
<?php <?php
} }
if ($photo->i('on_contest') === 2) { ?>
<a class="underphoto" href="/voting"><img style="margin-top:-4px" src="/static/img/star_people.png"> &nbsp;Фотография участвует в голосовании</a>
<?php }
foreach ($photo->content('contests') as $c) {
if ($c['place'] === 1) {
$img = '3';
}
if ($c['place'] === 2) {
$img = '2';
}
if ($c['place'] === 3) {
$img = '1';
}
echo '<a class="underphoto" style="font-weight:bold" href="/pk.php?pid=2068816&amp;type=d"><img style="margin-top:-4px" src="/static/img/vs'.$img.'.png"> &nbsp;'.$c['place'].'-е место на фотоконкурсе</a>';
}
if ($photo->i('priority') === 1) { ?> if ($photo->i('priority') === 1) { ?>
<div class="underphoto s17" style="cursor:help" title="Фотография не удовлетворяет действующим на момент публикации критериям качества снимков."><i style="position:relative; top:1px" class="fas fa-info-circle"></i>&ensp;<b class="dot">Условная публикация</b></div> <div class="underphoto s17" style="cursor:help" title="Фотография не удовлетворяет действующим на момент публикации критериям качества снимков."><i style="position:relative; top:1px" class="fas fa-info-circle"></i>&ensp;<b class="dot">Условная публикация</b></div>
<?php } else if ($photo->i('priority') === 2) { ?> <?php } else if ($photo->i('priority') === 2) { ?>
@ -259,14 +278,14 @@ if ($photo->i('id') !== null) {
echo 'voted'; echo 'voted';
} ?>"><span>Мне не&nbsp;нравится</span></a> } ?>"><span>Мне не&nbsp;нравится</span></a>
<?php <?php
if ($photo->content('video') === null && $photo->i('user_id') != Auth::userid()) { ?> if (($photo->content('video') === null && $photo->i('user_id') != Auth::userid()) || $photo->i('on_contest') != 2) { ?>
<a class="konk_btn <?php if (Vote::photoContest(Auth::userid(), $id) === 1) { <a class="konk_btn <?php if (Vote::photoContest(Auth::userid(), $id) === 1) {
echo 'voted'; echo 'voted';
} ?>" vote="1" href="#"><span>Красиво, на&nbsp;конкурс!</span></a> } ?>" vote="1" href="#"><span>Красиво, на&nbsp;конкурс!</span></a>
<a href="#" vote="0" class="konk_btn <?php if (Vote::photoContest(Auth::userid(), $id) === 0) { <a href="#" vote="0" class="konk_btn <?php if (Vote::photoContest(Auth::userid(), $id) === 0) {
echo 'voted'; echo 'voted';
} ?>"><span>Неконкурсное фото</span></a> } ?>"><span>Неконкурсное фото</span></a>
<?php } else if ($photo->i('user_id') === Auth::userid()) { ?> <?php } else if ($photo->i('user_id') === Auth::userid() && $photo->i('on_contest') != 2) { ?>
<a href="#" vote="1" class="konk_btn"><span>Выставить на&nbsp;конкурс</span></a><a href="#" vote="0" class="konk_btn"><span>Не участвовать в&nbsp;конкурсе</span></a></div> <a href="#" vote="1" class="konk_btn"><span>Выставить на&nbsp;конкурс</span></a><a href="#" vote="0" class="konk_btn"><span>Не участвовать в&nbsp;конкурсе</span></a></div>
<?php } ?> <?php } ?>

View file

@ -425,10 +425,10 @@ $(document).ready(function()
</div> </div>
</td> </td>
</tr> </tr>
<tr> <!--tr>
<td class="lcol">Модель камеры:</td> <td class="lcol">Модель камеры:</td>
<td style="padding-bottom:17px"><input type="text" name="cammod" style="width:300px" value=""></td> <td style="padding-bottom:17px"><input type="text" name="cammod" style="width:300px" value=""></td>
</tr> </!--tr>
<tr> <tr>
<td class="lcol">Пользователь:</td> <td class="lcol">Пользователь:</td>
<td> <td>
@ -501,7 +501,7 @@ $(document).ready(function()
<tr> <tr>
<td></td> <td></td>
<td><br><input type="submit" value="&nbsp; &nbsp; &nbsp; Искать &nbsp; &nbsp; &nbsp;"></td> <td><br><input type="submit" value="&nbsp; &nbsp; &nbsp; Искать &nbsp; &nbsp; &nbsp;"></td>
</tr> </tr-->
</tbody></table> </tbody></table>
</form> </form>
</tbody> </tbody>