пятница, 27 июля 2012 г.

о сайте да о скриптике MMOTOP

Фух, что-то закрутился я и забыл выложить пару апдейтов, но фанаты сайта не дремлют, бомбардируют асю. Спасибо им за это.
На самом деле, как то неуклюже я состряпал скрипты голосования, даже не сами а парсер. А точнее парсер ммо топа. В сайте он пока стандартный, но я уже начал клепать класс - заготовочку, так сказать, для удобства.

/**
* Класс, читающий статистику, предоставляемую ММО ТОПом по контролю голосования на сервере
* v 0.1
**/
class MMOTop
{
/**
* Получает текстовый файл контента с MMOTOPa
* @content - string адрес файла статистике на ММО ТОПЕ (узнается в пункте меню "статистика" в панеле пользователя на ммо топе)
* @type - int если равен 0, то Сортирует массив по ключам, сохраняя отношения между ключами и значениями от большего к меньшему. В случае с топом, сортирует голоса по дате от старых к новым
* возвращает массив со строками
**/
function get_content($content, $type=0)
{
$contentZ = file_get_contents($content);
$m = explode("\n", $contentZ);
if ($type == 0) krsort($m);
return array_diff($m, array(null));
}

/**
* возвращает массив с голосами формата
* [0] = voter ID [1] = date [2] = IP [3] = Nick(account) [4] = votes
* @ar - массив, возвращенный функцией get_content
* @t - int если, то преобразует дату в время (ф-я time())
**/
function getVoteArray($ar,$t=0)
{
$i=0;
foreach($ar as $id=>$value)
{
$asd=explode(" ",$value);
$r[$i][0]=$asd[0]; // voter ID
if ($t==0) $r[$i][1]=strtotime($asd[1]);
else $r[$i][1]=$asd[1]; // date
$r[$i][2]=$asd[2]; // IP
$r[$i][3]=$asd[3]; // Nick(Account)
$r[$i][4]=$asd[4]; // votes (1 - simple 2 - sms)
$i++;
}
return $r;
}

/**
* Функция принимает @address (string) адрес статистики ммо топа
* возврашает массив [n] = {[0]=voter ID [1]=date [2]=IP [3]=Nick(Account) [4] = votes}
**/
function ReadTop($address)
{
$array = MMOTop::get_content($address);
return MMOTop::getVoteArray($array);
}

function MWCreadTop ($adr, $topnum,)
{

}
/**
* Ищет в массиве @votequery сответсвие @value
* возвращает индекс первого найденного соотвествия
**/
function findmatch($value,$votequery)
{
foreach ($votequery as $id=>$oa)
{
if(trim($oa[0])==$value)return $id;
}
return -1;
}
}

в общем то пока подключив данный скрипт и набрав
$votear = MMOTop::ReadTop(<адрес стаститсики>);
можно получить двумерный массив с проголосовавшими, причем по дефолту он будет по возрастанию даты
в методе  MWCreadTop я подумываю реализовть уже исполнение непосредственно для моего движка 

Комментариев нет:

Отправить комментарий