Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Latest => 0.0.1 #6

Merged
merged 2 commits into from
Oct 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
== Changelog ==
= 0.0.2 =
* FIX: disable `Cache Busting` when working with BuddyPress attachments.

= 0.0.1 =
* Initial public release.
3 changes: 3 additions & 0 deletions changes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#### 0.0.2
* FIX: disable `Cache Busting` when working with BuddyPress attachments.

#### 0.0.1

- Initial public release.
56 changes: 56 additions & 0 deletions class-buddypress.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ public function module_init( $sm ) {

add_filter('bp_core_avatar_folder_url', array($this, 'bp_core_avatar_folder_url'), 10, 4);
add_filter('bp_core_avatar_folder_dir', array($this, 'bp_core_avatar_folder_dir'), 10, 4);
add_filter('stateless_skip_cache_busting', array($this, 'skip_cache_busting'), 20, 2);
add_filter('sm:sync::syncArgs', array($this, 'sync_args'), 10, 4);
add_filter('bp_core_pre_delete_existing_avatar', array($this, 'delete_existing_avatar'), 10, 2);
add_filter('bp_attachments_pre_get_attachment', array($this, 'bp_attachments_pre_get_attachment'), 10, 2);
}

/**
Expand Down Expand Up @@ -92,6 +94,60 @@ public function delete_existing_avatar($return, $args) {
return $return;
}

/**
* Sync and return GCS url for group images.
*
* Used as CSS background-image.
*
* @param [type] $return
* @param [type] $r
* @return void
*/
public function bp_attachments_pre_get_attachment($return, $r) {
// Return if this is a recursive call.
if (!empty($r['recursive'])) {
return $return;
}
try {
$debug_backtrace = debug_backtrace(false);
// Making sure we only return GCS link if the type is url.
if (!empty($debug_backtrace[3]['args'][0]) && $debug_backtrace[3]['args'][0] == 'url') {
$r['recursive'] = true;
$url = bp_attachments_get_attachment('url', $r);
$name = apply_filters('wp_stateless_file_name', $url, 0);
$root_dir = ud_get_stateless_media()->get('sm.root_dir');
$root_dir = apply_filters("wp_stateless_handle_root_dir", $root_dir);
$root_dir = trim($root_dir, '/ '); // Remove any forward slash and empty space.
if (!empty($name) && $root_dir . "/" != $name) {
$full_path = bp_attachments_get_attachment(false, $r);
do_action('sm:sync::syncFile', $name, $full_path, false, array('ephemeral' => false));
$return = ud_get_stateless_media()->get_gs_host() . '/' . $name;
}
}
} catch (\Throwable $th) {
}
return $return;
}

/**
* Skip cache busting while Buddypress processes images.
*
* @param $return
* @param $filename
* @return mixed
*/
public function skip_cache_busting($return, $filename) {
$back_trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($back_trace as $trace) {
if ( isset($trace['file']) && strpos($trace['file'], 'buddypress') !== false ) {
if ( isset($trace['function']) && $trace['function'] === 'sanitize_file_name' ) {
return $filename;
}
}
}
return $return;
}

/**
* Update args when uploading/syncing file to GCS.
*
Expand Down
6 changes: 5 additions & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ License: GPLv2 or later
Requires PHP: 8.0
Requires at least: 5.0
Tested up to: 6.6.2
Stable tag: 0.0.1
Stable tag: 0.0.2

Provides compatibility between the BuddyPress and the WP-Stateless plugins.

Expand Down Expand Up @@ -44,6 +44,10 @@ To ensure new releases cause as little disruption as possible, we rely on early

== Changelog ==

= 0.0.2 =

* FIX: disable `Cache Busting` when working with BuddyPress attachments.

= 0.0.1 =

* Initial public release.
Expand Down
13 changes: 12 additions & 1 deletion tests/ClassBuddyPressTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,15 @@ public function testShouldInitHooks() {
self::assertNotFalse( has_filter('bp_core_avatar_folder_dir', [ $budypress, 'bp_core_avatar_folder_dir' ]) );
self::assertNotFalse( has_filter('bp_core_pre_delete_existing_avatar', [ $budypress, 'delete_existing_avatar' ]) );
self::assertNotFalse( has_filter('sm:sync::syncArgs', [ $budypress, 'sync_args' ]) );
self::assertNotFalse( has_filter('bp_attachments_pre_get_attachment', [ $budypress, 'bp_attachments_pre_get_attachment' ]) );
self::assertNotFalse( has_filter('stateless_skip_cache_busting', [ $budypress, 'skip_cache_busting' ]) );
}

public function testShouldCountHooks() {
$budypress = new BuddyPress();

Functions\expect('add_action')->times(2);
Functions\expect('add_filter')->times(4);
Functions\expect('add_filter')->times(6);

$budypress->module_init([]);
}
Expand All @@ -100,6 +102,15 @@ public function testShouldDeleteAvatar() {
$budypress->delete_existing_avatar(self::AVATAR_SRC_URL, self::TEST_BP_DATA);
}

public function testShouldPreGetAttachment() {
$budypress = new BuddyPress();
Actions\expectDone('sm:sync::syncFile')->once();
$this->assertEquals(
self::AVATAR_DST_URL,
$budypress->bp_attachments_pre_get_attachment(self::AVATAR_DST_URL, self::TEST_BP_DATA),
);
}

public function testShouldUpdateArgs() {
$budypress = new BuddyPress();

Expand Down
2 changes: 1 addition & 1 deletion vendor/bin/.phpunit.result.cache
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"version":1,"defects":{"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitModule":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSkipCacheBusting":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldGetAttachment":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldCountHooks":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgs":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":4},"times":{"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitModule":0.008,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSkipCacheBusting":0,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":0.004,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":0.111,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":0.001,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":0,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldGetAttachment":0.004,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":0.122,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldCountHooks":0.003,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":0.005,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":0.005,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgs":0.002,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgsStateless":0,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldNotUpdateArgs":0}}
{"version":1,"defects":{"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitModule":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSkipCacheBusting":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldGetAttachment":4,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldCountHooks":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgs":4,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":4},"times":{"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitModule":0.008,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSkipCacheBusting":0,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":0.004,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":0.111,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":0.001,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":0,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldGetAttachment":0.004,"WPSL\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldInitHooks":0.119,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldCountHooks":0.003,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldFetchAvatar":0.005,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldSyncAvatar":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldDeleteAvatar":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldPreGetAttachment":0.002,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgs":0.001,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldUpdateArgsStateless":0,"SLCA\\BuddyPress\\ClassBuddyPressTest::testShouldNotUpdateArgs":0}}
4 changes: 2 additions & 2 deletions vendor/composer/installed.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'name' => 'udx/wp-stateless-buddypress-addon',
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '0974f8d83917b8e8489e9ab0bfa26e4a4659407f',
'reference' => 'a609f8069d78f89eda99035072201433af08c729',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
Expand All @@ -13,7 +13,7 @@
'udx/wp-stateless-buddypress-addon' => array(
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '0974f8d83917b8e8489e9ab0bfa26e4a4659407f',
'reference' => 'a609f8069d78f89eda99035072201433af08c729',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
Expand Down
2 changes: 1 addition & 1 deletion wp-stateless-buddypress-addon.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Plugin URI: https://stateless.udx.io/addons/buddypress/
* Description: Provides compatibility between the BuddyPress and the WP-Stateless plugins.
* Author: UDX
* Version: 0.0.1
* Version: 0.0.2
* Text Domain: wp-stateless-buddypress-addon
* Author URI: https://udx.io
* License: GPLv2 or later
Expand Down
Loading