Files
roi-theme/wp-content/plugins/ajax-search-pro/backend/index_table.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

714 lines
44 KiB
PHP
Executable File

<?php
/* Prevent direct access */
use WPDRMS\ASP\Index\Manager;
use WPDRMS\ASP\Utils\Script;
use Doctrine\Inflector\Language;
defined('ABSPATH') or die("You can't access this file directly.");
$it_options = wd_asp()->o['asp_it_options'];
$_args = array();
foreach ($it_options as $_k => $_opt) {
$_args[str_replace('it_', '', $_k)] = $_opt;
}
$index_obj = new Manager($_args);
$pool_sizes = Manager::suggestPoolSizes();
if (ASP_DEMO) {
$_POST = null;
}
if ( !$index_obj->isEmpty() || ASP_DEMO ) {
$_COOKIE['_asp_first_index'] = 1;
}
$asp_cron_data = get_option("asp_it_cron", array(
"last_run" => "",
"result" => array()
));
?>
<?php if ( !wd_asp()->db->exists('index', true) ): ?>
<div id='wpdreams' class='asp-be wpdreams wrap'>
<div class="wpdreams-box">
<p class="errorMsg">
<?php echo __('One or more plugin tables are appear to be missing from the database.', 'ajax-search-pro'); ?>
<?php echo sprintf( __('Please check <a href="%s" target="_blank">this article</a> to resolve the issue.', 'ajax-search-pro'),
'https://wp-dreams.com/go/?to=kb-asp-missing-tables' ); ?>
</p>
<p class="errorMsg">
<?php echo __('Please be <strong>very careful</strong>, before making any changes to your database. Make sure to have a full database back-up, just in case!', 'ajax-search-pro'); ?>
</p>
<p>
<fieldset>
<legend><?php echo __('Copy this SQL code in your database editor tool to create them manually', 'ajax-search-pro'); ?></legend>
<textarea style="width:100%;height:480px;"><?php echo wd_asp()->db->create(); ?></textarea>
</fieldset>
</p>
</div>
</div>
<?php return; ?>
<?php endif; ?>
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__) . 'settings/assets/font-awesome/font-awesome.css?v='.ASP_CURR_VER; ?>" />
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__) . 'settings/assets/sidebar.css?v='.ASP_CURR_VER; ?>" />
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__) . 'settings/assets/jquery-tagging/tag-basic-style.css?v='.ASP_CURR_VER; ?>" />
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__) . 'settings/assets/index-table/index_table.css?v='.ASP_CURR_VER; ?>" />
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__) . 'settings/assets/index-table/synonyms.css?v='.ASP_CURR_VER; ?>" />
<div id='wpdreams' class='asp-be wpdreams wrap<?php echo isset($_COOKIE['asp-accessibility']) ? ' wd-accessible' : ''; ?>'>
<?php do_action('asp_admin_notices'); ?>
<!-- This forces custom Admin Notices location -->
<div style="display:none;"><h2 style="display: none;"></h2></div>
<!-- This forces custom Admin Notices location -->
<?php if ( wd_asp()->updates->needsUpdate() ) { wd_asp()->updates->printUpdateMessage(); } ?>
<div class="wpdreams-box" style="float:left;">
<?php ob_start(); ?>
<div tabid="1">
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_title", __('Index titles?', 'ajax-search-pro'),
$it_options['it_index_title']
); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_content", __('Index content?', 'ajax-search-pro'),
$it_options['it_index_content']
); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_excerpt", __('Index excerpt?', 'ajax-search-pro'),
$it_options['it_index_excerpt']
); ?>
</div>
<div class="item">
<?php
$o = new wpdreamsCustomPostTypes("it_post_types", __('Post types to index', 'ajax-search-pro'),
array(
"value"=> $it_options['it_post_types'],
"args"=> array(
"include" => array("attachment")
)
));
?>
</div>
<fieldset id="it_media_service">
<legend>
<?php echo __('Media Service - External File indexing feature (optional)', 'ajax-search-pro'); ?>
<span class="asp_legend_docs">
<a target="_blank" href="#"><span class="fa fa-book"></span>What is this?</a>
<a target="_blank" href="https://documentation.ajaxsearchpro.com/index-table/media-parser-subscription-feature"><span class="fa fa-book"></span>Documentation</a>
</span>
</legend>
<div class="item">
<?php new wd_MSLicenseActivator('', '', array()); ?>
<p class="descMsg">
<?php echo __('The <strong>Media Service</strong> is an external feature to handle very accurate file content indexing.', 'ajax-search-pro'); ?>
<?php echo sprintf( __('For more details, check the <a href="%s" target="_blank">addon page</a>.<br>There is a <strong>FREE</strong> version available as well.', 'ajax-search-pro'),
'https://ajaxsearchpro.com/media-service-subscription-addon/?ref=asp_backend' ); ?>
<?php echo sprintf( __('The documentation on how to activate, can be found <a href="%s" target="_blank">here</a>.', 'ajax-search-pro'),
'https://documentation.ajaxsearchpro.com/index-table/media-parser-subscription-feature' ); ?>
</p>
</div>
<div class="item">
<?php $o = new wpdreamsCustomSelect("it_media_service_send_file", "Media Service File Access Method",
array(
'selects' => array(
array("option" => esc_attr__('Send the file to the server (recommended)', 'ajax-search-pro'), "value" => 1),
array("option" => esc_attr__('Send only the URL to download the file', 'ajax-search-pro'), "value" => 0),
),
'value' => $it_options['it_media_service_send_file']
)
); ?>
</div>
</fieldset>
<fieldset id="it_file_indexing">
<legend><?php echo __('File indexing options', 'ajax-search-pro'); ?></legend>
<div class="item">
<?php $o = new wd_MimeTypeSelect("it_attachment_mime_types", __('Media mime types to index', 'ajax-search-pro'),
$it_options['it_attachment_mime_types']
); ?>
<p class="descMsg">
<?php echo __('<strong>Comma separated list</strong> of allowed mime types.', 'ajax-search-pro'); ?>
<?php echo sprintf( __('List of <a href="%s" target="_blank">default allowed mime types</a> in WordPress.', 'ajax-search-pro'),
'https://documentation.ajaxsearchpro.com/general-settings/search-in-attachments/mime-types-table' ); ?>
</p>
</div>
<div class="item">
<div class="descMsg">
<?php echo __('Please note, that reading useful content from media files via PHP is a <strong>very difficult task</strong>.', 'ajax-search-pro'); ?>
<?php echo __('The plugin uses external libraries as well as internal methods to get the best results, however it is still possible that some information might not be extracted properly.', 'ajax-search-pro'); ?>
</div>
</div>
<div class="item item-flex-nogrow item-flex-wrap item-conditional" wd-show-on="multi_attachment_mime_types_5:pdf">
<?php $o = new wpdreamsYesNo("it_index_pdf_content", __('Index PDF file contents?', 'ajax-search-pro'),
$it_options['it_index_pdf_content']
);
$o = new wpdreamsCustomSelect("it_index_pdf_method", __('method', 'ajax-search-pro'),
array(
'selects' => array(
array("option" => "Auto", "value" => "auto"),
array("option" => "Smalot parser (requires php5.3+)", "value" => "smalot"),
array("option" => "PDF2Txt", "value" => "pdf2txt")
),
'value' => $it_options['it_index_pdf_method']
)
);
?>
<div class="descMsg item-flex-grow item-flex-100">
<?php echo __('When set to \'Auto\', the plugin will try both methods if possible.', 'ajax-search-pro'); ?>
</div>
</div>
<div class="item" wd-show-on="multi_attachment_mime_types_7:text">
<?php $o = new wpdreamsYesNo("it_index_text_content", __('Index Text file contents?', 'ajax-search-pro'),
$it_options['it_index_text_content']
); ?>
</div>
<div class="item" wd-show-on="multi_attachment_mime_types_7:richtext">
<?php $o = new wpdreamsYesNo("it_index_richtext_content", __('Index RichText file contents?', 'ajax-search-pro'),
$it_options['it_index_richtext_content']
); ?>
</div>
<?php if( !class_exists('ZipArchive') ): ?>
<div class="errorMsg">NOTICE: The <a href="https://www.google.com/search?q=enable%20ZipArchive%20php" target="_blank">ZipArchive</a> module is not enabled on your server. The Office document parsers will not work without it!</div>
<?php endif; ?>
<?php if( !class_exists('DOMDocument') ): ?>
<div class="errorMsg">NOTICE: The <a href="https://www.google.com/search?q=enable%20DOMDocument%20php" target="_blank">DOMDocument</a> module is not enabled on your server. The Office document parsers will not work without it!</div>
<?php endif; ?>
<div class="item" wd-show-on="multi_attachment_mime_types_7:mso_word">
<?php $o = new wpdreamsYesNo("it_index_msword_content", __('Index Office Word document contents?', 'ajax-search-pro'),
$it_options['it_index_msword_content']
); ?>
</div>
<div class="item" wd-show-on="multi_attachment_mime_types_7:mso_excel">
<?php $o = new wpdreamsYesNo("it_index_msexcel_content", __('Index Office Excel document contents?', 'ajax-search-pro'),
$it_options['it_index_msexcel_content']
); ?>
</div>
<div class="item" wd-show-on="multi_attachment_mime_types_7:mso_powerpoint">
<?php $o = new wpdreamsYesNo("it_index_msppt_content", __('Index Office PowerPoint document contents?', 'ajax-search-pro'),
$it_options['it_index_msppt_content']
); ?>
</div>
<div id="wdo" class="wdo">
<div id="asp-it-attachment-directories"></div>
</div>
<div class="wd-hint">
<?php echo __('<p>These options are hidden unless the <strong>attachment</strong> custom post type is selected above.</p>', 'ajax-search-pro'); ?>
</div>
</fieldset>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_tags", __('Index post tags?', 'ajax-search-pro'),
$it_options['it_index_tags']
); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_categories", __('Index post categories?', 'ajax-search-pro'),
$it_options['it_index_categories']
); ?>
</div>
<div class="item">
<?php
$o = new wpdreamsTaxonomySelect("it_index_taxonomies", __('Index taxonomies', 'ajax-search-pro'), array(
"value" => $it_options['it_index_taxonomies'],
"type" => "include"
));
?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_permalinks", __('Index permalinks?', 'ajax-search-pro'),
$it_options['it_index_permalinks']
); ?>
</div>
<div class="item"><?php
$o = new wpdreamsCustomFields("it_index_customfields", __('Index custom fields', 'ajax-search-pro'),
array(
"value" => $it_options['it_index_customfields'],
"show_pods" => true
)
); ?>
</div>
<div class="item">
<?php $o = new wpdreamsText("it_post_statuses", __('Post statuses to index', 'ajax-search-pro'),
$it_options['it_post_statuses']
); ?>
<p class="descMsg">
<?php echo __('Comma separated list. WP Defaults: publish, future, draft, pending, private, trash, auto-draft', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item it_engine_index">
<?php $o = new wpdreamsYesNo("it_post_password_protected", __('Index password protected posts?', 'ajax-search-pro'), $it_options['it_post_password_protected']); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_author_name", __('Index post author name?', 'ajax-search-pro'),
$it_options['it_index_author_name']
); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_author_bio", __('Index post author bio (description)?', 'ajax-search-pro'),
$it_options['it_index_author_bio']
); ?>
</div>
</div>
<div tabid="2">
<div class="item<?php echo is_multisite() ? '' : ' hiddend' ?>"><?php
$o = new wpdreamsBlogselect("it_blog_ids", __('Blogs to index posts from', 'ajax-search-pro'),
$it_options['it_blog_ids']
); ?>
</div>
<div class="item item-flex-nogrow item-flex-wrap" id="it_inflections">
<?php
$o = new wpdreamsYesNo("it_inflections", __('Enable automated singularization/pluralization?', 'ajax-search-pro'),
$it_options['it_inflections']
);
?>
<div wd-enable-on="it_inflections:1">
<?php
$o = new wpdreamsCustomSelect("it_language", __('Main language', 'ajax-search-pro'),
array(
'selects' => array(
array("option" => "English", "value" => Language::ENGLISH),
array("option" => "French", "value" => Language::FRENCH),
array("option" => "Norwegian", "value" => Language::NORWEGIAN_BOKMAL),
array("option" => "Portuguese", "value" => Language::PORTUGUESE),
array("option" => "Spanish", "value" => Language::SPANISH),
array("option" => "Turkish", "value" => Language::TURKISH),
),
'value' => $it_options['it_language']
)
);
?>
</div>
<p class="descMsg item-flex-grow item-flex-100">
<?php echo __('Automatically singularize/pluralize all keywords for better matches via an Inflections library. Warning: this will increase the index size GREATLY.', 'ajax-search-pro'); ?>
</p>
<?php if ( defined('ICL_LANGUAGE_CODE') || function_exists('pll_default_language') ): ?>
<p class="descMsg item-flex-grow item-flex-100">
<?php echo __('The post language is automatically detected when using Polylang or WPML.', 'ajax-search-pro'); ?>
</p>
<?php endif; ?>
</div>
<div class="item">
<?php $o = new wpdreamsTextSmall("it_limit", __('Post limit per iteration', 'ajax-search-pro'),
$it_options['it_limit']
); ?>
<p class="descMsg"><?php echo __('Posts to index per ajax call. Reduce this number if the process fails. Default: 25', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_use_stopwords", __('Enable stop-words?', 'ajax-search-pro'),
$it_options['it_use_stopwords']
); ?>
<p class="descMsg"><?php echo __('Words from the list below (common words, stop words) will be excluded if enabled.', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wd_TextareaExpandable("it_stopwords", __('Stop words list', 'ajax-search-pro'),
$it_options['it_stopwords']
); ?>
<p class="descMsg"><?php echo __('<strong>Comma</strong> separated list of stop words.', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wpdreamsTextSmall("it_min_word_length", __('Min. word length', 'ajax-search-pro'),
$it_options['it_min_word_length']
); ?>
<p class="descMsg"><?php echo __('Words below this length will be ignored. Default: 2', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_extract_iframes", __('Extract IFRAME contents?', 'ajax-search-pro'),
$it_options['it_extract_iframes']
); ?>
<p class="descMsg"><?php echo __('Will try parsing IFRAME sources and extracting them. This <strong>may not work</strong> in some cases.', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_extract_gutenberg_blocks", __('Execute Gutenberg Editor Blocks?', 'ajax-search-pro'),
$it_options['it_extract_gutenberg_blocks']
); ?>
<p class="descMsg"><?php echo __('Will execute and parse contents of Gutenberg Editor Blocks.', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_extract_shortcodes", __('Execute shortcodes?', 'ajax-search-pro'),
$it_options['it_extract_shortcodes']
); ?>
<p class="descMsg"><?php echo __('Will execute shortcodes in content as well. Great if you have lots of content generated by shortcodes.', 'ajax-search-pro'); ?></p>
</div>
<div class="item">
<?php $o = new wd_TextareaExpandable("it_exclude_shortcodes", __('Remove these shortcodes', 'ajax-search-pro'),
$it_options['it_exclude_shortcodes']
); ?>
<p class="descMsg">
<?php echo __('<strong>Comma</strong> separated list of shortcodes to remove. Use this to exclude shortcodes, which does not reflect your content appropriately.', 'ajax-search-pro'); ?>
</p>
</div>
</div>
<div tabid="4">
<fieldset>
<legend><?php echo __('Pool sizes', 'ajax-search-pro'); ?></legend>
<div class="errorMsg">
<?php echo __('The pool size greatly affects the search performance in bigger databases (50k+ keywords). While high pool values may give more accurate results, lower values cause much better performance.', 'ajax-search-pro'); ?>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_pool_size_auto", __('Let the plugin determine the pool size values?', 'ajax-search-pro'),
$it_options['it_pool_size_auto']
); ?>
<p class="descMsg">
<?php echo __('When enabled (default), the plugin will adjust these values depending on the index table size and other factors.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item it_pool_size">
<?php $o = new wpdreamsTextSmall("it_pool_size_one", __("Pool size for keywords of one character long (recommended:", 'ajax-search-pro') . "<strong>".$pool_sizes['one']."</strong>)",
$it_options['it_pool_size_one']
); ?>
<p class="descMsg">
<?php echo __('The maximum number in a sub-set of results pool for a search phrase (or part of the phrase) that is one character long.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item it_pool_size">
<?php $o = new wpdreamsTextSmall("it_pool_size_two", __("Pool size for keywords of two characters long (recommended:", 'ajax-search-pro') . " <strong>".$pool_sizes['two']."</strong>)",
$it_options['it_pool_size_two']
); ?>
<p class="descMsg">
<?php echo __('The maximum number in a sub-set of results pool for a search phrase (or part of the phrase) that is one character long.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item it_pool_size">
<?php $o = new wpdreamsTextSmall("it_pool_size_three", __("Pool size for keywords of three characters long (recommended:", 'ajax-search-pro') . " <strong>".$pool_sizes['three']."</strong>)",
$it_options['it_pool_size_three']
); ?>
<p class="descMsg">
<?php echo __('The maximum number in a sub-set of results pool for a search phrase (or part of the phrase) that is one character long.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item it_pool_size">
<?php $o = new wpdreamsTextSmall("it_pool_size_rest", __("Pool size for keywords of four and more characters long (recommended:", 'ajax-search-pro') . " <strong>".$pool_sizes['rest']."</strong>)",
$it_options['it_pool_size_rest']
); ?>
<p class="descMsg">
<?php echo __('The maximum number in a sub-set of results pool for a search phrase (or part of the phrase) that is one character long.', 'ajax-search-pro'); ?>
</p>
</div>
</fieldset>
</div>
<div tabid="3">
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_on_save", __("Index new posts upon creation?", 'ajax-search-pro'),
$it_options['it_index_on_save']
); ?>
<p class="descMsg">
<?php echo __('When turned OFF, the posts will still be indexed only upon updating, or when the cron-job runs (if enabled) or when the index table is extended manually.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_index_on_update_post_meta", __("Refresh the index, whenever post meta (custom fields) are added or updated?", 'ajax-search-pro'),
$it_options['it_index_on_update_post_meta']
); ?>
<p class="errorMsg">
<strong><?php echo __('CAUTION:', 'ajax-search-pro'); ?></strong>
<?php echo __('Under normal cases this option should not be used and may cause major slowdown when saving posts.', 'ajax-search-pro');
?>
</p>
<p class="descMsg">
<?php echo __('(Default: OFF) May help when posts are imported and if you notice missing results for metadata keywords.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item">
<?php $o = new wpdreamsYesNo("it_cron_enable", __("Use wp_cron() to extend the index table automatically?", 'ajax-search-pro'),
$it_options['it_cron_enable']
); ?>
<p class="descMsg">
<?php echo __('Will register a cron job with wp_cron() and run it periodically.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item">
<?php $o = new wpdreamsCustomSelect("it_cron_period", "Period",
array(
'selects' => array(
array("option" => esc_attr__('Every 2 minutes', 'ajax-search-pro'), "value" => "asp_cr_two_minutes"),
array("option" => esc_attr__('Every 3 minutes', 'ajax-search-pro'), "value" => "asp_cr_three_minutes"),
array("option" => esc_attr__('Every 5 minutes', 'ajax-search-pro'), "value" => "asp_cr_five_minutes"),
array("option" => esc_attr__('Every 15 minutes', 'ajax-search-pro'), "value" => "asp_cr_fifteen_minutes"),
array("option" => esc_attr__('Every 30 minutes', 'ajax-search-pro'), "value" => "asp_cr_thirty_minutes"),
array("option" => esc_attr__('Hourly', 'ajax-search-pro'), "value" => "hourly"),
array("option" => esc_attr__('Twice Daily', 'ajax-search-pro'), "value" => "twicedaily"),
array("option" => esc_attr__('Daily', 'ajax-search-pro'), "value" => "daily")
),
'value' => $it_options['it_cron_period']
)
); ?>
<p class="descMsg">
<?php echo __('The periodicity of execution. wp_cron() only accepts these values.', 'ajax-search-pro'); ?>
</p>
</div>
<div class="item">
<fieldset class="asp-last-execution-info">
<legend><?php echo __('Last execution info', 'ajax-search-pro'); ?></legend>
<ul style="float:right;text-align:left;width:50%;">
<li>
<b><?php echo __('Last exeuction time:', 'ajax-search-pro'); ?> </b><?php echo $asp_cron_data['last_run'] != "" ? date("H:i:s, F j. Y", $asp_cron_data['last_run']) : "No information."; ?>
</li>
<li>
<b><?php echo __('Current system time:', 'ajax-search-pro'); ?> </b><?php echo date("H:i:s, F j. Y", time()); ?></li>
<li>
<b><?php echo __('Posts indexed:', 'ajax-search-pro'); ?> </b><?php echo w_isset_def($asp_cron_data['result']['postsIndexedNow'], "No information."); ?>
</li>
<li><b><?php echo __('Keywords found:', 'ajax-search-pro'); ?> </b><?php echo w_isset_def($asp_cron_data['result']['keywordsFound'], "No information."); ?>
</li>
</ul>
</fieldset>
</div>
</div>
<div tabid="5">
<?php include(ASP_PATH . "backend/tabs/index_table/synonyms.php"); ?>
</div>
<?php $_r = ob_get_clean(); ?>
<?php
$updated = false;
if (isset($_POST) && isset($_POST['submit_asp_index_options']) && (wpdreamsType::getErrorNum() == 0)) {
$values = array(
'it_index_title' => $_POST['it_index_title'],
'it_index_content' => $_POST['it_index_content'],
'it_index_excerpt' => $_POST['it_index_excerpt'],
'it_post_types' => $_POST['it_post_types'],
'it_index_tags' => $_POST['it_index_tags'],
'it_index_categories' => $_POST['it_index_categories'],
'it_index_taxonomies' => $_POST['it_index_taxonomies'],
'it_attachment_mime_types' => $_POST['it_attachment_mime_types'],
'options' => array(
'attachment_exclude_directories' => $_POST['attachment_exclude_directories'],
'attachment_include_directories' => $_POST['attachment_include_directories'],
),
'it_index_pdf_content' => $_POST['it_index_pdf_content'],
'it_index_pdf_method' => $_POST['it_index_pdf_method'],
'it_index_text_content' => $_POST['it_index_text_content'],
'it_index_richtext_content' => $_POST['it_index_richtext_content'],
'it_index_msword_content' => $_POST['it_index_msword_content'],
'it_index_msexcel_content' => $_POST['it_index_msexcel_content'],
'it_index_msppt_content' => $_POST['it_index_msppt_content'],
'it_media_service_send_file' => $_POST['it_media_service_send_file'],
'it_index_customfields' => $_POST['it_index_customfields'],
'it_post_statuses' => $_POST['it_post_statuses'],
'it_post_password_protected' => $_POST['it_post_password_protected'],
'it_index_author_name' => $_POST['it_index_author_name'],
'it_index_author_bio' => $_POST['it_index_author_bio'],
'it_blog_ids' => $_POST['it_blog_ids'],
'it_inflections' => $_POST['it_inflections'],
'it_language' => $_POST['it_language'],
'it_limit' => $_POST['it_limit'],
'it_use_stopwords' => $_POST['it_use_stopwords'],
'it_stopwords' => $_POST['it_stopwords'],
'it_min_word_length' => $_POST['it_min_word_length'],
'it_extract_iframes' => $_POST['it_extract_iframes'],
'it_extract_gutenberg_blocks' => $_POST['it_extract_gutenberg_blocks'],
'it_extract_shortcodes' => $_POST['it_extract_shortcodes'],
'it_exclude_shortcodes' => $_POST['it_exclude_shortcodes'],
'it_index_on_save' => $_POST['it_index_on_save'],
'it_index_on_update_post_meta' => $_POST['it_index_on_update_post_meta'],
'it_cron_enable' => $_POST['it_cron_enable'],
'it_cron_period' => $_POST['it_cron_period'],
'it_pool_size_auto' => $_POST['it_pool_size_auto'],
'it_pool_size_one' => $_POST['it_pool_size_one'],
'it_pool_size_two' => $_POST['it_pool_size_two'],
'it_pool_size_three' => $_POST['it_pool_size_three'],
'it_pool_size_rest' => $_POST['it_pool_size_rest'],
'it_synonyms_as_keywords' => $_POST['it_synonyms_as_keywords']
);
update_option('asp_it_options', $values);
wp_clear_scheduled_hook('asp_cron_it_extend');
asp_parse_options();
$updated = true;
update_option("asp_recreate_index", 1);
}
?>
<div class='wpdreams-slider'>
<?php if ($updated): ?>
<div class='errorMsg asp-notice-ri'>
<?php echo __('The options have changed, don\'t forget to re-create the index table with the <b>Create new index</b> button!', 'ajax-search-pro'); ?>
</div>
<?php endif; ?>
<?php if (ASP_DEMO): ?>
<p class="infoMsg">DEMO MODE ENABLED - Please note, that these options are read-only on the demo</p>
<?php endif; ?>
<form name='asp_indextable_settings' id='asp_indextable_settings' class="asp_indextable_settings"
method='post'>
<fieldset>
<legend>
<?php echo __('Index Table Operations', 'ajax-search-pro'); ?>
</legend>
<div id="index_buttons" style="margin: 0 0 15px 0;">
<input type="button" name="asp_index_new" id="asp_index_new" class="submit wd_button_green"
index_action='new' index_msg='<?php echo esc_attr__('Do you want to generate a new index table?', 'ajax-search-pro'); ?>'
value="<?php echo esc_attr__('Create new index', 'ajax-search-pro'); ?>">
<input type="button" name="asp_index_extend" id="asp_index_extend"
class="submit wd_button_blue"
index_action='extend' index_msg='<?php echo esc_attr__('Do you want to extend the index table?', 'ajax-search-pro'); ?>'
value="<?php echo esc_attr__('Continue existing index', 'ajax-search-pro'); ?>">
<input type="button" name="asp_index_delete" id="asp_index_delete" class="submit"
index_action='delete' index_msg='<?php echo esc_attr__('Do you really want to empty the index table?', 'ajax-search-pro'); ?>'
value="<?php echo esc_attr__('Delete the index', 'ajax-search-pro'); ?>">
<span id="it_timer"></span>
</div>
<div class="wd_progress_text hiddend"><?php echo __('Initializing, please wait. This might take a while.', 'ajax-search-pro'); ?></div>
<div class="wd_progress wd_progress_75 hiddend"><span style="width:0%;"></span></div>
<span class="wd_progress_stop hiddend"><?php echo __('Stop', 'ajax-search-pro'); ?></span>
<div id='asp_i_success' class="infoMsg hiddend"><?php echo __('100% - Index table successfully generated!', 'ajax-search-pro'); ?></div>
<div id='asp_i_error' class="errorMsg hiddend"><?php echo __('Something went wrong :(', 'ajax-search-pro'); ?></div>
<textarea id="asp_i_error_cont" class="hiddend"></textarea>
<p class="descMsg">
<?php echo sprintf( __('To read more about the index table, please read the <a href="%s">documentation chapter about Index table</a> usage.', 'ajax-search-pro'),
'https://documentation.ajaxsearchpro.com/index-table' ); ?>
</p>
<?php if (is_multisite()): ?>
<p class="descMsg" style="color:#666; ">
<?php echo __('Total keywords:', 'ajax-search-pro'); ?> <b
id="keywords_counter">0</b>
</p>
<?php else: ?>
<div class="descMsg index_stats_container" style="color:#666; ">
<div class="index_stats hiddend">
<?php echo __('<b>Stats</b> (reloads periodically)', 'ajax-search-pro'); ?> |
<?php echo __('Items Indexed:', 'ajax-search-pro'); ?> <b id="indexed_counter">0</b>
&nbsp;|&nbsp;<?php echo __('Items not indexed:', 'ajax-search-pro'); ?> <b
id="not_indexed_counter">0</b>
&nbsp;|&nbsp;<?php echo __('Total keywords:', 'ajax-search-pro'); ?> <b
id="keywords_counter">0</b>
</div>
<div class="index_stats_loader hiddend"><?php echo __('Loading stats', 'ajax-search-pro'); ?>&nbsp;&nbsp;<span class="loading-small"></span></div>
</div>
<p id='index_db_other_data' style="display:none !important;"></p>
<?php endif; ?>
<div id="asp_i_dontclose" class="hiddend">Please do not close this browser tab until the indexing is finished!</div>
</fieldset>
<fieldset id='asp_indextable_options'>
<div id="asp_it_disable" class="hiddend"></div>
<legend>
<?php echo __('Index Table options', 'ajax-search-pro'); ?>
</legend>
<?php if ($updated): ?>
<div class='infoMsg'><?php echo __('Index table options successfuly updated!', 'ajax-search-pro'); ?></div><?php endif; ?>
<ul id="tabs" class='tabs'>
<li><a tabid="1" class='current general'><?php echo __('General', 'ajax-search-pro'); ?></a></li>
<li><a tabid="2" class='advanced'><?php echo __('Advanced', 'ajax-search-pro'); ?></a></li>
<li><a tabid="5" class='advanced'><?php echo __('Synonyms', 'ajax-search-pro'); ?></a></li>
<li><a tabid="3" class='advanced'><?php echo __('Indexing & Cron', 'ajax-search-pro'); ?></a></li>
<li><a tabid="4" class='advanced'><?php echo __('Performance & Accuracy', 'ajax-search-pro'); ?></a></li>
</ul>
<div class='tabscontent'>
<?php print $_r; ?>
</div>
<input type="hidden" id="asp_it_request_nonce" value="<?php echo wp_create_nonce( 'asp_it_request_nonce' ); ?>">
<input type='hidden' name='asp_index_table_page' value='1'/>
<div class="item">
<input name="submit_asp_index_options" type="submit" value="<?php echo esc_attr__('Save options', 'ajax-search-pro'); ?>"/>
</div>
</fieldset>
</form>
</div>
</div>
<?php include(ASP_PATH . "backend/sidebar.php"); ?>
<div class="clear"></div>
</div>
<div class="hiddend">
<div id="it_first_modal">
<p><?php echo __("The index table had been created, so don't forget to enable it on the search instances, where you need it.", 'ajax-search-pro'); ?></p>
<p>
<?php echo __("If you don't know how to do that, these documentations will help (links open in new tab):", 'ajax-search-pro'); ?>
<ul>
<li><?php echo __("Enabling for", 'ajax-search-pro'); ?>&nbsp;
<a href="https://documentation.ajaxsearchpro.com/index-table/enabling-index-table-engine" target="_blank">
<?php echo __("Custom Post Types", 'ajax-search-pro'); ?>
</a>
</li>
<li><?php echo __("Enabling for", 'ajax-search-pro'); ?>&nbsp;
<a href="https://documentation.ajaxsearchpro.com/general-settings/search-in-attachment-contents-pdf-word-excel-etc..#step-2-search-instance-configuration" target="_blank">
<?php echo __("Attachments", 'ajax-search-pro'); ?>
</a>
</li>
</ul>
</p>
</div>
<div id="it_media_service_modal">
<p><?php echo __("It looks like you are planning on indexing media file contents.", 'ajax-search-pro'); ?></p>
<p><?php echo __("There is a <strong>Media Service</strong> feature to handle more accurate file indexing, and there is a <strong>FREE</strong> version available as well! (no credit card required!)", 'ajax-search-pro'); ?></p>
<p><?php echo __("Click", 'ajax-search-pro'); ?>&nbsp;
<a href="https://ajaxsearchpro.com/media-service-subscription-addon/?ref=asp_backend_popup" id="asp_media_service_link" target="_blank"><?php echo __("this link", 'ajax-search-pro'); ?></a>&nbsp;<?php echo __("or the blue button below to find out more.", 'ajax-search-pro'); ?>&nbsp;</p>
</p>
</div>
</div>
<?php
$media_query = ASP_DEBUG == 1 ? asp_gen_rnd_str() : get_site_option("asp_media_query", "defn");
wp_enqueue_script('jquery');
wp_enqueue_script('asp-backend-synonyms', plugin_dir_url(__FILE__) . 'settings/assets/index-table/synonyms.js', array(
'jquery'
), $media_query, true);
wp_localize_script('asp-backend-synonyms', 'ASP_SYN_MSG', array(
"gen_ms1" => __('Success:', 'ajax-search-pro'),
"gen_ms2" => __('items were imported!', 'ajax-search-pro'),
"gen_er1" => __('Something went wrong, please try again later.', 'ajax-search-pro'),
"gen_er2" => __('There are no synonyms in the database to export.', 'ajax-search-pro'),
"gen_er3" => __('The file is empty or invalid. Please make sure to upload and choose the correct one.', 'ajax-search-pro'),
"gen_er4" => __('Nothing was imported. The items in this file are already in the database.', 'ajax-search-pro'),
"edt_er1" => __('Something went wrong, please check your connection, and try again.', 'ajax-search-pro'),
"edt_er2" => __('This keyword already exists in the database! (use the search above if you look to edit it)', 'ajax-search-pro'),
"edt_er3" => __('The keyword was not deleted, please try refreshing this page!', 'ajax-search-pro'),
"edt_er4" => __('The keyword field is empty, please enter a keyword!', 'ajax-search-pro'),
"edt_er5" => __('The synonyms field is missing, please enter some synonyms!', 'ajax-search-pro'),
"res_ms1" => __('Are you sure you want to delete this keyword?', 'ajax-search-pro'),
"del_all" => __('Are you sure you want to delete all of the synonyms?', 'ajax-search-pro'),
"mod_ms1" => __('Export Synonyms', 'ajax-search-pro'),
"mod_ms2" => __('Import Synonyms', 'ajax-search-pro'),
"mod_ms3" => __('Close', 'ajax-search-pro')
));
wp_enqueue_script('asp-backend-index-table', plugin_dir_url(__FILE__) . 'settings/assets/index_table.js', array(
'jquery', 'wpdreams-tabs'
), $media_query, true);
Script::objectToInlineScript('asp-backend-index-table', 'ASP_IT', array(
"current_blog_id" => array(get_current_blog_id()),
"first_index" => $index_obj->isEmpty() && !isset($_COOKIE['_asp_first_index']) ? 1 : 0
));
wp_localize_script('asp-backend-index-table', 'ASP_IT_MSG', array(
"mod_ms1" => __('Okay!', 'ajax-search-pro'),
"mod_ms2" => __('Yes, take me there!', 'ajax-search-pro'),
"mod_ms3" => __('Maybe later', 'ajax-search-pro'),
"mod_h1" => __('Congratulations, but wait!', 'ajax-search-pro'),
"mod_h2" => __('Did you know?', 'ajax-search-pro'),
"msg_pro" => __('Progress:', 'ajax-search-pro'),
"msg_kwf" => __('Keywords found so far:', 'ajax-search-pro'),
"msg_blo" => __('Processing blog no.', 'ajax-search-pro'),
"msg_skw" => __('Success. <strong>%s</strong> new keywords were added to the database.', 'ajax-search-pro'),
"msg_emp" => __('Success. The index table was emptied.', 'ajax-search-pro'),
"msg_er1" => __('Something went wrong. Here is the error message returned:', 'ajax-search-pro'),
"msg_er2" => __('Timeout error. Try lowering the <strong>Post limit per iteration</strong> option below.', 'ajax-search-pro'),
"msg_sta" => __('Status:', 'ajax-search-pro'),
"msg_cod" => __('Code:', 'ajax-search-pro'),
"msg_ini" => __('Initializing, please wait.', 'ajax-search-pro')
));
wp_enqueue_script('asp-backend-jquery-tag', plugin_dir_url(__FILE__) . 'settings/assets/jquery-tagging/tagging.min.js', array(
'jquery'
), $media_query, true);
$metadata = require_once ASP_PATH . 'build/js/index-table.asset.php';
wp_enqueue_script(
'wpd-asp-index-table',
ASP_URL_NP . 'build/js/index-table.js',
$metadata['dependencies'],
$metadata['version'],
array( 'in_footer' =>true ),
);