| Current Path : /var/www/plugins/content/social2s/fields/ |
| Current File : /var/www/plugins/content/social2s/fields/jtotallicensecheck.php |
<?php
/**
* @Copyright
* @package Field - license check
* @author anton {@link http://www.dibuxo.com}
* @version Joomla! 3 - 4.0.124
* @date Created on 09-02-2019
* @link Project Site {@link http://jtotal.org}
*
* @license GNU/GPL
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
use Joomla\CMS\Factory;
use Joomla\CMS\Form\FormField;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
defined('JPATH_PLATFORM') or die;
class JFormFieldJtotalLicenseCheck extends FormField
{
protected $type = 'jtotallicensecheck';
public $tiempo = '';
public $error = array();
protected function getLabel(){
$mode = $this->element['mode'];
if($mode == 'dashboard'){
return "<strong>License</strong>";
}
//return "<strong>License</strong>";
}
protected function getInput()
{
$session = Factory::getSession();
$field_set = $this->form->getFieldset();
$params = $this->form->getValue('params');
$license_email = $field_set['jform_params_jtotal_email']->value;
$license_key = $field_set['jform_params_jtotal_key']->value;
//s2s v3 to v4
$s2sv3_email = $field_set['jform_params_s2s_license_email']->value;
if($license_email == ''){
if($s2sv3_email != ''){
$license_email = $s2sv3_email;
$license_key = 'SOCIAL2SV3';
}
}
$valida_sesion = $session->get('jtotallicensecheck');
$this->tiempo = '';
$field_value = '';
/*******test********/
//$session->set('JTlicensecheck',0);
/*******test********/
$valida = $this->_checkLicense($license_email, $license_key);
if($valida){
/*PRO*/
$field_value .= $this->pro();
}else{
/*LITE*/
$field_value .= $this->lite();
}
//$field_set = $this->form->getFieldset();
$field_value .= "";
if(count($this->error)>=1){
//process error
$field_value .= '<div class="alert alert-danger">';
foreach ($this->error as $key => $value) {
echo '<br>';
$field_value .= '<i class="fa fa-exclamation-circle"></i> '.$value;
}
$field_value .= '</div>';
}
$mode = $this->element['mode'];
if($mode == 'dashboard'){
if(!$session->get('JTlicensecheck')){
$session->set('JTlicensecheck',0);
}
if($session->get('JTlicensecheck')==1){
return '<h6 class="text-success"><i class="fas fa-unlock"></i> '.Text::_('JTOTAL_LICENSE_OK_ENJOY').'</h6>';
}else{
$lite_dashboard = '<h6 class="text-warning"><i class="fas fa-lock"></i> ';
$lite_dashboard .= 'Social2s '.Text::_('JTOTAL_LICENSE_LITE_H1');
$lite_dashboard .= '</h6>';
return $lite_dashboard;
}
}
return $field_value;
}
private function _checkLicense($email, $key){
$params = $this->form->getValue('params');
$session = Factory::getSession();
if(!$session->get('JTkeycheck')){
$session->set('JTkeycheck',$key);
}
if(!$session->get('JTemailcheck')){
$session->set('JTemailcheck',$email);
}
if(!$session->get('JTlicensecheck')){
$session->set('JTlicensecheck',0);
}
$valida = false;
//CHECK EMPTY EMAIL AND JKEY
if($email=='' || $key==''){
$session->set('JTlicensecheck', 0);
//$session->set('JTkeycheck',$key);
$valida = false;
}else{
$key_session = $session->get('JTkeycheck');
$email_session = $session->get('JTemailcheck');
$license_check = $session->get('JTlicensecheck');
if($key_session == $key && $email_session ==$email){
if($license_check == 1){
//EVERYTHINK IS OK...
return true;
}
}
//KEY != SESSION
if($key_session != $key || $email_session !=$email){
$session->set('JTlicensecheck', 0);
//$session->set('JTkeycheck',$key);
if($this->_checkHome($email, $key)===true){
$session->set('JTlicensecheck', 1);
$key_session = $session->set('JTkeycheck',$key);
$email_session = $session->set('JTemailcheck',$email);
//$jt_tiempo = $session->set('JTtimeleft',$this->tiempo);
$valida = true;
}else{
$session->set('JTlicensecheck', 0);
$valida = false;
}
}else{
//var_dump('</br>key_session == key ');
if($session->get('JTlicensecheck') == 1){
//var_dump('</br>JTlicensecheck == 1 ');
$valida = true;
}else{
//var_dump('</br>JTlicensecheck == 0 ');
if($this->_checkHome($email, $key)===true){
$session->set('JTlicensecheck', 1);
$key_session = $session->set('JTkeycheck',$key);
$email_session = $session->set('JTemailcheck',$email);
//$jt_tiempo = $session->set('JTtimeleft',$this->tiempo);
$valida = true;
}else{
$valida = false;
}
}
}
}
return $valida;
}
private function _checkHome($email, $key){
//TEST
//$url_check = 'http://localhost/online/users_jtotal/index.php?option=com_jtcontrol&tmpl=component&view=jtcheck&email='.$email.'&key='.$key.'&product=1';
//REAL
$url_check = 'https://users.jtotal.org/index.php?option=com_jtcontrol&tmpl=component&view=jtcheck&email='.$email.'&key='.$key.'&product=1';
$session = Factory::getSession();
//CURL
//var_dump(function_exists('curl_init'));
if(function_exists('curl_init')){
$session->set('jtlicense_validation:', 'CURL');
$checkHomeCurl = $this->_checkHomeCurl($url_check);
return $checkHomeCurl;
}else{
//CURL_FALLBACK
$session->set('jtlicense_validation:', 'fsockopen');
return $this->_checkHomeCurl_fallback($url_check);
}
}
public function _checkHomeCurl($url_check){
$curl_response = curl_init($url_check);
curl_setopt($curl_response, CURLOPT_HEADER, 0);
curl_setopt($curl_response, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_response, CURLOPT_NOSIGNAL, 1);
curl_setopt($curl_response, CURLOPT_CONNECTTIMEOUT, 5);
$response = curl_exec($curl_response);
$session = Factory::getSession();
//echo "</br>la respuesta es:".$response;
//
$response = json_decode($response);
//response == success
if(isset($response->success)){
if($response->data == "OK"){
$session->set('jtotallicensecheck', 1);
$this->tiempo = $response->message->tiempo;
$this->error[] = 'Data OK';
return true;
}else{
$session->set('jtotallicensecheck', 0);
$this->error[] = 'Data error';
return false;
}
}else{
$this->error[] = 'Error receiving data';
return false;
}
}
private function _checkHomeCurl_fallback($url){
$session = Factory::getSession();
$response = $this->rest_helper($url);
$response = json_decode($response);
//response == success
if(isset($response->success)){
if($response->data == "OK"){
$session->set('jtotallicensecheck', 1);
$this->tiempo = $response->message->tiempo;
return true;
}else{
$session->set('jtotallicensecheck', 0);
return false;
}
}else{
$this->error[] = 'Error receiving data';
return false;
}
}
function rest_helper($url, $params = null, $verb = 'GET', $format = 'html')
{
$cparams = array(
'http' => array(
'method' => $verb,
'ignore_errors' => true
)
);
if ($params !== null) {
$params = http_build_query($params);
if ($verb == 'POST') {
$cparams['http']['content'] = $params;
} else {
$url .= '?' . $params;
}
}
$context = stream_context_create($cparams);
$fp = fopen($url, 'rb', false, $context);
if (!$fp) {
$res = false;
} else {
$res = stream_get_contents($fp);
}
if ($res === false) {
throw new Exception("$verb $url failed: $php_errormsg");
}
switch ($format) {
case 'json':
$r = json_decode($res);
if ($r === null) {
throw new Exception("failed to decode $res as json");
}
return $r;
case 'html':
$r = $res;
if ($r === null) {
throw new Exception("failed to decode $res as json");
}
return $r;
case 'xml':
$r = simplexml_load_string($res);
if ($r === null) {
throw new Exception("failed to decode $res as xml");
}
return $r;
}
return $res;
}
private function lite(){
$module_id = $this->form->getValue('id');
$params = $this->form->getValue('params');
//v4
$params->s2s_text_to_share = '0';
$params->og_multi_img = '0';
$params->og_add_dom_img = '0';
$params->og_skip_intro_img = '0';
//v3
$params->social2s_base = '0';
$params->s2s_stupid_cookie_on = '0';
//$params->s2s_insert = '0';
$params->s2s_virtuemart = '0';
$params->s2s_takefromarticle = '1';
$params->twitter_follow = '0';
$params->tumblr_follow = '0';
//$params->s2s_art_fixed = '0';
//$params->s2s_cta_active = '0';
$params->twitter_cards = '0';
$params->opengraph_default_image_opt = '0';
$params->s2s_jevents = '0';
$params->s2s_og_debug = '0';
$params->og_skip_min_img = '0';
//$params->og_multi_img = '0';
$params->twitter_fast_as_light = '0';
$params->s2s_art_balloon_pos = '0';
$params->s2s_k2 = '0';
//$params->s2s_credits = '1';
$params->facebook_like_count = '0';
$params->facebook_share_count = '0';
//$params->facebook_total_count = '0';
$params->pinterest_count = '0';
$params->linkedin_count = '0';
$params->gplus_b_count = '0';
$params->tumblr_count = '0';
$params->s2s_vk_count = '0';
$params->opengraph_metadescription = '0';
$params->twitter_cards_summary = '0';
$params->s2s_display_universal = '0';
if($params->mas_on==2){
$params->mas_on = '0';
}
$params->mas_style='plus_q';
//count
if($params->s2s_art_fill==2){
$params->s2s_art_fill = 0;
}
//consulta
$reparams = $this->form->getValue('params');
$encode_params = json_encode($reparams);
$db = Factory::getDBO();
$query = $db->getQuery(true);
// Build the query
$query->update($db->quoteName('#__extensions'));
$query->set($db->quoteName('params') . ' = ' . $db->quote((string)$encode_params));
$query->where($db->quoteName('element') . ' = ' . $db->quote("social2s"));
// Execute the query
$db->setQuery($query);
try
{
$db->setQuery($query)->execute();
}
catch (Exception $e)
{
echo Text::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '<br>';
return;
}
return $this->mensajeLITE();
}
private function pro(){
$count_error = 0;
$field_value='';
$field_value.='
<div class="jtotal_license_ok alert alert-success">';
$field_value.= '<a class="btn btn-success apply_cool_stuff" onclick="apply_cool_stuff();">'.Text::_('SOCIAL2S_APPLY_COOL_STUFF').'</a>';
$field_value.= '<div class="span9 col-sm-9 text-center">';
$field_value.= '<br>';
$field_value.= '<h1 class="text-success"><i class="fas fa-unlock"></i> '.Text::_('JTOTAL_LICENSE_OK_ENJOY').'</h1>';
$field_value.= '<img src="'.URI::root().'media/plg_social2s/assets/jtotal_portada.png" width="150"/>';
$field_value.= '<br><br>';
$field_value.= '<a class="btn btn-info" href="mailto:support@jtotal.org"><strong>'.Text::_('JTOTAL_LICENSE_SUPPORT').'</strong><br></a> ';
$field_value.= '<a class="btn btn-success" href="https://extensions.joomla.org/extensions/extension/social-web/social-share/social2s/" target="_blank" rel="nofollow"><strong>'.Text::_('JTOTAL_LICENSE_REVIEW').'</strong><br></a> ';
$field_value.= '<a class="btn btn-jtotal" href="https://users.jtotal.org" target="_blank" rel="nofollow"><strong>'.Text::_('JTOTAL_LICENSE_GOTO_USERS').'</strong><br></a>';
$field_value.='</div>';
$field_value.= '<div class="span3 col-sm-3">';
//var_dump($this->tiempo);
if($this->tiempo){
$field_value.= '<i class="fas fa-chess-knight fa-3x"></i>
'.self::datediff(date('Y-m-d h:i:s',time()), date('Y-m-d h:i:s', $this->tiempo)).' '.Text::_('JTOTAL_LICENSE_TIME').'
</div>
<div class="clearfix"></div>';
}
$field_value.= '</div><div class="clearfix"></div>';
//form activate
$module_id = $this->form->getValue('id');
//var_dump($module_id);
//consulta
$reparams = $this->form->getValue('params');
$encode_params = json_encode($reparams);
$field_value.= '<input type="hidden" class="jtotal_license_check" name="jtotal_license_check_js" value="1"/>';
//bad idea
//$field_value .= '<input type="text" name="jtotal_license_time" id="jtotal_license_time" value="'.$this->tiempo.'"/>';
//OLD LICENSE
if(strtolower($reparams->jtotal_key) == 'social2sv3'){
}
return $field_value;
}
private function mensajeLITE(){
$mensaje='';
$mensaje.= '<div class="alert alert-danger">
<div class="col-sm-9 text-center">';
$mensaje.= '<h1>'.Text::_('JTOTAL_LICENSE_LITE_H1').'</h1>';
$mensaje.= '<h3>'.Text::_('JTOTAL_LICENSE_LITE_MODULE_HEADER').'</h3>';
$mensaje.= '<h6>'.Text::_('JTOTAL_LICENSE_LITE_HELPUS').'</h6>';
$mensaje.= '<i class="far fa-heart fa-2x fa-fw" aria-hidden="true"></i>';
$mensaje.= '<i class="far fa-heart fa-2x fa-fw" aria-hidden="true"></i>';
$mensaje.= '<i class="far fa-heart fa-2x fa-fw" aria-hidden="true"></i>';
$mensaje.= '<br>';
$mensaje.= '<div class="clearfix"></div>';
$mensaje.= '<br>';
$mensaje.= ' <a class="btn btn-success" href="http://sites.fastspring.com/dibuxo/product/social2sv4" target="_blank" rel="nofollow"><strong>'.Text::_('JTOTAL_LICENSE_BUY').'</strong><br>
<small>'.Text::_('JTOTAL_LICENSE_BUY_AND').'</small>
</a>';
$mensaje.= ' <a class="btn btn-info" href="https://extensions.joomla.org/extensions/extension/social-web/social-share/social2s/" target="_blank" rel="nofollow"><strong>'.Text::_('JTOTAL_LICENSE_REVIEW').'</strong><br>
<small>'.Text::_('JTOTAL_LICENSE_REVIEW_AND').'</small>
</a>';
$mensaje.= '</div>';
$mensaje.= '<br>';
$mensaje.= '<div class="col-sm-3 text-center">';
$mensaje.= '<img src="'.Uri::root().'media/plg_social2s/assets/jtotal_portada.png" width="150"/>';
$mensaje.= '</div>
<div class="clearfix"></div>
</div>';
$mensaje.= ' <input type="hidden" class="jtotal_license_check" name="jtotal_license_check_js" value="0"/>';
return $mensaje;
}
private function dateDiff($start, $end) {
$start_ts = strtotime($start);
$end_ts = strtotime($end);
$diff = $end_ts - $start_ts;
return intval(round($diff / 3600)/24);
}
}