Changeset 3374520
- Timestamp:
- 10/07/2025 03:23:05 PM (4 months ago)
- Location:
- wp-connectr/trunk
- Files:
-
- 54 edited
-
changelog.txt (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
src/ACF/Rest_Api.php (modified) (7 diffs)
-
src/Controller/RestfulRoutesTrait.php (modified) (1 diff)
-
src/DynamicSchemaProvider.php (modified) (3 diffs)
-
src/PowerResource/Post/PowerResource.php (modified) (3 diffs)
-
src/PowerResource/User/PowerResource.php (modified) (3 diffs)
-
vendor/composer/installed.php (modified) (2 diffs)
-
vendor_prefixed/league/container/src/Argument/ArgumentInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/ArgumentResolverInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/ArgumentResolverTrait.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/DefaultValueArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/DefaultValueInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/ArrayArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/BooleanArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/CallableArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/FloatArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/IntegerArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/ObjectArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/Literal/StringArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/LiteralArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/LiteralArgumentInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/ResolvableArgument.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Argument/ResolvableArgumentInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Container.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ContainerAwareInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ContainerAwareTrait.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Definition/Definition.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Definition/DefinitionAggregate.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Definition/DefinitionAggregateInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Definition/DefinitionInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/DefinitionContainerInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Exception/ContainerException.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Exception/NotFoundException.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Inflector/Inflector.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Inflector/InflectorAggregate.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Inflector/InflectorAggregateInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/Inflector/InflectorInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ReflectionContainer.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ServiceProvider/AbstractServiceProvider.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ServiceProvider/BootableServiceProviderInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderAggregate.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderAggregateInterface.php (modified) (1 diff)
-
vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderInterface.php (modified) (1 diff)
-
vendor_prefixed/psr/container/src/ContainerExceptionInterface.php (modified) (1 diff)
-
vendor_prefixed/psr/container/src/ContainerInterface.php (modified) (1 diff)
-
vendor_prefixed/psr/container/src/NotFoundExceptionInterface.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-ctype/Ctype.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-ctype/bootstrap.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-ctype/bootstrap80.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-mbstring/Mbstring.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-mbstring/bootstrap.php (modified) (1 diff)
-
vendor_prefixed/symfony/polyfill-mbstring/bootstrap80.php (modified) (1 diff)
-
wp-connectr.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-connectr/trunk/changelog.txt
r3364617 r3374520 1 1 *** Changelog *** 2 3 2025-10-06 - version 2.3.0 4 * Enhanced ACF field retrieval with alternative request schema support for improved compatibility 2 5 3 6 2025-09-19 - version 2.2.0 -
wp-connectr/trunk/readme.txt
r3364617 r3374520 6 6 Tested up to: 6.8 7 7 Requires PHP: 7.2.0 8 Stable tag: 2. 2.08 Stable tag: 2.3.0 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 74 74 == Changelog == 75 75 76 2025-10-06 - version 2.3.0 77 * Enhanced ACF field retrieval with alternative request schema support for improved compatibility 78 76 79 2025-09-19 - version 2.2.0 77 80 * Added meta query support for users and posts - filter by custom fields using meta_key, meta_value, meta_compare, and complex meta_query parameters -
wp-connectr/trunk/src/ACF/Rest_Api.php
r3363457 r3374520 31 31 add_filter( 'rest_pre_dispatch', array( $this, 'initialize' ), 10, 3 ); 32 32 add_action( 'rest_api_init', array( $this, 'register_field' ), 2 ); 33 34 add_filter( 'wp_connectr_endpoint_args', array( $this, 'filter_schema_props_for_endpoint_args' ), 10, 1 ); 33 35 34 36 // Add schema filters for each ACF field type to ensure Power Automate compatibility … … 71 73 72 74 // File/Image fields - return as object or string 73 add_filter( 'acf/rest/get_field_schema/type=image', array( $this, 'get_file_schema' ), 10, 2 ); 74 add_filter( 'acf/rest/get_field_schema/type=file', array( $this, 'get_file_schema' ), 10, 2 ); 75 // Disabled: Files and images are returned as IDs in ACF REST API. See acf_field_file::format_value_for_rest 76 // add_filter( 'acf/rest/get_field_schema/type=image', array( $this, 'get_image_schema' ), 10, 2 ); 77 // add_filter( 'acf/rest/get_field_schema/type=file', array( $this, 'get_file_schema' ), 10, 2 ); 75 78 add_filter( 'acf/rest/get_field_schema/type=gallery', array( $this, 'get_array_schema' ), 10, 2 ); 76 79 … … 83 86 84 87 // Layout fields - return as array 85 add_filter( 'acf/rest/get_field_schema/type=repeater', array( $this, 'get_ array_schema' ), 10, 2 );88 add_filter( 'acf/rest/get_field_schema/type=repeater', array( $this, 'get_repeater_schema' ), 10, 2 ); 86 89 add_filter( 'acf/rest/get_field_schema/type=flexible_content', array( $this, 'get_array_schema' ), 10, 2 ); 87 add_filter( 'acf/rest/get_field_schema/type=group', array( $this, 'get_ object_schema' ), 10, 2 );90 add_filter( 'acf/rest/get_field_schema/type=group', array( $this, 'get_group_schema' ), 10, 2 ); 88 91 add_filter( 'acf/rest/get_field_schema/type=clone', array( $this, 'get_object_schema' ), 10, 2 ); 89 92 … … 180 183 181 184 } 185 186 187 /** 188 * Filter to modify schema for endpoint args. 189 * 190 * ACF provides only a single description of the schema, which is used for both the request and the response. 191 * This works fine for most cases, but for some fields, the schema for the request needs to be different to the schema for the response. 192 * 193 * When we construct the schema for our fields, we add 'request_overrides' to the schema for fields that need to be different for requests. 194 * 195 * This filter looks for those overrides and applies them to the schema for the request endpoint args. 196 * 197 * @param array $schema The full item schema. 198 * @return array Modified schema for request endpoint args. 199 */ 200 public function filter_schema_props_for_endpoint_args( $schema_props ) { 201 // Only process the 'acf' field since this class is only responsible for ACF fields 202 if ( ! isset( $schema_props['acf'] ) ) { 203 return $schema_props; 204 } 205 206 // Process the acf field and all its nested properties recursively 207 $schema_props['acf'] = $this->apply_request_overrides_recursively( $schema_props['acf'] ); 208 209 return $schema_props; 210 } 211 212 /** 213 * Recursively apply request_overrides to a schema and its nested properties. 214 * 215 * @param array $field_schema The field schema to process. 216 * @return array The processed field schema. 217 */ 218 private function apply_request_overrides_recursively( $field_schema ) { 219 if ( ! is_array( $field_schema ) ) { 220 return $field_schema; 221 } 222 223 // Apply request_overrides for this field 224 if ( isset( $field_schema['request_overrides'] ) && is_array( $field_schema['request_overrides'] ) ) { 225 foreach ( $field_schema['request_overrides'] as $key => $value ) { 226 $field_schema[ $key ] = $value; 227 } 228 unset( $field_schema['request_overrides'] ); 229 } 230 231 // Recursively process nested properties 232 if ( isset( $field_schema['properties'] ) && is_array( $field_schema['properties'] ) ) { 233 foreach ( $field_schema['properties'] as $property_name => &$property_schema ) { 234 $property_schema = $this->apply_request_overrides_recursively( $property_schema ); 235 } 236 } 237 238 // Recursively process items schema (for arrays) 239 if ( isset( $field_schema['items'] ) && is_array( $field_schema['items'] ) ) { 240 $field_schema['items'] = $this->apply_request_overrides_recursively( $field_schema['items'] ); 241 } 242 243 return $field_schema; 244 } 245 182 246 183 247 /** … … 834 898 835 899 /** 900 * Get schema for image fields 901 * 902 * @param array $schema 903 * @param array $field 904 * @return array 905 */ 906 public function get_image_schema( $schema, $field ) { 907 // Check return format to determine if we return object or string 908 $return_format = isset( $field['return_format'] ) ? $field['return_format'] : 'array'; 909 910 // Set request overrides to expect an integer (Attachment ID) for requests 911 if ( isset( $schema['type'] ) ) { 912 $schema['request_overrides']['type'] = $schema['type']; 913 $schema['request_overrides']['description'] = 'The Attachment ID of the image.'; 914 } 915 916 if ( $return_format === 'url' ) { 917 $schema['type'] = 'string'; 918 $schema['description'] = 'The URL of the image.'; 919 } elseif ( $return_format === 'id' ) { 920 $schema['type'] = 'string'; 921 $schema['description'] = 'The Attachment ID of the image.'; 922 } else { 923 // For array/object return format, describe the full image attachment object structure 924 $schema['type'] = 'object'; 925 $schema['description'] = 'Full image attachment object with all metadata including sizes.'; 926 $schema['properties'] = array( 927 'id' => array( 928 'type' => 'integer', 929 'description' => 'The attachment ID', 930 ), 931 'title' => array( 932 'type' => 'string', 933 'description' => 'The attachment title.', 934 ), 935 'filename' => array( 936 'type' => 'string', 937 'description' => 'The file name.', 938 ), 939 'filesize' => array( 940 'type' => 'integer', 941 'description' => 'The file size in bytes.', 942 ), 943 'url' => array( 944 'type' => 'string', 945 'format' => 'uri', 946 'description' => 'The URL to the full-size image.', 947 ), 948 'link' => array( 949 'type' => 'string', 950 'format' => 'uri', 951 'description' => 'The attachment page link.', 952 ), 953 'alt' => array( 954 'type' => 'string', 955 'description' => 'The alternative text.', 956 ), 957 'author' => array( 958 'type' => 'string', 959 'description' => 'The author ID.', 960 ), 961 'description' => array( 962 'type' => 'string', 963 'description' => 'The attachment description.', 964 ), 965 'caption' => array( 966 'type' => 'string', 967 'description' => 'The attachment caption.', 968 ), 969 'name' => array( 970 'type' => 'string', 971 'description' => 'The attachment post name (slug).', 972 ), 973 'status' => array( 974 'type' => 'string', 975 'description' => 'The attachment post status.', 976 ), 977 'uploaded_to' => array( 978 'type' => 'integer', 979 'description' => 'The parent post ID this attachment is uploaded to.', 980 ), 981 'date' => array( 982 'type' => 'string', 983 'format' => 'date-time', 984 'description' => 'The upload date (GMT).', 985 ), 986 'modified' => array( 987 'type' => 'string', 988 'format' => 'date-time', 989 'description' => 'The last modified date (GMT).', 990 ), 991 'menu_order' => array( 992 'type' => 'integer', 993 'description' => 'The menu order.', 994 ), 995 'mime_type' => array( 996 'type' => 'string', 997 'description' => 'The MIME type of the image.', 998 ), 999 'type' => array( 1000 'type' => 'string', 1001 'description' => 'The general file type (typically "image").', 1002 ), 1003 'subtype' => array( 1004 'type' => 'string', 1005 'description' => 'The specific image subtype (e.g., jpeg, png, gif).', 1006 ), 1007 'icon' => array( 1008 'type' => 'string', 1009 'format' => 'uri', 1010 'description' => 'The URL to the icon representing the file type.', 1011 ), 1012 'width' => array( 1013 'type' => 'integer', 1014 'description' => 'The image width in pixels.', 1015 ), 1016 'height' => array( 1017 'type' => 'integer', 1018 'description' => 'The image height in pixels.', 1019 ), 1020 'sizes' => array( 1021 'type' => 'object', 1022 'description' => 'Object containing URLs and dimensions for all registered image sizes.', 1023 'additionalProperties' => true, 1024 'properties' => array( 1025 'thumbnail' => array( 1026 'type' => 'string', 1027 'format' => 'uri', 1028 'description' => 'URL to the thumbnail size.', 1029 ), 1030 'thumbnail-width' => array( 1031 'type' => 'integer', 1032 'description' => 'Width of the thumbnail size.', 1033 ), 1034 'thumbnail-height' => array( 1035 'type' => 'integer', 1036 'description' => 'Height of the thumbnail size.', 1037 ), 1038 'medium' => array( 1039 'type' => 'string', 1040 'format' => 'uri', 1041 'description' => 'URL to the medium size.', 1042 ), 1043 'medium-width' => array( 1044 'type' => 'integer', 1045 'description' => 'Width of the medium size.', 1046 ), 1047 'medium-height' => array( 1048 'type' => 'integer', 1049 'description' => 'Height of the medium size.', 1050 ), 1051 'medium_large' => array( 1052 'type' => 'string', 1053 'format' => 'uri', 1054 'description' => 'URL to the medium_large size.', 1055 ), 1056 'medium_large-width' => array( 1057 'type' => 'integer', 1058 'description' => 'Width of the medium_large size.', 1059 ), 1060 'medium_large-height' => array( 1061 'type' => 'integer', 1062 'description' => 'Height of the medium_large size.', 1063 ), 1064 'large' => array( 1065 'type' => 'string', 1066 'format' => 'uri', 1067 'description' => 'URL to the large size.', 1068 ), 1069 'large-width' => array( 1070 'type' => 'integer', 1071 'description' => 'Width of the large size.', 1072 ), 1073 'large-height' => array( 1074 'type' => 'integer', 1075 'description' => 'Height of the large size.', 1076 ), 1077 ), 1078 ), 1079 ); 1080 $schema['additionalProperties'] = true; // Allow for custom image sizes 1081 } 1082 return $schema; 1083 } 1084 1085 /** 836 1086 * Get schema for file/image fields 837 1087 * … … 844 1094 $return_format = isset( $field['return_format'] ) ? $field['return_format'] : 'array'; 845 1095 846 if ( $return_format === 'url' || $return_format === 'id' ) { 1096 // Set request overrides to expect an integer (Attachment ID) for requests 1097 if ( isset( $schema['type'] ) ) { 1098 $schema['request_overrides']['type'] = $schema['type']; 1099 $schema['request_overrides']['description'] = 'The Attachment ID of the file.'; 1100 } 1101 1102 if ( $return_format === 'url' ) { 847 1103 $schema['type'] = 'string'; 1104 $schema['description'] = 'The URL of the file.'; 1105 } elseif ( $return_format === 'id' ) { 1106 $schema['type'] = 'string'; 1107 $schema['description'] = 'The Attachment ID of the file.'; 848 1108 } else { 849 // For array/object return format, we can't predict the exact object structure 850 // So we'll let it be converted to JSON string by the typecaster 1109 // For array/object return format, describe the full attachment object structure 851 1110 $schema['type'] = 'object'; 1111 $schema['description'] = 'Full attachment object with all metadata.'; 1112 $schema['properties'] = array( 1113 'id' => array( 1114 'type' => 'integer', 1115 'description' => 'The attachment ID', 1116 ), 1117 'title' => array( 1118 'type' => 'string', 1119 'description' => 'The attachment title.', 1120 ), 1121 'filename' => array( 1122 'type' => 'string', 1123 'description' => 'The file name.', 1124 ), 1125 'filesize' => array( 1126 'type' => 'integer', 1127 'description' => 'The file size in bytes.', 1128 ), 1129 'url' => array( 1130 'type' => 'string', 1131 'format' => 'uri', 1132 'description' => 'The URL to the file.', 1133 ), 1134 'link' => array( 1135 'type' => 'string', 1136 'format' => 'uri', 1137 'description' => 'The attachment page link.', 1138 ), 1139 'alt' => array( 1140 'type' => 'string', 1141 'description' => 'The alternative text.', 1142 ), 1143 'author' => array( 1144 'type' => 'string', 1145 'description' => 'The author ID.', 1146 ), 1147 'description' => array( 1148 'type' => 'string', 1149 'description' => 'The attachment description.', 1150 ), 1151 'caption' => array( 1152 'type' => 'string', 1153 'description' => 'The attachment caption.', 1154 ), 1155 'name' => array( 1156 'type' => 'string', 1157 'description' => 'The attachment post name (slug).', 1158 ), 1159 'status' => array( 1160 'type' => 'string', 1161 'description' => 'The attachment post status.', 1162 ), 1163 'uploaded_to' => array( 1164 'type' => 'integer', 1165 'description' => 'The parent post ID this attachment is uploaded to.', 1166 ), 1167 'date' => array( 1168 'type' => 'string', 1169 'format' => 'date-time', 1170 'description' => 'The upload date (GMT).', 1171 ), 1172 'modified' => array( 1173 'type' => 'string', 1174 'format' => 'date-time', 1175 'description' => 'The last modified date (GMT).', 1176 ), 1177 'menu_order' => array( 1178 'type' => 'integer', 1179 'description' => 'The menu order.', 1180 ), 1181 'mime_type' => array( 1182 'type' => 'string', 1183 'description' => 'The MIME type of the file.', 1184 ), 1185 'type' => array( 1186 'type' => 'string', 1187 'description' => 'The general file type (e.g., image, video, audio, application).', 1188 ), 1189 'subtype' => array( 1190 'type' => 'string', 1191 'description' => 'The specific file subtype (e.g., jpeg, png, mp4, pdf).', 1192 ), 1193 'icon' => array( 1194 'type' => 'string', 1195 'format' => 'uri', 1196 'description' => 'The URL to the icon representing the file type.', 1197 ), 1198 ); 1199 $schema['additionalProperties'] = true; // Allow for dynamic properties based on file type 1200 } 1201 return $schema; 1202 } 1203 1204 /** 1205 * Get schema for repeater fields with sub-field structure 1206 * 1207 * @param array $schema 1208 * @param array $field 1209 * @return array 1210 */ 1211 public function get_repeater_schema( $schema, $field ) { 1212 $schema['type'] = 'array'; 1213 $schema['description'] = 'Array of repeater row objects, each containing the defined sub-fields.'; 1214 1215 // Check if the repeater has sub_fields defined 1216 if ( isset( $field['sub_fields'] ) && is_array( $field['sub_fields'] ) && ! empty( $field['sub_fields'] ) ) { 1217 // Build the schema for each repeater row as an object with properties 1218 $schema['items'] = array( 1219 'type' => 'object', 1220 'description' => 'A single repeater row containing all sub-fields.', 1221 'properties' => array(), 1222 ); 1223 1224 // Process each sub-field to build the properties 1225 foreach ( $field['sub_fields'] as $sub_field ) { 1226 // Recursively get the schema for each sub-field using ACF's schema function 1227 $sub_field_schema = acf_get_field_rest_schema( $sub_field ); 1228 $schema['items']['properties'][ $sub_field['name'] ] = $sub_field_schema; 1229 } 1230 } else { 1231 // Fallback if no sub_fields are defined (shouldn't normally happen) 1232 $schema['items'] = array( 1233 'type' => 'object', 1234 'description' => 'A repeater row object.', 1235 'additionalProperties' => true, 1236 ); 1237 } 1238 1239 return $schema; 1240 } 1241 1242 /** 1243 * Get schema for group fields with sub-field structure 1244 * 1245 * @param array $schema 1246 * @param array $field 1247 * @return array 1248 */ 1249 public function get_group_schema( $schema, $field ) { 1250 $schema['type'] = 'object'; 1251 $schema['description'] = 'Group field containing multiple sub-fields.'; 1252 $schema['properties'] = array(); 1253 1254 // Check if the group has sub_fields defined 1255 if ( isset( $field['sub_fields'] ) && is_array( $field['sub_fields'] ) && ! empty( $field['sub_fields'] ) ) { 1256 // Process each sub-field to build the properties 1257 foreach ( $field['sub_fields'] as $sub_field ) { 1258 // Recursively get the schema for each sub-field using ACF's schema function 1259 $sub_field_schema = acf_get_field_rest_schema( $sub_field ); 1260 $schema['properties'][ $sub_field['name'] ] = $sub_field_schema; 1261 } 1262 } else { 1263 // Fallback if no sub_fields are defined 852 1264 $schema['additionalProperties'] = true; 853 1265 } 1266 854 1267 return $schema; 855 1268 } … … 866 1279 $multiple = isset( $field['multiple'] ) ? $field['multiple'] : false; 867 1280 $return_format = isset( $field['return_format'] ) ? $field['return_format'] : 'object'; 1281 1282 if ( isset( $schema['type'] ) ) { 1283 $schema['request_overrides']['type'] = $schema['type']; 1284 } 868 1285 869 1286 if ( $multiple ) { -
wp-connectr/trunk/src/Controller/RestfulRoutesTrait.php
r3250561 r3374520 233 233 234 234 /** 235 * Filter to globally modify endpoint args 236 * 237 * @param array $endpoint_args The endpoint args. 238 */ 239 $endpoint_args = apply_filters( 'wp_connectr_endpoint_args', $endpoint_args, $method ); 240 241 /** 235 242 * Filter the endpoint args for this resource. 236 243 * 237 244 * @param array $endpoint_args The endpoint args. 238 245 */ 239 return apply_filters( "wp_connectr_{$this->rest_base}_endpoint_args", $endpoint_args );246 return apply_filters( "wp_connectr_{$this->rest_base}_endpoint_args", $endpoint_args, $method ); 240 247 } 241 248 -
wp-connectr/trunk/src/DynamicSchemaProvider.php
r3358663 r3374520 9 9 const SUPPORTED_TYPES = array( 'string', 'integer', 'number', 'boolean', 'array', 'object' ); 10 10 const SUPPORTED_FORMATS = array( 'date-time', 'uri', 'email' ); 11 12 /** 13 * The API instance 14 * 15 * @var API 16 */ 17 private $api; 18 19 /** 20 * The input data 21 * 22 * @var array 23 */ 24 private $input_data; 25 26 /** 27 * The data, typically the response body 28 * 29 * @var array 30 */ 31 private $data; 32 33 public function __construct( API $api ) { 34 $this->api = $api; 35 36 $this->input_data = array(); 37 $this->data = array(); 38 } 39 40 public function register() { 41 add_filter( 'rest_post_dispatch', array( $this, 'translate_power_automate_options_request' ), 10, 3); 42 add_filter( 'wp_connectr_dynamic_schema', array( $this, 'filter_schema' ), 10, 1 ); 43 } 44 45 /** 46 * Accepts a schema and converts it to a format compatible with Power Automate. 47 * 48 * @param array $raw_schema Must contain 'schema' key 49 * @return void 50 */ 51 public function filter_schema( $raw_schema ) { 52 if ( ! $this->api->is_our_request() ) { 53 return $raw_schema; 54 } 55 56 $jschema = rgar( $raw_schema, 'schema', array( 'properties' => array() ) ); 57 $schema_props = self::json2swagger( $jschema['properties'] ); 58 59 return array( 'schema' => $schema_props ); 60 } 61 62 /** 63 * Translates OPTIONS requests to our API to a format compatible with Power Automate. 64 * 65 * Violates normal WP schema standards. 66 * 67 * @param WP_HTTP_Response $response 68 * @param WP_REST_Server $wp_rest_server 69 * @param WP_REST_Request $request 70 * @return WP_HTTP_Response 71 */ 72 public function translate_power_automate_options_request( $response, $wp_rest_server, $request ) { 73 if ( $request->get_method() !== 'OPTIONS' || ! $this->api->is_our_request() ) { 74 return $response; 75 } 76 77 $this->set_input_data( $response->get_data() ); 78 $this->set_data( array() ); 79 80 if ( isset( $this->input_data['schema'] ) ) { 81 $jschema = $this->input_data['schema']; 82 $schema_props = self::json2swagger( $jschema['properties'] ); 83 84 $schema = $schema_props; 85 $schema['title'] = (string) new Humanizer( $jschema['title'] ); 86 $schema['type'] = $jschema['type']; 87 88 $this->set_data_prop( 'schema', $schema ); 89 } 90 91 if ( array_key_exists( 'methods', $this->input_data ) ) { 92 foreach ( $this->input_data['methods'] as $method ) { 93 $jschema = $this->first_matching_endpoint( $method ); 94 $method = strtolower( $method ); 95 $remove_readonly = false; 96 97 if ( 'get' !== $method ) { 98 $remove_readonly = true; 99 } 100 101 $swagger = self::json2swagger( $jschema, $remove_readonly ); 102 103 $this->set_data_prop( $method, $swagger ); 104 } 105 } 106 107 $response->set_data( $this->get_data() ); 108 109 return $response; 110 } 111 112 protected function get_data() { 113 return $this->data; 114 } 115 116 protected function set_data( $data ) { 117 $this->data = $data; 118 119 return $data; 120 } 121 122 protected function set_data_prop( $key, $value ) { 123 $this->data[ $key ] = $value; 124 125 return $this->data[ $key ]; 126 } 127 128 protected function get_input_data() { 129 return $this->input_data; 130 } 131 132 protected function set_input_data( $value ) { 133 $this->input_data = $value; 134 135 return $value; 136 } 137 11 138 12 139 public static function json2swagger( $json_schema, $remove_readonly = false ) { … … 84 211 85 212 if ( is_array( $jitem['type'] ) ) { 86 if ( count( $jitem['type'] ) === 1 ) { 87 $jitem['type'] = $jitem['type'][0]; 213 // Remove null from types 214 $types = array_filter( $jitem['type'], function( $v ) { 215 return 'null' !== $v; 216 } ); 217 218 if ( count( $types ) === 1 ) { 219 $jitem['type'] = $types[0]; 88 220 } else { 89 // Power Automate doesn't support multiple types, so we need to work out how this should be handled 90 if ( isset( $jitem[ 'items' ] ) && in_array( 'array', $jitem['type'], true ) ) { 91 $jitem['type'] = 'array'; 92 } elseif ( in_array( 'string', $jitem['type'], true ) ) { 93 $jitem['type'] = 'string'; 94 } 95 221 // Find the first supported type in the array 222 $found_type = null; 223 foreach ( $types as $type ) { 224 if ( in_array( $type, self::SUPPORTED_TYPES, true ) ) { 225 $found_type = $type; 226 break; 227 } 228 } 229 230 // Use the first supported type found, or fallback to 'string' 231 $jitem['type'] = null !== $found_type ? $found_type : 'string'; 96 232 } 97 233 } … … 152 288 return array_filter( $item ); 153 289 } 154 155 /**156 * The API instance157 *158 * @var API159 */160 private $api;161 162 /**163 * The input data164 *165 * @var array166 */167 private $input_data;168 169 /**170 * The data, typically the response body171 *172 * @var array173 */174 private $data;175 176 public function __construct( API $api ) {177 $this->api = $api;178 179 $this->input_data = array();180 $this->data = array();181 }182 183 public function register() {184 add_filter( 'rest_post_dispatch', array( $this, 'translate_power_automate_options_request' ), 10, 3);185 add_filter( 'wp_connectr_dynamic_schema', array( $this, 'filter_schema' ), 10, 1 );186 }187 188 /**189 * Accepts a schema and converts it to a format compatible with Power Automate.190 *191 * @param array $raw_schema Must contain 'schema' key192 * @return void193 */194 public function filter_schema( $raw_schema ) {195 if ( ! $this->api->is_our_request() ) {196 return $raw_schema;197 }198 199 $jschema = rgar( $raw_schema, 'schema', array( 'properties' => array() ) );200 $schema_props = self::json2swagger( $jschema['properties'] );201 202 return array( 'schema' => $schema_props );203 }204 205 /**206 * Translates OPTIONS requests to our API to a format compatible with Power Automate.207 *208 * Violates normal WP schema standards.209 *210 * @param WP_HTTP_Response $response211 * @param WP_REST_Server $wp_rest_server212 * @param WP_REST_Request $request213 * @return WP_HTTP_Response214 */215 public function translate_power_automate_options_request( $response, $wp_rest_server, $request ) {216 if ( $request->get_method() !== 'OPTIONS' || ! $this->api->is_our_request() ) {217 return $response;218 }219 220 $this->set_input_data( $response->get_data() );221 $this->set_data( array() );222 223 if ( isset( $this->input_data['schema'] ) ) {224 $jschema = $this->input_data['schema'];225 $schema_props = self::json2swagger( $jschema['properties'] );226 227 $schema = $schema_props;228 $schema['title'] = (string) new Humanizer( $jschema['title'] );229 $schema['type'] = $jschema['type'];230 231 $this->set_data_prop( 'schema', $schema );232 }233 234 if ( array_key_exists( 'methods', $this->input_data ) ) {235 foreach ( $this->input_data['methods'] as $method ) {236 $jschema = $this->first_matching_endpoint( $method );237 $method = strtolower( $method );238 $remove_readonly = false;239 240 if ( 'get' !== $method ) {241 $remove_readonly = true;242 }243 244 $swagger = self::json2swagger( $jschema, $remove_readonly );245 246 $this->set_data_prop( $method, $swagger );247 }248 }249 250 $response->set_data( $this->get_data() );251 252 return $response;253 }254 255 protected function get_data() {256 return $this->data;257 }258 259 protected function set_data( $data ) {260 $this->data = $data;261 262 return $data;263 }264 265 protected function set_data_prop( $key, $value ) {266 $this->data[ $key ] = $value;267 268 return $this->data[ $key ];269 }270 271 protected function get_input_data() {272 return $this->input_data;273 }274 275 protected function set_input_data( $value ) {276 $this->input_data = $value;277 278 return $value;279 }280 281 290 282 291 /** -
wp-connectr/trunk/src/PowerResource/Post/PowerResource.php
r3364617 r3374520 53 53 54 54 // Handle meta_compare parameter 55 if ( ! empty( $request['meta_compare'] ) ) {55 if ( ! empty( $request['meta_compare'] ) && !empty( $request['meta_key'] ) ) { 56 56 $compare = strtoupper( $request['meta_compare'] ); 57 57 $valid_compares = array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP', 'NOT REGEXP', 'RLIKE' ); … … 103 103 104 104 // Optional: compare 105 if ( ! empty( $clause['compare'] ) ) {105 if ( ! empty( $clause['compare'] ) && !empty( $clause['key'] ) ) { 106 106 $compare = strtoupper( $clause['compare'] ); 107 107 $valid_compares = array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP', 'NOT REGEXP', 'RLIKE' ); … … 113 113 114 114 // Optional: type 115 if ( ! empty( $clause['type'] ) ) {115 if ( ! empty( $clause['type'] ) && !empty( $clause['key'] ) ) { 116 116 $type = strtoupper( $clause['type'] ); 117 117 $valid_types = array( 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED' ); -
wp-connectr/trunk/src/PowerResource/User/PowerResource.php
r3364617 r3374520 50 50 51 51 // Handle meta_compare parameter 52 if ( ! empty( $request['meta_compare'] ) ) {52 if ( ! empty( $request['meta_compare'] ) && !empty( $request['meta_key'] ) ) { 53 53 $compare = strtoupper( $request['meta_compare'] ); 54 54 $valid_compares = array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP', 'NOT REGEXP', 'RLIKE' ); … … 100 100 101 101 // Optional: compare 102 if ( ! empty( $clause['compare'] ) ) {102 if ( ! empty( $clause['compare'] ) && !empty( $clause['key'] ) ) { 103 103 $compare = strtoupper( $clause['compare'] ); 104 104 $valid_compares = array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP', 'NOT REGEXP', 'RLIKE' ); … … 110 110 111 111 // Optional: type 112 if ( ! empty( $clause['type'] ) ) {112 if ( ! empty( $clause['type'] ) && !empty( $clause['key'] ) ) { 113 113 $type = strtoupper( $clause['type'] ); 114 114 $valid_types = array( 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED' ); -
wp-connectr/trunk/vendor/composer/installed.php
r3364617 r3374520 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' 77723d3724d37d6022dc6af8616a7acb81e869fa',6 'reference' => '015116831b089d7e65c4988e879333e596e4e972', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 44 44 'pretty_version' => 'dev-main', 45 45 'version' => 'dev-main', 46 'reference' => ' 77723d3724d37d6022dc6af8616a7acb81e869fa',46 'reference' => '015116831b089d7e65c4988e879333e596e4e972', 47 47 'type' => 'wordpress-plugin', 48 48 'install_path' => __DIR__ . '/../../', -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/ArgumentInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/ArgumentResolverInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/ArgumentResolverTrait.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/DefaultValueArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/DefaultValueInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/ArrayArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/BooleanArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/CallableArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/FloatArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/IntegerArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/ObjectArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/Literal/StringArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/LiteralArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/LiteralArgumentInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/ResolvableArgument.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Argument/ResolvableArgumentInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Container.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ContainerAwareInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ContainerAwareTrait.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Definition/Definition.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Definition/DefinitionAggregate.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Definition/DefinitionAggregateInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Definition/DefinitionInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/DefinitionContainerInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Exception/ContainerException.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Exception/NotFoundException.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Inflector/Inflector.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Inflector/InflectorAggregate.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Inflector/InflectorAggregateInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/Inflector/InflectorInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ReflectionContainer.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ServiceProvider/AbstractServiceProvider.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ServiceProvider/BootableServiceProviderInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderAggregate.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderAggregateInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/league/container/src/ServiceProvider/ServiceProviderInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/psr/container/src/ContainerExceptionInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/psr/container/src/ContainerInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/psr/container/src/NotFoundExceptionInterface.php
r3364617 r3374520 3 3 * @license MIT 4 4 * 5 * Modified by reenhanced on 19-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.5 * Modified by reenhanced on 07-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 6 6 */ 7 7 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-ctype/Ctype.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-ctype/bootstrap.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-ctype/bootstrap80.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-mbstring/Mbstring.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-mbstring/bootstrap.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/vendor_prefixed/symfony/polyfill-mbstring/bootstrap80.php
r3363457 r3374520 9 9 * file that was distributed with this source code. 10 10 * 11 * Modified by reenhanced on 17-September-2025 using {@see https://github.com/BrianHenryIE/strauss}.11 * Modified by reenhanced on 06-October-2025 using {@see https://github.com/BrianHenryIE/strauss}. 12 12 */ 13 13 -
wp-connectr/trunk/wp-connectr.php
r3364617 r3374520 27 27 * Plugin URI: https://www.reenhanced.com/products/wordpress-connector/ 28 28 * Description: Deeply integrates WordPress with Microsoft Power Automate. Microsoft Certified. Easily connect your site to Microsoft SharePoint, Dynamics, Teams or over 1000 other services. 29 * Version: 2. 2.029 * Version: 2.3.0 30 30 * Author: Reenhanced LLC 31 31 * License: GPL-2.0+ … … 34 34 * 35 35 */ 36 define( 'WP_CONNECTR_VERSION', '2. 2.0' );36 define( 'WP_CONNECTR_VERSION', '2.3.0' ); 37 37 38 38 /*
Note: See TracChangeset
for help on using the changeset viewer.