SOP.wtf/index.php

149 lines
16 KiB
PHP

<?php include 'frontend/header.php'; ?>
<body>
<?php
// Start YOURLS engine
require_once( dirname(__FILE__).'/includes/load-yourls.php' );
// URL of the public interface
$page = YOURLS_SITE . '/index.php' ;
// Make variables visible to function & UI
$shorturl = $message = $title = $status = '';
// Part to be executed if FORM has been submitted
if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ) {
if (enableRecaptcha) {
// Use reCAPTCHA
$token = $_POST['token'];
$action = $_POST['action'];
// call curl to POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('secret' => recaptchaV3SecretKey, 'response' => $token)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$arrResponse = json_decode($response, true);
// verify the response
if($arrResponse["success"] == '1' && $arrResponse["action"] == $action && $arrResponse["score"] >= 0.5) {
// reCAPTCHA succeeded
shorten();
} else {
// reCAPTCHA failed
$message = "reCAPTCHA failed";
}
} else {
// Don't use reCAPTCHA
shorten();
}
}
function shorten() {
// Get parameters -- they will all be sanitized in yourls_add_new_link()
$url = $_REQUEST['url'];
$keyword = isset( $_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : '' ;
$title = isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '' ;
$text = isset( $_REQUEST['text'] ) ? $_REQUEST['text'] : '' ;
// Create short URL, receive array $return with various information
$return = yourls_add_new_link( $url, $keyword, $title );
// Make visible to UI
global $shorturl, $message, $status, $title;
$shorturl = isset( $return['shorturl'] ) ? $return['shorturl'] : '';
$message = isset( $return['message'] ) ? $return['message'] : '';
$title = isset( $return['title'] ) ? $return['title'] : '';
$status = isset( $return['status'] ) ? $return['status'] : '';
// Stop here if bookmarklet with a JSON callback function ("instant" bookmarklets)
if( isset( $_GET['jsonp'] ) && $_GET['jsonp'] == 'yourls' ) {
$short = $return['shorturl'] ? $return['shorturl'] : '';
$message = "Short URL (Ctrl+C to copy)";
header('Content-type: application/json');
echo yourls_apply_filter( 'bookmarklet_jsonp', "yourls_callback({'short_url':'$short','message':'$message'});" );
die();
}
}
?>
<div class="container-fluid h-100">
<div class="row justify-content-center align-items-center h-100">
<div class="col-12 col-lg-10 col-xl-8 col-xxl-5 mt-5">
<div class="card border-0 mt-5">
<?php if( isset($status) && $status == 'success' ): ?>
<?php $url = preg_replace("(^https?://)", "", $shorturl ); ?>
<div class="close-container text-end mt-3 me-3">
<button type="button" class="btn-close" id="close-shortened-screen" aria-label="Close"></button>
</div>
<div class="card-body px-5 pb-5">
<h2 class="text-uppercase text-center">Your shortened link</h2>
<div class="row justify-content-center">
<div class="col-10">
<div class="input-group input-group-block mt-4 mb-3">
<input type="text" class="form-control text-uppercase" value="<?php echo $shorturl; ?>" required>
<button class="btn btn-primary text-uppercase py-2 px-5 mt-2 mt-md-0" type="submit" id="copy-button" data-shorturl="<?php echo $shorturl; ?>">Copy</button>
</div>
<span class="info">QR Code &amp; See Link Preview <a href="<?php echo $shorturl; ?>~"><?php echo $url; ?>~</a></span>
</div>
</div>
</div>
<?php else: ?>
<div class="text-center">
</div>
<div class="card-body px-md-5">
<img class="center" src="data:image/svg+xml;base64,PHN2ZyBkYXRhLXYtNDIzYmY5YWU9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDE2IDkwIiBjbGFzcz0iaWNvbkxlZnQiPjwhLS0tLT48IS0tLS0+PCEtLS0tPjxnIGRhdGEtdi00MjNiZjlhZT0iIiBpZD0iYmE2MWJhOTctYjc5NS00N2RmLWEwMTUtM2NhNDU3ODE5ZTEyIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJtYXRyaXgoNC42MzMyMDQ3MDE0NDUwNzEsMCwwLDQuNjMzMjA0NzAxNDQ1MDcxLDE0NC40OTE4NzA2NTkyNDgxNSwtMS44NjQ4NjcyNjgyMzI2MjkzKSI+PHBhdGggZD0iTTQuMjQgMTMuOTJMNC4yNCAxMy45Mkw0LjI0IDEzLjkyUTMuNTMgMTMuOTIgMi44NSAxMy41N0wyLjg1IDEzLjU3TDIuODUgMTMuNTdRMi4xNyAxMy4yMyAxLjY5IDEyLjY3TDEuNjkgMTIuNjdMMi4zOCAxMi4wN0wyLjM4IDEyLjA3UTMuMjMgMTMuMDUgNC4zMyAxMy4wNUw0LjMzIDEzLjA1TDQuMzMgMTMuMDVRNC45NyAxMy4wNSA1LjM5IDEyLjc4TDUuMzkgMTIuNzhMNS4zOSAxMi43OFE1LjgxIDEyLjUwIDUuODEgMTIuMDFMNS44MSAxMi4wMUw1LjgxIDEyLjAxUTUuODEgMTEuNzAgNS42NiAxMS40Nkw1LjY2IDExLjQ2TDUuNjYgMTEuNDZRNS41MiAxMS4yMSA1LjIwIDExLjAxTDUuMjAgMTEuMDFMNS4yMCAxMS4wMVE0Ljg5IDEwLjgxIDQuNjQgMTAuNzBMNC42NCAxMC43MEw0LjY0IDEwLjcwUTQuNDAgMTAuNTggMy45NSAxMC40MkwzLjk1IDEwLjQyTDMuOTUgMTAuNDJRMy40MiAxMC4yMSAzLjA5IDEwLjA0TDMuMDkgMTAuMDRMMy4wOSAxMC4wNFEyLjc2IDkuODcgMi40MSA5LjYyTDIuNDEgOS42MkwyLjQxIDkuNjJRMi4wNiA5LjM3IDEuODkgOS4wMkwxLjg5IDkuMDJMMS44OSA5LjAyUTEuNzIgOC42OCAxLjcyIDguMjVMMS43MiA4LjI1TDEuNzIgOC4yNVExLjcyIDcuNDMgMi4zOSA2LjkzTDIuMzkgNi45M0wyLjM5IDYuOTNRMy4wNyA2LjQzIDQuMTIgNi40M0w0LjEyIDYuNDNMNC4xMiA2LjQzUTUuNTkgNi40MyA2LjUyIDcuNTJMNi41MiA3LjUyTDUuODggOC4wNkw1Ljg4IDguMDZRNS4wOCA3LjI5IDQuMDkgNy4yOUw0LjA5IDcuMjlMNC4wOSA3LjI5UTMuNDMgNy4yOSAzLjA0IDcuNTVMMy4wNCA3LjU1TDMuMDQgNy41NVEyLjY1IDcuODAgMi42NSA4LjIzTDIuNjUgOC4yM0wyLjY1IDguMjNRMi42NSA4LjQ0IDIuNzUgOC42MkwyLjc1IDguNjJMMi43NSA4LjYyUTIuODYgOC44MSAyLjk4IDguOTNMMi45OCA4LjkzTDIuOTggOC45M1EzLjExIDkuMDQgMy4zOSA5LjE5TDMuMzkgOS4xOUwzLjM5IDkuMTlRMy42NyA5LjM0IDMuODQgOS40MEwzLjg0IDkuNDBMMy44NCA5LjQwUTQuMDAgOS40NiA0LjM3IDkuNjBMNC4zNyA5LjYwTDQuMzcgOS42MFE0LjkzIDkuODEgNS4yMyA5Ljk2TDUuMjMgOS45Nkw1LjIzIDkuOTZRNS41MyAxMC4xMSA1Ljk0IDEwLjM5TDUuOTQgMTAuMzlMNS45NCAxMC4zOVE2LjM2IDEwLjY3IDYuNTQgMTEuMDVMNi41NCAxMS4wNUw2LjU0IDExLjA1UTYuNzMgMTEuNDQgNi43MyAxMS45Nkw2LjczIDExLjk2TDYuNzMgMTEuOTZRNi43MyAxMi44NSA2LjA2IDEzLjM4TDYuMDYgMTMuMzhMNi4wNiAxMy4zOFE1LjM5IDEzLjkyIDQuMjQgMTMuOTJaTTE1LjM0IDEyLjkyTDE1LjM0IDEyLjkyTDE1LjM0IDEyLjkyUTE0LjQzIDEzLjkyIDEyLjk0IDEzLjkyTDEyLjk0IDEzLjkyTDEyLjk0IDEzLjkyUTExLjQ0IDEzLjkyIDEwLjU0IDEyLjkzTDEwLjU0IDEyLjkzTDEwLjU0IDEyLjkzUTkuNjMgMTEuOTQgOS42MyAxMC4xOEw5LjYzIDEwLjE4TDkuNjMgMTAuMThROS42MyA4LjQzIDEwLjU0IDcuNDNMMTAuNTQgNy40M0wxMC41NCA3LjQzUTExLjQ0IDYuNDMgMTIuOTQgNi40M0wxMi45NCA2LjQzTDEyLjk0IDYuNDNRMTQuNDMgNi40MyAxNS4zNCA3LjQxTDE1LjM0IDcuNDFMMTUuMzQgNy40MVExNi4yNCA4LjQwIDE2LjI0IDEwLjE2TDE2LjI0IDEwLjE2TDE2LjI0IDEwLjE2UTE2LjI0IDExLjkxIDE1LjM0IDEyLjkyWk0xMi45NCAxMy4wM0wxMi45NCAxMy4wM0wxMi45NCAxMy4wM1ExNC4wMSAxMy4wMyAxNC42MiAxMi4yN0wxNC42MiAxMi4yN0wxNC42MiAxMi4yN1ExNS4yMiAxMS41MSAxNS4yMiAxMC4xNkwxNS4yMiAxMC4xNkwxNS4yMiAxMC4xNlExNS4yMiA4LjgxIDE0LjYzIDguMDZMMTQuNjMgOC4wNkwxNC42MyA4LjA2UTE0LjA0IDcuMzEgMTIuOTQgNy4zMUwxMi45NCA3LjMxTDEyLjk0IDcuMzFRMTEuODIgNy4zMSAxMS4yNCA4LjA0TDExLjI0IDguMDRMMTEuMjQgOC4wNFExMC42NSA4Ljc4IDEwLjY1IDEwLjE4TDEwLjY1IDEwLjE4TDEwLjY1IDEwLjE4UTEwLjY1IDExLjU0IDExLjI0IDEyLjI5TDExLjI0IDEyLjI5TDExLjI0IDEyLjI5UTExLjgzIDEzLjAzIDEyLjk0IDEzLjAzWk0xOS43NyAxNi4xMEwxOC43OSAxNi41OUwxOC43OSA2LjU5TDE5Ljc3IDYuNTlMMTkuNzcgNy4yNEwxOS43NyA3LjI0UTIwLjE5IDYuODUgMjAuNjQgNi42NEwyMC42NCA2LjY0TDIwLjY0IDYuNjRRMjEuMDggNi40MyAyMS43NyA2LjQzTDIxLjc3IDYuNDNMMjEuNzcgNi40M1EyMy4yMSA2LjQzIDI0LjA1IDcuNDRMMjQuMDUgNy40NEwyNC4wNSA3LjQ0UTI0Ljg4IDguNDYgMjQuODggMTAuMTZMMjQuODggMTAuMTZMMjQuODggMTAuMTZRMjQuODggMTEuOTMgMjQuMDMgMTIuOTJMMjQuMDMgMTIuOTJMMjQuMDMgMTIuOTJRMjMuMTggMTMuOTIgMjEuODMgMTMuOTJMMjEuODMgMTMuOTJMMjEuODMgMTMuOTJRMjAuNTQgMTMuOTIgMTkuNzcgMTMuMDJMMTkuNzcgMTMuMDJMMTkuNzcgMTYuMTBaTTIxLjcxIDEzLjAzTDIxLjcxIDEzLjAzTDIxLjcxIDEzLjAzUTIyLjc0IDEzLjAzIDIzLjMwIDEyLjI5TDIzLjMwIDEyLjI5TDIzLjMwIDEyLjI5UTIzLjg2IDExLjU1IDIzLjg2IDEwLjE2TDIzLjg2IDEwLjE2TDIzLjg2IDEwLjE2UTIzLjg2IDguODUgMjMuMjggOC4wOEwyMy4yOCA4LjA4TDIzLjI4IDguMDhRMjIuNjkgNy4zMSAyMS42NiA3LjMxTDIxLjY2IDcuMzFMMjEuNjYgNy4zMVEyMC4zOCA3LjMxIDE5Ljc3IDguNDFMMTkuNzcgOC40MUwxOS43NyAxMS45M0wxOS43NyAxMS45M1EyMC42MiAxMy4wMyAyMS43MSAxMy4wM1pNMzAuODEgMTMuNjhMMzAuODEgMTMuNjhMMzAuODEgMTMuNjhRMzAuNTUgMTMuOTQgMzAuMTggMTMuOTRMMzAuMTggMTMuOTRMMzAuMTggMTMuOTRRMjkuODIgMTMuOTQgMjkuNTYgMTMuNjhMMjkuNTYgMTMuNjhMMjkuNTYgMTMuNjhRMjkuMzAgMTMuNDEgMjkuMzAgMTMuMDZMMjkuMzAgMTMuMDZMMjkuMzAgMTMuMDZRMjkuMzAgMTIuNzEgMjkuNTYgMTIuNDVMMjkuNTYgMTIuNDVMMjkuNTYgMTIuNDVRMjkuODIgMTIuMTggMzAuMTggMTIuMThMMzAuMTggMTIuMThMMzAuMTggMTIuMThRMzAuNTUgMTIuMTggMzAuODEgMTIuNDVMMzAuODEgMTIuNDVMMzAuODEgMTIuNDVRMzEuMDcgMTIuNzEgMzEuMDcgMTMuMDZMMzEuMDcgMTMuMDZMMzEuMDcgMTMuMDZRMzEuMDcgMTMuNDEgMzAuODEgMTMuNjhaTTM3LjYwIDEzLjc1TDM2LjY4IDEzLjc1TDM0LjkyIDYuNTlMMzUuOTIgNi41OUwzNy4wOSAxMS43MkwzNy4wOSAxMS43MlEzNy4xNiAxMi4xMSAzNy4xOCAxMi4yNUwzNy4xOCAxMi4yNUwzNy4xOCAxMi4yNVEzNy4yMCAxMi4xOSAzNy4yMyAxMS45OUwzNy4yMyAxMS45OUwzNy4yMyAxMS45OVEzNy4yNyAxMS43OSAzNy4zMCAxMS42OEwzNy4zMCAxMS42OEwzOC40MCA2LjU5TDM5LjIxIDYuNTlMNDAuMzMgMTEuNjlMNDAuMzMgMTEuNjlRNDAuMzYgMTEuODIgNDAuNDYgMTIuMzJMNDAuNDYgMTIuMzJMNDAuNDYgMTIuMzJRNDAuNDkgMTIuMDcgNDAuNTcgMTEuNjlMNDAuNTcgMTEuNjlMNDEuNjkgNi41OUw0Mi43MCA2LjU5TDQwLjk0IDEzLjc1TDQwLjAzIDEzLjc1TDM4LjkyIDguODhMMzguOTIgOC44OFEzOC44NiA4LjY4IDM4Ljc5IDguMjVMMzguNzkgOC4yNUwzOC43OSA4LjI1UTM4LjcyIDguNzEgMzguNjggOC44NUwzOC42OCA4Ljg1TDM3LjYwIDEzLjc1Wk00OC4wOCAxMy45Mkw0OC4wOCAxMy45Mkw0OC4wOCAxMy45MlE0Ni4zOCAxMy45MiA0Ni4zOCAxMi4yMUw0Ni4zOCAxMi4yMUw0Ni4zOCA3LjQ4TDQ0LjY5IDcuNDhMNDQuNjkgNi41OUw0Ni4zOCA2LjU5TDQ2LjM4IDQuMTNMNDcuMzYgMy42NEw0Ny4zNiA2LjU5TDQ5Ljc2IDYuNTlMNDkuNzYgNy40OEw0Ny4zNiA3LjQ4TDQ3LjM2IDExLjc5TDQ3LjM2IDExLjc5UTQ3LjM2IDEyLjM5IDQ3LjU3IDEyLjY5TDQ3LjU3IDEyLjY5TDQ3LjU3IDEyLjY5UTQ3Ljc3IDEyLjk5IDQ4LjQxIDEyLjk5TDQ4LjQxIDEyLjk5TDQ4LjQxIDEyLjk5UTQ5LjE1IDEyLjk5IDQ5Ljc3IDEyLjU3TDQ5Ljc3IDEyLjU3TDQ5LjY2IDEzLjU5TDQ5LjY2IDEzLjU5UTQ5LjA2IDEzLjkyIDQ4LjA4IDEzLjkyWk01Ny4xOCA0LjY5TDU3LjE4IDQuNjlMNTcuMTggNC42OVE1Ni44MSA0LjY5IDU2LjYwIDQuNzZMNTYuNjAgNC43Nkw1Ni42MCA0Ljc2UTU2LjM4IDQuODMgNTYuMjkgNC45OUw1Ni4yOSA0Ljk5TDU2LjI5IDQuOTlRNTYuMjAgNS4xNSA1Ni4xOCA1LjI5TDU2LjE4IDUuMjlMNTYuMTggNS4yOVE1Ni4xNSA1LjQyIDU2LjE1IDUuNjdMNTYuMTUgNS42N0w1Ni4xNSA2LjU5TDU4LjA2IDYuNTlMNTguMDYgNy40OEw1Ni4xNSA3LjQ4TDU2LjE1IDEyLjg3TDU4LjA2IDEyLjg3TDU4LjA2IDEzLjc1TDUzLjY5IDEzLjc1TDUzLjY5IDEyLjg3TDU1LjE3IDEyLjg3TDU1LjE3IDcuNDhMNTMuNjkgNy40OEw1My42OSA2LjU5TDU1LjE3IDYuNTlMNTUuMTcgNS41Mkw1NS4xNyA1LjUyUTU1LjE3IDQuNTkgNTUuNzAgNC4xOUw1NS43MCA0LjE5TDU1LjcwIDQuMTlRNTYuMjIgMy43OCA1Ny4wOCAzLjc4TDU3LjA4IDMuNzhMNTcuMDggMy43OFE1Ny44MiAzLjc4IDU4LjU4IDQuMTJMNTguNTggNC4xMkw1OC41OCA1LjAwTDU4LjU4IDUuMDBRNTcuOTMgNC42OSA1Ny4xOCA0LjY5WiI+PC9wYXRoPjwvZz48IS0tLS0+PGcgZGF0YS12LTQyM2JmOWFlPSIiIGlkPSJkMzc2MjQ4OC03YzNjLTRmNmYtOTllZi0zZDU4NWI2MDlmMDYiIHRyYW5zZm9ybT0ibWF0cml4KDEuNDcwMjI3NzkwMDM4MTc4OCwwLDAsMS40NzAyMjc3OTAwMzgxNzg4LC02LjUxMjEyOTgyMDQ2Nzc2MywtMjguMTE4NjU2NTAwODA4NDI3KSIgc3Ryb2tlPSJub25lIiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTc2LjMxIDM1LjM4OUg0Ny40NWMtOS4yMDIgMC0xNi44NTMgNi42OTItMTguMzkgMTUuNDZoMTAuNjUzYzEuMjY3LTMuMDI1IDQuMjU3LTUuMTU2IDcuNzM3LTUuMTU2aDI4Ljg2YzQuNjI1IDAgOC4zODkgMy43NiA4LjM4OSA4LjM4NXY3LjgzOGMwIDQuNjI1LTMuNzY0IDguMzg3LTguMzg5IDguMzg3SDQ3LjQ1Yy0uMDYyIDAtLjEyLS4wMTctLjE4Mi0uMDE4SDMwLjc2NGMzLjA3NyA2LjExMSA5LjM5MiAxMC4zMjIgMTYuNjg3IDEwLjMyMmgyOC44NmMxMC4zMDYgMCAxOC42OS04LjM4NSAxOC42OS0xOC42OTF2LTcuODM4Qzk1IDQzLjc3NCA4Ni42MTYgMzUuMzg5IDc2LjMxIDM1LjM4OXoiPjwvcGF0aD48cGF0aCBkPSJNMjkuNTI3IDY0LjYxMWwuMDAxLjAwNEg0MC45N2wtLjAwNC0uMDA0SDUyLjU1YzkuMjM0IDAgMTYuOTA0LTYuNzM5IDE4LjQwNC0xNS41NTNINjAuMzE1Yy0xLjI0NiAzLjA3Mi00LjI1MiA1LjI0OS03Ljc2NiA1LjI0OWgtOS41Mzh2LjAwNGgtMTkuMTh2LS4wMDRoLS4xNDFhOC4zMDQgOC4zMDQgMCAwIDEtMS45MTctLjI0MmMtMy43LS44NzItNi40NzEtNC4xODMtNi40NzEtOC4xNDZ2LTcuODM4YzAtNC42MjUgMy43NjQtOC4zODUgOC4zODktOC4zODVoMjguODZjLjA1OSAwIC4xMTQuMDE2LjE3My4wMTdoMTYuNTE0Yy0zLjA3Ny02LjExLTkuMzkyLTEwLjMyMS0xNi42ODctMTAuMzIxSDIzLjY5QzEzLjM4NCAxOS4zOTQgNSAyNy43NzkgNSAzOC4wODJ2Ny44MzhjMCA5Ljc3OCA3LjU1IDE3LjgxMiAxNy4xMjQgMTguNjEyLjUxOC4wNDMgMS4wMzcuMDc5IDEuNTY2LjA3OWg1LjgzN3oiPjwvcGF0aD48L2c+PCEtLS0tPjwvc3ZnPg==" alt="sop.WTF Wordmark" width="250px">
<?php if ( isset( $_REQUEST['url'] ) && $_REQUEST['url'] != 'http://' ): ?>
<?php if (strpos($message,'added') === false): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<span>Oh no, <?php echo $message; ?>!</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<?php endif; ?>
<form id="shortenlink" method="post" action="">
<div class="input-group input-group-block mt-4 mb-3">
<input type="url" name="url" id="url" class="form-control text-uppercase" placeholder="PASTE URL, SHORTEN &amp; SHARE" aria-label="PASTE URL, SHORTEN &amp; SHARE" aria-describedby="shorten-button" required>
<input class="btn btn-primary text-uppercase py-2 px-4 mt-2 mt-md-0" type="submit" id="shorten-button" value="Shorten" />
</div>
<?php if (enableCustomURL): ?>
<a class="btn btn-sm btn-white text-white-50 text-uppercase" data-bs-toggle="collapse" href="#customise-link" role="button" aria-expanded="false" aria-controls="customise-link">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZmZmIj48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiLz48L3N2Zz4=" alt="Options"> Customise Link
</a>
<div class="collapse" id="customise-link">
<div class="mt-2 card card-body">
<div class="d-flex align-items-center">
<span class="me-2"><?php echo preg_replace("(^https?://)", "", YOURLS_SITE ); ?>/</span>
<input type="text" name="keyword" class="form-control form-control-sm text-uppercase" placeholder="CUSTOM URL" aria-label="CUSTOM URL">
</div>
</div>
</div>
<?php endif; ?>
</form>
</div>
<?php endif; ?>
</div>
<div class="d-flex flex-column flex-md-row align-items-center my-3">
<span class="text-white fw-light"><i class="fa fa-cc-cc" aria-hidden="true"></i><?php echo date("Y"); ?> <?php echo shortTitle ?></span>
<div class="ms-3">
<?php foreach ($footerLinks as $key => $val): ?>
<a class="bold-link me-3 text-white text-decoration-none" href="<?php echo $val ?>"><span><?php echo $key ?></span></a>
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
<?php include 'frontend/footer.php'; ?>
</body>
</html>