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,448 @@
<?php
/******************************************************************************************
* Copyright (C) Smackcoders. - All Rights Reserved under Smackcoders Proprietary License
* Unauthorized copying of this file, via any medium is strictly prohibited
* Proprietary and confidential
* You can contact Smackcoders at email address info@smackcoders.com.
*******************************************************************************************/
namespace Smackcoders\FCSV;
if ( ! defined( 'ABSPATH' ) )
exit; // Exit if accessed directly
class ACFImport {
private static $acf_instance = null;
public static function getInstance() {
if (ACFImport::$acf_instance == null) {
ACFImport::$acf_instance = new ACFImport;
return ACFImport::$acf_instance;
}
return ACFImport::$acf_instance;
}
function set_acf_values($header_array ,$value_array , $map, $maps, $post_id , $type,$mode, $hash_key,$line_number){
$helpers_instance = ImportHelpers::getInstance();
$helpers_instance = ImportHelpers::getInstance();
$post_values =$helpers_instance->get_header_values($maps , $header_array , $value_array);
$trim_content = array(
'->static' => '',
'->math' => '',
'->cus1' => '',
'->openAI' => '',
);
if(is_array($map)){
foreach($map as $header_keys => $value){
if( strpos($header_keys, '->cus2') !== false) {
if(!empty($value)){
$this->write_to_customfile($value, $header_array, $value_array);
unset($map[$header_keys]);
}
}
else{
$header_trim = strtr($header_keys, $trim_content);
if($header_trim != $header_keys){
unset($map[$header_keys]);
}
$map[$header_trim] = $value;
}
}
foreach($map as $key => $value){
$csv_value= trim($map[$key]);
if(!empty($csv_value) || $csv_value == 0){
//$pattern = "/({([a-z A-Z 0-9 | , _ -]+)(.*?)(}))/";
$pattern = '/{([^}]*)}/';
if(preg_match_all($pattern, $csv_value, $matches, PREG_PATTERN_ORDER)){
$csv_element = $csv_value;
//foreach($matches[2] as $value){
foreach($matches[1] as $value){
$get_key = array_search($value , $header_array);
if(isset($value_array[$get_key])){
$csv_value_element = $value_array[$get_key];
$value = '{'.$value.'}';
$csv_element = str_replace($value, $csv_value_element, $csv_element);
}
}
$math = 'MATH';
if (strpos($csv_element, $math) !== false) {
$equation = str_replace('MATH', '', $csv_element);
$csv_element = $helpers_instance->evalmath($equation);
}
$wp_element= trim($key);
if((!empty($csv_element) || $csv_element == 0) && !empty($wp_element)){
if(is_plugin_active('advanced-custom-fields/acf.php') || is_plugin_active('secure-custom-fields/secure-custom-fields.php')){
$acf_pluginPath = WP_PLUGIN_DIR . '/advanced-custom-fields/pro';
if(is_dir($acf_pluginPath)) {
$this->acfpro_import_function($wp_element ,$post_values, $csv_element ,$type, $post_id,$mode, $hash_key,$line_number);
}
else{
$this->acf_import_function($wp_element ,$post_values, $csv_element ,$type, $post_id,$mode, $hash_key,$line_number);
}
}
}
}
elseif(!in_array($csv_value , $header_array)){
$wp_element= trim($key);
$this->acf_import_function($wp_element ,$post_values, $csv_value ,$type, $post_id,$mode, $hash_key,$line_number);
}
else{
$get_key= array_search($csv_value , $header_array);
if(isset($value_array[$get_key])){
$csv_element = $value_array[$get_key];
$wp_element= trim($key);
if($mode == 'Insert'){
if((!empty($csv_element) || $csv_element == 0) && !empty($wp_element)){
$this->acf_import_function($wp_element ,$post_values, $csv_element ,$type, $post_id,$mode, $hash_key,$line_number);
}
}
else{
if(!empty($csv_element) || !empty($wp_element)){
$this->acf_import_function($wp_element ,$post_values, $csv_element ,$type, $post_id,$mode, $hash_key,$line_number);
}
}
}
}
}
}
}
}
/**
* Imports ACF Free fields
* @param string $acf_wpname_element - acf fields
* @param string $acf_csv_element - csv headers
* @param string $importAs - selected import type
* @param string $post_id - inserted post id
*/
function acf_import_function($acf_wpname_element ,$post_values,$acf_csv_element, $importAs , $post_id,$mode, $hash_key,$line_number){
$acf_wp_name = $acf_wpname_element;
$acf_csv_name = $acf_csv_element;
global $wpdb;
$helpers_instance = ImportHelpers::getInstance();
$media_instance = MediaHandling::getInstance();
$plugin = 'acf';
$get_acf_fields = $wpdb->get_results($wpdb->prepare("select post_content, post_name from {$wpdb->prefix}posts where post_type = %s and post_excerpt = %s", 'acf-field', $acf_wp_name ), ARRAY_A);
foreach($get_acf_fields as $keys => $value_type){
$get_type_field = unserialize($value_type['post_content']);
$field_type = $get_type_field['type'];
$key = $get_acf_fields[0]['post_name'];
// $return_format = $get_type_field['return_format'];
$return_format = isset($get_type_field['return_format']) ? $get_type_field['return_format'] : '';
if($field_type == 'text' || $field_type == 'textarea' || $field_type == 'number' || $field_type == 'email' || $field_type == 'url' || $field_type == 'password' || $field_type == 'range' || $field_type == 'radio' || $field_type == 'true_false' || $field_type == 'time_picker' || $field_type == 'color_picker' || $field_type == 'button_group' || $field_type == 'oembed' || $field_type == 'wysiwyg'){
$map_acf_wp_element = $acf_wp_name;
$map_acf_csv_element = $acf_csv_name;
}
if ($field_type == 'icon_picker') {
$acf_csv_element = explode(',',$acf_csv_element);
$icon_pic_type = !empty($acf_csv_element[0]) ? $acf_csv_element[0] : '';
$map_acf_wp_element = $acf_wp_name;
if($icon_pic_type == 'dashicons'){
$dash_icon_value = !empty($acf_csv_element[1]) ? $acf_csv_element[1] : '';
}
else if($icon_pic_type == 'media_library'){
$dash_media_value = !empty($acf_csv_element[1]) ? $acf_csv_element[1] : '';
$dash_icon_value = $media_instance->image_meta_table_entry($line_number ,'', $post_id ,'', $dash_media_value, $hash_key,'media_library',$importAs,'','','', '','','','');
}else if($icon_pic_type == 'url'){
$dash_icon_value = !empty($acf_csv_element[1]) ? $acf_csv_element[1] : '';
}
if(!empty($dash_icon_value)){
$serialized_value = array(
'type' => $icon_pic_type,
'value' => esc_sql($dash_icon_value)
);
$map_acf_csv_element = $serialized_value;
}
}
if($field_type == 'date_time_picker'){
$dt_var = trim($acf_csv_name);
$dateformat = "Y-m-d H:i:s";
$date_time_of = $helpers_instance->validate_datefield($dt_var,$acf_wp_name,$dateformat,$line_number);
if($mode == 'Insert'){
if($dt_var == 0 || $dt_var == '')
$map_acf_csv_element = $dt_var;
else{
$map_acf_csv_element = $date_time_of;
}
}
else{
if($dt_var == 0 || $dt_var == '')
$map_acf_csv_element = $dt_var;
else{
$map_acf_csv_element = $date_time_of;
}
}
$map_acf_wp_element = $acf_wp_name;
}
if($field_type == 'user'){
$maps_acf_csv_name = $acf_csv_name;
$map_acf_wp_element = $acf_wp_name;
$explo_acf_csv_name = explode(',',trim($acf_csv_name));
foreach($explo_acf_csv_name as $user){
if(!is_numeric($explo_acf_csv_name)){
$userid = $wpdb->get_col($wpdb->prepare("select ID from {$wpdb->prefix}users where user_login = %s",$user));
foreach($userid as $users){
$map_acf_csv_element[] = $users;
}
}
}
if(is_numeric($user)){
$map_acf_csv_element = $user;
}
$bidirectional =$get_type_field ['bidirectional'] ;
if($bidirectional == 1){
$bidirectional_target =$get_type_field ['bidirectional_target'] ;
foreach($bidirectional_target as $bidirectional) {
$field_name = $wpdb->get_results("SELECT post_excerpt FROM {$wpdb->prefix}posts WHERE post_name = '$bidirectional' AND post_status = 'publish'", ARRAY_A);
$field_value = $field_name[0]['post_excerpt'];
$get_relation = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}usermeta WHERE meta_key = '$field_value' AND user_id = '$map_acf_csv_element'", ARRAY_A);
$get_relation_field=$get_relation[0]['meta_value'];
$update_id = unserialize($get_relation_field);
$update_id[] = $post_id;
update_user_meta($map_acf_csv_element, $field_value, $update_id);
update_user_meta($map_acf_csv_element, '_' . $field_value, $bidirectional);
}
}
}
if($field_type == 'post_object'){
if($get_type_field['multiple'] == 0){
$maps_acf_csv_name = $acf_csv_name;
}else{
$explo_acf_csv_name = explode(',',trim($acf_csv_name));
$maps_acf_csv_name = array();
foreach($explo_acf_csv_name as $explo_csv_value){
$maps_acf_csv_name[] = trim($explo_csv_value);
}
}
$map_acf_csv_elements = $maps_acf_csv_name;
if($get_type_field['multiple'] == 0){
if (!is_numeric($map_acf_csv_elements ) ){
$map_acf_csv_elements = $wpdb->_real_escape($map_acf_csv_elements);
$id = $wpdb->get_results("SELECT ID FROM {$wpdb->prefix}posts WHERE post_title = '{$map_acf_csv_elements}' AND post_status = 'publish' order by ID DESC", ARRAY_A);
$map_acf_csv_element = isset($id[0]['ID']) ? $id[0]['ID'] : '';
}
else{
$map_acf_csv_element = $maps_acf_csv_name;
}
}
else{
$map_acf_csv_element = array();
foreach($map_acf_csv_elements as $csv_element){
$csv_element = $wpdb->_real_escape($csv_element);
$id = $wpdb->get_results("SELECT ID FROM {$wpdb->prefix}posts WHERE post_title = '$csv_element' AND post_status = 'publish'", ARRAY_A);
$map_acf_csv_element[] = isset($id[0]['ID']) ? $id[0]['ID'] : '';
}
}
$bidirectional =$get_type_field ['bidirectional'] ;
if($bidirectional == 1){
$bidirectional_target =$get_type_field ['bidirectional_target'] ;
foreach($bidirectional_target as $bidirectional) {
$field_name = $wpdb->get_results("SELECT post_excerpt FROM {$wpdb->prefix}posts WHERE post_name = '$bidirectional' AND post_status = 'publish'", ARRAY_A);
$field_value = $field_name[0]['post_excerpt'];
foreach($map_acf_csv_element as $id){
$get_relation = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = '$field_value' AND post_id = '$id'", ARRAY_A);
$get_object_field=$get_relation[0]['meta_value'];
$update_id = unserialize($get_object_field);
$update_id[] = $post_id;
update_post_meta($id, $field_value, $update_id);
update_post_meta($id, '_' . $field_value, $bidirectional);
}
}
}
$map_acf_wp_element = $acf_wp_name;
}
if($field_type == 'relationship' || $field_type == 'taxonomy'){
$relations = array();
$check_is_valid_term = null;
$get_relations = $acf_csv_name;
if(!empty($get_relations)){
$exploded_relations = explode(',', $get_relations);
foreach ($exploded_relations as $relVal) {
$relationTerm = trim($relVal);
//$relTerm[] = $relationTerm;
$tax_field_type = $get_type_field['field_type'];
if ($field_type == 'taxonomy') {
$taxonomy_name = $get_type_field['taxonomy'];
// $check_is_valid_term = $helpers_instance->get_requested_term_details($post_id, $relTerm, $taxonomy_name);
$check_is_valid_term = $helpers_instance->get_requested_term_details($post_id, array($relationTerm), $taxonomy_name);
//$relations[] = $check_is_valid_term;
if(isset($tax_field_type) && ($tax_field_type == 'select' || $tax_field_type == 'radio')){
$single_relations = $check_is_valid_term;
}
else{
$relations[] = $check_is_valid_term;
}
} else {
$reldata = strlen($relationTerm);
$checkrelid = intval($relationTerm);
$verifiedRelLen = strlen($checkrelid);
if ($reldata == $verifiedRelLen) {
$relations[] = $relationTerm;
} else {
$relVal = $wpdb->_real_escape($relVal);
$relation_id = $wpdb->get_results("SELECT ID FROM {$wpdb->prefix}posts WHERE post_title = '$relVal' AND post_status = 'publish'", ARRAY_A);
if (!empty($relation_id)) {
$relations[] = $relation_id[0]['ID'];
}
}
}
}
}
$bidirectional =$get_type_field ['bidirectional'] ;
if($bidirectional == 1){
$bidirectional_target =$get_type_field ['bidirectional_target'] ;
foreach($bidirectional_target as $bidirectional) {
$field_name = $wpdb->get_results("SELECT post_excerpt FROM {$wpdb->prefix}posts WHERE post_name = '$bidirectional' AND post_status = 'publish'", ARRAY_A);
$field_value = $field_name[0]['post_excerpt'];
foreach($relations as $relation_id) {
if ($field_type == 'taxonomy') {
$get_relation = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = '$field_value' AND term_id = '$relation_id'", ARRAY_A);
}
else{
$get_relation = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = '$field_value' AND post_id = '$relation_id'", ARRAY_A);
}
$get_relation_field=$get_relation[0]['meta_value'];
$update_id = unserialize($get_relation_field);
$update_id[] = $post_id;
if ($field_type == 'taxonomy') {
if(isset($tax_field_type) && ($tax_field_type == 'select' || $tax_field_type == 'radio')){
update_term_meta($relation_id, $field_value, $bidirectional_single);
}
else{
update_term_meta($relation_id, $field_value, $update_id);
}
update_term_meta($relation_id, '_' . $field_value, $bidirectional);
}
else{
if(isset($tax_field_type) && ($tax_field_type == 'select' || $tax_field_type == 'radio')){
update_post_meta($relation_id, $field_value, $bidirectional_single);
}
else{
update_post_meta($relation_id, $field_value, $update_id);
}
update_post_meta($relation_id, '_' . $field_value, $bidirectional);
}
if ($field_type == 'taxonomy') {
update_term_meta($relation_id, $field_value, $update_id);
update_term_meta($relation_id, '_' . $field_value, $bidirectional);
}
else{
update_post_meta($relation_id, $field_value, $update_id);
update_post_meta($relation_id, '_' . $field_value, $bidirectional);
}
}
}
}
if(isset($tax_field_type) && ($tax_field_type == 'select' || $tax_field_type == 'radio')){
$map_acf_csv_element = $single_relations;
}
else{
$map_acf_csv_element = $relations;
}
//$map_acf_csv_element = $relations;
$map_acf_wp_element = $acf_wp_name;
}
if($field_type == 'date_picker'){
$var = trim($acf_csv_name);
$dateformat = 'Ymd';
$date = str_replace('/', '-', "$var");
$date_of = $helpers_instance->validate_datefield($var,$acf_wp_name,$dateformat,$line_number);
if($mode == 'Insert'){
if($var == 0 || $var == '')
$map_acf_csv_element = $var;
else{
$map_acf_csv_element = $date_of;
}
}
else{
if($var == 0 || $var == '')
$map_acf_csv_element = $var;
else{
$map_acf_csv_element = $date_of;
}
}
$map_acf_wp_element = $acf_wp_name;
}
if($field_type == 'select'){
if($get_type_field['multiple'] == 0){
$map_acf_csv_element = $acf_csv_name;
}
$map_acf_wp_element = $acf_wp_name;
}
if($field_type == 'checkbox'){
$explode_acf_csv = explode(',',trim($acf_csv_name));
$explode_acf_csv_name = [];
foreach($explode_acf_csv as $explode_acf_csv_value){
if(!empty($explode_acf_csv_value)){
$explode_acf_csv_name[] = trim($explode_acf_csv_value);
}
}
$map_acf_csv_element = $explode_acf_csv_name;
$map_acf_wp_element = $acf_wp_name;
}
}
if ($importAs == 'Users') {
update_user_meta($post_id, $map_acf_wp_element, $map_acf_csv_element);
update_user_meta($post_id, '_' . $map_acf_wp_element, $key);
} else {
update_post_meta($post_id, $map_acf_wp_element, $map_acf_csv_element);
update_post_meta($post_id, '_' . $map_acf_wp_element, $key);
}
$listTaxonomy = get_taxonomies();
if (in_array($importAs, $listTaxonomy)) {
if($term_meta = 'yes'){
update_term_meta($post_id, $map_acf_wp_element, $map_acf_csv_element);
update_term_meta($post_id, '_' . $map_acf_wp_element, $key);
}else{
$option_name = $importAs . "_" . $post_id . "_" . $map_acf_wp_element;
$option_value = $map_acf_csv_element;
if (is_array($option_value)) {
$option_value = serialize($option_value);
}
update_option("$option_name", "$option_value");
}
}
}
}