Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../modules/checklis.../steps
File: step-base.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Elementor\Modules\Checklist\Steps;
[2] Fix | Delete
[3] Fix | Delete
use Elementor\Core\Isolation\Wordpress_Adapter;
[4] Fix | Delete
use Elementor\Core\Isolation\Wordpress_Adapter_Interface;
[5] Fix | Delete
use Elementor\Core\Isolation\Elementor_Adapter;
[6] Fix | Delete
use Elementor\Core\Isolation\Elementor_Adapter_Interface;
[7] Fix | Delete
use Elementor\Modules\Checklist\Module as Checklist_Module;
[8] Fix | Delete
[9] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[10] Fix | Delete
exit; // Exit if accessed directly.
[11] Fix | Delete
}
[12] Fix | Delete
[13] Fix | Delete
abstract class Step_Base {
[14] Fix | Delete
/**
[15] Fix | Delete
* @var string
[16] Fix | Delete
* This is the key to be set to true if the step can be completed, and still be considered completed even if the user later did something to the should have it marked as not completed
[17] Fix | Delete
*/
[18] Fix | Delete
const IS_COMPLETION_IMMUTABLE = 'is_completion_immutable';
[19] Fix | Delete
const MARKED_AS_COMPLETED_KEY = 'is_marked_completed';
[20] Fix | Delete
const IMMUTABLE_COMPLETION_KEY = 'is_immutable_completed';
[21] Fix | Delete
const ABSOLUTE_COMPLETION_KEY = 'is_absolute_completed';
[22] Fix | Delete
[23] Fix | Delete
private array $user_progress;
[24] Fix | Delete
protected Wordpress_Adapter_Interface $wordpress_adapter;
[25] Fix | Delete
protected Elementor_Adapter_Interface $elementor_adapter;
[26] Fix | Delete
protected ?array $promotion_data;
[27] Fix | Delete
protected Checklist_Module $module;
[28] Fix | Delete
[29] Fix | Delete
/**
[30] Fix | Delete
* Returns a steps current completion status
[31] Fix | Delete
*
[32] Fix | Delete
* @return bool
[33] Fix | Delete
*/
[34] Fix | Delete
abstract protected function is_absolute_completed(): bool;
[35] Fix | Delete
[36] Fix | Delete
/**
[37] Fix | Delete
* @return string
[38] Fix | Delete
*/
[39] Fix | Delete
abstract public function get_id(): string;
[40] Fix | Delete
[41] Fix | Delete
/**
[42] Fix | Delete
* @return string
[43] Fix | Delete
*/
[44] Fix | Delete
abstract public function get_title(): string;
[45] Fix | Delete
[46] Fix | Delete
/**
[47] Fix | Delete
* @return string
[48] Fix | Delete
*/
[49] Fix | Delete
abstract public function get_description(): string;
[50] Fix | Delete
[51] Fix | Delete
/**
[52] Fix | Delete
* For instance; 'Create 3 pages'
[53] Fix | Delete
*
[54] Fix | Delete
* @return string
[55] Fix | Delete
*/
[56] Fix | Delete
abstract public function get_cta_text(): string;
[57] Fix | Delete
[58] Fix | Delete
/**
[59] Fix | Delete
* @return string
[60] Fix | Delete
*/
[61] Fix | Delete
abstract public function get_cta_url(): string;
[62] Fix | Delete
[63] Fix | Delete
/**
[64] Fix | Delete
* @return bool
[65] Fix | Delete
*/
[66] Fix | Delete
abstract public function get_is_completion_immutable(): bool;
[67] Fix | Delete
[68] Fix | Delete
/**
[69] Fix | Delete
* @return string
[70] Fix | Delete
*/
[71] Fix | Delete
abstract public function get_image_src(): string;
[72] Fix | Delete
[73] Fix | Delete
/**
[74] Fix | Delete
* Step_Base constructor.
[75] Fix | Delete
*
[76] Fix | Delete
* @param Checklist_Module $module
[77] Fix | Delete
* @param ?Wordpress_Adapter_Interface $wordpress_adapter
[78] Fix | Delete
* @param ?Elementor_Adapter_Interface $elementor_adapter
[79] Fix | Delete
* @return void
[80] Fix | Delete
*/
[81] Fix | Delete
public function __construct( Checklist_Module $module, ?Wordpress_Adapter_Interface $wordpress_adapter = null, ?Elementor_Adapter_Interface $elementor_adapter = null, $promotion_data = null ) {
[82] Fix | Delete
$this->module = $module;
[83] Fix | Delete
$this->wordpress_adapter = $wordpress_adapter ?? new Wordpress_Adapter();
[84] Fix | Delete
$this->elementor_adapter = $elementor_adapter ?? new Elementor_Adapter();
[85] Fix | Delete
$this->promotion_data = $promotion_data;
[86] Fix | Delete
[87] Fix | Delete
$this->user_progress = $module->get_step_progress( $this->get_id() ) ?? $this->get_step_initial_progress();
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
/**
[91] Fix | Delete
* Returns step visibility (by-default step is visible)
[92] Fix | Delete
*
[93] Fix | Delete
* @return bool
[94] Fix | Delete
*/
[95] Fix | Delete
public function is_visible(): bool {
[96] Fix | Delete
return true;
[97] Fix | Delete
}
[98] Fix | Delete
[99] Fix | Delete
public function get_learn_more_text(): string {
[100] Fix | Delete
return esc_html__( 'Learn more', 'elementor' );
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
public function get_learn_more_url(): string {
[104] Fix | Delete
return 'https://go.elementor.com/getting-started-with-elementor/';
[105] Fix | Delete
}
[106] Fix | Delete
[107] Fix | Delete
public function update_step( array $step_data ): void {
[108] Fix | Delete
$allowed_properties = [
[109] Fix | Delete
self::MARKED_AS_COMPLETED_KEY => $step_data[ self::MARKED_AS_COMPLETED_KEY ] ?? null,
[110] Fix | Delete
self::IMMUTABLE_COMPLETION_KEY => $step_data[ self::IMMUTABLE_COMPLETION_KEY ] ?? null,
[111] Fix | Delete
self::ABSOLUTE_COMPLETION_KEY => $step_data[ self::ABSOLUTE_COMPLETION_KEY ] ?? null,
[112] Fix | Delete
];
[113] Fix | Delete
[114] Fix | Delete
foreach ( $allowed_properties as $key => $value ) {
[115] Fix | Delete
if ( null !== $value ) {
[116] Fix | Delete
$this->user_progress[ $key ] = $value;
[117] Fix | Delete
}
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
$this->set_step_progress();
[121] Fix | Delete
}
[122] Fix | Delete
[123] Fix | Delete
/**
[124] Fix | Delete
* Marking a step as completed based on user's desire
[125] Fix | Delete
*
[126] Fix | Delete
* @return void
[127] Fix | Delete
*/
[128] Fix | Delete
public function mark_as_completed(): void {
[129] Fix | Delete
$this->update_step( [ self::MARKED_AS_COMPLETED_KEY => true ] );
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
/**
[133] Fix | Delete
* Unmarking a step as completed based on user's desire
[134] Fix | Delete
*
[135] Fix | Delete
* @return void
[136] Fix | Delete
*/
[137] Fix | Delete
public function unmark_as_completed(): void {
[138] Fix | Delete
$this->update_step( [ self::MARKED_AS_COMPLETED_KEY => false ] );
[139] Fix | Delete
}
[140] Fix | Delete
[141] Fix | Delete
/**
[142] Fix | Delete
* Marking a step as completed if it was completed once, and it's suffice to marketing's requirements
[143] Fix | Delete
*
[144] Fix | Delete
* @return void
[145] Fix | Delete
*/
[146] Fix | Delete
public function maybe_immutably_mark_as_completed(): void {
[147] Fix | Delete
$is_immutable_completed = $this->user_progress[ self::IMMUTABLE_COMPLETION_KEY ] ?? false;
[148] Fix | Delete
[149] Fix | Delete
if ( ! $is_immutable_completed && $this->get_is_completion_immutable() && $this->is_absolute_completed() ) {
[150] Fix | Delete
$this->update_step( [
[151] Fix | Delete
self::MARKED_AS_COMPLETED_KEY => false,
[152] Fix | Delete
self::IMMUTABLE_COMPLETION_KEY => true,
[153] Fix | Delete
] );
[154] Fix | Delete
}
[155] Fix | Delete
}
[156] Fix | Delete
[157] Fix | Delete
/**
[158] Fix | Delete
* Returns the step marked as completed value
[159] Fix | Delete
*
[160] Fix | Delete
* @return bool
[161] Fix | Delete
*/
[162] Fix | Delete
public function is_marked_as_completed(): bool {
[163] Fix | Delete
return $this->user_progress[ self::MARKED_AS_COMPLETED_KEY ];
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
/**
[167] Fix | Delete
* Returns the step completed value
[168] Fix | Delete
*
[169] Fix | Delete
* @return bool
[170] Fix | Delete
*/
[171] Fix | Delete
public function is_immutable_completed(): bool {
[172] Fix | Delete
return $this->get_is_completion_immutable() && $this->user_progress[ self::IMMUTABLE_COMPLETION_KEY ] ?? false;
[173] Fix | Delete
}
[174] Fix | Delete
[175] Fix | Delete
/**
[176] Fix | Delete
* Sets and returns the initial progress of the step
[177] Fix | Delete
*
[178] Fix | Delete
* @return array
[179] Fix | Delete
*/
[180] Fix | Delete
public function get_step_initial_progress(): array {
[181] Fix | Delete
$initial_progress = [
[182] Fix | Delete
self::MARKED_AS_COMPLETED_KEY => false,
[183] Fix | Delete
self::IMMUTABLE_COMPLETION_KEY => false,
[184] Fix | Delete
];
[185] Fix | Delete
[186] Fix | Delete
$this->module->set_step_progress( $this->get_id(), $initial_progress );
[187] Fix | Delete
[188] Fix | Delete
return $initial_progress;
[189] Fix | Delete
}
[190] Fix | Delete
[191] Fix | Delete
/**
[192] Fix | Delete
* @return ?array
[193] Fix | Delete
*/
[194] Fix | Delete
public function get_promotion_data(): ?array {
[195] Fix | Delete
return $this->promotion_data;
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
/**
[199] Fix | Delete
* Sets the step progress
[200] Fix | Delete
*
[201] Fix | Delete
* @return void
[202] Fix | Delete
*/
[203] Fix | Delete
private function set_step_progress(): void {
[204] Fix | Delete
$this->module->set_step_progress( $this->get_id(), $this->user_progress );
[205] Fix | Delete
}
[206] Fix | Delete
}
[207] Fix | Delete
[208] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function