2023-03-04 23:45:46 +00:00
< ? php
2023-11-12 18:12:42 +00:00
if ( ! DEFINED ( 'EGP' ))
exit ( header ( 'Refresh: 0; URL=http://' . $_SERVER [ 'SERVER_NAME' ] . '/404' ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
class graph
{
public static function full ( $server , $slots , $key , $time )
2023-03-04 23:45:46 +00:00
{
2023-11-12 18:12:42 +00:00
// Массивы данных
$aData = graph :: graph_data ( $time , $server , $slots );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aOnline = $aData [ 'online' ];
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aCPU = $aData [ 'cpu' ];
$aRAM = $aData [ 'ram' ];
$aHDD = $aData [ 'hdd' ];
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData = new pData ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Онлайн
$MyData -> addPoints ( $aOnline , 'ONLINE' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// CPU
$MyData -> addPoints ( $aCPU , 'CPU' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// RAM
$MyData -> addPoints ( $aRAM , 'RAM' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// HDD
$MyData -> addPoints ( $aHDD , 'HDD' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Время
$MyData -> addPoints ( $aData [ 'time' ], 'TIME' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData -> setSerieOnAxis ( 'CPU' , 1 );
$MyData -> setSerieOnAxis ( 'RAM' , 1 );
$MyData -> setSerieOnAxis ( 'HDD' , 1 );
$MyData -> setAxisPosition ( 1 , AXIS_POSITION_RIGHT );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData -> setAxisName ( 0 , 'Онлайн' );
$MyData -> setAxisName ( 1 , 'Нагрузка %' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData -> setAbscissa ( 'TIME' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Сечение линии
$MyData -> setSerieTicks ( 'ONLINE' , 4 );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Цвет линий
$MyData -> setPalette ( 'ONLINE' , array ( 'R' => 68 , 'G' => 148 , 'B' => 224 ));
$MyData -> setPalette ( 'CPU' , array ( 'R' => 216 , 'G' => 65 , 'B' => 65 ));
$MyData -> setPalette ( 'RAM' , array ( 'R' => 26 , 'G' => 150 , 'B' => 38 ));
$MyData -> setPalette ( 'HDD' , array ( 'R' => 205 , 'G' => 196 , 'B' => 37 ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture = new pImage ( 896 , 220 , $MyData );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawFilledRectangle ( 0 , 0 , 896 , 220 , array ( 'R' => 255 , 'G' => 255 , 'B' => 255 ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawRectangle ( 0 , 0 , 895 , 219 , array ( 'R' => 221 , 'G' => 221 , 'B' => 221 ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> setFontProperties ( array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 ));
$myPicture -> setGraphArea ( 40 , 20 , 616 , 190 );
$myPicture -> drawFilledRectangle ( 40 , 20 , 616 , 190 , array ( 'R' => 240 , 'G' => 242 , 'B' => 242 , 'Alpha' => 100 ));
$myPicture -> drawScale ( array ( 'XMargin' => 5 , 'YMargin' => 5 , 'GridR' => 76 , 'GridG' => 109 , 'GridB' => 120 , 'LabelSkip' => 0 , 'DrawSubTicks' => TRUE , 'Mode' => SCALE_MODE_MANUAL , 'Factors' => array ( 0 => array ( $slots ), 1 => array ( 25 , 50 , 75 , 100 )), 'ManualScale' => array ( 0 => array ( 'Min' => 0 , 'Max' => $slots ), 1 => array ( 'Min' => 0 , 'Max' => 100 ))));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawText ( 676 , 34 , 'Средний онлайн: ' . graph :: average ( $aOnline ), array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 54 , 'Средняя нагрузка (CPU): ' . graph :: average ( $aCPU ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 74 , 'Средняя нагрузка (RAM): ' . graph :: average ( $aRAM ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 94 , 'Средняя нагрузка (HDD): ' . graph :: average ( $aHDD ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawText ( 676 , 129 , 'Максимальный онлайн: ' . max ( $aOnline ), array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 153 , 'Максимальная нагрузка (CPU): ' . max ( $aCPU ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 173 , 'Максимальная нагрузка (RAM): ' . max ( $aRAM ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
$myPicture -> drawText ( 676 , 193 , 'Максимальная нагрузка (HDD): ' . max ( $aHDD ) . '%' , array ( 'R' => 25 , 'G' => 25 , 'B' => 25 , 'FontName' => LIB . 'games/graph/fonts/arianamu.ttf' , 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMLEFT ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> setFontProperties ( array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 7 ));
$myPicture -> drawSplineChart ();
$myPicture -> setShadow ( FALSE );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawLegend ( 466 , 10 , array ( 'Style' => LEGEND_NOBORDER , 'Mode' => LEGEND_HORIZONTAL ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> render ( TEMP . ( md5 ( $key . 'full_' . $time )) . '.png' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
unset ( $MyData , $myPicture );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
return NULL ;
}
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
public static function first ( $server , $aPoints , $aStyle , $style , $key )
{
global $cfg , $aGname ;
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData = new pData ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Значения
$MyData -> addPoints ( $aPoints , 'ONLINE' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$MyData -> addPoints ( array ( VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID ), 'NONE' );
$MyData -> setAbscissa ( 'NONE' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Цвет линии
$MyData -> setPalette ( 'ONLINE' , $aStyle [ $style ][ 'line' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Размер баннера
$myPicture = new pImage ( 160 , 248 , $MyData );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Цвет фона
$myPicture -> drawFilledRectangle ( 0 , 0 , 160 , 248 , $aStyle [ $style ][ 'fon' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Обводка
$myPicture -> drawRectangle ( 0 , 0 , 159 , 247 , $aStyle [ $style ][ 'border' ]);
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Шрифт текста
$myPicture -> setFontProperties ( array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 5 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Размер графика
$myPicture -> setGraphArea ( 35 , 160 , 150 , 210 );
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Цвет фона графика
$myPicture -> drawFilledRectangle ( 35 , 160 , 150 , 210 , $aStyle [ $style ][ 'graph' ]);
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// График
$myPicture -> drawScale ( array ( 'XMargin' => 5 , 'YMargin' => 5 , 'CycleBackground' => TRUE , 'LabelSkip' => 0 , 'DrawSubTicks' => TRUE , 'Mode' => SCALE_MODE_MANUAL , 'Factors' => array ( 0 => array ( $server [ 'slots_start' ])), 'ManualScale' => array ( 0 => array ( 'Min' => 0 , 'Max' => $server [ 'slots_start' ]))));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Название игрового сервера
$myPicture -> drawFilledRectangle ( 0 , 0 , 18 , 248 , $aStyle [ $style ][ 'leftbox' ]);
$myPicture -> drawText ( 14 , 245 , $server [ 'name' ], array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'Angle' => 90 , 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 10 )));
$myPicture -> drawFilledRectangle ( 0 , 0 , 18 , 5 , $aStyle [ $style ][ 'leftbox' ]);
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Адрес игрового сервера
$myPicture -> drawFilledRectangle ( 25 , 5 , 153 , 18 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 28 , 17 , 'Адрес сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 26 , 30 , $server [ 'address' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Статус игрового сервера
$myPicture -> drawFilledRectangle ( 25 , 35 , 153 , 48 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 28 , 47 , 'Состояние сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 26 , 62 , graph :: status ( $server [ 'status' ], $server [ 'map' ]), array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Игроки на игровом сервере
$myPicture -> drawFilledRectangle ( 25 , 65 , 153 , 78 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 28 , 77 , 'Игроки на сервере' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 26 , 92 , $server [ 'online' ] . ' / ' . $server [ 'slots_start' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Полоска загрузки
$myPicture -> drawProgress ( 83 , 82 , ceil ( $server [ 'slots_start' ] / 100 * $server [ 'online' ]), array_merge ( $aStyle [ $style ][ 'progress' ], array ( 'Width' => 70 , 'Height' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Тип игрового сервера
$myPicture -> drawFilledRectangle ( 25 , 95 , 153 , 108 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 28 , 107 , 'Тип сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 26 , 122 , $aGname [ $server [ 'game' ]], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Хостинг игровых серверов
$myPicture -> drawText ( 89 , 230 , $cfg [ 'graph' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMMIDDLE )));
$myPicture -> drawText ( 89 , 245 , 'Хостинг игровых серверов' , array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontSize' => 8 , 'Align' => TEXT_ALIGN_BOTTOMMIDDLE )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawSplineChart ();
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> render ( TEMP . ( md5 ( $key . $style . 'first' )) . '.png' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
unset ( $MyData , $myPicture );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
return NULL ;
}
public static function second ( $server , $aPoints , $aStyle , $style , $key )
{
global $cfg , $aGname ;
$MyData = new pData ();
// Значения
$MyData -> addPoints ( $aPoints , 'ONLINE' );
$MyData -> addPoints ( array ( VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID , VOID ), 'NONE' );
$MyData -> setAbscissa ( 'NONE' );
// Цвет линии
$MyData -> setPalette ( 'ONLINE' , $aStyle [ $style ][ 'line' ]);
// Размер баннера
$myPicture = new pImage ( 560 , 95 , $MyData );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Цвет фона
$myPicture -> drawFilledRectangle ( 0 , 0 , 560 , 95 , $aStyle [ $style ][ 'fon' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Название игрового сервера
$myPicture -> drawFilledRectangle ( 5 , 5 , 410 , 18 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 8 , 17 , 'Название сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 6 , 31 , $server [ 'name' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Костыль для "обрезания" названия сервера
$myPicture -> drawFilledRectangle ( 405 , 19 , 560 , 35 , $aStyle [ $style ][ 'fon' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Обводка
$myPicture -> drawRectangle ( 0 , 0 , 559 , 94 , $aStyle [ $style ][ 'border' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Шрифт текста
$myPicture -> setFontProperties ( array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 5 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Размер графика
$myPicture -> setGraphArea ( 430 , 5 , 554 , 60 );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Цвет фона графика
$myPicture -> drawFilledRectangle ( 430 , 5 , 554 , 60 , $aStyle [ $style ][ 'graph' ]);
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// График
$myPicture -> drawScale ( array ( 'XMargin' => 5 , 'YMargin' => 5 , 'CycleBackground' => TRUE , 'LabelSkip' => 0 , 'DrawSubTicks' => TRUE , 'Mode' => SCALE_MODE_MANUAL , 'Factors' => array ( 0 => array ( $server [ 'slots_start' ])), 'ManualScale' => array ( 0 => array ( 'Min' => 0 , 'Max' => $server [ 'slots_start' ]))));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Адрес игрового сервера
$myPicture -> drawFilledRectangle ( 5 , 36 , 210 , 49 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 8 , 48 , 'Адрес сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 6 , 62 , $server [ 'address' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
// Статус игрового сервера
$myPicture -> drawFilledRectangle ( 215 , 36 , 410 , 49 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 218 , 48 , 'Состояние сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 216 , 62 , graph :: status ( $server [ 'status' ], $server [ 'map' ]), array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Игроки на игровом сервере
$myPicture -> drawFilledRectangle ( 5 , 67 , 210 , 80 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 8 , 79 , 'Игроки на сервере' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 6 , 93 , $server [ 'online' ] . ' / ' . $server [ 'slots_start' ], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Полоска загрузки
$myPicture -> drawProgress ( 90 , 83 , ceil ( $server [ 'slots_start' ] / 100 * $server [ 'online' ]), array_merge ( $aStyle [ $style ][ 'progress' ], array ( 'Width' => 120 , 'Height' => 8 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Тип игрового сервера
$myPicture -> drawFilledRectangle ( 215 , 67 , 410 , 80 , $aStyle [ $style ][ 'box' ]);
$myPicture -> drawText ( 218 , 79 , 'Тип сервера' , array_merge ( $aStyle [ $style ][ 'boxcolor' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
$myPicture -> drawText ( 216 , 91 , $aGname [ $server [ 'game' ]], array_merge ( $aStyle [ $style ][ 'color' ], array ( 'FontName' => LIB . 'games/graph/fonts/tahoma.ttf' , 'FontSize' => 8 )));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
// Хостинг игровых серверов
$myPicture -> drawText ( 490 , 77 , $cfg [ 'graph' ], array ( 'FontSize' => 10 , 'Align' => TEXT_ALIGN_BOTTOMMIDDLE ));
$myPicture -> drawText ( 490 , 90 , 'Хостинг игровых серверов' , array ( 'FontSize' => 8 , 'Align' => TEXT_ALIGN_BOTTOMMIDDLE ));
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> drawSplineChart ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$myPicture -> render ( TEMP . ( md5 ( $key . $style . 'second' )) . '.png' );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
unset ( $MyData , $myPicture );
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
return NULL ;
}
2023-03-05 13:59:34 +00:00
2023-11-12 18:12:42 +00:00
public static function online_day ( $server , $max )
{
global $sql , $start_point ;
$time = $start_point - 86400 ;
$aOnline = array ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aSel = array ();
2023-05-05 01:17:19 +00:00
2023-11-12 18:12:42 +00:00
$sql -> query ( 'SELECT `online` FROM `graph_hour` WHERE `server`="' . $server . '" AND `time`>"' . $time . '" ORDER BY `id` DESC LIMIT 24' );
while ( $value = $sql -> get ())
$aSel [] = $value [ 'online' ];
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$n = count ( $aSel );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$n = $n > 1 ? $n - 1 : 0 ;
if ( $n ) {
for ( $i = $n ; $i >= 0 ; $i -= 1 )
$aOnline [] = $aSel [ $i ] > $max ? $max : $aSel [ $i ];
}
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$add = count ( $aOnline );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
if ( $add < 24 ) {
for ( $i = $n ; $i <= 23 ; $i += 1 )
$aOnline [] = 0 ;
}
return $aOnline ;
}
private static function graph_data ( $period , $server , $max )
{
global $sql , $start_point ;
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aData = array (
'limit' => array (
'day' => 24 ,
'week' => 7 ,
'month' => 30
),
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
'for' => array (
'day' => 23 ,
'week' => 6 ,
'month' => 29
),
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
'from' => array (
'day' => 'graph_hour' ,
'week' => 'graph_day' ,
'month' => 'graph_day'
),
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
'time' => array (
'day' => 86400 ,
'week' => 604800 ,
'month' => 2592000
)
);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$time = $start_point - $aData [ 'time' ][ $period ];
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aOnline = array ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aCPU = array ();
$aRAM = array ();
$aHDD = array ();
$aTime = array ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$aSel = array ();
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$sql -> query ( 'SELECT `online`, `cpu`, `ram`, `hdd`, `time` FROM `' . $aData [ 'from' ][ $period ] . '` WHERE `server`="' . $server . '" AND `time`>"' . $time . '" ORDER BY `id` DESC LIMIT ' . $aData [ 'limit' ][ $period ]);
while ( $value = $sql -> get ())
$aSel [] = array ( 'online' => $value [ 'online' ], 'cpu' => $value [ 'cpu' ], 'ram' => $value [ 'ram' ], 'hdd' => $value [ 'hdd' ], 'time' => $value [ 'time' ]);
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$n = count ( $aSel );
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$n = $n > 1 ? $n - 1 : 0 ;
2023-03-04 23:45:46 +00:00
2023-11-12 18:12:42 +00:00
$next = true ;
if ( isset ( $aSel [ $n ][ 'online' ])) {
for ( $i = $n ; $i >= 0 ; $i -= 1 ) {
$aOnline [] = $aSel [ $i ][ 'online' ] > $max ? $max : $aSel [ $i ][ 'online' ];
$aCPU [] = $aSel [ $i ][ 'cpu' ];
$aRAM [] = $aSel [ $i ][ 'ram' ];
$aHDD [] = $aSel [ $i ][ 'hdd' ];
if ( $next ) {
$aTime [] = VOID ;
$next = false ;
} else {
$aTime [] = $period == 'day' ? date ( 'H:i' , $aSel [ $i ][ 'time' ]) : date ( 'd.m' , $aSel [ $i ][ 'time' ]);
$next = true ;
}
}
}
$add = count ( $aOnline );
for ( $i = $add ; $i <= $aData [ 'for' ][ $period ]; $i += 1 ) {
$aOnline [] = 0 ;
$aCPU [] = 0 ;
$aRAM [] = 0 ;
$aHDD [] = 0 ;
$aTime [] = VOID ;
}
return array ( 'online' => $aOnline , 'cpu' => $aCPU , 'ram' => $aRAM , 'hdd' => $aHDD , 'time' => $aTime );
}
private static function status ( $status , $map )
{
switch ( $status ) {
case 'working' :
return 'Карта: ' . $map ;
case 'off' :
return 'Статус: выключен' ;
case 'start' :
return 'Статус: запускается' ;
case 'restart' :
return 'Статус: перезапускается' ;
case 'change' :
return 'Статус: меняется карта' ;
case 'install' :
return 'Статус: устанавливается' ;
case 'reinstall' :
return 'Статус: переустанавливается' ;
case 'update' :
return 'Статус: обновляется' ;
case 'recovery' :
return 'Статус: восстанавливается' ;
case 'overdue' :
return 'Статус: просрочен' ;
case 'blocked' :
return 'Статус: заблокирован' ;
}
}
private static function average ( $arr )
{
return ! count ( $arr ) ? 0 : ceil ( array_sum ( $arr ) / count ( $arr ));
}
}
2023-05-05 01:17:19 +00:00
2023-03-04 23:45:46 +00:00
?>