PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.4.2
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.4.2
0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.9 0.4.8 0.4.7 0.4.6 trunk 0.0.1 0.0.2 0.2.8 0.2.9 0.3.0 0.3.1 0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 0.3.8 All 32 releases
← All changes | classes/api.php +55 -18 0.3.20.4.2 View file →
@@ -101,28 +101,40 @@
101 101 * @return array The list of snippets.
102 102 */
103 103 public function getSnippets( $safe = true, $scope = null ) {
104 104 try {
105 - // Don't log here to avoid infinite loops during initialization
105 +
106 + $allSnippets = $this->snippet_module->select( 0, 9999,
107 + [ ['accessor' => 'scope', 'value' => $scope] ]
108 + , [] );
109 +
110 + $snippets = $allSnippets['data'] ?? [];
106 111
107 - // If scope is specified, use getSnippetsByScope
108 - if ( $scope ) {
109 - $snippets = $this->getSnippetsByScope( $scope );
110 - } else {
111 - // Get all snippets from the database
112 - $allSnippets = $this->snippet_module->select( 0, 9999, [], [] );
113 - $snippets = $allSnippets['data'] ?? [];
114 - }
115 112
116 113 if ( $safe ) {
114 +
117 115 $snippets = array_filter( $snippets, function( $snippet ) {
118 - $name = $snippet['name'];
119 - if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
120 - if ( $this->debug ) {
121 - $this->core->log( sprintf( 'API [GetSnippets]: Filtered out snippet with invalid name: %s', $name ) );
116 +
117 + if( $snippet['scope'] === 'function' ) {
118 +
119 + if( array_key_exists( 'functionName', $snippet ) )
120 + {
121 + $name = $snippet['functionName'];
122 + if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
123 + if ( $this->debug ) {
124 + $this->core->log( sprintf( 'API [GetSnippets]: Filtered out snippet with invalid name: %s', $name ) );
125 + }
126 + return false;
127 + }
128 + } else {
129 + if ( $this->debug ) {
130 + $this->core->log( 'API [GetSnippets]: Filtered out snippet with missing functionName.' );
131 + }
132 + return false;
122 133 }
123 - return false;
134 +
124 135 }
136 +
125 137 return true;
126 138 } );
127 139 }
128 140
@@ -143,9 +155,9 @@
143 155 * @param bool $safe Whether to filter out snippets with invalid names.
144 156 * @return array The list of function snippets only.
145 157 */
146 158 public function get_functions( $safe = true ) {
147 - error_log( 'Code Engine API: get_functions() is deprecated. Please use getSnippets() instead.' );
159 + $this->core->log( '⚠️ API Warning: get_functions() is deprecated. Please use getSnippets() instead.' );
148 160 // Return only function snippets for backward compatibility
149 161 return $this->getSnippets( $safe, 'function' );
150 162 }
151 163
@@ -159,9 +171,9 @@
159 171 *
160 172 * @return mixed The result of the snippet execution.
161 173 * @throws Exception If the snippet cannot be executed.
162 174 */
163 - public function executeSnippet( $id, $args = [] ) {
175 + public function executeSnippet( $id, $args = [], $reply = null ) {
164 176 try {
165 177 if ( empty( $id ) ) {
166 178 throw new Exception( 'The snippet ID is required.' );
167 179 }
@@ -174,9 +186,34 @@
174 186 $snippet = $this->snippet_module->get_function( $id );
175 187 if ( empty( $snippet ) ) {
176 188 throw new Exception( sprintf( 'Snippet with ID %d not found.', $id ) );
177 189 }
178 -
190 +
191 + $query = $reply ? $reply->query : null;
192 + $array_query = [];
193 + if( $query ) {
194 + $array_query['envId'] = $query->envId ?? 'No EnvId in Query';
195 + $array_query['botId'] = $query->botId ?? 'No BotId in Query';
196 + $array_query['customId'] = $query->customId ?? 'No CustomId in Query';
197 + $array_query['embeddingsEnvId'] = $query->embeddingsEnvId ?? 'No EmbeddingsEnvId in Query';
198 +
199 +
200 + $array_query['chatId'] = $query->chatId ?? 'No ChatId in Query';
201 + $array_query['session'] = $query->session ?? 'No Session in Query';
202 + $array_query['scope'] = $query->scope ?? 'No Scope in Query';
203 +
204 + $array_query['instructions'] = $query->instructions ?? 'No Instructions in Query';
205 + $array_query['context'] = $query->context ?? 'No Context in Query';
206 +
207 + $array_query['messages'] = $query->messages ? json_encode( $query->messages ) : 'No Messages in Query';
208 + $array_query['message'] = $query->message ?? 'No Message in Query';
209 +
210 + $array_query['model'] = $query->model ?? 'No Model in Query';
211 + $array_query['feature'] = $query->feature ?? 'No Feature in Query';
212 + }
213 +
214 + $args['__mwai_query'] = $array_query;
215 +
179 216 $output = $this->core->run_snippet( $id, $args );
180 217
181 218 if ( $this->debug ) {
182 219 $shortOutput = is_string( $output ) ? substr( $output, 0, 100 ) : json_encode( $output );
@@ -725,9 +762,9 @@
725 762 * @throws Exception If the scope is invalid.
726 763 */
727 764 public function getSnippetsByScope( $scope, $filters = [] ) {
728 765 try {
729 - $validScopes = ['function', 'backend', 'frontend', 'scheduled', 'persistent'];
766 + $validScopes = ['function', 'backend', 'frontend', 'scheduled', 'persistent', 'content_js', 'content_php'];
730 767 if ( !in_array( $scope, $validScopes ) ) {
731 768 throw new Exception( sprintf( 'Invalid scope. Must be one of: %s', implode( ', ', $validScopes ) ) );
732 769 }
733 770