one-click-accessibility/modules/remediation/database/global-remediation-relationship-entry.php
VasylD f0dce2793e
[APP-1923][APP-1924] manage remediations, global remediations (#424)
* [APP-1923] change remediation management (#411)

* [APP-1988] Add tabs

* [APP-1988][APP-1989] add tabs, remove menu item

* [APP-1988][APP-1989] add tabs, remove menu item

* [APP-1992] add empty state and tab navigation

* [APP-1993][APP-1994] Change view for manage AI fixes, change delete confirmation modal

* [APP-1996] add view for alt text fixes

* [APP-1996] add edit for alt text fixes

* [APP-1996] add edit for alt text fixes

* [APP-1996] add edit for alt text fixes

* [APP-1996] add edit for alt text fixes

* [APP-1996] add edit for alt text fixes

* [APP-1995] Color contrast form

* [APP-2001] add global remediation logic (#415)

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2001] add global remediation logic

* [APP-2003] add disable across scans (#418)

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* [APP-2003] add disable across scans

* add logs

* add logs

* add logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* remove logs

* change to theme value

* change to theme value

* change to theme value

* change to theme value

* add edit mode

* add edit mode

* add edit mode
2025-11-10 16:25:45 +07:00

108 lines
2.8 KiB
PHP

<?php
namespace EA11y\Modules\Remediation\Database;
use EA11y\Classes\Database\Entry;
use EA11y\Classes\Database\Exceptions\Missing_Table_Exception;
use EA11y\Modules\Remediation\Exceptions\Missing_URL;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Class Page_Entry
*/
class Global_Remediation_Relationship_Entry extends Entry {
public static function get_helper_class(): string {
return Global_Remediation_Relationship_Table::get_class_name();
}
/**
* Create
*
* @param string $id
*
* @throws Missing_URL
*/
public function create( string $id = 'id' ) {
if ( empty( $this->entry_data[ Global_Remediation_Relationship_Table::PAGE_URL ] ) ) {
throw new Missing_URL();
}
parent::create( $id );
}
/**
* get_relationship_entry
* @param string $page_url
* @param string $remediation_id
* @return Global_Remediation_Relationship_Entry
* @throws Missing_Table_Exception
*/
public static function get_relationship_entry( $page_url, $remediation_id ): Global_Remediation_Relationship_Entry {
return new Global_Remediation_Relationship_Entry([
'by' => '',
'value' => [
[
'column' => Global_Remediation_Relationship_Table::PAGE_URL,
'value' => $page_url,
'operator' => '=',
'relation_after' => 'AND',
],
[
'column' => Global_Remediation_Relationship_Table::REMEDIATION_ID,
'value' => $remediation_id,
'operator' => '=',
],
],
]);
}
/**
* Remove
*
* @param string $page_url
* @param string $remediation_id
*/
public static function remove( string $page_url, string $remediation_id ) {
$where = [
Global_Remediation_Relationship_Table::PAGE_URL => $page_url,
Global_Remediation_Relationship_Table::REMEDIATION_ID => $remediation_id,
];
Global_Remediation_Relationship_Table::delete( $where );
}
/**
* Update Status
*
* @param string $page_url
* @param string $remediation_id
* @param bool $status
*/
public function update_status( string $page_url, string $remediation_id, bool $status ) {
if ( ! $this->exists() ) {
unset( $this->entry_data[ Global_Remediation_Relationship_Table::ID ] );
}
$this->entry_data[ Global_Remediation_Relationship_Table::PAGE_URL ] = $page_url;
$this->entry_data[ Global_Remediation_Relationship_Table::REMEDIATION_ID ] = $remediation_id;
$this->entry_data[ Global_Remediation_Relationship_Table::ACTIVE ] = $status;
$this->save();
}
/**
* Update Status for all pages
*
* @param string $remediation_id
* @param bool $status
*/
public static function update_status_for_all_pages( string $remediation_id, bool $status ) {
$where = [
Global_Remediation_Relationship_Table::REMEDIATION_ID => $remediation_id,
];
$data = [
Global_Remediation_Relationship_Table::ACTIVE => $status,
];
Global_Remediation_Relationship_Table::update( $data, $where );
}
}