Commit inicial - WordPress Análisis de Precios Unitarios

- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-product-manager
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
class TPM_Product_Theme extends TPM_Product {
/**
* Keep a flag to check if the theme was installed before
*
* @var bool
*/
protected $previously_installed = false;
public function get_status() {
if ( ! empty( $this->status ) ) {
return $this->status;
}
if ( ! $this->is_purchased() ) {
$this->status = self::AVAILABLE;
return $this->status;
}
if ( ! $this->is_installed() ) {
$this->status = self::TO_INSTALL;
return $this->status;
}
if ( ! $this->is_licensed() ) {
$this->status = self::TO_LICENSE;
return $this->status;
}
if ( $this->is_activated() ) {
$this->status = self::ACTIVATED;
return $this->status;
}
$this->status = self::READY;
return $this->status;
}
public function is_activated() {
/** @var WP_Theme $current_theme */
$current_theme = wp_get_theme();
return $this->name === $current_theme->get( 'Name' );
}
public function is_installed() {
$theme = wp_get_theme( $this->api_slug );
return ! is_wp_error( $theme->errors() );
}
public function to_array() {
$data = parent::to_array();
$data['type'] = 'theme';
return $data;
}
protected function _get_download_url( $api_slug ) {
global $wp_version;
$args = array(
'slug' => $api_slug,
'version' => '1.0',
);
$request = array(
'sslverify' => false,
'body' => array(
'action' => 'theme_update',
'request' => serialize( $args ),
'api-key' => md5( home_url() ),
),
'timeout' => 30,
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url(),
);
$thrive_update_api_url = add_query_arg(
array(
'p' => $this->_get_hash( $request['body'] ),
),
'https://service-api.thrivethemes.com/theme/update'
);
$result = wp_remote_post( $thrive_update_api_url, $request );
if ( ! is_wp_error( $result ) ) {
$info = @unserialize( wp_remote_retrieve_body( $result ) );
if ( ! empty( $info ) ) {
return $info['package'];
}
}
return new WP_Error( '400', $result->get_error_message() );
}
public function install( $credentials ) {
if ( $this->is_installed() ) {
$this->previously_installed = true;
return true;
}
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
$url = $this->_get_download_url( $this->api_slug );
global $wp_filesystem;
$connected = WP_Filesystem( $credentials );
if ( false === $connected ) {
return $wp_filesystem->errors;
}
require_once __DIR__ . '/class-tpm-theme-installer-skin.php';
$skin = new TPM_Theme_Installer_Skin( $credentials );
$installer = new Theme_Upgrader( $skin );
$installed = $installer->install( $url );
if ( null === $installed ) {
/** @var TPM_Theme_Installer_Skin $installer ->skin */
$installed = new WP_Error( '500', end( $installer->skin->messages ) );
}
return $installed;
}
/**
* @param $previously_installed
*/
public function set_previously_installed( $previously_installed ) {
$this->previously_installed = $previously_installed;
}
}