80 lines
2.2 KiB
PHP
80 lines
2.2 KiB
PHP
<?php
|
|
|
|
|
|
namespace mt;
|
|
|
|
|
|
class EventRanking
|
|
{
|
|
public static function find($id){
|
|
$arr = array();
|
|
foreach (self::getMetaList() as $meta) {
|
|
if ($meta['id'] == $id ){
|
|
$arr = $meta;
|
|
}
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
public static function findByWaveOrType($wave,$type){
|
|
$arr = array();
|
|
foreach (self::getMetaList() as $meta) {
|
|
if ($meta['wave'] == $wave && $meta['themeType'] == $type ){
|
|
$arr = $meta;
|
|
}
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
public static function getEventRankingList(){
|
|
$currentMeta = self::getCurrentRanking();
|
|
$wave = $currentMeta?$currentMeta['wave']:1;
|
|
$list = array();
|
|
foreach (self::getMetaList() as $meta) {
|
|
if ($meta['wave'] == $wave){
|
|
array_push($list,self::setState($meta));
|
|
}
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
public static function getCurrentRanking()
|
|
{
|
|
foreach (self::getMetaList() as $meta) {
|
|
if (myself()->_getNowTime() >= strtotime($meta['startTime']) &&
|
|
myself()->_getNowTime() <= strtotime($meta['endTime'])) {
|
|
return $meta;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
protected static function setState($meta){
|
|
$row = array(
|
|
'id' => $meta['id'],
|
|
'wave' => $meta['wave'],
|
|
'themeType' => $meta['themeType'],
|
|
'themeName' => $meta['themeName'],
|
|
'startTime' => strtotime($meta['startTime']),
|
|
'endTime' => strtotime($meta['endTime']),
|
|
);
|
|
$now = myself()->_getNowTime();
|
|
switch ($now){
|
|
case $now < strtotime($meta['startTime'] ) : $row['status'] = 2;break;
|
|
case $now >= strtotime($meta['startTime']) && $now <= strtotime($meta['endTime']) : $row['status'] = 1;break;
|
|
case $now >= strtotime($meta['endTime']) : $row['status'] = 0;break;
|
|
}
|
|
return $row;
|
|
}
|
|
|
|
protected static function getMetaList()
|
|
{
|
|
if (!self::$metaList) {
|
|
self::$metaList = getMetaTable('eventRanking@EventRanking.php');
|
|
}
|
|
return self::$metaList;
|
|
}
|
|
|
|
protected static $metaList;
|
|
|
|
} |