Skip to content

Commit ff9c374

Browse files
committed
Add domain blocklist importer
1 parent df2e21c commit ff9c374

File tree

4 files changed

+779
-0
lines changed

4 files changed

+779
-0
lines changed

includes/class-moderation.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,38 @@ public static function add_site_block( $type, $value ) {
223223
return true; // Already blocked.
224224
}
225225

226+
/**
227+
* Add multiple site-wide blocks at once.
228+
*
229+
* More efficient than calling add_site_block() in a loop as it
230+
* performs a single database update.
231+
*
232+
* @param string $type The block type (domain or keyword only).
233+
* @param array $values Array of values to block.
234+
*/
235+
public static function add_site_blocks( $type, $values ) {
236+
if ( ! in_array( $type, array( self::TYPE_DOMAIN, self::TYPE_KEYWORD ), true ) ) {
237+
return;
238+
}
239+
240+
if ( empty( $values ) ) {
241+
return;
242+
}
243+
244+
foreach ( $values as $value ) {
245+
/**
246+
* Fired when a domain or keyword is blocked site-wide.
247+
*
248+
* @param string $value The blocked domain or keyword.
249+
* @param string $type The block type (actor, domain, keyword).
250+
*/
251+
\do_action( 'activitypub_add_site_block', $value, $type );
252+
}
253+
254+
$existing = \get_option( self::OPTION_KEYS[ $type ], array() );
255+
\update_option( self::OPTION_KEYS[ $type ], array_unique( array_merge( $existing, $values ) ) );
256+
}
257+
226258
/**
227259
* Remove a site-wide block.
228260
*

0 commit comments

Comments
 (0)