Files
roi-theme/wp-content/plugins/wp-marketing-automations/rules/inputs/select.php
root a22573bf0b 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>
2025-11-03 21:04:30 -06:00

99 lines
2.8 KiB
PHP
Executable File

<?php
#[AllowDynamicProperties]
class bwfan_Input_Select {
public function __construct() {
// vars
$this->type = 'Select';
$this->defaults = array(
'multiple' => 0,
'allow_null' => 0,
'choices' => array(),
'default_value' => '',
'class' => '',
'null_text' => __( '- Select -', 'wp-marketing-automations' ),
'disabled' => false,
);
}
public function render( $field, $value = null ) {
$field = array_merge( $this->defaults, $field );
$field['value'] = $value;
$optgroup = false;
// determine if choices are grouped (2 levels of array)
if ( is_array( $field['choices'] ) ) {
foreach ( $field['choices'] as $v ) {
if ( is_array( $v ) ) {
$optgroup = true;
}
}
}
// value must be array
if ( ! is_array( $field['value'] ) ) {
// perhaps this is a default value with new lines in it?
if ( ! is_null( $field['value'] ) && strpos( $field['value'], "\n" ) !== false ) {
// found multiple lines, explode it
$field['value'] = explode( "\n", $field['value'] );
} else {
$field['value'] = array( $field['value'] );
}
}
// trim value
$field['value'] = array_map( function ( $value ) {
return ! is_null( $value ) ? trim( $value ) : $value;
}, $field['value'] );
$multiple = '';
if ( $field['multiple'] ) {
$multiple = ' multiple="multiple" size="5" ';
$field['name'] .= '[]';
}
$disabled = '';
if ( true === $field['disabled'] ) {
$disabled = 'disabled';
}
echo '<select ' . esc_attr( $disabled ) . ' id="' . esc_attr( $field['id'] ) . '" class="' . esc_attr( $field['class'] ) . '" name="' . $field['name'] . '" ' . $multiple . ' >'; //phpcs:ignore WordPress.Security.EscapeOutput
// null
if ( $field['allow_null'] ) {
echo '<option value="null"> ' . esc_attr( $field['null_text'] ) . ' </option>';
}
// loop through values and add them as options
if ( is_array( $field['choices'] ) ) {
foreach ( $field['choices'] as $key => $value ) {
if ( $optgroup ) {
// this select is grouped with optgroup
if ( '' !== $key ) {
echo '<optgroup label="' . esc_attr( $key ) . '">';
}
if ( is_array( $value ) ) {
foreach ( $value as $id => $label ) {
$selected = in_array( $id, $field['value'], true ) ? 'selected="selected"' : '';
echo '<option value="' . esc_attr( $id ) . '" ' . $selected . '>' . esc_html( $label ) . '</option>'; //phpcs:ignore WordPress.Security.EscapeOutput
}
}
if ( '' !== $key ) {
echo '</optgroup>';
}
} else {
$selected = in_array( $key, $field['value'], true ) ? 'selected="selected"' : '';
echo '<option value="' . esc_attr( $key ) . '" ' . $selected . '>' . esc_html( $value ) . '</option>'; //phpcs:ignore WordPress.Security.EscapeOutput
}
}
}
echo '</select>';
}
}