Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/content-.../inc/freemius/includes
File: class-freemius.php
*
[25000] Fix | Delete
* @param string $text Translatable string.
[25001] Fix | Delete
* @param string $context Context information for the translators.
[25002] Fix | Delete
* @param string $key String key for overrides.
[25003] Fix | Delete
*
[25004] Fix | Delete
* @return string
[25005] Fix | Delete
*/
[25006] Fix | Delete
function get_text_x_inline( $text, $context, $key ) {
[25007] Fix | Delete
return _fs_text_x_inline( $text, $context, $key, $this->_slug );
[25008] Fix | Delete
}
[25009] Fix | Delete
[25010] Fix | Delete
/**
[25011] Fix | Delete
* @author Vova Feldman (@svovaf)
[25012] Fix | Delete
* @since 1.2.3
[25013] Fix | Delete
*
[25014] Fix | Delete
* @param string $text Translatable string.
[25015] Fix | Delete
* @param string $key String key for overrides.
[25016] Fix | Delete
*
[25017] Fix | Delete
* @return string
[25018] Fix | Delete
*/
[25019] Fix | Delete
function esc_html_inline( $text, $key ) {
[25020] Fix | Delete
return esc_html( _fs_text_inline( $text, $key, $this->_slug ) );
[25021] Fix | Delete
}
[25022] Fix | Delete
[25023] Fix | Delete
#----------------------------------------------------------------------------------
[25024] Fix | Delete
#region Versioning
[25025] Fix | Delete
#----------------------------------------------------------------------------------
[25026] Fix | Delete
[25027] Fix | Delete
/**
[25028] Fix | Delete
* Check if Freemius in SDK upgrade mode.
[25029] Fix | Delete
*
[25030] Fix | Delete
* @author Vova Feldman (@svovaf)
[25031] Fix | Delete
* @since 1.0.9
[25032] Fix | Delete
*
[25033] Fix | Delete
* @return bool
[25034] Fix | Delete
*/
[25035] Fix | Delete
function is_sdk_upgrade_mode() {
[25036] Fix | Delete
return isset( $this->_storage->sdk_upgrade_mode ) ?
[25037] Fix | Delete
$this->_storage->sdk_upgrade_mode :
[25038] Fix | Delete
false;
[25039] Fix | Delete
}
[25040] Fix | Delete
[25041] Fix | Delete
/**
[25042] Fix | Delete
* Turn SDK upgrade mode off.
[25043] Fix | Delete
*
[25044] Fix | Delete
* @author Vova Feldman (@svovaf)
[25045] Fix | Delete
* @since 1.0.9
[25046] Fix | Delete
*/
[25047] Fix | Delete
function set_sdk_upgrade_complete() {
[25048] Fix | Delete
$this->_storage->sdk_upgrade_mode = false;
[25049] Fix | Delete
}
[25050] Fix | Delete
[25051] Fix | Delete
/**
[25052] Fix | Delete
* Check if plugin upgrade mode.
[25053] Fix | Delete
*
[25054] Fix | Delete
* @author Vova Feldman (@svovaf)
[25055] Fix | Delete
* @since 1.0.9
[25056] Fix | Delete
*
[25057] Fix | Delete
* @return bool
[25058] Fix | Delete
*/
[25059] Fix | Delete
function is_plugin_upgrade_mode() {
[25060] Fix | Delete
return isset( $this->_storage->plugin_upgrade_mode ) ?
[25061] Fix | Delete
$this->_storage->plugin_upgrade_mode :
[25062] Fix | Delete
false;
[25063] Fix | Delete
}
[25064] Fix | Delete
[25065] Fix | Delete
/**
[25066] Fix | Delete
* Turn plugin upgrade mode off.
[25067] Fix | Delete
*
[25068] Fix | Delete
* @author Vova Feldman (@svovaf)
[25069] Fix | Delete
* @since 1.0.9
[25070] Fix | Delete
*/
[25071] Fix | Delete
function set_plugin_upgrade_complete() {
[25072] Fix | Delete
$this->_storage->plugin_upgrade_mode = false;
[25073] Fix | Delete
[25074] Fix | Delete
$license_migration = ! empty( $this->_storage->license_migration ) ?
[25075] Fix | Delete
$this->_storage->license_migration :
[25076] Fix | Delete
array();
[25077] Fix | Delete
[25078] Fix | Delete
$license_migration['is_migrating'] = false;
[25079] Fix | Delete
[25080] Fix | Delete
$this->_storage->license_migration = $license_migration;
[25081] Fix | Delete
}
[25082] Fix | Delete
[25083] Fix | Delete
#endregion
[25084] Fix | Delete
[25085] Fix | Delete
#----------------------------------------------------------------------------------
[25086] Fix | Delete
#region Permissions
[25087] Fix | Delete
#----------------------------------------------------------------------------------
[25088] Fix | Delete
[25089] Fix | Delete
/**
[25090] Fix | Delete
* Check if specific permission requested.
[25091] Fix | Delete
*
[25092] Fix | Delete
* @author Vova Feldman (@svovaf)
[25093] Fix | Delete
* @since 1.1.6
[25094] Fix | Delete
*
[25095] Fix | Delete
* @param string $permission
[25096] Fix | Delete
*
[25097] Fix | Delete
* @return bool
[25098] Fix | Delete
*/
[25099] Fix | Delete
function is_permission_requested( $permission ) {
[25100] Fix | Delete
return isset( $this->_permissions[ $permission ] ) && ( true === $this->_permissions[ $permission ] );
[25101] Fix | Delete
}
[25102] Fix | Delete
[25103] Fix | Delete
#endregion
[25104] Fix | Delete
[25105] Fix | Delete
#----------------------------------------------------------------------------------
[25106] Fix | Delete
#region Auto Activation
[25107] Fix | Delete
#----------------------------------------------------------------------------------
[25108] Fix | Delete
[25109] Fix | Delete
/**
[25110] Fix | Delete
* Hints the SDK if running an auto-installation.
[25111] Fix | Delete
*
[25112] Fix | Delete
* @var bool
[25113] Fix | Delete
*/
[25114] Fix | Delete
private $_isAutoInstall = false;
[25115] Fix | Delete
[25116] Fix | Delete
/**
[25117] Fix | Delete
* After upgrade callback to install and auto activate a plugin.
[25118] Fix | Delete
* This code will only be executed on explicit request from the user,
[25119] Fix | Delete
* following the practice Jetpack are using with their theme installations.
[25120] Fix | Delete
*
[25121] Fix | Delete
* @link https://make.wordpress.org/plugins/2017/03/16/clarification-of-guideline-8-executable-code-and-installs/
[25122] Fix | Delete
*
[25123] Fix | Delete
* @author Vova Feldman (@svovaf)
[25124] Fix | Delete
* @since 1.2.1.7
[25125] Fix | Delete
*/
[25126] Fix | Delete
function _install_premium_version_ajax_action() {
[25127] Fix | Delete
$this->_logger->entrance();
[25128] Fix | Delete
[25129] Fix | Delete
$this->check_ajax_referer( 'install_premium_version' );
[25130] Fix | Delete
[25131] Fix | Delete
if ( ! $this->is_registered() ) {
[25132] Fix | Delete
// Not registered.
[25133] Fix | Delete
self::shoot_ajax_failure( array(
[25134] Fix | Delete
'message' => $this->get_text_inline( 'Auto installation only works for opted-in users.', 'auto-install-error-not-opted-in' ),
[25135] Fix | Delete
'code' => 'premium_installed',
[25136] Fix | Delete
) );
[25137] Fix | Delete
}
[25138] Fix | Delete
[25139] Fix | Delete
$plugin_id = fs_request_get( 'target_module_id', $this->get_id() );
[25140] Fix | Delete
[25141] Fix | Delete
if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
[25142] Fix | Delete
// Invalid ID.
[25143] Fix | Delete
self::shoot_ajax_failure( array(
[25144] Fix | Delete
'message' => $this->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
[25145] Fix | Delete
'code' => 'invalid_module_id',
[25146] Fix | Delete
) );
[25147] Fix | Delete
}
[25148] Fix | Delete
[25149] Fix | Delete
if ( $plugin_id == $this->get_id() ) {
[25150] Fix | Delete
if ( $this->is_premium() ) {
[25151] Fix | Delete
// Already using the premium code version.
[25152] Fix | Delete
self::shoot_ajax_failure( array(
[25153] Fix | Delete
'message' => $this->get_text_inline( 'Premium version already active.', 'auto-install-error-premium-activated' ),
[25154] Fix | Delete
'code' => 'premium_installed',
[25155] Fix | Delete
) );
[25156] Fix | Delete
}
[25157] Fix | Delete
if ( ! $this->can_use_premium_code() ) {
[25158] Fix | Delete
// Don't have access to the premium code.
[25159] Fix | Delete
self::shoot_ajax_failure( array(
[25160] Fix | Delete
'message' => $this->get_text_inline( 'You do not have a valid license to access the premium version.', 'auto-install-error-invalid-license' ),
[25161] Fix | Delete
'code' => 'invalid_license',
[25162] Fix | Delete
) );
[25163] Fix | Delete
}
[25164] Fix | Delete
if ( ! $this->has_release_on_freemius() ) {
[25165] Fix | Delete
// Plugin is a serviceware, no premium code version.
[25166] Fix | Delete
self::shoot_ajax_failure( array(
[25167] Fix | Delete
'message' => $this->get_text_inline( 'Plugin is a "Serviceware" which means it does not have a premium code version.', 'auto-install-error-serviceware' ),
[25168] Fix | Delete
'code' => 'premium_version_missing',
[25169] Fix | Delete
) );
[25170] Fix | Delete
}
[25171] Fix | Delete
} else {
[25172] Fix | Delete
$addon = $this->get_addon( $plugin_id );
[25173] Fix | Delete
[25174] Fix | Delete
if ( ! is_object( $addon ) ) {
[25175] Fix | Delete
// Invalid add-on ID.
[25176] Fix | Delete
self::shoot_ajax_failure( array(
[25177] Fix | Delete
'message' => $this->get_text_inline( 'Invalid module ID.', 'auto-install-error-invalid-id' ),
[25178] Fix | Delete
'code' => 'invalid_module_id',
[25179] Fix | Delete
) );
[25180] Fix | Delete
}
[25181] Fix | Delete
[25182] Fix | Delete
if ( $this->is_addon_activated( $plugin_id, true ) ) {
[25183] Fix | Delete
// Premium add-on version is already activated.
[25184] Fix | Delete
self::shoot_ajax_failure( array(
[25185] Fix | Delete
'message' => $this->get_text_inline( 'Premium add-on version already installed.', 'auto-install-error-premium-addon-activated' ),
[25186] Fix | Delete
'code' => 'premium_installed',
[25187] Fix | Delete
) );
[25188] Fix | Delete
}
[25189] Fix | Delete
}
[25190] Fix | Delete
[25191] Fix | Delete
$this->_isAutoInstall = true;
[25192] Fix | Delete
[25193] Fix | Delete
// Try to install and activate.
[25194] Fix | Delete
$updater = FS_Plugin_Updater::instance( $this );
[25195] Fix | Delete
$result = $updater->install_and_activate_plugin( $plugin_id );
[25196] Fix | Delete
[25197] Fix | Delete
if ( is_array( $result ) && ! empty( $result['message'] ) ) {
[25198] Fix | Delete
self::shoot_ajax_failure( array(
[25199] Fix | Delete
'message' => $result['message'],
[25200] Fix | Delete
'code' => $result['code'],
[25201] Fix | Delete
) );
[25202] Fix | Delete
}
[25203] Fix | Delete
[25204] Fix | Delete
self::shoot_ajax_success( $result );
[25205] Fix | Delete
}
[25206] Fix | Delete
[25207] Fix | Delete
/**
[25208] Fix | Delete
* Displays module activation dialog box after a successful upgrade
[25209] Fix | Delete
* where the user explicitly requested to auto download and install
[25210] Fix | Delete
* the premium version.
[25211] Fix | Delete
*
[25212] Fix | Delete
* @author Vova Feldman (@svovaf)
[25213] Fix | Delete
* @since 1.2.1.7
[25214] Fix | Delete
*/
[25215] Fix | Delete
function _add_auto_installation_dialog_box() {
[25216] Fix | Delete
$this->_logger->entrance();
[25217] Fix | Delete
[25218] Fix | Delete
if ( ! $this->is_registered() ) {
[25219] Fix | Delete
// Not registered.
[25220] Fix | Delete
return;
[25221] Fix | Delete
}
[25222] Fix | Delete
[25223] Fix | Delete
$plugin_id = fs_request_get( 'plugin_id', $this->get_id() );
[25224] Fix | Delete
[25225] Fix | Delete
if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
[25226] Fix | Delete
// Invalid module ID.
[25227] Fix | Delete
return;
[25228] Fix | Delete
}
[25229] Fix | Delete
[25230] Fix | Delete
if ( $plugin_id == $this->get_id() ) {
[25231] Fix | Delete
if ( $this->is_premium() ) {
[25232] Fix | Delete
// Already using the premium code version.
[25233] Fix | Delete
return;
[25234] Fix | Delete
}
[25235] Fix | Delete
if ( ! $this->can_use_premium_code() ) {
[25236] Fix | Delete
// Don't have access to the premium code.
[25237] Fix | Delete
return;
[25238] Fix | Delete
}
[25239] Fix | Delete
if ( ! $this->has_release_on_freemius() ) {
[25240] Fix | Delete
// Plugin is a serviceware, no premium code version.
[25241] Fix | Delete
return;
[25242] Fix | Delete
}
[25243] Fix | Delete
} else {
[25244] Fix | Delete
$addon = $this->get_addon( $plugin_id );
[25245] Fix | Delete
[25246] Fix | Delete
if ( ! is_object( $addon ) ) {
[25247] Fix | Delete
// Invalid add-on ID.
[25248] Fix | Delete
return;
[25249] Fix | Delete
}
[25250] Fix | Delete
[25251] Fix | Delete
if ( $this->is_addon_activated( $plugin_id, true ) ) {
[25252] Fix | Delete
// Premium add-on version is already activated.
[25253] Fix | Delete
return;
[25254] Fix | Delete
}
[25255] Fix | Delete
}
[25256] Fix | Delete
[25257] Fix | Delete
$vars = array(
[25258] Fix | Delete
'id' => $this->_module_id,
[25259] Fix | Delete
'target_module_id' => $plugin_id,
[25260] Fix | Delete
'slug' => $this->_slug,
[25261] Fix | Delete
);
[25262] Fix | Delete
[25263] Fix | Delete
fs_require_template( 'auto-installation.php', $vars );
[25264] Fix | Delete
}
[25265] Fix | Delete
[25266] Fix | Delete
#endregion
[25267] Fix | Delete
[25268] Fix | Delete
#--------------------------------------------------------------------------------
[25269] Fix | Delete
#region Tabs Integration
[25270] Fix | Delete
#--------------------------------------------------------------------------------
[25271] Fix | Delete
[25272] Fix | Delete
#region Module's Original Tabs
[25273] Fix | Delete
[25274] Fix | Delete
/**
[25275] Fix | Delete
* Inject a JavaScript logic to capture the theme tabs HTML.
[25276] Fix | Delete
*
[25277] Fix | Delete
* @author Vova Feldman (@svovaf)
[25278] Fix | Delete
* @since 1.2.2.7
[25279] Fix | Delete
*/
[25280] Fix | Delete
function _tabs_capture() {
[25281] Fix | Delete
$this->_logger->entrance();
[25282] Fix | Delete
[25283] Fix | Delete
if (
[25284] Fix | Delete
! $this->is_product_settings_page() ||
[25285] Fix | Delete
! $this->should_page_include_tabs() ||
[25286] Fix | Delete
! $this->is_matching_url( $this->main_menu_url() )
[25287] Fix | Delete
) {
[25288] Fix | Delete
return;
[25289] Fix | Delete
}
[25290] Fix | Delete
[25291] Fix | Delete
$params = array(
[25292] Fix | Delete
'id' => $this->_module_id,
[25293] Fix | Delete
);
[25294] Fix | Delete
[25295] Fix | Delete
fs_require_once_template( 'tabs-capture-js.php', $params );
[25296] Fix | Delete
}
[25297] Fix | Delete
[25298] Fix | Delete
/**
[25299] Fix | Delete
* Cache theme's tabs HTML for a week. The cache will also be set as expired
[25300] Fix | Delete
* after version and type (free/premium) changes, in addition to the week period.
[25301] Fix | Delete
*
[25302] Fix | Delete
* @author Vova Feldman (@svovaf)
[25303] Fix | Delete
* @since 1.2.2.7
[25304] Fix | Delete
*/
[25305] Fix | Delete
function _store_tabs_ajax_action() {
[25306] Fix | Delete
$this->_logger->entrance();
[25307] Fix | Delete
[25308] Fix | Delete
$this->check_ajax_referer( 'store_tabs' );
[25309] Fix | Delete
[25310] Fix | Delete
// Init filesystem if not yet initiated.
[25311] Fix | Delete
WP_Filesystem();
[25312] Fix | Delete
[25313] Fix | Delete
// Get POST body HTML data.
[25314] Fix | Delete
global $wp_filesystem;
[25315] Fix | Delete
$tabs_html = $wp_filesystem->get_contents( "php://input" );
[25316] Fix | Delete
[25317] Fix | Delete
if ( is_string( $tabs_html ) ) {
[25318] Fix | Delete
$tabs_html = trim( $tabs_html );
[25319] Fix | Delete
}
[25320] Fix | Delete
[25321] Fix | Delete
if ( ! is_string( $tabs_html ) || empty( $tabs_html ) ) {
[25322] Fix | Delete
self::shoot_ajax_failure();
[25323] Fix | Delete
}
[25324] Fix | Delete
[25325] Fix | Delete
$this->_cache->set( 'tabs', $tabs_html, 7 * WP_FS__TIME_24_HOURS_IN_SEC );
[25326] Fix | Delete
[25327] Fix | Delete
self::shoot_ajax_success();
[25328] Fix | Delete
}
[25329] Fix | Delete
[25330] Fix | Delete
/**
[25331] Fix | Delete
* Cache theme's settings page custom styles. The cache will also be set as expired
[25332] Fix | Delete
* after version and type (free/premium) changes, in addition to the week period.
[25333] Fix | Delete
*
[25334] Fix | Delete
* @author Vova Feldman (@svovaf)
[25335] Fix | Delete
* @since 1.2.2.7
[25336] Fix | Delete
*/
[25337] Fix | Delete
function _store_tabs_styles() {
[25338] Fix | Delete
$this->_logger->entrance();
[25339] Fix | Delete
[25340] Fix | Delete
if (
[25341] Fix | Delete
! $this->is_product_settings_page() ||
[25342] Fix | Delete
! $this->should_page_include_tabs() ||
[25343] Fix | Delete
! $this->is_matching_url( $this->main_menu_url() )
[25344] Fix | Delete
) {
[25345] Fix | Delete
return;
[25346] Fix | Delete
}
[25347] Fix | Delete
[25348] Fix | Delete
$wp_styles = wp_styles();
[25349] Fix | Delete
[25350] Fix | Delete
$theme_styles_url = get_template_directory_uri();
[25351] Fix | Delete
[25352] Fix | Delete
$stylesheets = array();
[25353] Fix | Delete
foreach ( $wp_styles->queue as $handler ) {
[25354] Fix | Delete
if ( fs_starts_with( $handler, 'fs_' ) ) {
[25355] Fix | Delete
// Assume that stylesheets that their handler starts with "fs_" belong to the SDK.
[25356] Fix | Delete
continue;
[25357] Fix | Delete
}
[25358] Fix | Delete
[25359] Fix | Delete
/**
[25360] Fix | Delete
* @var _WP_Dependency $stylesheet
[25361] Fix | Delete
*/
[25362] Fix | Delete
$stylesheet = $wp_styles->registered[ $handler ];
[25363] Fix | Delete
[25364] Fix | Delete
if ( fs_starts_with( $stylesheet->src, $theme_styles_url ) ) {
[25365] Fix | Delete
$stylesheets[] = $stylesheet->src;
[25366] Fix | Delete
}
[25367] Fix | Delete
}
[25368] Fix | Delete
[25369] Fix | Delete
if ( ! empty( $stylesheets ) ) {
[25370] Fix | Delete
$this->_cache->set( 'tabs_stylesheets', $stylesheets, 7 * WP_FS__TIME_24_HOURS_IN_SEC );
[25371] Fix | Delete
}
[25372] Fix | Delete
}
[25373] Fix | Delete
[25374] Fix | Delete
/**
[25375] Fix | Delete
* Check if module's original settings page has any tabs.
[25376] Fix | Delete
*
[25377] Fix | Delete
* @author Vova Feldman (@svovaf)
[25378] Fix | Delete
* @since 1.2.2.7
[25379] Fix | Delete
*
[25380] Fix | Delete
* @return bool
[25381] Fix | Delete
*/
[25382] Fix | Delete
private function has_tabs() {
[25383] Fix | Delete
return $this->_cache->has( 'tabs' );
[25384] Fix | Delete
}
[25385] Fix | Delete
[25386] Fix | Delete
/**
[25387] Fix | Delete
* Get module's settings page HTML content, starting
[25388] Fix | Delete
* from the beginning of the <div class="wrap"> element,
[25389] Fix | Delete
* until the tabs HTML (including).
[25390] Fix | Delete
*
[25391] Fix | Delete
* @author Vova Feldman (@svovaf)
[25392] Fix | Delete
* @since 1.2.2.7
[25393] Fix | Delete
*
[25394] Fix | Delete
* @return string
[25395] Fix | Delete
*/
[25396] Fix | Delete
private function get_tabs_html() {
[25397] Fix | Delete
$this->_logger->entrance();
[25398] Fix | Delete
[25399] Fix | Delete
return $this->_cache->get( 'tabs' );
[25400] Fix | Delete
}
[25401] Fix | Delete
[25402] Fix | Delete
/**
[25403] Fix | Delete
* Check if page should include tabs.
[25404] Fix | Delete
*
[25405] Fix | Delete
* @author Vova Feldman (@svovaf)
[25406] Fix | Delete
* @since 1.2.2.7
[25407] Fix | Delete
*
[25408] Fix | Delete
* @return bool
[25409] Fix | Delete
*/
[25410] Fix | Delete
private function should_page_include_tabs() {
[25411] Fix | Delete
if ( ! $this->has_settings_menu() ) {
[25412] Fix | Delete
// Don't add tabs if no settings at all.
[25413] Fix | Delete
return false;
[25414] Fix | Delete
}
[25415] Fix | Delete
[25416] Fix | Delete
if ( self::NAVIGATION_TABS !== $this->_navigation ) {
[25417] Fix | Delete
// Only add tabs to themes for now.
[25418] Fix | Delete
return false;
[25419] Fix | Delete
}
[25420] Fix | Delete
[25421] Fix | Delete
if ( $this->is_theme() && ! $this->has_paid_plan() && ! $this->has_addons() ) {
[25422] Fix | Delete
// Only add tabs to monetizing themes.
[25423] Fix | Delete
return false;
[25424] Fix | Delete
}
[25425] Fix | Delete
[25426] Fix | Delete
if ( ! $this->is_product_settings_page() ) {
[25427] Fix | Delete
// Only add tabs if browsing one of the product's setting pages.
[25428] Fix | Delete
return false;
[25429] Fix | Delete
}
[25430] Fix | Delete
[25431] Fix | Delete
if ( $this->is_activation_mode() && $this->is_activation_page() ) {
[25432] Fix | Delete
// Don't include tabs in the activation page.
[25433] Fix | Delete
return false;
[25434] Fix | Delete
}
[25435] Fix | Delete
[25436] Fix | Delete
if ( $this->is_admin_page( 'pricing' ) && fs_request_get_bool( 'checkout' ) ) {
[25437] Fix | Delete
// Don't add tabs on checkout page, we want to reduce distractions
[25438] Fix | Delete
// as much as possible.
[25439] Fix | Delete
return false;
[25440] Fix | Delete
}
[25441] Fix | Delete
[25442] Fix | Delete
return true;
[25443] Fix | Delete
}
[25444] Fix | Delete
[25445] Fix | Delete
/**
[25446] Fix | Delete
* Add the tabs HTML before the setting's page content and
[25447] Fix | Delete
* enqueue any required stylesheets.
[25448] Fix | Delete
*
[25449] Fix | Delete
* @author Vova Feldman (@svovaf)
[25450] Fix | Delete
* @since 1.2.2.7
[25451] Fix | Delete
*
[25452] Fix | Delete
* @return bool If tabs were included.
[25453] Fix | Delete
*/
[25454] Fix | Delete
function _add_tabs_before_content() {
[25455] Fix | Delete
$this->_logger->entrance();
[25456] Fix | Delete
[25457] Fix | Delete
if ( ! $this->should_page_include_tabs() ) {
[25458] Fix | Delete
return false;
[25459] Fix | Delete
}
[25460] Fix | Delete
[25461] Fix | Delete
$tabs_html = $this->get_tabs_html();
[25462] Fix | Delete
[25463] Fix | Delete
if ( empty( $tabs_html ) ) {
[25464] Fix | Delete
return false;
[25465] Fix | Delete
}
[25466] Fix | Delete
[25467] Fix | Delete
/**
[25468] Fix | Delete
* Enqueue the original stylesheets that are included in the
[25469] Fix | Delete
* theme settings page. That way, if the theme settings has
[25470] Fix | Delete
* some custom _styled_ content above the tabs UI, this
[25471] Fix | Delete
* will make sure that the styling is preserved.
[25472] Fix | Delete
*/
[25473] Fix | Delete
$stylesheets = $this->_cache->get( 'tabs_stylesheets', array() );
[25474] Fix | Delete
if ( is_array( $stylesheets ) ) {
[25475] Fix | Delete
for ( $i = 0, $len = count( $stylesheets ); $i < $len; $i ++ ) {
[25476] Fix | Delete
wp_enqueue_style( "fs_{$this->_module_id}_tabs_{$i}", $stylesheets[ $i ] );
[25477] Fix | Delete
}
[25478] Fix | Delete
}
[25479] Fix | Delete
[25480] Fix | Delete
// Cut closing </div> tag.
[25481] Fix | Delete
echo substr( trim( $tabs_html ), 0, - 6 );
[25482] Fix | Delete
[25483] Fix | Delete
return true;
[25484] Fix | Delete
}
[25485] Fix | Delete
[25486] Fix | Delete
/**
[25487] Fix | Delete
* Add the tabs closing HTML after the setting's page content.
[25488] Fix | Delete
*
[25489] Fix | Delete
* @author Vova Feldman (@svovaf)
[25490] Fix | Delete
* @since 1.2.2.7
[25491] Fix | Delete
*
[25492] Fix | Delete
* @return bool If tabs closing HTML was included.
[25493] Fix | Delete
*/
[25494] Fix | Delete
function _add_tabs_after_content() {
[25495] Fix | Delete
$this->_logger->entrance();
[25496] Fix | Delete
[25497] Fix | Delete
if ( ! $this->should_page_include_tabs() ) {
[25498] Fix | Delete
return false;
[25499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function