Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/litespee.../src
File: esi.cls.php
}
[500] Fix | Delete
[501] Fix | Delete
// Append hash
[502] Fix | Delete
$appended_params['_hash'] = $this->_gen_esi_md5($appended_params);
[503] Fix | Delete
[504] Fix | Delete
/**
[505] Fix | Delete
* Escape potential chars
[506] Fix | Delete
*
[507] Fix | Delete
* @since 2.9.4
[508] Fix | Delete
*/
[509] Fix | Delete
$appended_params = array_map('urlencode', $appended_params);
[510] Fix | Delete
[511] Fix | Delete
// Generate ESI URL
[512] Fix | Delete
$url = add_query_arg($appended_params, trailingslashit(wp_make_link_relative(home_url())));
[513] Fix | Delete
[514] Fix | Delete
$output = '';
[515] Fix | Delete
if ($inline_param) {
[516] Fix | Delete
$output .= self::_build_inline($url, $inline_param);
[517] Fix | Delete
}
[518] Fix | Delete
[519] Fix | Delete
$output .= "<esi:include src='$url'";
[520] Fix | Delete
if (!empty($control)) {
[521] Fix | Delete
$control = esc_attr($control);
[522] Fix | Delete
$output .= " cache-control='$control'";
[523] Fix | Delete
}
[524] Fix | Delete
if ($svar) {
[525] Fix | Delete
$output .= " as-var='1'";
[526] Fix | Delete
}
[527] Fix | Delete
if (in_array($block_id, self::$_combine_ids)) {
[528] Fix | Delete
$output .= " combine='sub'";
[529] Fix | Delete
}
[530] Fix | Delete
if ($block_id == self::COMBO && isset($_SERVER['X-LSCACHE']) && strpos($_SERVER['X-LSCACHE'], 'combine') !== false) {
[531] Fix | Delete
$output .= " combine='main'";
[532] Fix | Delete
}
[533] Fix | Delete
$output .= ' />';
[534] Fix | Delete
[535] Fix | Delete
if (!$silence) {
[536] Fix | Delete
$output = "<!-- lscwp $wrapper -->$output<!-- lscwp $wrapper esi end -->";
[537] Fix | Delete
}
[538] Fix | Delete
[539] Fix | Delete
self::debug("💕 [BLock_ID] $block_id \t[wrapper] $wrapper \t\t[Control] $control");
[540] Fix | Delete
self::debug2($output);
[541] Fix | Delete
[542] Fix | Delete
self::set_has_esi();
[543] Fix | Delete
[544] Fix | Delete
// Convert to string to avoid html chars filter when using
[545] Fix | Delete
// Will reverse the buffer when output in self::finalize()
[546] Fix | Delete
if ($preserved) {
[547] Fix | Delete
$hash = md5($output);
[548] Fix | Delete
$this->_esi_preserve_list[$hash] = $output;
[549] Fix | Delete
self::debug("Preserved to $hash");
[550] Fix | Delete
[551] Fix | Delete
return $hash;
[552] Fix | Delete
}
[553] Fix | Delete
[554] Fix | Delete
return $output;
[555] Fix | Delete
}
[556] Fix | Delete
[557] Fix | Delete
/**
[558] Fix | Delete
* Generate ESI hash md5
[559] Fix | Delete
*
[560] Fix | Delete
* @since 2.9.6
[561] Fix | Delete
* @access private
[562] Fix | Delete
*/
[563] Fix | Delete
private function _gen_esi_md5( $params ) {
[564] Fix | Delete
$keys = array( self::QS_ACTION, '_control', self::QS_PARAMS );
[565] Fix | Delete
[566] Fix | Delete
$str = '';
[567] Fix | Delete
foreach ($keys as $v) {
[568] Fix | Delete
if (isset($params[$v]) && is_string($params[$v])) {
[569] Fix | Delete
$str .= $params[$v];
[570] Fix | Delete
}
[571] Fix | Delete
}
[572] Fix | Delete
Debug2::debug2('[ESI] md5_string=' . $str);
[573] Fix | Delete
[574] Fix | Delete
return md5($this->conf(Base::HASH) . $str);
[575] Fix | Delete
}
[576] Fix | Delete
[577] Fix | Delete
/**
[578] Fix | Delete
* Parses the request parameters on an ESI request
[579] Fix | Delete
*
[580] Fix | Delete
* @since 1.1.3
[581] Fix | Delete
* @access private
[582] Fix | Delete
*/
[583] Fix | Delete
private function _parse_esi_param( $qs_params = false ) {
[584] Fix | Delete
$req_params = false;
[585] Fix | Delete
if ($qs_params) {
[586] Fix | Delete
$req_params = $qs_params;
[587] Fix | Delete
} elseif (isset($_REQUEST[self::QS_PARAMS])) {
[588] Fix | Delete
$req_params = $_REQUEST[self::QS_PARAMS];
[589] Fix | Delete
}
[590] Fix | Delete
[591] Fix | Delete
if (!$req_params) {
[592] Fix | Delete
return false;
[593] Fix | Delete
}
[594] Fix | Delete
[595] Fix | Delete
$unencrypted = base64_decode($req_params);
[596] Fix | Delete
if ($unencrypted === false) {
[597] Fix | Delete
return false;
[598] Fix | Delete
}
[599] Fix | Delete
[600] Fix | Delete
Debug2::debug2('[ESI] params', $unencrypted);
[601] Fix | Delete
// $unencoded = urldecode($unencrypted); no need to do this as $_GET is already parsed
[602] Fix | Delete
$params = \json_decode($unencrypted, true);
[603] Fix | Delete
[604] Fix | Delete
return $params;
[605] Fix | Delete
}
[606] Fix | Delete
[607] Fix | Delete
/**
[608] Fix | Delete
* Select the correct esi output based on the parameters in an ESI request.
[609] Fix | Delete
*
[610] Fix | Delete
* @since 1.1.3
[611] Fix | Delete
* @access public
[612] Fix | Delete
*/
[613] Fix | Delete
public function load_esi_block() {
[614] Fix | Delete
/**
[615] Fix | Delete
* Validate if is a legal ESI req
[616] Fix | Delete
*
[617] Fix | Delete
* @since 2.9.6
[618] Fix | Delete
*/
[619] Fix | Delete
if (empty($_GET['_hash']) || $this->_gen_esi_md5($_GET) != $_GET['_hash']) {
[620] Fix | Delete
Debug2::debug('[ESI] ❌ Failed to validate _hash');
[621] Fix | Delete
return;
[622] Fix | Delete
}
[623] Fix | Delete
[624] Fix | Delete
$params = $this->_parse_esi_param();
[625] Fix | Delete
[626] Fix | Delete
if (defined('LSCWP_LOG')) {
[627] Fix | Delete
$logInfo = '[ESI] ⭕ ';
[628] Fix | Delete
if (!empty($params[self::PARAM_NAME])) {
[629] Fix | Delete
$logInfo .= ' Name: ' . $params[self::PARAM_NAME] . ' ----- ';
[630] Fix | Delete
}
[631] Fix | Delete
$logInfo .= ' [ID] ' . LSCACHE_IS_ESI;
[632] Fix | Delete
Debug2::debug($logInfo);
[633] Fix | Delete
}
[634] Fix | Delete
[635] Fix | Delete
if (!empty($params['_ls_silence'])) {
[636] Fix | Delete
!defined('LSCACHE_ESI_SILENCE') && define('LSCACHE_ESI_SILENCE', true);
[637] Fix | Delete
}
[638] Fix | Delete
[639] Fix | Delete
/**
[640] Fix | Delete
* Buffer needs to be JSON format
[641] Fix | Delete
*
[642] Fix | Delete
* @since 2.9.4
[643] Fix | Delete
*/
[644] Fix | Delete
if (!empty($params['is_json'])) {
[645] Fix | Delete
add_filter('litespeed_is_json', '__return_true');
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
Tag::add(rtrim(Tag::TYPE_ESI, '.'));
[649] Fix | Delete
Tag::add(Tag::TYPE_ESI . LSCACHE_IS_ESI);
[650] Fix | Delete
[651] Fix | Delete
// Debug2::debug(var_export($params, true ));
[652] Fix | Delete
[653] Fix | Delete
/**
[654] Fix | Delete
* Handle default cache control 'private,no-vary' for sub_esi_block() @ticket #923505
[655] Fix | Delete
*
[656] Fix | Delete
* @since 2.2.3
[657] Fix | Delete
*/
[658] Fix | Delete
if (!empty($_GET['_control'])) {
[659] Fix | Delete
$control = explode(',', $_GET['_control']);
[660] Fix | Delete
if (in_array('private', $control)) {
[661] Fix | Delete
Control::set_private();
[662] Fix | Delete
}
[663] Fix | Delete
[664] Fix | Delete
if (in_array('no-vary', $control)) {
[665] Fix | Delete
Control::set_no_vary();
[666] Fix | Delete
}
[667] Fix | Delete
}
[668] Fix | Delete
[669] Fix | Delete
do_action('litespeed_esi_load-' . LSCACHE_IS_ESI, $params);
[670] Fix | Delete
}
[671] Fix | Delete
[672] Fix | Delete
// The *_sub_* functions are helpers for the sub_* functions.
[673] Fix | Delete
// The *_load_* functions are helpers for the load_* functions.
[674] Fix | Delete
[675] Fix | Delete
/**
[676] Fix | Delete
* Loads the default options for default WordPress widgets.
[677] Fix | Delete
*
[678] Fix | Delete
* @since 1.1.3
[679] Fix | Delete
* @access public
[680] Fix | Delete
*/
[681] Fix | Delete
public static function widget_default_options( $options, $widget ) {
[682] Fix | Delete
if (!is_array($options)) {
[683] Fix | Delete
return $options;
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
$widget_name = get_class($widget);
[687] Fix | Delete
switch ($widget_name) {
[688] Fix | Delete
case 'WP_Widget_Recent_Posts':
[689] Fix | Delete
case 'WP_Widget_Recent_Comments':
[690] Fix | Delete
$options[self::WIDGET_O_ESIENABLE] = Base::VAL_OFF;
[691] Fix | Delete
$options[self::WIDGET_O_TTL] = 86400;
[692] Fix | Delete
break;
[693] Fix | Delete
default:
[694] Fix | Delete
break;
[695] Fix | Delete
}
[696] Fix | Delete
return $options;
[697] Fix | Delete
}
[698] Fix | Delete
[699] Fix | Delete
/**
[700] Fix | Delete
* Hooked to the widget_display_callback filter.
[701] Fix | Delete
* If the admin configured the widget to display via esi, this function
[702] Fix | Delete
* will set up the esi request and cancel the widget display.
[703] Fix | Delete
*
[704] Fix | Delete
* @since 1.1.3
[705] Fix | Delete
* @access public
[706] Fix | Delete
* @param array $instance Parameter used to build the widget.
[707] Fix | Delete
* @param \WP_Widget $widget The widget to build.
[708] Fix | Delete
* @param array $args Parameter used to build the widget.
[709] Fix | Delete
* @return mixed Return false if display through esi, instance otherwise.
[710] Fix | Delete
*/
[711] Fix | Delete
public function sub_widget_block( $instance, $widget, $args ) {
[712] Fix | Delete
// #210407
[713] Fix | Delete
if (!is_array($instance)) {
[714] Fix | Delete
return $instance;
[715] Fix | Delete
}
[716] Fix | Delete
[717] Fix | Delete
$name = get_class($widget);
[718] Fix | Delete
if (!isset($instance[Base::OPTION_NAME])) {
[719] Fix | Delete
return $instance;
[720] Fix | Delete
}
[721] Fix | Delete
$options = $instance[Base::OPTION_NAME];
[722] Fix | Delete
if (!isset($options) || !$options[self::WIDGET_O_ESIENABLE]) {
[723] Fix | Delete
defined('LSCWP_LOG') && Debug2::debug('ESI 0 ' . $name . ': ' . (!isset($options) ? 'not set' : 'set off'));
[724] Fix | Delete
[725] Fix | Delete
return $instance;
[726] Fix | Delete
}
[727] Fix | Delete
[728] Fix | Delete
$esi_private = $options[self::WIDGET_O_ESIENABLE] == Base::VAL_ON2 ? 'private,' : '';
[729] Fix | Delete
[730] Fix | Delete
$params = array(
[731] Fix | Delete
self::PARAM_NAME => $name,
[732] Fix | Delete
self::PARAM_ID => $widget->id,
[733] Fix | Delete
self::PARAM_INSTANCE => $instance,
[734] Fix | Delete
self::PARAM_ARGS => $args,
[735] Fix | Delete
);
[736] Fix | Delete
[737] Fix | Delete
echo $this->sub_esi_block('widget', 'widget ' . $name, $params, $esi_private . 'no-vary');
[738] Fix | Delete
[739] Fix | Delete
return false;
[740] Fix | Delete
}
[741] Fix | Delete
[742] Fix | Delete
/**
[743] Fix | Delete
* Hooked to the wp_footer action.
[744] Fix | Delete
* Sets up the ESI request for the admin bar.
[745] Fix | Delete
*
[746] Fix | Delete
* @access public
[747] Fix | Delete
* @since 1.1.3
[748] Fix | Delete
* @global type $wp_admin_bar
[749] Fix | Delete
*/
[750] Fix | Delete
public function sub_admin_bar_block() {
[751] Fix | Delete
global $wp_admin_bar;
[752] Fix | Delete
[753] Fix | Delete
if (!is_admin_bar_showing() || !is_object($wp_admin_bar)) {
[754] Fix | Delete
return;
[755] Fix | Delete
}
[756] Fix | Delete
[757] Fix | Delete
// To make each admin bar ESI request different for `Edit` button different link
[758] Fix | Delete
$params = array(
[759] Fix | Delete
'ref' => $_SERVER['REQUEST_URI'],
[760] Fix | Delete
);
[761] Fix | Delete
[762] Fix | Delete
echo $this->sub_esi_block('admin-bar', 'adminbar', $params);
[763] Fix | Delete
}
[764] Fix | Delete
[765] Fix | Delete
/**
[766] Fix | Delete
* Parses the esi input parameters and generates the widget for esi display.
[767] Fix | Delete
*
[768] Fix | Delete
* @access public
[769] Fix | Delete
* @since 1.1.3
[770] Fix | Delete
* @global $wp_widget_factory
[771] Fix | Delete
* @param array $params Input parameters needed to correctly display widget
[772] Fix | Delete
*/
[773] Fix | Delete
public function load_widget_block( $params ) {
[774] Fix | Delete
// global $wp_widget_factory;
[775] Fix | Delete
// $widget = $wp_widget_factory->widgets[ $params[ self::PARAM_NAME ] ];
[776] Fix | Delete
$option = $params[self::PARAM_INSTANCE];
[777] Fix | Delete
$option = $option[Base::OPTION_NAME];
[778] Fix | Delete
[779] Fix | Delete
// Since we only reach here via esi, safe to assume setting exists.
[780] Fix | Delete
$ttl = $option[self::WIDGET_O_TTL];
[781] Fix | Delete
defined('LSCWP_LOG') && Debug2::debug('ESI widget render: name ' . $params[self::PARAM_NAME] . ', id ' . $params[self::PARAM_ID] . ', ttl ' . $ttl);
[782] Fix | Delete
if ($ttl == 0) {
[783] Fix | Delete
Control::set_nocache('ESI Widget time to live set to 0');
[784] Fix | Delete
} else {
[785] Fix | Delete
Control::set_custom_ttl($ttl);
[786] Fix | Delete
[787] Fix | Delete
if ($option[self::WIDGET_O_ESIENABLE] == Base::VAL_ON2) {
[788] Fix | Delete
Control::set_private();
[789] Fix | Delete
}
[790] Fix | Delete
Control::set_no_vary();
[791] Fix | Delete
Tag::add(Tag::TYPE_WIDGET . $params[self::PARAM_ID]);
[792] Fix | Delete
}
[793] Fix | Delete
the_widget($params[self::PARAM_NAME], $params[self::PARAM_INSTANCE], $params[self::PARAM_ARGS]);
[794] Fix | Delete
}
[795] Fix | Delete
[796] Fix | Delete
/**
[797] Fix | Delete
* Generates the admin bar for esi display.
[798] Fix | Delete
*
[799] Fix | Delete
* @access public
[800] Fix | Delete
* @since 1.1.3
[801] Fix | Delete
*/
[802] Fix | Delete
public function load_admin_bar_block( $params ) {
[803] Fix | Delete
global $wp_the_query;
[804] Fix | Delete
[805] Fix | Delete
if (!empty($params['ref'])) {
[806] Fix | Delete
$ref_qs = parse_url($params['ref'], PHP_URL_QUERY);
[807] Fix | Delete
if (!empty($ref_qs)) {
[808] Fix | Delete
parse_str($ref_qs, $ref_qs_arr);
[809] Fix | Delete
[810] Fix | Delete
if (!empty($ref_qs_arr)) {
[811] Fix | Delete
foreach ($ref_qs_arr as $k => $v) {
[812] Fix | Delete
$_GET[$k] = $v;
[813] Fix | Delete
}
[814] Fix | Delete
}
[815] Fix | Delete
}
[816] Fix | Delete
}
[817] Fix | Delete
[818] Fix | Delete
// Needed when permalink structure is "Plain"
[819] Fix | Delete
if (!isset($wp_the_query)) {
[820] Fix | Delete
wp();
[821] Fix | Delete
}
[822] Fix | Delete
[823] Fix | Delete
wp_admin_bar_render();
[824] Fix | Delete
if (!$this->conf(Base::O_ESI_CACHE_ADMBAR)) {
[825] Fix | Delete
Control::set_nocache('build-in set to not cacheable');
[826] Fix | Delete
} else {
[827] Fix | Delete
Control::set_private();
[828] Fix | Delete
Control::set_no_vary();
[829] Fix | Delete
}
[830] Fix | Delete
[831] Fix | Delete
defined('LSCWP_LOG') && Debug2::debug('ESI: adminbar ref: ' . $_SERVER['REQUEST_URI']);
[832] Fix | Delete
}
[833] Fix | Delete
[834] Fix | Delete
/**
[835] Fix | Delete
* Parses the esi input parameters and generates the comment form for esi display.
[836] Fix | Delete
*
[837] Fix | Delete
* @access public
[838] Fix | Delete
* @since 1.1.3
[839] Fix | Delete
* @param array $params Input parameters needed to correctly display comment form
[840] Fix | Delete
*/
[841] Fix | Delete
public function load_comment_form_block( $params ) {
[842] Fix | Delete
comment_form($params[self::PARAM_ARGS], $params[self::PARAM_ID]);
[843] Fix | Delete
[844] Fix | Delete
if (!$this->conf(Base::O_ESI_CACHE_COMMFORM)) {
[845] Fix | Delete
Control::set_nocache('build-in set to not cacheable');
[846] Fix | Delete
} else {
[847] Fix | Delete
// by default comment form is public
[848] Fix | Delete
if (Vary::has_vary()) {
[849] Fix | Delete
Control::set_private();
[850] Fix | Delete
Control::set_no_vary();
[851] Fix | Delete
}
[852] Fix | Delete
}
[853] Fix | Delete
}
[854] Fix | Delete
[855] Fix | Delete
/**
[856] Fix | Delete
* Generate nonce for certain action
[857] Fix | Delete
*
[858] Fix | Delete
* @access public
[859] Fix | Delete
* @since 2.6
[860] Fix | Delete
*/
[861] Fix | Delete
public function load_nonce_block( $params ) {
[862] Fix | Delete
$action = $params['action'];
[863] Fix | Delete
[864] Fix | Delete
Debug2::debug('[ESI] load_nonce_block [action] ' . $action);
[865] Fix | Delete
[866] Fix | Delete
// set nonce TTL to half day
[867] Fix | Delete
Control::set_custom_ttl(43200);
[868] Fix | Delete
[869] Fix | Delete
if (Router::is_logged_in()) {
[870] Fix | Delete
Control::set_private();
[871] Fix | Delete
}
[872] Fix | Delete
[873] Fix | Delete
if (function_exists('wp_create_nonce_litespeed_esi')) {
[874] Fix | Delete
echo wp_create_nonce_litespeed_esi($action);
[875] Fix | Delete
} else {
[876] Fix | Delete
echo wp_create_nonce($action);
[877] Fix | Delete
}
[878] Fix | Delete
}
[879] Fix | Delete
[880] Fix | Delete
/**
[881] Fix | Delete
* Show original shortcode
[882] Fix | Delete
*
[883] Fix | Delete
* @access public
[884] Fix | Delete
* @since 2.8
[885] Fix | Delete
*/
[886] Fix | Delete
public function load_esi_shortcode( $params ) {
[887] Fix | Delete
if (isset($params['ttl'])) {
[888] Fix | Delete
if (!$params['ttl']) {
[889] Fix | Delete
Control::set_nocache('ESI shortcode att ttl=0');
[890] Fix | Delete
} else {
[891] Fix | Delete
Control::set_custom_ttl($params['ttl']);
[892] Fix | Delete
}
[893] Fix | Delete
unset($params['ttl']);
[894] Fix | Delete
}
[895] Fix | Delete
[896] Fix | Delete
// Replace to original shortcode
[897] Fix | Delete
$shortcode = $params[0];
[898] Fix | Delete
$atts_ori = array();
[899] Fix | Delete
foreach ($params as $k => $v) {
[900] Fix | Delete
if ($k === 0) {
[901] Fix | Delete
continue;
[902] Fix | Delete
}
[903] Fix | Delete
[904] Fix | Delete
$atts_ori[] = is_string($k) ? "$k='" . addslashes($v) . "'" : $v;
[905] Fix | Delete
}
[906] Fix | Delete
[907] Fix | Delete
Tag::add(Tag::TYPE_ESI . "esi.$shortcode");
[908] Fix | Delete
[909] Fix | Delete
// Output original shortcode final content
[910] Fix | Delete
echo do_shortcode("[$shortcode " . implode(' ', $atts_ori) . ' ]');
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
/**
[914] Fix | Delete
* Hooked to the comment_form_defaults filter.
[915] Fix | Delete
* Stores the default comment form settings.
[916] Fix | Delete
* If sub_comment_form_block is triggered, the output buffer is cleared and an esi block is added. The remaining comment form is also buffered and cleared.
[917] Fix | Delete
* Else there is no need to make the comment form ESI.
[918] Fix | Delete
*
[919] Fix | Delete
* @since 1.1.3
[920] Fix | Delete
* @access public
[921] Fix | Delete
*/
[922] Fix | Delete
public function register_comment_form_actions( $defaults ) {
[923] Fix | Delete
$this->esi_args = $defaults;
[924] Fix | Delete
echo GUI::clean_wrapper_begin();
[925] Fix | Delete
add_filter('comment_form_submit_button', array( $this, 'sub_comment_form_btn' ), 1000, 2); // To save the params passed in
[926] Fix | Delete
add_action('comment_form', array( $this, 'sub_comment_form_block' ), 1000);
[927] Fix | Delete
return $defaults;
[928] Fix | Delete
}
[929] Fix | Delete
[930] Fix | Delete
/**
[931] Fix | Delete
* Store the args passed in comment_form for the ESI comment param usage in `$this->sub_comment_form_block()`
[932] Fix | Delete
*
[933] Fix | Delete
* @since 3.4
[934] Fix | Delete
* @access public
[935] Fix | Delete
*/
[936] Fix | Delete
public function sub_comment_form_btn( $unused, $args ) {
[937] Fix | Delete
if (empty($args) || empty($this->esi_args)) {
[938] Fix | Delete
Debug2::debug('comment form args empty?');
[939] Fix | Delete
return $unused;
[940] Fix | Delete
}
[941] Fix | Delete
$esi_args = array();
[942] Fix | Delete
[943] Fix | Delete
// compare current args with default ones
[944] Fix | Delete
foreach ($args as $k => $v) {
[945] Fix | Delete
if (!isset($this->esi_args[$k])) {
[946] Fix | Delete
$esi_args[$k] = $v;
[947] Fix | Delete
} elseif (is_array($v)) {
[948] Fix | Delete
$diff = array_diff_assoc($v, $this->esi_args[$k]);
[949] Fix | Delete
if (!empty($diff)) {
[950] Fix | Delete
$esi_args[$k] = $diff;
[951] Fix | Delete
}
[952] Fix | Delete
} elseif ($v !== $this->esi_args[$k]) {
[953] Fix | Delete
$esi_args[$k] = $v;
[954] Fix | Delete
}
[955] Fix | Delete
}
[956] Fix | Delete
[957] Fix | Delete
$this->esi_args = $esi_args;
[958] Fix | Delete
[959] Fix | Delete
return $unused;
[960] Fix | Delete
}
[961] Fix | Delete
[962] Fix | Delete
/**
[963] Fix | Delete
* Hooked to the comment_form_submit_button filter.
[964] Fix | Delete
*
[965] Fix | Delete
* This method will compare the used comment form args against the default args. The difference will be passed to the esi request.
[966] Fix | Delete
*
[967] Fix | Delete
* @access public
[968] Fix | Delete
* @since 1.1.3
[969] Fix | Delete
*/
[970] Fix | Delete
public function sub_comment_form_block( $post_id ) {
[971] Fix | Delete
echo GUI::clean_wrapper_end();
[972] Fix | Delete
$params = array(
[973] Fix | Delete
self::PARAM_ID => $post_id,
[974] Fix | Delete
self::PARAM_ARGS => $this->esi_args,
[975] Fix | Delete
);
[976] Fix | Delete
[977] Fix | Delete
echo $this->sub_esi_block('comment-form', 'comment form', $params);
[978] Fix | Delete
echo GUI::clean_wrapper_begin();
[979] Fix | Delete
add_action('comment_form_after', array( $this, 'comment_form_sub_clean' ));
[980] Fix | Delete
}
[981] Fix | Delete
[982] Fix | Delete
/**
[983] Fix | Delete
* Hooked to the comment_form_after action.
[984] Fix | Delete
* Cleans up the remaining comment form output.
[985] Fix | Delete
*
[986] Fix | Delete
* @since 1.1.3
[987] Fix | Delete
* @access public
[988] Fix | Delete
*/
[989] Fix | Delete
public function comment_form_sub_clean() {
[990] Fix | Delete
echo GUI::clean_wrapper_end();
[991] Fix | Delete
}
[992] Fix | Delete
[993] Fix | Delete
/**
[994] Fix | Delete
* Replace preserved blocks
[995] Fix | Delete
*
[996] Fix | Delete
* @since 2.6
[997] Fix | Delete
* @access public
[998] Fix | Delete
*/
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function