Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/plugins/content/zaya_linkshortener_in_content/ |
| [Home] [System Details] [Kill Me] |
<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.78
@build 19th May, 2022
@created 22nd July, 2020
@package Moojla
@subpackage zaya_linkshortener_in_content.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/***[JCBGUI.class_extends.head.1.$$$$]***/
use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\Plugin\CMSPlugin;
/***[/JCBGUI$$$$]***/
/***[JCBGUI.class_extends.comment.1.$$$$]***/
/**
* Content - Zaya_linkshortener_in_content plugin.
*
* @package Zaya_linkshortener_in_content
* @since 1.1.1
*//***[/JCBGUI$$$$]***/
class PlgContentZaya_linkshortener_in_content extends JPlugin
{
public function browser($user_agent)
{
if (strpos($user_agent, 'Opera') || strpos($user_agent,
'OPR/')) return 'Opera';
elseif (strpos($user_agent, 'Edge')) return
'Edge';
elseif (strpos($user_agent, 'Chrome')) return
'Chrome';
elseif (strpos($user_agent, 'Safari')) return
'Safari';
elseif (strpos($user_agent, 'Firefox')) return
'Firefox';
elseif (strpos($user_agent, 'MSIE') ||
strpos($user_agent, 'Trident/7')) return 'Internet
Explorer';
return false;
}
public function onContentAfterTitle($context, $table, $item)
{
if ($context != 'com_content.article')
return false;
//prevent generete the short link from robots crawl
if (!$this->browser($_SERVER['HTTP_USER_AGENT']))
return false;
$app = JFactory::getApplication();
$view = 'content';
$id = $table->id;
$domain = $this->get_domain();
$source_link= (string)juri::getinstance();
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('id, link')
->from($db->quoteName('#__zaya_content',
'r'))
->where($db->quoteName('r.link_id') .
'=' . $id)
->where($db->quoteName('r.type') .
'=' . $db->quote($view))
->where($db->quoteName('r.domain') .
'=' . $db->quote($domain))
->where($db->quoteName('r.source_link').'='.
$db->quote($source_link));
$db->setQuery($query);
$result = $db->loadObject();
if (0) {
$short_link = $result->link;
} else {
$current_url = $source_link;
$url_encode = urlencode($current_url);
$api_key =
'rrrFjYXyffiavdpwHcpKxdBSbbvetxYf9p3z0hg19wNPjZUI425hp1EM71G2';
$url = 'https://zaya.io/api/v1/links';
$post_fields= "url=".$url_encode;
$header= [
"Content-Type:
application/x-www-form-urlencoded",
"Authorization: Bearer ".$api_key
];
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
$curl_data = json_decode(curl_exec($curl_handle));
curl_close($curl_handle);
$filename = __DIR__ . '/log.txt';
file_put_contents($filename, print_r($curl_data, true) .
"\n", FILE_APPEND);
if ($curl_data->status == 200) {
$short_link = $curl_data->data->short_url;
$query = $db->getQuery(true);
$columns = array('link_id',
'source_link', 'link', 'type',
'domain');
$values = array($id, $db->quote($source_link),
$db->quote($short_link), $db->quote($view), $db->quote($domain));
$query
->insert($db->quoteName('#__zaya_content'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$app = JFactory::getApplication();
$db->execute();
} else {
echo 'response from rizy: ' .
$curl_data->status;
return 0;
}
}
?>
<script>
function copyElementText() {
var ShortLinkButton =
document.querySelector('#short_link_copy');
var text =
document.getElementById('this-a-link').innerText;
var elem = document.createElement("textarea");
document.body.appendChild(elem);
elem.value = text;
elem.select();
document.execCommand("copy");
document.body.removeChild(elem);
ShortLinkButton.classList.add("Copied");
}
</script>
<short_link>
<div>
<span>لینک کوتاه دوره</span>
<div id="short_link_copy"
onclick="copyElementText()">
<button>
<span class="copy_link">کپی
کنید</span>
<span class="copied_link">کپی
شد !</span>
</button>
<div id="this-a-link">
<?php echo $short_link; ?>
<svg version="1.0"
xmlns="http://www.w3.org/2000/svg"
width="20px" height="20px"
viewBox="0 0 64.000000 64.000000"
preserveAspectRatio="xMidYMid
meet">
<metadata>
Created by potrace 1.10, written by Peter
Selinger 2001-2011
</metadata>
<g
transform="translate(0.000000,64.000000)
scale(0.100000,-0.100000)"
fill="#a5afbb"
stroke="none">
<path d="M409 567 c-32 -18 -98 -87
-99 -104 0 -24 23 -13 71 32 57 53 96 59
134 20 46 -45 36 -78 -53 -167 -84 -84 -113
-95 -160 -62 -24 16 -42 12 -42
-11 0 -33 103 -59 140 -35 42 26 170 165 175
191 21 96 -83 181 -166 136z"/>
<path d="M240 400 c-42 -26 -170
-165 -175 -191 -10 -43 2 -83 33 -111 59 -56
119 -49 186 20 77 79 55 102 -25 27 -57 -53
-96 -59 -134 -20 -46 45 -36 78
53 167 84 84 113 95 160 62 24 -16 42 -12 42
11 0 33 -103 59 -140 35z"/>
</g>
</svg>
</div>
<!-- <span
class="before-copy">کپی کنید</span>
<span class="lms-copied">کپی
شد</span> -->
</div>
</div>
</short_link>
<script>
var removeClassShortLink =
document.querySelector('#short_link_copy');
removeClassShortLink.addEventListener('mouseleave',
remove_class)
function remove_class() {
// alert('mahdi');
removeClassShortLink.classList.remove("Copied");
}
</script>
<style>
#this-a-link {
display: inline-block;
}
#short_link_copy {
background: white;
border: 1px solid #e6e6e6;
padding: 3px 3px 3px 8px;
text-align: left;
display: flex;
justify-content: space-between;
align-items: center;
border-radius: 5px;
margin: 10px 0;
box-shadow: 2px 0px 5px #e5e5e5;
color: #a5afbb;
font-weight: 100;
font-size: 0.9rem;
}
.before-copy {
position: absolute;
top: 0;
right: 0;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
opacity: 0;
transition: 0.6s;
color: white;
border-radius: 50px;
}
.lms-copied {
position: absolute;
top: 0;
right: 0;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
opacity: 0;
transition: 0.6s;
z-index: -1;
color: white;
border-radius: 50px;
}
#short_link_copy button {
border: unset;
border-radius: 5px;
padding: 8px 20px;
color: white;
font-size: 0.8rem;
background: #4d90fd;
position: relative;
overflow: hidden;
transition:0.3s;
opacity: 0.8;
}
#short_link_copy button:hover{
opacity: 1;
}
span.copied_link {
position: absolute;
left: 50%;
transform: translateX(-50%);
top: -30px;
transition: 0.2s;
}
span.copy_link {
position: relative;
top: 0;
transition: 0.2s;
}
div#short_link_copy.Copied button {
background:#27c452;
}
div#short_link_copy.Copied .copy_link {
top: 30px;
}
div#short_link_copy.Copied .copied_link{
top: 8px;
}
#short_link_copy::selection {
color: red;
background: yellow;
}
</style>
<?php
}
public function get_domain()
{
$domain = juri::root();
$domain =
preg_replace('/http:\/\/|https:\/\/|http:\/\/www\.|https:\/\/www\.|www\.|\//',
'', $domain);
return $domain;
}
}