Initial commit: WordPress wp-content (themes, plugins, languages)
- Theme: momentry (custom theme with REST API routes) - Plugins: code-snippets (contains all API proxies) - Languages: zh_TW translations - Excludes: cache, backups, uploads, logs
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
namespace Code_Snippets;
|
||||
|
||||
class Snippet_Config_Repository implements Snippet_Config_Repository_Interface {
|
||||
|
||||
const CONFIG_FILE_NAME = 'index.php';
|
||||
|
||||
private File_System_Interface $fs;
|
||||
|
||||
public function __construct( File_System_Interface $fs ) {
|
||||
$this->fs = $fs;
|
||||
}
|
||||
|
||||
public function load( string $base_dir ): array {
|
||||
$config_file_path = trailingslashit( $base_dir ) . static::CONFIG_FILE_NAME;
|
||||
|
||||
if ( is_file( $config_file_path ) ) {
|
||||
if ( function_exists( 'opcache_invalidate' ) ) {
|
||||
opcache_invalidate( $config_file_path, true );
|
||||
}
|
||||
return require $config_file_path;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
public function save( string $base_dir, array $active_snippets ): void {
|
||||
$config_file_path = trailingslashit( $base_dir ) . static::CONFIG_FILE_NAME;
|
||||
|
||||
ksort( $active_snippets );
|
||||
|
||||
$file_content = "<?php\n\nif ( ! defined( 'ABSPATH' ) ) { return; }\n\nreturn " .
|
||||
var_export( $active_snippets, true ) .
|
||||
";\n";
|
||||
|
||||
$this->fs->put_contents( $config_file_path, $file_content, FS_CHMOD_FILE );
|
||||
|
||||
if ( is_file( $config_file_path ) ) {
|
||||
if ( function_exists( 'opcache_invalidate' ) ) {
|
||||
opcache_invalidate( $config_file_path, true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function update( string $base_dir, Snippet $snippet, ?bool $remove = false ): void {
|
||||
$active_snippets = $this->load( $base_dir );
|
||||
|
||||
if ( $remove ) {
|
||||
unset( $active_snippets[ $snippet->id ] );
|
||||
} else {
|
||||
$active_snippets[ $snippet->id ] = $snippet->get_fields();
|
||||
}
|
||||
|
||||
$this->save( $base_dir, $active_snippets );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user