Skip to content

Commit 68d0d3a

Browse files
committed
sync changes from pro
1 parent 89825fb commit 68d0d3a

13 files changed

+275
-380
lines changed

src/php/class-active-snippets.php

Lines changed: 0 additions & 112 deletions
This file was deleted.

src/php/class-plugin.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -137,24 +137,18 @@ public function load_plugin() {
137137
// Cloud List Table shared functions.
138138
require_once $includes_path . '/cloud/list-table-shared-ops.php';
139139

140-
<<<<<<< HEAD
141140
// Snippet files.
142-
require_once $includes_path . '/flat-files/load.php';
143-
144141
$this->snippet_handler_registry = new Snippet_Handler_Registry( [
145142
'php' => new Php_Snippet_Handler(),
146143
'html' => new Html_Snippet_Handler(),
147144
] );
148145

149-
$fs = new WordPress_Filesystem_Adapter();
146+
$fs = new WordPress_File_System_Adapter();
150147

151148
$config_repo = new Snippet_Config_Repository( $fs );
152149

153150
( new Snippet_Files( $this->snippet_handler_registry, $fs, $config_repo ) )->register_hooks();
154151

155-
$this->active_snippets = new Active_Snippets();
156-
=======
157-
>>>>>>> core
158152
$this->front_end = new Front_End();
159153
$this->cloud_api = new Cloud_API();
160154

src/php/class-snippet.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -189,21 +189,8 @@ public static function get_type_from_scope( string $scope ): string {
189189
*
190190
* @return string The snippet type – will be a filename extension.
191191
*/
192-
<<<<<<< HEAD
193192
public function get_type(): string {
194-
if ( '-css' === substr( $this->scope, -4 ) ) {
195-
return 'css';
196-
} elseif ( '-js' === substr( $this->scope, -3 ) ) {
197-
return 'js';
198-
} elseif ( 'content' === substr( $this->scope, -7 ) ) {
199-
return 'html';
200-
} else {
201-
return 'php';
202-
}
203-
=======
204-
protected function get_type(): string {
205193
return self::get_type_from_scope( $this->scope );
206-
>>>>>>> core
207194
}
208195

209196
/**

src/php/evaluation/class-evaluate-content.php

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
use Code_Snippets\DB;
66
use Code_Snippets\Snippet;
7+
use Code_Snippets\Settings;
8+
use Code_Snippets\Snippet_Files;
9+
use function Code_Snippets\code_snippets;
710

811
/**
912
* Class for evaluating content snippets.
@@ -40,8 +43,13 @@ public function __construct( DB $db ) {
4043
* Initialise class functions.
4144
*/
4245
public function init() {
43-
add_action( 'wp_head', [ $this, 'load_head_content' ] );
44-
add_action( 'wp_footer', [ $this, 'load_footer_content' ] );
46+
if ( Snippet_Files::is_active() ) {
47+
add_action( 'wp_head', [ $this, 'load_head_content_from_flat_files' ] );
48+
add_action( 'wp_footer', [ $this, 'load_footer_content_from_flat_files' ] );
49+
} else {
50+
add_action( 'wp_head', [ $this, 'load_head_content' ] );
51+
add_action( 'wp_footer', [ $this, 'load_footer_content' ] );
52+
}
4553
}
4654

4755
/**
@@ -77,4 +85,46 @@ public function load_head_content() {
7785
public function load_footer_content() {
7886
$this->print_content_snippets( 'footer-content' );
7987
}
88+
89+
public function load_head_content_from_flat_files() {
90+
$this->load_content_snippets_from_flat_files( 'head-content' );
91+
}
92+
93+
public function load_footer_content_from_flat_files() {
94+
$this->load_content_snippets_from_flat_files( 'footer-content' );
95+
}
96+
97+
private function populate_active_snippets_from_flat_files() {
98+
$handler = code_snippets()->snippet_handler_registry->get_handler( 'html' );
99+
$dir_name = $handler->get_dir_name();
100+
$ext = $handler->get_file_extension();
101+
102+
$scopes = [ 'head-content', 'footer-content' ];
103+
$all_snippets = Snippet_Files::get_active_snippets_from_flat_files( $scopes, $dir_name );
104+
105+
foreach ( $all_snippets as $snippet ) {
106+
$scope = $snippet['scope'];
107+
108+
// Add file path information to the snippet for later use
109+
$table_name = Snippet_Files::get_hashed_table_name( $snippet['table'] );
110+
$base_path = Snippet_Files::get_base_dir( $table_name, $dir_name );
111+
$snippet['file_path'] = $base_path . '/' . $snippet['id'] . '.' . $ext;
112+
113+
$this->active_snippets[ $scope ][] = $snippet;
114+
}
115+
}
116+
117+
private function load_content_snippets_from_flat_files( string $scope ) {
118+
if ( is_null( $this->active_snippets ) ) {
119+
$this->populate_active_snippets_from_flat_files();
120+
}
121+
122+
if ( ! isset( $this->active_snippets[ $scope ] ) ) {
123+
return;
124+
}
125+
126+
foreach ( $this->active_snippets[ $scope ] as $snippet ) {
127+
require_once $snippet['file_path'];
128+
}
129+
}
80130
}

src/php/evaluation/class-evaluate-functions.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44

55
use Code_Snippets\DB;
66
use Code_Snippets\REST_API\Snippets_REST_Controller;
7+
use Code_Snippets\Settings;
8+
use Code_Snippets\Snippet_Files;
79
use function Code_Snippets\clean_active_snippets_cache;
810
use function Code_Snippets\clean_snippets_cache;
911
use function Code_Snippets\execute_snippet;
12+
use function Code_Snippets\code_snippets;
13+
use function Code_Snippets\execute_snippet_from_flat_file;
1014

1115
/**
1216
* Class for evaluating functions snippets.
@@ -104,6 +108,28 @@ private function quick_deactivate_snippet( int $snippet_id, string $table_name )
104108
[ '%d' ]
105109
);
106110
clean_snippets_cache( $table_name );
111+
112+
$network = $table_name === $this->db->ms_table;
113+
do_action( 'code_snippets/deactivate_snippet', $snippet_id, $network );
114+
}
115+
}
116+
117+
private function evaluate_snippet_flat_file( array $snippet, string $file_path, ?array $edit_snippet = null ) {
118+
$snippet_id = $snippet['id'];
119+
$code = $snippet['code'];
120+
$table_name = $snippet['table'];
121+
122+
// If the snippet is a single-use snippet, deactivate it before execution to ensure that the process always happens.
123+
if ( 'single-use' === $snippet['scope'] ) {
124+
$this->quick_deactivate_snippet( $snippet_id, $table_name );
125+
}
126+
127+
if ( ! is_null( $edit_snippet ) && $edit_snippet['id'] === $snippet_id && $edit_snippet['table'] === $table_name ) {
128+
return;
129+
}
130+
131+
if ( apply_filters( 'code_snippets/allow_execute_snippet', true, $snippet_id, $table_name ) ) {
132+
execute_snippet_from_flat_file( $code, $file_path, $snippet_id );
107133
}
108134
}
109135

@@ -117,6 +143,14 @@ public function evaluate_early(): bool {
117143
return false;
118144
}
119145

146+
if ( Snippet_Files::is_active() ) {
147+
return $this->evaluate_file_snippets();
148+
}
149+
150+
return $this->evaluate_db_snippets();
151+
}
152+
153+
public function evaluate_db_snippets(): bool {
120154
$scopes = [ 'global', 'single-use', is_admin() ? 'admin' : 'front-end' ];
121155
$active_snippets = $this->db->fetch_active_snippets( $scopes );
122156
$edit_snippet = $this->get_currently_editing_snippet();
@@ -139,4 +173,21 @@ public function evaluate_early(): bool {
139173

140174
return true;
141175
}
176+
177+
private function evaluate_file_snippets(): bool {
178+
$type = 'php';
179+
$scopes = [ 'global', 'single-use', is_admin() ? 'admin' : 'front-end' ];
180+
$snippets = Snippet_Files::get_active_snippets_from_flat_files( $scopes, $type );
181+
$edit_snippet = $this->get_currently_editing_snippet();
182+
183+
foreach ( $snippets as $snippet ) {
184+
$table_name = Snippet_Files::get_hashed_table_name( $snippet['table'] );
185+
$base_path = Snippet_Files::get_base_dir( $table_name, $type );
186+
$file = $base_path . '/' . $snippet['id'] . '.' . $type;
187+
188+
$this->evaluate_snippet_flat_file( $snippet, $file, $edit_snippet );
189+
}
190+
191+
return true;
192+
}
142193
}

src/php/flat-files/classes/class-config-repository.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ public function save( string $base_dir, array $active_snippets ): void {
3838
public function update( string $base_dir, Snippet $snippet, ?bool $remove = false ): void {
3939
$active_snippets = $this->load( $base_dir );
4040

41-
if ( ! $remove ) {
42-
$active_snippets[ $snippet->id ] = $snippet->get_fields();
43-
} else {
41+
if ( $remove ) {
4442
unset( $active_snippets[ $snippet->id ] );
43+
} else {
44+
$active_snippets[ $snippet->id ] = $snippet->get_fields();
4545
}
4646

4747
$this->save( $base_dir, $active_snippets );

src/php/flat-files/classes/class-file-system-adapter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
namespace Code_Snippets;
33

4-
class WordPress_Filesystem_Adapter implements File_System_Interface {
4+
class WordPress_File_System_Adapter implements File_System_Interface {
55
private $fs;
66

77
public function __construct() {

0 commit comments

Comments
 (0)