Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/tablesome/includes/actions.php
+++ b/tablesome/includes/actions.php
@@ -841,6 +841,7 @@
'site_url' => site_url(),
'date_timezone' => Tablesome_Getter::get( 'date_timezone' ),
'wp_site_search' => Tablesome_Getter::get( 'wp_site_search' ),
+ 'locale' => get_locale(),
];
if ( $is_tablesome_onboarding_page ) {
$tablesome_settings['email_logs_trigger_table_info'] = $this->get_email_logs_trigger_table_info();
--- a/tablesome/includes/functions.php
+++ b/tablesome/includes/functions.php
@@ -610,11 +610,12 @@
$api_credentials_handler = new TablesomeIncludesModulesAPI_Credentials_Handler();
$api_credentials = $api_credentials_handler->get_api_credentials($integration);
- error_log('maybe_refresh_access_token_by_integration $api_credentials: ' . print_r($api_credentials, true));
+ // error_log('maybe_refresh_access_token_by_integration $api_credentials: ' . print_r($api_credentials, true));
$is_access_token_expired = isset($api_credentials["access_token_is_expired"]) && $api_credentials["access_token_is_expired"] == true;
$does_refresh_token_exist = isset($api_credentials["refresh_token"]) && !empty($api_credentials["refresh_token"]);
$should_request_refresh_token = ($is_access_token_expired && $does_refresh_token_exist) || $can_retry;
+ // error_log(' $should_request_refresh_token: ' . print_r($should_request_refresh_token, true));
$log_data = array(
'integration' => $integration,
'is_access_token_expired' => $is_access_token_expired,
--- a/tablesome/includes/lib/berlin-db/core/base.php
+++ b/tablesome/includes/lib/berlin-db/core/base.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined('ABSPATH') || exit;
--- a/tablesome/includes/lib/berlin-db/core/column.php
+++ b/tablesome/includes/lib/berlin-db/core/column.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/lib/berlin-db/core/compare.php
+++ b/tablesome/includes/lib/berlin-db/core/compare.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabaseQueries;
+namespace TablesomeBerlinDBDatabaseQueries;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/lib/berlin-db/core/date.php
+++ b/tablesome/includes/lib/berlin-db/core/date.php
@@ -8,12 +8,12 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabaseQueries;
+namespace TablesomeBerlinDBDatabaseQueries;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
-use BerlinDBDatabaseBase;
+use TablesomeBerlinDBDatabaseBase;
/**
* Class for generating SQL clauses that filter a primary query according to date.
--- a/tablesome/includes/lib/berlin-db/core/meta.php
+++ b/tablesome/includes/lib/berlin-db/core/meta.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.1.0
*/
-namespace BerlinDBDatabaseQueries;
+namespace TablesomeBerlinDBDatabaseQueries;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/lib/berlin-db/core/query.php
+++ b/tablesome/includes/lib/berlin-db/core/query.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined('ABSPATH') || exit;
@@ -78,7 +78,7 @@
* @since 1.0.0
* @var string
*/
- protected $table_schema = '\BerlinDB\Database\Schema';
+ protected $table_schema = '\TablesomeBerlinDB\Database\Schema';
/** Item ******************************************************************/
@@ -114,7 +114,7 @@
* @since 1.0.0
* @var mixed
*/
- protected $item_shape = '\BerlinDB\Database\Row';
+ protected $item_shape = '\TablesomeBerlinDB\Database\Row';
/** Cache *****************************************************************/
@@ -1852,13 +1852,15 @@
*/
public function update_item($item_id = 0, $data = array())
{
-
// Bail if no item ID
$item_id = $this->shape_item_id($item_id);
+
if (empty($item_id)) {
return false;
}
+
+
// Get primary column
$primary = $this->get_primary_column_name();
@@ -1900,6 +1902,7 @@
if (!empty($modified)) {
$save[$modified->name] = $this->get_current_time();
}
+
// Try to update
$where = array($primary => $item_id);
--- a/tablesome/includes/lib/berlin-db/core/row.php
+++ b/tablesome/includes/lib/berlin-db/core/row.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/lib/berlin-db/core/schema.php
+++ b/tablesome/includes/lib/berlin-db/core/schema.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/lib/berlin-db/core/table.php
+++ b/tablesome/includes/lib/berlin-db/core/table.php
@@ -8,7 +8,7 @@
* @license https://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0.0
*/
-namespace BerlinDBDatabase;
+namespace TablesomeBerlinDBDatabase;
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
--- a/tablesome/includes/modules/tablesomedb/berlin-db-adapter.php
+++ b/tablesome/includes/modules/tablesomedb/berlin-db-adapter.php
@@ -6,16 +6,15 @@
exit;
} // Exit if accessed directly
-if (!class_exists('Tablesom
-eIncludesModulesTablesomeDBBerlin_Db_Adapter')) {
- class Berlin_Db_Adapter
+if (!class_exists('TablesomeIncludesModulesTablesomeDBBerlinDB_Db_Adapter')) {
+ class BerlinDB_Db_Adapter
{
public function load()
{
/**
* REQUIRE BERLINDB FILES.
- * For now, BerlinDB files are manually required.
+ * For now, TablesomeBerlinDB files are manually required.
*/
require_once TABLESOME_PATH . 'includes/lib/berlin-db/core/base.php';
require_once TABLESOME_PATH . 'includes/lib/berlin-db/core/column.php';
--- a/tablesome/includes/modules/tablesomedb/model/class-table-query.php
+++ b/tablesome/includes/modules/tablesomedb/model/class-table-query.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Table_Query extends BerlinDBDatabaseQuery
+class Tablesome_Table_Query extends TablesomeBerlinDBDatabaseQuery
{
public $schema_columns = [];
--- a/tablesome/includes/modules/tablesomedb/model/class-table-record.php
+++ b/tablesome/includes/modules/tablesomedb/model/class-table-record.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Table_Record extends BerlinDBDatabaseRow
+class Tablesome_Table_Record extends TablesomeBerlinDBDatabaseRow
{
/**
--- a/tablesome/includes/modules/tablesomedb/model/class-table-schema.php
+++ b/tablesome/includes/modules/tablesomedb/model/class-table-schema.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Table_Schema extends BerlinDBDatabaseSchema
+class Tablesome_Table_Schema extends TablesomeBerlinDBDatabaseSchema
{
public $columns = array();
--- a/tablesome/includes/modules/tablesomedb/model/class-table.php
+++ b/tablesome/includes/modules/tablesomedb/model/class-table.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Table extends BerlinDBDatabaseTable
+class Tablesome_Table extends TablesomeBerlinDBDatabaseTable
{
public $table_schema = array();
--- a/tablesome/includes/modules/workflow/event-log/model/class-event-log-query.php
+++ b/tablesome/includes/modules/workflow/event-log/model/class-event-log-query.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Event_Log_Table_Query extends BerlinDBDatabaseQuery
+class Tablesome_Event_Log_Table_Query extends TablesomeBerlinDBDatabaseQuery
{
/**
--- a/tablesome/includes/modules/workflow/event-log/model/class-event-log-row.php
+++ b/tablesome/includes/modules/workflow/event-log/model/class-event-log-row.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Event_Log_Table_Row extends BerlinDBDatabaseRow
+class Tablesome_Event_Log_Table_Row extends TablesomeBerlinDBDatabaseRow
{
public function __construct($item)
--- a/tablesome/includes/modules/workflow/event-log/model/class-event-log-schema.php
+++ b/tablesome/includes/modules/workflow/event-log/model/class-event-log-schema.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Event_Log_Table_Schema extends BerlinDBDatabaseSchema
+class Tablesome_Event_Log_Table_Schema extends TablesomeBerlinDBDatabaseSchema
{
public $columns = array(
--- a/tablesome/includes/modules/workflow/event-log/model/class-event-log.php
+++ b/tablesome/includes/modules/workflow/event-log/model/class-event-log.php
@@ -4,7 +4,7 @@
exit;
}
-class Tablesome_Event_Log extends BerlinDBDatabaseTable
+class Tablesome_Event_Log extends TablesomeBerlinDBDatabaseTable
{
/**
* Table name, without the global table prefix.
--- a/tablesome/tablesome.php
+++ b/tablesome/tablesome.php
@@ -5,7 +5,7 @@
Plugin URI: https://tablesomewp.com/
Description: Powerful Tables + Form Automations. Save, Edit, Display (frontend) & Export Form entries, integrate with Notion, Redirection for Forms. Supports Contact Form 7, WPForms, Gravity Forms, Fluent, Elementor and more
Author: Pauple
-Version: 1.1.13
+Version: 1.1.17
Author URI: http://pauple.com
Network: False
Text Domain: tablesome
@@ -46,7 +46,7 @@
{
$constants = [
- 'TABLESOME_VERSION' => '1.1.13',
+ 'TABLESOME_VERSION' => '1.1.17',
'TABLESOME_DOMAIN' => 'tablesome',
'TABLESOME_CPT' => 'tablesome_cpt',
'TABLESOME__FILE__' => __FILE__,
--- a/tablesome/vendor/autoload.php
+++ b/tablesome/vendor/autoload.php
@@ -22,4 +22,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit0644e96cfacb2ca4ff8746091848ba2b::getLoader();
+return ComposerAutoloaderInit8ab3e2319f5b05a6517d8a0c363ed38f::getLoader();
--- a/tablesome/vendor/composer/autoload_classmap.php
+++ b/tablesome/vendor/composer/autoload_classmap.php
@@ -6,20 +6,20 @@
$baseDir = dirname($vendorDir);
return array(
- 'BerlinDB\Database\Base' => $baseDir . '/includes/lib/berlin-db/core/base.php',
- 'BerlinDB\Database\Column' => $baseDir . '/includes/lib/berlin-db/core/column.php',
- 'BerlinDB\Database\Queries\Compare' => $baseDir . '/includes/lib/berlin-db/core/compare.php',
- 'BerlinDB\Database\Queries\Date' => $baseDir . '/includes/lib/berlin-db/core/date.php',
- 'BerlinDB\Database\Queries\Meta' => $baseDir . '/includes/lib/berlin-db/core/meta.php',
- 'BerlinDB\Database\Query' => $baseDir . '/includes/lib/berlin-db/core/query.php',
- 'BerlinDB\Database\Row' => $baseDir . '/includes/lib/berlin-db/core/row.php',
- 'BerlinDB\Database\Schema' => $baseDir . '/includes/lib/berlin-db/core/schema.php',
- 'BerlinDB\Database\Table' => $baseDir . '/includes/lib/berlin-db/core/table.php',
'Composer\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'FPDF' => $baseDir . '/includes/lib/fpdf/fpdf.php',
'PDF_HTML' => $baseDir . '/includes/lib/fpdf/pdf-html.php',
'TTFParser' => $baseDir . '/includes/lib/fpdf/makefont/ttfparser.php',
'Tablesome' => $baseDir . '/includes/plugin.php',
+ 'Tablesome\BerlinDB\Database\Base' => $baseDir . '/includes/lib/berlin-db/core/base.php',
+ 'Tablesome\BerlinDB\Database\Column' => $baseDir . '/includes/lib/berlin-db/core/column.php',
+ 'Tablesome\BerlinDB\Database\Queries\Compare' => $baseDir . '/includes/lib/berlin-db/core/compare.php',
+ 'Tablesome\BerlinDB\Database\Queries\Date' => $baseDir . '/includes/lib/berlin-db/core/date.php',
+ 'Tablesome\BerlinDB\Database\Queries\Meta' => $baseDir . '/includes/lib/berlin-db/core/meta.php',
+ 'Tablesome\BerlinDB\Database\Query' => $baseDir . '/includes/lib/berlin-db/core/query.php',
+ 'Tablesome\BerlinDB\Database\Row' => $baseDir . '/includes/lib/berlin-db/core/row.php',
+ 'Tablesome\BerlinDB\Database\Schema' => $baseDir . '/includes/lib/berlin-db/core/schema.php',
+ 'Tablesome\BerlinDB\Database\Table' => $baseDir . '/includes/lib/berlin-db/core/table.php',
'Tablesome\Components\CellTypes\Button' => $baseDir . '/components/cell-types/button.php',
'Tablesome\Components\CellTypes\Date' => $baseDir . '/components/cell-types/date.php',
'Tablesome\Components\CellTypes\Email' => $baseDir . '/components/cell-types/email.php',
@@ -94,7 +94,7 @@
'Tablesome\Includes\Modules\Proxy' => $baseDir . '/includes/modules/proxy.php',
'Tablesome\Includes\Modules\Review_Notification' => $baseDir . '/includes/modules/review-notification.php',
'Tablesome\Includes\Modules\Tables\Tables' => $baseDir . '/includes/modules/tables/tables.php',
- 'Tablesome\Includes\Modules\TablesomeDB\Berlin_Db_Adapter' => $baseDir . '/includes/modules/tablesomedb/berlin-db-adapter.php',
+ 'Tablesome\Includes\Modules\TablesomeDB\BerlinDB_Db_Adapter' => $baseDir . '/includes/modules/tablesomedb/berlin-db-adapter.php',
'Tablesome\Includes\Modules\TablesomeDB\Schema_Generator' => $baseDir . '/includes/modules/tablesomedb/schema-generator.php',
'Tablesome\Includes\Modules\TablesomeDB\TablesomeDB' => $baseDir . '/includes/modules/tablesomedb/tablesomedb.php',
'Tablesome\Includes\Modules\TablesomeDB\TablesomeDB_New' => $baseDir . '/includes/modules/tablesomedb/tablesomedb-new.php',
--- a/tablesome/vendor/composer/autoload_real.php
+++ b/tablesome/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit0644e96cfacb2ca4ff8746091848ba2b
+class ComposerAutoloaderInit8ab3e2319f5b05a6517d8a0c363ed38f
{
private static $loader;
@@ -22,12 +22,12 @@
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInit0644e96cfacb2ca4ff8746091848ba2b', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit8ab3e2319f5b05a6517d8a0c363ed38f', 'loadClassLoader'), true, true);
self::$loader = $loader = new ComposerAutoloadClassLoader(dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit0644e96cfacb2ca4ff8746091848ba2b', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit8ab3e2319f5b05a6517d8a0c363ed38f', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(ComposerAutoloadComposerStaticInit0644e96cfacb2ca4ff8746091848ba2b::getInitializer($loader));
+ call_user_func(ComposerAutoloadComposerStaticInit8ab3e2319f5b05a6517d8a0c363ed38f::getInitializer($loader));
$loader->register(true);
--- a/tablesome/vendor/composer/autoload_static.php
+++ b/tablesome/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace ComposerAutoload;
-class ComposerStaticInit0644e96cfacb2ca4ff8746091848ba2b
+class ComposerStaticInit8ab3e2319f5b05a6517d8a0c363ed38f
{
public static $prefixLengthsPsr4 = array (
'P' =>
@@ -29,20 +29,20 @@
);
public static $classMap = array (
- 'BerlinDB\Database\Base' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/base.php',
- 'BerlinDB\Database\Column' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/column.php',
- 'BerlinDB\Database\Queries\Compare' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/compare.php',
- 'BerlinDB\Database\Queries\Date' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/date.php',
- 'BerlinDB\Database\Queries\Meta' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/meta.php',
- 'BerlinDB\Database\Query' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/query.php',
- 'BerlinDB\Database\Row' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/row.php',
- 'BerlinDB\Database\Schema' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/schema.php',
- 'BerlinDB\Database\Table' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/table.php',
'Composer\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'FPDF' => __DIR__ . '/../..' . '/includes/lib/fpdf/fpdf.php',
'PDF_HTML' => __DIR__ . '/../..' . '/includes/lib/fpdf/pdf-html.php',
'TTFParser' => __DIR__ . '/../..' . '/includes/lib/fpdf/makefont/ttfparser.php',
'Tablesome' => __DIR__ . '/../..' . '/includes/plugin.php',
+ 'Tablesome\BerlinDB\Database\Base' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/base.php',
+ 'Tablesome\BerlinDB\Database\Column' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/column.php',
+ 'Tablesome\BerlinDB\Database\Queries\Compare' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/compare.php',
+ 'Tablesome\BerlinDB\Database\Queries\Date' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/date.php',
+ 'Tablesome\BerlinDB\Database\Queries\Meta' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/meta.php',
+ 'Tablesome\BerlinDB\Database\Query' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/query.php',
+ 'Tablesome\BerlinDB\Database\Row' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/row.php',
+ 'Tablesome\BerlinDB\Database\Schema' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/schema.php',
+ 'Tablesome\BerlinDB\Database\Table' => __DIR__ . '/../..' . '/includes/lib/berlin-db/core/table.php',
'Tablesome\Components\CellTypes\Button' => __DIR__ . '/../..' . '/components/cell-types/button.php',
'Tablesome\Components\CellTypes\Date' => __DIR__ . '/../..' . '/components/cell-types/date.php',
'Tablesome\Components\CellTypes\Email' => __DIR__ . '/../..' . '/components/cell-types/email.php',
@@ -117,7 +117,7 @@
'Tablesome\Includes\Modules\Proxy' => __DIR__ . '/../..' . '/includes/modules/proxy.php',
'Tablesome\Includes\Modules\Review_Notification' => __DIR__ . '/../..' . '/includes/modules/review-notification.php',
'Tablesome\Includes\Modules\Tables\Tables' => __DIR__ . '/../..' . '/includes/modules/tables/tables.php',
- 'Tablesome\Includes\Modules\TablesomeDB\Berlin_Db_Adapter' => __DIR__ . '/../..' . '/includes/modules/tablesomedb/berlin-db-adapter.php',
+ 'Tablesome\Includes\Modules\TablesomeDB\BerlinDB_Db_Adapter' => __DIR__ . '/../..' . '/includes/modules/tablesomedb/berlin-db-adapter.php',
'Tablesome\Includes\Modules\TablesomeDB\Schema_Generator' => __DIR__ . '/../..' . '/includes/modules/tablesomedb/schema-generator.php',
'Tablesome\Includes\Modules\TablesomeDB\TablesomeDB' => __DIR__ . '/../..' . '/includes/modules/tablesomedb/tablesomedb.php',
'Tablesome\Includes\Modules\TablesomeDB\TablesomeDB_New' => __DIR__ . '/../..' . '/includes/modules/tablesomedb/tablesomedb-new.php',
@@ -221,9 +221,9 @@
public static function getInitializer(ClassLoader $loader)
{
return Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit0644e96cfacb2ca4ff8746091848ba2b::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit0644e96cfacb2ca4ff8746091848ba2b::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInit0644e96cfacb2ca4ff8746091848ba2b::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInit8ab3e2319f5b05a6517d8a0c363ed38f::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit8ab3e2319f5b05a6517d8a0c363ed38f::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit8ab3e2319f5b05a6517d8a0c363ed38f::$classMap;
}, null, ClassLoader::class);
}
--- a/tablesome/vendor/composer/installed.php
+++ b/tablesome/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'pauple/tablesome',
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => 'a956477244e5b486726a8d532dfef27f92a97213',
+ 'reference' => '946aceb813f9cdcb925acaa3409f734ef3d9e874',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -20,20 +20,18 @@
'dev_requirement' => false,
),
'pauple/pluginator' => array(
- 'pretty_version' => 'dev-main',
- 'version' => 'dev-main',
- 'reference' => '95e30a70d123b51fd7a37cb4e3c96c2509c3b4dd',
+ 'pretty_version' => 'dev-release/0.3.6',
+ 'version' => 'dev-release/0.3.6',
+ 'reference' => '26ad26a140fafe9c4c0d4513953953e519e74bf7',
'type' => 'pauple-library',
'install_path' => __DIR__ . '/../pauple/pluginator',
- 'aliases' => array(
- 0 => '9999999-dev',
- ),
+ 'aliases' => array(),
'dev_requirement' => false,
),
'pauple/tablesome' => array(
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => 'a956477244e5b486726a8d532dfef27f92a97213',
+ 'reference' => '946aceb813f9cdcb925acaa3409f734ef3d9e874',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
--- a/tablesome/vendor/pauple/pluginator/pluginator.php
+++ b/tablesome/vendor/pauple/pluginator/pluginator.php
@@ -3,11 +3,11 @@
Library Name: Plugination
Description: A library to manage plugins
Author: HelpieWP
-Version: 0.3.3
+Version: 0.3.6
*/
-define('PLUGINATOR_VERSION', '0.3.3');
+define('PLUGINATOR_VERSION', '0.3.6');
define('PLUGINATOR__FILE__', __FILE__);
define('PLUGINATOR_PATH', dirname(PLUGINATOR__FILE__));
define('PLUGINATOR_SRC_PATH', dirname(PLUGINATOR__FILE__) . '/src');
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/class-freemius.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/class-freemius.php
@@ -110,6 +110,12 @@
private $_enable_anonymous = true;
/**
+ * @since 2.9.1
+ * @var string|null Hints the SDK whether the plugin supports parallel activation mode, preventing the auto-deactivation of the free version when the premium version is activated, and vice versa.
+ */
+ private $_premium_plugin_basename_from_parallel_activation;
+
+ /**
* @since 1.1.7.5
* @var bool Hints the SDK if plugin should run in anonymous mode (only adds feedback form).
*/
@@ -1651,6 +1657,31 @@
);
}
}
+
+ if (
+ $this->is_user_in_admin() &&
+ $this->is_parallel_activation() &&
+ $this->_premium_plugin_basename !== $this->_premium_plugin_basename_from_parallel_activation
+ ) {
+ $this->_premium_plugin_basename = $this->_premium_plugin_basename_from_parallel_activation;
+
+ register_activation_hook(
+ dirname( $this->_plugin_dir_path ) . '/' . $this->_premium_plugin_basename,
+ array( &$this, '_activate_plugin_event_hook' )
+ );
+ }
+ }
+
+ /**
+ * Determines if a plugin is running in parallel activation mode.
+ *
+ * @author Leo Fajardo (@leorw)
+ * @since 2.9.1
+ *
+ * @return bool
+ */
+ private function is_parallel_activation() {
+ return ! empty( $this->_premium_plugin_basename_from_parallel_activation );
}
/**
@@ -5155,11 +5186,35 @@
$this->_plugin :
new FS_Plugin();
+ $is_premium = $this->get_bool_option( $plugin_info, 'is_premium', true );
$premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
+ $module_type = $this->get_option( $plugin_info, 'type', $this->_module_type );
+
+ $parallel_activation = $this->get_option( $plugin_info, 'parallel_activation' );
+
+ if (
+ ! $is_premium &&
+ is_array( $parallel_activation ) &&
+ ( WP_FS__MODULE_TYPE_PLUGIN === $module_type ) &&
+ $this->get_bool_option( $parallel_activation, 'enabled' )
+ ) {
+ $premium_basename = $this->get_option( $parallel_activation, 'premium_version_basename' );
+
+ if ( empty( $premium_basename ) ) {
+ throw new Exception('You need to specify the premium version basename to enable parallel version activation.');
+ }
+
+ $this->_premium_plugin_basename_from_parallel_activation = $premium_basename;
+
+ if ( is_plugin_active( $premium_basename ) ) {
+ $is_premium = true;
+ }
+ }
+
$plugin->update( array(
'id' => $id,
- 'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
+ 'type' => $module_type,
'public_key' => $public_key,
'slug' => $this->_slug,
'premium_slug' => $this->get_option( $plugin_info, 'premium_slug', "{$this->_slug}-premium" ),
@@ -5167,7 +5222,7 @@
'version' => $this->get_plugin_version(),
'title' => $this->get_plugin_name( $premium_suffix ),
'file' => $this->_plugin_basename,
- 'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
+ 'is_premium' => $is_premium,
'premium_suffix' => $premium_suffix,
'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
@@ -5236,7 +5291,14 @@
$this->_anonymous_mode = false;
} else {
$this->_enable_anonymous = $this->get_bool_option( $plugin_info, 'enable_anonymous', true );
- $this->_anonymous_mode = $this->get_bool_option( $plugin_info, 'anonymous_mode', false );
+ $this->_anonymous_mode = (
+ $this->get_bool_option( $plugin_info, 'anonymous_mode', false ) ||
+ (
+ $this->apply_filters( 'playground_anonymous_mode', true ) &&
+ ! empty( $_SERVER['HTTP_HOST'] ) &&
+ FS_Site::is_playground_wp_environment_by_host( $_SERVER['HTTP_HOST'] )
+ )
+ );
}
$this->_permissions = $this->get_option( $plugin_info, 'permissions', array() );
$this->_is_bundle_license_auto_activation_enabled = $this->get_option( $plugin_info, 'bundle_license_auto_activation', false );
@@ -5444,7 +5506,7 @@
if ( $this->is_registered() ) {
// Schedule code type changes event.
- $this->schedule_install_sync();
+ $this->maybe_schedule_install_sync_cron();
}
/**
@@ -6508,6 +6570,33 @@
}
/**
+ * Instead of running blocking install sync event, execute non blocking scheduled cron job.
+ *
+ * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding specified blog ID from being the cron job executor.
+ *
+ * @author Leo Fajardo (@leorw)
+ * @since 2.9.1
+ */
+ private function maybe_schedule_install_sync_cron( $except_blog_id = 0 ) {
+ if ( ! $this->is_user_in_admin() ) {
+ return;
+ }
+
+ if ( $this->is_clone() ) {
+ return;
+ }
+
+ if (
+ // The event has been properly scheduled, so no need to reschedule it.
+ is_numeric( $this->next_install_sync() )
+ ) {
+ return;
+ }
+
+ $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
+ }
+
+ /**
* @author Vova Feldman (@svovaf)
* @since 1.1.7.3
*
@@ -6605,22 +6694,6 @@
}
/**
- * Instead of running blocking install sync event, execute non blocking scheduled wp-cron.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.7.3
- *
- * @param int $except_blog_id Since 2.0.0 when running in a multisite network environment, the cron execution is consolidated. This param allows excluding excluded specified blog ID from being the cron executor.
- */
- private function schedule_install_sync( $except_blog_id = 0 ) {
- if ( $this->is_clone() ) {
- return;
- }
-
- $this->schedule_cron( 'install_sync', 'install_sync', 'single', WP_FS__SCRIPT_START_TIME, false, $except_blog_id );
- }
-
- /**
* Unix timestamp for previous install sync cron execution or false if never executed.
*
* @todo There's some very strange bug that $this->_storage->install_sync_timestamp value is not being updated. But for sure the sync event is working.
@@ -7411,7 +7484,7 @@
*/
if (
is_plugin_active( $other_version_basename ) &&
- $this->apply_filters( 'deactivate_on_activation', true )
+ $this->apply_filters( 'deactivate_on_activation', ! $this->is_parallel_activation() )
) {
deactivate_plugins( $other_version_basename );
}
@@ -7425,7 +7498,7 @@
// Schedule re-activation event and sync.
// $this->sync_install( array(), true );
- $this->schedule_install_sync();
+ $this->maybe_schedule_install_sync_cron();
// If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
if ( $is_premium_version_activation ) {
@@ -8616,7 +8689,7 @@
return;
}
- $this->schedule_install_sync();
+ $this->maybe_schedule_install_sync_cron();
// $this->sync_install( array(), true );
}
@@ -15974,7 +16047,7 @@
if ( $this->is_install_sync_scheduled() &&
$context_blog_id == $this->get_install_sync_cron_blog_id()
) {
- $this->schedule_install_sync( $context_blog_id );
+ $this->maybe_schedule_install_sync_cron( $context_blog_id );
}
}
@@ -23927,13 +24000,15 @@
// Start trial button.
$button = ' ' . sprintf(
- '<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s ➜</button></a>',
+ '<div><a class="button button-primary" href="%s">%s ➜</a></div>',
$trial_url,
$this->get_text_x_inline( 'Start free trial', 'call to action', 'start-free-trial' )
);
+ $message_text = $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string}" );
+
$this->_admin_notices->add_sticky(
- $this->apply_filters( 'trial_promotion_message', "{$message} {$cc_string} {$button}" ),
+ "<div class="fs-trial-message-container"><div>{$message_text}</div> {$button}</div>",
'trial_promotion',
'',
'promotion'
@@ -25403,7 +25478,7 @@
$img_dir = WP_FS__DIR_IMG;
// Locate the main assets folder.
- if ( 1 < count( $fs_active_plugins->plugins ) ) {
+ if ( ! empty( $fs_active_plugins->plugins ) ) {
$plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/class-fs-plugin-updater.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/class-fs-plugin-updater.php
@@ -542,24 +542,8 @@
global $wp_current_filter;
- $current_plugin_version = $this->_fs->get_plugin_version();
-
- if ( ! empty( $wp_current_filter ) && 'upgrader_process_complete' === $wp_current_filter[0] ) {
- if (
- is_null( $this->_update_details ) ||
- ( is_object( $this->_update_details ) && $this->_update_details->new_version !== $current_plugin_version )
- ) {
- /**
- * After an update, clear the stored update details and reparse the plugin's main file in order to get
- * the updated version's information and prevent the previous update information from showing up on the
- * updates page.
- *
- * @author Leo Fajardo (@leorw)
- * @since 2.3.1
- */
- $this->_update_details = null;
- $current_plugin_version = $this->_fs->get_plugin_version( true );
- }
+ if ( ! empty( $wp_current_filter ) && in_array( 'upgrader_process_complete', $wp_current_filter ) ) {
+ return $transient_data;
}
if ( ! isset( $this->_update_details ) ) {
@@ -568,7 +552,7 @@
false,
fs_request_get_bool( 'force-check' ),
FS_Plugin_Updater::UPDATES_CHECK_CACHE_EXPIRATION,
- $current_plugin_version
+ $this->_fs->get_plugin_version()
);
$this->_update_details = false;
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-plugin-plan.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-plugin-plan.php
@@ -13,7 +13,6 @@
/**
* Class FS_Plugin_Plan
*
- * @property FS_Pricing[] $pricing
*/
class FS_Plugin_Plan extends FS_Entity {
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-site.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-site.php
@@ -10,16 +10,16 @@
exit;
}
- /**
- * @property int $blog_id
- */
- #[AllowDynamicProperties]
class FS_Site extends FS_Scope_Entity {
/**
* @var number
*/
public $site_id;
/**
+ * @var int
+ */
+ public $blog_id;
+ /**
* @var number
*/
public $plugin_id;
@@ -190,7 +190,7 @@
fs_ends_with( $subdomain, '.cloudwaysapps.com' ) ||
// Kinsta
(
- ( fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
+ ( fs_starts_with( $subdomain, 'stg-' ) || fs_starts_with( $subdomain, 'staging-' ) || fs_starts_with( $subdomain, 'env-' ) ) &&
( fs_ends_with( $subdomain, '.kinsta.com' ) || fs_ends_with( $subdomain, '.kinsta.cloud' ) )
) ||
// DesktopServer
@@ -208,6 +208,40 @@
);
}
+ /**
+ * @author Leo Fajardo (@leorw)
+ * @since 2.9.1
+ *
+ * @param string $host
+ *
+ * @return bool
+ */
+ static function is_playground_wp_environment_by_host( $host ) {
+ // Services aimed at providing a WordPress sandbox environment.
+ $sandbox_wp_environment_domains = array(
+ // InstaWP
+ 'instawp.xyz',
+
+ // TasteWP
+ 'tastewp.com',
+
+ // WordPress Playground
+ 'playground.wordpress.net',
+ );
+
+ foreach ( $sandbox_wp_environment_domains as $domain) {
+ if (
+ ( $host === $domain ) ||
+ fs_ends_with( $host, '.' . $domain ) ||
+ fs_ends_with( $host, '-' . $domain )
+ ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
function is_localhost() {
return ( WP_FS__IS_LOCALHOST_FOR_SERVER || self::is_localhost_by_address( $this->url ) );
}
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-user.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/entities/class-fs-user.php
@@ -48,6 +48,19 @@
parent::__construct( $user );
}
+ /**
+ * This method removes the deprecated 'is_beta' property from the serialized data.
+ * Should clean up the serialized data to avoid PHP 8.2 warning on next execution.
+ *
+ * @return void
+ */
+ function __wakeup() {
+ if ( property_exists( $this, 'is_beta' ) ) {
+ // If we enter here, and we are running PHP 8.2, we already had the warning. But we sanitize data for next execution.
+ unset( $this->is_beta );
+ }
+ }
+
function get_name() {
return trim( ucfirst( trim( is_string( $this->first ) ? $this->first : '' ) ) . ' ' . ucfirst( trim( is_string( $this->last ) ? $this->last : '' ) ) );
}
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/managers/class-fs-admin-menu-manager.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/managers/class-fs-admin-menu-manager.php
@@ -699,16 +699,36 @@
$menu = $this->find_main_submenu();
}
+ $menu_slug = $menu['menu'][2];
$parent_slug = isset( $menu['parent_slug'] ) ?
- $menu['parent_slug'] :
- 'admin.php';
+ $menu['parent_slug'] :
+ 'admin.php';
- return admin_url(
- $parent_slug .
- ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
- 'page=' .
- $menu['menu'][2]
- );
+ if ( fs_apply_filter( $this->_module_unique_affix, 'enable_cpt_advanced_menu_logic', false ) ) {
+ $parent_slug = 'admin.php';
+
+ /**
+ * This line and the `if` block below it are based on the `menu_page_url()` function of WordPress.
+ *
+ * @author Leo Fajardo (@leorw)
+ * @since 2.10.2
+ */
+ global $_parent_pages;
+
+ if ( ! empty( $_parent_pages[ $menu_slug ] ) ) {
+ $_parent_slug = $_parent_pages[ $menu_slug ];
+ $parent_slug = isset( $_parent_pages[ $_parent_slug ] ) ?
+ $parent_slug :
+ $menu['parent_slug'];
+ }
+ }
+
+ return admin_url(
+ $parent_slug .
+ ( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
+ 'page=' .
+ $menu_slug
+ );
}
/**
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/managers/class-fs-admin-notice-manager.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/includes/managers/class-fs-admin-notice-manager.php
@@ -194,8 +194,14 @@
* @since 1.0.7
*/
static function _add_sticky_dismiss_javascript() {
+ $sticky_admin_notice_js_template_name = 'sticky-admin-notice-js.php';
+
+ if ( ! file_exists( fs_get_template_path( $sticky_admin_notice_js_template_name ) ) ) {
+ return;
+ }
+
$params = array();
- fs_require_once_template( 'sticky-admin-notice-js.php', $params );
+ fs_require_once_template( $sticky_admin_notice_js_template_name, $params );
}
private static $_added_sticky_javascript = false;
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/start.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/start.php
@@ -15,7 +15,7 @@
*
* @var string
*/
- $this_sdk_version = '2.9.0';
+ $this_sdk_version = '2.11.0';
#region SDK Selection Logic --------------------------------------------------------------------
@@ -36,7 +36,16 @@
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
}
- /**
+ /**
+ * We updated the logic to support SDK loading from a subfolder of a theme as well as from a parent theme
+ * If the SDK is found in the active theme, it sets the relative path accordingly.
+ * If not, it checks the parent theme and sets the relative path if found there.
+ * This allows the SDK to be loaded from composer dependencies or from a custom `vendor/freemius` folder.
+ *
+ * @author Daniele Alessandra (@DanieleAlessandra)
+ * @since 2.9.0.5
+ *
+ *
* This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
* that if it's a file from an SDK running in a theme, the location of the SDK
* is in the main theme's folder.
@@ -83,16 +92,50 @@
*/
$themes_directory = get_theme_root( get_stylesheet() );
$themes_directory_name = basename( $themes_directory );
- $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
- if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
- ) {
- $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
- $is_theme = true;
- } else {
- $this_sdk_relative_path = plugin_basename( $fs_root_path );
- $is_theme = false;
- }
+ // This change ensures that the condition works even if the SDK is located in a subdirectory (e.g., vendor)
+ $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_stylesheet() . '/', '', $fs_root_path );
+
+ // Check if the current file is part of the active theme.
+ $is_current_sdk_from_active_theme = $file_path == $themes_directory . '/' . get_stylesheet() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
+ $is_current_sdk_from_parent_theme = false;
+
+ // Check if the current file is part of the parent theme.
+ if ( ! $is_current_sdk_from_active_theme ) {
+ $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_template() . '/',
+ '',
+ $fs_root_path );
+ $is_current_sdk_from_parent_theme = $file_path == $themes_directory . '/' . get_template() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
+ }
+
+ $theme_name = null;
+ if ( $is_current_sdk_from_active_theme ) {
+ $theme_name = get_stylesheet();
+ $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
+ $is_theme = true;
+ } else if ( $is_current_sdk_from_parent_theme ) {
+ $theme_name = get_template();
+ $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
+ $is_theme = true;
+ } else {
+ $this_sdk_relative_path = plugin_basename( $fs_root_path );
+ $is_theme = false;
+
+ /**
+ * If this file was included from another plugin with lower SDK version, and if this plugin is symlinked, then we need to get the actual plugin path,
+ * as the value right now will be wrong, it will only remove the directory separator from the file_path.
+ *
+ * The check of `fs_find_direct_caller_plugin_file` determines that this file was indeed included by a different plugin than the main plugin.
+ */
+ if ( DIRECTORY_SEPARATOR . $this_sdk_relative_path === $fs_root_path && function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
+ $original_plugin_dir_name = dirname( fs_find_direct_caller_plugin_file( $file_path ) );
+
+ // Remove everything before the original plugin directory name.
+ $this_sdk_relative_path = substr( $this_sdk_relative_path, strpos( $this_sdk_relative_path, $original_plugin_dir_name ) );
+
+ unset( $original_plugin_dir_name );
+ }
+ }
if ( ! isset( $fs_active_plugins ) ) {
// Load all Freemius powered active plugins.
@@ -176,7 +219,8 @@
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
) {
if ( $is_theme ) {
- $plugin_path = basename( dirname( $this_sdk_relative_path ) );
+ // Saving relative path and not only directory name as it could be a subfolder
+ $plugin_path = $theme_name;
} else {
$plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
}
@@ -225,11 +269,23 @@
$is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
- if ( ! $is_newest_sdk_type_theme ) {
- $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
- } else {
- $current_theme = wp_get_theme();
- $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
+ /**
+ * @var bool $is_newest_sdk_module_active
+ * True if the plugin with the newest SDK is active.
+ * True if the newest SDK is part of the current theme or current theme's parent.
+ * False otherwise.
+ */
+ if ( ! $is_newest_sdk_type_theme ) {
+ $is_newest_sdk_module_active = is_plugin_active( $fs_newest_sdk->plugin_path );
+ } else {
+ $current_theme = wp_get_theme();
+ // Detect if current theme is the one registered as newer SDK
+ $is_newest_sdk_module_active = (
+ strpos(
+ $fs_newest_sdk->plugin_path,
+ '../' . $themes_directory_name . '/' . $current_theme->get_stylesheet() . '/'
+ ) === 0
+ );
$current_theme_parent = $current_theme->parent();
@@ -237,13 +293,19 @@
* If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
* from happening by keeping the SDK info stored in the `fs_active_plugins` option.
*/
- if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
- $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
+ if ( ! $is_newest_sdk_module_active && $current_theme_parent instanceof WP_Theme ) {
+ // Detect if current theme parent is the one registered as newer SDK
+ $is_newest_sdk_module_active = (
+ strpos(
+ $fs_newest_sdk->plugin_path,
+ '../' . $themes_directory_name . '/' . $current_theme_parent->get_stylesheet() . '/'
+ ) === 0
+ );
}
}
if ( $is_current_sdk_newest &&
- ! $is_newest_sdk_plugin_active &&
+ ! $is_newest_sdk_module_active &&
! $fs_active_plugins->newest->in_activation
) {
// If current SDK is the newest and the plugin is NOT active, it means
@@ -262,14 +324,14 @@
. '/start.php' );
}
- $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
+ $is_newest_sdk_path_valid = ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
// Plugin with newest SDK is no longer active, or SDK was moved to a different location.
unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
}
- if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
+ if ( ! ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) ||
! $is_newest_sdk_path_valid ||
// Is newest SDK downgraded.
( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
@@ -284,7 +346,7 @@
// Find the active plugin with the newest SDK version and update the newest reference.
fs_fallback_to_newest_active_sdk();
} else {
- if ( $is_newest_sdk_plugin_active &&
+ if ( $is_newest_sdk_module_active &&
$this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
( $fs_active_plugins->newest->in_activation ||
( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
@@ -313,7 +375,7 @@
return;
}
- if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
+ if ( isset( $fs_active_plugins->newest ) && version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
$newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
$plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/templates/forms/license-activation.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/templates/forms/license-activation.php
@@ -569,7 +569,7 @@
licenseKey = $otherLicenseKey.val();
} else {
if ( ! hasLicensesDropdown ) {
- licenseID = $availableLicenseKey.data( 'id' );
+ licenseID = $availableLicenseKey.data( 'id' ).toString();
} else {
licenseID = $licensesDropdown.val();
}
--- a/tablesome/vendor/pauple/pluginator/src/Library/freemius/templates/pricing.php
+++ b/tablesome/vendor/pauple/pluginator/src/Library/freemius/templates/pricing.php
@@ -69,6 +69,11 @@
wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
+ $pricing_css_path = $fs->apply_filters( 'pricing/css_path', null );
+ if ( is_string( $pricing_css_path ) ) {
+ wp_enqueue_style( 'freemius-pricing', fs_asset_url( $pricing_css_path ) );
+ }
+
$has_tabs = $fs->_add_tabs_before_content();
if ( $has_tabs ) {
@@ -95,6 +100,8 @@
'unique_affix' => $fs->get_unique_affix(),
'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ),
'license' => $fs->has_active_valid_license() ? $fs->_get_license() : null,
+ 'plugin_icon' => $fs->get_local_icon_url(),
+ 'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ),
), $query_params );
wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' );
--- a/tablesome/vendor/pauple/pluginator/src/Widgetry/ElementorWidgetBase.php
+++ b/tablesome/vendor/pauple/pluginator/src/Widgetry/ElementorWidgetBase.php
@@ -7,8 +7,8 @@
// } // Exit if accessed directly
use ElementorControls_Manager;
-use ElementorCoreSchemesColor;
-use ElementorCoreSchemesTypography;
+use ElementorCoreKitsDocumentsTabsGlobal_Colors;
+use ElementorCoreKitsDocumentsTabsGlobal_Typography;
use ElementorGroup_Control_Background;
use ElementorGroup_Control_Border;
use ElementorGroup_Control_Box_Shadow;
@@ -32,11 +32,11 @@
public function get_style_depends()
{
- error_log('get_style_depends - args: ' . print_r($this->args, true));
- error_log('get_style_depends - data: ' . print_r($this->data, true));
+ // error_log('get_style_depends - args: ' . print_r($this->args, true));
+ // error_log('get_style_depends - data: ' . print_r($this->data, true));
$style_depends = isset($this->args['style_depends']) ? $this->args['style_depends'] : [];
- error_log('get_style_depends: ' . print_r($style_depends, true));
+ // error_log('get_style_depends: ' . print_r($style_depends, true));
return $style_depends;
}
@@ -216,9 +216,8 @@
[
'label' => __($label . ' Color', 'pauple-helpie'),
'type' => Controls_Manager::COLOR,
- 'scheme' => [
- 'type' => Color::get_type(),
- 'value' => Color::COLOR_1,
+ 'global' => [
+ 'default' => Global_Colors::COLOR_PRIMARY,
],
'selectors' => [
'{{WRAPPER}} ' . $selector => 'color: {{VALUE}} !important',
@@ -230,7 +229,9 @@
Group_Control_Typography::get_type(),
[
'name' => $name . '_typography',
- 'scheme' => Typography::TYPOGRAPHY_1,
+ 'global' => [
+ 'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
+ ],
'selector' => '{{WRAPPER}} ' . $selector,
'separator' => 'before',
]
--- a/tablesome/workflow-library/actions/gsheet-add-row.php
+++ b/tablesome/workflow-library/actions/gsheet-add-row.php
@@ -185,9 +185,17 @@
{
$file_types = ["upload", "file-upload", "fileupload", "post_image", 'input_image', 'input_file', 'file'];
foreach ($trigger_data as $field_key => $field) {
+ // error_log("field_key: " . $field_key);
+ // error_log("field: " . wp_json_encode($field));
+ $file_type = isset($field["file_type"]) ? $field["file_type"] : '';
if (in_array($field["type"], $file_types) && !empty($field["value"])) {
$trigger_data[$field_key]["value"] = $this->get_attachment_url_by_id($field["value"]);
}
+
+ // PDF File Type
+ if (isset($field["file_type"]) && $field["file_type"] == "application/pdf") {
+ $trigger_data[$field_key]["value"] = $field["file_url"];
+ }
}
return $trigger_data;
--- a/tablesome/workflow-library/actions/gsheet-load-from.php
+++ b/tablesome/workflow-library/actions/gsheet-load-from.php
@@ -56,7 +56,7 @@
$action_meta = $this->get_action_meta($args);
- error_log('action_meta: ' . print_r($action_meta, true));
+ // error_log('action_meta: ' . print_r($action_meta, true));
$get_rows_params = [];
$get_rows_params['spreadsheet_id'] = isset($action_meta['spreadsheet_id']) ? $action_meta['spreadsheet_id'] : '';
@@ -64,7 +64,7 @@
$get_rows_params['selected_columns'] = isset($action_meta['selected_columns']) ? $action_meta['selected_columns'] : [];
$get_rows_params['show_all_columns'] = isset($action_meta['show_all_columns']) ? $action_meta['show_all_columns'] : true;
$get_rows_params['sheet_name'] = $this->get_sheet_name($get_rows_params['spreadsheet_id'], $get_rows_params['sheet_id']);
- $get_rows_params['coordinates'] = isset($action_meta['coordinates']) ? $action_meta['coordinates'] : 'A1:Z1000';
+ $get_rows_params['coordinates'] = isset($action_meta['coordinates']) ? $action_meta['coordinates'] : 'A1:AG10000';
$get_rows_params['range'] = $get_rows_params['sheet_name'];
// error_log('action_meta: ' . print_r($action_meta, true));
@@ -80,6 +80,9 @@
// If last update time is more than 15 minutes ago, update table
$gsheet_data = $this->gsheet_api->get_rows($get_rows_params);
+ $row_count = count($gsheet_data['values']);
+ error_log('row_count: ' . $row_count);
+ // error_log('gsheet_data: ' . print_r($gsheet_data, true));
$incoming_columns = $gsheet_data['values'][0];
if (empty($incoming_columns)) {
@@ -148,6 +151,7 @@
public function get_sheet_name($spreadsheet_id, $sheet_id)
{
+ // error_log('get_sheet_name');
$sheet_name = '';
$spreadsheet = $this->gsheet_api->get_sheets_by_spreadsheet_id($spreadsheet_id);
--- a/tablesome/workflow-library/actions/wp-redirection.php
+++ b/tablesome/workflow-library/actions/wp-redirection.php
@@ -56,6 +56,7 @@
private function set_defaults()
{
+ // error_log('set_defaults called');
$this->trigger_source_data = $this->trigger_class->trigger_source_data['data'];
$this->action_meta = isset($this->trigger_instance['action_meta']) ? $this->trigger_instance['action_meta'] : [];
@@ -90,8 +91,10 @@
$url_params = isset($this->action_meta['url_params']) ? $this->action_meta['url_params'] : [];
+ // error_log('$this->trigger_source_data: ' . print_r($this->trigger_source_data, true));
+ // error_log('enable_all_url_params: ' . print_r($enable_all_url_params, true));
if ($enable_all_url_params) {
-
+ // error_log('if enable_all_url_params: ' . print_r($enable_all_url_params, true));
foreach ($this->trigger_source_data as $source_field_name => $source_field_data) {
$param_name = $this->get_active_param_name_from_config($url_params, $source_field_name);
@@ -99,6 +102,7 @@
}
} else {
+ // error_log('else enable_all_url_params: ' . print_r($enable_all_url_params, true));
foreach ($url_params as $param) {
$field_status = isset($param['field_status']) ? $param['field_status'] : false;
--- a/tablesome/workflow-library/external-apis/gsheet.php
+++ b/tablesome/workflow-library/external-apis/gsheet.php
@@ -2,6 +2,7 @@
namespace TablesomeWorkflow_LibraryExternal_Apis;
+use Error;
use TablesomeIncludesModulesAPI_Credentials_Handler;
if (!defined('ABSPATH')) {
@@ -32,8 +33,9 @@