
ACF-Plugin Version 1.7.1.7
Version 1.7.1.7 marks a significant upgrade for the ACF plugin. Although still in production, it has crossed many hurdles and is nearing completion.
- Release Date: It is already released, Windows version is in beta, but all the tests we have done so far show it works excellent.
- Pricing: $89, beta-testers can obtain a license for 50% of that price, until November, 15. 2024.
- Plugin Testers: Already licensed for the plugin? You can join our Beta tester program to access early versions of the plugin.
Hardware and Software Compatibility
Version 1.7.1.7 is a universal plugin, compatible with both Mac Intel and Mac ARM (M1, M2, M3) machines, as well as Windows versions. It seamlessly integrates with all FileMaker versions from 12 onwards. For macOS users, it is compatible with macOS 12.3 and later, including the current macOS version. Windows users can enjoy support for Windows 8, Windows 10, and Windows 11, in addition to Windows Server operating systems.
Document Service Functions
The Document service functions have undergone a complete rewrite to enhance stability and flexibility. They are now accessible from within the ACF language in addition to plugin calls made from FileMaker.
MySQL Functions
The MySQL functions have been completely overhauled, ensuring backward compatibility with the previous plugin version (1.6.3) while introducing a range of new features.
- Placeholders in SQL: The MySQL_query command now accepts placeholders (?) in queries, where additional parameters will replace the placeholders before query execution. Parameter data types determine the formatting applied to variables, such as quotes or date element formatting for SQL.
- Multiple SQL Statements in One Query: You can include multiple SQL statements in a single query, separated by semicolons. This feature facilitates constructs where you set SQL variables before executing the primary query, among other scenarios.
FileMaker SQL Functions
The FileMaker SQL Functions now support placeholder logic in SQL statements, allowing additional parameters to fill placeholders. Variable data types determine the formatting used, making SQL statements more versatile and dynamic.
date from, to = now();
from = to - 7;
string col_sep = "||", row_sep = "\r";
string bb = ExecuteSQL("Select Invoice_no, Payable_amounth FROM Invoices
WHERE Invoice_Date BETWEEN = :from and :to", col_sep, row_sep);
// Before executing this, the final SQL will be:
// Select Invoice_no, Payable_amounth FROM Invoices
// WHERE Invoice_Date BETWEEN DATE '2023-10-31' and DATE '2023-11-06'
New Datatype: XML_Object
Introducing functions that simplify the creation and manipulation of XML documents, as well as parsing XML documents. You can effortlessly build a document, convert it to a string for saving or transmitting, and parse incoming XML documents to extract data for integration into your database or any other purpose.
Example:
Function ExampleFunction()
XML xmlvar;
xmlVar["MyRootNode.User"] =
XML("Name","John Doe","Address","Road 2");
// Assign attributes to the XML...
XMLattributes(xmlVar["MyRootNode"], XML("xmlns:ns","https://mynamespace.com/test/");
XMLattributes(xmlVar["MyRootNode.User"], XML("UserID","20031");
print string(XmlVar);
return string(XmlVar);
End
print result;
// This will produce
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MyRootNode xmlns:ns="https://mynamespace.com/test/">
<User UserID="20031">
<Name>John Doe</Name>
<Address>Road 2</Address>
</User>
</MyRootNode>
New Datatype: JSON_Object
We've introduced functions for effortlessly creating JSON objects to store structured or unstructured data. You can add or extract elements from a JSON object as needed. The implementation is similar as for XML.
New Commands in the ACF Language
We've added several new commands to the ACF language, empowering the plugin and reducing its dependency on other FileMaker solution plugins.
Cryptography Functions
This version introduces a range of cryptography functions in addition to those provided in 1.6.3.
- Encrypt (data, key, algorithm, Return-encoding): Encrypt data using various algorithms, with return types such as base64, Base32, Hex, or raw data.
- Decrypt (Encrypted data, key, algorithm, data encoding): Decrypt data using various algorithms, with data encoding options like Base64, Base32, Hex, or raw data.
- Hashing Algorithms: Generate message digests using MD5, SHA1, SHA2, SHA224, SHA256, SHA384, SHA512, and truncated forms like SHA512-224 and SHA512-256. Output formats can be base64, hex, or raw data.
- From_Base64 (base64 data) and To_Base64 (raw data): Easily convert between Base64 formatted data and text/binary data, with the ability to produce standard base64 or URL-compatible base64 data.
- From_Base32 (base32 data) and To_Base32 (raw data): Convenient conversion between Base32 formatted data and text/binary data.
- OTP Functions: Implement One-Time Passwords (OTP) in your solution. Given a secret, the function generates 6-digit OTPs, ideal for use in a login procedure with an Authenticator app on a smartphone.
Communication over the Internet
- HTTP_Get (URL): Retrieve content from a website or web service.
- HTTP_Post (URL, post_data): Send data to a web service using HTTP POST.
- HTTP Authentication: Functions for performing HTTP Authentication with web services that require it.
Planned dfor 1.7.1 - Send E-mail Functions: A suite of functions for sending emails via SMTP or IMAP servers. - Check E-mail: Retrieve emails from POP or IMAP mailboxes, including messages, attachments, and more. - FTP-Server Connection: Send and retrieve files using the FTP protocol. - SFTP-Server Connection: Send and retrieve files using the SFTP protocol.
Together with the XML_Object and JSON_Object datatypes, and the HTTP methods, this version provides comprehensive functionality for accessing services via REST-API or SOAP-API.
Other Functions
- System Command: Execute system commands (command line). (1.7.1)
- Generate QR-Code/Barcode Image: Create QR code or barcode images directly from the ACF language, suitable for use with OTP functions or product label printing.
- Set Text to PasteBoard / Get Text from Pasteboard: Functions that facilitate interactions with the pasteboard. For example, allowing users to copy content from read-only fields for use elsewhere. (1.7.1)
Bitwise Operators
We've introduced a range of bitwise operators to the language, enhancing its capabilities.
1.7.1
- Bitwise AND:
int x = variable1 & variable2;
- Bitwise OR:
x = variable1 | variable2;
- Bitwise XOR:
x = variable1 ^^ variable2;
- Bitwise NOT:
x = !!variable1
- This inverts all the bits invariable1
. - Shift Left Operator:
int x = variable1 << 8;
shifts the bits invariable
8 positions to the left. - Shift Right Operator:
int x = variable1 >> 8;
shifts the bits invariable1
8 positions to the right.
Example:
// Extract the first four bytes from a string into an integer.
int i;
string s = "ABCD";
int variable1 = 0;
for (i = 1, 4)
variable1 = variable1 << 8 | ascii(substring(s, i, 1));
end for
// variable1 now contains the four letters in 's'.
// Bits 0-31: A in bits 31-24, B in bits 23-16, C in bits 15-8, and A in bits 7-0.