Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom_хлудеев.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.58 Mб
Скачать

Додатки

до пояснювальної записки дипломної роботи

Додаток а Лістинг програмного коду

Скрипт отправки заявки на участие в баттле - reqbattle.php

<?php

if (!defined('NGCMS')) die ('HAL');

register_plugin_page('reqbattle','','write_req');

function write_req(){

global $catz, $twig, $catmap, $mysql, $config, $userROW, $tpl, $parse, $template, $lang, $PFILTERS, $SYSTEM_FLAGS, $SUPRESS_TEMPLATE_SHOW, $CurrentHandler;

$tpath = locatePluginTemplates(array('reqbattle','writereq'), 'reqbattle', pluginGetVariable('reqbattle', 'localsource'));

// Подключение шаблона

$xt = $twig->loadTemplate($tpath['writereq'].'writereq.tpl');

// Проверка авториирован ли пользователь

if(is_array($userROW)){

$auth = 1;

} else {

$auth = 0;

}

// Проверка отправлена ли форма

if($_REQUEST['sendreq']){

$send = 1;

} else {

$send = 0;

}

$monthNum = array(1,2,1,0,1,0,1,1,0,1,0,1);

$curDay = date(j) + 2;

$curNumMon = date(m) + 1;

if($monthNum[$curNumMon] == 1){

$dayMon = 31;

}

elseif($monthNum[$curNumMon] == 2){

$v = date(Y);

if($v%4){

$dayMon = 28;

}

else{

$dayMon = 29;

}

}

else{

$dayMon = 30;

}

for($i=$curDay; $i<$dayMon+1; $i++){

$arrDays[] = $i;

}

for($i=0; $i<24; $i++){

if($i < 10){

$arrHour[] = '0'.$i;

}

else{

$arrHour[] = $i;

}

}

for($i=00; $i<6; $i++){

if($i==0){

$arrMin[] = '0'.$i;

}

else{

$arrMin[] = $i*10;

}

}

$idUser = isset($_REQUEST['id'])?$_REQUEST['id']:'';

if($_REQUEST['sendreq']){

$player1 = $idUser;

$player2 = $userROW['id'];

$date = strftime('%Y-%m').'-'.$_REQUEST['day'].' '.$_REQUEST['hour'].':'.$_REQUEST['min'].':00';

$typebattle = isset($_REQUEST['type'])?$_REQUEST['type']:'';

$theme = isset($_REQUEST['ntheme'])?$_REQUEST['ntheme']:'';

$durh = isset($_REQUEST['durh'])?$_REQUEST['durh'].':00:00':'';

// Вставка новой строки в таблицу

$mysql->query('INSERT

INTO '.prefix.'_battlelist

SET

player1=\''.$player1.'\', player2=\''.$player2.'\',

date=\''.$date.'\', battletype=\''.$typebattle.'\',

theme=\''.$theme.'\', duration=\''.$durh.'\'');

}

// Проверка был ли получен id пользователя для отправки заявки

if($_REQUEST['id']){

foreach($mysql->select('SELECT name, photo, xfields_name, xfields_surname FROM '.prefix.'_users WHERE id='.$idUser) as $row)

{

$tEntry[] = array (

'id' => $idUser,

'name' => $row['name'],

'photo' => ($row['photo']!='')?photos_url.'/thumb/'.$row['photo']:'/templates/default/img/user.jpg',

'fullname' => $row['xfields_name'],

'surname' => $row['xfields_surname'],

);

}

$idact = 1;

}

else{

$idact = 0;

}

$tVars = array(

'entries' => isset($tEntry)?$tEntry:'',

'days' => $arrDays,

'hour' => $arrHour,

'min' => $arrMin,

'authU' => $auth,

'idact' => $idact,

'send' => $send,

'myprofile' => $userROW['name'],

);

$template['vars']['mainblock'] = $xt->render($tVars);

}

Скрипт отображения баттла - battlearena.php

<?php

if (!defined('NGCMS')) die ('HAL');

register_plugin_page('battlearena','','showarena');

function showarena(){

global $catz, $twig, $catmap, $mysql, $config, $userROW, $tpl, $parse, $template, $lang, $PFILTERS, $SYSTEM_FLAGS, $SUPRESS_TEMPLATE_SHOW, $CurrentHandler;

$tpath = locatePluginTemplates(array('battlearena','arena'), 'battlearena', pluginGetVariable('battlearena', 'localsource'));

$xt = $twig->loadTemplate($tpath['arena'].'arena.tpl');

if($_REQUEST['battle']){

$battleinfo = $mysql->record('SELECT * FROM '.prefix.'_battlelist WHERE id='.(int)$_REQUEST['battle'].' AND (status=3 OR status=4)');

if($battleinfo != ''){

$playerinfo = $mysql->select('SELECT id, name, photo, ip, xfields_name, xfields_surname FROM '.prefix.'_users WHERE id IN('.$battleinfo['player1'].', '.$battleinfo['player2'].')');

$voteinfo = $mysql->record('SELECT userid FROM '.prefix.'_votebattle WHERE userid='.$userROW['id'].' AND battleid='.$battleinfo['id']);

$noneBattle = 0;

}else{

$noneBattle = 1;

}

}

else{

$noneBattle = 1;

}

$t = time();

$dur = $battleinfo['duration'];

$date = $battleinfo['date'];

$hourDate = date('H', strtotime($date));

$battMinSec = date('i:s', strtotime($date));

$hourDur = date('H', strtotime($dur));

$end = $hourDate + $hourDur;

$plusday = 0;

if($end > 23){

$end %= 24;

$plusday = 86400;

}

$endDate = date('Y-m-d ', strtotime($date)+$plusday).$end.':'.$battMinSec;

if(strtotime($endDate) <= time()){

$over = 1;

}else{

$over = 0;

$timer = getdate(strtotime($endDate));

}

for($i=1; $i<3; $i++){

$playerinfo[$i-1]['joke'] = $battleinfo['joke_pl'.$i];

$playerinfo[$i-1]['vote'] = $battleinfo['vote_pl'.$i];

}

if($_POST['plvote']){

$mysql->query('UPDATE '.prefix.'_battlelist SET vote_pl'.$_REQUEST['plvote'].'=vote_pl'.$_REQUEST['plvote'].'+1 WHERE id='.$battleinfo['id']);

$mysql->query('INSERT INTO '.prefix.'_votebattle SET userid=\''.$userROW['id'].'\', battleid=\''.$battleinfo['id'].'\', plnum=\''.$_REQUEST['plvote'].'\', ip=\''.$userROW['ip'].'\'');

}

if($over){

if($playerinfo[0]['vote'] > $playerinfo[1]['vote']){

$playerWin = 1;

$playerDef = 2;

}

else{

$playerWin = 2;

$playerDef = 1;

}

$playerinfo[$playerWin-1]['winner'] = $playerWin;

}

if($over && !$noneBattle && !$battleinfo['winner']){

echo 1;

$mysql->query('UPDATE '.prefix.'_battlelist SET status=4, winner='.$playerinfo[$playerWin-1]['id'].' WHERE id='.$battleinfo['id']);

$mysql->query("UPDATE ".uprefix."_users SET count_win=count_win+1 where id=".$playerinfo[$playerWin-1]['id']);

$mysql->query("UPDATE ".uprefix."_users SET count_defeat=count_defeat+1 where id=".$playerinfo[$playerDef-1]['id']);

}

($voteinfo='')?$vote=0:$vote=1;

$tVars = array(

'noBattle' => $noneBattle,

'curtime' => time(),

'dur' => $battleinfo['duration'],

'timer' => $timer,

'player1' => $playerinfo[0],

'player2' => $playerinfo[1],

'vote' => $vote,

'over' => $over,

);

$template['vars']['mainblock'] = $xt->render($tVars);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]