<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" 
	>
<channel>
	<title>
	Comments on: LH Buddypress Multi Network	</title>
	<atom:link href="https://lhero.org/portfolio/lh-buddypress-multi-network/feed/" rel="self" type="application/rss+xml" />
	<link>https://lhero.org/portfolio/lh-buddypress-multi-network/</link>
	<description>Digital Sovereignty for everyone</description>
	<lastBuildDate>Tue, 03 Nov 2026 00:45:02 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-buddypress-multi-network/#comment-1537858</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Tue, 03 Nov 2026 00:45:02 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?p=3367#comment-1537858</guid>

					<description><![CDATA[Fix MCP calls made with site_id reading and writing the calling site&#039;s xProfile data instead of the target site&#039;s. xProfile is the only BuddyPress component kept per site on LocalHero, and BuddyPress binds its xProfile table names (and the xProfile meta tables on $wpdb) once at load, so switch_to_blog() left them pointing at the calling site; its xProfile cache groups are also global, so cached groups and fields from one site were served for another. New rebind_xprofile_tables() re-points the xProfile tables to the current site and flushes the xProfile cache groups; it runs on lh_mcp_adapter_extensions_site_scope_reset_caches, which fires after every site_id switch and restore. Other code that switches sites is unchanged.]]></description>
			<content:encoded><![CDATA[<p>Fix MCP calls made with site_id reading and writing the calling site&#8217;s xProfile data instead of the target site&#8217;s. xProfile is the only BuddyPress component kept per site on LocalHero, and BuddyPress binds its xProfile table names (and the xProfile meta tables on $wpdb) once at load, so switch_to_blog() left them pointing at the calling site; its xProfile cache groups are also global, so cached groups and fields from one site were served for another. New rebind_xprofile_tables() re-points the xProfile tables to the current site and flushes the xProfile cache groups; it runs on lh_mcp_adapter_extensions_site_scope_reset_caches, which fires after every site_id switch and restore. Other code that switches sites is unchanged.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-buddypress-multi-network/#comment-1537857</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Tue, 03 Nov 2026 00:12:05 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?p=3367#comment-1537857</guid>

					<description><![CDATA[Resume a stalled user sync within about 20 minutes instead of up to 75. The stall check (no progress for stall_after(), 15 min by default) only ran inside the hourly-throttled daily schedule check, so a batch whose request was killed left the run stopped until the next hourly check or until Action Scheduler marked the action failed after an hour. The stall check now has its own 5-minute throttle and runs on init before the hourly check. Each resume is written to the debug log with the run&#039;s phase, cursor and seconds without progress, to help find why batches hang.]]></description>
			<content:encoded><![CDATA[<p>Resume a stalled user sync within about 20 minutes instead of up to 75. The stall check (no progress for stall_after(), 15 min by default) only ran inside the hourly-throttled daily schedule check, so a batch whose request was killed left the run stopped until the next hourly check or until Action Scheduler marked the action failed after an hour. The stall check now has its own 5-minute throttle and runs on init before the hourly check. Each resume is written to the debug log with the run&#8217;s phase, cursor and seconds without progress, to help find why batches hang.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
