Plugin Directory

Changeset 3246477


Ignore:
Timestamp:
02/25/2025 01:42:39 PM (10 months ago)
Author:
koen12344
Message:

Deploy version 3.2.4

Location:
post-to-google-my-business
Files:
4 added
92 edited
1 copied

Legend:

Unmodified
Added
Removed
  • post-to-google-my-business/tags/3.2.4/composer.lock

    r3228979 r3246477  
    1212            "source": {
    1313                "type": "git",
    14                 "url": "https://github.com/koen12344/multisite-background-processing.git",
     14                "url": "[email protected]:koen12344/multisite-background-processing.git",
    1515                "reference": "7724c9d124f1efdc672d0b15923a60c8ee42e434"
    1616            },
     
    5050            ],
    5151            "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.",
    52             "support": {
    53                 "source": "https://github.com/koen12344/multisite-background-processing/tree/prod"
    54             },
    5552            "time": "2025-01-11T16:16:36+00:00"
    5653        },
     
    438435        {
    439436            "name": "myclabs/deep-copy",
    440             "version": "1.12.1",
     437            "version": "1.13.0",
    441438            "source": {
    442439                "type": "git",
    443440                "url": "https://github.com/myclabs/DeepCopy.git",
    444                 "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
    445             },
    446             "dist": {
    447                 "type": "zip",
    448                 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
    449                 "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
     441                "reference": "024473a478be9df5fdaca2c793f2232fe788e414"
     442            },
     443            "dist": {
     444                "type": "zip",
     445                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414",
     446                "reference": "024473a478be9df5fdaca2c793f2232fe788e414",
    450447                "shasum": ""
    451448            },
     
    486483            "support": {
    487484                "issues": "https://github.com/myclabs/DeepCopy/issues",
    488                 "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
     485                "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0"
    489486            },
    490487            "funding": [
     
    494491                }
    495492            ],
    496             "time": "2024-11-08T17:47:46+00:00"
     493            "time": "2025-02-12T12:17:51+00:00"
    497494        },
    498495        {
     
    850847        {
    851848            "name": "phpstan/phpdoc-parser",
    852             "version": "2.0.0",
     849            "version": "2.1.0",
    853850            "source": {
    854851                "type": "git",
    855852                "url": "https://github.com/phpstan/phpdoc-parser.git",
    856                 "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
    857             },
    858             "dist": {
    859                 "type": "zip",
    860                 "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
    861                 "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
     853                "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
     854            },
     855            "dist": {
     856                "type": "zip",
     857                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
     858                "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
    862859                "shasum": ""
    863860            },
     
    891888            "support": {
    892889                "issues": "https://github.com/phpstan/phpdoc-parser/issues",
    893                 "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
    894             },
    895             "time": "2024-10-13T11:29:49+00:00"
     890                "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
     891            },
     892            "time": "2025-02-19T13:28:12+00:00"
    896893        },
    897894        {
  • post-to-google-my-business/tags/3.2.4/post-to-google-my-business.php

    r3235346 r3246477  
    66Description: Automatically create a post on Google My Business when creating a new WordPress post
    77Author: Koen Reus
    8 Version: 3.2.3
     8Version: 3.2.4
    99Author URI: https://koenreus.com
    1010Text Domain: post-to-google-my-business
  • post-to-google-my-business/tags/3.2.4/readme.txt

    r3235346 r3246477  
    11=== Post to Google My Business (Google Business Profile) ===
    2 Contributors: koen12344, freemius
    3 Donate link: https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=donate
    4 Tags: google my business, gmb, auto publish, posts, post, local search, google my business posts, google places, google plus, google+
     2Contributors: koen12344, valdemirmaran, freemius
     3Donate link: https://digitaldistortion.dev/?utm_source=repository&utm_medium=link&utm_campaign=donate
     4Tags: google my business, google business profile, gmb, local seo, google places
    55Requires at least: 4.9.0
    6 Tested up to: 6.7.1
    7 Stable tag: 3.2.3
     6Tested up to: 6.7.2
     7Stable tag: 3.2.4
    88Requires PHP: 7.0
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1111
    12 (Auto-)Publish and manage Google My Business (GMB) Posts from the WordPress Dashboard!
     12Auto-publish posts, pages & CPTs, plus manage Google Business Profile posts - all from your WordPress dashboard!
    1313
    1414== Description ==
    1515
    16 The posts feature in Google Business Profile (formerly: Google My Business) is a great way to improve the presence of your, or your clients' business on Google. It can be a hassle however to have to log in to Google My Business every time you want to create a new post, likewise it can be an easy thing to forget.
     16The **Posts** feature in **Google Business Profile** (formerly Google My Business) is a powerful way to enhance your business's presence on Google. However, constantly logging into your Google account to create new posts can be time-consuming—and easy to forget.
    1717
    18 Don't miss out on the SEO benefit, and save time by creating posts on Google My Business directly from the WordPress Dashboard!
     18With the **Post to Google My Business** plugin, you can save time and maximize your SEO benefits by publishing directly from your WordPress dashboard!
    1919
    20 Use the Auto-post feature to instantly publish your latest WordPress post to your Google Business Profile, based on a preset template and the posts' featured image.
     20= Effortless auto-posting & powerful features =
    2121
    22 The Post to Google My Business plugin utilizes the official Google My Business API with secure oAuth authentication to ensure your Google account is safe.
     22Use the **Auto-post** feature to instantly share your latest WordPress content to your Google Business Profile. Posts are generated based on a preset template and automatically include your post’s featured image, keeping your profile fresh with minimal effort.
    2323
    24 = Features =
    25 * Create, edit or delete posts without having to visit your Google My Business dashboard
    26 * Automatically publish your latest WordPress posts to GMB using the Auto-post feature
    27 * Generates beautiful auto-posts from any content. HTML, shortcodes and clutter from visual editors such as Divi or Visual Composer are automatically stripped
    28 * Network- and site-level Multisite support
    29 * Supports publishing to GMB from external apps (such as Zapier, Integromat, IFTTT, ManageWP, InfiniteWP, MainWP and more)
    30 * Uses official Google My Business API
    31 * Developer friendly. Uses the latest built-in WordPress functions and has various actions/filters to hook into.
    32 * Translatable. Uses built-in WordPress functions for easy translation.
    33 * Compatible with Gutenberg/Block Editor
    34 * Supports modern image formats such as WebP and AVIF
     24= Why choose Post to Google My Business? =
     25✅ **Create, edit, and delete posts** without leaving WordPress
     26✅ **Auto-publish** your latest WordPress posts, pages and custom post types to your Google Business Profile
     27✅ **Beautiful, clean posts** – Automatically strips unnecessary HTML, shortcodes, and visual editor clutter (Divi, WPBakery, etc.)
     28✅ **Multisite support** – Works on both network and site level
     29✅ **Third-party integration** – Publish from **Zapier, IFTTT, Integromat, ManageWP, MainWP**, and more
     30✅ **Secure & reliable** – Uses the official **Google My Business API** with **oAuth** authentication
     31✅ **Developer-friendly** – Hooks, filters, and WordPress-native functions for easy customization
     32✅ **Translation-ready** – Fully compatible with WPML and other translation plugins
     33✅ **Modern image support** – Works with **WebP**, **AVIF**, and other optimized formats
     34✅ **Gutenberg-compatible** – Works seamlessly with the Block Editor
    3535
    36 > **Time-saving features available in the Premium versions:**
    37 >
    38 > * Product support, create "real" Products in GBP based on your WooCommerce Products or other content
    39 > * Schedule Google My Business posts for automatic publishing in the future
    40 > * Publish posts to multiple locations, across multiple Google accounts at once
    41 > * Automatic re-posting (post recycling) - Automatically recycle your GMB posts at preset intervals and x amount of times
    42 > * Auto publish posts with specific tags or categories
    43 > * Make posts unique using Spintax
    44 > * Post Campaigns - Create posts on GMB that aren't tied to any specific WordPress post or page.
    45 > * Evergreen content - randomly publish items from a selection of your content
    46 > * Multiple Auto-post templates
    47 > * Manage GMB post campaigns for your agency clients
    48 > * Much more!
    49 >
    50 > **[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=description)**
     36= Time-saving features available in Premium: =
     37
     38Upgrade to **Post to Google My Business premium** for **even more automation and flexibility**:
     39⭐ **Product Support** – Create and manage **real** Google Business Profile **Products** from WooCommerce or other content
     40⭐ **Scheduled Posts** – Plan and **automate future post publishing**
     41⭐ **Multi-location & Multi-account support** – Publish posts across **multiple GBP locations** at once
     42⭐ **Auto Re-posting (Recycling)** – Keep your content fresh by **automatically republishing** posts at set intervals
     43⭐ **Category- & Tag-based Auto-publishing** – Control exactly what gets posted
     44⭐ **Spintax Support** – Generate **unique** content variations to avoid duplication
     45⭐ **Evergreen Content** – Randomly publish from a selection of your best content
     46⭐ **Post Campaigns** – Create GMB posts that aren’t tied to a specific WordPress post or page
     47⭐ **Multiple Auto-post Templates** – Customize and manage different posting styles
     48⭐ **Agency Support** – Manage Google My Business posts for **multiple clients**
     49
     50**[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=description)**
    5151
    5252= Great support! =
     
    5757Installing and configuring Post to Google My Business is easy!
    5858
    59 1. Upload the plugin files to the `/wp-content/plugins/post-to-google-my-business` directory, or install it through the plugins page within the WordPress Dashboard.
    60 2. Activate the plugin through the **Plugins** page in WordPress
    61 3. Go to the **Post to GMB** > **Settings** page to configure the plugin
    62 4. To allow your website to post to Google My Business on your behalf, click **Connect to Google My Business**. Confirm the authorization using the Google account that holds your business location.
    63 5. You will be redirected back to the settings page. Select your business location and press **Save Changes**.
     591. Upload the plugin files to the `/wp-content/plugins/post-to-google-my-business` directory, or install it through the **Plugins** section within your WordPress Dashboard.
     602. Activate the plugin through the **Plugins** section in WordPress
     613. Go to the **Post to GMB** > **Settings** > **Google Settings** page to configure the plugin
     624. To allow your website to post to your Google Business Profile on your behalf, click **Connect to Google Business Profile**. Confirm the authorization using the Google account that holds the business location(s) you want to use. Make sure you check the checkbox to allow the plugin to manage your GMB locations.
     635. You will be redirected back to the settings page. Select your business location in the **Default Location** section and press **Save Changes**.
    64646. All set! When creating a new WordPress **Post** there will a new metabox that allows you to create posts on Google My Business.
    6565
     
    115115== Changelog ==
    116116
     117= 3.2.4 =
     118* Improved: Design of admin notices
     119* Improved: Hide location syncing error after successful sync
     120* Improved: Show more descriptive error when permission to manage locations hasn't been granted during authentication
     121* Improved: Route Google JWK keyset through backend instead of calling the Google URL directly
     122* Fix: Show error in locations field when refreshing of locations fails
     123* Fix: Delete location and group cache MySQL tables on plugin uninstall
     124
    117125= 3.2.3 =
    118126* Improved: Error handling for retrieval of Google public keys
     
    145153* Update Freemius SDK
    146154
    147 = 3.1.24 =
    148 * Update: Freemius SDK 2.7.1
    149 
    150 > **Premium**
    151 >
    152 > * Fix: Creating products not working (due to Google changes)
    153 
    154 = 3.1.23 =
    155 > **Premium**
    156 >
    157 > * Fix: Delete event date of previous post not updated when editing auto-repost schedule
    158 > * Added: Indication when previous auto-repost item will be deleted
    159 
    160 = 3.1.22 =
    161 * Tested on WordPress 6.5
    162 * Fix: return original image if failing to create intermediate
    163 * Fix: Incorrect loading of admin styles
    164 * Improved: Authentication logic
    165 * Improved: (Developers) LocalPost object now has getters
    166 * Update: Freemius SDK 2.6.2
    167 
    168 
    169 = 3.1.21 =
    170 * Fix: Potential issue with images smaller than 1200x900
    171 * Update: Freemius SDK 2.6.1
    172 
    173 = 3.1.18 =
    174 * Add option to bypass WP-Cron for debugging purposes
    175 
    176 = 3.1.17 =
    177 * Tested on WordPress 6.4
    178 * Update: Add additional 20 second lockout to prevent double posts when auto-posting
    179 * Update: Freemius SDK 2.5.12
    180 
    181 = 3.1.16 =
    182 * Update: WP Background processing 1.1.1
    183 * Update: Freemius SDK 2.5.11
    184 
    185 > **Premium**
    186 >
    187 > * Fix: Change to GBP causing products to stop working
    188 
    189 = 3.1.15 =
    190 * Fix: Add nonce to ajax endpoint to dismiss notifications
    191 
    192 = 3.1.14 =
    193 * Update: Cleaned up Javascript dependencies
    194 
    195 > **Premium**
    196 >
    197 > * Fix: Google accounts being duplicated in the business selector when creating/editing multiple posts
    198 > * Fix: Publish button saying "Publish Now" instead of "Update" when editing posts
    199 
    200 = 3.1.13 =
    201 * Fix: Posts longer than 1500 characters containing emoji causing Google API error
    202 
    203 = 3.1.12 =
    204 > **Premium**
    205 >
    206 > * Fix: Not selecting any location in the auto-post template location selector caused JS/PHP error
    207 
    208 = 3.1.11 =
    209 * Fix: Freemius SDK updated to v2.5.5 to fix "Call to undefined method Freemius_Api_WordPress::RemoteRequest()" error
    210 * Update: Pt_BR translations by @valdermirmaran
    211 * Update: "Product" tab now aligned to the right to better separate it from regular posts
    212 
    213 > **Premium**
    214 >
    215 > * Update: Removed call-to-action for Products (in accordance with GMB itself)
    216 
    217 = 3.1.10 =
    218 * Added extra check for mbstring when creating posts
    219 * Updated Freemius SDK
    220 
    221 > **Premium**
    222 >
    223 > * Products are now allowed to have no description
    224 
    225 = 3.1.9 =
    226 * Added "Refresh Post Status" bulk option to post list
    227 
    228 > **Agency**
    229 >
    230 > * Added CSV export to post list
    231 
    232 = 3.1.8 =
    233 * fix issue blocking site health screen
    234 
    235 = 3.1.7 =
    236 * Make product price field no longer required
    237 * Add check for mbstring PHP module
    238 
    239 = 3.1.6 =
    240 * Tested on 6.2
    241 * Added notification about new Product Sync for GBP plugin
    242 * Included new translations
    243 
    244 = 3.1.5 =
    245 * Add extra content-type header check for WebP images
    246 
    247 = 3.1.4 =
    248 * Fix "Refresh locations" button not actually refreshing locations from GMB API
    249 
    250 = 3.1.3 =
    251 * Fix business selector not loading all locations
    252 
    253 = 3.1.2 =
    254 * Fix issues with account/business selector
    255 
    256 > **Premium**
    257 >
    258 > * Convert Campaign tags/categories from built-in to custom taxonomy
    259 
    260 = 3.1.1 =
    261 > **Premium**
    262 >
    263 > * Fix missing account controls
    264 
    265 = 3.1.0 =
    266 * Prevent duplicate posts when using auto-post
    267 * Improve auto-posting logic
    268 * Add option to enable/disable specific request types (Editor, Internal, XML-RPC, REST)
    269 * Lowered event & offer title length from 80 to 58 characters
    270 * Prevent items in the trash from creating (scheduled) GPB posts
    271 * Improve the business selector to load large amounts of locations in chunks
    272 * Refactoring
    273 
    274 > **Premium**
    275 >
    276 > * Fix posting products (effective_id error)
    277 > * Fix products showing incorrect summary in post list
    278 
    279 = 3.0.28 =
    280 * Add fix for duplicate posts in same session
    281 
    282 = 3.0.27 =
    283 * Add check for sites that have relative image URLs for some reason
    284 
    285 = 3.0.26 =
    286 > **Premium**
    287 >
    288 > * Add better detection of product creation errors
    289 > * Fix cookie check when submitting cookie details
    290 > * Various small improvements to product API code
    291 
    292 
    293 = 3.0.25 =
    294 > **Premium**
    295 >
    296 > * Improve product JSON decoding logic
    297 
    298 = 3.0.24 =
    299 * Updated pt translation
    300 
    301 > **Premium**
    302 >
    303 > * Fix product custom category field not saving
    304 
    305 = 3.0.23 =
    306 > **Premium**
    307 >
    308 > * Fix image upload error for products
    309 
    310 = 3.0.22 =
    311 * Add clearer errors to dialog when clicking post in calendar
    312 * Change layout of store/shop code in created posts dialog
    313 
    314 > **Premium**
    315 >
    316 > * Fix option to disable date & time selector for auto-post templates
    317 
    318 = 3.0.21 =
    319 * Add store code to business selector and created posts dialog
    320 * Add debounce to date & time selector to reduce Ajax calls
    321 * Add option to disable date & time selector on event/offer dates
    322 * Add delay to posts to avoid excessive API calls
    323 * Fix delete API call being triggered multiple times
    324 * Fix auto-post on scheduled WordPress posts
    325 
    326 > **Premium**
    327 >
    328 > * Added "loop" function to evergreen content
    329 > * Evergreen content now only posts unique content
    330 > * Auto-repost will delete the previous post
    331 
    332 = 3.0.20 =
    333 
    334 * Fix image not updating when updating post
    335 * Fix image not being deleted from GMB when deleted from post
    336 * Fix CTA not being deleted from GMB when deleted from post
    337 * Allow placeholder variables in date fields
    338 
    339 > **Premium**
    340 >
    341 > * Fix product price range field not loading in auto-post template
    342 > * Fix duplicate call when deleting multiple posts at once
    343 > * Refresh location list after updating product cookies
    344 
    345 = 3.0.19 =
    346 * Remove hasVoiceOfMerchant check
    347 
    348 > **Premium**
    349 >
    350 > * Fix cookies not saving
    351 
    352 = 3.0.18 =
    353 * Move access token from URL to Auth header
    354 * Add check for IP address in call-to-action URL
    355 * Fix label for locations in business selector
    356 * Adjust max post length to 1499 characters to avoid length error
    357 
    358 = 3.0.17 =
    359 * Change button selection checkboxes to dropdown
    360 * Route API requests through custom backend
    361 * Fix Undefined property: stdClass::$languageCode notice/error
    362 * Fix Undefined index: order/orderby notices/errors
    363 * Fix Undefined index: hook_suffix notice/error
    364 * Update locales (Brazilian Portuguese thanks to Valdemir Maran)
    365 
    366 > **Premium**
    367 >
    368 > * Disable call-to-action button types that aren't available for products
    369 > * Clarify how to publish products
    370 > * Fix Undefined index: mbp_form_fields notice/error when creating new auto-post template
    371 > * Allow wildcard variables in product max pricerange field
    372 > * Add new WooCommerce variables for variation products
    373 > * Add setting check to cookie dialog
    374 > * Fix saving cookie settings being triggered twice
    375 
    376 = 3.0.14 =
    377 * Fix incorrect location selection within groups
    378 * Fix support for Google accounts with more than 20 location groups
    379 * Remove shortcodes from WooCommerce product description
    380 
    381 > **Premium**
    382 >
    383 > * Fix undefined index errors on product form when WP_DEBUG was enabled
    384 > * Fix intermittent issue with location(s) not being selected in the "Advanced post settings"
    385 > * Restore disappeared "Toggle Selection" function on Google Accounts
    386 
    387 = 3.0.13 =
    388 * Fix auto-post toggle not being turned on by default in block editor
    389 * Improve API code to be compatible with new version of GMB API
    390 
    391 > **Premium**
    392 >
    393 > * Improve product publishing api
    394 
    395 = 3.0.12 =
    396 
    397 > **Premium**
    398 >
    399 > * Improve code for product publishing
    400 
    401 = 3.0.11 =
    402 * Fix incorrect token revocation request
    403 * Fix pre-php 7.3 error composer message
    404 * Clarify "Refresh token" error message
    405 * Fix a few locale mistakes
    406 * Bump minimum PHP version to 7.0
    407 * Fix for Notice: Trying to access array offset on line 163
    408 * Add account key to mbp_business_selector_locations filter
    409 * Fix display of service area businesses in business selector
    410 * Add placeholder parsing to event/offer title and trim it to 80 characters
    411 
    412 > **Premium**
    413 >
    414 > * Show error when evergreen content schedule does not exist in cron
    415 > * Fix edit and duplicate functions in Starter version
    416 > * Add debug data download for products
    417 
    418 = 3.0.10 =
    419 * Add graceful error for when the Google authorization is cancelled
    420 * Fix advanced post settings spacing
    421 * Update Freemius SDK
    422 * Clear access token cache when account is deleted
    423 * Fix a few permission issues
    424 
    425 = 3.0.9 =
    426 
    427 > **Premium**
    428 >
    429 >* Improvements to product publishing code
    430 
    431 = 3.0.8 =
    432 * Fix text domain on update notification
    433 * Prevent api error when trying to create product
    434 
    435 = 3.0.7 =
    436 * Fix location list not showing all locations in groups with more than 100 locations
    437 * Add upgrade & new feature notifications
    438 * Improve upgrade process
    439 
    440 = 3.0.6 =
    441 
    442 * Fix controls on dynamically loaded accounts in business selector
    443 
    444 > **Premium**
    445 >
    446 > * Fix woocommerce product category sync
    447 
    448 = 3.0.5 =
    449 
    450 * Update locales (Portuguese thanks to Valdemir Maran)
    451 * Post editor: Various layout and logic fixes
    452 * WP 5.9: Fix calendar icon
    453 
    454 > **Premium**
    455 >
    456 > * Add product support
    457 > * Fix evergreen not selecting the correct posts
    458 > * Fix evergreen page empty in Starter version
    459 > * Fix evergreen date timezone issue
    460 
    461 = 3.0.2 =
    462 * Updated Brazilian Portuguese translations (Thanks to @valdemirmaran)
    463 * Fix error when no post types are selected in the settings
    464 * Added evergreen content promotional page
    465 * Fix not showing welcome message on new site within multisite
    466 
    467 > **Premium**
    468 >
    469 > * Fix private backend post types being indexed by Yoast causing 404s
    470 
    471 = 3.0.1 =
    472 * Remove deprecated "Get Offer" call to action
    473 * Fix link parsing mode not working
    474 * Updated pot file (now automatically included in build process)
    475 * Updated Dutch translations
    476 * Fixed localization for calendar
    477 * Fixed datetime check in auto-post template editor
    478 
    479 > **Premium**
    480 >
    481 > * Added check for invalid evergreen post schedule
    482 > * Fixed localization for cron selector
    483 
    484 = 3.0.0 =
    485 * Refactor & improve a lot of code, mainly improved the way the plugin connects to Google
    486 * Paginated post & created post list, added bulk actions
    487 * Fix Featured Image checkbox state not saving
    488 * Remove pointless debug page
    489 * Moved post scheduling calendar to its own dashboard page, added popup with options
    490 * Added WebP support (GMB does not support it, so plugin will convert image to PNG)
    491 * Added WooCommerce support by default
    492 
    493 > **Premium**
    494 >
    495 > * (Starter) Moved ability to select a location per post to Starter
    496 > * (Pro) Added ability to create multiple post templates
    497 > * (Pro) Added "evergreen content" feature to automatically publish posts old posts
    498 > * (Pro) Moved ability to publish posts to multiple locations at once to Pro
    499 > * (Agency) Added ability to connect multiple Google accounts
    500 
    501 
    502 = 2.2.49 =
    503 * Add option to advanced post options to change link parsing mode
    504 
    505 = 2.2.48 =
    506 * Temporary fix for the cURL error 60: SSL certificate problem: certificate has expired error
    507 
    508 = 2.2.45 =
    509 * Fix issue with image size detection (filesize(): stat failed warning)
    510 * Fix image size detection on post created outside WP admin dash (Fatal error: Call to undefined function PGMB\download_url())
    511 * Fix warnings when location has no address or locality
    512 
    513 = 2.2.44 =
    514 > **Premium**
    515 >
    516 > * Now it was posting every hour, doh! Fixed
    517 
    518 = 2.2.43 =
    519 * Tested on WordPress 5.8
    520 * Fixed issue with metabox not working in block editor
    521 
    522 > **Premium**
    523 >
    524 > * Fixed issue with automatic re-post that made a post go out every minute(!) instead of every day of the month
    525 > * Added "Daily" option to re-post feature
    526 
    527 = 2.2.42 =
    528 * Add Brazilian Portuguese translations (thanks to @valdemirmaran)
    529 
    530 = 2.2.41 =
    531 * Add selection function for location groups
    532 * Add note for Block Editor CPTs without "custom-fields" support enabled
    533 * Update Freemius SDK
    534 
    535 = 2.2.39 =
    536 * Fixes "Cannot declare class PGMB\Vendor\Cron\AbstractField, because the name is already in use" error when saving post
    537 
    538 = 2.2.34 =
    539 * Fix for image size detection logic
    540 
    541 = 2.2.33 =
    542 * Add extra error message for when Product post type is chosen
    543 * Fix block editor issue for custom post types that don't have custom-fields enabled
    544 
    545 = 2.2.32 =
    546 * Use wp_get_http_headers instead of get_headers for better compatibility
    547 
    548 = 2.2.31 =
    549 * Testing on WP 5.6, small fixes for PHP8 compatibility
    550 
    551 = 2.2.29 =
    552 * Fixed some issues with checking of post image size
    553 * Fixed image not showing up in editor when it was too small to have a "medium" thumbnail
    554 * Updated Freemius SDK
    555 
    556 = 2.2.28 =
    557 * Fix compatibility issue with older version of plugin
    558 
    559 = 2.2.27 =
    560 * Fix date and time checker
    561 * Fix checkbox state not being loaded since 5.5.1
    562 
    563 = 2.2.26 =
    564 * Added (a lot) of location-specific variables
    565 
    566 = 2.2.25 =
    567 * Make all GMB post types and WP post types available in free version
    568 * Fix Gutenberg assets being loaded in post type that was disabled
    569 
    570 > **Premium**
    571 >
    572 > * Fix campaigns feature being partially available in Pro version
    573 > * Fix default location selector showing checkboxes instead of radiobuttons when refreshing
    574 
    575 = 2.2.19 =
    576 * Fixed handling of URLs containing non-ascii characters
    577 * Added more info about product posts
    578 
    579 = 2.2.18 =
    580 * Temporarily remove check for isLocalPostApiDisabled due to COVID-19
    581 
    582 = 2.2.17 =
    583 * Added COVID-19 post
    584 * Added full autopost template editor in settings to edit the default autopost template
    585 * Added welcome message
    586 * Added location-specific variables (%location_primaryPhone%, %location_websiteUrl% ...)
    587 * Added new mbp_placeholder_decorators ($decorators, $parent_post_id) filter, and VariableInterface
    588 * Add checks for image size, disable video (no longer allowed by Google)
    589 * Simplified & improved auto-post logic
    590 * Improved image uploader (ready for 10 images, but Google API doesn't support it yet)
    591 * Improved error notices in metabox
    592 * Improvements to multisite handling and activation/deactivation/delete routines
    593 * Fixed error notice when fetching empty location groups
    594 * Fixed Free version not deactivating when activating premium
    595 * Fixes empty location group causing PHP notice
    596 * Fixed Gutenberg double post bug and improve compatibility
    597 * Fix Draft post showing incorrect publish date
    598 * Fix notice when Google error doesn't include details
    599 * Update Freemius SDK to fix multisite issue
    600 
    601 > **Premium**
    602 >
    603 > * Add "Event all day" checkbox for events without a start and end time
    604 > * Added feature to enable autopost per category or tag
    605 > * Fixed Auto-post template editor button being shown on campaigns page
    606 > * Fixed errors when when all post types are unchecked in the settings page
    607 
    608 = 2.2.10 =
    609 * Fix issue with paragraphs getting removed in auto-post
    610 
    611 = 2.2.9 =
    612 * Fix auto-post incorrectly throwing 1500 character error
    613 * Hide "Save draft" button on already published post
    614 
    615 > **Premium**
    616 >
    617 > * Fix caption on "Save Template" button switching to "Publish" when adding schedule
    618 
    619 = 2.2.8 =
    620 * Fix gutenberg issue caused by 2.2.7
    621 
    622 = 2.2.7 =
    623 * Fix compatibility issue with Yoast SEO & Classic Editor
    624 
    625 = 2.2.6 =
    626 * Updated .pot file and Grunt scripts
    627 * Updated Dutch, Russian and Ukrainian translations
    628 * Display post publish date in metabox
    629 
    630 = 2.2.5 =
    631 * Fix duplicate post issue
    632 
    633 > **Premium**
    634 >
    635 > * Remove Auto-post checkbox being shown on campaigns page
    636 
    637 = 2.2.4 =
    638 * Fix issues with CTA URL on button
    639 * Improve updater (again)
    640 * Fix default value for CTA URL field
    641 * Fix CTA url field disappearing when loading post
    642 
    643 > **Premium**
    644 >
    645 > * Fix repost schedule being improperly parsed
    646 
    647 = 2.2.3 =
    648 * Improve updater
    649 
    650 = 2.2.2 =
    651 * Fix Form field parser allowing dates in the past
    652 
    653 = 2.2.1 =
    654 * Fix for Gutenberg autopost
    655 * Restore filter functions
    656 * Update Freemius SDK
    657 
    658 = 2.2 =
    659 * Moved API communication to an asynchronous process
    660 * Added Auto-post template editor
    661 * Added Debug info tab to settings page
    662 * Added dialog with created posts
    663 * Made UI more intuitive
    664 * Added some fixes to improve compatibility with Gutenberg
    665 * Added functionality to fetch image from content or use the featured image
    666 * Tons of improvements and bug fixes "under the hood"
    667 * Lots more to come in future updates!
    668 
    669 > **Premium**
    670 >
    671 > * Made re-posting much more flexible
    672 > * Re-posted posts will now appear as a separate post in the metabox
    673 
    674 = 2.1.18 =
    675 > **Premium**
    676 >
    677 > * Actually parse the relative datetimes on scheduled posts :)
    678 > * Disable Product post support (removed from GMB api)
    679 > * Improve display of datetimes, better timezone handling
    680 
    681 = 2.1.17 =
    682 > **Premium**
    683 >
    684 > * Allow relative time notation in datetimepickers
    685 
    686 = 2.1.16 =
    687 * Improved parsing of post content
    688 
    689 = 2.1.11 =
    690 * Improve development & deployment methods
    691 
    692 = 2.1.10 =
    693 * Update Freemius SDK
    694 * Remove shortcodes from auto-post by default
    695 
    696 = 2.1.9 =
    697 * Security fix
    698 
    699 = 2.1.8 =
    700 * Fixes issue with image URL spinner with no image set (PHOTO media error)
    701 
    702 = 2.1.7 =
    703 * Properly delete child posts and schedules when deleting parent post
    704 
    705 = 2.1.6 =
    706 > **Premium**
    707 >
    708 > * Spin image URL
    709 
    710 = 2.1.5 =
    711 * Fix issue when trying to load more than 100 locations
    712 * Apply filter mbp_get_locations filter to cached locations
    713 
    714 = 2.1.4 =
    715 * Fix settings page conflict caused by plugins using old version of WeDevs Settings API
    716 * Fix Learn more link about grayed out locations
    717 
    718 = 2.1.3 =
    719 * Fix auto-post sending campaign posts
    720 * Improve Gutenberg compatibility
    721 
    722 = 2.1.2 =
    723 * Fix auto-post being triggered too early
    724 * Simplify business selector
    725 
    726 > **Premium**
    727 >
    728 > * Fix repost sheduled events not getting deleted
    729 > * Fix reposts not being published when recurrence was set to 0
    730 > * Fix reposts being posted twice when not scheduled
    731 
    732 = 2.1.1 =
    733 * Increase API timeout
    734 * Fix multiline posts
    735 * Improve error messages
    736 * Fix API token refresh requests when network activated
    737 
    738 = 2.1.0 =
    739 * Improves location loading (+100 Locations in account)
    740 * Check whether locations have access to the Posts API
    741 * Call Now button support
    742 * Improves auto-post logic
    743 * Restructuring code
    744 
    745 > **Premium**
    746 >
    747 > * Improves posting to multiple locations at once
    748 > * Product post support
    749 
    750 = 2.0.10 =
    751 * Update Freemius SDK
    752 * Add filters to Auto post feature
    753 
    754 > **Premium**
    755 >
    756 > * Add option to edit Auto post URL
    757 
    758 = 2.0.9 =
    759 * Fix 500 error on PHP 5.4 https://wordpress.org/support/topic/500-error-when-adding-a-new-post/
    760 
    761 = 2.0.8 =
    762 * Fix issue some settings getting deleted when updating from 2.0.6 to 2.0.7
    763 * Improve compatibility with external publishing apps and services
    764 * Made plugin settings page more intuitive
    765 
    766 = 2.0.7 =
    767 * Strip HTML from posts
    768 * Cut posts to 1500 characters
    769 * Added word and character counters
    770 * Simplified business selector
    771 * Removed user selector, now integrated with business selector
    772 * Better support for grouped locations
    773 * Allow filtering/searching of locations
    774 * Remove references to datetimepicker
    775 
    776 > **Premium**
    777 >
    778 > * Added buttons to Select/Deselect all locations at once
    779 > * Fixed some issues with Pro features in trial
    780 
    781 = 2.0.6 =
    782 * Add ability to save posts as draft
    783 * Add option to invert the "Quick Publish" checkbox. Allows you to automatically publish to GMB when the WordPress post is created externally
    784 * Fix display issue when location has no thumbnail
    785 * Add placeholder index.php files to plugin folders
    786 * Show "No GMB posts found." again when last post is deleted.
    787 * Close form when the post currently being edited is being deleted
    788 
    789 > **Premium**
    790 >
    791 > * Fix Premium features not being enabled when in trial
    792 > * Fix scheduled posts not being posted in Pro
    793 > * Fix issue with post type settings causing error when no post type is selected and settings are saved
    794 > * Check default location when creating new post
    795 > * Fix Metabox not visible on post campaigns
    796 > * Fix invisible month switching icons on the datetimepicker
    797 
    798 
    799 = 2.0.5 =
    800 * Fix location info when importing old posts
    801 * Fix Google link not appearing when using quickpost
    802 
    803 = 2.0.4 =
    804 * Version function magically disappeared, fixed
    805 
    806 = 2.0.3 =
    807 * Fixes updating issue on multisite
    808 
    809 = 2.0.2 =
    810 * Fix issue causing fatal error on PHP 5.6 < https://wordpress.org/support/topic/2-0-1-update-crashes-site/
    811 
    812 = 2.0.1 =
    813 * Fixes issue with certain Google post fields not updating when updating post
    814 
    815 = 2.0.0 =
    816 * Improved metabox, easily create multiple GMB posts per WordPress post
    817 * Supports new Google post types
    818 * Added Quick post feature to create GMB posts based on a preset template. All you have to do is tick the checkbox to post!
    819 * Fixed plugin conflict causing endless loop
    820 * Improved and simplified settings page
    821 * Improved business selector
    822 * And much, much more!
    823 
    824 > **New premium features**
    825 >
    826 > * Automatic reposting - Choose time interval and amount of times to repost
    827 > * Post spinning and variables - Make your posts unique using Spintax and variables such as %site_name%, %post_title%
    828 > * Video posts
    829 >
    830 > **[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=changelog)**
    831 
    832 = 1.2 =
    833 * Added logic for cleaning up options when uninstalling plugin
    834 * Improved admin/error notices
    835 
    836 = 1.1.1 =
    837 * Fixed PHP compatibility issue https://wordpress.org/support/topic/getting-parse-error-when-installing/
    838 
    839 = 1.1 =
    840 * Improved business location selector
    841 * Fixed timepicker issues
    842 * Javascript for metabox now in separate file
    843 * Fixed incorrect language code causing issues when posting
    844 * Various other small improvements and fixes
    845 
    846 = 1.0 =
    847 * Initial release
    848 
    849155== Upgrade Notice ==
  • post-to-google-my-business/tags/3.2.4/src/API/ProxyAuthenticationAPI.php

    r2696031 r3246477  
    3131     * @throws \Exception
    3232     */
    33     protected function do_request($url, $args, $method = 'POST'){
     33    protected function do_request($url, $args, $method = 'POST') {
    3434        $response = $this->http->post($url, [
    35             'body'  => wp_parse_args($args, $this->default_args()),
     35            'body'    => wp_parse_args($args, $this->default_args()),
    3636            'timeout' => 20,
    3737            'method'  => $method
    3838        ]);
    3939
    40         if($response instanceof \WP_Error){
     40        if ($response instanceof \WP_Error) {
    4141            throw new \Exception($response->get_error_message());
    4242        }
    4343
    4444        $response_code = wp_remote_retrieve_response_code($response);
    45         if($response_code !== 200 && $response_code !== 201){
    46             throw new \Exception($response['body']);
     45        $response_body = wp_remote_retrieve_body($response);
     46
     47        $data = json_decode($response_body);
     48
     49        // If the response is not JSON or is empty, throw an exception
     50        if (json_last_error() !== JSON_ERROR_NONE) {
     51            throw new UnexpectedValueException(__('Invalid JSON response from authentication server.', 'post-to-google-my-business'));
    4752        }
    4853
    49         $data = json_decode($response['body']);
    50         if(!$data){
    51             throw new UnexpectedValueException(__('Could not parse JSON response from authentication server.', 'post-to-google-my-business'));
     54        // Check if there's an error object in the JSON response
     55        if (isset($data->error)) {
     56            if (is_object($data->error)) {
     57                throw new GoogleAPIError($data);
     58            } else {
     59                throw new UnexpectedValueException((string)$data->error);
     60            }
    5261        }
    5362
    54         if(!isset($data->error)){
    55             return $data;
    56         }elseif(is_object($data->error)) {
    57             throw new GoogleAPIError( $data );
    58         }else{
    59             throw new UnexpectedValueException((string)$data->error);
     63        // Allow non-200/201 responses if they contain valid JSON without an error object
     64        if ($response_code !== 200 && $response_code !== 201) {
     65            throw new \Exception(sprintf(__('Unexpected response code %d: %s', 'post-to-google-my-business'), $response_code, $response_body));
    6066        }
     67
     68        return $data;
    6169    }
    6270
  • post-to-google-my-business/tags/3.2.4/src/Admin/AdminPage.php

    r3228979 r3246477  
    321321        $accounts = get_option( 'pgmb_accounts' );
    322322        echo "<br /><br />";
    323         if ( !$accounts || empty( $accounts ) ) {
    324             echo sprintf( '<a href="%s" class="button-primary">%s</a>', esc_url( admin_url( 'admin-post.php?action=mbp_generate_url' ) ), esc_html__( 'Connect to Google My Business', 'post-to-google-my-business' ) );
     323        if ( empty( $accounts ) ) {
     324            echo sprintf( '<a href="%s" class="button button-primary button-hero">%s</a>', esc_url( admin_url( 'admin-post.php?action=mbp_generate_url' ) ), esc_html__( 'Connect to Google Business Profile', 'post-to-google-my-business' ) );
    325325            return;
    326326        }
  • post-to-google-my-business/tags/3.2.4/src/BackgroundProcessing/LocationSyncProcess.php

    r3228979 r3246477  
    55use PGMB\API\ProxyAuthenticationAPI;
    66use PGMB\API\ProxyGMBAPI;
     7use PGMB\Notices\BrandedStickyNotice;
    78use PGMB\Vendor\TypistTech\WPAdminNotices\AbstractNotice;
    89use PGMB\Vendor\TypistTech\WPAdminNotices\StickyNotice;
     
    5051        }
    5152
     53        $account_id = $item->get_account_id();
     54
    5255        try{
    53             $this->api->set_access_token($this->auth_api->get_access_token($item->get_account_id()));
    54 
     56            $this->admin_notice_store->delete('location_import_error');
     57            delete_option('pgmb_location_import_last_error_'.$account_id);
     58            $this->api->set_access_token($this->auth_api->get_access_token($account_id));
    5559            if($item instanceof LocationSyncQueueItem){
    5660                return $this->sync_locations($item);
     
    5963            }
    6064        }catch(\Throwable $e){
    61             $this->admin_notice_store->add(new StickyNotice('location_import_error', sprintf(esc_html__("Something went wrong trying to load your Google Business Profile locations: %s", 'post-to-google-my-business'), $e->getMessage()), AbstractNotice::ERROR));
    62             return false;
    63         }
    64 
    65         update_option('pgmb_account_refresh_'.$item->get_account_id(), current_time('mysql', true));
    66 
    67         return new GroupSyncQueueItem($item->get_account_id());
     65            $error_message = sprintf(__("Something went wrong trying to load the Google Business Profile locations for this account: %s", 'post-to-google-my-business'), $e->getMessage());
     66            $link = sprintf('<a href="%s">%s</a>', esc_url(admin_url('admin.php?page=pgmb_settings#mbp_google_settings')), __('Check Google account settings', 'post-to-google-my-business'));
     67            $this->admin_notice_store->add(new BrandedStickyNotice('location_import_error', $error_message, $link, AbstractNotice::ERROR));
     68            $this->cancel();
     69            update_option('pgmb_location_import_last_error_'.$account_id, $error_message);
     70            return false;
     71        }
     72
     73        update_option('pgmb_account_refresh_'.$account_id, current_time('mysql', true));
     74
     75        return new GroupSyncQueueItem($account_id);
    6876    }
    6977
  • post-to-google-my-business/tags/3.2.4/src/Components/BusinessSelector.php

    r3228979 r3246477  
    348348
    349349        if($this->location_sync_process->is_processing()){
    350             wp_send_json_error([
     350            wp_send_json([
    351351                'loading' => true,
    352352            ]);
    353353        }
     354
    354355//      $account_data = reset($accounts);
    355356//      $key = key($accounts);
     
    371372
    372373        if($refresh){
    373             $this->location_sync_process->push_to_queue(new AccountSyncQueueItem($data->account_id))->save()->dispatch();
     374            $this->location_sync_process->push_to_queue(new AccountSyncQueueItem($account_key))->save()->dispatch();
     375        }
     376
     377        $error_message = get_option('pgmb_location_import_last_error_'.$account_key);
     378        if(!empty($error_message)){
     379            wp_send_json_error($error_message);
    374380        }
    375381
  • post-to-google-my-business/tags/3.2.4/src/GoogleUserManager.php

    r3235346 r3246477  
    3838        }
    3939
    40         $response = $this->transport->get('https://www.googleapis.com/oauth2/v3/certs');
     40        $response = $this->transport->get('https://app.posttogmb.com/google_cert');
    4141
    4242        if (is_wp_error($response)) {
     
    133133        $account_data = JWT::decode( $tokens->id_token, JWK::parseKeySet( (array) $keys ), [ 'RS256' ] );
    134134
    135 
     135        $scopes = explode(" ", $tokens->scope);
     136        if(!in_array('https://www.googleapis.com/auth/business.manage', $scopes)){
     137            throw new Exception(__('You did not give the plugin permission to manage your Google Business Profile listings. The plugin will not work without this permission. Please retry the authentication and make sure you grant the plugin permission to manage your locations.', 'post-to-google-my-business'));
     138        }
     139        //$tokens->scope = https://www.googleapis.com/auth/userinfo.profile openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/business.manage
    136140        $accounts = get_option('pgmb_accounts');
    137141        if(!$accounts){$accounts = [];}
  • post-to-google-my-business/tags/3.2.4/src/Plugin.php

    r3235346 r3246477  
    1010    const DOMAIN = 'post-to-google-my-business';
    1111
    12     const VERSION = '3.2.3';
     12    const VERSION = '3.2.4';
    1313
    1414    const DASHICON = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIEZpcmV3b3JrcyAxMCwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyBpZD0iZGFzaGljb24uZnctUGFnZSUyMDEiIHZpZXdCb3g9IjAgMCAyMDcgMjA3IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIg0KCXg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjA3cHgiIGhlaWdodD0iMjA3cHgiDQo+DQoJPGcgaWQ9IkxheWVyJTIwMSI+DQoJCTxwYXRoIGQ9Ik0gMTQ5Ljk5OTEgMTEyIEMgMTcwLjEyMzYgMTEyIDE4Ni40OTk0IDEyOC4zNzM0IDE4Ni41IDE0OC40OTkxIEMgMTg2LjUgMTY4LjYyNzIgMTcwLjEyMzYgMTg1IDE0OS45OTkxIDE4NSBDIDEyOS44NzQgMTg1IDExMy41IDE2OC42MjcyIDExMy41IDE0OC40OTkxIEMgMTEzLjUgMTI4LjM3MzQgMTI5Ljg3NCAxMTIgMTQ5Ljk5OTEgMTEyIFpNIDE1Ny4yMzUgOTMuMjkgQyAxNTEuOTAyMyAxMDIuNzQ5NiAxNDEuNTYgMTA4Ljg0MyAxMzAuNSAxMDguODQzIEMgMTIxLjMzMDQgMTA4Ljg0MyAxMDkuNjM5MSAxMDQuNDI5MyAxMDMuNTIgOTMuMDk1IEMgOTcuNjYxMSAxMDMuNzAyIDg3LjI2NzcgMTA4Ljg0MyA3Ni44NzUgMTA4Ljg0MyBDIDY1LjU5ODQgMTA4Ljg0MyA1NS42ODIgMTAyLjQ5NjYgNTAuNDA1IDkzLjMxNSBDIDQ0LjM5OTQgMTA0LjExMDkgMzMuNDA1NyAxMDguNzg5IDIzLjYyNSAxMDguNzg5IEMgMTkuNTUxIDEwOC43ODkgMTUuNDQwOSAxMDguMTA1NyAxMS41NCAxMDYuNTEgTCAxMS41NDIgMTgwLjYyMjEgQyAxMS41NDIgMTg4LjA2MjUgMTcuNjI5OSAxOTQuMTUwNCAyNS4wNzAzIDE5NC4xNTA0IEwgMTgyLjYwNDUgMTk0LjE1MDQgQyAxOTAuMDQ1NCAxOTQuMTUwNCAxOTYuMTMyOCAxODguMDYyNSAxOTYuMTMyOCAxODAuNjIyMSBMIDE5Ni4xMzUgMTA2LjIyIEMgMTkyLjI5MjQgMTA3LjkzMzcgMTg4LjA4MzMgMTA4Ljg3NSAxODMuNzUgMTA4Ljg3NSBDIDE3NC40OTk3IDEwOC44NzUgMTYzLjgyMzMgMTA0LjU5OCAxNTcuMjM1IDkzLjI5IFpNIDE0OS45OTkxIDE4My4zMjY5IEMgMTY5LjIwMDcgMTgzLjMyNjkgMTg0LjgyMjkgMTY3LjcwMzEgMTg0LjgyMjkgMTQ4LjQ5OTEgQyAxODQuODIyOSAxMjkuMjk2MyAxNjkuMjAwNyAxMTMuNjczNiAxNDkuOTk5MSAxMTMuNjczNiBDIDEzMC43OTYzIDExMy42NzM2IDExNS4xNzM2IDEyOS4yOTYzIDExNS4xNzM2IDE0OC40OTkxIEMgMTE1LjE3MzYgMTY3LjcwMzEgMTMwLjc5NjkgMTgzLjMyNjkgMTQ5Ljk5OTEgMTgzLjMyNjkgWk0gMTc3LjQ3MzIgMTMzLjQ3NjQgQyAxNzkuOTE4OSAxMzcuOTM2NiAxODEuMzA5NSAxNDMuMDU1OCAxODEuMzA4OSAxNDguNDk5NyBDIDE4MS4zMDg5IDE2MC4wNTEyIDE3NS4wNDc4IDE3MC4xMzY0IDE2NS43MzkyIDE3NS41NjQ4IEwgMTc1LjMwMzQgMTQ3LjkxMTYgQyAxNzcuMDkwNyAxNDMuNDQ1NSAxNzcuNjg0MSAxMzkuODczNiAxNzcuNjg0MSAxMzYuNjk2MiBDIDE3Ny42ODQxIDEzNS41NDQ1IDE3Ny42MDc5IDEzNC40NzM4IDE3Ny40NzMyIDEzMy40NzY0IFpNIDE1MC41NDg1IDE1MS4yMzggTCAxNjAuMTc0IDE3Ny42MDY2IEMgMTYwLjIzNjUgMTc3Ljc2MTYgMTYwLjMxMjcgMTc3LjkwMzkgMTYwLjM5NjggMTc4LjAzOCBDIDE1Ny4xNDIgMTc5LjE4MjUgMTUzLjY0NTMgMTc5LjgxMyAxNDkuOTk5MSAxNzkuODEzIEMgMTQ2LjkyNTQgMTc5LjgxMyAxNDMuOTU5IDE3OS4zNjE4IDE0MS4xNTQxIDE3OC41MzczIEwgMTUwLjU0ODUgMTUxLjIzOCBaTSAxNzEuMTM2NSAxNDYuOTE5IEMgMTcxLjEzNjUgMTQ5LjU5OTUgMTcwLjEwNjMgMTUyLjcxMDMgMTY4Ljc1MjcgMTU3LjA0MTIgTCAxNjUuNjI5NiAxNjcuNDc3OSBMIDE1NC4zMTQ0IDEzMy44MTg1IEMgMTU2LjE5ODIgMTMzLjcxOTUgMTU3Ljg5ODEgMTMzLjUxOTkgMTU3Ljg5ODEgMTMzLjUxOTkgQyAxNTkuNTg0NyAxMzMuMzIwMyAxNTkuMzg2NCAxMzAuODQxMiAxNTcuNjk3MyAxMzAuOTQwNyBDIDE1Ny42OTczIDEzMC45NDA3IDE1Mi42MjcxIDEzMS4zMzgxIDE0OS4zNTI3IDEzMS4zMzgxIEMgMTQ2LjI3NiAxMzEuMzM4MSAxNDEuMTA1MiAxMzAuOTQwNyAxNDEuMTA1MiAxMzAuOTQwNyBDIDEzOS40MTc5IDEzMC44NDEyIDEzOS4yMjAxIDEzMy40MjEgMTQwLjkwNzQgMTMzLjUxOTkgQyAxNDAuOTA3NCAxMzMuNTE5OSAxNDIuNTA0NyAxMzMuNzE5NSAxNDQuMTkwOCAxMzMuODE4NSBMIDE0OS4wNjkxIDE0Ny4xODQ4IEwgMTQyLjIxNjkgMTY3LjczNiBMIDEzMC44MTQ4IDEzMy44MTk2IEMgMTMyLjcwMjIgMTMzLjcyMDcgMTM0LjM5ODQgMTMzLjUyMTEgMTM0LjM5ODQgMTMzLjUyMTEgQyAxMzYuMDg0NSAxMzMuMzIxNiAxMzUuODg1NSAxMzAuODQyNCAxMzQuMTk3NiAxMzAuOTQxOSBDIDEzNC4xOTc2IDEzMC45NDE5IDEyOS4xMjgxIDEzMS4zMzkzIDEyNS44NTMgMTMxLjMzOTMgQyAxMjUuMjY1IDEzMS4zMzkzIDEyNC41NzI3IDEzMS4zMjM4IDEyMy44MzgxIDEzMS4zMDE4IEMgMTI5LjQzNjcgMTIyLjgwMDggMTM5LjA2MDQgMTE3LjE4ODMgMTQ5Ljk5OTEgMTE3LjE4ODMgQyAxNTguMTUwNiAxMTcuMTg4MyAxNjUuNTcyNCAxMjAuMzA0NCAxNzEuMTQyOSAxMjUuNDA4IEMgMTcxLjAwNzggMTI1LjQwMDMgMTcwLjg3NjEgMTI1LjM4MyAxNzAuNzM3MiAxMjUuMzgzIEMgMTY3LjY2MjQgMTI1LjM4MyAxNjUuNDc5NCAxMjguMDYyNCAxNjUuNDc5NCAxMzAuOTQwNyBDIDE2NS40Nzk0IDEzMy41MTk5IDE2Ni45NjcxIDEzNS43MDQyIDE2OC41NTQzIDEzOC4yODM0IEMgMTY5Ljc0NjUgMTQwLjM2OTMgMTcxLjEzNjUgMTQzLjA0OTMgMTcxLjEzNjUgMTQ2LjkxOSBaTSAxMTguNjg4MSAxNDguNDk5MSBDIDExOC42ODgxIDE0My45NTk2IDExOS42NjE2IDEzOS42NTAyIDEyMS4zOTg5IDEzNS43NTYgTCAxMzYuMzM0NyAxNzYuNjc5NiBDIDEyNS44OTA2IDE3MS42MDM5IDExOC42ODgxIDE2MC44OTMxIDExOC42ODgxIDE0OC40OTkxIFpNIDE2MS4zNzUgNzcuMDU1IEMgMTYxLjcyMDIgODAuMDc4NCAxNjEuNjQxMSA4My40NTQzIDE2MyA4Ni42MjUgQyAxNjcuNSA5Ni44NzUgMTc2IDEwMC42MjUgMTgzLjc1IDEwMC42MjUgQyAxODguMDkzNCAxMDAuNjI1IDE5Mi40MzkgOTkuMzE5NSAxOTYuMTM1IDk2Ljk3IEMgMjAyLjAxMjEgOTMuMjMzOSAyMDYuMjUgODYuODU2IDIwNi4yNSA3OC44NzUgQyAyMDYuMjUgNzUuMTI1IDE5My43NSAzMC42MjUgMTkyLjUgMjQuMTI1IEMgMTkxLjc1IDIwLjEyNSAxODkuMjUgMTMuMzc1IDE4My41IDEzLjM3NSBMIDE1My4yNSAxMy4zNzUgTCAxNTMuMjUgMTQuODc1IEMgMTUzLjI1IDE1LjM3NSAxNTYuNzUgNDAuNjI1IDE1OC4yNSA1My4zNzUgQyAxNTkuMjUgNjAuNjI1IDE2MC41IDY4LjM3NSAxNjEuMjUgNzYuMTI1IEMgMTYxLjI5NjkgNzYuNDMgMTYxLjMzOTIgNzYuNzQxOCAxNjEuMzc1IDc3LjA1NSBaTSAxMDggNzcuMDU1IEwgMTA4IDc5LjM0MyBDIDEwOCA3OS44NDMgMTA4LjI1IDgyLjg0MyAxMDguNzUgODQuMzQzIEMgMTEyLjI1IDk2LjA5MyAxMjIgMTAwLjU5MyAxMzAuNSAxMDAuNTkzIEMgMTQxLjI1IDEwMC41OTMgMTUyLjI1IDkyLjU5MyAxNTMgNzguNTkzIEwgMTUyLjggNzcuMDU1IEwgMTQ0LjUgMTMuMzQzIEwgMTA4IDEzLjM0MyBMIDEwOCA3Ny4wNTUgWk0gNTQuNjI1IDc3LjA1NSBMIDU0LjYyNSA4MC4zNDMgQyA1NC42MjUgODAuODQzIDU1LjM3NSA4NC44NDMgNTYuMTI1IDg2Ljg0MyBDIDYwLjg3NSA5Ny4wOTMgNjkuMzc1IDEwMC41OTMgNzcuMTI1IDEwMC41OTMgQyA4Ni42MjUgMTAwLjU5MyA5Ni44NzUgOTQuMzQzIDk5LjM3NSA4MS4wOTMgTCA5OS4zNzUgNzcuMDU1IEwgOTkuMzc1IDEzLjM0MyBMIDYyLjg3NSAxMy4zNDMgTCA1NC42MjUgNzYuMzQzIEwgNTQuNjI1IDc3LjA1NSBaTSAxMS41NCA5Ny4wNSBDIDE1LjEzMzggOTkuMjcwOSAxOS4zMzAzIDEwMC41MzkgMjMuNjI1IDEwMC41MzkgQyAzMy42MjUgMTAwLjUzOSA0NC4zNzUgOTQuMDM5IDQ2LjM3NSA3OS43ODkgTCA0Ni4zNzUgNzguMzQzIEwgNDYuMzc1IDc3LjA1NSBMIDQ2LjM3NSA3NS4wMzkgTCA1NC4zNzUgMTMuMjg5IEwgMjMuODc1IDEzLjI4OSBDIDIyLjEyNSAxMy4yODkgMTkuMTI1IDE0LjUzOSAxNy42MjUgMTYuNzg5IEMgMTYuODc1IDE3LjUzOSAxNi4zNzUgMTguNTM5IDE2LjEyNSAxOS41MzkgQyAxMy42MjUgMjguMjg5IDExLjM3NSAzNy41MzkgOS4xMjUgNDYuNTM5IEMgOC4zNzUgNDguNzg5IDcuNjI1IDUxLjc4OSA3LjEyNSA1NC4yODkgQyA2LjEyNSA1OC4yODkgNS4xMjUgNjIuNzg5IDMuODc1IDY2Ljc4OSBDIDIuODc1IDcwLjc4OSAwLjg3NSA3Ny43ODkgMC44NzUgNzguNTM5IEMgMC44NzUgODYuNDY5MiA1LjMwMjYgOTMuMTk0NCAxMS41NCA5Ny4wNSBaIiBmaWxsPSIjOWVhM2E4Ii8+DQoJPC9nPg0KPC9zdmc+';
     
    116116
    117117    public static function uninstall_single_site() {
     118        global $wpdb;
    118119        $settings = get_option( 'mbp_misc' );
    119120        if ( !isset( $settings['uninstall_cleanup'] ) || !is_array( $settings['uninstall_cleanup'] ) ) {
    120121            return;
    121122        }
     123        $groups_table = $wpdb->prefix . 'pgmb_group_cache';
     124        $locations_table = $wpdb->prefix . 'pgmb_location_cache';
     125        $wpdb->query( "DROP TABLE IF EXISTS {$locations_table};" );
     126        $wpdb->query( "DROP TABLE IF EXISTS {$groups_table};" );
    122127        if ( in_array( 'delete_settings', $settings['uninstall_cleanup'] ) ) {
    123128            global $wpdb;
     
    134139            }
    135140        }
     141        //      if(in_array('delete_metadata', $settings['uninstall_cleanup'])){
     142        //          $meta_keys = [
     143        //              'mbp_autopost_created',
     144        //              '_mbp_gutenberg_autopost',
     145        //              '_pgmb_queued_items',
     146        //              'mbp_last_error',
     147        //              '_mbp_autopost_template',
     148        //              '_pgmb_autopost_template',
     149        //              '_pgmb_is_evergreen',
     150        //              '_pgmb_ap_template_id',
     151        //
     152        //          ];
     153        //          foreach($meta_keys as $key){
     154        //              delete_post_meta_by_key($key);
     155        //          }
     156        //      }
    136157    }
    137158
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/deliciousbrains/wp-background-processing/classes/wp-async-request.php

    r3235346 r3246477  
    66 *
    77 * @license GPL-2.0-or-later
    8  * Modified by __root__ on 05-February-2025 using Strauss.
     8 * Modified by __root__ on 25-February-2025 using Strauss.
    99 * @see https://github.com/BrianHenryIE/strauss
    1010 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/deliciousbrains/wp-background-processing/classes/wp-background-process.php

    r3235346 r3246477  
    66 *
    77 * @license GPL-2.0-or-later
    8  * Modified by __root__ on 05-February-2025 using Strauss.
     8 * Modified by __root__ on 25-February-2025 using Strauss.
    99 * @see https://github.com/BrianHenryIE/strauss
    1010 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/AbstractField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/CronExpression.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/FieldFactory.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/FieldInterface.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/HoursField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/MinutesField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/MonthField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/dragonmantank/cron-expression/src/Cron/YearField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/BeforeValidException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/ExpiredException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/JWK.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/JWT.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/Key.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/firebase/php-jwt/src/SignatureInvalidException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/html2text/html2text/src/Html2Text.php

    r3235346 r3246477  
    1818 *
    1919 * @license GPL-2.0-or-later
    20  * Modified by __root__ on 05-February-2025 using Strauss.
     20 * Modified by __root__ on 25-February-2025 using Strauss.
    2121 * @see https://github.com/BrianHenryIE/strauss
    2222 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/rarst/wpdatetime/src/WpDateTime.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeImmutable.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeInterface.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeTrait.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeZone.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/AbstractNotice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/Factory.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/Notice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/NoticeInterface.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/Notifier.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/StickyNotice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/Store.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor-prefixed/typisttech/wp-admin-notices/src/StoreInterface.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/tags/3.2.4/vendor/autoload.php

    r3235346 r3246477  
    55require_once __DIR__ . '/composer/autoload_real.php';
    66
    7 return ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9::getLoader();
     7return ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8::getLoader();
  • post-to-google-my-business/tags/3.2.4/vendor/composer/autoload_classmap.php

    r3228979 r3246477  
    7474    'PGMB\\Metabox\\PostCreationMetabox' => $baseDir . '/src/Metabox/PostCreationMetabox.php',
    7575    'PGMB\\Metabox\\StorableDataMetaboxInterface' => $baseDir . '/src/Metabox/StorableDataMetaboxInterface.php',
     76    'PGMB\\Notices\\BrandedStickyNotice' => $baseDir . '/src/Notices/BrandedStickyNotice.php',
    7677    'PGMB\\Notifications\\BasicNotification' => $baseDir . '/src/Notifications/BasicNotification.php',
    7778    'PGMB\\Notifications\\FeatureNotification' => $baseDir . '/src/Notifications/FeatureNotification.php',
  • post-to-google-my-business/tags/3.2.4/vendor/composer/autoload_real.php

    r3235346 r3246477  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9
     5class ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
    27         spl_autoload_unregister(array('ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8', 'loadClassLoader'));
    2828
    2929        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
     
    3131            require __DIR__ . '/autoload_static.php';
    3232
    33             call_user_func(\Composer\Autoload\ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::getInitializer($loader));
     33            call_user_func(\Composer\Autoload\ComposerStaticInit7caea00781b82d622959f90e25360fc8::getInitializer($loader));
    3434        } else {
    3535            $classMap = require __DIR__ . '/autoload_classmap.php';
  • post-to-google-my-business/tags/3.2.4/vendor/composer/autoload_static.php

    r3235346 r3246477  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit88a213064ffdff7fb3cdad65633743e9
     7class ComposerStaticInit7caea00781b82d622959f90e25360fc8
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    129129        'PGMB\\Metabox\\PostCreationMetabox' => __DIR__ . '/../..' . '/src/Metabox/PostCreationMetabox.php',
    130130        'PGMB\\Metabox\\StorableDataMetaboxInterface' => __DIR__ . '/../..' . '/src/Metabox/StorableDataMetaboxInterface.php',
     131        'PGMB\\Notices\\BrandedStickyNotice' => __DIR__ . '/../..' . '/src/Notices/BrandedStickyNotice.php',
    131132        'PGMB\\Notifications\\BasicNotification' => __DIR__ . '/../..' . '/src/Notifications/BasicNotification.php',
    132133        'PGMB\\Notifications\\FeatureNotification' => __DIR__ . '/../..' . '/src/Notifications/FeatureNotification.php',
     
    240241    {
    241242        return \Closure::bind(function () use ($loader) {
    242             $loader->prefixLengthsPsr4 = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$prefixLengthsPsr4;
    243             $loader->prefixDirsPsr4 = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$prefixDirsPsr4;
    244             $loader->classMap = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$classMap;
     243            $loader->prefixLengthsPsr4 = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$prefixLengthsPsr4;
     244            $loader->prefixDirsPsr4 = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$prefixDirsPsr4;
     245            $loader->classMap = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$classMap;
    245246
    246247        }, null, ClassLoader::class);
  • post-to-google-my-business/tags/3.2.4/vendor/composer/installed.json

    r3228979 r3246477  
    77            "source": {
    88                "type": "git",
    9                 "url": "https://github.com/koen12344/multisite-background-processing.git",
     9                "url": "[email protected]:koen12344/multisite-background-processing.git",
    1010                "reference": "7724c9d124f1efdc672d0b15923a60c8ee42e434"
    1111            },
     
    4747            ],
    4848            "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.",
    49             "support": {
    50                 "source": "https://github.com/koen12344/multisite-background-processing/tree/prod"
    51             },
    5249            "install-path": "../deliciousbrains/wp-background-processing"
    5350        },
  • post-to-google-my-business/trunk/composer.lock

    r3228979 r3246477  
    1212            "source": {
    1313                "type": "git",
    14                 "url": "https://github.com/koen12344/multisite-background-processing.git",
     14                "url": "[email protected]:koen12344/multisite-background-processing.git",
    1515                "reference": "7724c9d124f1efdc672d0b15923a60c8ee42e434"
    1616            },
     
    5050            ],
    5151            "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.",
    52             "support": {
    53                 "source": "https://github.com/koen12344/multisite-background-processing/tree/prod"
    54             },
    5552            "time": "2025-01-11T16:16:36+00:00"
    5653        },
     
    438435        {
    439436            "name": "myclabs/deep-copy",
    440             "version": "1.12.1",
     437            "version": "1.13.0",
    441438            "source": {
    442439                "type": "git",
    443440                "url": "https://github.com/myclabs/DeepCopy.git",
    444                 "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
    445             },
    446             "dist": {
    447                 "type": "zip",
    448                 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
    449                 "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
     441                "reference": "024473a478be9df5fdaca2c793f2232fe788e414"
     442            },
     443            "dist": {
     444                "type": "zip",
     445                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414",
     446                "reference": "024473a478be9df5fdaca2c793f2232fe788e414",
    450447                "shasum": ""
    451448            },
     
    486483            "support": {
    487484                "issues": "https://github.com/myclabs/DeepCopy/issues",
    488                 "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
     485                "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0"
    489486            },
    490487            "funding": [
     
    494491                }
    495492            ],
    496             "time": "2024-11-08T17:47:46+00:00"
     493            "time": "2025-02-12T12:17:51+00:00"
    497494        },
    498495        {
     
    850847        {
    851848            "name": "phpstan/phpdoc-parser",
    852             "version": "2.0.0",
     849            "version": "2.1.0",
    853850            "source": {
    854851                "type": "git",
    855852                "url": "https://github.com/phpstan/phpdoc-parser.git",
    856                 "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
    857             },
    858             "dist": {
    859                 "type": "zip",
    860                 "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
    861                 "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
     853                "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
     854            },
     855            "dist": {
     856                "type": "zip",
     857                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
     858                "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
    862859                "shasum": ""
    863860            },
     
    891888            "support": {
    892889                "issues": "https://github.com/phpstan/phpdoc-parser/issues",
    893                 "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
    894             },
    895             "time": "2024-10-13T11:29:49+00:00"
     890                "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
     891            },
     892            "time": "2025-02-19T13:28:12+00:00"
    896893        },
    897894        {
  • post-to-google-my-business/trunk/post-to-google-my-business.php

    r3235346 r3246477  
    66Description: Automatically create a post on Google My Business when creating a new WordPress post
    77Author: Koen Reus
    8 Version: 3.2.3
     8Version: 3.2.4
    99Author URI: https://koenreus.com
    1010Text Domain: post-to-google-my-business
  • post-to-google-my-business/trunk/readme.txt

    r3235346 r3246477  
    11=== Post to Google My Business (Google Business Profile) ===
    2 Contributors: koen12344, freemius
    3 Donate link: https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=donate
    4 Tags: google my business, gmb, auto publish, posts, post, local search, google my business posts, google places, google plus, google+
     2Contributors: koen12344, valdemirmaran, freemius
     3Donate link: https://digitaldistortion.dev/?utm_source=repository&utm_medium=link&utm_campaign=donate
     4Tags: google my business, google business profile, gmb, local seo, google places
    55Requires at least: 4.9.0
    6 Tested up to: 6.7.1
    7 Stable tag: 3.2.3
     6Tested up to: 6.7.2
     7Stable tag: 3.2.4
    88Requires PHP: 7.0
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1111
    12 (Auto-)Publish and manage Google My Business (GMB) Posts from the WordPress Dashboard!
     12Auto-publish posts, pages & CPTs, plus manage Google Business Profile posts - all from your WordPress dashboard!
    1313
    1414== Description ==
    1515
    16 The posts feature in Google Business Profile (formerly: Google My Business) is a great way to improve the presence of your, or your clients' business on Google. It can be a hassle however to have to log in to Google My Business every time you want to create a new post, likewise it can be an easy thing to forget.
     16The **Posts** feature in **Google Business Profile** (formerly Google My Business) is a powerful way to enhance your business's presence on Google. However, constantly logging into your Google account to create new posts can be time-consuming—and easy to forget.
    1717
    18 Don't miss out on the SEO benefit, and save time by creating posts on Google My Business directly from the WordPress Dashboard!
     18With the **Post to Google My Business** plugin, you can save time and maximize your SEO benefits by publishing directly from your WordPress dashboard!
    1919
    20 Use the Auto-post feature to instantly publish your latest WordPress post to your Google Business Profile, based on a preset template and the posts' featured image.
     20= Effortless auto-posting & powerful features =
    2121
    22 The Post to Google My Business plugin utilizes the official Google My Business API with secure oAuth authentication to ensure your Google account is safe.
     22Use the **Auto-post** feature to instantly share your latest WordPress content to your Google Business Profile. Posts are generated based on a preset template and automatically include your post’s featured image, keeping your profile fresh with minimal effort.
    2323
    24 = Features =
    25 * Create, edit or delete posts without having to visit your Google My Business dashboard
    26 * Automatically publish your latest WordPress posts to GMB using the Auto-post feature
    27 * Generates beautiful auto-posts from any content. HTML, shortcodes and clutter from visual editors such as Divi or Visual Composer are automatically stripped
    28 * Network- and site-level Multisite support
    29 * Supports publishing to GMB from external apps (such as Zapier, Integromat, IFTTT, ManageWP, InfiniteWP, MainWP and more)
    30 * Uses official Google My Business API
    31 * Developer friendly. Uses the latest built-in WordPress functions and has various actions/filters to hook into.
    32 * Translatable. Uses built-in WordPress functions for easy translation.
    33 * Compatible with Gutenberg/Block Editor
    34 * Supports modern image formats such as WebP and AVIF
     24= Why choose Post to Google My Business? =
     25✅ **Create, edit, and delete posts** without leaving WordPress
     26✅ **Auto-publish** your latest WordPress posts, pages and custom post types to your Google Business Profile
     27✅ **Beautiful, clean posts** – Automatically strips unnecessary HTML, shortcodes, and visual editor clutter (Divi, WPBakery, etc.)
     28✅ **Multisite support** – Works on both network and site level
     29✅ **Third-party integration** – Publish from **Zapier, IFTTT, Integromat, ManageWP, MainWP**, and more
     30✅ **Secure & reliable** – Uses the official **Google My Business API** with **oAuth** authentication
     31✅ **Developer-friendly** – Hooks, filters, and WordPress-native functions for easy customization
     32✅ **Translation-ready** – Fully compatible with WPML and other translation plugins
     33✅ **Modern image support** – Works with **WebP**, **AVIF**, and other optimized formats
     34✅ **Gutenberg-compatible** – Works seamlessly with the Block Editor
    3535
    36 > **Time-saving features available in the Premium versions:**
    37 >
    38 > * Product support, create "real" Products in GBP based on your WooCommerce Products or other content
    39 > * Schedule Google My Business posts for automatic publishing in the future
    40 > * Publish posts to multiple locations, across multiple Google accounts at once
    41 > * Automatic re-posting (post recycling) - Automatically recycle your GMB posts at preset intervals and x amount of times
    42 > * Auto publish posts with specific tags or categories
    43 > * Make posts unique using Spintax
    44 > * Post Campaigns - Create posts on GMB that aren't tied to any specific WordPress post or page.
    45 > * Evergreen content - randomly publish items from a selection of your content
    46 > * Multiple Auto-post templates
    47 > * Manage GMB post campaigns for your agency clients
    48 > * Much more!
    49 >
    50 > **[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=description)**
     36= Time-saving features available in Premium: =
     37
     38Upgrade to **Post to Google My Business premium** for **even more automation and flexibility**:
     39⭐ **Product Support** – Create and manage **real** Google Business Profile **Products** from WooCommerce or other content
     40⭐ **Scheduled Posts** – Plan and **automate future post publishing**
     41⭐ **Multi-location & Multi-account support** – Publish posts across **multiple GBP locations** at once
     42⭐ **Auto Re-posting (Recycling)** – Keep your content fresh by **automatically republishing** posts at set intervals
     43⭐ **Category- & Tag-based Auto-publishing** – Control exactly what gets posted
     44⭐ **Spintax Support** – Generate **unique** content variations to avoid duplication
     45⭐ **Evergreen Content** – Randomly publish from a selection of your best content
     46⭐ **Post Campaigns** – Create GMB posts that aren’t tied to a specific WordPress post or page
     47⭐ **Multiple Auto-post Templates** – Customize and manage different posting styles
     48⭐ **Agency Support** – Manage Google My Business posts for **multiple clients**
     49
     50**[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=description)**
    5151
    5252= Great support! =
     
    5757Installing and configuring Post to Google My Business is easy!
    5858
    59 1. Upload the plugin files to the `/wp-content/plugins/post-to-google-my-business` directory, or install it through the plugins page within the WordPress Dashboard.
    60 2. Activate the plugin through the **Plugins** page in WordPress
    61 3. Go to the **Post to GMB** > **Settings** page to configure the plugin
    62 4. To allow your website to post to Google My Business on your behalf, click **Connect to Google My Business**. Confirm the authorization using the Google account that holds your business location.
    63 5. You will be redirected back to the settings page. Select your business location and press **Save Changes**.
     591. Upload the plugin files to the `/wp-content/plugins/post-to-google-my-business` directory, or install it through the **Plugins** section within your WordPress Dashboard.
     602. Activate the plugin through the **Plugins** section in WordPress
     613. Go to the **Post to GMB** > **Settings** > **Google Settings** page to configure the plugin
     624. To allow your website to post to your Google Business Profile on your behalf, click **Connect to Google Business Profile**. Confirm the authorization using the Google account that holds the business location(s) you want to use. Make sure you check the checkbox to allow the plugin to manage your GMB locations.
     635. You will be redirected back to the settings page. Select your business location in the **Default Location** section and press **Save Changes**.
    64646. All set! When creating a new WordPress **Post** there will a new metabox that allows you to create posts on Google My Business.
    6565
     
    115115== Changelog ==
    116116
     117= 3.2.4 =
     118* Improved: Design of admin notices
     119* Improved: Hide location syncing error after successful sync
     120* Improved: Show more descriptive error when permission to manage locations hasn't been granted during authentication
     121* Improved: Route Google JWK keyset through backend instead of calling the Google URL directly
     122* Fix: Show error in locations field when refreshing of locations fails
     123* Fix: Delete location and group cache MySQL tables on plugin uninstall
     124
    117125= 3.2.3 =
    118126* Improved: Error handling for retrieval of Google public keys
     
    145153* Update Freemius SDK
    146154
    147 = 3.1.24 =
    148 * Update: Freemius SDK 2.7.1
    149 
    150 > **Premium**
    151 >
    152 > * Fix: Creating products not working (due to Google changes)
    153 
    154 = 3.1.23 =
    155 > **Premium**
    156 >
    157 > * Fix: Delete event date of previous post not updated when editing auto-repost schedule
    158 > * Added: Indication when previous auto-repost item will be deleted
    159 
    160 = 3.1.22 =
    161 * Tested on WordPress 6.5
    162 * Fix: return original image if failing to create intermediate
    163 * Fix: Incorrect loading of admin styles
    164 * Improved: Authentication logic
    165 * Improved: (Developers) LocalPost object now has getters
    166 * Update: Freemius SDK 2.6.2
    167 
    168 
    169 = 3.1.21 =
    170 * Fix: Potential issue with images smaller than 1200x900
    171 * Update: Freemius SDK 2.6.1
    172 
    173 = 3.1.18 =
    174 * Add option to bypass WP-Cron for debugging purposes
    175 
    176 = 3.1.17 =
    177 * Tested on WordPress 6.4
    178 * Update: Add additional 20 second lockout to prevent double posts when auto-posting
    179 * Update: Freemius SDK 2.5.12
    180 
    181 = 3.1.16 =
    182 * Update: WP Background processing 1.1.1
    183 * Update: Freemius SDK 2.5.11
    184 
    185 > **Premium**
    186 >
    187 > * Fix: Change to GBP causing products to stop working
    188 
    189 = 3.1.15 =
    190 * Fix: Add nonce to ajax endpoint to dismiss notifications
    191 
    192 = 3.1.14 =
    193 * Update: Cleaned up Javascript dependencies
    194 
    195 > **Premium**
    196 >
    197 > * Fix: Google accounts being duplicated in the business selector when creating/editing multiple posts
    198 > * Fix: Publish button saying "Publish Now" instead of "Update" when editing posts
    199 
    200 = 3.1.13 =
    201 * Fix: Posts longer than 1500 characters containing emoji causing Google API error
    202 
    203 = 3.1.12 =
    204 > **Premium**
    205 >
    206 > * Fix: Not selecting any location in the auto-post template location selector caused JS/PHP error
    207 
    208 = 3.1.11 =
    209 * Fix: Freemius SDK updated to v2.5.5 to fix "Call to undefined method Freemius_Api_WordPress::RemoteRequest()" error
    210 * Update: Pt_BR translations by @valdermirmaran
    211 * Update: "Product" tab now aligned to the right to better separate it from regular posts
    212 
    213 > **Premium**
    214 >
    215 > * Update: Removed call-to-action for Products (in accordance with GMB itself)
    216 
    217 = 3.1.10 =
    218 * Added extra check for mbstring when creating posts
    219 * Updated Freemius SDK
    220 
    221 > **Premium**
    222 >
    223 > * Products are now allowed to have no description
    224 
    225 = 3.1.9 =
    226 * Added "Refresh Post Status" bulk option to post list
    227 
    228 > **Agency**
    229 >
    230 > * Added CSV export to post list
    231 
    232 = 3.1.8 =
    233 * fix issue blocking site health screen
    234 
    235 = 3.1.7 =
    236 * Make product price field no longer required
    237 * Add check for mbstring PHP module
    238 
    239 = 3.1.6 =
    240 * Tested on 6.2
    241 * Added notification about new Product Sync for GBP plugin
    242 * Included new translations
    243 
    244 = 3.1.5 =
    245 * Add extra content-type header check for WebP images
    246 
    247 = 3.1.4 =
    248 * Fix "Refresh locations" button not actually refreshing locations from GMB API
    249 
    250 = 3.1.3 =
    251 * Fix business selector not loading all locations
    252 
    253 = 3.1.2 =
    254 * Fix issues with account/business selector
    255 
    256 > **Premium**
    257 >
    258 > * Convert Campaign tags/categories from built-in to custom taxonomy
    259 
    260 = 3.1.1 =
    261 > **Premium**
    262 >
    263 > * Fix missing account controls
    264 
    265 = 3.1.0 =
    266 * Prevent duplicate posts when using auto-post
    267 * Improve auto-posting logic
    268 * Add option to enable/disable specific request types (Editor, Internal, XML-RPC, REST)
    269 * Lowered event & offer title length from 80 to 58 characters
    270 * Prevent items in the trash from creating (scheduled) GPB posts
    271 * Improve the business selector to load large amounts of locations in chunks
    272 * Refactoring
    273 
    274 > **Premium**
    275 >
    276 > * Fix posting products (effective_id error)
    277 > * Fix products showing incorrect summary in post list
    278 
    279 = 3.0.28 =
    280 * Add fix for duplicate posts in same session
    281 
    282 = 3.0.27 =
    283 * Add check for sites that have relative image URLs for some reason
    284 
    285 = 3.0.26 =
    286 > **Premium**
    287 >
    288 > * Add better detection of product creation errors
    289 > * Fix cookie check when submitting cookie details
    290 > * Various small improvements to product API code
    291 
    292 
    293 = 3.0.25 =
    294 > **Premium**
    295 >
    296 > * Improve product JSON decoding logic
    297 
    298 = 3.0.24 =
    299 * Updated pt translation
    300 
    301 > **Premium**
    302 >
    303 > * Fix product custom category field not saving
    304 
    305 = 3.0.23 =
    306 > **Premium**
    307 >
    308 > * Fix image upload error for products
    309 
    310 = 3.0.22 =
    311 * Add clearer errors to dialog when clicking post in calendar
    312 * Change layout of store/shop code in created posts dialog
    313 
    314 > **Premium**
    315 >
    316 > * Fix option to disable date & time selector for auto-post templates
    317 
    318 = 3.0.21 =
    319 * Add store code to business selector and created posts dialog
    320 * Add debounce to date & time selector to reduce Ajax calls
    321 * Add option to disable date & time selector on event/offer dates
    322 * Add delay to posts to avoid excessive API calls
    323 * Fix delete API call being triggered multiple times
    324 * Fix auto-post on scheduled WordPress posts
    325 
    326 > **Premium**
    327 >
    328 > * Added "loop" function to evergreen content
    329 > * Evergreen content now only posts unique content
    330 > * Auto-repost will delete the previous post
    331 
    332 = 3.0.20 =
    333 
    334 * Fix image not updating when updating post
    335 * Fix image not being deleted from GMB when deleted from post
    336 * Fix CTA not being deleted from GMB when deleted from post
    337 * Allow placeholder variables in date fields
    338 
    339 > **Premium**
    340 >
    341 > * Fix product price range field not loading in auto-post template
    342 > * Fix duplicate call when deleting multiple posts at once
    343 > * Refresh location list after updating product cookies
    344 
    345 = 3.0.19 =
    346 * Remove hasVoiceOfMerchant check
    347 
    348 > **Premium**
    349 >
    350 > * Fix cookies not saving
    351 
    352 = 3.0.18 =
    353 * Move access token from URL to Auth header
    354 * Add check for IP address in call-to-action URL
    355 * Fix label for locations in business selector
    356 * Adjust max post length to 1499 characters to avoid length error
    357 
    358 = 3.0.17 =
    359 * Change button selection checkboxes to dropdown
    360 * Route API requests through custom backend
    361 * Fix Undefined property: stdClass::$languageCode notice/error
    362 * Fix Undefined index: order/orderby notices/errors
    363 * Fix Undefined index: hook_suffix notice/error
    364 * Update locales (Brazilian Portuguese thanks to Valdemir Maran)
    365 
    366 > **Premium**
    367 >
    368 > * Disable call-to-action button types that aren't available for products
    369 > * Clarify how to publish products
    370 > * Fix Undefined index: mbp_form_fields notice/error when creating new auto-post template
    371 > * Allow wildcard variables in product max pricerange field
    372 > * Add new WooCommerce variables for variation products
    373 > * Add setting check to cookie dialog
    374 > * Fix saving cookie settings being triggered twice
    375 
    376 = 3.0.14 =
    377 * Fix incorrect location selection within groups
    378 * Fix support for Google accounts with more than 20 location groups
    379 * Remove shortcodes from WooCommerce product description
    380 
    381 > **Premium**
    382 >
    383 > * Fix undefined index errors on product form when WP_DEBUG was enabled
    384 > * Fix intermittent issue with location(s) not being selected in the "Advanced post settings"
    385 > * Restore disappeared "Toggle Selection" function on Google Accounts
    386 
    387 = 3.0.13 =
    388 * Fix auto-post toggle not being turned on by default in block editor
    389 * Improve API code to be compatible with new version of GMB API
    390 
    391 > **Premium**
    392 >
    393 > * Improve product publishing api
    394 
    395 = 3.0.12 =
    396 
    397 > **Premium**
    398 >
    399 > * Improve code for product publishing
    400 
    401 = 3.0.11 =
    402 * Fix incorrect token revocation request
    403 * Fix pre-php 7.3 error composer message
    404 * Clarify "Refresh token" error message
    405 * Fix a few locale mistakes
    406 * Bump minimum PHP version to 7.0
    407 * Fix for Notice: Trying to access array offset on line 163
    408 * Add account key to mbp_business_selector_locations filter
    409 * Fix display of service area businesses in business selector
    410 * Add placeholder parsing to event/offer title and trim it to 80 characters
    411 
    412 > **Premium**
    413 >
    414 > * Show error when evergreen content schedule does not exist in cron
    415 > * Fix edit and duplicate functions in Starter version
    416 > * Add debug data download for products
    417 
    418 = 3.0.10 =
    419 * Add graceful error for when the Google authorization is cancelled
    420 * Fix advanced post settings spacing
    421 * Update Freemius SDK
    422 * Clear access token cache when account is deleted
    423 * Fix a few permission issues
    424 
    425 = 3.0.9 =
    426 
    427 > **Premium**
    428 >
    429 >* Improvements to product publishing code
    430 
    431 = 3.0.8 =
    432 * Fix text domain on update notification
    433 * Prevent api error when trying to create product
    434 
    435 = 3.0.7 =
    436 * Fix location list not showing all locations in groups with more than 100 locations
    437 * Add upgrade & new feature notifications
    438 * Improve upgrade process
    439 
    440 = 3.0.6 =
    441 
    442 * Fix controls on dynamically loaded accounts in business selector
    443 
    444 > **Premium**
    445 >
    446 > * Fix woocommerce product category sync
    447 
    448 = 3.0.5 =
    449 
    450 * Update locales (Portuguese thanks to Valdemir Maran)
    451 * Post editor: Various layout and logic fixes
    452 * WP 5.9: Fix calendar icon
    453 
    454 > **Premium**
    455 >
    456 > * Add product support
    457 > * Fix evergreen not selecting the correct posts
    458 > * Fix evergreen page empty in Starter version
    459 > * Fix evergreen date timezone issue
    460 
    461 = 3.0.2 =
    462 * Updated Brazilian Portuguese translations (Thanks to @valdemirmaran)
    463 * Fix error when no post types are selected in the settings
    464 * Added evergreen content promotional page
    465 * Fix not showing welcome message on new site within multisite
    466 
    467 > **Premium**
    468 >
    469 > * Fix private backend post types being indexed by Yoast causing 404s
    470 
    471 = 3.0.1 =
    472 * Remove deprecated "Get Offer" call to action
    473 * Fix link parsing mode not working
    474 * Updated pot file (now automatically included in build process)
    475 * Updated Dutch translations
    476 * Fixed localization for calendar
    477 * Fixed datetime check in auto-post template editor
    478 
    479 > **Premium**
    480 >
    481 > * Added check for invalid evergreen post schedule
    482 > * Fixed localization for cron selector
    483 
    484 = 3.0.0 =
    485 * Refactor & improve a lot of code, mainly improved the way the plugin connects to Google
    486 * Paginated post & created post list, added bulk actions
    487 * Fix Featured Image checkbox state not saving
    488 * Remove pointless debug page
    489 * Moved post scheduling calendar to its own dashboard page, added popup with options
    490 * Added WebP support (GMB does not support it, so plugin will convert image to PNG)
    491 * Added WooCommerce support by default
    492 
    493 > **Premium**
    494 >
    495 > * (Starter) Moved ability to select a location per post to Starter
    496 > * (Pro) Added ability to create multiple post templates
    497 > * (Pro) Added "evergreen content" feature to automatically publish posts old posts
    498 > * (Pro) Moved ability to publish posts to multiple locations at once to Pro
    499 > * (Agency) Added ability to connect multiple Google accounts
    500 
    501 
    502 = 2.2.49 =
    503 * Add option to advanced post options to change link parsing mode
    504 
    505 = 2.2.48 =
    506 * Temporary fix for the cURL error 60: SSL certificate problem: certificate has expired error
    507 
    508 = 2.2.45 =
    509 * Fix issue with image size detection (filesize(): stat failed warning)
    510 * Fix image size detection on post created outside WP admin dash (Fatal error: Call to undefined function PGMB\download_url())
    511 * Fix warnings when location has no address or locality
    512 
    513 = 2.2.44 =
    514 > **Premium**
    515 >
    516 > * Now it was posting every hour, doh! Fixed
    517 
    518 = 2.2.43 =
    519 * Tested on WordPress 5.8
    520 * Fixed issue with metabox not working in block editor
    521 
    522 > **Premium**
    523 >
    524 > * Fixed issue with automatic re-post that made a post go out every minute(!) instead of every day of the month
    525 > * Added "Daily" option to re-post feature
    526 
    527 = 2.2.42 =
    528 * Add Brazilian Portuguese translations (thanks to @valdemirmaran)
    529 
    530 = 2.2.41 =
    531 * Add selection function for location groups
    532 * Add note for Block Editor CPTs without "custom-fields" support enabled
    533 * Update Freemius SDK
    534 
    535 = 2.2.39 =
    536 * Fixes "Cannot declare class PGMB\Vendor\Cron\AbstractField, because the name is already in use" error when saving post
    537 
    538 = 2.2.34 =
    539 * Fix for image size detection logic
    540 
    541 = 2.2.33 =
    542 * Add extra error message for when Product post type is chosen
    543 * Fix block editor issue for custom post types that don't have custom-fields enabled
    544 
    545 = 2.2.32 =
    546 * Use wp_get_http_headers instead of get_headers for better compatibility
    547 
    548 = 2.2.31 =
    549 * Testing on WP 5.6, small fixes for PHP8 compatibility
    550 
    551 = 2.2.29 =
    552 * Fixed some issues with checking of post image size
    553 * Fixed image not showing up in editor when it was too small to have a "medium" thumbnail
    554 * Updated Freemius SDK
    555 
    556 = 2.2.28 =
    557 * Fix compatibility issue with older version of plugin
    558 
    559 = 2.2.27 =
    560 * Fix date and time checker
    561 * Fix checkbox state not being loaded since 5.5.1
    562 
    563 = 2.2.26 =
    564 * Added (a lot) of location-specific variables
    565 
    566 = 2.2.25 =
    567 * Make all GMB post types and WP post types available in free version
    568 * Fix Gutenberg assets being loaded in post type that was disabled
    569 
    570 > **Premium**
    571 >
    572 > * Fix campaigns feature being partially available in Pro version
    573 > * Fix default location selector showing checkboxes instead of radiobuttons when refreshing
    574 
    575 = 2.2.19 =
    576 * Fixed handling of URLs containing non-ascii characters
    577 * Added more info about product posts
    578 
    579 = 2.2.18 =
    580 * Temporarily remove check for isLocalPostApiDisabled due to COVID-19
    581 
    582 = 2.2.17 =
    583 * Added COVID-19 post
    584 * Added full autopost template editor in settings to edit the default autopost template
    585 * Added welcome message
    586 * Added location-specific variables (%location_primaryPhone%, %location_websiteUrl% ...)
    587 * Added new mbp_placeholder_decorators ($decorators, $parent_post_id) filter, and VariableInterface
    588 * Add checks for image size, disable video (no longer allowed by Google)
    589 * Simplified & improved auto-post logic
    590 * Improved image uploader (ready for 10 images, but Google API doesn't support it yet)
    591 * Improved error notices in metabox
    592 * Improvements to multisite handling and activation/deactivation/delete routines
    593 * Fixed error notice when fetching empty location groups
    594 * Fixed Free version not deactivating when activating premium
    595 * Fixes empty location group causing PHP notice
    596 * Fixed Gutenberg double post bug and improve compatibility
    597 * Fix Draft post showing incorrect publish date
    598 * Fix notice when Google error doesn't include details
    599 * Update Freemius SDK to fix multisite issue
    600 
    601 > **Premium**
    602 >
    603 > * Add "Event all day" checkbox for events without a start and end time
    604 > * Added feature to enable autopost per category or tag
    605 > * Fixed Auto-post template editor button being shown on campaigns page
    606 > * Fixed errors when when all post types are unchecked in the settings page
    607 
    608 = 2.2.10 =
    609 * Fix issue with paragraphs getting removed in auto-post
    610 
    611 = 2.2.9 =
    612 * Fix auto-post incorrectly throwing 1500 character error
    613 * Hide "Save draft" button on already published post
    614 
    615 > **Premium**
    616 >
    617 > * Fix caption on "Save Template" button switching to "Publish" when adding schedule
    618 
    619 = 2.2.8 =
    620 * Fix gutenberg issue caused by 2.2.7
    621 
    622 = 2.2.7 =
    623 * Fix compatibility issue with Yoast SEO & Classic Editor
    624 
    625 = 2.2.6 =
    626 * Updated .pot file and Grunt scripts
    627 * Updated Dutch, Russian and Ukrainian translations
    628 * Display post publish date in metabox
    629 
    630 = 2.2.5 =
    631 * Fix duplicate post issue
    632 
    633 > **Premium**
    634 >
    635 > * Remove Auto-post checkbox being shown on campaigns page
    636 
    637 = 2.2.4 =
    638 * Fix issues with CTA URL on button
    639 * Improve updater (again)
    640 * Fix default value for CTA URL field
    641 * Fix CTA url field disappearing when loading post
    642 
    643 > **Premium**
    644 >
    645 > * Fix repost schedule being improperly parsed
    646 
    647 = 2.2.3 =
    648 * Improve updater
    649 
    650 = 2.2.2 =
    651 * Fix Form field parser allowing dates in the past
    652 
    653 = 2.2.1 =
    654 * Fix for Gutenberg autopost
    655 * Restore filter functions
    656 * Update Freemius SDK
    657 
    658 = 2.2 =
    659 * Moved API communication to an asynchronous process
    660 * Added Auto-post template editor
    661 * Added Debug info tab to settings page
    662 * Added dialog with created posts
    663 * Made UI more intuitive
    664 * Added some fixes to improve compatibility with Gutenberg
    665 * Added functionality to fetch image from content or use the featured image
    666 * Tons of improvements and bug fixes "under the hood"
    667 * Lots more to come in future updates!
    668 
    669 > **Premium**
    670 >
    671 > * Made re-posting much more flexible
    672 > * Re-posted posts will now appear as a separate post in the metabox
    673 
    674 = 2.1.18 =
    675 > **Premium**
    676 >
    677 > * Actually parse the relative datetimes on scheduled posts :)
    678 > * Disable Product post support (removed from GMB api)
    679 > * Improve display of datetimes, better timezone handling
    680 
    681 = 2.1.17 =
    682 > **Premium**
    683 >
    684 > * Allow relative time notation in datetimepickers
    685 
    686 = 2.1.16 =
    687 * Improved parsing of post content
    688 
    689 = 2.1.11 =
    690 * Improve development & deployment methods
    691 
    692 = 2.1.10 =
    693 * Update Freemius SDK
    694 * Remove shortcodes from auto-post by default
    695 
    696 = 2.1.9 =
    697 * Security fix
    698 
    699 = 2.1.8 =
    700 * Fixes issue with image URL spinner with no image set (PHOTO media error)
    701 
    702 = 2.1.7 =
    703 * Properly delete child posts and schedules when deleting parent post
    704 
    705 = 2.1.6 =
    706 > **Premium**
    707 >
    708 > * Spin image URL
    709 
    710 = 2.1.5 =
    711 * Fix issue when trying to load more than 100 locations
    712 * Apply filter mbp_get_locations filter to cached locations
    713 
    714 = 2.1.4 =
    715 * Fix settings page conflict caused by plugins using old version of WeDevs Settings API
    716 * Fix Learn more link about grayed out locations
    717 
    718 = 2.1.3 =
    719 * Fix auto-post sending campaign posts
    720 * Improve Gutenberg compatibility
    721 
    722 = 2.1.2 =
    723 * Fix auto-post being triggered too early
    724 * Simplify business selector
    725 
    726 > **Premium**
    727 >
    728 > * Fix repost sheduled events not getting deleted
    729 > * Fix reposts not being published when recurrence was set to 0
    730 > * Fix reposts being posted twice when not scheduled
    731 
    732 = 2.1.1 =
    733 * Increase API timeout
    734 * Fix multiline posts
    735 * Improve error messages
    736 * Fix API token refresh requests when network activated
    737 
    738 = 2.1.0 =
    739 * Improves location loading (+100 Locations in account)
    740 * Check whether locations have access to the Posts API
    741 * Call Now button support
    742 * Improves auto-post logic
    743 * Restructuring code
    744 
    745 > **Premium**
    746 >
    747 > * Improves posting to multiple locations at once
    748 > * Product post support
    749 
    750 = 2.0.10 =
    751 * Update Freemius SDK
    752 * Add filters to Auto post feature
    753 
    754 > **Premium**
    755 >
    756 > * Add option to edit Auto post URL
    757 
    758 = 2.0.9 =
    759 * Fix 500 error on PHP 5.4 https://wordpress.org/support/topic/500-error-when-adding-a-new-post/
    760 
    761 = 2.0.8 =
    762 * Fix issue some settings getting deleted when updating from 2.0.6 to 2.0.7
    763 * Improve compatibility with external publishing apps and services
    764 * Made plugin settings page more intuitive
    765 
    766 = 2.0.7 =
    767 * Strip HTML from posts
    768 * Cut posts to 1500 characters
    769 * Added word and character counters
    770 * Simplified business selector
    771 * Removed user selector, now integrated with business selector
    772 * Better support for grouped locations
    773 * Allow filtering/searching of locations
    774 * Remove references to datetimepicker
    775 
    776 > **Premium**
    777 >
    778 > * Added buttons to Select/Deselect all locations at once
    779 > * Fixed some issues with Pro features in trial
    780 
    781 = 2.0.6 =
    782 * Add ability to save posts as draft
    783 * Add option to invert the "Quick Publish" checkbox. Allows you to automatically publish to GMB when the WordPress post is created externally
    784 * Fix display issue when location has no thumbnail
    785 * Add placeholder index.php files to plugin folders
    786 * Show "No GMB posts found." again when last post is deleted.
    787 * Close form when the post currently being edited is being deleted
    788 
    789 > **Premium**
    790 >
    791 > * Fix Premium features not being enabled when in trial
    792 > * Fix scheduled posts not being posted in Pro
    793 > * Fix issue with post type settings causing error when no post type is selected and settings are saved
    794 > * Check default location when creating new post
    795 > * Fix Metabox not visible on post campaigns
    796 > * Fix invisible month switching icons on the datetimepicker
    797 
    798 
    799 = 2.0.5 =
    800 * Fix location info when importing old posts
    801 * Fix Google link not appearing when using quickpost
    802 
    803 = 2.0.4 =
    804 * Version function magically disappeared, fixed
    805 
    806 = 2.0.3 =
    807 * Fixes updating issue on multisite
    808 
    809 = 2.0.2 =
    810 * Fix issue causing fatal error on PHP 5.6 < https://wordpress.org/support/topic/2-0-1-update-crashes-site/
    811 
    812 = 2.0.1 =
    813 * Fixes issue with certain Google post fields not updating when updating post
    814 
    815 = 2.0.0 =
    816 * Improved metabox, easily create multiple GMB posts per WordPress post
    817 * Supports new Google post types
    818 * Added Quick post feature to create GMB posts based on a preset template. All you have to do is tick the checkbox to post!
    819 * Fixed plugin conflict causing endless loop
    820 * Improved and simplified settings page
    821 * Improved business selector
    822 * And much, much more!
    823 
    824 > **New premium features**
    825 >
    826 > * Automatic reposting - Choose time interval and amount of times to repost
    827 > * Post spinning and variables - Make your posts unique using Spintax and variables such as %site_name%, %post_title%
    828 > * Video posts
    829 >
    830 > **[Learn more about Post to Google My Business Premium](https://tycoonmedia.net/?utm_source=repository&utm_medium=link&utm_campaign=learn_more&utm_content=changelog)**
    831 
    832 = 1.2 =
    833 * Added logic for cleaning up options when uninstalling plugin
    834 * Improved admin/error notices
    835 
    836 = 1.1.1 =
    837 * Fixed PHP compatibility issue https://wordpress.org/support/topic/getting-parse-error-when-installing/
    838 
    839 = 1.1 =
    840 * Improved business location selector
    841 * Fixed timepicker issues
    842 * Javascript for metabox now in separate file
    843 * Fixed incorrect language code causing issues when posting
    844 * Various other small improvements and fixes
    845 
    846 = 1.0 =
    847 * Initial release
    848 
    849155== Upgrade Notice ==
  • post-to-google-my-business/trunk/src/API/ProxyAuthenticationAPI.php

    r2696031 r3246477  
    3131     * @throws \Exception
    3232     */
    33     protected function do_request($url, $args, $method = 'POST'){
     33    protected function do_request($url, $args, $method = 'POST') {
    3434        $response = $this->http->post($url, [
    35             'body'  => wp_parse_args($args, $this->default_args()),
     35            'body'    => wp_parse_args($args, $this->default_args()),
    3636            'timeout' => 20,
    3737            'method'  => $method
    3838        ]);
    3939
    40         if($response instanceof \WP_Error){
     40        if ($response instanceof \WP_Error) {
    4141            throw new \Exception($response->get_error_message());
    4242        }
    4343
    4444        $response_code = wp_remote_retrieve_response_code($response);
    45         if($response_code !== 200 && $response_code !== 201){
    46             throw new \Exception($response['body']);
     45        $response_body = wp_remote_retrieve_body($response);
     46
     47        $data = json_decode($response_body);
     48
     49        // If the response is not JSON or is empty, throw an exception
     50        if (json_last_error() !== JSON_ERROR_NONE) {
     51            throw new UnexpectedValueException(__('Invalid JSON response from authentication server.', 'post-to-google-my-business'));
    4752        }
    4853
    49         $data = json_decode($response['body']);
    50         if(!$data){
    51             throw new UnexpectedValueException(__('Could not parse JSON response from authentication server.', 'post-to-google-my-business'));
     54        // Check if there's an error object in the JSON response
     55        if (isset($data->error)) {
     56            if (is_object($data->error)) {
     57                throw new GoogleAPIError($data);
     58            } else {
     59                throw new UnexpectedValueException((string)$data->error);
     60            }
    5261        }
    5362
    54         if(!isset($data->error)){
    55             return $data;
    56         }elseif(is_object($data->error)) {
    57             throw new GoogleAPIError( $data );
    58         }else{
    59             throw new UnexpectedValueException((string)$data->error);
     63        // Allow non-200/201 responses if they contain valid JSON without an error object
     64        if ($response_code !== 200 && $response_code !== 201) {
     65            throw new \Exception(sprintf(__('Unexpected response code %d: %s', 'post-to-google-my-business'), $response_code, $response_body));
    6066        }
     67
     68        return $data;
    6169    }
    6270
  • post-to-google-my-business/trunk/src/Admin/AdminPage.php

    r3228979 r3246477  
    321321        $accounts = get_option( 'pgmb_accounts' );
    322322        echo "<br /><br />";
    323         if ( !$accounts || empty( $accounts ) ) {
    324             echo sprintf( '<a href="%s" class="button-primary">%s</a>', esc_url( admin_url( 'admin-post.php?action=mbp_generate_url' ) ), esc_html__( 'Connect to Google My Business', 'post-to-google-my-business' ) );
     323        if ( empty( $accounts ) ) {
     324            echo sprintf( '<a href="%s" class="button button-primary button-hero">%s</a>', esc_url( admin_url( 'admin-post.php?action=mbp_generate_url' ) ), esc_html__( 'Connect to Google Business Profile', 'post-to-google-my-business' ) );
    325325            return;
    326326        }
  • post-to-google-my-business/trunk/src/BackgroundProcessing/LocationSyncProcess.php

    r3228979 r3246477  
    55use PGMB\API\ProxyAuthenticationAPI;
    66use PGMB\API\ProxyGMBAPI;
     7use PGMB\Notices\BrandedStickyNotice;
    78use PGMB\Vendor\TypistTech\WPAdminNotices\AbstractNotice;
    89use PGMB\Vendor\TypistTech\WPAdminNotices\StickyNotice;
     
    5051        }
    5152
     53        $account_id = $item->get_account_id();
     54
    5255        try{
    53             $this->api->set_access_token($this->auth_api->get_access_token($item->get_account_id()));
    54 
     56            $this->admin_notice_store->delete('location_import_error');
     57            delete_option('pgmb_location_import_last_error_'.$account_id);
     58            $this->api->set_access_token($this->auth_api->get_access_token($account_id));
    5559            if($item instanceof LocationSyncQueueItem){
    5660                return $this->sync_locations($item);
     
    5963            }
    6064        }catch(\Throwable $e){
    61             $this->admin_notice_store->add(new StickyNotice('location_import_error', sprintf(esc_html__("Something went wrong trying to load your Google Business Profile locations: %s", 'post-to-google-my-business'), $e->getMessage()), AbstractNotice::ERROR));
    62             return false;
    63         }
    64 
    65         update_option('pgmb_account_refresh_'.$item->get_account_id(), current_time('mysql', true));
    66 
    67         return new GroupSyncQueueItem($item->get_account_id());
     65            $error_message = sprintf(__("Something went wrong trying to load the Google Business Profile locations for this account: %s", 'post-to-google-my-business'), $e->getMessage());
     66            $link = sprintf('<a href="%s">%s</a>', esc_url(admin_url('admin.php?page=pgmb_settings#mbp_google_settings')), __('Check Google account settings', 'post-to-google-my-business'));
     67            $this->admin_notice_store->add(new BrandedStickyNotice('location_import_error', $error_message, $link, AbstractNotice::ERROR));
     68            $this->cancel();
     69            update_option('pgmb_location_import_last_error_'.$account_id, $error_message);
     70            return false;
     71        }
     72
     73        update_option('pgmb_account_refresh_'.$account_id, current_time('mysql', true));
     74
     75        return new GroupSyncQueueItem($account_id);
    6876    }
    6977
  • post-to-google-my-business/trunk/src/Components/BusinessSelector.php

    r3228979 r3246477  
    348348
    349349        if($this->location_sync_process->is_processing()){
    350             wp_send_json_error([
     350            wp_send_json([
    351351                'loading' => true,
    352352            ]);
    353353        }
     354
    354355//      $account_data = reset($accounts);
    355356//      $key = key($accounts);
     
    371372
    372373        if($refresh){
    373             $this->location_sync_process->push_to_queue(new AccountSyncQueueItem($data->account_id))->save()->dispatch();
     374            $this->location_sync_process->push_to_queue(new AccountSyncQueueItem($account_key))->save()->dispatch();
     375        }
     376
     377        $error_message = get_option('pgmb_location_import_last_error_'.$account_key);
     378        if(!empty($error_message)){
     379            wp_send_json_error($error_message);
    374380        }
    375381
  • post-to-google-my-business/trunk/src/GoogleUserManager.php

    r3235346 r3246477  
    3838        }
    3939
    40         $response = $this->transport->get('https://www.googleapis.com/oauth2/v3/certs');
     40        $response = $this->transport->get('https://app.posttogmb.com/google_cert');
    4141
    4242        if (is_wp_error($response)) {
     
    133133        $account_data = JWT::decode( $tokens->id_token, JWK::parseKeySet( (array) $keys ), [ 'RS256' ] );
    134134
    135 
     135        $scopes = explode(" ", $tokens->scope);
     136        if(!in_array('https://www.googleapis.com/auth/business.manage', $scopes)){
     137            throw new Exception(__('You did not give the plugin permission to manage your Google Business Profile listings. The plugin will not work without this permission. Please retry the authentication and make sure you grant the plugin permission to manage your locations.', 'post-to-google-my-business'));
     138        }
     139        //$tokens->scope = https://www.googleapis.com/auth/userinfo.profile openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/business.manage
    136140        $accounts = get_option('pgmb_accounts');
    137141        if(!$accounts){$accounts = [];}
  • post-to-google-my-business/trunk/src/Plugin.php

    r3235346 r3246477  
    1010    const DOMAIN = 'post-to-google-my-business';
    1111
    12     const VERSION = '3.2.3';
     12    const VERSION = '3.2.4';
    1313
    1414    const DASHICON = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIEZpcmV3b3JrcyAxMCwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyBpZD0iZGFzaGljb24uZnctUGFnZSUyMDEiIHZpZXdCb3g9IjAgMCAyMDcgMjA3IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIg0KCXg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjA3cHgiIGhlaWdodD0iMjA3cHgiDQo+DQoJPGcgaWQ9IkxheWVyJTIwMSI+DQoJCTxwYXRoIGQ9Ik0gMTQ5Ljk5OTEgMTEyIEMgMTcwLjEyMzYgMTEyIDE4Ni40OTk0IDEyOC4zNzM0IDE4Ni41IDE0OC40OTkxIEMgMTg2LjUgMTY4LjYyNzIgMTcwLjEyMzYgMTg1IDE0OS45OTkxIDE4NSBDIDEyOS44NzQgMTg1IDExMy41IDE2OC42MjcyIDExMy41IDE0OC40OTkxIEMgMTEzLjUgMTI4LjM3MzQgMTI5Ljg3NCAxMTIgMTQ5Ljk5OTEgMTEyIFpNIDE1Ny4yMzUgOTMuMjkgQyAxNTEuOTAyMyAxMDIuNzQ5NiAxNDEuNTYgMTA4Ljg0MyAxMzAuNSAxMDguODQzIEMgMTIxLjMzMDQgMTA4Ljg0MyAxMDkuNjM5MSAxMDQuNDI5MyAxMDMuNTIgOTMuMDk1IEMgOTcuNjYxMSAxMDMuNzAyIDg3LjI2NzcgMTA4Ljg0MyA3Ni44NzUgMTA4Ljg0MyBDIDY1LjU5ODQgMTA4Ljg0MyA1NS42ODIgMTAyLjQ5NjYgNTAuNDA1IDkzLjMxNSBDIDQ0LjM5OTQgMTA0LjExMDkgMzMuNDA1NyAxMDguNzg5IDIzLjYyNSAxMDguNzg5IEMgMTkuNTUxIDEwOC43ODkgMTUuNDQwOSAxMDguMTA1NyAxMS41NCAxMDYuNTEgTCAxMS41NDIgMTgwLjYyMjEgQyAxMS41NDIgMTg4LjA2MjUgMTcuNjI5OSAxOTQuMTUwNCAyNS4wNzAzIDE5NC4xNTA0IEwgMTgyLjYwNDUgMTk0LjE1MDQgQyAxOTAuMDQ1NCAxOTQuMTUwNCAxOTYuMTMyOCAxODguMDYyNSAxOTYuMTMyOCAxODAuNjIyMSBMIDE5Ni4xMzUgMTA2LjIyIEMgMTkyLjI5MjQgMTA3LjkzMzcgMTg4LjA4MzMgMTA4Ljg3NSAxODMuNzUgMTA4Ljg3NSBDIDE3NC40OTk3IDEwOC44NzUgMTYzLjgyMzMgMTA0LjU5OCAxNTcuMjM1IDkzLjI5IFpNIDE0OS45OTkxIDE4My4zMjY5IEMgMTY5LjIwMDcgMTgzLjMyNjkgMTg0LjgyMjkgMTY3LjcwMzEgMTg0LjgyMjkgMTQ4LjQ5OTEgQyAxODQuODIyOSAxMjkuMjk2MyAxNjkuMjAwNyAxMTMuNjczNiAxNDkuOTk5MSAxMTMuNjczNiBDIDEzMC43OTYzIDExMy42NzM2IDExNS4xNzM2IDEyOS4yOTYzIDExNS4xNzM2IDE0OC40OTkxIEMgMTE1LjE3MzYgMTY3LjcwMzEgMTMwLjc5NjkgMTgzLjMyNjkgMTQ5Ljk5OTEgMTgzLjMyNjkgWk0gMTc3LjQ3MzIgMTMzLjQ3NjQgQyAxNzkuOTE4OSAxMzcuOTM2NiAxODEuMzA5NSAxNDMuMDU1OCAxODEuMzA4OSAxNDguNDk5NyBDIDE4MS4zMDg5IDE2MC4wNTEyIDE3NS4wNDc4IDE3MC4xMzY0IDE2NS43MzkyIDE3NS41NjQ4IEwgMTc1LjMwMzQgMTQ3LjkxMTYgQyAxNzcuMDkwNyAxNDMuNDQ1NSAxNzcuNjg0MSAxMzkuODczNiAxNzcuNjg0MSAxMzYuNjk2MiBDIDE3Ny42ODQxIDEzNS41NDQ1IDE3Ny42MDc5IDEzNC40NzM4IDE3Ny40NzMyIDEzMy40NzY0IFpNIDE1MC41NDg1IDE1MS4yMzggTCAxNjAuMTc0IDE3Ny42MDY2IEMgMTYwLjIzNjUgMTc3Ljc2MTYgMTYwLjMxMjcgMTc3LjkwMzkgMTYwLjM5NjggMTc4LjAzOCBDIDE1Ny4xNDIgMTc5LjE4MjUgMTUzLjY0NTMgMTc5LjgxMyAxNDkuOTk5MSAxNzkuODEzIEMgMTQ2LjkyNTQgMTc5LjgxMyAxNDMuOTU5IDE3OS4zNjE4IDE0MS4xNTQxIDE3OC41MzczIEwgMTUwLjU0ODUgMTUxLjIzOCBaTSAxNzEuMTM2NSAxNDYuOTE5IEMgMTcxLjEzNjUgMTQ5LjU5OTUgMTcwLjEwNjMgMTUyLjcxMDMgMTY4Ljc1MjcgMTU3LjA0MTIgTCAxNjUuNjI5NiAxNjcuNDc3OSBMIDE1NC4zMTQ0IDEzMy44MTg1IEMgMTU2LjE5ODIgMTMzLjcxOTUgMTU3Ljg5ODEgMTMzLjUxOTkgMTU3Ljg5ODEgMTMzLjUxOTkgQyAxNTkuNTg0NyAxMzMuMzIwMyAxNTkuMzg2NCAxMzAuODQxMiAxNTcuNjk3MyAxMzAuOTQwNyBDIDE1Ny42OTczIDEzMC45NDA3IDE1Mi42MjcxIDEzMS4zMzgxIDE0OS4zNTI3IDEzMS4zMzgxIEMgMTQ2LjI3NiAxMzEuMzM4MSAxNDEuMTA1MiAxMzAuOTQwNyAxNDEuMTA1MiAxMzAuOTQwNyBDIDEzOS40MTc5IDEzMC44NDEyIDEzOS4yMjAxIDEzMy40MjEgMTQwLjkwNzQgMTMzLjUxOTkgQyAxNDAuOTA3NCAxMzMuNTE5OSAxNDIuNTA0NyAxMzMuNzE5NSAxNDQuMTkwOCAxMzMuODE4NSBMIDE0OS4wNjkxIDE0Ny4xODQ4IEwgMTQyLjIxNjkgMTY3LjczNiBMIDEzMC44MTQ4IDEzMy44MTk2IEMgMTMyLjcwMjIgMTMzLjcyMDcgMTM0LjM5ODQgMTMzLjUyMTEgMTM0LjM5ODQgMTMzLjUyMTEgQyAxMzYuMDg0NSAxMzMuMzIxNiAxMzUuODg1NSAxMzAuODQyNCAxMzQuMTk3NiAxMzAuOTQxOSBDIDEzNC4xOTc2IDEzMC45NDE5IDEyOS4xMjgxIDEzMS4zMzkzIDEyNS44NTMgMTMxLjMzOTMgQyAxMjUuMjY1IDEzMS4zMzkzIDEyNC41NzI3IDEzMS4zMjM4IDEyMy44MzgxIDEzMS4zMDE4IEMgMTI5LjQzNjcgMTIyLjgwMDggMTM5LjA2MDQgMTE3LjE4ODMgMTQ5Ljk5OTEgMTE3LjE4ODMgQyAxNTguMTUwNiAxMTcuMTg4MyAxNjUuNTcyNCAxMjAuMzA0NCAxNzEuMTQyOSAxMjUuNDA4IEMgMTcxLjAwNzggMTI1LjQwMDMgMTcwLjg3NjEgMTI1LjM4MyAxNzAuNzM3MiAxMjUuMzgzIEMgMTY3LjY2MjQgMTI1LjM4MyAxNjUuNDc5NCAxMjguMDYyNCAxNjUuNDc5NCAxMzAuOTQwNyBDIDE2NS40Nzk0IDEzMy41MTk5IDE2Ni45NjcxIDEzNS43MDQyIDE2OC41NTQzIDEzOC4yODM0IEMgMTY5Ljc0NjUgMTQwLjM2OTMgMTcxLjEzNjUgMTQzLjA0OTMgMTcxLjEzNjUgMTQ2LjkxOSBaTSAxMTguNjg4MSAxNDguNDk5MSBDIDExOC42ODgxIDE0My45NTk2IDExOS42NjE2IDEzOS42NTAyIDEyMS4zOTg5IDEzNS43NTYgTCAxMzYuMzM0NyAxNzYuNjc5NiBDIDEyNS44OTA2IDE3MS42MDM5IDExOC42ODgxIDE2MC44OTMxIDExOC42ODgxIDE0OC40OTkxIFpNIDE2MS4zNzUgNzcuMDU1IEMgMTYxLjcyMDIgODAuMDc4NCAxNjEuNjQxMSA4My40NTQzIDE2MyA4Ni42MjUgQyAxNjcuNSA5Ni44NzUgMTc2IDEwMC42MjUgMTgzLjc1IDEwMC42MjUgQyAxODguMDkzNCAxMDAuNjI1IDE5Mi40MzkgOTkuMzE5NSAxOTYuMTM1IDk2Ljk3IEMgMjAyLjAxMjEgOTMuMjMzOSAyMDYuMjUgODYuODU2IDIwNi4yNSA3OC44NzUgQyAyMDYuMjUgNzUuMTI1IDE5My43NSAzMC42MjUgMTkyLjUgMjQuMTI1IEMgMTkxLjc1IDIwLjEyNSAxODkuMjUgMTMuMzc1IDE4My41IDEzLjM3NSBMIDE1My4yNSAxMy4zNzUgTCAxNTMuMjUgMTQuODc1IEMgMTUzLjI1IDE1LjM3NSAxNTYuNzUgNDAuNjI1IDE1OC4yNSA1My4zNzUgQyAxNTkuMjUgNjAuNjI1IDE2MC41IDY4LjM3NSAxNjEuMjUgNzYuMTI1IEMgMTYxLjI5NjkgNzYuNDMgMTYxLjMzOTIgNzYuNzQxOCAxNjEuMzc1IDc3LjA1NSBaTSAxMDggNzcuMDU1IEwgMTA4IDc5LjM0MyBDIDEwOCA3OS44NDMgMTA4LjI1IDgyLjg0MyAxMDguNzUgODQuMzQzIEMgMTEyLjI1IDk2LjA5MyAxMjIgMTAwLjU5MyAxMzAuNSAxMDAuNTkzIEMgMTQxLjI1IDEwMC41OTMgMTUyLjI1IDkyLjU5MyAxNTMgNzguNTkzIEwgMTUyLjggNzcuMDU1IEwgMTQ0LjUgMTMuMzQzIEwgMTA4IDEzLjM0MyBMIDEwOCA3Ny4wNTUgWk0gNTQuNjI1IDc3LjA1NSBMIDU0LjYyNSA4MC4zNDMgQyA1NC42MjUgODAuODQzIDU1LjM3NSA4NC44NDMgNTYuMTI1IDg2Ljg0MyBDIDYwLjg3NSA5Ny4wOTMgNjkuMzc1IDEwMC41OTMgNzcuMTI1IDEwMC41OTMgQyA4Ni42MjUgMTAwLjU5MyA5Ni44NzUgOTQuMzQzIDk5LjM3NSA4MS4wOTMgTCA5OS4zNzUgNzcuMDU1IEwgOTkuMzc1IDEzLjM0MyBMIDYyLjg3NSAxMy4zNDMgTCA1NC42MjUgNzYuMzQzIEwgNTQuNjI1IDc3LjA1NSBaTSAxMS41NCA5Ny4wNSBDIDE1LjEzMzggOTkuMjcwOSAxOS4zMzAzIDEwMC41MzkgMjMuNjI1IDEwMC41MzkgQyAzMy42MjUgMTAwLjUzOSA0NC4zNzUgOTQuMDM5IDQ2LjM3NSA3OS43ODkgTCA0Ni4zNzUgNzguMzQzIEwgNDYuMzc1IDc3LjA1NSBMIDQ2LjM3NSA3NS4wMzkgTCA1NC4zNzUgMTMuMjg5IEwgMjMuODc1IDEzLjI4OSBDIDIyLjEyNSAxMy4yODkgMTkuMTI1IDE0LjUzOSAxNy42MjUgMTYuNzg5IEMgMTYuODc1IDE3LjUzOSAxNi4zNzUgMTguNTM5IDE2LjEyNSAxOS41MzkgQyAxMy42MjUgMjguMjg5IDExLjM3NSAzNy41MzkgOS4xMjUgNDYuNTM5IEMgOC4zNzUgNDguNzg5IDcuNjI1IDUxLjc4OSA3LjEyNSA1NC4yODkgQyA2LjEyNSA1OC4yODkgNS4xMjUgNjIuNzg5IDMuODc1IDY2Ljc4OSBDIDIuODc1IDcwLjc4OSAwLjg3NSA3Ny43ODkgMC44NzUgNzguNTM5IEMgMC44NzUgODYuNDY5MiA1LjMwMjYgOTMuMTk0NCAxMS41NCA5Ny4wNSBaIiBmaWxsPSIjOWVhM2E4Ii8+DQoJPC9nPg0KPC9zdmc+';
     
    116116
    117117    public static function uninstall_single_site() {
     118        global $wpdb;
    118119        $settings = get_option( 'mbp_misc' );
    119120        if ( !isset( $settings['uninstall_cleanup'] ) || !is_array( $settings['uninstall_cleanup'] ) ) {
    120121            return;
    121122        }
     123        $groups_table = $wpdb->prefix . 'pgmb_group_cache';
     124        $locations_table = $wpdb->prefix . 'pgmb_location_cache';
     125        $wpdb->query( "DROP TABLE IF EXISTS {$locations_table};" );
     126        $wpdb->query( "DROP TABLE IF EXISTS {$groups_table};" );
    122127        if ( in_array( 'delete_settings', $settings['uninstall_cleanup'] ) ) {
    123128            global $wpdb;
     
    134139            }
    135140        }
     141        //      if(in_array('delete_metadata', $settings['uninstall_cleanup'])){
     142        //          $meta_keys = [
     143        //              'mbp_autopost_created',
     144        //              '_mbp_gutenberg_autopost',
     145        //              '_pgmb_queued_items',
     146        //              'mbp_last_error',
     147        //              '_mbp_autopost_template',
     148        //              '_pgmb_autopost_template',
     149        //              '_pgmb_is_evergreen',
     150        //              '_pgmb_ap_template_id',
     151        //
     152        //          ];
     153        //          foreach($meta_keys as $key){
     154        //              delete_post_meta_by_key($key);
     155        //          }
     156        //      }
    136157    }
    137158
  • post-to-google-my-business/trunk/vendor-prefixed/deliciousbrains/wp-background-processing/classes/wp-async-request.php

    r3235346 r3246477  
    66 *
    77 * @license GPL-2.0-or-later
    8  * Modified by __root__ on 05-February-2025 using Strauss.
     8 * Modified by __root__ on 25-February-2025 using Strauss.
    99 * @see https://github.com/BrianHenryIE/strauss
    1010 */
  • post-to-google-my-business/trunk/vendor-prefixed/deliciousbrains/wp-background-processing/classes/wp-background-process.php

    r3235346 r3246477  
    66 *
    77 * @license GPL-2.0-or-later
    8  * Modified by __root__ on 05-February-2025 using Strauss.
     8 * Modified by __root__ on 25-February-2025 using Strauss.
    99 * @see https://github.com/BrianHenryIE/strauss
    1010 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/AbstractField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/CronExpression.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/FieldFactory.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/FieldInterface.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/HoursField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/MinutesField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/MonthField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/dragonmantank/cron-expression/src/Cron/YearField.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/BeforeValidException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/ExpiredException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/JWK.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/JWT.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/Key.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/firebase/php-jwt/src/SignatureInvalidException.php

    r3235346 r3246477  
    33 * @license BSD-3-Clause
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/html2text/html2text/src/Html2Text.php

    r3235346 r3246477  
    1818 *
    1919 * @license GPL-2.0-or-later
    20  * Modified by __root__ on 05-February-2025 using Strauss.
     20 * Modified by __root__ on 25-February-2025 using Strauss.
    2121 * @see https://github.com/BrianHenryIE/strauss
    2222 */
  • post-to-google-my-business/trunk/vendor-prefixed/rarst/wpdatetime/src/WpDateTime.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeImmutable.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeInterface.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeTrait.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/rarst/wpdatetime/src/WpDateTimeZone.php

    r3235346 r3246477  
    33 * @license MIT
    44 *
    5  * Modified by __root__ on 05-February-2025 using Strauss.
     5 * Modified by __root__ on 25-February-2025 using Strauss.
    66 * @see https://github.com/BrianHenryIE/strauss
    77 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/AbstractNotice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/Factory.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/Notice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/NoticeInterface.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/Notifier.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/StickyNotice.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/Store.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor-prefixed/typisttech/wp-admin-notices/src/StoreInterface.php

    r3235346 r3246477  
    1414 * @see       https://github.com/TypistTech/wp-admin-notices
    1515 *
    16  * Modified by __root__ on 05-February-2025 using Strauss.
     16 * Modified by __root__ on 25-February-2025 using Strauss.
    1717 * @see https://github.com/BrianHenryIE/strauss
    1818 */
  • post-to-google-my-business/trunk/vendor/autoload.php

    r3235346 r3246477  
    55require_once __DIR__ . '/composer/autoload_real.php';
    66
    7 return ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9::getLoader();
     7return ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8::getLoader();
  • post-to-google-my-business/trunk/vendor/composer/autoload_classmap.php

    r3228979 r3246477  
    7474    'PGMB\\Metabox\\PostCreationMetabox' => $baseDir . '/src/Metabox/PostCreationMetabox.php',
    7575    'PGMB\\Metabox\\StorableDataMetaboxInterface' => $baseDir . '/src/Metabox/StorableDataMetaboxInterface.php',
     76    'PGMB\\Notices\\BrandedStickyNotice' => $baseDir . '/src/Notices/BrandedStickyNotice.php',
    7677    'PGMB\\Notifications\\BasicNotification' => $baseDir . '/src/Notifications/BasicNotification.php',
    7778    'PGMB\\Notifications\\FeatureNotification' => $baseDir . '/src/Notifications/FeatureNotification.php',
  • post-to-google-my-business/trunk/vendor/composer/autoload_real.php

    r3235346 r3246477  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9
     5class ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8
    66{
    77    private static $loader;
     
    2323        }
    2424
    25         spl_autoload_register(array('ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9', 'loadClassLoader'), true, true);
     25        spl_autoload_register(array('ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8', 'loadClassLoader'), true, true);
    2626        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
    27         spl_autoload_unregister(array('ComposerAutoloaderInit88a213064ffdff7fb3cdad65633743e9', 'loadClassLoader'));
     27        spl_autoload_unregister(array('ComposerAutoloaderInit7caea00781b82d622959f90e25360fc8', 'loadClassLoader'));
    2828
    2929        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
     
    3131            require __DIR__ . '/autoload_static.php';
    3232
    33             call_user_func(\Composer\Autoload\ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::getInitializer($loader));
     33            call_user_func(\Composer\Autoload\ComposerStaticInit7caea00781b82d622959f90e25360fc8::getInitializer($loader));
    3434        } else {
    3535            $classMap = require __DIR__ . '/autoload_classmap.php';
  • post-to-google-my-business/trunk/vendor/composer/autoload_static.php

    r3235346 r3246477  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit88a213064ffdff7fb3cdad65633743e9
     7class ComposerStaticInit7caea00781b82d622959f90e25360fc8
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    129129        'PGMB\\Metabox\\PostCreationMetabox' => __DIR__ . '/../..' . '/src/Metabox/PostCreationMetabox.php',
    130130        'PGMB\\Metabox\\StorableDataMetaboxInterface' => __DIR__ . '/../..' . '/src/Metabox/StorableDataMetaboxInterface.php',
     131        'PGMB\\Notices\\BrandedStickyNotice' => __DIR__ . '/../..' . '/src/Notices/BrandedStickyNotice.php',
    131132        'PGMB\\Notifications\\BasicNotification' => __DIR__ . '/../..' . '/src/Notifications/BasicNotification.php',
    132133        'PGMB\\Notifications\\FeatureNotification' => __DIR__ . '/../..' . '/src/Notifications/FeatureNotification.php',
     
    240241    {
    241242        return \Closure::bind(function () use ($loader) {
    242             $loader->prefixLengthsPsr4 = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$prefixLengthsPsr4;
    243             $loader->prefixDirsPsr4 = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$prefixDirsPsr4;
    244             $loader->classMap = ComposerStaticInit88a213064ffdff7fb3cdad65633743e9::$classMap;
     243            $loader->prefixLengthsPsr4 = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$prefixLengthsPsr4;
     244            $loader->prefixDirsPsr4 = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$prefixDirsPsr4;
     245            $loader->classMap = ComposerStaticInit7caea00781b82d622959f90e25360fc8::$classMap;
    245246
    246247        }, null, ClassLoader::class);
  • post-to-google-my-business/trunk/vendor/composer/installed.json

    r3228979 r3246477  
    77            "source": {
    88                "type": "git",
    9                 "url": "https://github.com/koen12344/multisite-background-processing.git",
     9                "url": "[email protected]:koen12344/multisite-background-processing.git",
    1010                "reference": "7724c9d124f1efdc672d0b15923a60c8ee42e434"
    1111            },
     
    4747            ],
    4848            "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.",
    49             "support": {
    50                 "source": "https://github.com/koen12344/multisite-background-processing/tree/prod"
    51             },
    5249            "install-path": "../deliciousbrains/wp-background-processing"
    5350        },
Note: See TracChangeset for help on using the changeset viewer.