2025-02-11 20:25:11 +03:00
< ? php
use \App\Services\ { Auth , DB , Date };
2025-02-17 22:10:46 +03:00
use \App\Models\ { User };
2025-02-11 20:25:11 +03:00
?>
<! DOCTYPE html >
< html lang = " ru " >
< head >
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/LoadHead.php' ); ?>
</ head >
< body >
< div id = " backgr " ></ div >
< table class = " tmain " >
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/Navbar.php' ); ?>
2025-02-15 04:54:12 +03:00
< script >
2025-02-17 22:10:46 +03:00
var kid = < ? = DB :: query ( 'SELECT id FROM contests WHERE status=2' )[ 0 ][ 'id' ] ?> ;
2025-02-15 04:54:12 +03:00
var tipTimeout = null ;
function hideTip ()
{
$ ( '#tip' ) . fadeOut ( 'fast' , function ()
{
$ ( this ) . attr ( 'lock' , 0 );
$ ( '#img' ) . html ( '' );
});
}
$ ( document ) . ready ( function ()
{
$ ( '.contestBtn' ) . click ( function ()
{
var pid = $ ( this ) . attr ( 'pid' );
var savedClass = $ ( this ) . attr ( 'class' );
$ ( this ) . addClass ( 'loading' );
2025-02-17 22:10:46 +03:00
$ . getJSON ( '/api/photo/contests/rate' , { action : 'vote-contest' , kid : kid , pid : pid }, function ( data )
2025-02-15 04:54:12 +03:00
{
if ( data [ 0 ])
{
for ( var pid in data [ 0 ])
$ ( '.contestBtn[pid="' + pid + '"]' ) . attr ( 'class' , 'contestBtn' + ( data [ 0 ][ pid ] == 0 ? '' : ' voted' ));
}
else $ ( '.contestBtn[pid="' + pid + '"]' ) . attr ( 'class' , savedClass );
if ( data [ 1 ]) alert ( data [ 1 ]);
})
. fail ( function ( jx ) { alert ( jx . responseText ); });
return false ;
});
$ ( document ) . on ( 'mouseenter' , '.f' , function ()
{
var hidden_img = $ ( this ) . closest ( '.p20p' ) . prev ( 'img' );
$ ( '#img' ) . html ( '<a href="/photo/' + hidden_img . attr ( 'pid' ) + '/" target="_blank"><img src="' + ( hidden_img . length ? hidden_img . attr ( 'src' ) : this . src . replace ( '_s' , '' )) + '"></a>' );
$ ( '#tip' ) . css ( 'top' , $ ( window ) . scrollTop () + 20 ) . show ();
})
. on ( 'mouseenter' , '.f, #tip' , function ()
{
clearTimeout ( tipTimeout );
var lock = Math . min ( parseInt ( $ ( '#tip' ) . attr ( 'lock' )) + 1 , 2 );
$ ( '#tip' ) . attr ( 'lock' , lock );
})
. on ( 'mouseleave' , '.f, #tip' , function ()
{
var lock = Math . max ( parseInt ( $ ( '#tip' ) . attr ( 'lock' )) - 1 , 0 );
$ ( '#tip' ) . attr ( 'lock' , lock );
tipTimeout = setTimeout ( function () { if ( $ ( '#tip' ) . attr ( 'lock' ) == 0 ) hideTip (); }, 100 );
})
. on ( 'mousemove' , '.f, #tip' , function ( e )
{
if ( e . pageX > $ ( document ) . width () * 0.5 ) hideTip ();
});
});
</ script >
2025-02-11 20:25:11 +03:00
< tr >
< td class = " main " >
2025-02-15 04:54:12 +03:00
2025-02-11 20:25:11 +03:00
< center >
< h1 > Фотоконкурс </ h1 >
2025-02-15 04:54:12 +03:00
< 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 >
2025-02-11 20:25:11 +03:00
< div style = " margin-top:20px " > Чтобы проголосовать , отметьте одну , две или три фотографии , которые Вам понравились </ div >< br >< br >
2025-02-15 04:54:12 +03:00
< ? php
if ( DB :: query ( 'SELECT status FROM contests WHERE status=2' )[ 0 ][ 'status' ] != 2 ) {
2025-02-17 22:10:46 +03:00
$contest = DB :: query ( 'SELECT * FROM contests WHERE status=1' )[ 0 ];
2025-02-15 04:54:12 +03:00
echo ' < div class = " p20 " >
2025-02-11 20:25:11 +03:00
< h4 > Сейчас конкурс не проводится . Пожалуйста , заходите позже .</ h4 >
2025-02-17 22:10:46 +03:00
</ div >
2025-02-16 06:18:52 +03:00
< script > startCountdown ( ' . $contest[' openpretendsdate '] . ' ); </ script >
< h2 > Следующий Фотоконкурс будет через :</ h2 >
< h1 id = " countdown " ></ h1 > ' ;
2025-02-15 04:54:12 +03:00
} else { ?>
< div id = " tip " lock = " 0 " >< span id = " img " ></ span ></ div >
2025-02-16 06:18:52 +03:00
< ? php
2025-02-17 22:10:46 +03:00
$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' ]));
2025-02-16 06:18:52 +03:00
foreach ( $photos_contest as $pc ) {
2025-02-17 22:10:46 +03:00
$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 " >
2025-02-15 04:54:12 +03:00
< div class = " p20p " >
< table >
< tr >
2025-02-17 22:10:46 +03:00
< td >< a href = " # " pid = " '. $pc['id'] .' " class = " contestBtn'. $class .' " ></ a ></ td >
< 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 КБ " >
2025-02-15 04:54:12 +03:00
< div class = " hpshade " >
2025-02-17 22:10:46 +03:00
< div class = " eye-icon " > '.DB::query(' SELECT COUNT ( * ) FROM photos_views WHERE photo_id =: id ', array(' : id '=>$p[' id ']))[0][' COUNT ( * ) '].' </ div >
2025-02-15 04:54:12 +03:00
</ div >
</ a ></ td >
< td class = " pb_descr " >
2025-02-17 22:10:46 +03:00
< p > '.htmlspecialchars($pc[' postbody ']).' </ p >
< p >< b class = " pw-place " > '.htmlspecialchars($pc[' place ']).' </ b ></ p >
< p class = " sm " >< b > '.Date::zmdate($pc[' posted_at ']).' </ b >< br > Автор : < a href = " /author/'. $pc['user_id'] .'/ " > '.$user->i(' username ').' </ a ></ p >
</ td >
2025-02-15 04:54:12 +03:00
</ tr >
</ table >
2025-02-16 06:18:52 +03:00
</ div > ' ;
}
?>
2025-02-17 22:10:46 +03:00
2025-02-15 04:54:12 +03:00
< br > Число проголосовавших : < b > 3 </ b >< br > Число голосов : < b > 6 </ b >< br >< br >
2025-02-11 20:25:11 +03:00
</ center >
2025-02-15 04:54:12 +03:00
< ? php }
?>
2025-02-11 20:25:11 +03:00
2025-02-15 04:54:12 +03:00
< br >
2025-02-11 20:25:11 +03:00
2025-02-15 04:54:12 +03:00
</ center >
</ td >
</ tr >
2025-02-11 20:25:11 +03:00
2025-02-15 04:54:12 +03:00
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/Footer.php' ); ?>
</ tr >
2025-02-11 20:25:11 +03:00
</ table >
< script >
2025-02-15 04:54:12 +03:00
// Установите дату и время, до которого нужно отсчитывать
const countdownDate = new Date ( " Mar 1, 2025 00:00:00 " ) . getTime ();
// Обновляем отсчет каждую секунду
const x = setInterval ( function () {
// Получаем текущее время
const now = new Date () . getTime ();
// Вычисляем разницу между целевой датой и текущим временем
const distance = countdownDate - now ;
// Вычисляем дни, часы, минуты и секунды
const days = Math . floor ( distance / ( 1000 * 60 * 60 * 24 ));
const hours = Math . floor (( distance % ( 1000 * 60 * 60 * 24 )) / ( 1000 * 60 * 60 ));
const minutes = Math . floor (( distance % ( 1000 * 60 * 60 )) / ( 1000 * 60 ));
const seconds = Math . floor (( distance % ( 1000 * 60 )) / 1000 );
// Отображаем результат в элементе с id "countdown"
document . getElementById ( " countdown " ) . innerHTML =
days + " : " + hours + " : " + minutes + " : " + seconds ;
// Если отсчет завершен, выводим сообщение
if ( distance < 0 ) {
clearInterval ( x );
document . getElementById ( " countdown " ) . innerHTML = " Время истекло! " ;
}
}, 1000 );
</ script >
2025-02-11 20:25:11 +03:00
</ body >
</ html >