Current Path : /var/www/mainsite/wp-content/plugins/duplicator-pro/src/Models/ |
Current File : /var/www/mainsite/wp-content/plugins/duplicator-pro/src/Models/SystemGlobalEntity.php |
<?php /** * * @package Duplicator * @copyright (c) 2022, Snap Creek LLC */ namespace Duplicator\Models; use Duplicator\Core\Models\AbstractEntitySingleton; use Duplicator\Models\RecommendedFix; use VendorDuplicator\Amk\JsonSerialize\JsonSerialize; /** * System global entity * DUP_PRO_System_Global_Entity */ class SystemGlobalEntity extends AbstractEntitySingleton { /** @var RecommendedFix[] */ public $recommended_fixes = []; /** @var bool */ public $schedule_failed = false; /** @var int */ public $package_check_ts = 0; /** * Class constructor */ protected function __construct() { } /** * Will be called, automatically, when Serialize * * @return array<string,mixed> */ public function __serialize() // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__serializeFound { $data = JsonSerialize::serializeToData($this, JsonSerialize::JSON_SKIP_MAGIC_METHODS | JsonSerialize::JSON_SKIP_CLASS_NAME); return $data; } /** * Called after json decode * * @return void */ public function __wakeup() { foreach ($this->recommended_fixes as $index => $data) { $this->recommended_fixes[$index] = RecommendedFix::objectFromData($data); // @phpstan-ignore-line } } /** * Return entity type identifier * * @return string */ public static function getType() { return 'DUP_PRO_System_Global_Entity'; } /** * Add recommended quick fix * * @param string $error_text error text * @param string $fix_text text to add * @param mixed[] $javascript_callback javascript callback * * @return bool True on success, or false on error. */ public function addQuickFix($error_text, $fix_text, $javascript_callback) { if ($this->fixExists($fix_text) === false) { $id = str_shuffle(substr(uniqid('', true), 0, 14) . mt_rand(0, 1000000)); $fix = new RecommendedFix(); $fix->recommended_fix_type = RecommendedFix::TYPE_FIX; $fix->error_text = $error_text; $fix->parameter1 = $fix_text; $fix->parameter2 = $javascript_callback; $fix->id = $id; array_push($this->recommended_fixes, $fix); return $this->save(); } return true; } /** * Add recommended text * * @param string $error_text error text * @param string $fix_text text to add * * @return bool True on success, or false on error. */ public function addTextFix($error_text, $fix_text) { if ($this->fixExists($fix_text) === false) { $fix = new RecommendedFix(); $fix->recommended_fix_type = RecommendedFix::TYPE_TEXT; $fix->error_text = $error_text; $fix->parameter1 = $fix_text; array_push($this->recommended_fixes, $fix); return $this->save(); } return true; } /** * Remove quick fix by id * * @param string $id fix id * * @return bool true on success, false on failure */ public function removeFixById($id) { foreach ($this->recommended_fixes as $key => $fix) { if ($fix->id === $id) { unset($this->recommended_fixes[$key]); $this->recommended_fixes = array_values($this->recommended_fixes); return $this->save(); } } return true; } /** * Search recommended fix by content * * @param string $search search string * * @return bool true found, false not found */ private function fixExists($search) { foreach ($this->recommended_fixes as $fix) { if (strcmp($fix->parameter1, $search) == 0) { return true; } } return false; } /** * Clear recommended fixes * * @return bool true on success, false on failure */ public function clearFixes() { $this->recommended_fixes = []; return $this->save(); } }