2021-01-20 04:41:37 +01:00
< ? php
class elementHelpers
{
//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 " );
}
protected function tableHeader ( array $headers )
{
$this -> tagOpen ( 'div' , 'table-responsive' );
$this -> outputString ( " <table class='table table-striped table-bordered table-sm' id='orderTable'> " );
$this -> tagOpen ( 'thead' );
$this -> tagOpen ( 'tr' );
foreach ( $headers as $th ) {
$this -> outputString ( " <th> $th </th> " );
}
$this -> outputString ( '</tr></thead><tbody>' );
}
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' );
}
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 )
{ //If value type GB/s convert to MB/s
if ( $type == " GB/s " ) {
return $this -> GBpstoMBps ( $value );
} 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 " );
}
}
class idlers extends helperFunctions
{
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 = '' ;
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 ()
{
$this -> navTabs ( array ( 'Services' , 'Add' , 'Order' , 'Info' , 'Search' ), array ( '#services' , '#add_server' , '#order' , '#info' , '#search' ));
$this -> outputString ( '<div id="myTabContent" class="tab-content">' );
$this -> outputString ( '<div class="tab-pane server-cards fade active show" id="services">' );
$this -> serverCards ();
$this -> sharedHostingCards ();
$this -> domainCards ();
$this -> tagClose ( 'div' );
$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 ();
$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">' );
$this -> outputString ( '<div class="modal-dialog" role="document">' );
$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 )
{
$select = $this -> dbConnect () -> prepare ( " SELECT `has_yabs` FROM `servers` WHERE `id` = ? LIMIT 1; " );
$select -> execute ([ $id ]);
$row = $select -> fetch ();
if ( $row [ 'has_yabs' ] == 1 ) {
$select = $this -> dbConnect () -> prepare ( "
SELECT servers . id as server_id , hostname , 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 , tags , virt , has_yabs , 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` ,
loc . name as location , send , send_type , recieve , recieve_type , price , currency , term , as_usd , per_month , next_dd , pr . name as provider
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 ];
$sel_st = $this -> dbConnect () -> prepare ( " SELECT `location`, `send`, `send_type`, `recieve`, `recieve_type` FROM `speed_tests` WHERE `server_id` = ? ORDER BY `datetime` DESC LIMIT 8; " );
$sel_st -> execute ([ $id ]);
$speed_tests = $sel_st -> fetchAll ( PDO :: FETCH_ASSOC );
$final = array_merge ( $speed_tests , $data );
return json_encode ( $final );
} else {
$select = $this -> dbConnect () -> prepare ( "
SELECT servers . id as server_id , hostname , 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 , tags , virt , has_yabs , ns1 , ns2 ,
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 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' );
}
protected function vpsCard ( string $id )
{
$select = $this -> dbConnect () -> prepare ( "
SELECT servers . id , servers . hostname , servers . `cpu` , servers . cpu_freq , servers . ram , servers . ram_type , servers . `disk` ,
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' );
$this -> outputString ( $this -> osIntToIcon ( $data [ 'os' ]));
$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 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 );
}
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">' );
$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="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">' );
$this -> rowColOpen ( 'form-row' , 'col-8' );
$this -> outputString ( '<label for="me_delete">Delete server data</label>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> outputString ( '<label class="switch"><input type="checkbox" name="me_delete" id="me_delete"><span class="slider round"></span></label>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-8' );
$this -> outputString ( '<label for="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="me_non_active" id="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 ( 'me_hostname' , '' , 'form-control' , true );
$this -> tagClose ( 'div' );
$this -> hiddenInput ( 'me_server_id' );
$this -> hiddenInput ( 'action' , 'update' );
$this -> hiddenInput ( 'type' , 'server_modal_edit' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'form-row' , 'col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS1' );
$this -> textInput ( 'me_ns1' , '' , 'form-control' , false );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'NS2' );
$this -> textInput ( 'me_ns2' , '' , 'form-control' , false );
$this -> tagClose ( 'div' , 3 );
$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 ( '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 ( 'me_term' );
$this -> termSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-6' );
$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' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-6' );
$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' );
$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 ( 'Virt' );
2021-01-20 04:41:37 +01:00
$this -> selectElement ( 'me_virt' );
$this -> virtSelectOptions ();
$this -> tagClose ( 'select' );
$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 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$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">' );
$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="me_next_dd" name="me_next_dd">' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'CPU amount' );
$this -> numberInput ( 'me_cpu_amount' , '' , 'form-control' , false , 1 , 48 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Bandwidth' );
$this -> numberInput ( 'me_bandwidth' , '' , 'form-control' , false , 1 , 9999 );
$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' );
$this -> numberInput ( 'me_swap' , '' , '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_swap_type' );
$this -> selectOption ( 'MB' , 'MB' , true );
$this -> selectOption ( 'GB' , 'GB' );
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 3 );
$this -> rowColOpen ( 'form-row' , 'col-12' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Tags' );
$this -> tagsInput ( 'me_tags' , 'form-control' );
$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 );
}
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' );
$this -> outputString ( '<label for="sh_me_delete">Delete server data</label>' );
$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' );
$this -> numberInput ( 'sh_me_bandwidth' , '' , 'form-control' , false , 1 , 99999 );
$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 );
}
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' );
$this -> outputString ( '<label for="d_me_delete">Delete server data</label>' );
$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' );
$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 ( 'd_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="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' );
$this -> numberInput ( 'swap' , '100' , '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 ( '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 );
$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 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'IPv4' );
$this -> textInput ( 'ipv4' , '' , 'form-control' , true , 4 , 124 );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$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 );
$this -> rowColOpen ( 'form-row' , 'col-12 col-md-6' );
$this -> tagOpen ( 'div' , 'input-group' );
$this -> inputPrepend ( 'Virt' );
$this -> selectElement ( 'virt' );
$this -> virtSelectOptions ();
$this -> tagClose ( 'select' );
$this -> tagClose ( 'div' , 2 );
$this -> colOpen ( 'col-12 col-md-6' );
$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' );
$this -> numberInput ( 'bandwidth' , '' , 'form-control' , false , 1 , 99999 , 'any' );
$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 ()
{
$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 )) {
$select = $this -> dbConnect () -> prepare ( " SELECT `id`, `hostname`,`ipv4`, `virt`, p.price, p.currency, p.term FROM `servers` INNER JOIN pricing p on servers.id = p.server_id WHERE `hostname` LIKE ? OR `ipv4` 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 [ '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></p> " );
$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 ]);
return $db -> lastInsertId ();
}
}
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 ]);
return $db -> lastInsertId ();
}
}
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 ;
}
if ( is_null ( $data [ 'ipv6' ]) || empty ( $data [ 'ipv6' ])) {
$ipv6 = '-' ;
} else {
$ipv6 = $data [ 'ipv6' ];
}
( $data [ 'has_yabs' ] == 1 ) ? $has_yabs = true : $has_yabs = false ;
$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' );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'IPv4' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> outputString ( '<code><p class="m-value">' . $data [ 'ipv4' ] . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'IPv6' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> outputString ( '<code><p class="m-value">' . $ipv6 . '</p></code>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'NS1' );
$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' , 'Bandwidth' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'bandwidth' ] . '<span class="data-type">' . $data [ 'bandwidth_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Disk' );
$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' , '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' , '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' , 'OS' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> osIntToString ( $data [ 'os' ]));
$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 ( $data [ 'server_id' ], $data [ 'term' ], $data [ 'next_dd' ]) . '<span class="data-type">days</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'CPU' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Amount' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'cpu' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Frequency' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'cpu_freq' ]);
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-12' );
$this -> outputString ( '<i><p class="m-value">' . $data [ 'cpu_type' ] . '</p></i>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> outputString ( '<p class="m-section-text">Ram</p>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Ram' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'ram' ] . '<span class="data-type">' . $data [ 'ram_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Swap' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-8' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'swap' ] . '<span class="data-type">' . $data [ 'swap_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
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 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'single: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'gb5_single' ]);
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'multi: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'gb5_multi' ]);
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$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' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Disk test' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , '4k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '4k' ] . '<span class="data-type">' . $data [ '4k_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , '64k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '64k' ] . '<span class="data-type">' . $data [ '64k_type' ] . '</span>' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-6' );
$this -> HTMLphrase ( 'p' , 'm-desc' , '512k: ' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ '512k' ] . '<span class="data-type">' . $data [ '512k_type' ] . '</span>' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-6' );
$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 );
$this -> rowColOpen ( 'row m-row' , 'col-12' );
$this -> HTMLphrase ( 'p' , 'm-value' , '' . $data [ 'price' ] . ' <span class="data-type">' . $data [ 'currency' ] . '</span> ' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> paymentTerm ( $data [ 'term' ]));
$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 );
$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-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Dedicated: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'is_dedicated' ]));
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Dedi CPU: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'is_cpu_dedicated' ]));
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Is offer: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'was_special' ]));
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'AES-NI: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'aes_ni' ]));
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'VM-x/AMD-V: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $this -> intToYesNo ( $data [ 'amd_v' ]));
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-4' );
$this -> HTMLphrase ( 'p' , 'm-desc' , 'Virt: ' );
$this -> tagClose ( 'div' );
$this -> colOpen ( 'col-2' );
$this -> HTMLphrase ( 'p' , 'm-value' , $data [ 'virt' ]);
$this -> tagClose ( 'div' , 2 );
if ( $has_yabs ) {
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Network test' );
$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' );
}
}
}
$this -> rowColOpen ( 'row m-section-row' , 'col-12 text-center' );
$this -> HTMLphrase ( 'p' , 'm-section-text' , 'Tags' );
$this -> tagClose ( 'div' , 2 );
$this -> rowColOpen ( 'row m-row' , 'col-12' );
$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' );
$this -> tagClose ( 'div' , 3 );
if ( file_exists ( " yabs/ { $data [ 'server_id' ] } .txt " )) {
$this -> rowColOpen ( 'row' , 'col-12 text-center' );
$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>' );
$this -> tagClose ( 'div' , 2 );
}
}
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' );
$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 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'CPU' , 'Freq' , 'Ram' , 'Swap' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram_mb`, `swap_mb`, `disk_gb` FROM `servers` " ;
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> " );
$this -> outputString ( " <td> { $row [ 'cpu_freq' ] } </td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'swap_mb' ], 0 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 9 , 10 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'Owned since' , 'CPU' , 'Freq' , 'Ram' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram_mb`, `disk_gb`, DATE_FORMAT(`owned_since`, '%D %b %Y') as dt FROM `servers` " ;
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> " );
$this -> outputString ( " <td> { $row [ 'cpu_freq' ] } </td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 11 , 12 , 13 , 14 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'GB5 single' , 'GB5 multi' , 'CPU' , 'Freq' , 'Ram' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram_mb`, `disk_gb`, `gb5_single`, `gb5_multi` FROM `servers` WHERE has_yabs = 1 " ;
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> " );
$this -> outputString ( " <td> { $row [ 'cpu_freq' ] } </td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 15 , 16 , 17 , 18 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'Price' , 'Term' , 'P/M' , 'CPU' , 'Ram' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `ram_mb`, `disk_gb`, `price`, `currency`, `term`, `per_month` FROM `servers` INNER JOIN `pricing`p on servers.id = p.server_id " ;
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> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ))) {
$this -> tableHeader ( array ( 'Hostname' , '4k' , '64k' , '512k' , '1m' , 'CPU' , 'Ram' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `ram_mb`, `disk_gb`, `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 " ;
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> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 27 , 28 , 29 , 30 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'Send' , 'Receive' , 'Location' , 'CPU' , 'Ram' , 'Disk' ));
$base_query = " SELECT servers.id, `hostname`, `cpu`, `ram_mb`, `disk_gb`, `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 " ;
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> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$this -> tagClose ( 'tr' );
}
} elseif ( in_array ( $order_type , array ( 31 , 32 ))) {
$this -> tableHeader ( array ( 'Hostname' , 'Bandwidth' , 'CPU' , 'Freq' , 'Ram' , 'Disk' ));
$base_query = " SELECT `id`, `hostname`, `cpu`, `cpu_freq`, `ram_mb`, `disk_gb`, `bandwidth` FROM `servers` " ;
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> " );
$this -> outputString ( " <td> { $row [ 'bandwidth' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu' ] } </td> " );
$this -> outputString ( " <td> { $row [ 'cpu_freq' ] } </td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'ram_mb' ], 2 ) . " <span class='table-val-type'>MB</span></td> " );
$this -> outputString ( " <td> " . number_format ( $row [ 'disk_gb' ], 0 ) . " <span class='table-val-type'>GB</span></td> " );
$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 ();
$oldest_d_row = $oldest_d -> fetchAll ( PDO :: FETCH_ASSOC )[ 0 ];
$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' );
}
}
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 ;
( empty ( $data [ 'ipv6' ])) ? $ipv6 = null : $ipv6 = $data [ 'ipv6' ];
$location_id = $this -> handleLocation ( $data [ 'location' ]);
$provider_id = $this -> handleProvider ( $data [ 'provider' ]);
$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) VALUES (?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?)' );
$insert -> execute ([ $item_id , $data [ 'hostname' ], $location_id , $provider_id , $data [ 'ipv4' ], $ipv6 , $data [ 'owned_since' ], $data [ 'os' ], $dedi_cpu , $dedi , $offer , $data [ 'bandwidth' ], $data [ 'virt' ], $data [ 'has_yabs' ], $data [ 'ns1' ], $data [ 'ns2' ]]);
$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 ;
( empty ( $data [ 'ipv6' ])) ? $ipv6 = null : $ipv6 = $data [ 'ipv6' ];
( $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' ]);
$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) VALUES (?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' );
$insert -> execute ([ $item_id , $data [ 'hostname' ], $location_id , $provider_id , $data [ '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' ]]);
$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 ;
}
public function insertYabsData ( 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 [ 'yabs' ]);
if ( $save_yabs ) {
$this -> saveYABS ( $this -> data [ 'yabs' ], " { $this -> item_id } .txt " );
}
fclose ( $logfile );
$file = @ fopen ( $file_name , 'r' );
if ( $file ) {
$array = explode ( " \n " , fread ( $file , filesize ( $file_name )));
//echo json_encode($array);
//exit;
}
if ( strpos ( $array [ 0 ], '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #' ) !== false || count ( $array ) < 50 ) {
$version_array = explode ( ' ' , preg_replace ( '!\s+!' , ' ' , $this -> trimRemoveR ( $array [ 2 ])));
$version = $version_array [ 1 ]; //YABs version
$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 ( $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 [ 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 ;
}
$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 ); //
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 ]);
}
}
( $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 ]);
return true ;
} else {
//Not formatted right
return false ;
}
}
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 );
}
$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` = ? 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' ], $this -> item_id ]);
}
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 );
}
$update = $this -> dbConnect () -> prepare ( " UPDATE `domains` SET `domain` = ?,`ns1` = ?,`ns2` = ?,`owned_since` = ? WHERE `id`= ? LIMIT 1; " );
return $update -> execute ([ $data [ 'd_me_hostname' ], $data [ 'd_me_ns1' ], $data [ 'd_me_ns2' ], $data [ 'd_me_owned_since' ], $this -> item_id ]);
}
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 ]);
}
}
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 ]);
}
}