Files
2026-04-28 15:13:50 +02:00

264 lines
9.4 KiB
PHP

<?php
/**
* WPPFM Product Feed Form Control Class.
*
* @package WP Product Feed Manager/User Interface/Classes
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'WPPFM_Feed_Form_Control' ) ) :
/**
* WPPFM Feed Form Control Class.
*/
class WPPFM_Feed_Form_Control {
/**
* Renders a source selector.
*/
public static function source_selector() {
$data_class = new WPPFM_Data();
$sources = $data_class->get_sources();
if ( ! empty( $sources ) ) {
echo '<select id="wppfm-sources">
<option value="0">' . esc_html__( 'Select your product source', 'wp-product-feed-manager' ) . '</option>';
if ( count( $sources ) > 1 ) {
foreach ( $sources as $source ) {
echo '<option value="' . esc_attr( $source['source_id'] ) . '">' . esc_html( $source['name'] ) . '</option>';
}
} else {
echo '<option value="' . esc_attr( $sources[0]['source_id'] ) . '" selected>' . esc_html( $sources[0]['name'] ) . '</option>';
}
echo '</select>';
}
}
/**
* Renders a channel selector.
*/
public static function channel_selector() {
$data_class = new WPPFM_Data();
$channels = $data_class->get_channels();
if ( ! empty( $channels ) ) {
echo '<div id="selected-merchant"></div>
<select class="wppfm-main-input-selector" id="wppfm-merchants-selector" style="display:initial;">
<option value="0">' . esc_html__( '-- Select your merchant --', 'wp-product-feed-manager' ) . '</option>';
foreach ( $channels as $channel ) {
echo '<option value="' . esc_attr( $channel['channel_id'] ) . '">' . esc_html( $channel['name'] ) . '</option>';
}
echo '</select>';
} else {
echo esc_html__( 'You first need to install a channel before you can add a feed. Open the Manage Channels page and install at least one channel.', 'wp-product-feed-manager' );
}
}
/**
* Renders a feed type selector.
*
* @since 2.38.0.
*/
public static function feed_type_selector( $preselected ) {
$data_class = new WPPFM_Data();
$feed_types = $data_class->get_google_support_feed_types();
if ( ! empty( $feed_types ) ) {
echo '<div id="wppfm-selected-google-feed-type"></div>
<select class="wppfm-main-input-selector wppfm-feed-types-selector" id="wppfm-feed-types-selector">
<option value="' . esc_attr( $feed_types[0]['feed_type_id'] ) . '">' . esc_html( $feed_types[0]['name'] ) . '</option>
<optgroup label="Supplemental Feeds">';
foreach ( $feed_types as $feed_type ) {
$disabled = $feed_type['disabled'] ? ' disabled="disabled"' : '';
if ( 'supplemental' === $feed_type['group'] ) {
if ( $feed_type['feed_type_id'] === $preselected ) {
echo '<option value="' . esc_attr( $feed_type['feed_type_id'] ) . '" selected>' . esc_html( $feed_type['name'] ) . '</option>';
} else {
echo '<option value="' . esc_attr( $feed_type['feed_type_id'] ) . '"' . esc_attr( $disabled ) . '>' . esc_html( $feed_type['name'] ) . '</option>';
}
}
}
echo '</optgroup></select>';
}
}
/**
* Renders a feed business type selector.
*/
public static function feed_business_type_selector() {
$business_types = array( 'Education', 'Flights', 'Hotels and rentals', 'Jobs', 'Local deals', 'Real estate', 'Travel', 'Custom' );
echo '<select class="wppfm-main-input-selector wppfm-feed-business-types-selector" id="wppfm-feed-drm-types-selector">
<option value="0">' . esc_html__( '-- Select your business type --', 'wp-product-feed-manager' ) . '</option>';
foreach ( $business_types as $business_type ) {
echo '<option value="' . esc_attr( $business_type ) . '">' . esc_html( $business_type ) . '</option>';
}
echo '</select>';
}
/**
* Renders a country selector.
*/
public static function country_selector() {
$data_class = new WPPFM_Data();
$countries = $data_class->get_countries();
if ( ! empty( $countries ) ) {
echo '<select class="wppfm-main-input-selector wppfm-countries-selector" id="wppfm-countries-selector" disabled>
<option value="0">' . esc_html__( '-- Select your target country --', 'wp-product-feed-manager' ) . '</option>';
foreach ( $countries as $country ) {
echo '<option value="' . esc_attr( $country['name_short'] ) . '">' . esc_html( $country['name'] ) . '</option>';
}
echo '</select>';
}
}
/**
* Renders a schedule selector.
*/
public static function schedule_selector() {
echo '<span id="wppfm-update-day-wrapper" style="display:initial">' . esc_html__( 'Every', 'wp-product-feed-manager' ) . '
<input type="text" class="small-text" name="days-interval" id="days-interval" value="1" style="width:30px;" /> ' . esc_html__( 'day(s) at', 'wp-product-feed-manager' ) . '</span>
<span id="wppfm-update-every-day-wrapper" style="display:none">' . esc_html__( 'Every day at', 'wp-product-feed-manager' ) . '</span>
<select id="update-schedule-hours" style="width:52px;height:35px;">' . wp_kses( self::hour_list(), array( 'option' => array( 'value' => array() ) ) ) . '</select>
<select id="update-schedule-minutes" style="width:52px;height:35px;">' . wp_kses( self::minutes_list(), array( 'option' => array( 'value' => array() ) ) ) . '</select>
<span id="wppfm-update-frequency-wrapper" style="display:initial">
' . esc_html__( 'for', 'wp-product-feed-manager' ) . '
<select id="update-schedule-frequency" style="width:50px;height:35px;">' . wp_kses( self::frequency_list(), array( 'option' => array( 'value' => array() ) ) ) . '</select>
' . esc_html__( 'time(s) a day', 'wp-product-feed-manager' ) . '
</span>';
}
/**
* Renders an aggregation selector.
*/
public static function aggregation_selector() {
echo '<input type="checkbox" name="aggregator-selector" id="aggregator">';
}
/**
* Renders a product variation selector.
*/
public static function product_variation_selector() {
echo '<input type="checkbox" name="product-variations-selector" id="variations">';
}
/**
* Renders a Google feed title selector.
*/
public static function google_feed_title_selector() {
echo '<input type="text" name="google-feed-title-selector" id="google-feed-title-selector" placeholder="uses File Name if left empty..." />';
}
/**
* Renders a Google feed description selector.
*/
public static function google_feed_description_selector() {
echo '<input type="text" name="google-feed-description-selector" id="google-feed-description-selector" placeholder="uses a standard description if left empty..." />';
}
/**
* Renders a Google Analytics selector.
*/
public static function google_analytics_selector() {
echo '<input type="checkbox" name="wppfm-google-analytics-selector" id="wppfm-google-analytics">';
}
/**
* Renders the performance prioritizing selector and inline help link.
*
* @since 3.21.0
*/
public static function performance_enabled_selector() {
echo '<input type="checkbox" name="wppfm-performance-enabled" id="wppfm-performance-enabled" value="1" />
( <a href="' . esc_url( 'https://www.wpmarketingrobot.com/help-item/using-product-feed-manager/using-performance-prioritizing-in-product-feed-manager/' ) . '" target="_blank" rel="noopener noreferrer">' .
esc_html__( 'read this article on how to use performance prioritizing', 'wp-product-feed-manager' ) . '</a> )';
}
/**
* Creates the HTML code with a list of 24 hours to be used in an hour selector.
*
* @return string option list with 24 hours in options.
*/
private static function hour_list() {
$html = self::get_time_list(); // First ten hours.
for ( $i = 10; $i < 24; $i ++ ) {
$html .= '<option value="' . $i . '">' . $i . '</option>';
}
return $html;
}
/**
* Creates the HTML code with a list of 60 minutes to be used in a minute selector.
*
* @return string option list with 60 minutes in options.
*/
private static function minutes_list() {
$html = self::get_time_list(); // First ten minutes.
for ( $i = 10; $i < MINUTE_IN_SECONDS; $i ++ ) {
$html .= '<option value="' . $i . '">' . $i . '</option>';
}
return $html;
}
/**
* Creates the HTML code for a list with feed update frequencies, to be used in a frequency selector.
*
* @return string with specific frequency options.
*/
private static function frequency_list() {
$html_code = '<option value="1">1</option>';
$html_code .= '<option value="2">2</option>';
$html_code .= '<option value="4">4</option>';
$html_code .= '<option value="6">6</option>';
$html_code .= '<option value="8">8</option>';
$html_code .= '<option value="12">12</option>';
$html_code .= '<option value="24">24</option>';
return $html_code;
}
/**
* Creates the HTML code with a list of 00 to 09 option selectors.
*
* @return string with the option selectors.
*/
private static function get_time_list() {
$html_code = '<option value="00">00</option>';
$html_code .= '<option value="01">01</option>';
$html_code .= '<option value="02">02</option>';
$html_code .= '<option value="03">03</option>';
$html_code .= '<option value="04">04</option>';
$html_code .= '<option value="05">05</option>';
$html_code .= '<option value="06">06</option>';
$html_code .= '<option value="07">07</option>';
$html_code .= '<option value="08">08</option>';
$html_code .= '<option value="09">09</option>';
return $html_code;
}
}
// end of WPPFM_Feed_Form_Control class
endif;