feat: initial ACRIB WordPress deployment
- WordPress 6.9.4 (es_ES) with Kadence theme - Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto - Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold - Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI) - Plugins: Kadence Blocks, Polylang, Contact Form 7 - Custom CSS with full brand styling and responsive layout - HTTPS enforced via wp-config.php proxy detection
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
<?php declare( strict_types=1 );
|
||||
|
||||
namespace KadenceWP\KadenceBlocks\Optimizer\Database;
|
||||
|
||||
use KadenceWP\KadenceBlocks\Database\Query;
|
||||
use KadenceWP\KadenceBlocks\Optimizer\Optimizer_Provider;
|
||||
|
||||
/**
|
||||
* A query builder wrapper for the Optimizer table.
|
||||
*
|
||||
* @see Optimizer_Provider::register_optimizer_query()
|
||||
*/
|
||||
final class Optimizer_Query extends Query {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php declare( strict_types=1 );
|
||||
|
||||
namespace KadenceWP\KadenceBlocks\Optimizer\Database;
|
||||
|
||||
use KadenceWP\KadenceBlocks\StellarWP\DB\Database\Exceptions\DatabaseQueryException;
|
||||
use KadenceWP\KadenceBlocks\StellarWP\Schema\Tables\Contracts\Table;
|
||||
|
||||
/**
|
||||
* The optimizer database table to store optimizer data.
|
||||
*/
|
||||
final class Optimizer_Table extends Table {
|
||||
|
||||
public const SCHEMA_VERSION = '2.0.5';
|
||||
|
||||
/**
|
||||
* @var string The base table name.
|
||||
*/
|
||||
protected static $base_table_name = 'kb_optimizer';
|
||||
|
||||
/**
|
||||
* @var string The organizational group this table belongs to.
|
||||
*/
|
||||
protected static $group = 'kb';
|
||||
|
||||
/**
|
||||
* @var string|null The slug used to identify the custom table.
|
||||
*/
|
||||
protected static $schema_slug = 'optimizer';
|
||||
|
||||
/**
|
||||
* @var string The field that uniquely identifies a row in the table.
|
||||
*/
|
||||
protected static $uid_column = 'path_hash';
|
||||
|
||||
/**
|
||||
* Overload the update method to first drop the database as this is a temporary table.
|
||||
*
|
||||
* @throws DatabaseQueryException If any of the queries fail.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function update() {
|
||||
try {
|
||||
if ( $this->exists() ) {
|
||||
$this->drop();
|
||||
}
|
||||
} catch ( \Throwable $e ) {
|
||||
function_exists( 'error_log' ) && error_log( '[Kadence Blocks]: Unable to drop optimizer table during schema update: ' . $e->getMessage() );
|
||||
return [];
|
||||
}
|
||||
|
||||
return parent::update();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function get_definition(): string {
|
||||
global $wpdb;
|
||||
$table_name = self::table_name();
|
||||
$charset_collate = $wpdb->get_charset_collate();
|
||||
|
||||
return "
|
||||
CREATE TABLE `$table_name` (
|
||||
path_hash CHAR(64) PRIMARY KEY COMMENT 'SHA-256 hash of the relative path of the URL used as a unique key for fast lookups',
|
||||
path TEXT NOT NULL COMMENT 'The relative path of the URL, stored for reference and debugging',
|
||||
analysis LONGTEXT NOT NULL COMMENT 'Serialized or JSON-encoded analysis data associated with the path'
|
||||
) {$charset_collate};
|
||||
";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php declare( strict_types=1 );
|
||||
|
||||
namespace KadenceWP\KadenceBlocks\Optimizer\Database;
|
||||
|
||||
use KadenceWP\KadenceBlocks\StellarWP\ProphecyMonorepo\Container\Contracts\Provider as Provider_Contract;
|
||||
|
||||
final class Provider extends Provider_Contract {
|
||||
|
||||
public function register(): void {
|
||||
$this->register_optimizer_query();
|
||||
$this->register_viewport_query();
|
||||
}
|
||||
|
||||
private function register_optimizer_query(): void {
|
||||
$this->container->singleton( Optimizer_Query::class, Optimizer_Query::class );
|
||||
|
||||
$this->container->when( Optimizer_Query::class )
|
||||
->needs( '$table' )
|
||||
->give( static fn(): string => Optimizer_Table::table_name( false ) );
|
||||
}
|
||||
|
||||
private function register_viewport_query(): void {
|
||||
$this->container->singleton( Viewport_Query::class, Viewport_Query::class );
|
||||
|
||||
$this->container->when( Viewport_Query::class )
|
||||
->needs( '$table' )
|
||||
->give( static fn(): string => Viewport_Hash_Table::table_name( false ) );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php declare( strict_types=1 );
|
||||
|
||||
namespace KadenceWP\KadenceBlocks\Optimizer\Database;
|
||||
|
||||
use KadenceWP\KadenceBlocks\Optimizer\Enums\Viewport;
|
||||
use KadenceWP\KadenceBlocks\StellarWP\DB\Database\Exceptions\DatabaseQueryException;
|
||||
use KadenceWP\KadenceBlocks\StellarWP\Schema\Tables\Contracts\Table;
|
||||
|
||||
/**
|
||||
* Database table to store viewport-specific HTML hashes for each URL path.
|
||||
*/
|
||||
final class Viewport_Hash_Table extends Table {
|
||||
|
||||
public const SCHEMA_VERSION = '1.0.5';
|
||||
|
||||
/**
|
||||
* @var string The base table name.
|
||||
*/
|
||||
protected static $base_table_name = 'kb_optimizer_viewport_hashes';
|
||||
|
||||
/**
|
||||
* @var string The organizational group this table belongs to.
|
||||
*/
|
||||
protected static $group = 'kb';
|
||||
|
||||
/**
|
||||
* @var string|null The slug used to identify the custom table.
|
||||
*/
|
||||
protected static $schema_slug = 'viewport_hashes';
|
||||
|
||||
/**
|
||||
* @var string[] The fields that uniquely identify a row in the table (composite key).
|
||||
*/
|
||||
protected static $uid_column = 'path_hash';
|
||||
|
||||
/**
|
||||
* Overload the update method to drop the database first (optional, like your Optimizer_Table).
|
||||
*
|
||||
* @throws DatabaseQueryException If any of the queries fail.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function update() {
|
||||
try {
|
||||
if ( $this->exists() ) {
|
||||
$this->drop();
|
||||
}
|
||||
} catch ( \Throwable $e ) {
|
||||
function_exists( 'error_log' ) && error_log( '[Kadence Blocks]: Unable to drop viewport_hash table during schema update: ' . $e->getMessage() );
|
||||
return [];
|
||||
}
|
||||
|
||||
return parent::update();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function get_definition(): string {
|
||||
global $wpdb;
|
||||
$table_name = self::table_name();
|
||||
$charset_collate = $wpdb->get_charset_collate();
|
||||
|
||||
// Build a 'desktop', 'mobile' ENUM input.
|
||||
$enum_values = sprintf( "'%s', '%s'", Viewport::desktop()->value(), Viewport::mobile()->value() );
|
||||
|
||||
return "
|
||||
CREATE TABLE `$table_name` (
|
||||
path_hash CHAR(64) NOT NULL COMMENT 'SHA-256 hash of the path (via \$wp->request), identifies the URL',
|
||||
viewport ENUM($enum_values) NOT NULL COMMENT 'The viewport/device identifier',
|
||||
html_hash VARCHAR(191) NOT NULL COMMENT 'A composite of hashes separated by | in a key\:MD5 value of the HTML markup for this viewport',
|
||||
PRIMARY KEY (path_hash, viewport)
|
||||
) {$charset_collate};
|
||||
";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php declare( strict_types=1 );
|
||||
|
||||
namespace KadenceWP\KadenceBlocks\Optimizer\Database;
|
||||
|
||||
use KadenceWP\KadenceBlocks\Database\Query;
|
||||
use KadenceWP\KadenceBlocks\Optimizer\Optimizer_Provider;
|
||||
|
||||
/**
|
||||
* A query builder wrapper for the Viewport_Hash table.
|
||||
*
|
||||
* @see Optimizer_Provider::register_viewport_query()
|
||||
*/
|
||||
final class Viewport_Query extends Query {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user