| Server IP : 162.253.224.18 / Your IP : 216.73.217.81 Web Server : Apache System : Linux s18.infinitysrv.com 3.10.0-962.3.2.lve1.5.89.el7.x86_64 #1 SMP Thu Jul 9 15:55:31 UTC 2026 x86_64 User : dejavumk ( 1184) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/dejavumk/perbec.com/wp-content/plugins/duplicator-pro/classes/entities/ |
Upload File : |
<?php
/**
* Brand entity layer
*
* Standard: PSR-2
* @link http://www.php-fig.org/psr/psr-2
*
* @package DUP_PRO
* @subpackage classes/entities
* @copyright (c) 2017, Snapcreek LLC
* @license https://opensource.org/licenses/GPL-3.0 GNU Public License
*
* @todo Finish Docs
*/
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
/* @var $global DUP_PRO_Global_Entity */
/* @var $brand DUP_PRO_Brand_Entity */
require_once(DUPLICATOR_PRO_PLUGIN_PATH.'/classes/entities/class.json.entity.base.php');
// For those brand types that do not require any configuration ahead of time
abstract class DUP_PRO_Brand_Modes
{
const keepPlugin = 0;
const removePlugin = 1;
}
// For those brand types that do not require any configuration ahead of time
abstract class DUP_PRO_BRAND_IDS
{
const defaultBrand = -2;
}
class DUP_PRO_Brand_Entity extends DUP_PRO_JSON_Entity_Base
{
public $name = '';
public $notes = '';
public $editable = true;
public $logo = '<i class="fa fa-bolt fa-sm"></i> Duplicator Pro';
public $active = false;
public $attachments = array();
protected $brandMode = DUP_PRO_Brand_Modes::removePlugin;
protected $is_freelancer_plus = false;
function __construct()
{
$this->is_freelancer_plus = (DUP_PRO_License_U::getLicenseType() >= DUP_PRO_License_Type::Freelancer);
parent::__construct();
$this->name = '';
}
public static function get_all()
{
$default_brand = self::get_default_brand();
$self = new DUP_PRO_Brand_Entity();
if($self->is_freelancer_plus){
$brands = self::get_by_type(get_class());
} else {
$brands = array();
}
array_unshift($brands, $default_brand);
return $brands;
}
public static function delete_by_id($brand_id)
{
try {
$self = new DUP_PRO_Brand_Entity();
if($self->is_freelancer_plus) {
parent::delete_by_id_base($brand_id);
return true;
} else return false;
} catch (Exception $e) {
return false;
}
}
public static function get_active($prepare_files = false)
{
$brand = self::get_only_active($prepare_files);
$self = new DUP_PRO_Brand_Entity();
if($brand!==false && $self->is_freelancer_plus)
{
// $default_brand->prepare_attachments_to_installer($brand->attachments);
return $brand;
}
$self->prepare_attachments_to_installer(null);
return self::get_default_brand();
}
public static function get_by_id($id, $prepare_files = false)
{
$self = new DUP_PRO_Brand_Entity();
if ($id <= 0 || $id == DUP_PRO_BRAND_IDS::defaultBrand || !$self->is_freelancer_plus) {
return self::get_default_brand();
}
$brand = self::get_by_id_and_type($id, get_class());
if($prepare_files === true)
{
if(isset($brand->attachments) && count($brand->attachments) > 0) {
$self->prepare_attachments_to_installer($brand->attachments);
} else {
$self->prepare_attachments_to_installer(NULL);
}
}
return $brand;
}
public function get_mode_text()
{
$txt = DUP_PRO_U::__('Unknown');
switch ($this->brandMode) {
case DUP_PRO_Brand_Modes::keepPlugin :
$txt = DUP_PRO_U::__('Keep Plugin');
break;
case DUP_PRO_Brand_Modes::removePlugin :
$txt = DUP_PRO_U::__('Remove Plugin');
break;
}
return $txt;
}
public function save() {
global $wpdb;
if($this->is_freelancer_plus)
parent::save();
// Now update other brands and be sure is active false
$this_brand = self::get_by_id($this->id);
if(isset($this_brand->active) && $this_brand->active === true) {
$query_list_string = "SELECT id, data FROM ".$wpdb->base_prefix.self::DEFAULT_TABLE_NAME." WHERE type = %s AND id != %d";
$prepared_list_query = $wpdb->prepare($query_list_string, get_class(), $this->id);
$list_brands = $wpdb->get_results($prepared_list_query);
foreach($list_brands as $i=>$brand)
{
if(!empty($brand->data))
{
$rdata = json_decode($brand->data, true);
$rdata['active'] = false;
$save_data = json_encode($rdata);
$query_string = "UPDATE ".$wpdb->base_prefix.self::DEFAULT_TABLE_NAME;
$query_string .= " SET data = %s WHERE type = %s AND id = %d";
$prepared_query = $wpdb->prepare($query_string, $save_data, get_class(), $brand->id);
$updated = $wpdb->query($prepared_query);
}
}
// Everything is updated, now just prepare installer for attachments
$this->prepare_attachments_to_installer(count($this_brand->attachments)>0 ? $this_brand->attachments : null);
}
}
/**
* Collect all attachments into `$this->attachments`
* @param string/array $attachments -image paths inside /wp-content/uploads folder, Accept array or comma delimited array
*/
public function attachments($attachments)
{
if(!is_array($attachments))
$attachments = array_map("trim",preg_split('/(;|,)/',$attachments));
$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir']; //Uploads folder
$dir = str_replace(array('\\','//'),array('/','/'),$dir);
foreach($attachments as $attachment)
{
if(file_exists("{$dir}{$attachment}"))
{
$this->attachments[] = $attachment;
}
}
}
public static function get_default_brand()
{
$global = DUP_PRO_Global_Entity::get_instance();
$default_brand = new DUP_PRO_Brand_Entity();
$default_brand->name = DUP_PRO_U::__('Default');
$default_brand->notes = DUP_PRO_U::__('The default content used when a brand is not defined');
$default_brand->id = DUP_PRO_BRAND_IDS::defaultBrand;
$default_brand->logo = '<i class="fa fa-bolt fa-sm"></i> ' . DUP_PRO_U::__('Duplicator Pro');
$default_brand->editable = false;
$default_brand->attachments = array();
return $default_brand;
}
/*=========================================
* PRIVATE AND PROTECTED AREA
*/
/*
* PRIVATE: This function prepare image files inside installer assets/images
* @pharam $type array/null -add attachments in array or use null to delete all files inside installer
* @return bool/int
**/
private function prepare_attachments_to_installer($attachments = array())
{
$installer = DUPLICATOR_PRO_PLUGIN_PATH."/installer/dup-installer/assets/images/brand";
if($attachments === null) {
if(file_exists($installer) && is_dir($installer)){
return DupProSnapLibIOU::rrmdir($installer);
}
return true;
}
if(!is_array($attachments)){
return false;
}
if(count($attachments) === 0)
$attachments = $this->attachments;
if(count($attachments) > 0)
{
$this->prepare_attachments_to_installer(null);
$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir']; //Uploads folder
$dir = str_replace(array('\\','//'),array('/','/'),$dir);
DupProSnapLibIOU::mkdir($installer);
$copy = array();
foreach($attachments as $attachment)
{
if(file_exists("{$dir}{$attachment}"))
{
DupProSnapLibIOU::mkdir(dirname("{$installer}{$attachment}"),0755,true);
if(@copy("{$dir}{$attachment}", "{$installer}{$attachment}") === false) {
DUP_PRO_Log::error("Error copying {$dir}{$attachment} to {$installer}{$attachment}", '', false);
}
else $copy[]=1;
}
}
return count($copy) > 0;
}
return false;
}
/*
* PRIVATE: Get only active dynamic brand
* @pharam $type string -class type
* @pharam $prepare_files string -(optional) Prepar files for extract.
* @return false/object
**/
private static function get_only_active($prepare_files = false)
{
global $wpdb;
/*$class = new DUP_PRO_JSON_Entity_Base();
if(!$class->is_freelancer_plus) return false;
*/
$type=get_class();
$table_name = $wpdb->base_prefix.self::DEFAULT_TABLE_NAME;
$rows = self::get_all();
foreach($rows as $i=>$data)
{
if($i === 0) continue; //skip default in this case;
if($data->active !== true)
continue;
else
{
$instance = new $type();
$instance->id = (int) $data->id;
$instance->type = $data->type;
$instance->attachments= $data->attachments;
$instance->table_name = $table_name;
if($prepare_files === true)
{
$attachments = new DUP_PRO_Brand_Entity();
if(count($data->attachments) > 0)
{
$attachments->prepare_attachments_to_installer($data->attachments);
}
else
{
$attachments->prepare_attachments_to_installer(NULL);
}
}
return $data;
}
}
return false;
}
}