Files
newwalls.pl/modules/revsliderprestashop/admin/includes/addons.class.php
2024-12-17 13:43:22 +01:00

302 lines
8.7 KiB
PHP

<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2019 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderAddons extends RevSliderFunctions { //before: Rev_addon_Admin
//private $addon_version_required = '2.0.0'; //this holds the globally needed addon version for the current RS version
private $addon_version_required = array(
'revslider-whiteboard-addon' => '2.2.0',
'revslider-backup-addon' => '2.0.0',
'revslider-gallery-addon' => '2.0.0',
'revslider-rel-posts-addon' => '2.0.0',
'revslider-typewriter-addon' => '2.0.0',
'revslider-sharing-addon' => '2.0.0',
'revslider-maintenance-addon' => '2.0.0',
'revslider-snow-addon' => '2.0.0',
'revslider-particles-addon' => '2.0.0',
'revslider-polyfold-addon' => '2.0.0',
'revslider-404-addon' => '2.0.0',
'revslider-prevnext-posts-addon' => '2.0.0',
'revslider-filmstrip-addon' => '2.0.0',
'revslider-login-addon' => '2.0.0',
'revslider-featured-addon' => '2.0.0',
'revslider-slicey-addon' => '2.0.0',
'revslider-beforeafter-addon' => '2.0.0',
'revslider-weather-addon' => '2.0.0',
'revslider-panorama-addon' => '2.0.0',
'revslider-duotonefilters-addon' => '2.0.0',
'revslider-revealer-addon' => '2.0.0',
'revslider-refresh-addon' => '2.0.0',
'revslider-bubblemorph-addon' => '2.0.0',
'revslider-liquideffect-addon' => '2.0.0',
'revslider-explodinglayers-addon' => '2.0.0',
'revslider-paintbrush-addon' => '2.0.0'
);
public function __construct(){
//include_once(ABSPATH . 'wp-admin/includes/plugin.php');
}
/**
* get all the addons with information
**/
public function get_addon_list(){
RevLoader::update_addon_json();
$addons = RevLoader::get_option('revslider-addons');
$addons = (array)$addons;
$addons = array_reverse($addons, true);
//$plugins = get_plugins();
$plugins = array();
if(!empty($addons)){
foreach($addons as $k => $addon){
if(!is_object($addon)) continue;
$addon_file_path = RS_PLUGIN_PATH .'addons/'. $addon->slug.'/'.$addon->slug.'.php';
$is_active = RevLoader::get_option($addon->slug);
if($is_active && $is_active != '0'){
$is_active = true;
}else{
$is_active = false;
}
if(file_exists($addon_file_path)){
//if(array_key_exists($addon->slug.'/'.$addon->slug.'.php', $plugins)){
//$addons[$k]->full_title = $plugins[$addon->slug.'/'.$addon->slug.'.php']['Name'];
$addons[$k]->full_title = $addon->slug;
//$addons[$k]->active = (is_plugin_active($addon->slug.'/'.$addon->slug.'.php')) ? true : false;
$addons[$k]->active = ($is_active) ? true : false;
//$addons[$k]->installed = $plugins[$addon->slug.'/'.$addon->slug.'.php']['Version'];
$addons[$k]->installed = '6.0';
}else{
$addons[$k]->active = false;
$addons[$k]->installed = false;
}
}
}
return $addons;
}
/**
* check if any addon is below version x (for RS6.0 this is version 2.0)
* if yes give a message that tells to update
**/
public function check_addon_version(){
$rs_addons = $this->get_addon_list();
$update = array();
if(!empty($rs_addons)){
foreach($rs_addons as $handle => $addon){
$installed = $this->get_val($addon, 'installed');
if(trim($installed) === '') continue;
if($this->get_val($addon, 'active', false) === false) continue;
$version = $this->get_val($this->addon_version_required, $handle, false);
if($version !== false && version_compare($installed, $version, '<')){
$update[$handle] = array(
'title' => $this->get_val($addon, 'full_title'),
'old' => $installed,
'new' => $this->get_val($addon, 'available'),
'status'=> '1' //1 is mandatory to use it
);
}
}
}
return $update;
}
/**
* Install Add-On/Plugin
*
* @since 6.0
*/
public function install_addon($addon, $force = false){
if(RevLoader::get_option('revslider-valid', 'false') !== 'true') return RevLoader::__('Please activate Slider Revolution', 'revslider');
//check if downloaded already
//$plugins = get_plugins();
//$addon_path = $addon.'/'.$addon.'.php';
//if(!array_key_exists($addon_path, $plugins) || $force == true){
$addon_file_path = RS_PLUGIN_PATH .'addons/'. $addon.'/'.$addon.'.php';
if(! file_exists($addon_file_path)){
//download if nessecary
//RevLoader::update_option($addon, true);
return $this->download_addon($addon);
}
// $addon_path = $addon.'/'.$addon.'.php';
// $filename = './addons/'.$addon_path;
// if (! file_exists($filename)) {
// //download if nessecary
// return $this->download_addon($addon);
// }
//activate
$activate = $this->activate_addon($addon);
return $activate;
}
/**
* Download Add-On/Plugin
*
* @since 1.0.0
*/
public function download_addon($addon){
//global $wp_version, $rslb;
$rslb = new RevSliderLoadBalancer();
if(RevLoader::get_option('revslider-valid', 'false') !== 'true') return RevLoader::__('Please activate Slider Revolution', 'revslider');
$plugin_slug = basename($addon);
$plugin_result = false;
$plugin_message = 'UNKNOWN';
$code = RevLoader::get_option('revslider-code', '');
if(0 !== strpos($plugin_slug, 'revslider-')) die( '-1' );
$done = false;
$count = 0;
$download_url = RevLoader::url();
//track
//$url = $download_url .'/download.php?code='.$code.'&type='.$plugin_slug;
$url = 'http://revapi.smartdatasoft.net/v6/call/index.php?code='.$code.'&type='.$plugin_slug.'&ps_base_url_ssl='. _PS_BASE_URL_SSL_;
$get = RevLoader::wp_remote_post($url, array(
'user-agent' => 'php/; '. RevLoader::get_bloginfo('url'),
'body' => '',
'timeout' => 400
));
if($get["info"]["http_code"] != "200" ){
die("FAILED TO DOWNLOAD");
}else{
$upload_dir = RevLoader::wp_upload_dir();
$file = $upload_dir['basedir']. '/revslider/templates/' . $plugin_slug . '.zip';
@mkdir(dirname($file), 0777, true);
$ret = @file_put_contents($file, $get['body']);
//$dis_path = './addons';
$dis_path = RS_PLUGIN_PATH . '/addons/';
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
$zip->extractTo($dis_path);
$zip->close();
return true;
}else{
die("There was a problem. Please try again!");
}
@unlink($file);
return true;
}
//$result = activate_plugin( $plugin_slug.'/'.$plugin_slug.'.php' );
// $rattr = array(
// 'code' => urlencode($code),
// 'version' => urlencode(RS_REVISION),
// 'product' => urlencode(RS_PLUGIN_SLUG),
// 'type' => urlencode($plugin_slug)
// );
// do{
// $url = 'addons/'.$plugin_slug.'/download.php';
// $get = $rslb->call_url($url, $rattr, 'updates');
// if(RevLoader::wp_remote_retrieve_response_code($get) == 200){
// $done = true;
// }else{
// $rslb->move_server_list();
// }
// $count++;
// }while($done == false && $count < 5);
// if(!$get || RevLoader::wp_remote_retrieve_response_code($get) != 200){
// }else{
// $upload_dir = RevLoader::wp_upload_dir();
// $file = $upload_dir['basedir']. '/revslider/templates/' . $plugin_slug . '.zip';
// @mkdir(dirname($file), 0777, true);
// $ret = @file_put_contents($file, $get['body']);
// WP_Filesystem();
// global $wp_filesystem;
// $upload_dir = RevLoader::wp_upload_dir();
// $d_path = WP_PLUGIN_DIR;
// $unzipfile = unzip_file($file, $d_path);
// if(is_wp_error($unzipfile)){
// define('FS_METHOD', 'direct'); //lets try direct.
// WP_Filesystem(); //WP_Filesystem() needs to be called again since now we use direct !
// //@chmod($file, 0775);
// $unzipfile = unzip_file($file, $d_path);
// if(is_wp_error($unzipfile)){
// $d_path = WP_PLUGIN_DIR;
// $unzipfile = unzip_file($file, $d_path);
// if(is_wp_error($unzipfile)){
// $f = basename($file);
// $d_path = str_replace($f, '', $file);
// $unzipfile = unzip_file($file, $d_path);
// }
// }
// }
// @unlink($file);
// return true;
// }
//$result = activate_plugin( $plugin_slug.'/'.$plugin_slug.'.php' );
return false;
}
/**
* Activates Installed Add-On/Plugin
*
* @since 1.0.0
*/
public function activate_addon($addon){
// Verify that the incoming request is coming with the security nonce
if(isset($addon)){
RevLoader::update_option($addon, true);
}else{
return false;
}
return true;
}
/**
* Deactivates Installed Add-On/Plugin
*
* @since 1.0.0
*/
public function deactivate_addon($addon){
RevLoader::update_option($addon, false);
return true;
// Verify that the incoming request is coming with the security nonce
// $result = deactivate_plugins($addon);
// return (is_wp_error($result)) ? false : true;
}
}
class Rev_addon_Admin extends RevSliderAddons {}
?>