2021-01-20 04:41:37 +01:00
< ? php
2021-01-22 01:22:50 +01:00
class idlersConfig
{
2021-01-22 01:21:50 +01:00
const PAGE_TITLE = 'My idlers' ;
const PAGE_DESC = 'My idlers listing server, shared hosting and domains information and data.' ;
const SRV_SORT_TYPE = 'HOSTNAME_ASC' ; //Server card sort type
const SH_SORT_TYPE = 'HOSTNAME_ASC' ; //Shared hosting sort type
const DC_SORT_TYPE = 'HOSTNAME_ASC' ; //Domains sort type
//Options: PRICE_DESC, PRICE_ASC, DUE_DESC, DUE_ASC, OWNED_SINCE_DESC,OWNED_SINCE_ASC, HOSTNAME_DESC & HOSTNAME_ASC
const DB_HOSTNAME = '127.0.0.1' ;
const DB_NAME = 'idlers' ;
const DB_USERNAME = 'root' ;
const DB_PASSWORD = '' ;
2021-01-29 01:20:24 +01:00
//Have slight background color for server table values: was special price and due soon
const COLOR_TABLE = true ;
2021-01-30 01:19:05 +01:00
const DEFAULT_VIEW = 'CARDS' ; //CARDS or TABLE
2021-02-01 04:31:12 +01:00
const SAVE_YABS_OUTPUT = true ; //true or false
2021-02-06 14:58:41 +01:00
const GET_ASN_INFO = true ; //Get ANS name and number
2021-03-17 01:31:43 +01:00
//Failed attempts before ip locked from attempting login
const FAIL_ATTEMPTS_ALLOWED = 4 ;
//Minutes to lock ip for
const IP_LOCK_MINUTES = 10 ;
2021-01-22 01:21:50 +01:00
}
class elementHelpers extends idlersConfig
2021-01-20 04:41:37 +01:00
{
//Minimizes lines used + opening and closing of <?PHP tag
protected function tagOpen ( string $tag = 'div' , string $class = '' , string $id = '' )
{
if ( empty ( $class ) && empty ( $id )) {
$this -> outputString ( " < $tag > " );
} elseif ( empty ( $class ) && ! empty ( $id )) {
$this -> outputString ( " < $tag id=' $id '> " );
} elseif ( ! empty ( $class ) && empty ( $id )) {
$this -> outputString ( " < $tag class=' $class '> " );
} else {
$this -> outputString ( " < $tag class=' $class ' id=' $id '> " );
}
}
protected function tagClose ( string $tag = 'div' , int $amount = 1 )
{
for ( $i = 1 ; $i <= $amount ; $i ++ ) {
$this -> outputString ( " </ $tag > " );
}
}
protected function outputString ( string $string )
{
echo $string ;
}
protected function collapseButton ( string $text , string $href , string $id = 'collapseId' , string $class = 'btn btn-main collapse-btn' , bool $expanded = false )
{
( $expanded ) ? $ex = " true " : $ex = " false " ;
$this -> outputString ( '<a class="' . $class . '" data-toggle="collapse" href="#' . $href . '" id="' . $id . '" role="button" aria-expanded="' . $ex . '">' . $text . '</a>' );
}
protected function HTMLphrase ( string $element = 'p' , string $class = '' , string $text = '' , string $id = '' )
{
if ( empty ( $class )) {
if ( empty ( $id )) {
$this -> tagOpen ( $element );
} else {
$this -> tagOpen ( $element , '' , $id );
}
} else {
if ( empty ( $id )) {
$this -> tagOpen ( $element , $class );
} else {
$this -> tagOpen ( $element , $class , $id );
}
}
$this -> outputString ( $text );
$this -> tagClose ( $element );
}
protected function colOpen ( string $class = 'col-12' )
{
$this -> tagOpen ( 'div' , $class );
}
protected function rowColOpen ( string $row_class = 'row' , string $col_class = 'col-12' )
{
$this -> tagOpen ( 'div' , $row_class );
$this -> tagOpen ( 'div' , $col_class );
}
protected function textInput ( string $name_id , string $value = '' , string $class = 'form-control' , bool $required = false , int $min_length = 0 , int $max_length = 124 )
{
( empty ( $value )) ? $val = '' : $val = " value=' $value ' " ;
( $required ) ? $req = 'required' : $req = '' ;
$this -> outputString ( " <input type='text' id=' $name_id ' name=' $name_id ' class=' $class ' min-length=' $min_length ' max-length=' $max_length ' $val $req > " );
}
protected function numberInput ( string $name_id , string $value = '' , string $class = 'form-control' , bool $required = false , int $min = 0 , int $max = 9999 , string $step = 'any' )
{
( empty ( $value )) ? $val = '' : $val = " value=' $value ' " ;
( $required ) ? $req = 'required' : $req = '' ;
$this -> outputString ( " <input type='number' id=' $name_id ' name=' $name_id ' class=' $class ' min=' $min ' max=' $max ' step=' $step ' $val $req > " );
}
protected function hiddenInput ( string $name_id , string $value = '' )
{
( empty ( $value )) ? $val = '' : $val = " value=' $value ' " ;
$this -> outputString ( " <input type='hidden' id=' $name_id ' name=' $name_id ' $val > " );
}
protected function submitInput ( string $text , string $id = 'submitInput' , string $class = 'btn' )
{
$this -> outputString ( " <input type='submit' class=' $class ' id=' $id ' value=' $text '> " );
}
protected function inputPrepend ( string $text )
{
$this -> outputString ( '<div class="input-group-prepend"><span class="input-group-text">' . $text . '</span></div>' );
}
protected function tagsInput ( string $name_id , string $class = 'form-control' )
{
$this -> outputString ( " <input type='text' id=' $name_id ' name=' $name_id ' class=' $class ' data-role='tagsinput'> " );
}
protected function selectElement ( string $name_id , string $class = 'form-control' )
{
$this -> outputString ( " <select class=' $class ' id=' $name_id ' name=' $name_id '> " );
}
protected function selectOption ( string $text , string $value , bool $selected = false )
{
( $selected ) ? $sel = ' selected' : $sel = '' ;
$this -> outputString ( " <option value=' $value ' $sel > $text </option> " );
}
protected function checkInput ( string $text , string $name_id , string $input_class = 'form-check-input' , string $label_class = 'form-check-label' )
{
$this -> tagOpen ( " div " , " form-check " );
$this -> outputString ( " <input class=' $input_class ' type='checkbox' id=' $name_id ' name=' $name_id '> " );
$this -> outputString ( " <label class=' $label_class ' for=' $name_id '> " );
$this -> outputString ( " <b> $text </b> " );
$this -> tagClose ( " label " );
$this -> tagClose ( " div " );
}
protected function navTabs ( array $names , array $links )
{
$this -> tagOpen ( " ul " , " nav nav-tabs " );
$counter = 0 ;
foreach ( $names as $tab ) {
$this -> tagOpen ( " li " , " nav-item " );
if ( $counter == 0 ) {
$this -> outputString ( '<a class="nav-link active" data-toggle="tab" href="' . $links [ $counter ] . '">' . $tab . '</a>' );
} else {
$this -> outputString ( '<a class="nav-link" data-toggle="tab" href="' . $links [ $counter ] . '">' . $tab . '</a>' );
}
$this -> tagClose ( " li " );
$counter ++ ;
}
$this -> tagClose ( " ul " );
}
2021-01-29 01:20:24 +01:00
protected function tableHeader ( array $headers , string $class = 'table table-striped table-bordered table-sm' , string $id = 'orderTable' )
2021-01-20 04:41:37 +01:00
{
$this -> tagOpen ( 'div' , 'table-responsive' );
2021-01-29 01:20:24 +01:00
$this -> outputString ( " <table class=' $class ' id=' $id '> " );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'thead' );
$this -> tagOpen ( 'tr' );
foreach ( $headers as $th ) {
$this -> outputString ( " <th> $th </th> " );
}
$this -> outputString ( '</tr></thead><tbody>' );
}
2021-01-29 01:20:24 +01:00
protected function tableTd ( string $class , $content )
{
$this -> tagOpen ( 'td' , $class );
$this -> outputString ( $content );
$this -> tagClose ( 'td' );
}
2021-01-20 04:41:37 +01:00
protected function virtSelectOptions ()
{
$this -> selectOption ( 'KVM' , 'KVM' , true );
$this -> selectOption ( 'OVZ' , 'OVZ' );
$this -> selectOption ( 'DEDI' , 'DEDI' );
$this -> selectOption ( 'LXC' , 'LXC' );
}
protected function sharedHostingTypeOptions ()
{
$this -> selectOption ( 'ApisCP' , 'ApisCP' );
$this -> selectOption ( 'Centos' , 'Centos' );
$this -> selectOption ( 'cPanel' , 'cPanel' , true );
$this -> selectOption ( 'Direct Admin' , 'Direct Admin' );
$this -> selectOption ( 'Webmin' , 'Webmin' );
$this -> selectOption ( 'Moss' , 'Moss' );
$this -> selectOption ( 'Other' , 'Other' );
$this -> selectOption ( 'Plesk' , 'Plesk' );
$this -> selectOption ( 'Run cloud' , 'Run cloud' );
$this -> selectOption ( 'Vesta CP' , 'Vesta CP' );
$this -> selectOption ( 'Virtual min' , 'Virtual min' );
}
protected function termSelectOptions ()
{
$this -> selectOption ( 'Monthly' , '1' , true );
$this -> selectOption ( 'Quarterly' , '2' );
$this -> selectOption ( 'Half annual (half year)' , '3' );
$this -> selectOption ( 'Annual (yearly)' , '4' );
$this -> selectOption ( 'Biennial (2 years)' , '5' );
$this -> selectOption ( 'Triennial (3 years)' , '6' );
}
2021-01-25 03:32:46 +01:00
protected function domainTermSelectOptions ()
{
$this -> selectOption ( 'Annual (yearly)' , '4' , true );
$this -> selectOption ( 'Biennial (2 years)' , '5' );
$this -> selectOption ( 'Triennial (3 years)' , '6' );
}
2021-01-20 04:41:37 +01:00
protected function CurrencySelectOptions ()
{
$this -> selectOption ( 'AUD' , 'AUD' );
$this -> selectOption ( 'USD' , 'USD' , true );
$this -> selectOption ( 'GBP' , 'GBP' );
$this -> selectOption ( 'EUR' , 'EUR' );
$this -> selectOption ( 'NZD' , 'NZD' );
$this -> selectOption ( 'JPY' , 'JPY' );
$this -> selectOption ( 'CAD' , 'CAD' );
}
protected function OsSelectOptions ()
{
$this -> selectOption ( 'Centos 7' , '1' );
$this -> selectOption ( 'Centos 8' , '2' );
$this -> selectOption ( 'Centos' , '3' );
$this -> selectOption ( 'Debian 9' , '4' );
$this -> selectOption ( 'Debian 10' , '5' );
$this -> selectOption ( 'Debian' , '6' );
$this -> selectOption ( 'Fedora 32' , '7' );
$this -> selectOption ( 'Fedora 33' , '8' );
$this -> selectOption ( 'Fedora' , '9' );
$this -> selectOption ( 'FreeBSD 11.4' , '10' );
$this -> selectOption ( 'FreeBSD 12.1' , '11' );
$this -> selectOption ( 'FreeBSD' , '12' );
$this -> selectOption ( 'OpenBSD 6.7' , '13' );
$this -> selectOption ( 'OpenBSD 6.8' , '14' );
$this -> selectOption ( 'OpenBSD' , '15' );
$this -> selectOption ( 'Ubuntu 16.04' , '16' );
$this -> selectOption ( 'Ubuntu 18.04' , '17' );
$this -> selectOption ( 'Ubuntu 20.04' , '18' );
$this -> selectOption ( 'Ubuntu 20.10' , '19' );
$this -> selectOption ( 'Ubuntu' , '20' );
$this -> selectOption ( 'Windows Server 2008' , '21' );
$this -> selectOption ( 'Windows Server 2012' , '22' );
$this -> selectOption ( 'Windows Server 2016' , '23' );
$this -> selectOption ( 'Windows Server 2019' , '24' );
$this -> selectOption ( 'Windows 10' , '25' );
$this -> selectOption ( 'Custom' , '26' );
$this -> selectOption ( 'Other' , '27' );
}
}
class helperFunctions extends elementHelpers
{
protected function genID ( int $length = 8 )
{ //Returns an id string
$character_pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_' ;
$char_length = strlen ( $character_pool );
$the_string = '' ;
for ( $i = 0 ; $i < $length ; $i ++ ) {
$the_string .= $character_pool [ mt_rand ( 0 , $char_length - 1 )];
}
return $the_string ;
}
protected function mhzToGhz ( string $mhz , int $decimals = 2 )
{
return number_format ( floatval (( $mhz / 1000 )), $decimals );
}
protected function paymentTerm ( int $term )
{
if ( $term == 1 ) {
return " p/m " ;
} elseif ( $term == 2 ) {
return " p/qtr " ;
} elseif ( $term == 3 ) {
return " p/hy " ;
} elseif ( $term == 4 ) {
return " p/y " ;
} elseif ( $term == 5 ) {
return " p/2y " ;
} elseif ( $term == 6 ) {
return " p/3y " ;
} else {
return " NULL " ;
}
}
protected function costAsPerMonth ( string $cost , int $term )
{
if ( $term == 1 ) {
return $cost ;
} elseif ( $term == 2 ) {
return ( $cost / 3 );
} elseif ( $term == 3 ) {
return ( $cost / 6 );
} elseif ( $term == 4 ) {
return ( $cost / 12 );
} elseif ( $term == 5 ) {
return ( $cost / 24 );
} elseif ( $term == 6 ) {
return ( $cost / 36 );
} else {
return $cost ;
}
}
protected function convertToUSD ( string $amount , string $convert_from )
{
if ( $convert_from == 'AUD' ) {
return ( 0.76 * $amount );
} elseif ( $convert_from == " USD " ) {
return $amount ;
} elseif ( $convert_from == " GBP " ) {
return ( 1.35 * $amount );
} elseif ( $convert_from == " EUR " ) {
return ( 1.23 * $amount );
} elseif ( $convert_from == " NZD " ) {
return ( 0.72 * $amount );
} elseif ( $convert_from == " JPY " ) {
return ( 0.0097 * $amount );
} elseif ( $convert_from == " CAD " ) {
return ( 0.78 * $amount );
} else {
return " " ;
}
}
protected function osIntToIcon ( int $os )
{
if ( $os <= 3 ) { //Centos
return " <i class='fab fa-centos os-icon'></i> " ;
} elseif ( $os > 3 && $os <= 6 ) { //Debain
return " <i class='fab fa-linux os-icon'></i> " ;
} elseif ( $os > 6 && $os < 10 ) { //Fedora
return " <i class='fab fa-fedora os-icon'></i> " ;
} elseif ( $os > 10 && $os < 13 ) { //FreeBSD
return " <i class='fab fa-linux os-icon'></i> " ;
} elseif ( $os > 13 && $os < 16 ) { //OpenBSD
return " <i class='fab fa-linux os-icon'></i> " ;
} elseif ( $os > 15 && $os < 21 ) { //Ubuntu
return " <i class='fab fa-ubuntu os-icon'></i> " ;
} elseif ( $os > 20 && $os < 26 ) { //Windows
return " <i class='fab fa-windows os-icon'></i> " ;
} else { //OTHER ISO CUSTOM etc
return " <i class='fas fa-compact-disc os-icon'></i> " ;
}
}
protected function osIntToString ( int $os )
{
if ( $os == " 1 " ) {
return " CentOS 7 " ;
} elseif ( $os == " 2 " ) {
return " CentOS 8 " ;
} elseif ( $os == " 3 " ) {
return " CentOS " ;
} elseif ( $os == " 4 " ) {
return " Debian 9 " ;
} elseif ( $os == " 5 " ) {
return " Debian 10 " ;
} elseif ( $os == " 6 " ) {
return " Debian " ;
} elseif ( $os == " 7 " ) {
return " Fedora 32 " ;
} elseif ( $os == " 8 " ) {
return " Fedora 33 " ;
} elseif ( $os == " 9 " ) {
return " Fedora " ;
} elseif ( $os == " 10 " ) {
return " FreeBSD 11.4 " ;
} elseif ( $os == " 11 " ) {
return " FreeBSD 12.1 " ;
} elseif ( $os == " 12 " ) {
return " FreeBSD " ;
} elseif ( $os == " 13 " ) {
return " OpenBSD 6.7 " ;
} elseif ( $os == " 14 " ) {
return " OpenBSD 6.8 " ;
} elseif ( $os == " 15 " ) {
return " OpenBSD " ;
} elseif ( $os == " 16 " ) {
return " Ubuntu 16.04 " ;
} elseif ( $os == " 17 " ) {
return " Ubuntu 18.04 " ;
} elseif ( $os == " 18 " ) {
return " Ubuntu 20.04 " ;
} elseif ( $os == " 19 " ) {
return " Ubuntu 20.10 " ;
} elseif ( $os == " 20 " ) {
return " Ubuntu " ;
} elseif ( $os == " 21 " ) {
return " Windows Server 2008 " ;
} elseif ( $os == " 22 " ) {
return " Windows Server 2012 " ;
} elseif ( $os == " 23 " ) {
return " Windows Server 2016 " ;
} elseif ( $os == " 24 " ) {
return " Windows Server 2019 " ;
} elseif ( $os == " 25 " ) {
return " Windows 10 " ;
} elseif ( $os == " 26 " ) {
return " Custom " ;
} elseif ( $os == " 27 " ) {
return " Other " ;
} else {
return " Unknown " ;
}
}
protected function floatValue ( string $string )
{ //Keeps only numbers and . AKA a float
return preg_replace ( '/[^0-9,.]/' , '' , trim ( $string ));
}
protected function intValue ( string $string )
{ //Keeps only numbers AKA an int
return preg_replace ( '/[^0-9]/' , '' , trim ( $string ));
}
protected function removeFloat ( string $string )
{ //Removes float from a string
return ltrim ( preg_replace ( '/[^A-Za-z\-,.]/' , '' , $string ), '.' );
}
protected function trimRemoveR ( string $string )
{ //Removes \r and does a trim()
return trim ( str_replace ( " \r " , '' , $string ));
}
protected function datatype ( string $string )
{ //Formats data type (ram and disk)
if ( strpos ( $string , 'M' ) !== false ) {
return 'MB' ; //Megabytes
} elseif ( strpos ( $string , 'G' ) !== false ) {
return 'GB' ; //Gigabytes
} elseif ( strpos ( $string , 'K' ) !== false ) {
return 'KB' ; //Kilobytes
} elseif ( strpos ( $string , 'T' ) !== false ) {
return 'TB' ; //TeraBytes
} elseif ( strpos ( $string , 'B' ) !== false ) {
return 'BT' ; //Bytes
}
}
public function GBtoMB ( string $gb )
{ //Gigabyte to Megabyte conversion
return floatval (( $gb * 1024 ));
}
protected function TBtoGB ( string $tb )
{ //Terabyte to Gigabyte conversion
return floatval (( $tb * 1024 ));
}
protected function GBpstoMBps ( string $gbps , bool $format = false )
{ //Gigabits to Megabits
$gbps = ( float ) $gbps ;
if ( $format ) {
return floatval ( number_format (( $gbps * 1000 ), 3 ));
} else {
return floatval (( $gbps * 1000 ));
}
}
protected function yabsSpeedLoc ( array $data )
{ //Formats YABs speed test provider and location as array
if ( $data [ 1 ] == '|' ) {
$provider = $data [ 0 ];
} else {
$provider = $data [ 0 ] . ' ' . $data [ 1 ];
}
if ( $data [ 2 ] !== '|' ) {
$location = $data [ 2 ] . ' ' . str_replace ( ',' , '' , $data [ 3 ]);
} else {
$location = $data [ 3 ] . ' ' . str_replace ( ',' , '' , $data [ 4 ]);
}
return array ( 'provider' => $provider , 'location' => $location );
}
protected function yabsSpeedValues ( array $data )
{ //Formats YABs speed test for speed value and type as array
$data = explode ( '|' , implode ( $data ));
if ( $data [ 2 ] == 'busy' ) {
$send = $send_type = NULL ;
} else {
$send = floatval ( $data [ 2 ]);
if ( $this -> removeFloat ( $data [ 2 ]) == 'Mbitssec' ) {
$send_type = " MBps " ;
} elseif ( $this -> removeFloat ( $data [ 2 ]) == 'Gbitssec' ) {
$send_type = " GBps " ;
} elseif ( $this -> removeFloat ( $data [ 2 ]) == 'Kbitssec' ) {
$send_type = " KBps " ;
} else {
$send_type = $this -> removeFloat ( $data [ 2 ]);
}
}
if ( $data [ 3 ] == 'busy' ) {
$receive = $receive_type = NULL ;
} else {
$receive = floatval ( $data [ 3 ]);
if ( $this -> removeFloat ( $data [ 3 ]) == 'Mbitssec' ) {
$receive_type = " MBps " ;
} elseif ( $this -> removeFloat ( $data [ 3 ]) == 'Gbitssec' ) {
$receive_type = " GBps " ;
} elseif ( $this -> removeFloat ( $data [ 3 ]) == 'Kbitssec' ) {
$receive_type = " KBps " ;
} else {
$receive_type = $this -> removeFloat ( $data [ 3 ]);
}
}
return array ( 'send' => $send , 'send_type' => $send_type , 'receive' => $receive , 'receive_type' => $receive_type );
}
protected function diskSpeedAsMbps ( string $type , string $value )
2021-01-30 00:04:13 +01:00
{ //If value type GB/s convert to MB/s, KB/s to MB/s
2021-01-20 04:41:37 +01:00
if ( $type == " GB/s " ) {
return $this -> GBpstoMBps ( $value );
2021-01-30 00:04:13 +01:00
} elseif ( $type == " KB/s " ) {
return ( $value / 1000 );
2021-01-20 04:41:37 +01:00
} else {
return $value ;
}
}
protected function networkSpeedAsMbps ( string $type , string $value )
{ //If value type GBps convert to MB/s
if ( $type == " GBps " ) {
return $this -> GBpstoMBps ( $value );
} else {
return $value ;
}
}
protected function intToYesNo ( int $int )
{ // 1 = Yes, 0 = No
if ( $int == 1 ) {
return " Yes " ;
} elseif ( $int == 0 ) {
return " No " ;
} else {
return $int ;
}
}
protected function saveYABS ( $content , string $filename )
{
return file_put_contents ( " yabs/ $filename " , $content );
}
protected function daysAway ( string $ahead_date )
{
$today = new DateTime ( " now " );
$date = new DateTime ( $ahead_date );
return $date -> diff ( $today ) -> format ( " %a " );
}
2021-02-01 04:46:37 +01:00
protected function deleteYabsForId ( string $id )
{
if ( $handle = opendir ( " yabs/ " )) {
while ( false !== ( $file = readdir ( $handle ))) {
if ( '.' === $file ) continue ;
if ( strpos ( $file , $id ) !== false ) {
unlink ( " yabs/ $file " );
}
}
closedir ( $handle );
}
}
2021-01-20 04:41:37 +01:00
}
class idlers extends helperFunctions
{
protected function dbConnect ()
{
$options = array (
PDO :: ATTR_PERSISTENT => true ,
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
PDO :: ATTR_DEFAULT_FETCH_MODE => PDO :: FETCH_ASSOC );
return new PDO ( " mysql:host= " . self :: DB_HOSTNAME . " ;dbname= " . self :: DB_NAME . " ;charset=utf8mb4 " , self :: DB_USERNAME , self :: DB_PASSWORD , $options );
}
protected function pageHead ( string $title = 'Page Title' )
{ //Echo output because it breaks formatting in PHPstorm if closing + opening PHP tags
$this -> outputString ( " <html lang='en'> " );
$this -> tagOpen ( " head " );
$this -> outputString ( " <title> " . self :: PAGE_TITLE . " </title> " );
$this -> outputString ( " <meta charset='utf-8'> " );
$this -> outputString ( " <meta name='viewport' content='width=device-width, initial-scale=1'> " );
$this -> outputString ( " <meta name='description' content=' " . self :: PAGE_DESC . " '> " );
$this -> outputString ( " <link rel='shortcut icon' type='image/x-icon' href='assets/favicon.ico' /> " );
$this -> outputString ( " <link rel='stylesheet' href='assets/css/style.css'/> " );
$this -> tagClose ( " head " );
$this -> tagOpen ( " body " );
$this -> tagOpen ( " div " , " container " );
}
protected function pageContents ()
{
2021-02-02 05:53:27 +01:00
$this -> navTabs ( array ( 'Services' , 'Add' , 'Order' , 'Info' , 'Search' , 'Compare' ), array ( '#services' , '#add_server' , '#order' , '#info' , '#search' , '#compare' ));
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div id="myTabContent" class="tab-content">' );
$this -> outputString ( '<div class="tab-pane server-cards fade active show" id="services">' );
2021-01-29 01:20:24 +01:00
$this -> viewSwitcherIcon ();
2021-01-30 01:19:05 +01:00
if ( self :: DEFAULT_VIEW == 'CARDS' ) {
$cards_start = 'active' ;
$table_start = '' ;
} else {
$cards_start = '' ;
$table_start = 'active' ;
}
$this -> tagOpen ( 'div' , $cards_start , 'cardsViewDiv' );
//Object cards
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' );
2021-01-30 01:19:05 +01:00
$this -> tagOpen ( 'div' , $table_start , 'tableViewDiv' );
2021-01-29 01:20:24 +01:00
//Objects tables
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div class="tab-pane fade" id="add_server">' );
//BTN Bar
$this -> rowColOpen ( 'row text-center' , 'col-12 btn-bar-col' );
$this -> outputString ( '<div class="btn-group btn-group-toggle" data-toggle="buttons">' );
$this -> outputString ( '<label class="btn btn-main btn-bar active">' );
$this -> outputString ( '<input type="radio" name="options" id="addServerBTN" autocomplete="off" checked>Add server</label>' );
$this -> outputString ( '<label class="btn btn-main btn-bar">' );
$this -> outputString ( '<input type="radio" name="options" id="addServerNoYabsBTN" autocomplete="off">Add server no YABs</label>' );
$this -> outputString ( '<label class="btn btn-main btn-bar">' );
$this -> outputString ( '<input type="radio" name="options" id="addSharedHostingBTN" autocomplete="off">Add shared hosting</label>' );
$this -> outputString ( '<label class="btn btn-main btn-bar">' );
$this -> outputString ( '<input type="radio" name="options" id="addDomainBTN" autocomplete="off">Add Domain</label>' );
$this -> tagClose ( 'div' , 3 );
$this -> tagOpen ( 'div' , 'collapse show' , 'addServer' );
$this -> addVPSFormYabs ();
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'collapse' , 'addServerNoYabs' );
$this -> addVPSForm ();
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'collapse' , 'addSharedHosting' );
$this -> addSharedHostingForm ();
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'collapse' , 'addDomain' );
$this -> addDomainForm ();
$this -> tagClose ( 'div' , 2 );
$this -> outputString ( '<div class="tab-pane fade" id="order">' );
$this -> orderForm ();
$this -> tagClose ( 'div' );
$this -> outputString ( '<div class="tab-pane fade" id="info">' );
$this -> tagClose ( 'div' );
$this -> outputString ( '<div class="tab-pane fade" id="search">' );
$this -> searchDiv ();
2021-02-02 05:53:27 +01:00
$this -> tagClose ( 'div' );
$this -> outputString ( '<div class="tab-pane fade" id="compare">' );
$this -> compareSection ();
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> editServerModal ();
$this -> editSharedHostingModal ();
$this -> editDomainModal ();
$this -> outputString ( '<div class="modal fade" id="viewMoreServerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
2021-01-31 02:00:50 +01:00
$this -> outputString ( '<div class="modal-dialog modal-lg" role="document">' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div class="modal-content" id="viewMoreModalBody">' );
$this -> tagClose ( 'div' , 3 );
$this -> outputString ( '<div class="modal fade" id="yabsModal" tabindex="-1" role="dialog" aria-labelledby="yabsmodalview" aria-hidden="true">' );
2021-01-22 00:48:11 +01:00
$this -> outputString ( '<div class="modal-dialog modal-lg" role="document">' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div class="modal-content text-center">' );
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> outputString ( '<h4 class="modal-title w-100" id="yabs_hostname_header"></h4>' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' );
$this -> outputString ( '<span aria-hidden="true">×</span>' );
$this -> tagClose ( 'button' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' , 'yabsModalBody' );
$this -> tagClose ( 'div' , 4 );
$this -> outputString ( '<div class="modal fade" id="viewMoreModalSharedHosting" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
$this -> outputString ( '<div class="modal-dialog" role="document">' );
$this -> outputString ( '<div class="modal-content" id="viewMoreSharedHostingModalBody">' );
$this -> tagClose ( 'div' , 3 );
$this -> outputString ( '<div class="modal fade" id="viewMoreModalDomain" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
$this -> outputString ( '<div class="modal-dialog" role="document">' );
$this -> outputString ( '<div class="modal-content" id="viewMoreDomainModalBody">' );
$this -> tagClose ( 'div' , 3 );
}
protected function getProvider ( int $provider )
{
$select = $this -> dbConnect () -> prepare ( " SELECT `name` FROM `providers` WHERE `id` = ? LIMIT 1; " );
$select -> execute ([ $provider ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( ! empty ( $row )) { //Yes
return $row [ 'name' ];
} else { //NO
return null ;
}
}
protected function getLocation ( int $location )
{
$select = $this -> dbConnect () -> prepare ( " SELECT `name` FROM `locations` WHERE `id` = ? LIMIT 1; " );
$select -> execute ([ $location ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( ! empty ( $row )) { //Yes
return $row [ 'name' ];
} else { //NO
return null ;
}
}
public function serverDetails ( string $id )
{
$select = $this -> dbConnect () -> prepare ( " SELECT id, hostname, location, provider, ipv4, ipv6, `cpu`, cpu_type, cpu_freq, ram, ram_type, swap, swap_type, `disk`, disk_type, bandwidth, bandwidth_type, gb5_single, gb5_multi, gb5_id, aes_ni, amd_v, is_dedicated, is_cpu_dedicated, was_special, os, still_have, DATE_FORMAT(`owned_since`, '%M %Y') as owned_since FROM `servers` WHERE `id` = ? LIMIT 1; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
return json_encode ( $data );
}
public function serverData ( string $id )
{
2021-01-25 14:15:46 +01:00
$select = $this -> dbConnect () -> prepare ( " SELECT `has_yabs`, `has_st` FROM `servers` WHERE `id` = ? LIMIT 1; " );
2021-01-20 04:41:37 +01:00
$select -> execute ([ $id ]);
$row = $select -> fetch ();
2021-01-25 14:15:46 +01:00
if ( $row [ 'has_yabs' ] == 1 && $row [ 'has_st' ] == 1 ) {
2021-01-20 04:41:37 +01:00
$select = $this -> dbConnect () -> prepare ( "
2021-02-02 05:53:27 +01:00
SELECT servers . id as server_id , hostname , ipv4 , ipv6 , `cpu` , cpu_type , cpu_freq , ram , ram_type , ram_mb , swap , swap_type , swap_mb , `disk` , disk_type , disk_gb , bandwidth , bandwidth_type , gb5_single , gb5_multi , gb5_id , aes_ni , amd_v ,
2021-02-06 15:08:34 +01:00
is_dedicated , is_cpu_dedicated , was_special , os , ssh_port , still_have , tags , notes , label , asn , virt , has_yabs , has_st , ns1 , ns2 , DATE_FORMAT ( `owned_since` , '%M %Y' ) as owned_since , `owned_since` as owned_since_raw , `4k` , `4k_type` , `4k_as_mbps` , `64k` , `64k_type` ,
2021-02-02 05:53:27 +01:00
`64k_as_mbps` , `512k` , `512k_type` , `512k_as_mbps` , `1m` , `1m_type` , `1m_as_mbps` ,
2021-01-31 02:00:50 +01:00
loc . name as location , send , send_type , recieve , recieve_type , price , currency , term , as_usd , per_month , usd_per_month , next_dd , pr . name as provider
2021-01-20 04:41:37 +01:00
FROM servers INNER JOIN disk_speed ds on servers . id = ds . server_id
INNER JOIN speed_tests st on servers . id = st . server_id INNER JOIN locations loc on servers . location = loc . id
INNER JOIN providers pr on servers . provider = pr . id INNER JOIN pricing on servers . id = pricing . server_id WHERE servers . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
2021-02-02 05:53:27 +01:00
$sel_st = $this -> dbConnect () -> prepare ( " SELECT `location`, `send`, `send_type`,`send_as_mbps`, `recieve`, `recieve_type`, `recieve_as_mbps` FROM `speed_tests` WHERE `server_id` = ? ORDER BY `datetime` DESC LIMIT 8; " );
2021-01-20 04:41:37 +01:00
$sel_st -> execute ([ $id ]);
$speed_tests = $sel_st -> fetchAll ( PDO :: FETCH_ASSOC );
$final = array_merge ( $speed_tests , $data );
return json_encode ( $final );
2021-01-25 14:15:46 +01:00
} elseif ( $row [ 'has_yabs' ] == 1 && $row [ 'has_st' ] == 0 ) {
$select = $this -> dbConnect () -> prepare ( "
2021-02-02 05:53:27 +01:00
SELECT servers . id as server_id , hostname , ipv4 , ipv6 , `cpu` , cpu_type , cpu_freq , ram , ram_type , ram_mb , swap , swap_type , swap_mb , `disk` , disk_type , disk_gb , bandwidth , bandwidth_type , gb5_single , gb5_multi , gb5_id , aes_ni , amd_v ,
2021-02-06 15:08:34 +01:00
is_dedicated , is_cpu_dedicated , was_special , os , ssh_port , still_have , tags , notes , label , asn , virt , has_yabs , has_st , ns1 , ns2 , DATE_FORMAT ( `owned_since` , '%M %Y' ) as owned_since , `owned_since` as owned_since_raw , `4k` , `4k_type` , `64k` , `64k_type` , `512k` , `512k_type` , `1m` , `1m_type` ,
2021-01-31 02:00:50 +01:00
loc . name as location , price , currency , term , as_usd , per_month , usd_per_month , next_dd , pr . name as provider
2021-01-25 14:15:46 +01:00
FROM servers INNER JOIN disk_speed ds on servers . id = ds . server_id
INNER JOIN locations loc on servers . location = loc . id
INNER JOIN providers pr on servers . provider = pr . id INNER JOIN pricing on servers . id = pricing . server_id WHERE servers . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
return json_encode ( $data );
2021-01-20 04:41:37 +01:00
} else {
$select = $this -> dbConnect () -> prepare ( "
2021-02-02 05:53:27 +01:00
SELECT servers . id as server_id , hostname , ipv4 , ipv6 , `cpu` , cpu_type , cpu_freq , ram , ram_type , ram_mb , swap , swap_type , swap_mb , `disk` , disk_type , disk_gb ,
2021-02-06 15:08:34 +01:00
bandwidth , bandwidth_type , gb5_single , gb5_multi , gb5_id , aes_ni , amd_v , is_dedicated , is_cpu_dedicated , was_special , os , ssh_port , still_have , tags , notes , virt , has_yabs , ns1 , ns2 , label , asn , has_st ,
2021-01-31 02:00:50 +01:00
DATE_FORMAT ( `owned_since` , '%M %Y' ) as owned_since , loc . name as location , price , currency , term , as_usd , per_month , usd_per_month , next_dd , pr . name as provider
2021-01-20 04:41:37 +01:00
FROM servers INNER JOIN locations loc on servers . location = loc . id
INNER JOIN providers pr on servers . provider = pr . id INNER JOIN pricing on servers . id = pricing . server_id WHERE servers . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
return json_encode ( $data );
}
}
public function sharedHostingData ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT shared_hosting . id as server_id , domain , domains_limit , emails , disk , disk_type , disk_as_gb , ftp , db , bandwidth , provider , location , was_special ,
still_have , type , `owned_since` as owned_since_raw , DATE_FORMAT ( `owned_since` , '%M %Y' ) as owned_since , loc . name as location , price , currency , term , as_usd , per_month , next_dd , pr . name as provider
FROM shared_hosting INNER JOIN locations loc on shared_hosting . location = loc . id
INNER JOIN providers pr on shared_hosting . provider = pr . id INNER JOIN pricing on shared_hosting . id = pricing . server_id WHERE shared_hosting . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
return json_encode ( $data );
}
public function domainData ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT domains . id as server_id , domain , attached_to , ns1 , ns2 , still_have , `owned_since` as owned_since_raw , DATE_FORMAT ( `owned_since` , '%M %Y' ) as owned_since , price , currency , term , as_usd , per_month , next_dd , pr . name as provider
FROM domains INNER JOIN providers pr on domains . provider = pr . id INNER JOIN pricing on domains . id = pricing . server_id WHERE domains . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
return json_encode ( $data );
}
protected function serverCards ()
{
if ( self :: SRV_SORT_TYPE == 'HOSTNAME_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `hostname` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'HOSTNAME_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `hostname`; " );
} elseif ( self :: SRV_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `owned_since` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `owned_since`; " );
} elseif ( self :: SRV_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: SRV_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header' , 'Servers <span class="object-count">' . $count . '</span>' );
}
$this -> tagOpen ( 'div' , 'row' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> vpsCard ( $row [ 'id' ]);
}
$this -> tagClose ( 'div' );
}
protected function sharedHostingCards ()
{
if ( self :: SH_SORT_TYPE == 'DOMAIN_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `domain` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'DOMAIN_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `domain`; " );
} elseif ( self :: SH_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `owned_since` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `owned_since`; " );
} elseif ( self :: SH_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: SH_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header' , 'Shared hosting <span class="object-count">' . $count . '</span>' );
}
$this -> tagOpen ( 'div' , 'row' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> SharedHostingCard ( $row [ 'id' ]);
}
$this -> tagClose ( 'div' );
}
protected function domainCards ()
{
if ( self :: DC_SORT_TYPE == 'DOMAIN_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `domain` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'DOMAIN_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `domain`; " );
} elseif ( self :: DC_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `owned_since` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `owned_since`; " );
} elseif ( self :: DC_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: DC_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header' , 'Domains <span class="object-count">' . $count . '</span>' );
}
$this -> tagOpen ( 'div' , 'row' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> domainCard ( $row [ 'id' ]);
}
$this -> tagClose ( 'div' );
}
2021-01-29 01:20:24 +01:00
protected function serverTable ()
{
if ( self :: SRV_SORT_TYPE == 'HOSTNAME_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `hostname` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'HOSTNAME_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `hostname`; " );
} elseif ( self :: SRV_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `owned_since` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` ORDER BY `owned_since`; " );
} elseif ( self :: SRV_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: SRV_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: SRV_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers` INNER JOIN `pricing` ON servers.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `servers`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header' , 'Servers <span class="object-count">' . $count . '</span>' );
$this -> tagOpen ( 'div' , 'row' );
$this -> tableHeader ( array ( 'Hostname' , '' , '' , 'Type' , 'CPU' , 'RAM' , 'Disk' , 'Price' , 'OS' , 'Location' , 'Provider' , 'Due' , 'Owned' , 'IPv4' , 'IPv6' , 'Tags' ), 'table objects-table' , 'serversTable' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> vpsTableRow ( $row [ 'id' ]);
}
$this -> outputString ( '</tbody></table></div>' );
$this -> tagClose ( 'div' );
}
}
2021-01-20 04:41:37 +01:00
protected function vpsCard ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
2021-01-27 03:49:32 +01:00
SELECT servers . id , servers . hostname , servers . ipv4 , servers . `cpu` , servers . cpu_freq , servers . ram , servers . ram_type , servers . `disk` ,
2021-01-20 04:41:37 +01:00
servers . disk_type , servers . os , servers . virt , servers . was_special , locations . name as location , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM servers INNER JOIN locations on servers . location = locations . id INNER JOIN providers on servers . provider = providers . id
INNER JOIN pricing on servers . id = pricing . server_id WHERE servers . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
( $data [ 'was_special' ] == 1 ) ? $special = ' special-card' : $special = '' ;
( is_null ( $data [ 'next_dd' ])) ? $dd_class = 'no-dd' : $dd_class = 'dd-text' ;
$this -> colOpen ( 'col-12 col-sm-6 col-md-4 col-xl-3' );
$this -> tagOpen ( " div " , " card obj-card $special " );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> rowColOpen ( 'row text-center' , 'col-12 col-xl-10' );
$this -> HTMLphrase ( 'h4' , 'hostname-header' , $data [ 'hostname' ]);
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-xl-2 os-col' );
2021-01-27 03:49:32 +01:00
( empty ( $data [ 'ipv4' ]) || is_null ( $data [ 'ipv4' ])) ? $host = $data [ 'hostname' ] : $host = $data [ 'ipv4' ];
$this -> outputString ( '<a id="checkUpStatus" href="#" value="' . $host . '">' . $this -> osIntToIcon ( $data [ 'os' ]) . '</a>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 3 );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> HTMLphrase ( 'h6' , 'price' , '$' . $data [ 'price' ] . ' ' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]));
$this -> rowColOpen ( 'row text-center' , 'col-12' );
2021-01-25 14:44:22 +01:00
if ( is_null ( $data [ 'provider' ]) || empty ( $data [ 'provider' ])) {
$this -> HTMLphrase ( 'h6' , 'provider no-prov' , ' ' );
} else {
$this -> HTMLphrase ( 'h6' , 'provider' , $data [ 'provider' ]);
}
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
2021-01-25 14:44:22 +01:00
if ( is_null ( $data [ 'location' ]) || empty ( $data [ 'location' ])) {
$this -> HTMLphrase ( 'h6' , 'location no-loc' , ' ' );
} else {
$this -> HTMLphrase ( 'h6' , 'location' , $data [ 'location' ]);
}
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'p' , $dd_class , " Due in { $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) } days " );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row cpu-row' , 'col-6' );
$this -> outputString ( '<i class="fas fa-microchip"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '' . $data [ 'cpu' ] . '<span class="data-type">@</span>' . $this -> mhzToGhz ( $data [ 'cpu_freq' ]) . '<span class="data-type">Ghz</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<i class="fas fa-box"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '<span class="data-type">' . $data [ 'virt' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row mem-disk-row' , 'col-6' );
$this -> outputString ( '<i class="fas fa-memory"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '' . $data [ 'ram' ] . '<span class="data-type">' . $data [ 'ram_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<i class="fas fa-hdd"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '' . $data [ 'disk' ] . '<span class="data-type">' . $data [ 'disk_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-6' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreServer" value="' . $id . '" data-target="#viewMoreServerModal" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<a class="btn btn-second" id="editServer" value="' . $id . '" data-target="#editServerModal" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tagClose ( 'div' , 5 );
}
2021-01-29 01:20:24 +01:00
protected function locationForTable ( string $location )
{
if ( strpos ( $location , ',' ) !== false ) {
return explode ( ',' , $location )[ 0 ];
} else {
return $location ;
}
}
2021-01-30 01:19:05 +01:00
public function objectCards ()
{
$this -> serverCards ();
$this -> sharedHostingCards ();
$this -> domainCards ();
}
2021-01-29 01:20:24 +01:00
public function objectTables ()
{
$this -> serverTable ();
$this -> sharedHostingTable ();
$this -> domainTable ();
}
protected function vpsTableRow ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT servers . id , servers . hostname , servers . ipv4 , servers . ipv6 , servers . `cpu` , servers . cpu_freq , servers . ram , servers . ram_type , servers . `disk` ,
servers . disk_type , servers . os , servers . virt , servers . tags , DATE_FORMAT ( `owned_since` , '%d %b %Y' ) as dt , servers . was_special , locations . name as location , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM servers INNER JOIN locations on servers . location = locations . id INNER JOIN providers on servers . provider = providers . id
INNER JOIN pricing on servers . id = pricing . server_id WHERE servers . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
if ( self :: COLOR_TABLE ) {
( $data [ 'was_special' ] == 1 ) ? $special_class = 'td-special-price' : $special_class = '' ;
if ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) < 7 ) {
$ds_class = 'td-due-soon' ;
} elseif ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) > 300 ) {
$ds_class = 'td-not-due-soon' ;
} else {
$ds_class = '' ;
}
} else {
$special_class = $ds_class = '' ;
}
( empty ( $data [ 'ipv4' ]) || is_null ( $data [ 'ipv4' ])) ? $host = $data [ 'hostname' ] : $host = $data [ 'ipv4' ];
$this -> tagOpen ( 'tr' );
$this -> tableTd ( '' , $data [ 'hostname' ]);
$this -> tableTd ( '' , '<a class="btn btn-main table-btn" id="viewMoreServer" value="' . $data [ 'id' ] . '" data-target="#viewMoreServerModal" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tableTd ( '' , '<a class="btn btn-second table-btn" id="editServer" value="' . $data [ 'id' ] . '" data-target="#editServerModal" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tableTd ( 'td-text-sml' , $data [ 'virt' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'cpu' ] . '<span class="data-type">@' . $this -> mhzToGhz ( $data [ 'cpu_freq' ]) . 'Ghz</span>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'ram' ] . '<span class="data-type">' . $data [ 'ram_type' ] . '</span>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'disk' ] . '<span class="data-type">' . $data [ 'disk_type' ] . '</span>' );
$this -> tableTd ( 'td-nowrap ' . $special_class . '' , $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]) . '</span>' );
$this -> tableTd ( '' , '<a id="checkUpStatus" href="#" value="' . $host . '">' . $this -> osIntToIcon ( $data [ 'os' ]) . '</a>' );
$this -> tableTd ( 'td-nowrap td-text-med' , '<div class="td-nowrap">' . $this -> locationForTable ( $data [ 'location' ]) . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-med' , '<div class="td-nowrap">' . $data [ 'provider' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml ' . $ds_class . '' , '<div class="td-nowrap">' . $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) . ' days</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml' , '<div class="td-nowrap">' . $data [ 'dt' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml' , '<div class="td-nowrap">' . $data [ 'ipv4' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml' , '<div class="td-nowrap">' . $data [ 'ipv6' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml' , '<div class="td-nowrap">' . $data [ 'tags' ] . '</div>' );
$this -> tagClose ( 'tr' );
}
protected function sharedHostingTable ()
{
if ( self :: SH_SORT_TYPE == 'DOMAIN_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `domain` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'DOMAIN_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `domain`; " );
} elseif ( self :: SH_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `owned_since` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` ORDER BY `owned_since`; " );
} elseif ( self :: SH_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: SH_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: SH_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting` INNER JOIN `pricing` ON shared_hosting.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `shared_hosting`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header mt-1' , 'Shared hosting <span class="object-count">' . $count . '</span>' );
$this -> tagOpen ( 'div' , 'row' );
$this -> tableHeader ( array ( 'Domain' , '' , '' , 'Type' , 'Disk' , 'Price' , 'Location' , 'Provider' , 'Due' , 'BWidth' , 'Domains' , 'Emails' , 'FTPs' , 'DBs' , 'Since' ), 'table objects-table' , 'sharedHostingTable' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> sharedHostingTableRow ( $row [ 'id' ]);
}
$this -> outputString ( '</tbody></table></div>' );
$this -> tagClose ( 'div' );
}
}
protected function domainTable ()
{
if ( self :: DC_SORT_TYPE == 'DOMAIN_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `domain` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'DOMAIN_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `domain`; " );
} elseif ( self :: DC_SORT_TYPE == 'OWNED_SINCE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `owned_since` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'OWNED_SINCE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` ORDER BY `owned_since`; " );
} elseif ( self :: DC_SORT_TYPE == 'PRICE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `as_usd` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'PRICE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `as_usd`; " );
} elseif ( self :: DC_SORT_TYPE == 'DUE_DESC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `next_dd` DESC; " );
} elseif ( self :: DC_SORT_TYPE == 'DUE_ASC' ) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains` INNER JOIN `pricing` ON domains.id = pricing.server_id ORDER BY `next_dd`; " );
} else {
$select = $this -> dbConnect () -> prepare ( " SELECT `id` FROM `domains`; " );
}
$select -> execute ();
$count = $select -> rowCount ();
if ( $count > 0 ) {
$this -> HTMLPhrase ( 'h4' , 'card-section-header mt-1' , 'Domains <span class="object-count">' . $count . '</span>' );
$this -> tagOpen ( 'div' , 'row' );
$this -> tableHeader ( array ( 'Domain' , '' , '' , 'NS1' , 'NS2' , 'Price' , 'Provider' , 'Due' , 'Since' ), 'table objects-table' , 'domainsTable' );
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> domainTableRow ( $row [ 'id' ]);
}
$this -> outputString ( '</tbody></table></div>' );
$this -> tagClose ( 'div' );
}
}
protected function domainTableRow ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT domains . id , domains . domain , domains . attached_to , domains . ns1 , domains . ns2 , DATE_FORMAT ( `owned_since` , '%d %b %Y' ) as dt , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM domains INNER JOIN providers on domains . provider = providers . id
INNER JOIN pricing on domains . id = pricing . server_id WHERE domains . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
if ( self :: COLOR_TABLE ) {
if ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) < 7 ) {
$ds_class = 'td-due-soon' ;
} elseif ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) > 300 ) {
$ds_class = 'td-not-due-soon' ;
} else {
$ds_class = '' ;
}
} else {
$ds_class = '' ;
}
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $data [ 'domain' ]);
$this -> tableTd ( '' , '<a class="btn btn-main table-btn" id="viewMoreDomain" value="' . $data [ 'id' ] . '" data-target="#viewMoreModalDomain" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tableTd ( '' , '<a class="btn btn-second table-btn" id="editDomain" value="' . $data [ 'id' ] . '" data-target="#editModalDomain" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tableTd ( 'td-nowrap' , '<code>' . $data [ 'ns1' ] . '<code>' );
$this -> tableTd ( 'td-nowrap' , '<code>' . $data [ 'ns2' ] . '<code>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]) . '</span>' );
$this -> tableTd ( 'td-nowrap td-text-med' , '<div class="td-nowrap">' . $data [ 'provider' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml ' . $ds_class . '' , '<div class="td-nowrap">' . $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) . ' days</div>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'dt' ]);
$this -> tagClose ( 'tr' );
}
protected function sharedHostingTableRow ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT shared_hosting . id , shared_hosting . domain , shared_hosting . type , shared_hosting . was_special , shared_hosting . disk , shared_hosting . disk_type , shared_hosting . bandwidth , shared_hosting . domains_limit , shared_hosting . emails ,
shared_hosting . ftp , shared_hosting . db , DATE_FORMAT ( `owned_since` , '%d %b %Y' ) as dt , locations . name as location , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM shared_hosting INNER JOIN locations on shared_hosting . location = locations . id INNER JOIN providers on shared_hosting . provider = providers . id
INNER JOIN pricing on shared_hosting . id = pricing . server_id WHERE shared_hosting . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
if ( self :: COLOR_TABLE ) {
( $data [ 'was_special' ] == 1 ) ? $special_class = 'td-special-price' : $special_class = '' ;
if ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) < 7 ) {
$ds_class = 'td-due-soon' ;
} elseif ( $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) > 300 ) {
$ds_class = 'td-not-due-soon' ;
} else {
$ds_class = '' ;
}
} else {
$special_class = $ds_class = '' ;
}
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $data [ 'domain' ]);
$this -> tableTd ( '' , '<a class="btn btn-main table-btn" id="viewMoreSharedHosting" value="' . $data [ 'id' ] . '" data-target="#viewMoreModalSharedHosting" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tableTd ( '' , '<a class="btn btn-second table-btn" id="editSharedHosting" value="' . $data [ 'id' ] . '" data-target="#editModalSharedHosting" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tableTd ( 'td-nowrap td-text-sml' , $data [ 'type' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'disk' ] . '<span class="data-type">' . $data [ 'disk_type' ] . '</span>' );
$this -> tableTd ( 'td-nowrap ' . $special_class . '' , $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]) . '</span>' );
$this -> tableTd ( 'td-nowrap td-text-med' , '<div class="td-nowrap">' . $this -> locationForTable ( $data [ 'location' ]) . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-med' , '<div class="td-nowrap">' . $data [ 'provider' ] . '</div>' );
$this -> tableTd ( 'td-nowrap td-text-sml ' . $ds_class . '' , '<div class="td-nowrap">' . $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) . ' days</div>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'bandwidth' ] . '<span class="data-type">TB</span>' );
$this -> tableTd ( 'td-nowrap' , $data [ 'domains_limit' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'emails' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'ftp' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'db' ]);
$this -> tableTd ( 'td-nowrap' , $data [ 'dt' ]);
$this -> tagClose ( 'tr' );
}
2021-01-20 04:41:37 +01:00
protected function SharedHostingCard ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT shared_hosting . id , shared_hosting . domain , shared_hosting . disk_as_gb , shared_hosting . type , shared_hosting . was_special , locations . name as location , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM shared_hosting INNER JOIN locations on shared_hosting . location = locations . id INNER JOIN providers on shared_hosting . provider = providers . id
INNER JOIN pricing on shared_hosting . id = pricing . server_id WHERE shared_hosting . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
( $data [ 'was_special' ] == 1 ) ? $special = ' special-card' : $special = '' ;
( is_null ( $data [ 'next_dd' ])) ? $dd_class = 'no-dd' : $dd_class = 'dd-text' ;
$this -> colOpen ( 'col-12 col-sm-6 col-md-4 col-xl-3' );
$this -> tagOpen ( " div " , " card obj-card $special " );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'h4' , 'hostname-header' , $data [ 'domain' ]);;
$this -> tagClose ( 'div' , 3 );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> HTMLphrase ( 'h6' , 'price' , '$' . $data [ 'price' ] . ' ' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]));
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'h6' , 'provider' , $data [ 'provider' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'h6' , 'location' , $data [ 'location' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'p' , $dd_class , " Due in { $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) } days " );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row mem-disk-row' , 'col-6' );
$this -> outputString ( '<i class="fas fa-box"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '<span class="data-type">' . $data [ 'type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<i class="fas fa-hdd"></i>' );
$this -> HTMLphrase ( 'p' , 'value' , '<span class="data-type">' . $data [ 'disk_as_gb' ] . '<span class="data-type">GB</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-6' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreSharedHosting" value="' . $id . '" data-target="#viewMoreModalSharedHosting" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<a class="btn btn-second" id="editSharedHosting" value="' . $id . '" data-target="#editModalSharedHosting" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tagClose ( 'div' , 5 );
}
protected function domainCard ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT domains . id , domains . domain , domains . attached_to , providers . name as provider , pricing . price , pricing . currency , pricing . term , pricing . next_dd
FROM domains INNER JOIN providers on domains . provider = providers . id
INNER JOIN pricing on domains . id = pricing . server_id WHERE domains . id = ? LIMIT 1 ; " );
$select -> execute ([ $id ]);
$data = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
( is_null ( $data [ 'next_dd' ])) ? $dd_class = 'no-dd' : $dd_class = 'dd-text' ;
$this -> colOpen ( 'col-12 col-sm-6 col-md-4 col-xl-3' );
$this -> tagOpen ( " div " , " card obj-card " );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'h4' , 'hostname-header' , $data [ 'domain' ]);
$this -> tagClose ( 'div' , 3 );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> HTMLphrase ( 'h6' , 'price' , '$' . $data [ 'price' ] . ' ' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]));
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'h6' , 'provider' , $data [ 'provider' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> HTMLphrase ( 'p' , $dd_class , " Due in { $this -> processDueDate ( $data [ 'id' ], $data [ 'term' ], $data [ 'next_dd' ]) } days " );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row text-center' , 'col-6' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreDomain" value="' . $id . '" data-target="#viewMoreModalDomain" data-toggle="modal" href="#" role="button">More</a>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<a class="btn btn-second" id="editDomain" value="' . $id . '" data-target="#editModalDomain" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tagClose ( 'div' , 5 );
}
public function editServerModal ()
{
$this -> outputString ( '<div class="modal fade" id="editServerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
2021-01-31 02:36:45 +01:00
$this -> outputString ( '<div class="modal-dialog modal-lg" role="document">' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'modal-content' );
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> outputString ( '<h4 class="modal-title w-100" id="me_hostname_header"></h4>' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' );
$this -> outputString ( '<span aria-hidden="true">×</span>' );
$this -> tagClose ( 'button' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
$this -> outputString ( '<form id="editForm" method="post">' );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<label for="me_delete">Delete server data</label>' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="me_delete" id="me_delete"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-12 col-md-6' );
$this -> outputString ( '<label for="me_non_active">No longer have (Keep info)</label>' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<label class="switch"><input type="checkbox" name="me_non_active" id="me_non_active"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Hostname' );
2021-01-20 04:41:37 +01:00
$this -> textInput ( 'me_hostname' , '' , 'form-control' , true );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
2021-01-30 14:24:32 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Label' );
$this -> textInput ( 'me_label' , '' , 'form-control' , false , 1 , 24 );
2021-01-31 02:36:45 +01:00
$this -> hiddenInput ( 'me_server_id' );
$this -> hiddenInput ( 'action' , 'update' );
$this -> hiddenInput ( 'type' , 'server_modal_edit' );
2021-01-30 14:24:32 +01:00
$this -> tagClose ( 'div' , 3 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS1' );
$this -> textInput ( 'me_ns1' , '' , 'form-control' , false );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS2' );
$this -> textInput ( 'me_ns2' , '' , 'form-control' , false );
$this -> tagClose ( 'div' , 3 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-6 col-md-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Price' );
2021-01-20 04:41:37 +01:00
$this -> numberInput ( 'me_price' , '' , 'form-control' , true , 0 , 999 , 'any' );
$this -> tagClose ( 'div' );
$this -> tagClose ( 'div' );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-6 col-md-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Term' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_term' );
$this -> termSelectOptions ();
$this -> tagClose ( 'select' );
2021-01-31 02:36:45 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-6 col-md-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Currency' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_currency' );
$this -> CurrencySelectOptions ();
$this -> tagClose ( 'select' );
2021-01-31 02:36:45 +01:00
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'OS' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_os' );
$this -> OsSelectOptions ();
$this -> tagClose ( 'select' );
2021-01-31 02:36:45 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Virt' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_virt' );
$this -> virtSelectOptions ();
$this -> tagClose ( 'select' );
2021-01-22 01:16:31 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-12 col-md-4 mm-col' );
2021-01-22 01:16:31 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'SSH Port' );
$this -> textInput ( 'me_ssh_port' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'IPv4' );
$this -> textInput ( 'me_ipv4' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'IPv6' );
$this -> textInput ( 'me_ipv6' );
$this -> tagClose ( 'div' , 3 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="me_owned_since" name="me_owned_since">' );
2021-01-31 02:36:45 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control" id="me_next_dd" name="me_next_dd">' );
$this -> tagClose ( 'div' , 3 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'CPU amount' );
$this -> numberInput ( 'me_cpu_amount' , '' , 'form-control' , false , 1 , 48 );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:36:45 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Bandwidth' );
2021-04-10 08:21:34 +02:00
$this -> numberInput ( 'me_bandwidth' , '' , 'form-control' , false , 0 , 9999 );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">TB</span></div>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Total disk' );
$this -> numberInput ( 'me_disk' , '' , 'form-control' , false , 0.5 , 9999 , 'any' );
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">GB</span></div>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Ram' );
$this -> numberInput ( 'me_ram' , '' , 'form-control' , false , 0.5 , 9999 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Type' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_ram_type' );
$this -> selectOption ( 'MB' , 'MB' , true );
$this -> selectOption ( 'GB' , 'GB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Swap' );
2021-04-10 08:21:34 +02:00
$this -> numberInput ( 'me_swap' , '' , 'form-control' , false , 0 , 9999 , 'any' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Type' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_swap_type' );
$this -> selectOption ( 'MB' , 'MB' , true );
$this -> selectOption ( 'GB' , 'GB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
2021-01-31 02:36:45 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
2021-01-24 02:44:51 +01:00
$this -> htmlPhrase ( 'p' , 'm-desc' , 'Notes:' );
$this -> outputString ( " <textarea class='form-control' id='me_notes' name='me_notes' rows='4' cols='40' maxlength='255'> " );
$this -> outputString ( " </textarea> " );
2021-01-31 02:36:45 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Tags' );
$this -> tagsInput ( 'me_tags' , 'form-control' );
$this -> tagClose ( 'div' , 3 );
2021-01-24 02:44:51 +01:00
2021-01-24 04:37:06 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> htmlPhrase ( 'p' , 'm-desc' , 'Update YABs disk & network speeds:' );
$this -> outputString ( " <textarea class='form-control' id='me_yabs' name='me_yabs' rows='4' cols='40' placeholder='First line must be: # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #'> " );
$this -> outputString ( " </textarea> " );
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
$this -> rowColOpen ( 'form-row text-center' , 'col-12' );
$this -> submitInput ( 'Update' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
public function editSharedHostingModal ()
{
$this -> outputString ( '<div class="modal fade" id="editModalSharedHosting" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
$this -> outputString ( '<div class="modal-dialog" role="document">' );
$this -> tagOpen ( 'div' , 'modal-content' );
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> outputString ( '<h4 class="modal-title w-100" id="sh_me_hostname_header"></h4>' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' );
$this -> outputString ( '<span aria-hidden="true">×</span>' );
$this -> tagClose ( 'button' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
$this -> outputString ( '<form id="editSharedHostingForm" method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-8' );
2021-01-25 03:28:18 +01:00
$this -> outputString ( '<label for="sh_me_delete">Delete shared hosting data</label>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="sh_me_delete" id="sh_me_delete"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-8' );
$this -> outputString ( '<label for="sh_me_non_active">No longer have (Keep info)</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="sh_me_non_active" id="sh_me_non_active"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Hostname' );
2021-01-20 04:41:37 +01:00
$this -> textInput ( 'sh_me_hostname' , '' , 'form-control' , true );
$this -> tagClose ( 'div' );
$this -> hiddenInput ( 'sh_me_server_id' );
$this -> hiddenInput ( 'action' , 'update' );
$this -> hiddenInput ( 'type' , 'shared_hosting_modal_edit' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Price' );
2021-01-20 04:41:37 +01:00
$this -> numberInput ( 'sh_me_price' , '' , 'form-control' , true , 0 , 999 , 'any' );
$this -> tagClose ( 'div' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Term' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'sh_me_term' );
$this -> termSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Currency' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'sh_me_currency' );
$this -> CurrencySelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="sh_me_owned_since" name="sh_me_owned_since">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control" id="sh_me_next_dd" name="sh_me_next_dd">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Bandwidth' );
2021-04-10 08:21:34 +02:00
$this -> numberInput ( 'sh_me_bandwidth' , '' , 'form-control' , false , 0 , 99999 );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">GB</span></div>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Total disk' );
$this -> numberInput ( 'sh_me_storage' , '' , 'form-control' , false , 0.5 , 9999 , 'any' );
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">GB</span></div>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Domains' );
$this -> numberInput ( 'sh_me_domains_count' , '' , 'form-control' , false , 1 , 99999 , '1' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Emails' );
$this -> numberInput ( 'sh_me_emails' , '' , 'form-control' , false , 1 , 99999 , '1' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Databases' );
$this -> numberInput ( 'sh_me_db' , '' , 'form-control' , false , 1 , 99999 , '1' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'FTP' );
$this -> numberInput ( 'sh_me_ftp' , '' , 'form-control' , false , 1 , 99999 , '1' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row text-center' , 'col-12' );
$this -> submitInput ( 'Update' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
2021-01-30 14:03:38 +01:00
protected function attachDomainInput ()
{
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Attached to' );
$this -> selectElement ( 'd_me_attached_to' );
$select_servers = $this -> dbConnect () -> prepare ( " SELECT `id`, `hostname` FROM `servers`; " );
$select_servers -> execute ();
$this -> selectOption ( '' , '' , true ); //Empty option for when not attached
while ( $row = $select_servers -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> selectOption ( $row [ 'hostname' ], $row [ 'id' ]);
}
$select_shared = $this -> dbConnect () -> prepare ( " SELECT `id`, `domain` FROM `shared_hosting`; " );
$select_shared -> execute ();
while ( $row = $select_shared -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> selectOption ( $row [ 'domain' ], $row [ 'id' ]);
}
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
}
2021-01-20 04:41:37 +01:00
public function editDomainModal ()
{
$this -> outputString ( '<div class="modal fade" id="editModalDomain" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' );
$this -> outputString ( '<div class="modal-dialog" role="document">' );
$this -> tagOpen ( 'div' , 'modal-content' );
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> outputString ( '<h4 class="modal-title w-100" id="d_me_hostname_header"></h4>' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' );
$this -> outputString ( '<span aria-hidden="true">×</span>' );
$this -> tagClose ( 'button' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
$this -> outputString ( '<form id="editDomainForm" method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-8' );
2021-01-25 03:28:18 +01:00
$this -> outputString ( '<label for="d_me_delete">Delete domain data</label>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="d_me_delete" id="d_me_delete"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-8' );
$this -> outputString ( '<label for="d_me_non_active">No longer have (Keep info)</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="d_me_non_active" id="d_me_non_active"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Domain' );
2021-01-20 04:41:37 +01:00
$this -> textInput ( 'd_me_hostname' , '' , 'form-control' , true );
$this -> tagClose ( 'div' );
$this -> hiddenInput ( 'd_me_server_id' );
$this -> hiddenInput ( 'action' , 'update' );
$this -> hiddenInput ( 'type' , 'domain_modal_edit' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Price' );
2021-01-20 04:41:37 +01:00
$this -> numberInput ( 'd_me_price' , '' , 'form-control' , true , 0 , 999 , 'any' );
$this -> tagClose ( 'div' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Term' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'd_me_term' );
2021-01-25 03:32:46 +01:00
$this -> domainTermSelectOptions ();
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Currency' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'd_me_currency' );
$this -> CurrencySelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
2021-01-30 14:03:38 +01:00
$this -> attachDomainInput ();
2021-01-20 04:41:37 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="d_me_owned_since" name="d_me_owned_since">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control" id="d_me_next_dd" name="d_me_next_dd">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS1' );
$this -> textInput ( 'd_me_ns1' , '' , 'form-control' , false , 1 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS2' );
$this -> textInput ( 'd_me_ns2' , '' , 'form-control' , false , 1 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row text-center' , 'col-12' );
$this -> submitInput ( 'Update' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
protected function addVPSFormYabs ()
{
$this -> rowColOpen ( 'row' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h2' , 'text-center' , 'Add server from YABs' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form id="yabsForm" method="post">' );
$this -> hiddenInput ( 'from_yabs' , 'true' );
$this -> hiddenInput ( 'has_yabs' , '1' );
$this -> forumInputsBasic ();
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'form-group' );
$this -> outputString ( '<textarea id="yabs" name="yabs" class="form-control" placeholder="First line must be: # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #" rows="10" required></textarea>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 text-center' );
$this -> submitInput ( 'Add' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
protected function addDomainForm ()
{
$this -> rowColOpen ( 'row' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h2' , 'text-center' , 'Add domain' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form id="domainForm" method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> hiddenInput ( 'domain_form' , 'true' );
$this -> hiddenInput ( 'has_yabs' , '0' );
$this -> hiddenInput ( 'action' , 'insert' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Domain' );
$this -> textInput ( 'domain' , '' , 'form-control' , true , 3 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Registrar' );
$this -> textInput ( 'domain_provider' , '' , 'form-control provider-input' , true , 3 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> formPricingRow ( 'domain_' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="domain_owned_since" name="domain_owned_since">' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control next-dd" id="domain_next_due_date" name="domain_next_due_date">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 text-center' );
$this -> submitInput ( 'Add' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
protected function addSharedHostingForm ()
{
$this -> rowColOpen ( 'row' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h2' , 'text-center' , 'Add shared hosting' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form id="sharesHostingForm" method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> hiddenInput ( 'shared_hosting_form' , 'true' );
$this -> hiddenInput ( 'has_yabs' , '0' );
$this -> hiddenInput ( 'action' , 'insert' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Domain' );
$this -> textInput ( 'shared_domain' , '' , 'form-control' , true , 3 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Provider' );
$this -> textInput ( 'shared_provider' , '' , 'form-control provider-input' , true , 3 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> formPricingRow ( 'shared_' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-2' );
$this -> outputString ( '<label for="shared_was_offer">Was special offer</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-2' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="shared_was_offer" id="shared_was_offer"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="shared_owned_since" name="shared_owned_since">' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control next-dd" id="shared_next_due_date" name="shared_next_due_date">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Domains' );
$this -> numberInput ( 'shared_domains_amount' , '1' , 'form-control' , true , 1 , 9999 , '1' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Storage' );
$this -> numberInput ( 'shared_storage' , '10' , 'form-control' , true , 1 , 9999 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Type' );
$this -> selectElement ( 'shared_storage_type' );
$this -> selectOption ( 'GB' , 'GB' , true );
$this -> selectOption ( 'TB' , 'TB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Databases' );
$this -> numberInput ( 'shared_db_amount' , '10' , 'form-control' , true , 1 , 9999 , '1' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Email' );
$this -> numberInput ( 'shared_emails' , '25' , 'form-control' , true , 1 , 9999 , '1' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'FTP' );
$this -> numberInput ( 'shared_ftp' , '25' , 'form-control' , true , 1 , 9999 , '1' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Bandwidth' );
$this -> numberInput ( 'shared_bandwidth' , '1' , 'form-control' , false , 1 , 9999 , '1' );
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">TB</span></div>' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Location' );
$this -> textInput ( 'shared_location' , '' , 'form-control location-input' , true , 3 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Type' );
$this -> selectElement ( 'shared_type' );
$this -> sharedHostingTypeOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 text-center' );
$this -> submitInput ( 'Add' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
protected function addVPSForm ()
{
$this -> rowColOpen ( 'row' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h2' , 'text-center' , 'Add server' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form id="manualForm" method="post">' );
$this -> hiddenInput ( 'manual' , 'true' );
$this -> hiddenInput ( 'has_yabs' , '0' );
$this -> forumInputsBasic ();
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'CPU amount' );
$this -> numberInput ( 'cpu_amount' , '1' , 'form-control' , true , 1 , 64 , '1' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'CPU speed' );
$this -> numberInput ( 'cpu_speed' , '3799' , 'form-control' , false , '1' , '5999.999' , 'any' );
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">Mhz</span></div>' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-8' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Total disk' );
$this -> numberInput ( 'disk' , '10' , 'form-control' , true , 1 , 9999 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Type' );
$this -> selectElement ( 'disk_type' );
$this -> selectOption ( 'GB' , 'GB' , true );
$this -> selectOption ( 'TB' , 'TB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-6 col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Ram' );
$this -> numberInput ( 'ram' , '512' , 'form-control' , true , 1 , 62000 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Type' );
$this -> selectElement ( 'ram_type' );
$this -> selectOption ( 'MB' , 'MB' , true );
$this -> selectOption ( 'GB' , 'GB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Swap' );
2021-04-10 08:21:34 +02:00
$this -> numberInput ( 'swap' , '100' , 'form-control' , true , 0 , 62000 , 'any' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Type' );
$this -> selectElement ( 'swap_type' );
$this -> selectOption ( 'MB' , 'MB' , true );
$this -> selectOption ( 'GB' , 'GB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 text-center' );
$this -> submitInput ( 'Add' , 'submitInput' , 'btn btn-second' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
}
protected function formPricingRow ( string $id_append = '' )
{
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Price' );
$this -> numberInput ( '' . $id_append . 'price' , '8.99' , 'form-control' , true , 0 , 999 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Currency' );
$this -> selectElement ( '' . $id_append . 'currency' );
$this -> CurrencySelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Term' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( '' . $id_append . 'term' );
$this -> termSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
}
protected function forumInputsBasic ()
{
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> hiddenInput ( 'action' , 'insert' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Hostname' );
$this -> textInput ( 'hostname' , '' , 'form-control' , true , 1 , 124 );
2021-01-27 00:27:46 +01:00
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text"><a id="fillIpv4" href="#"><i class="fas fa-search"></i></a></span></div>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS1' );
$this -> textInput ( 'ns1' , '' , 'form-control' , false , 1 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS2' );
$this -> textInput ( 'ns2' , '' , 'form-control' , false , 1 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Provider' );
$this -> textInput ( 'provider' , '' , 'form-control provider-input' , true , 3 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
2021-01-21 00:04:22 +01:00
$this -> inputPrepend ( 'Price' );
2021-01-20 04:41:37 +01:00
$this -> numberInput ( 'price' , '' , 'form-control' , true , 0 , 999 , 'any' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Term' );
$this -> selectElement ( 'term' );
$this -> termSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-md-3' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Currency' );
$this -> selectElement ( 'currency' );
$this -> CurrencySelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
2021-01-30 14:24:32 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Label' );
$this -> textInput ( 'label' , '' , 'form-control' , false , 1 , 24 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'IPv4' );
2021-01-26 06:13:42 +01:00
$this -> textInput ( 'ipv4' , '' , 'form-control' , false , 4 , 124 );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-30 14:24:32 +01:00
$this -> colOpen ( 'col-12 col-md-4' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'IPv6' );
$this -> textInput ( 'ipv6' , '' , 'form-control' , false , 4 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> outputString ( '<label for="was_offer">Was special offer</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-2' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="was_offer" id="was_offer"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> outputString ( '<label for="dedi_cpu">Dedicated CPU</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-2' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="dedi_cpu" id="dedi_cpu"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
2021-01-22 01:16:31 +01:00
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-4' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'SSH' );
$this -> numberInput ( 'ssh_port' , '22' , 'form-control' , true , 1 , 999999 , 1 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-4' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Virt' );
$this -> selectElement ( 'virt' );
$this -> virtSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
2021-01-22 01:16:31 +01:00
$this -> colOpen ( 'col-12 col-md-4' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'OS' );
$this -> selectElement ( 'os' );
$this -> OsSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Bandwidth' );
2021-01-28 01:10:31 +01:00
$this -> numberInput ( 'bandwidth' , '4' , 'form-control' , false , '0.5' , 99999 , '0.5' );
$this -> outputString ( '<div class="input-group-append"><span class="input-group-text">TB</span></div>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Location' );
$this -> textInput ( 'location' , '' , 'form-control location-input' , false , 1 , 124 );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Owned since' );
$this -> outputString ( '<input type="date" class="form-control" id="owned_since" name="owned_since">' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Next due date' );
$this -> outputString ( '<input type="date" class="form-control next-dd" id="next_due_date" name="next_due_date">' );
$this -> tagClose ( 'div' , 3 );
}
protected function pageClose ( bool $close_container = true )
{
if ( $close_container ) {
$this -> tagClose ( 'div' );
}
$this -> outputString ( '<script src="assets/js/jquery.min.js"></script>' );
$this -> outputString ( '<script src="assets/js/bootstrap.min.js"></script>' );
$this -> outputString ( '<script src="assets/js/scripts.min.js"></script>' );
$this -> outputString ( '<link rel="stylesheet" href="assets/css/all.min.css"/>' );
$this -> tagClose ( 'body' );
$this -> tagClose ( 'html' );
}
public function mainPage ()
{
2021-02-02 14:29:26 +01:00
$this -> checkPHPversion (); //Check PHP version. Wont load if not PHP 7.4 or above
2021-01-20 04:41:37 +01:00
$this -> pageHead ();
$this -> pageContents ();
$this -> pageFooter ();
$this -> pageClose ();
}
protected function searchDiv ()
{
$this -> rowColOpen ( 'row' , 'col-12' );
$this -> tagOpen ( 'form' );
$this -> textInput ( 'searchInput' , '' , 'form-control' , false );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 2 );
$this -> tagOpen ( 'div' , '' , 'searchDivBody' );
$this -> tagClose ( 'div' );
}
public function searchResults ( string $search_term )
{
if ( ! empty ( $search_term )) {
2021-01-30 14:31:11 +01:00
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `hostname`,`ipv4`, `virt`, `tags`, `label`, p.price, p.currency, p.term FROM `servers` INNER JOIN pricing p on servers.id = p.server_id WHERE `hostname` LIKE ? OR `ipv4` LIKE ? OR `tags` LIKE ? OR `label` LIKE ? LIMIT 30; " );
$select -> execute ([ " % $search_term % " , " % $search_term % " , " % $search_term % " , " % $search_term % " ]);
2021-01-20 04:41:37 +01:00
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> rowColOpen ( 'row search-result' , 'col-6' );
2021-01-30 14:31:11 +01:00
$this -> outputString ( " <p class='m-value'> { $row [ 'hostname' ] } <code> { $row [ 'ipv4' ] } </code> <span class='data-type'> { $row [ 'virt' ] } </span> { $row [ 'price' ] } { $row [ 'currency' ] } <span class='data-type'> " . $this -> paymentTerm ( $row [ 'term' ]) . " </span> <code> { $row [ 'label' ] } </code></p> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-3' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreServer" value="' . $row [ 'id' ] . '" data-target="#viewMoreServerModal" data-toggle="modal" href="#" role="button">View</a>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-3' );
$this -> outputString ( '<a class="btn btn-second" id="editServer" value="' . $row [ 'id' ] . '" data-target="#editServerModal" data-toggle="modal" href="#" role="button">Edit</a>' );
$this -> tagClose ( 'div' , 2 );
}
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `domain`, p.price, p.currency, p.term FROM `domains` INNER JOIN pricing p on domains.id = p.server_id WHERE `domain` LIKE ? LIMIT 30; " );
$select -> execute ([ " % $search_term % " ]);
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> rowColOpen ( 'row search-result' , 'col-6' );
$this -> outputString ( " <p class='m-value'> { $row [ 'domain' ] } <span class='data-type'>domain</span> { $row [ 'price' ] } { $row [ 'currency' ] } <span class='data-type'> " . $this -> paymentTerm ( $row [ 'term' ]) . " </span></p> " );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreDomain" value="' . $row [ 'id' ] . '" data-target="#viewMoreModalDomain" data-toggle="modal" href="#" role="button">View</a>' );
$this -> tagClose ( 'div' , 2 );
}
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `domain`, `type`, p.price, p.currency, p.term FROM `shared_hosting` INNER JOIN pricing p on shared_hosting.id = p.server_id WHERE `domain` LIKE ? OR `type` LIKE ? LIMIT 30; " );
$select -> execute ([ " % $search_term % " , " % $search_term % " ]);
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> rowColOpen ( 'row search-result' , 'col-6' );
$this -> outputString ( " <p class='m-value'> { $row [ 'domain' ] } <span class='data-type'> { $row [ 'type' ] } </span> { $row [ 'price' ] } { $row [ 'currency' ] } <span class='data-type'> " . $this -> paymentTerm ( $row [ 'term' ]) . " </span></p> " );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> outputString ( '<a class="btn btn-main" id="viewMoreSharedHosting" value="' . $row [ 'id' ] . '" data-target="#viewMoreModalSharedHosting" data-toggle="modal" href="#" role="button">View</a>' );
$this -> tagClose ( 'div' , 2 );
}
}
}
protected function handleLocation ( string $provider )
{ //Inserts location + returns id OR returns id if location already exists
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `name` FROM `locations` WHERE `name` = ? LIMIT 1; " );
$select -> execute ([ $provider ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( ! empty ( $row )) { //Yes
return $row [ 'id' ];
} else { //NO
$insert = $this -> dbConnect () -> prepare ( 'INSERT INTO `locations` (`name`) VALUES (?);' );
$insert -> execute ([ $provider ]);
2021-01-24 03:33:45 +01:00
return $this -> dbConnect () -> lastInsertId ();
2021-01-20 04:41:37 +01:00
}
}
protected function handleProvider ( string $provider )
{ //Inserts provider + returns id OR returns id if provider already exists
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `name` FROM `providers` WHERE `name` = ? LIMIT 1; " );
$select -> execute ([ $provider ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( ! empty ( $row )) { //Yes
return $row [ 'id' ];
} else { //NO
$insert = $this -> dbConnect () -> prepare ( 'INSERT INTO `providers` (`name`) VALUES (?);' );
$insert -> execute ([ $provider ]);
2021-01-24 03:33:45 +01:00
return $this -> dbConnect () -> lastInsertId ();
2021-01-20 04:41:37 +01:00
}
}
public function locationsAutoCompleteGET ( string $value )
{ //Returns array from a LIKE query for input term
$select = $this -> dbConnect () -> prepare ( " SELECT `name` FROM locations WHERE `name` LIKE ? LIMIT 16; " );
$select -> execute ( array ( '' . $value . '%' ));
$array = array ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$array [] = $row [ 'name' ];
}
echo json_encode ( $array );
}
public function providersAutoCompleteGET ( string $value )
{ //Returns array from a LIKE query for input term
$select = $this -> dbConnect () -> prepare ( " SELECT `name` FROM providers WHERE `name` LIKE ? LIMIT 16; " );
$select -> execute ( array ( '' . $value . '%' ));
$array = array ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$array [] = $row [ 'name' ];
}
echo json_encode ( $array );
}
protected function pageFooter ( string $text = " My Idlers " , string $link = " https://github.com/cp6/my-idlers " )
{
$this -> rowColOpen ( 'row footer-row' , 'col-12' );
$this -> outputString ( " <a class='footer-text' href=' $link '><p> $text </p></a> " );
$this -> tagClose ( 'div' , 2 );
}
public function viewMoreModal ( string $item_id )
{
$data = json_decode ( $this -> serverData ( $item_id ), true );
if ( ! isset ( $data )) { //returned no data
exit ;
}
2021-01-30 14:24:32 +01:00
( is_null ( $data [ 'ipv6' ]) || empty ( $data [ 'ipv6' ])) ? $ipv6 = '-' : $ipv6 = $data [ 'ipv6' ];
2021-01-20 04:41:37 +01:00
( $data [ 'has_yabs' ] == 1 ) ? $has_yabs = true : $has_yabs = false ;
2021-01-25 14:15:46 +01:00
( $data [ 'has_st' ] == 1 ) ? $has_st = true : $has_st = false ;
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> HTMLphrase ( 'h4' , 'modal-title w-100' , $data [ 'hostname' ], 'view_more_header' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
2021-01-30 14:24:32 +01:00
if ( ! is_null ( $data [ 'label' ]) || ! empty ( $data [ 'label' ])) {
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-30 14:24:32 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Label' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> outputString ( '<p class="m-value">' . $data [ 'label' ] . '</p>' );
$this -> tagClose ( 'div' , 2 );
}
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'IPv4 ' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ipv4' ] . '</p></code>' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'IPv6 ' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<code><p class="m-value">' . $ipv6 . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'NS1 ' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ns1' ] . '</p></code>' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'NS2 ' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ns2' ] . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Location ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'location' ]);
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Provider ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'provider' ]);
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'OS ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> osIntToString ( $data [ 'os' ]));
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Due in ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $this -> processDueDate ( $data [ 'server_id' ], $data [ 'term' ], $data [ 'next_dd' ]) . '<span class="data-type">days</span>' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Bandwidth ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'bandwidth' ] . '<span class="data-type">' . $data [ 'bandwidth_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'SSH Port ' );
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ssh_port' ] . '</p></code>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Disk ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'disk' ] . '<span class="data-type">' . $data [ 'disk_type' ] . '</span>' );
2021-02-06 15:08:34 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6' );
if ( ! is_null ( $data [ 'asn' ])) {
$asn_exp = explode ( ',' , $data [ 'asn' ]);
$asn_link = " <a href='https://stat.ripe.net/ " . $asn_exp [ 1 ] . " #tabId=at-a-glance'> $asn_exp[1] </a> " ;
$this -> HTMLphrase ( 'p' , 'm-desc' , 'ASN ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $asn_exp [ 0 ] . ' ' . $asn_link );
}
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-section-row' , 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-section-text text-center' , 'CPU' );
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Amount ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'cpu' ]);
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Frequency ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'cpu_freq' ] . '<span class="data-type">Mhz</span>' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-12' );
$this -> outputString ( '<i><p class="m-value">' . $data [ 'cpu_type' ] . '</p></i>' );
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' , 3 );
2021-01-20 04:41:37 +01:00
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6' );
$this -> outputString ( '<p class="m-section-text text-center">Ram</p>' );
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Ram ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'ram' ] . '<span class="data-type">' . $data [ 'ram_type' ] . '</span>' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Swap ' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'swap' ] . '<span class="data-type">' . $data [ 'swap_type' ] . '</span>' );
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' , 4 );
2021-01-20 04:41:37 +01:00
if ( $has_yabs ) {
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'GeekBench 5' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'single: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'gb5_single' ]);
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'multi: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'gb5_multi' ]);
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'id: ' );
$this -> outputString ( '<a id="m_gb5_id_link" href="https://browser.geekbench.com/v5/cpu/' . $data [ 'gb5_id' ] . '"><p class="m-value">' . $data [ 'gb5_id' ] . '</p></a>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
2021-01-31 02:00:50 +01:00
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Disk tests' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-6 col-md-3 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , '4k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '4k' ] . '<span class="data-type">' . $data [ '4k_type' ] . '</span>' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-6 col-md-3 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , '64k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '64k' ] . '<span class="data-type">' . $data [ '64k_type' ] . '</span>' );
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6 col-md-3 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , '512k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '512k' ] . '<span class="data-type">' . $data [ '512k_type' ] . '</span>' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-6 col-md-3 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , '1m: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '1m' ] . '<span class="data-type">' . $data [ '1m_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
}
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Pricing' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-12 col-md-6 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . '</span> ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> paymentTerm ( $data [ 'term' ]));
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'As USD per month: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '$' . $data [ 'usd_per_month' ] . '' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Other' );
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Owned since' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-8 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'owned_since' ]);
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Dedicated: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'is_dedicated' ]));
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Dedi CPU: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'is_cpu_dedicated' ]));
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Is offer: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'was_special' ]));
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'AES-NI: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'aes_ni' ]));
$this -> tagClose ( 'div' , 2 );
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'VM-x/AMD-V: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'amd_v' ]));
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-4 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Virt: ' );
$this -> tagClose ( 'div' );
2021-01-31 02:00:50 +01:00
$this -> colOpen ( 'col-2 mm-col' );
2021-01-20 04:41:37 +01:00
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'virt' ]);
$this -> tagClose ( 'div' , 2 );
2021-01-25 14:15:46 +01:00
if ( $has_yabs && $has_st ) {
2021-01-20 04:41:37 +01:00
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
2021-01-31 02:00:50 +01:00
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Network tests' );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'div' , 2 );
$this -> tagOpen ( 'div' , 'row' );
$this -> outputString ( '<div class="col-6"><p class="m-desc">Location:</p></div>' );
$this -> outputString ( '<div class="col-3"><p class="m-desc">Send:</p></div>' );
$this -> outputString ( '<div class="col-3"><p class="m-desc">Receive:</p></div>' );
$this -> tagClose ( 'div' );
for ( $i = 0 ; $i <= 7 ; $i ++ ) {
if ( isset ( $data [ $i ])) {
$this -> rowColOpen ( 'row' , 'col-6' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ $i ][ 'location' ]);
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-3' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ $i ][ 'send' ] . '<span class="data-type">' . $data [ $i ][ 'send_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-3' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ $i ][ 'recieve' ] . '<span class="data-type">' . $data [ $i ][ 'recieve_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> tagClose ( 'div' );
}
}
}
2021-01-24 02:44:51 +01:00
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-section-row' , 'col-12 col-md-6' );
$this -> htmlPhrase ( 'p' , 'm-section-text text-center' , 'Notes' );
2021-01-24 02:44:51 +01:00
$this -> outputString ( " <textarea class='form-control' id='server_notes' name='server_notes' rows='4' cols='40' maxlength='255' disabled> " );
2021-01-25 14:15:46 +01:00
if ( is_null ( $data [ 'notes' ]) || empty ( $data [ 'notes' ])) {
2021-01-24 03:30:22 +01:00
$this -> outputString ( '' );
} else {
$this -> outputString ( $data [ 'notes' ]);
}
2021-01-24 02:44:51 +01:00
$this -> outputString ( " </textarea> " );
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> HTMLphrase ( 'p' , 'm-section-text text-center' , 'Tags' );
2021-01-20 04:41:37 +01:00
$this -> tagOpen ( 'ul' );
$tags_arr = explode ( " , " , $data [ 'tags' ]);
foreach ( $tags_arr as $tag ) {
if ( ! empty ( $tag )) {
$this -> HTMLphrase ( 'li' , 'tags-list' , $tag );
}
}
$this -> tagClose ( 'ul' );
2021-01-31 02:00:50 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
if ( file_exists ( " yabs/ { $data [ 'server_id' ] } .txt " )) {
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-section-row text-center' , 'col-12 col-md-6' );
2021-01-20 04:41:37 +01:00
$this -> outputString ( '<a class="btn btn-main view-yabs-btn" id="viewYabs" value="' . $item_id . '" data-target="#yabsModal" data-toggle="modal" href="#" role="button">View YABs</a>' );
2021-01-22 01:37:47 +01:00
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-6' );
2021-01-22 02:21:35 +01:00
$this -> outputString ( '<a class="btn btn-third" id="closeViewMoreModal" role="button" data-dismiss="modal">Close</a>' );
2021-01-25 14:15:46 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-22 01:37:47 +01:00
} else {
2021-01-31 02:00:50 +01:00
$this -> rowColOpen ( 'row m-section-row text-center' , 'col-12' );
2021-01-22 02:21:35 +01:00
$this -> outputString ( '<a class="btn btn-third" id="closeViewMoreModal" role="button" data-dismiss="modal">Close</a>' );
2021-01-25 14:15:46 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
}
}
public function viewMoreSharedHostingModal ( string $item_id )
{
$data = json_decode ( $this -> sharedHostingData ( $item_id ), true );
if ( ! isset ( $data )) { //returned no data
exit ;
}
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> HTMLphrase ( 'h4' , 'modal-title w-100' , $data [ 'domain' ], 'view_more_header' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Type' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'type' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Provider' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'provider' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Location' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'location' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Cost' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]) . '</span> ' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Due in' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $this -> processDueDate ( $item_id , $data [ 'term' ], $data [ 'next_dd' ]) . '<span class="data-type">days</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Owned since' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'owned_since' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'About' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Storage' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'disk' ] . '<span class="data-type">' . $data [ 'disk_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Domains' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'domains_limit' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Email accounts' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'emails' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'FTP accounts' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'ftp' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Databases' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'db' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Bandwidth' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'bandwidth' ] . '<span class="data-type">TB</span>' );
$this -> tagClose ( 'div' , 2 );
}
public function viewMoreDomainModal ( string $item_id )
{
$data = json_decode ( $this -> domainData ( $item_id ), true );
if ( ! isset ( $data )) { //returned no data
exit ;
}
$this -> tagOpen ( 'div' , 'modal-header' );
$this -> HTMLphrase ( 'h4' , 'modal-title w-100' , $data [ 'domain' ], 'view_more_header' );
$this -> outputString ( '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'modal-body' );
2021-01-30 14:03:38 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Attached to' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
2021-02-01 04:31:12 +01:00
if ( ! is_null ( $data [ 'attached_to' ]) && ! empty ( $data [ 'attached_to' ])) {
2021-02-01 04:12:49 +01:00
$this -> outputString ( '<code><p class="m-value">' . $this -> idToObjectName ( $data [ 'attached_to' ]) . '</p></code>' );
} else {
$this -> outputString ( '' );
}
2021-01-30 14:03:38 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'NS2' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ns1' ] . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'NS2' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ns2' ] . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Provider' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'provider' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Cost' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . ' ' . $this -> paymentTerm ( $data [ 'term' ]) . '</span> ' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Due in' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $this -> processDueDate ( $item_id , $data [ 'term' ], $data [ 'next_dd' ]) . '<span class="data-type">days</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Owned since' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'owned_since' ]);
$this -> tagClose ( 'div' , 2 );
}
protected function orderForm ()
{
$this -> outputString ( '<form id="orderForm" method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-9' );
$this -> hiddenInput ( 'order_form' , 'true' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Order by' );
$this -> selectElement ( 'order_by' , 'form-control' );
$this -> selectOption ( 'CPU count DESC' , '1' , true );
$this -> selectOption ( 'CPU count ASC' , '2' );
$this -> selectOption ( 'CPU Frequency DESC' , '3' );
$this -> selectOption ( 'CPU Frequency ASC' , '4' );
$this -> selectOption ( 'Ram amount DESC' , '5' );
$this -> selectOption ( 'Ram amount ASC' , '6' );
$this -> selectOption ( 'Disk Amount DESC' , '7' );
$this -> selectOption ( 'Disk Amount ASC' , '8' );
$this -> selectOption ( 'Owned since DESC' , '9' );
$this -> selectOption ( 'Owned since ASC' , '10' );
$this -> selectOption ( 'GB5 single DESC' , '11' );
$this -> selectOption ( 'GB5 single ASC' , '12' );
$this -> selectOption ( 'GB5 multi DESC' , '13' );
$this -> selectOption ( 'GB5 multi ASC' , '14' );
$this -> selectOption ( 'Price DESC' , '15' );
$this -> selectOption ( 'Price ASC' , '16' );
$this -> selectOption ( 'Price p/m DESC' , '17' );
$this -> selectOption ( 'Price p/m ASC' , '18' );
$this -> selectOption ( '4k speed DESC' , '19' );
$this -> selectOption ( '4k speed ASC' , '20' );
$this -> selectOption ( '64k speed DESC' , '21' );
$this -> selectOption ( '64k speed ASC' , '22' );
$this -> selectOption ( '512k speed DESC' , '23' );
$this -> selectOption ( '512k speed ASC' , '24' );
$this -> selectOption ( '1m speed DESC' , '25' );
$this -> selectOption ( '1m speed ASC' , '26' );
$this -> selectOption ( 'Network send DESC' , '27' );
$this -> selectOption ( 'Network send ASC' , '28' );
$this -> selectOption ( 'Network receive DESC' , '29' );
$this -> selectOption ( 'Network receive ASC' , '30' );
$this -> selectOption ( 'Bandwidth amount DESC' , '31' );
$this -> selectOption ( 'Bandwidth amount ASC' , '32' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-3' );
$this -> submitInput ( 'Order' , 'submitInput' , 'btn btn-second btn-block order-btn' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> outputString ( '<div id="orderDiv"></div>' );
}
public function orderTable ( int $order_type )
{
if ( in_array ( $order_type , array ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , 'CPU' , 'Freq' , 'Ram' , 'Swap' , 'Disk' , 'BWidth' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `swap`, `swap_type`, `swap_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type` FROM `servers` " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 1 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `cpu` DESC; " );
} elseif ( $order_type == 2 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `cpu`; " );
} elseif ( $order_type == 3 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `cpu_freq` DESC; " );
} elseif ( $order_type == 4 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `cpu_freq`; " );
} elseif ( $order_type == 5 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `ram_mb` DESC; " );
} elseif ( $order_type == 6 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `ram_mb`; " );
} elseif ( $order_type == 7 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `disk_gb` DESC; " );
} elseif ( $order_type == 8 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `disk_gb`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'swap' ], 0 ) . " <span class='table-val-type'> " . $row [ 'swap_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 9 , 10 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , 'Owned since' , 'CPU' , 'Freq' , 'Ram' , 'Disk' , 'BWidth' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type`, DATE_FORMAT(`owned_since`, '%D %b %Y') as dt FROM `servers` " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 9 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `owned_since` DESC; " );
} elseif ( $order_type == 10 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `owned_since`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'dt' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 11 , 12 , 13 , 14 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , 'GB5 single' , 'GB5 multi' , 'CPU' , 'Freq' , 'Ram' , 'Disk' , 'BWidth' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type`, `gb5_single`, `gb5_multi` FROM `servers` WHERE has_yabs = 1 " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 11 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `gb5_single` DESC; " );
} elseif ( $order_type == 12 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `gb5_single`; " );
} elseif ( $order_type == 13 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `gb5_multi` DESC; " );
} elseif ( $order_type == 14 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `gb5_multi`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'gb5_single' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'gb5_multi' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 15 , 16 , 17 , 18 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , 'Price' , 'Term' , 'P/M' , 'USD' , 'CPU' , 'Freq' , 'Ram' , 'Disk' , 'BWidth' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type`, `price`, `currency`, `term`, `per_month`, `as_usd` FROM `servers` INNER JOIN `pricing`p on servers.id = p.server_id " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 15 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `as_usd` DESC; " );
} elseif ( $order_type == 16 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `as_usd`; " );
} elseif ( $order_type == 17 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `per_month` DESC; " );
} elseif ( $order_type == 18 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `per_month`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'price' ] } { $row [ 'currency' ] } </td> " );
$this -> outputString ( " <td> " . $this -> paymentTerm ( $row [ 'term' ]) . " </td> " );
$this -> outputString ( " <td> { $row [ 'per_month' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> { $row [ 'as_usd' ] } </td> " );
2021-01-20 04:41:37 +01:00
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , '4k' , '64k' , '512k' , '1m' , 'CPU' , 'Freq' , 'Ram' , 'Disk' , 'BWidth' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type`, `4k`, `4k_type`, `64k`, `64k_type`, `512k`, `512k_type`, `1m`, `1m_type` FROM `servers` INNER JOIN `disk_speed`p on servers.id = p.server_id WHERE has_yabs = 1 " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 19 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `4k_as_mbps` DESC; " );
} elseif ( $order_type == 20 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `4k_as_mbps`; " );
} elseif ( $order_type == 21 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `64k_as_mbps` DESC; " );
} elseif ( $order_type == 22 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `64k_as_mbps`; " );
} elseif ( $order_type == 23 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `512k_as_mbps` DESC; " );
} elseif ( $order_type == 24 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `512k_as_mbps`; " );
} elseif ( $order_type == 25 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `1m_as_mbps` DESC; " );
} elseif ( $order_type == 26 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `1m_as_mbps`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ '4k' ] } <span class='table-val-type'> { $row [ '4k_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ '64k' ] } <span class='table-val-type'> { $row [ '64k_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ '512k' ] } <span class='table-val-type'> { $row [ '512k_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ '1m' ] } <span class='table-val-type'> { $row [ '1m_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 27 , 28 , 29 , 30 ))) {
2021-01-28 01:10:31 +01:00
$this -> tableHeader ( array ( 'Hostname' , 'Send' , 'Receive' , 'Location' , 'CPU' , 'Freq' , 'Ram' , 'Disk' , 'BWidth' ));
$base_query = " SELECT servers.id, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type`, `send`, `send_type`, p.location, `recieve`, `recieve_type` FROM `servers` INNER JOIN `speed_tests`p on servers.id = p.server_id WHERE has_yabs = 1 " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 27 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `send_as_mbps` DESC LIMIT 80; " );
} elseif ( $order_type == 28 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `send_as_mbps` LIMIT 80; " );
} elseif ( $order_type == 29 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `recieve_as_mbps` DESC LIMIT 80; " );
} elseif ( $order_type == 30 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `recieve_as_mbps` LIMIT 80; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'send' ] } <span class='table-val-type'> { $row [ 'send_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ 'recieve' ] } <span class='table-val-type'> { $row [ 'recieve_type' ] } </span></td> " );
$this -> outputString ( " <td> { $row [ 'location' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 31 , 32 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'Bandwidth' , 'CPU' , 'Freq' , 'Ram' , 'Disk' ));
2021-01-28 01:10:31 +01:00
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram`, `ram_type`, `ram_mb`, `disk`, `disk_type`, `disk_gb`, `bandwidth`, `bandwidth_type` FROM `servers` " ;
2021-01-20 04:41:37 +01:00
if ( $order_type == 31 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `bandwidth` DESC; " );
} elseif ( $order_type == 32 ) {
$select = $this -> dbConnect () -> prepare ( " $base_query ORDER BY `bandwidth`; " );
}
$select -> execute ();
while ( $row = $select -> fetch ( PDO :: FETCH_ASSOC )) {
$this -> tagOpen ( 'tr' );
$this -> outputString ( " <td> { $row [ 'hostname' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . number_format ( $row [ 'bandwidth' ], 0 ) . " <span class='table-val-type'> " . $row [ 'bandwidth_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
2021-01-28 01:10:31 +01:00
$this -> outputString ( " <td> " . $this -> mhzToGhz ( $row [ 'cpu_freq' ]) . " <span class='table-val-type'>Ghz</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram' ], 0 ) . " <span class='table-val-type'> " . $row [ 'ram_type' ] . " </span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk' ], 0 ) . " <span class='table-val-type'> " . $row [ 'disk_type' ] . " </span></td> " );
2021-01-20 04:41:37 +01:00
$this -> tagClose ( 'tr' );
}
}
$this -> outputString ( '</tbody></table></div>' );
}
public function infoCard ()
{
$select = $this -> dbConnect () -> prepare ( " SELECT COUNT(*), SUM(`cpu`), SUM(`disk_gb`), SUM(`ram_mb`), SUM(`swap_mb`), SUM(`bandwidth`), SUM(`was_special`), SUM(`gb5_single`), SUM(`gb5_multi`) FROM `servers`; " );
$select -> execute ();
$row = $select -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
$inactive_servers = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as inactive FROM `servers` WHERE `still_have` = 0; " );
$inactive_servers -> execute ();
$inactive_servers_count = $inactive_servers -> fetch ()[ 'inactive' ];
$kvm = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as kvm_count FROM `servers` WHERE `virt` = 'KVM'; " );
$kvm -> execute ();
$kvm_count = $kvm -> fetch ()[ 'kvm_count' ];
$ovz = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as ovz_count FROM `servers` WHERE `virt` = 'OVZ'; " );
$ovz -> execute ();
$ovz_count = $ovz -> fetch ()[ 'ovz_count' ];
$dedi = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as dedi_count FROM `servers` WHERE `virt` = 'DEDI'; " );
$dedi -> execute ();
$dedi_count = $dedi -> fetch ()[ 'dedi_count' ];
$lxc = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as lxc_count FROM `servers` WHERE `virt` = 'LXC'; " );
$lxc -> execute ();
$lxc_count = $lxc -> fetch ()[ 'lxc_count' ];
$domains = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as domains_count FROM `domains` WHERE `still_have` = 1; " );
$domains -> execute ();
$domains_count = $domains -> fetch ()[ 'domains_count' ];
$domains_inactive = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as domains_count FROM `domains` WHERE `still_have` = 0; " );
$domains_inactive -> execute ();
$domains_inactive_count = $domains_inactive -> fetch ()[ 'domains_count' ];
$sh = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as sh_count FROM `shared_hosting` WHERE `still_have` = 1; " );
$sh -> execute ();
$sh_count = $sh -> fetch ()[ 'sh_count' ];
$sh_inactive = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as sh_count FROM `shared_hosting` WHERE `still_have` = 0; " );
$sh_inactive -> execute ();
$sh_inactive_count = $sh_inactive -> fetch ()[ 'sh_count' ];
$cpu_freq = $this -> dbConnect () -> prepare ( " SELECT `cpu_freq` FROM `servers` ORDER BY `cpu_freq` DESC LIMIT 1; " );
$cpu_freq -> execute ();
$fastest_cpu_freq = $cpu_freq -> fetch ()[ 'cpu_freq' ];
$single_high = $this -> dbConnect () -> prepare ( " SELECT `gb5_single` FROM `servers` ORDER BY `gb5_single` DESC LIMIT 1; " );
$single_high -> execute ();
$highest_single_gb5 = $single_high -> fetch ()[ 'gb5_single' ];
$multi_high = $this -> dbConnect () -> prepare ( " SELECT `gb5_multi` FROM `servers` ORDER BY `gb5_multi` DESC LIMIT 1; " );
$multi_high -> execute ();
$highest_multi_gb5 = $multi_high -> fetch ()[ 'gb5_multi' ];
$oldest = $this -> dbConnect () -> prepare ( " SELECT `hostname`, `owned_since` FROM `servers` ORDER BY `owned_since`; " );
$oldest -> execute ();
$oldest_row = $oldest -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
$oldest_d = $this -> dbConnect () -> prepare ( " SELECT `domain`, `owned_since` FROM `domains` ORDER BY `owned_since`; " );
$oldest_d -> execute ();
2021-01-28 01:10:31 +01:00
if ( isset ( $oldest_d -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ])) {
2021-01-27 03:54:33 +01:00
$oldest_d_row = $oldest_d -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
} else {
$oldest_d_row = array ( 'domain' => null , 'owned_since' => null );
}
2021-01-20 04:41:37 +01:00
$sel_price = $this -> dbConnect () -> prepare ( " SELECT `as_usd`, `term`, `usd_per_month` FROM `pricing`; " );
$sel_price -> execute ();
$tally = 0 ;
$pm_tally = 0 ;
while ( $row1 = $sel_price -> fetch ( PDO :: FETCH_ASSOC )) {
$cost = $row1 [ 'as_usd' ];
$term = $row1 [ 'term' ];
$pm = $row1 [ 'usd_per_month' ];
$pm_tally = ( $pm_tally + $pm );
if ( $term == 1 ) {
$tally = $tally + ( $cost * 12 );
} elseif ( $term == 2 ) {
$tally = $tally + ( $cost * 4 );
} elseif ( $term == 3 ) {
$tally = $tally + ( $cost * 2 );
} elseif ( $term == 4 ) {
$tally = $tally + $cost ;
} elseif ( $term == 4 ) {
$tally = $tally + ( $cost / 2 );
} elseif ( $term == 4 ) {
$tally = $tally + ( $cost / 3 );
}
}
$this -> outputString ( " <div class='card' id='infoCard'> " );
$this -> tagOpen ( 'div' , 'card-header text-center' );
$this -> HTMLphrase ( 'h2' , '' , 'My idlers info' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total servers: <span class="info-val">' . $row [ 'COUNT(*)' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total shared hosting: <span class="info-val">' . $sh_count . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total domains: <span class="info-val">' . $domains_count . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'KVM/OVZ/DEDI/LXC: <span class="info-val">' . $kvm_count . '/' . $ovz_count . '/' . $dedi_count . '/' . $lxc_count . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'No longer have servers: <span class="info-val">' . $inactive_servers_count . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'No longer have domains/shared: <span class="info-val">' . $domains_inactive_count . '/' . $sh_inactive_count . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total CPU: <span class="info-val">' . $row [ 'SUM(`cpu`)' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Fastest CPU: <span class="info-val">' . $fastest_cpu_freq . '<span class="data-type">Mhz</span></span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total disk: <span class="info-val">' . number_format ( $row [ 'SUM(`disk_gb`)' ], 0 ) . '<span class="data-type">GB</span></span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total bandwidth: <span class="info-val">' . number_format ( $row [ 'SUM(`bandwidth`)' ], 0 ) . '<span class="data-type">TB</span></span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total ram: <span class="info-val">' . number_format ( $row [ 'SUM(`ram_mb`)' ], 2 ) . '<span class="data-type">MB</span></span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total swap: <span class="info-val">' . number_format ( $row [ 'SUM(`swap_mb`)' ], 2 ) . '<span class="data-type">MB</span></span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total gb5_single: <span class="info-val">' . number_format ( $row [ 'SUM(`gb5_single`)' ], 0 ) . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total gb5_multi: <span class="info-val">' . number_format ( $row [ 'SUM(`gb5_multi`)' ], 0 ) . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Highest single/multi: <span class="info-val">' . $highest_single_gb5 . '/' . $highest_multi_gb5 . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );;
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Special priced: <span class="info-val">' . $row [ 'SUM(`was_special`)' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Oldest server: <span class="info-val">' . $oldest_row [ 'hostname' ] . ' ' . $oldest_row [ 'owned_since' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Oldest domain: <span class="info-val">' . $oldest_d_row [ 'domain' ] . ' ' . $oldest_d_row [ 'owned_since' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row info-row' , 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total cost p/m USD: <span class="info-val">$' . $pm_tally . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> HTMLphrase ( 'p' , 'info-desc' , 'Total cost per year USD: <span class="info-val">$' . $tally . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-12 col-md-4' );
$this -> tagClose ( 'div' , 4 );
}
protected function hasPassedDate ( string $the_date )
{
if ( new DateTime () > new DateTime ( $the_date )) {
//current date time has passed $the_date
return true ;
} else {
//current date time has NOT passed $the_date
return false ;
}
}
protected function nextDueDate ( int $term , string $last_dd )
{
$date = new DateTime ( $last_dd );
if ( $term == 1 ) {
$date -> add ( new DateInterval ( 'P1M' ));
} elseif ( $term == 2 ) {
$date -> add ( new DateInterval ( 'P3M' ));
} elseif ( $term == 3 ) {
$date -> add ( new DateInterval ( 'P6M' ));
} elseif ( $term == 4 ) {
$date -> add ( new DateInterval ( 'P1Y' ));
} elseif ( $term == 5 ) {
$date -> add ( new DateInterval ( 'P2Y' ));
} elseif ( $term == 6 ) {
$date -> add ( new DateInterval ( 'P3Y' ));
}
return $date -> format ( 'Y-m-d' );
}
protected function processDueDate ( string $item_id , int $term , $last_dd )
{ //Will return days until due. Will update if passed due date and then return days until due
if ( is_null ( $last_dd )) {
return " - " ; //Due date not set
} else {
if ( $this -> hasPassedDate ( $last_dd )) {
$update = $this -> dbConnect () -> prepare ( " UPDATE `pricing` SET `next_dd` = ? WHERE `server_id` = ? LIMIT 1; " );
$new_dd = $this -> nextDueDate ( $term , $last_dd );
$update -> execute ([ $new_dd , $item_id ]);
return $this -> daysAway ( $new_dd );
} else {
return $this -> daysAway ( $last_dd );
}
}
}
public function showYabsModal ( string $item_id )
{
$this -> tagOpen ( 'form' );
$this -> outputString ( '<textarea class="form-control" id="yabsTextBox" name="yabsTextBox" rows="40" cols="50">' );
$this -> outputString ( file_get_contents ( " yabs/ $item_id .txt " ));
$this -> tagClose ( 'textarea' );
$this -> tagClose ( 'form' );
2021-01-22 01:37:47 +01:00
$this -> rowColOpen ( 'row text-center' , 'col-12' );
2021-01-22 02:21:35 +01:00
$this -> outputString ( '<a class="btn btn-third" role="button" data-dismiss="modal">Close YABs</a>' );
2021-01-25 14:44:22 +01:00
$this -> tagClose ( 'div' , 2 );
2021-01-20 04:41:37 +01:00
}
2021-01-27 00:27:46 +01:00
public function getIpForDomain ( string $domain , string $type = 'A' ) : string
{ //Gets IP from A record for a domain
2021-02-06 14:58:41 +01:00
switch ( $type ) {
case " A " :
$data = dns_get_record ( $domain , DNS_A );
if ( isset ( $data [ '0' ][ 'ip' ])) {
return $data [ '0' ][ 'ip' ];
}
break ;
case " AAAA " :
$data = dns_get_record ( $domain , DNS_AAAA );
if ( isset ( $data [ '0' ][ 'ipv6' ])) {
return $data [ '0' ][ 'ipv6' ];
}
break ;
2021-01-27 00:27:46 +01:00
}
return " " ; //Doesnt exist/null/empty/invalid
}
2021-01-27 03:49:32 +01:00
public function checkIsUp ( string $host , int $port = 80 , int $wait_time = 1 ) : int
{ //Check if host/ip is "up"
if ( $fp = @ fsockopen ( $host , $port , $errCode , $errStr , $wait_time )) {
$result = 1 ;
} else {
$result = 0 ;
}
@ fclose ( $fp );
return $result ;
}
2021-02-06 14:58:41 +01:00
public function getAsnInfo ( string $ip )
{ //Thanks ripe.net
$data = json_decode ( @ file_get_contents ( " https://stat.ripe.net/data/whois/data.json?resource= $ip " ), true );
if ( isset ( $data ) && $data [ 'status_code' ] == 200 ) {
$origin = $desc = '' ;
foreach ( $data [ 'data' ][ 'irr_records' ][ 0 ] as $rec ) {
if ( $rec [ 'key' ] == 'descr' ) {
$desc = $rec [ 'value' ];
}
if ( $rec [ 'key' ] == 'origin' ) {
$origin .= $rec [ 'value' ];
}
}
return " $desc , AS $origin " ;
} else {
return " " ;
}
}
2021-01-29 01:20:24 +01:00
protected function viewSwitcherIcon ()
{
$this -> rowColOpen ( 'row text-center' , 'col-12' );
2021-01-30 01:19:05 +01:00
if ( self :: DEFAULT_VIEW == 'CARDS' ) {
$this -> outputString ( '<a id="viewSwitcherIcon"><i class="fas fa-table" id="viewSwitchIcon" title="Switch to table"></i></a>' );
} else {
$this -> outputString ( '<a id="viewSwitcherIcon"><i class="fas fa-th" id="viewSwitchIcon" title="Switch to cards"></i></a>' );
}
2021-01-29 01:20:24 +01:00
$this -> tagClose ( 'div' , 2 );
}
2021-01-30 14:03:38 +01:00
protected function idToObjectName ( string $id )
{ //Returns a hostname or domain for an id
$servers = $this -> dbConnect () -> prepare ( " SELECT `hostname` FROM `servers` WHERE `id` = ? LIMIT 1; " );
$servers -> execute ([ $id ]);
$servers_res = $servers -> fetch ( PDO :: FETCH_ASSOC );
if ( $servers_res ) {
return $servers_res [ 'hostname' ];
} else {
$shared = $this -> dbConnect () -> prepare ( " SELECT `domain` FROM `shared_hosting` WHERE `id` = ? LIMIT 1; " );
$shared -> execute ([ $id ]);
$shared_res = $shared -> fetch ( PDO :: FETCH_ASSOC );
if ( $shared_res ) {
return $shared_res [ 'domain' ];
} else {
$domain = $this -> dbConnect () -> prepare ( " SELECT `domain` FROM `domains` WHERE `id` = ? LIMIT 1; " );
$domain -> execute ([ $id ]);
$domain_res = $domain -> fetch ( PDO :: FETCH_ASSOC );
if ( $domain_res ) {
return $domain_res [ 'domain' ];
}
}
}
return $id ;
}
2021-02-02 05:53:27 +01:00
2021-02-02 14:29:26 +01:00
protected function checkPHPversion ()
{
if ( version_compare ( PHP_VERSION , '7.4' ) === - 1 ) {
echo " <script type='text/javascript'>alert('My idlers requires PHP 7.4 as a minimum version. You have " . PHP_VERSION . " installed');</script> " ;
exit ;
}
}
2021-02-02 05:53:27 +01:00
//Compare functions
protected function compatibleComparesSelect ()
{
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `hostname` FROM `servers` WHERE `has_yabs` = 1 AND `has_st` = 1 ORDER BY `hostname`; " );
$select -> execute ();
$rows = $select -> fetchAll ( PDO :: FETCH_ASSOC );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Server 1' );
$this -> selectElement ( 'compare_s1' );
$this -> selectOption ( '' , '' , true ); //Empty
foreach ( $rows as $aserver ) {
$this -> selectOption ( $aserver [ 'hostname' ], $aserver [ 'id' ]);
}
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Server 2' );
$this -> selectElement ( 'compare_s2' );
$this -> selectOption ( '' , '' , true );
foreach ( $rows as $aserver ) {
$this -> selectOption ( $aserver [ 'hostname' ], $aserver [ 'id' ]);
}
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
}
protected function compareSection ()
{
$this -> compatibleComparesSelect ();
$this -> tagOpen ( 'div' , '' , 'compareTableDiv' );
$this -> tagClose ( 'div' );
}
protected function tableRowCompare ( string $val1 , string $val2 , string $value_type = '' , bool $is_int = true )
{
$value_append = '<span class="data-type">' . $value_type . '</span>' ;
if ( $is_int ) {
$val1 = intval ( $val1 );
$val2 = intval ( $val2 );
}
if ( $val1 > $val2 ) { //val1 is greater than val2
$result = '+' . ( $val1 - $val2 );
if ( ! empty ( $value_type )) {
$result = '+' . ( $val1 - $val2 ) . $value_append ;
$val1 = $val1 . $value_append ;
$val2 = $val2 . $value_append ;
}
$this -> tableTd ( 'td-nowrap' , $val1 );
$this -> tableTd ( 'td-nowrap plus-td' , $result );
$this -> tableTd ( 'td-nowrap' , $val2 );
} elseif ( $val1 < $val2 ) { //val1 is less than val2
$result = '-' . ( $val2 - $val1 );
if ( ! empty ( $value_type )) {
$result = '-' . ( $val2 - $val1 ) . $value_append ;
$val1 = $val1 . $value_append ;
$val2 = $val2 . $value_append ;
}
$this -> tableTd ( 'td-nowrap' , $val1 );
$this -> tableTd ( 'td-nowrap neg-td' , $result );
$this -> tableTd ( 'td-nowrap' , $val2 );
} else { //Equal
$result = 0 ;
if ( ! empty ( $value_type )) {
$result = '0' . $value_append ;
$val1 = $val1 . $value_append ;
$val2 = $val2 . $value_append ;
}
$this -> tableTd ( 'td-nowrap' , $val1 );
$this -> tableTd ( 'td-nowrap equal-td' , $result );
$this -> tableTd ( 'td-nowrap' , $val2 );
}
}
public function compareTable ( string $server1_id , string $server2_id )
{
$server1_data = json_decode ( $this -> serverData ( $server1_id ), true );
$server2_data = json_decode ( $this -> serverData ( $server2_id ), true );
$this -> tableHeader ( array ( '' , $server1_data [ 'hostname' ], 'DIF' , $server2_data [ 'hostname' ]), 'table compare-table' , 'compareTable' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'CPU count' );
$this -> tableRowCompare ( $server1_data [ 'cpu' ], $server2_data [ 'cpu' ]);
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'CPU freq' );
$this -> tableRowCompare ( $this -> mhzToGhz ( $server1_data [ 'cpu_freq' ]), $this -> mhzToGhz ( $server2_data [ 'cpu_freq' ]), 'Ghz' , false );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Ram' );
$this -> tableRowCompare ( $server1_data [ 'ram_mb' ], $server2_data [ 'ram_mb' ], 'MB' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Swap' );
$this -> tableRowCompare ( $server1_data [ 'swap_mb' ], $server2_data [ 'swap_mb' ], 'MB' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Disk' );
$this -> tableRowCompare ( $server1_data [ 'disk_gb' ], $server2_data [ 'disk_gb' ], 'GB' );
$this -> tagClose ( 'tr' );
if ( $server1_data [ 'has_yabs' ] == 1 && $server2_data [ 'has_yabs' ] == 1 ) {
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'GB5 single' );
$this -> tableRowCompare ( $server1_data [ 'gb5_single' ], $server2_data [ 'gb5_single' ]);
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'GB5 multi' );
$this -> tableRowCompare ( $server1_data [ 'gb5_multi' ], $server2_data [ 'gb5_multi' ]);
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , '4k disk' );
$this -> tableRowCompare ( $server1_data [ '4k_as_mbps' ], $server2_data [ '4k_as_mbps' ], 'MB/s' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , '64k disk' );
$this -> tableRowCompare ( $server1_data [ '64k_as_mbps' ], $server2_data [ '64k_as_mbps' ], 'MB/s' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , '512k disk' );
$this -> tableRowCompare ( $server1_data [ '512k_as_mbps' ], $server2_data [ '512k_as_mbps' ], 'MB/s' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , '1m disk' );
$this -> tableRowCompare ( $server1_data [ '1m_as_mbps' ], $server2_data [ '1m_as_mbps' ], 'MB/s' );
$this -> tagClose ( 'tr' );
}
if ( $server1_data [ 'has_st' ] == 1 && $server2_data [ 'has_st' ] == 1 ) {
if ( isset ( $server1_data [ 0 ]) && isset ( $server2_data [ 0 ])) {
if ( $server1_data [ 0 ][ 'location' ] == $server2_data [ 0 ][ 'location' ]) {
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 0 ][ 'location' ] . ' send' );
$this -> tableRowCompare ( $server1_data [ 0 ][ 'send_as_mbps' ], $server2_data [ 0 ][ 'send_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 0 ][ 'location' ] . ' recieve' );
$this -> tableRowCompare ( $server1_data [ 0 ][ 'recieve_as_mbps' ], $server2_data [ 0 ][ 'recieve_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
}
}
if ( isset ( $server1_data [ 1 ]) && isset ( $server2_data [ 1 ])) {
if ( $server1_data [ 1 ][ 'location' ] == $server2_data [ 1 ][ 'location' ]) {
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 1 ][ 'location' ] . ' send' );
$this -> tableRowCompare ( $server1_data [ 1 ][ 'send_as_mbps' ], $server2_data [ 1 ][ 'send_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 1 ][ 'location' ] . ' recieve' );
$this -> tableRowCompare ( $server1_data [ 1 ][ 'recieve_as_mbps' ], $server2_data [ 1 ][ 'recieve_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
}
}
if ( isset ( $server1_data [ 2 ]) && isset ( $server2_data [ 2 ])) {
if ( $server1_data [ 2 ][ 'location' ] == $server2_data [ 2 ][ 'location' ]) {
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 2 ][ 'location' ] . ' send' );
$this -> tableRowCompare ( $server1_data [ 2 ][ 'send_as_mbps' ], $server2_data [ 2 ][ 'send_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 2 ][ 'location' ] . ' recieve' );
$this -> tableRowCompare ( $server1_data [ 2 ][ 'recieve_as_mbps' ], $server2_data [ 2 ][ 'recieve_as_mbps' ], 'MBps' );
$this -> tagClose ( 'tr' );
}
}
}
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'USD p/m' );
$this -> tableRowCompare ( $server1_data [ 'usd_per_month' ], $server2_data [ 'usd_per_month' ], 'p/m' , false );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Actual price' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 'price' ] . '<span class="data-type">' . $server1_data [ 'currency' ] . '</span>' . ' ' . $this -> paymentTerm ( $server1_data [ 'term' ]));
$this -> tableTd ( 'td-nowrap equal-td' , '' );
$this -> tableTd ( 'td-nowrap' , $server2_data [ 'price' ] . '<span class="data-type">' . $server2_data [ 'currency' ] . '</span>' . ' ' . $this -> paymentTerm ( $server2_data [ 'term' ]));
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
if ( $server1_data [ 'price' ] > 0 && $server2_data [ 'price' ] > 0 ) {
$this -> tableTd ( 'td-nowrap' , 'CPU per USD' );
$this -> tableRowCompare ( number_format (( $server1_data [ 'usd_per_month' ] / $server1_data [ 'cpu' ]), 2 ), number_format (( $server2_data [ 'usd_per_month' ] / $server2_data [ 'cpu' ]), 2 ), '' , false );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Disk GB per USD' );
$this -> tableRowCompare (( $server1_data [ 'disk_gb' ] / $server1_data [ 'usd_per_month' ]), ( $server2_data [ 'disk_gb' ] / $server2_data [ 'usd_per_month' ]), 'GB' , true );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Ram MB per USD' );
$this -> tableRowCompare (( $server1_data [ 'ram_mb' ] / $server1_data [ 'usd_per_month' ]), ( $server2_data [ 'ram_mb' ] / $server2_data [ 'usd_per_month' ]), 'MB' , true );
$this -> tagClose ( 'tr' );
if ( $server1_data [ 'has_yabs' ] == 1 && $server2_data [ 'has_yabs' ] == 1 ) {
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'GB5 single per USD' );
$this -> tableRowCompare (( $server1_data [ 'gb5_single' ] / $server1_data [ 'usd_per_month' ]), ( $server2_data [ 'gb5_single' ] / $server2_data [ 'usd_per_month' ]), '' , true );
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'GB5 multi per USD' );
$this -> tableRowCompare (( $server1_data [ 'gb5_multi' ] / $server1_data [ 'usd_per_month' ]), ( $server2_data [ 'gb5_multi' ] / $server2_data [ 'usd_per_month' ]), '' , true );
$this -> tagClose ( 'tr' );
}
}
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Location' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 'location' ]);
$this -> tableTd ( 'td-nowrap equal-td' , '' );
$this -> tableTd ( 'td-nowrap' , $server2_data [ 'location' ]);
$this -> tagClose ( 'tr' );
$this -> tagOpen ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Provider' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 'provider' ]);
$this -> tableTd ( 'td-nowrap equal-td' , '' );
$this -> tableTd ( 'td-nowrap' , $server2_data [ 'provider' ]);
$this -> tagClose ( 'tr' );
$this -> tableTd ( 'td-nowrap' , 'Owned since' );
$this -> tableTd ( 'td-nowrap' , $server1_data [ 'owned_since' ]);
$this -> tableTd ( 'td-nowrap equal-td' , '' );
$this -> tableTd ( 'td-nowrap' , $server2_data [ 'owned_since' ]);
$this -> tagClose ( 'tr' );
$this -> outputString ( '</tbody></table></div>' );
}
2021-01-20 04:41:37 +01:00
}
class itemInsert extends idlers
{
public string $item_id ;
public array $data ;
public function __construct ( array $data )
{
$this -> item_id = $this -> genId ();
$this -> data = $data ;
}
public function insertBasicWithYabs ()
{ //Insert data from form EXCEPT the YABs output
$data = $this -> data ;
$item_id = $this -> item_id ;
( isset ( $data [ 'dedi_cpu' ])) ? $dedi_cpu = 1 : $dedi_cpu = 0 ;
( $data [ 'virt' ] == 'DEDI' ) ? $dedi = 1 : $dedi = 0 ;
( isset ( $data [ 'was_offer' ])) ? $offer = 1 : $offer = 0 ;
2021-01-26 06:13:42 +01:00
( empty ( $data [ 'ipv4' ])) ? $ipv4 = null : $ipv4 = $data [ 'ipv4' ];
2021-01-20 04:41:37 +01:00
( empty ( $data [ 'ipv6' ])) ? $ipv6 = null : $ipv6 = $data [ 'ipv6' ];
2021-01-30 14:24:32 +01:00
( empty ( $data [ 'label' ])) ? $label = null : $label = $data [ 'label' ];
2021-02-06 14:58:41 +01:00
if ( self :: GET_ASN_INFO ) {
if ( ! is_null ( $ipv4 )) {
$asn = $this -> getAsnInfo ( $ipv4 );
} elseif ( ! is_null ( $ipv6 )) {
$asn = $this -> getAsnInfo ( $ipv6 );
} else {
$asn = null ;
}
if ( empty ( $asn )) {
$asn = null ;
}
} else {
$asn = null ;
}
2021-01-20 04:41:37 +01:00
$location_id = $this -> handleLocation ( $data [ 'location' ]);
$provider_id = $this -> handleProvider ( $data [ 'provider' ]);
2021-02-06 14:58:41 +01:00
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `servers` (id, hostname, location, provider, ipv4,ipv6, owned_since, os, is_cpu_dedicated, is_dedicated, was_special, bandwidth, virt, has_yabs, ns1, ns2, ssh_port, label, asn) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' );
$insert -> execute ([ $item_id , $data [ 'hostname' ], $location_id , $provider_id , $ipv4 , $ipv6 , $data [ 'owned_since' ], $data [ 'os' ], $dedi_cpu , $dedi , $offer , $data [ 'bandwidth' ], $data [ 'virt' ], $data [ 'has_yabs' ], $data [ 'ns1' ], $data [ 'ns2' ], $data [ 'ssh_port' ], $label , $asn ]);
2021-01-20 04:41:37 +01:00
$this -> insertPrice ( $data [ 'price' ], $data [ 'currency' ], $data [ 'term' ], $data [ 'next_due_date' ]);
return $item_id ;
}
public function insertBasic ()
{ //Manual form insert (NO YABs)
$data = $this -> data ;
$item_id = $this -> item_id ;
( isset ( $data [ 'dedi_cpu' ])) ? $dedi_cpu = 1 : $dedi_cpu = 0 ;
( $data [ 'virt' ] == 'DEDI' ) ? $dedi = 1 : $dedi = 0 ;
( isset ( $data [ 'was_offer' ])) ? $offer = 1 : $offer = 0 ;
2021-01-26 06:13:42 +01:00
( empty ( $data [ 'ipv4' ])) ? $ipv4 = null : $ipv4 = $data [ 'ipv4' ];
2021-01-20 04:41:37 +01:00
( empty ( $data [ 'ipv6' ])) ? $ipv6 = null : $ipv6 = $data [ 'ipv6' ];
2021-01-30 14:24:32 +01:00
( empty ( $data [ 'label' ])) ? $label = null : $label = $data [ 'label' ];
2021-02-06 14:58:41 +01:00
if ( self :: GET_ASN_INFO ) {
if ( ! is_null ( $ipv4 )) {
$asn = $this -> getAsnInfo ( $ipv4 );
} elseif ( ! is_null ( $ipv6 )) {
$asn = $this -> getAsnInfo ( $ipv6 );
} else {
$asn = null ;
}
if ( empty ( $asn )) {
$asn = null ;
}
} else {
$asn = null ;
}
2021-01-20 04:41:37 +01:00
( $data [ 'ram_type' ] == 'GB' ) ? $ram_mb = $this -> GBtoMB ( $data [ 'ram' ]) : $ram_mb = $data [ 'ram' ];
( $data [ 'swap_type' ] == 'GB' ) ? $swap_mb = $this -> GBtoMB ( $data [ 'swap' ]) : $swap_mb = $data [ 'swap' ];
( $data [ 'disk_type' ] == 'TB' ) ? $disk_gb = $this -> TBtoGB ( $data [ 'disk' ]) : $disk_gb = $data [ 'disk' ];
$location_id = $this -> handleLocation ( $data [ 'location' ]);
$provider_id = $this -> handleProvider ( $data [ 'provider' ]);
2021-02-06 14:58:41 +01:00
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `servers` (id, hostname, location, provider, ipv4,ipv6, owned_since, os, is_cpu_dedicated, is_dedicated, was_special, bandwidth, virt, cpu, cpu_freq, ram, ram_type, swap, swap_type, disk, disk_type, ram_mb, swap_mb, disk_gb, ns1, ns2, ssh_port, label, asn) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' );
$insert -> execute ([ $item_id , $data [ 'hostname' ], $location_id , $provider_id , $ipv4 , $ipv6 , $data [ 'owned_since' ], $data [ 'os' ], $dedi_cpu , $dedi , $offer , $data [ 'bandwidth' ], $data [ 'virt' ], $data [ 'cpu_amount' ], $data [ 'cpu_speed' ], $data [ 'ram' ], $data [ 'ram_type' ], $data [ 'swap' ], $data [ 'swap_type' ], $data [ 'disk' ], $data [ 'disk_type' ], $ram_mb , $swap_mb , $disk_gb , $data [ 'ns1' ], $data [ 'ns2' ], $data [ 'ssh_port' ], $label , $asn ]);
2021-01-20 04:41:37 +01:00
$this -> insertPrice ( $data [ 'price' ], $data [ 'currency' ], $data [ 'term' ], $data [ 'next_due_date' ]);
return $item_id ;
}
public function insertSharedHosting ()
{ //domains form insert
$data = $this -> data ;
$item_id = $this -> item_id ;
( $data [ 'shared_storage_type' ] == 'TB' ) ? $disk_gb = $this -> TBtoGB ( $data [ 'shared_storage' ]) : $disk_gb = $data [ 'shared_storage' ];
( isset ( $data [ 'shared_was_offer' ])) ? $offer = 1 : $offer = 0 ;
$location_id = $this -> handleLocation ( $data [ 'shared_location' ]);
$provider_id = $this -> handleProvider ( $data [ 'shared_provider' ]);
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `shared_hosting` (id, domain, domains_limit, emails, disk, disk_type, disk_as_gb, ftp, db, bandwidth, provider, location, was_special, still_have, type, owned_since) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' );
$insert -> execute ([ $item_id , $data [ 'shared_domain' ], $data [ 'shared_domains_amount' ], $data [ 'shared_emails' ], $data [ 'shared_storage' ], $data [ 'shared_storage_type' ], $disk_gb , $data [ 'shared_ftp' ], $data [ 'shared_db_amount' ], $data [ 'shared_bandwidth' ], $provider_id , $location_id , $offer , '1' , $data [ 'shared_type' ], $data [ 'shared_owned_since' ]]);
$this -> insertPrice ( $data [ 'shared_price' ], $data [ 'shared_currency' ], $data [ 'shared_term' ], $data [ 'shared_next_due_date' ]);
return $item_id ;
}
public function insertDomain ()
{ //domains form insert
$data = $this -> data ;
$domain_id = $this -> item_id ;
$provider_id = $this -> handleProvider ( $data [ 'domain_provider' ]);
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `domains` (id, domain, provider, owned_since) VALUES (?,?,?,?)' );
$insert -> execute ([ $domain_id , $data [ 'domain' ], $provider_id , $data [ 'domain_owned_since' ]]);
$this -> insertPrice ( $data [ 'domain_price' ], $data [ 'domain_currency' ], $data [ 'domain_term' ], $data [ 'domain_next_due_date' ]);
return $domain_id ;
}
2021-02-01 04:31:12 +01:00
public function insertYabsData ()
2021-01-20 04:41:37 +01:00
{ //YABS data handler
$file_name = 'yabsFromForm.txt' ;
$logfile = fopen ( $file_name , " w " ) or die ( " Unable to open file! " );
fwrite ( $logfile , $this -> data [ 'yabs' ]);
fclose ( $logfile );
$file = @ fopen ( $file_name , 'r' );
if ( $file ) {
$array = explode ( " \n " , fread ( $file , filesize ( $file_name )));
//echo json_encode($array);
//exit;
}
2021-02-01 04:31:12 +01:00
if ( count ( $array ) < 50 ) {
2021-02-01 04:06:57 +01:00
return 9 ; //Less than 50 lines
}
if ( strpos ( $array [ 0 ], '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #' ) !== false ) {
2021-02-01 04:31:12 +01:00
if ( $array [ 1 ] == " \r " ) {
2021-02-01 04:06:57 +01:00
return 8 ; //Didnt copy output correctly
}
2021-01-20 04:41:37 +01:00
$version_array = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $this -> trimRemoveR ( $array [ 2 ])));
$version = $version_array [ 1 ]; //YABs version
2021-02-01 04:06:57 +01:00
if ( $version == 'v2020-12-29' ) {
$cpu = $this -> trimRemoveR ( str_replace ( ':' , '' , strstr ( $array [ 10 ], ': ' )));
$cpu_spec = explode ( ' ' , strstr ( $array [ 11 ], ': ' )); //: 2 @ 3792.872 MHz
$cpu_cores = $cpu_spec [ 1 ];
$cpu_freq = $cpu_spec [ 3 ];
$ram_line = $this -> trimRemoveR ( str_replace ( ':' , '' , strstr ( $array [ 14 ], ': ' )));
$ram = floatval ( $ram_line );
$ram_type = $this -> datatype ( $ram_line );
$swap_line = $this -> trimRemoveR ( str_replace ( ':' , '' , strstr ( $array [ 15 ], ': ' )));
$swap = floatval ( $swap_line );
$swap_type = $this -> datatype ( $swap_line );
$disk_line = $this -> trimRemoveR ( str_replace ( ':' , '' , strstr ( $array [ 16 ], ': ' )));
$disk = floatval ( $disk_line );
$disk_type = $this -> datatype ( $disk_line );
$io_3 = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ 24 ]));
$io_6 = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ 30 ]));
( strpos ( $array [ 12 ], 'Enabled' ) !== false ) ? $aes_ni = 1 : $aes_ni = 0 ;
( strpos ( $array [ 13 ], 'Enabled' ) !== false ) ? $vm_amd_v = 1 : $vm_amd_v = 0 ;
$d4k_as_mbps = $this -> diskSpeedAsMbps ( $io_3 [ 3 ], $this -> floatValue ( $io_3 [ 2 ]));
$d64k_as_mbps = $this -> diskSpeedAsMbps ( $io_3 [ 7 ], $this -> floatValue ( $io_3 [ 6 ]));
$d512k_as_mbps = $this -> diskSpeedAsMbps ( $io_6 [ 3 ], $this -> floatValue ( $io_6 [ 2 ]));
$d1m_as_mbps = $this -> diskSpeedAsMbps ( $io_6 [ 7 ], $this -> floatValue ( $io_6 [ 6 ]));
$disk_test_arr = array ( $this -> item_id , $this -> floatValue ( $io_3 [ 2 ]), $io_3 [ 3 ], $this -> floatValue ( $io_3 [ 6 ]), $io_3 [ 7 ], $this -> floatValue ( $io_6 [ 2 ]), $io_6 [ 3 ], $this -> floatValue ( $io_6 [ 6 ]), $io_6 [ 7 ], $d4k_as_mbps , $d64k_as_mbps , $d512k_as_mbps , $d1m_as_mbps );
$this -> insertDiskTest ( $disk_test_arr );
if ( isset ( $array [ 40 ])) {
if ( $array [ 45 ] == " Geekbench 5 Benchmark Test: \r " ) {
//No ipv6
//Has short ipv4 network speed testing (-r)
$start_st = 36 ;
$end_st = 43 ;
$gb_s = 49 ;
$gb_m = 50 ;
$gb_url = 51 ;
} elseif ( $array [ 45 ] == " Geekbench 4 Benchmark Test: \r " ) {
return 6 ; //GeekBench 5 only allowed
} elseif ( $array [ 45 ] == " Geekbench 5 test failed. Run manually to determine cause. " ) {
return 7 ; //GeekBench test failed
} elseif ( $array [ 40 ] == " Geekbench 5 Benchmark Test: \r " ) {
//No ipv6
//Has full ipv4 network speed testing
$start_st = 36 ;
$end_st = 38 ;
$gb_s = 44 ;
$gb_m = 45 ;
$gb_url = 46 ;
} elseif ( $array [ 40 ] == " iperf3 Network Speed Tests (IPv6): \r " ) {
//HAS ipv6
//Has short ipv4 & ipv6 network speed testing
$start_st = 36 ;
$end_st = 38 ;
$gb_s = 52 ;
$gb_m = 53 ;
$gb_url = 54 ;
} elseif ( $array [ 55 ] == " Geekbench 5 Benchmark Test: \r " ) {
//HAS ipv6
//Has full ipv4 & ipv6 network speed testing
$start_st = 36 ;
$end_st = 43 ;
$gb_s = 59 ;
$gb_m = 60 ;
$gb_url = 61 ;
} else {
return 5 ; //Not correct YABs command output
}
2021-01-20 04:41:37 +01:00
} else {
2021-02-01 04:06:57 +01:00
return 4 ; //Not correct format
2021-01-20 04:41:37 +01:00
}
2021-02-01 04:06:57 +01:00
$geekbench_single = $this -> intValue ( $array [ $gb_s ]);
$geekbench_multi = $this -> intValue ( $array [ $gb_m ]);
$geek_full_url = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ $gb_url ]));
$gb5_id = substr ( $geek_full_url [ 3 ], strrpos ( $geek_full_url [ 3 ], '/' ) + 1 ); //
$has_a_speed_test = false ;
for ( $i = $start_st ; $i <= $end_st ; $i ++ ) {
if ( strpos ( $array [ $i ], 'busy' ) !== false ) {
//Has a "busy" result, No insert
} else {
$data = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ $i ]));
$send_as_mbps = $this -> networkSpeedAsMbps ( $this -> yabsSpeedValues ( $data )[ 'send_type' ], $this -> yabsSpeedValues ( $data )[ 'send' ]);
$recieve_as_mbps = $this -> networkSpeedAsMbps ( $this -> yabsSpeedValues ( $data )[ 'receive_type' ], $this -> yabsSpeedValues ( $data )[ 'receive' ]);
$insert = $this -> dbConnect () -> prepare ( 'INSERT INTO `speed_tests` (`server_id`, `location`, `send`, `send_type`,`send_as_mbps`, `recieve`,`recieve_type`, `recieve_as_mbps`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)' );
$insert -> execute ([ $this -> item_id , $this -> yabsSpeedLoc ( $data )[ 'location' ], $this -> yabsSpeedValues ( $data )[ 'send' ], $this -> yabsSpeedValues ( $data )[ 'send_type' ], $send_as_mbps , $this -> yabsSpeedValues ( $data )[ 'receive' ], $this -> yabsSpeedValues ( $data )[ 'receive_type' ], $recieve_as_mbps ]);
$has_a_speed_test = true ;
}
}
if ( $has_a_speed_test ) {
$update_st = $this -> dbConnect () -> prepare ( 'UPDATE `servers` SET `has_st` = 1 WHERE `id` = ? LIMIT 1;' );
$update_st -> execute ([ $this -> item_id ]);
}
( $ram_type == 'GB' ) ? $ram_mb = $this -> GBtoMB ( $ram ) : $ram_mb = $ram ;
( $swap_type == 'GB' ) ? $swap_mb = $this -> GBtoMB ( $swap ) : $swap_mb = $swap ;
( $disk_type == 'TB' ) ? $disk_gb = $this -> TBtoGB ( $disk ) : $disk_gb = $disk ;
$update = $this -> dbConnect () -> prepare ( 'UPDATE `servers` SET `cpu` = ?, `cpu_freq` = ?, `cpu_type` = ?, ram = ?, ram_type = ?, swap = ?, swap_type = ?, disk = ?, disk_type = ?, `aes_ni` = ?, `amd_v` = ?, gb5_single = ?, gb5_multi = ?, gb5_id = ?, ram_mb = ?, swap_mb = ?, disk_gb = ? WHERE `id` = ? LIMIT 1;' );
$update -> execute ([ $cpu_cores , $cpu_freq , $cpu , $ram , $ram_type , $swap , $swap_type , $disk , $disk_type , $aes_ni , $vm_amd_v , $geekbench_single , $geekbench_multi , $gb5_id , $ram_mb , $swap_mb , $disk_gb , $this -> item_id ]);
2021-02-01 04:31:12 +01:00
if ( self :: SAVE_YABS_OUTPUT ) {
$this -> saveYABS ( $this -> data [ 'yabs' ], " { $this -> item_id } .txt " );
}
2021-02-01 04:06:57 +01:00
return 1 ;
} else {
return 2 ; //Wrong version
2021-01-20 04:41:37 +01:00
}
} else {
2021-02-01 04:06:57 +01:00
return 3 ; //Didnt start at right spot
2021-01-20 04:41:37 +01:00
}
}
protected function insertDiskTest ( array $results )
{ //Insert disk io results from the built array
$insert = $this -> dbConnect () -> prepare ( " INSERT IGNORE INTO `disk_speed` (`server_id`, `4k`, `4k_type`, `64k`, `64k_type`, `512k`, `512k_type`, `1m`, `1m_type`, `4k_as_mbps`, `64k_as_mbps`, `512k_as_mbps`, `1m_as_mbps`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?); " );
return $insert -> execute ([ $this -> item_id , $results [ 1 ], $results [ 2 ], $results [ 3 ], $results [ 4 ], $results [ 5 ], $results [ 6 ], $results [ 7 ], $results [ 8 ], $results [ 9 ], $results [ 10 ], $results [ 11 ], $results [ 12 ]]);
}
protected function insertPrice ( string $price , string $currency , int $term , string $next_dd )
{ //Insert price data
$as_usd = $this -> convertToUSD ( $price , $currency );
$insert = $this -> dbConnect () -> prepare ( " INSERT IGNORE INTO `pricing` (server_id, price, currency, term, as_usd, per_month, usd_per_month, next_dd) VALUES (?,?,?,?,?,?,?,?); " );
return $insert -> execute ([ $this -> item_id , $price , $currency , $term , $as_usd , $this -> costAsPerMonth ( $price , $term ), $this -> costAsPerMonth ( $as_usd , $term ), $next_dd ]);
}
}
class itemUpdate extends idlers
{
public string $item_id ;
public string $type ;
public array $data ;
public function __construct ( array $data )
{
$this -> data = $data ;
if ( isset ( $data [ 'sh_me_server_id' ])) {
$this -> item_id = $data [ 'sh_me_server_id' ];
$this -> type = 'SHARED' ;
} elseif ( isset ( $data [ 'd_me_server_id' ])) {
$this -> item_id = $data [ 'd_me_server_id' ];
$this -> type = 'DOMAIN' ;
} else {
$this -> item_id = $data [ 'me_server_id' ];
$this -> type = 'SERVER' ;
}
}
public function updateServerFromModal ()
{
$data = $this -> data ;
if ( ! isset ( $data [ 'me_non_active' ])) {
$this -> updateActiveStatus ( 1 );
} elseif ( $data [ 'me_non_active' ] == 'on' ) {
$this -> updateActiveStatus ( 0 );
}
2021-01-30 14:24:32 +01:00
$update = $this -> dbConnect () -> prepare ( " UPDATE `servers` SET `hostname` = ?,`ipv4` = ?,`ipv6` = ?,`cpu` = ?,`bandwidth` = ?,`disk` = ?,`ram` = ?,`ram_type` = ?,`swap` = ?,`swap_type` = ?, `virt` = ?, `tags` = ?, `owned_since` = ?, `ns1` = ?, `ns2` = ?, `ssh_port` = ?, `notes` = ?, `label` = ? WHERE `id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'me_hostname' ], $data [ 'me_ipv4' ], $data [ 'me_ipv6' ], $data [ 'me_cpu_amount' ], $data [ 'me_bandwidth' ], $data [ 'me_disk' ], $data [ 'me_ram' ], $data [ 'me_ram_type' ], $data [ 'me_swap' ], $data [ 'me_swap_type' ], $data [ 'me_virt' ], $data [ 'me_tags' ], $data [ 'me_owned_since' ], $data [ 'me_ns1' ], $data [ 'me_ns2' ], $data [ 'me_ssh_port' ], $data [ 'me_notes' ], $data [ 'me_label' ], $this -> item_id ]);
2021-01-20 04:41:37 +01:00
}
public function updateServerPricingFromModal ()
{
$data = $this -> data ;
$as_usd = $this -> convertToUSD ( $data [ 'me_price' ], $data [ 'me_currency' ]);
$update = $this -> dbConnect () -> prepare ( " UPDATE `pricing` SET `price` = ?,`currency` = ?,`term` = ?,`as_usd` = ?,`per_month` = ?, `usd_per_month` = ?, `next_dd` = ? WHERE `server_id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'me_price' ], $data [ 'me_currency' ], $data [ 'me_term' ], $as_usd , $this -> costAsPerMonth ( $data [ 'me_price' ], $data [ 'me_term' ]), $this -> costAsPerMonth ( $as_usd , $data [ 'me_term' ]), $data [ 'me_next_dd' ], $this -> item_id ]);
}
public function updateSharedHostingFromModal ()
{
$data = $this -> data ;
if ( ! isset ( $data [ 'sh_me_non_active' ])) {
$this -> updateActiveStatus ( 1 );
} elseif ( $data [ 'sh_me_non_active' ] == 'on' ) {
$this -> updateActiveStatus ( 0 );
}
$update = $this -> dbConnect () -> prepare ( " UPDATE `shared_hosting` SET `domain` = ?,`domains_limit` = ?,`emails` = ?,`disk` = ?,`disk_as_gb` = ?,`disk_type` = ?,`ftp` = ?,`db` = ?,`bandwidth` = ?,`owned_since` = ? WHERE `id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'sh_me_hostname' ], $data [ 'sh_me_domains_count' ], $data [ 'sh_me_emails' ], $data [ 'sh_me_storage' ], $data [ 'sh_me_storage' ], 'GB' , $data [ 'sh_me_ftp' ], $data [ 'sh_me_db' ], $data [ 'sh_me_bandwidth' ], $data [ 'sh_me_owned_since' ], $this -> item_id ]);
}
public function updateSharedHostingPricingFromModal ()
{
$data = $this -> data ;
$as_usd = $this -> convertToUSD ( $data [ 'sh_me_price' ], $data [ 'sh_me_currency' ]);
$update = $this -> dbConnect () -> prepare ( " UPDATE `pricing` SET `price` = ?,`currency` = ?,`term` = ?,`as_usd` = ?,`per_month` = ?, `usd_per_month` = ?, `next_dd` = ? WHERE `server_id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'sh_me_price' ], $data [ 'sh_me_currency' ], $data [ 'sh_me_term' ], $as_usd , $this -> costAsPerMonth ( $data [ 'sh_me_price' ], $data [ 'sh_me_term' ]), $this -> costAsPerMonth ( $as_usd , $data [ 'sh_me_term' ]), $data [ 'sh_me_next_dd' ], $this -> item_id ]);
}
public function updateDomainFromModal ()
{
$data = $this -> data ;
if ( ! isset ( $data [ 'd_me_non_active' ])) {
$this -> updateActiveStatus ( 1 );
} elseif ( $data [ 'd_me_non_active' ] == 'on' ) {
$this -> updateActiveStatus ( 0 );
}
2021-01-30 14:03:38 +01:00
( ! empty ( $_POST [ 'd_me_attached_to' ])) ? $attached_to = $_POST [ 'd_me_attached_to' ] : $attached_to = null ;
$update = $this -> dbConnect () -> prepare ( " UPDATE `domains` SET `domain` = ?,`ns1` = ?,`ns2` = ?,`owned_since` = ?, `attached_to` = ? WHERE `id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'd_me_hostname' ], $data [ 'd_me_ns1' ], $data [ 'd_me_ns2' ], $data [ 'd_me_owned_since' ], $attached_to , $this -> item_id ]);
2021-01-20 04:41:37 +01:00
}
public function updateDomainPricingFromModal ()
{
$data = $this -> data ;
$as_usd = $this -> convertToUSD ( $data [ 'd_me_price' ], $data [ 'd_me_currency' ]);
$update = $this -> dbConnect () -> prepare ( " UPDATE `pricing` SET `price` = ?,`currency` = ?,`term` = ?,`as_usd` = ?,`per_month` = ?, `usd_per_month` = ?, `next_dd` = ? WHERE `server_id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'd_me_price' ], $data [ 'd_me_currency' ], $data [ 'd_me_term' ], $as_usd , $this -> costAsPerMonth ( $data [ 'd_me_price' ], $data [ 'd_me_term' ]), $this -> costAsPerMonth ( $as_usd , $data [ 'd_me_term' ]), $data [ 'd_me_next_dd' ], $this -> item_id ]);
}
public function deleteObjectData ()
{ //Delete server data from all relevant tables
if ( $this -> type == 'SHARED' ) {
$table = 'shared_hosting' ;
} elseif ( $this -> type == 'DOMAIN' ) {
$table = 'domains' ;
} else {
$table = 'servers' ;
}
$item_id = $this -> item_id ;
$del_server = $this -> dbConnect () -> prepare ( " DELETE FROM ` $table ` WHERE `id` = ? LIMIT 1; " );
$del_server -> execute ([ $item_id ]);
$del_pricing = $this -> dbConnect () -> prepare ( " DELETE FROM `pricing` WHERE `server_id` = ? LIMIT 1; " );
$del_pricing -> execute ([ $item_id ]);
if ( $this -> type == 'SERVER' ) {
$del_disk = $this -> dbConnect () -> prepare ( " DELETE FROM `disk_speed` WHERE `server_id` = ?; " );
$del_disk -> execute ([ $item_id ]);
$del_speed = $this -> dbConnect () -> prepare ( " DELETE FROM `speed_tests` WHERE `server_id` = ?; " );
$del_speed -> execute ([ $item_id ]);
2021-02-01 04:46:37 +01:00
$this -> deleteYabsForId ( $item_id ); //Delete saved YABs
2021-01-20 04:41:37 +01:00
}
}
protected function updateActiveStatus ( int $status )
{
if ( $this -> type == 'SHARED' ) {
$table = 'shared_hosting' ;
} elseif ( $this -> type == 'DOMAIN' ) {
$table = 'domains' ;
} else {
$table = 'servers' ;
}
$update = $this -> dbConnect () -> prepare ( " UPDATE ` $table ` SET `still_have` = ? WHERE `id` = ? LIMIT 1; " );
return $update -> execute ([ $status , $this -> item_id ]);
}
2021-01-24 04:37:06 +01:00
public function updateYabsData ( bool $save_yabs = true )
{ //YABS data handler
$file_name = 'yabsFromForm.txt' ;
$logfile = fopen ( $file_name , " w " ) or die ( " Unable to open file! " );
fwrite ( $logfile , $this -> data [ 'me_yabs' ]);
if ( $save_yabs ) {
$this -> saveYABS ( $this -> data [ 'me_yabs' ], " { $this -> item_id } _ " . date ( 'Y-m-d' ) . " .txt " );
}
fclose ( $logfile );
$file = @ fopen ( $file_name , 'r' );
if ( $file ) {
$array = explode ( " \n " , fread ( $file , filesize ( $file_name )));
}
if ( strpos ( $array [ 0 ], '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #' ) !== false || count ( $array ) < 50 ) {
$io_3 = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ 24 ]));
$io_6 = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ 30 ]));
( strpos ( $array [ 12 ], 'Enabled' ) !== false ) ? $aes_ni = 1 : $aes_ni = 0 ;
( strpos ( $array [ 13 ], 'Enabled' ) !== false ) ? $vm_amd_v = 1 : $vm_amd_v = 0 ;
$d4k_as_mbps = $this -> diskSpeedAsMbps ( $io_3 [ 3 ], $this -> floatValue ( $io_3 [ 2 ]));
$d64k_as_mbps = $this -> diskSpeedAsMbps ( $io_3 [ 7 ], $this -> floatValue ( $io_3 [ 6 ]));
$d512k_as_mbps = $this -> diskSpeedAsMbps ( $io_6 [ 3 ], $this -> floatValue ( $io_6 [ 2 ]));
$d1m_as_mbps = $this -> diskSpeedAsMbps ( $io_6 [ 7 ], $this -> floatValue ( $io_6 [ 6 ]));
$disk_test_arr = array ( $this -> item_id , $this -> floatValue ( $io_3 [ 2 ]), $io_3 [ 3 ], $this -> floatValue ( $io_3 [ 6 ]), $io_3 [ 7 ], $this -> floatValue ( $io_6 [ 2 ]), $io_6 [ 3 ], $this -> floatValue ( $io_6 [ 6 ]), $io_6 [ 7 ], $d4k_as_mbps , $d64k_as_mbps , $d512k_as_mbps , $d1m_as_mbps );
$insert = $this -> dbConnect () -> prepare ( " INSERT IGNORE INTO `disk_speed` (`server_id`, `4k`, `4k_type`, `64k`, `64k_type`, `512k`, `512k_type`, `1m`, `1m_type`, `4k_as_mbps`, `64k_as_mbps`, `512k_as_mbps`, `1m_as_mbps`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?); " );
$insert -> execute ([ $this -> item_id , $disk_test_arr [ 1 ], $disk_test_arr [ 2 ], $disk_test_arr [ 3 ], $disk_test_arr [ 4 ], $disk_test_arr [ 5 ], $disk_test_arr [ 6 ], $disk_test_arr [ 7 ], $disk_test_arr [ 8 ], $disk_test_arr [ 9 ], $disk_test_arr [ 10 ], $disk_test_arr [ 11 ], $disk_test_arr [ 12 ]]);
if ( $array [ 45 ] == " Geekbench 5 Benchmark Test: \r " ) {
//No ipv6
//Has short ipv4 network speed testing (-r)
$start_st = 36 ;
$end_st = 43 ;
} elseif ( $array [ 40 ] == " Geekbench 5 Benchmark Test: \r " ) {
//No ipv6
//Has full ipv4 network speed testing
$start_st = 36 ;
$end_st = 38 ;
} elseif ( $array [ 40 ] == " iperf3 Network Speed Tests (IPv6): \r " ) {
//HAS ipv6
//Has short ipv4 & ipv6 network speed testing
$start_st = 36 ;
$end_st = 38 ;
} elseif ( $array [ 55 ] == " Geekbench 5 Benchmark Test: \r " ) {
//HAS ipv6
//Has full ipv4 & ipv6 network speed testing
$start_st = 36 ;
$end_st = 43 ;
}
for ( $i = $start_st ; $i <= $end_st ; $i ++ ) {
if ( strpos ( $array [ $i ], 'busy' ) !== false ) {
//Has a "busy" result, No insert
} else {
$data = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $array [ $i ]));
$send_as_mbps = $this -> networkSpeedAsMbps ( $this -> yabsSpeedValues ( $data )[ 'send_type' ], $this -> yabsSpeedValues ( $data )[ 'send' ]);
$recieve_as_mbps = $this -> networkSpeedAsMbps ( $this -> yabsSpeedValues ( $data )[ 'receive_type' ], $this -> yabsSpeedValues ( $data )[ 'receive' ]);
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `speed_tests` (`server_id`, `location`, `send`, `send_type`,`send_as_mbps`, `recieve`,`recieve_type`, `recieve_as_mbps`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)' );
$insert -> execute ([ $this -> item_id , $this -> yabsSpeedLoc ( $data )[ 'location' ], $this -> yabsSpeedValues ( $data )[ 'send' ], $this -> yabsSpeedValues ( $data )[ 'send_type' ], $send_as_mbps , $this -> yabsSpeedValues ( $data )[ 'receive' ], $this -> yabsSpeedValues ( $data )[ 'receive_type' ], $recieve_as_mbps ]);
}
}
return true ;
} else { //Not formatted right
return false ;
}
}
2021-03-17 01:31:43 +01:00
}
class auth extends idlers
{
public string $token ;
private string $user ;
private string $ip_address ;
public function selfDestruct ()
{
$select = $this -> dbConnect () -> prepare ( " SELECT `user` FROM `auth`; " );
$select -> execute ();
$user_count = $select -> rowCount ();
if ( $user_count == 0 ) {
//Begin create user
$this -> createAccountForm ();
} else {
//User already exists
//Delete AUTH.php
$this -> deleteAuthFile ();
}
}
protected function createAccountForm ()
{
if ( isset ( $_POST [ 'pass' ]) && isset ( $_POST [ 'user' ])) {
//Form submitted
$this -> insertAccount ( $_POST [ 'user' ], $_POST [ 'pass' ]);
} else {
$this -> pageHead ();
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h1' , '' , 'Create account' );
$this -> HTMLphrase ( 'p' , '' , 'If you are seeing this there are currently 0 accounts. Once 1 is created this file gets deleted.' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Username' );
$this -> textInput ( 'user' , '' , 'form-control' , true , 4 , 64 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Password' );
$this -> outputString ( " <input type='password' id='pass' name='pass' class='form-control' min-length='12' max-length='124' required> " );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row text-center' , 'col-12' );
$this -> submitInput ( 'Create' , 'submitInput' , 'btn btn-main' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
$this -> pageFooter ();
}
}
protected function insertAccount ( string $user , string $pass ) : bool
{
$hashed_password = password_hash ( $pass , PASSWORD_DEFAULT ); //Hash the submitted password
$insert = $this -> dbConnect () -> prepare ( " INSERT INTO `auth` (`user`, `pass`) VALUES (?,?) " );
return $insert -> execute ([ $user , $hashed_password ]);
}
public function sessionStartIfNone ()
{
if ( session_status () == PHP_SESSION_NONE ) {
session_start (); //No session stated... so start one
}
}
public function isLoggedIn () : bool
{
$this -> sessionStartIfNone (); //Start session if none already started
if ( isset ( $_SESSION [ 'token' ]) && ! empty ( $_SESSION [ 'token' ])) {
$this -> token = $_SESSION [ 'token' ];
return true ; //Logged in
} else {
return false ;
}
}
public function loginForm ()
{
if ( isset ( $_POST [ 'user' ]) && isset ( $_POST [ 'pass' ])) {
$this -> attemptLogin ( $_POST [ 'user' ], $_POST [ 'pass' ]);
} else {
$this -> pageHead ();
$this -> rowColOpen ( 'row text-center' , 'col-12' );
$this -> tagOpen ( 'div' , 'card' );
$this -> tagOpen ( 'div' , 'card-header' );
$this -> HTMLphrase ( 'h3' , '' , 'My idlers login' );
$this -> tagClose ( 'div' );
$this -> tagOpen ( 'div' , 'card-body' );
$this -> outputString ( '<form method="post">' );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-3' );
$this -> tagClose ( 'div' , 1 );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Username' );
$this -> textInput ( 'user' , '' , 'form-control' , true , 4 , 64 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-3' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-3' );
$this -> tagClose ( 'div' , 1 );
$this -> colOpen ( 'col-12 col-md-6 mm-col' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Password' );
$this -> outputString ( " <input type='password' id='pass' name='pass' class='form-control' min-length='12' max-length='124' required> " );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-3' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row text-center' , 'col-12' );
$this -> submitInput ( 'Login' , 'submitInput' , 'btn btn-main' );
$this -> tagClose ( 'div' , 2 );
$this -> tagClose ( 'form' );
$this -> tagClose ( 'div' , 4 );
$this -> pageFooter ();
}
}
protected function usernameExists ( string $username ) : bool
{
$select = $this -> dbConnect () -> prepare ( " SELECT `user` FROM `auth` WHERE `user` = ? LIMIT 1; " );
$select -> execute ([ $username ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( ! empty ( $row )) { //Row found
$this -> user = $row [ 'user' ];
return true ;
} else { //NO row found
return false ;
}
}
protected function checkPasswordCorrect ( string $password ) : bool
{
$select = $this -> dbConnect () -> prepare ( " SELECT `pass` FROM `auth` WHERE `user` = ? LIMIT 1; " );
$select -> execute ([ $this -> user ]);
$row = $select -> fetch ( PDO :: FETCH_ASSOC );
if ( password_verify ( $password , $row [ 'pass' ])) {
return true ; //Password is correct
} else {
return false ; //Bad password
}
}
protected function doLoginWasSuccess () : bool
{
$update = $this -> dbConnect () -> prepare ( " UPDATE `auth` SET `login_count` = (login_count + 1), `last_login` = NOW() WHERE `user` = ? LIMIT 1; " );
return $update -> execute ([ $this -> user ]);
}
protected function addLoginFailCount () : bool
{
$update = $this -> dbConnect () -> prepare ( " UPDATE `auth` SET login_fails = (login_fails + 1), `last_fail` = NOW() WHERE `user` = ? LIMIT 1; " );
return $update -> execute ([ $this -> user ]);
}
protected function addLoginFailAttempt () : bool
{
$insert = $this -> dbConnect () -> prepare ( 'INSERT IGNORE INTO `login_attempts` (`user`, `ip`) VALUES (?, ?)' );
return $insert -> execute ([ $this -> user , $this -> ip_address ]);
}
protected function setToken ( int $length = 32 )
{
$this -> sessionStartIfNone ();
$_SESSION [ 'token' ] = $this -> genID ( $length ); //Set session as token
$this -> token = $_SESSION [ 'token' ];
$update_token = $this -> dbConnect () -> prepare ( " UPDATE `auth` SET `token` = ? WHERE `user` = ? LIMIT 1; " );
$update_token -> execute ([ $_SESSION [ 'token' ], $this -> user ]);
}
protected function indexRedirect ()
{
header ( " Location: index.php " );
exit ;
}
protected function getRecentFailCount () : int
{
$select = $this -> dbConnect () -> prepare ( " SELECT COUNT(*) as the_count FROM `login_attempts` WHERE `ip` = ? AND `datetime` > (NOW() - INTERVAL 10 MINUTE); " );
$select -> execute ([ $this -> ip_address ]);
return $select -> fetch ()[ 'the_count' ]; //login fails for IP in last 10 minutes
}
protected function hasLockTimePassed () : bool
{
$select = $this -> dbConnect () -> prepare ( " SELECT `datetime` FROM `login_attempts` WHERE `ip` = ? ORDER BY `datetime` DESC LIMIT 1; " );
$select -> execute ([ $this -> ip_address ]);
$locked_until = $select -> fetch ( PDO :: FETCH_ASSOC );
$time = new DateTime ( $locked_until [ 'datetime' ]);
$time -> add ( new DateInterval ( " PT " . self :: IP_LOCK_MINUTES . " M " ));
$locked_until_formatted = $time -> format ( 'Y-m-d H:i:s' );
$now = date ( 'Y-m-d H:i:s' );
if ( $now > $locked_until_formatted ) { //Time has passed
return true ;
} else {
return false ;
}
}
public function attemptLogin ( string $username , string $password )
{
$this -> ip_address = $_SERVER [ 'REMOTE_ADDR' ];
if ( $this -> getRecentFailCount () >= self :: FAIL_ATTEMPTS_ALLOWED ) {
if ( ! $this -> hasLockTimePassed ()) { //IP is currently not allowed to attempt login
$this -> indexRedirect (); //Redirect to index and show login form
} else { //IP has passed lock time
if ( $this -> usernameExists ( $username )) { //Username found
if ( $this -> checkPasswordCorrect ( $password )) { //Password is correct
$this -> doLoginWasSuccess (); //Add login counter and last login datetime
$this -> setToken (); //Set session token
$this -> indexRedirect (); //Redirect to index and show servers
} else { //Password is wrong
$this -> addLoginFailCount ();
$this -> addLoginFailAttempt ();
$this -> indexRedirect (); //Redirect to index and login form
}
} else { //Username not found in DB
$this -> indexRedirect (); //Redirect to index and show login form
}
}
} else { //A clean attempt
echo $this -> getRecentFailCount ();
if ( $this -> usernameExists ( $username )) { //Username found
if ( $this -> checkPasswordCorrect ( $password )) { //Password is correct
$this -> doLoginWasSuccess (); //Add login counter and last login datetime
$this -> setToken (); //Set session token
$this -> indexRedirect (); //Redirect to index and show servers
} else { //Password is wrong
$this -> addLoginFailCount (); //Add 1 onto login fail count
$this -> addLoginFailAttempt (); //ip and datetime into login attempt fail logs
$this -> indexRedirect (); //Redirect to index and show login form
}
} else { //Username not found in DB
$this -> indexRedirect (); //Redirect to index and show login form
}
}
}
protected function deleteAuthFile ()
{
unlink ( 'AUTH.php' );
}
2021-01-20 04:41:37 +01:00
}