=== Connections Business Directory === Contributors: shazahm1@hotmail.com Donate link: https://connections-pro.com/ Tags: business directory, directory plugin, member directory, listings, staff directory, chamber of commerce, church directory, company directory, contact directory, listings directory, local business directory, address book Requires at least: 5.8 Tested up to: 6.3 Requires PHP: 7.0 Stable tag: 10.4.49 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html An easy-to-use directory plugin to create an addressbook, business directory, member directory, staff directory or church directory. == Description == [Showcase](https://connections-pro.com/showcase/) | [Documentation](https://connections-pro.com/documentation/contents/) | [Support](https://wordpress.org/support/plugin/connections/) | [Templates](https://connections-pro.com/templates/) | [Extensions](https://connections-pro.com/extensions/) Connections Business Directory is one of the [best business directory plugins available](https://wordpress.org/support/plugin/connections/reviews/?filter=5) for WordPress. Its simplicity in design and function, vast array of unique features and versatility are the reasons more and more people are turning to Connections Business Directory for their directory needs. You can use Connections to create a simple address book, maintain a staff or member directory and run a business directory or link directory. Connections Business Directory was built bottom up to be as configurable as possible while providing the features you need. Read on to learn about some of the best features Connections Business Directory has to offer... = Features = * Compatible with all themes including popular themes such as Avada, Divi, Enfold and OceanWP. * Compatible with most popular page builders such as Elementor, Beaver Builder, Brizy, Visual Composer, Fusion, SiteOrigin, etc... * Supports the WordPress Block (Gutenberg) Editor with the following blocks. * [Carousel Block](https://connections-pro.com/documentation/block/carousel/) :: Display your directory as a carousel. * [Directory Block](https://connections-pro.com/documentation/block/directory/) :: Use this block to embed your directory in a page. * [Team Block](https://connections-pro.com/documentation/block/team/) :: It's easy to use Connections to build your team page! Team Block is a full-featured block with multiple layout styles. While premium team plugins can set you back $20 or more, Team Block is free for all Connections users. * [Upcoming List Block](https://connections-pro.com/documentation/block/upcoming-list/) :: Use this block to display an upcoming list of anniversaries, birthdays or other events. * **[Highly rated support.](https://wordpress.org/support/plugin/connections/reviews/?filter=5)** * [Continuously updated](https://wordpress.org/plugins/connections/#developers) bringing you new features for free. * A growing selection of Content Blocks: * [Related Entries](https://connections-pro.com/connections-9-8-related-content-blocks/):: Display related Entries in a mobile responsive carousel. * [Nearby Entries](https://connections-pro.com/connections-9-9-nearby-entries-content-block/):: Increase discoverability of Entries by displaying nearby Entries in a mobile responsive carousel. * [Recently Viewed](https://connections-pro.com/connections-9-10-recently-viewed-entries-content-blocks/):: A list a directory Entries the user has recently viewed. * Last Viewed:: The last directory Entry the user viewed. * Frontend Entry Management:: Management options include a quick link to edit the Entry and a Delete option. * Entry Meta:: Display details such as when the Entry was added nad last modified and by whom. * Dashboard admin page where you can see at a glance today's anniversaries and birthdays as well as upcoming anniversaries and birthdays of members in your directory. * Multiple entry types from which to choose; such as individual, organization and family. The family entry type is unique to Connections. This entry type allows you to group individuals together as a family which makes Connections ideally suited for creating a church directory. * You control which entries are viewable to the public and which entries are private, viewable for logged-in users only. You can even have entries set as unlisted so only admins can view them. * **[Repeatable fields](https://connections-pro.com/documentation/add-entry/#Repeatable_Fields)** for address, phone numbers, email, IM, social media, links and dates which allow you to add as much or as little as you need for each business in your business directory. * Hierarchical (nested) **category support**. Businesses and members in your business directory can be added to any number of categories. * Include a biographical text for an individual member or business description for each entry in your business directory using an easy-to-use rich text editor. * You can easily add a business logo or photo of the staff member for each entry in your business directory or staff directory. The photo and logo images are fully responsive with **HiDPI (Retina) display support**. * **Scalable,** manage directories which [contain hundreds of thousands of entries](https://wordpress.org/support/topic/scales-to-at-least-250000-entries). * **[CSV Export](https://connections-pro.com/documentation/tools/#Export)** of addresses, phone numbers, email addresses and dates. * **[CSV Import](https://connections-pro.com/documentation/tools/#Categories-2)** of **nested** categories. * **[Role capability support](https://connections-pro.com/documentation/roles/)**. * [Displaying your business directory on the frontend is as simple as putting a shortcode on a page.](https://connections-pro.com/documentation/install/#Step_4_Displaying_your_Directory) Don't let this simplicity fool you. The shortcode provides a large array of options that are just too numerous to list. To learn more, [go here](https://connections-pro.com/documentation/plugin/shortcodes/). * **SEO.** Every entry in your business directory outputs following the [hCard](http://microformats.org/wiki/hcard) spec. Soon to be updated to following Schema.org. * [Supports the native sitemaps](https://connections-pro.com/connections-10-0-seo-sitemaps/) feature available in WordPress versions 5.5 and newer. * [Yoast SEO and Rank Math sitemaps integration.](https://connections-pro.com/connections-10-1-seo-sitemaps-integrations/) * **[Extensible](https://connections-pro.com/extensions/)** and developer friendly. * Robust **templating support** with the [Template Customizer](https://connections-pro.com/2015/07/27/feature-preview-template-customizer/). Several basic templates are provided to get you started with you business directory with many more [premium templates available](https://connections-pro.com/templates/) to really make your business directory shine. = Extensible = Here are some great **free extensions** (with more on the way) that enhance your experience with Connections Business Directory: **Utility** * [Toolbar](https://wordpress.org/plugins/connections-toolbar/) :: Provides quick links to the admin pages from the admin bar. * [Login](https://wordpress.org/plugins/connections-business-directory-login/) :: Provides a simple-to-use login shortcode and widget. * [Anniversary and Birthday Emails](https://wordpress.org/plugins/connections-business-directory-anniversary-and-birthday-emails) :: Add the ability to automatically send a customizable email to entries on their anniversary or birthday. **Custom Fields** * [Business Open Hours](https://wordpress.org/plugins/connections-business-directory-hours/) :: Add the business open hours. * [Certifications](https://wordpress.org/plugins/connections-business-directory-certifications/) :: Create and assign certifications to individuals in your directory. * [Local Time](https://wordpress.org/plugins/connections-business-directory-local-time/) :: Add the business local time. * [Facilities](https://wordpress.org/plugins/connections-business-directory-facilities/) :: Add the business facilities. * [Income Level](https://wordpress.org/plugins/connections-business-directory-income-levels/) :: Add an income level. * [Education Level](https://wordpress.org/plugins/connections-business-directory-education-levels/) :: Add an education level. * [Languages](https://wordpress.org/plugins/connections-business-directory-languages/) :: Add languages spoken. * [Hobbies](https://wordpress.org/plugins/connections-business-directory-hobbies/) :: Add hobbies. **Misc** * [Face Detect](https://wordpress.org/plugins/connections-business-directory-face-detect/) :: Applies face detection before cropping an image. **[Premium Extensions](https://connections-pro.com/extensions/)** * [Authored](https://connections-pro.com/add-on/authored/) :: Displays a list of blog posts written by the entry on their profile page. * [Contact](https://connections-pro.com/add-on/contact/) :: Displays a contact form on the entry's profile page to allow your visitors to contact the entry without revealing their email address. * [CSV Import](https://connections-pro.com/add-on/csv-import/) :: Bulk import your data in to your directory. * [Custom Category Order](https://connections-pro.com/add-on/custom-category-order/) :: Order your categories exactly as you need them. * [Custom Entry Order](https://connections-pro.com/add-on/custom-entry-order/) :: Allows you to easily define the order that your business directory entries should be displayed. * [Enhanced Categories](https://connections-pro.com/add-on/enhanced-categories/) :: Adds many features to the categories. * [Form](https://connections-pro.com/add-on/form/) :: Allow site visitor to submit entries to your directory. Also provides frontend editing support. * [Link](https://connections-pro.com/add-on/link/) :: Links a WordPress user to an entry so that user can maintain their entry with or without moderation. * [ROT13 Encryption](https://connections-pro.com/add-on/rot13-email-encryption/) :: Protect email addresses from being harvested from your business directory by spam bots. * [SiteShot](https://connections-pro.com/add-on/siteshot/) :: Show a screen capture of the entry's website. * [Widget Pack](https://connections-pro.com/add-on/widget-pack/) :: A set of feature rich, versatile and highly configurable widgets that can be used to enhance your directory. **[Premium Templates](https://connections-pro.com/templates/)** Connections Business Directory comes with a couple templates to get you started which fully support the [Template Customizer](https://connections-pro.com/2015/07/27/feature-preview-template-customizer/). In addition to these free templates there are many premium templates available to take your business directory the level visually. * [Circled](https://connections-pro.com/add-on/circled/) :: A simple but bold template specifically designed for displaying small team or staff directory. * [cMap](https://connections-pro.com/add-on/cmap/) :: Our most popular go to template for a business directory and chamber of commerce business directory, featuring full Template Customizer support. * [Excerpt Plus](https://connections-pro.com/add-on/excerpt-plus/) :: Simple design which features a directory entry name, photo thumbnail and excerpt. * [Gridder](https://connections-pro.com/add-on/gridder/) :: Another simple but bold template which displays the directory in a grid layout. Perfect for displaying a small team or staff directory * [Slim Plus](https://connections-pro.com/add-on/slim-plus/) :: Specifically designed to take up as little space on the page as possible. * [Tile Plus](https://connections-pro.com/add-on/tile-plus/) :: This template was purposely designed to display the directory in a grid or column layout. = Developer Friendly = * Open development on [Github](https://github.com/Connections-Business-Directory/Connections). * Access to **180 action hooks** and over **300 filters** ... and counting. * Term API. * Custom Metabox and Fields API. * Template Engine and API. * Fragment Cache API. * Log API (stateless and stateful). * Admin Notices API. * Email API. * Settings API. Connections Business Directory has a very flexible template engine. The loading of template and CSS are context aware. This means you could create specific templates that load when a user visits a specific entry, category, postal code and more. Templates and CSS overriding is very granular and update safe. Check out these links for the details: * [Custom Core CSS](https://connections-pro.com/2014/05/04/quicktip-custom-css/) * [Custom CSS for Templates](https://connections-pro.com/2014/05/07/quicktip-custom-css-templates/) * [Custom Template Override File](https://connections-pro.com/2014/06/04/quicktip-custom-template-override-files/) = Languages = Connections Business Directory has been embraced around the world and has been translated by its users in the following languages. * Arabic [60% Complete] * Catalan [52% Complete] * Croatian (Croatia) [22% Complete] * Danish [31% Complete] * Danish (Denmark) [29% Complete] * Dutch (Netherlands) [49% Complete] * Finnish [78% Complete] * French (France) [90% Complete] * German (Germany) [86% Complete] * Greek (Greece) [69% Complete] * Hebrew (Israel) [61% Complete] * Hungarian (Hungry) [52% Complete] * Italian (Italy) [58% Complete] * Norwegian [13% Complete] * Persian (Iran) [52% Complete] * Polish (Poland) [52% Complete] * Portuguese (Brazil) [77% Complete] * Portuguese (Portugal) [24% Complete] * Romanian (Romania) [69% Complete] * Russian (Russia) [40% Complete] * Serbian (Latin) [2% Complete] * Spanish (Latin America) [49% Complete] * Spanish (Mexico) [99% Complete] * Spanish (Spain) [99% Complete] * Sweden (Swedish) [96% Complete] * Turkish (Turkey) [58% Complete] == Credits: == * Connection Business Directory was based off LBB, ["Little Black Book"](https://wordpress.org/extend/plugins/lbb-little-black-book/); which was based on [Addressbook](https://wordpress.org/extend/plugins/addressbook/), both of which can be found in the Plugin Directory. * vCard class is a modified version by [Troy Wolf](http://www.troywolf.com/articles/php/class_vcard/). * Update Notice in plugin admin inspired by Changelogger 1.2.8 by [Oliver Schlöbe](https://wordpress.org/extend/plugins/changelogger/). * Screen Options class by [Janis Elsts](http://w-shadow.com/blog/2010/06/29/adding-stuff-to-wordpress-screen-options/). * $.goMap() jQuery Google Maps Plugin by [Jevgenijs Shtrauss](http://www.pittss.lv/jquery/gomap/). * MarkerClustererPlus jQuery Google Maps Marker Clustering Plugin by [Gary Little](http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/). * Validation jQuery plugin by [Jörn Zaefferer](http://bassistance.de/jquery-plugins/jquery-plugin-validation/). * Chosen jQuery plugin by [Harvest](https://github.com/harvesthq/chosen/). * qTip jQuery plugin by [Craig Thompson](http://craigsworks.com/projects/qtip2/). * Email and URL validation methods by [Gizmo Digital Fusion](http://wpcodesnippets.info/blog/two-useful-php-validation-functions.html). * Social media icons by [WPZOOM.com](http://www.wpzoom.com/wpzoom/500-free-icons-wpzoom-social-networking-icon-set/); license [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/). * iTunes icon by [Paul Robert Lloyd](http://paulrobertlloyd.com/); license [Attribution-ShareAlike 2.0 UK: England & Wales (CC BY-SA 2.0)](http://creativecommons.org/licenses/by-sa/2.0/uk/). * Podcast icon by [schollidesign](http://findicons.com/icon/94188/podcast_new); license GNU/GPL. * CSS theme and image used for the jQuery UI Datepicker by [helenhousandi](https://github.com/helenhousandi/wp-admin-jquery-ui). == Screenshots == 1. The many possible faces of your business directory. Connections Business Directory supports templates. This screenshot showcases (left to right) [Excerpt Plus](https://connections-pro.com/add-on/excerpt-plus/), [Circled](https://connections-pro.com/add-on/circled/), [Gridder](https://connections-pro.com/add-on/gridder/), [Tile Plus](https://connections-pro.com/add-on/tile-plus/) and [Slim Plus](https://connections-pro.com/add-on/slim-plus/). 2. Another screenshot showcasing the different templates that can be used to style your business directory. Left to right; [Circled](https://connections-pro.com/add-on/circled/), [cMap](https://connections-pro.com/add-on/cmap/) and [Gridder](https://connections-pro.com/add-on/gridder/). 3. The [Dashboard admin page](https://connections-pro.com/documentation/dashboard/). A snapshot of important information about the business directory. 4. The [Manage admin page](https://connections-pro.com/documentation/manage/). Here you can manage all the entries within the address book. 5. The [Add New Entry admin page](https://connections-pro.com/documentation/add-entry/). From here you can add new entries to the addressbook. 6. The [Categories admin page](https://connections-pro.com/documentation/categories/). Add as many categories as you wish to the directory. Categories do support parent/child relationships. 7. The [Templates admin page](https://connections-pro.com/documentation/templates/). Here you choose which template that the business directory should use when displaying the directory. 8. The [Settings admin page](https://connections-pro.com/documentation/settings/) where you can configure the business directory options. 9. The [Role and Capabilities admin page](https://connections-pro.com/documentation/roles/). Here you can assign which roles have which capabilities in viewing and managing the directory. 10. The [Tools :: Export admin page](https://connections-pro.com/documentation/tools/#Export) contains many CSV export tools to allow you to easily export the data from your business directory. 11. The [Tools :: Import admin page](https://connections-pro.com/documentation/tools/#Categories-2) allows you to quickly bulk import nested categories into your business directory. 12. In the event that you need support the [Tools :: System Information admin page](https://connections-pro.com/documentation/tools/#System_Information) contains all the information needs about your directory installation which can be easily and quickly shared. 13. Need to move the configuration of your business directory from one site to another? The [Tools : Settings Import/Export admin page](https://connections-pro.com/documentation/tools/#Settings_ImportExport) allows you to do it with zero fuss. This will even migrate the Template Customizer settings applied to template and any of the settings for the [premium extensions](https://connections-pro.com/extensions/). [Connections running on live websites can be found here.](https://connections-pro.com/showcase/) == Frequently Asked Questions == A comprehensive list of [FAQs can be found here.](https://connections-pro.com/faq/) = How do I install Connections? == [Installation instructions can be found here.](https://connections-pro.com/documentation/plugin/install/) Using the WordPress Plugin Search 1. Navigate to the `Add New` sub-page under the Plugins admin page. 2. Search for `connections business directory`. 3. The plugin should be listed first in the search results. 4. Click the `Install Now` link. 5. Lastly click the `Activate Plugin` link to activate the plugin. Uploading in WordPress Admin 1. [Download the plugin zip file](https://wordpress.org/plugins/connections/) and save it to your computer. 2. Navigate to the `Add New` sub-page under the Plugins admin page. 3. Click the `Upload` link. 4. Select Connections Business Directory zip file from where you saved the zip file on your computer. 5. Click the `Install Now` button. 6. Lastly click the `Activate Plugin` link to activate the plugin. Using FTP 1. [Download the plugin zip file](https://wordpress.org/plugins/connections/) and save it to your computer. 2. Extract the Connections Business Directory zip file. 3. Create a new directory named `connections` directory in the `../wp-content/plugins/` directory. 4. Upload the files from the folder extracted in Step 2. 4. Activate the plugin on the Plugins admin page. = How do I display the business directory on my site? = We have a [QuickStart](https://connections-pro.com/documentation/install/) available that'll walk you through the most basic setup. Basically all you need to do is, create a page, and add the `[connections]` shortcode and then start adding entries to your directory. = Will it work with my theme? = Connections Business Directory has been designed to work with any theme. = Is Connections Business Directory translation-ready? = Yes it is. Connections Business Directory comes with many user supplied translations. We use Transifex to manage translations. This service make it easy for us manage and easy for you to translate. To read more, see [this page](https://connections-pro.com/documentation/translation/). = Is Connections Business Directory compatible with WordPress Multisite? = Yes it is. However, do not Network activate Connections. Activate it on only the subsites that you wish to use Connections. = Is it possible to share entries with other sites within a WordPress Multisite installation? = Yes this is possible but there is a special setup required to do so. It is recommended this is done before added entries to your business directory. 1. Activate Connections Business Directory the primary site. 2. Add `define( 'CN_MULTISITE_ENABLED', FALSE );` to your `wp-config.php` file. **NOTE:** If you have added any entries to any of your subsites, that data will be lost as Connections will read the directory entry data from the primary site's database tables. 3. Activate Connections Business Directory on the subsites you wish to use Connections. = What are the requirements to run Connections? = * **WordPress version:** >= 2.3 * **PHP version:** >= 5.6.20 ( 7.1 is highly recommended) == Changelog == [Complete Changelog can be found here.](https://connections-pro.com/changelog/) = 10.4.48 08/25/2023 = * NEW: Introduce the `Email` field to the Fields API. * NEW: Introduce `Request\Redirect`. * NEW: Introduce the `account\register` REST API endpoint. * NEW: Introduce the Register User form. * TWEAK: Rename the callback for the `account/login` endpoint to `userLogin` for consistency in naming. * TWEAK: Move the confirmation message for the Request Reset Password form to the JSON response of the `account/request-reset-password` endpoint. * TWEAK: Refactoring of the client-side JS form processing to allow confirmation messages to be passed via the REST API response. * TWEAK: Refactor the core form submit event listener use of apiFetch, disabling the default parsing of API responses and use a private parse callback instead to ensure consistent request responses. * BUG: Initialize the correct form in the `account/login` REST endpoint for validation. * OTHER: Correct misspelling. * DEV: phpDoc corrections. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Parameter comment must end with a full stop. * DEV: Remove unnecessary inline var phpDoc comment. * DEV: Remove unnecessary import. * DEV: Update the `dist` files. = 10.4.48 08/10/2023 = * NEW: Bump tested to WordPress version 6.3. * NEW: Introduce the `account/reset-password` REST API endpoint. * TWEAK: Refactor the toggle weak password confirm to use a boolean vs using the weak password score when determining whether to display or not. * TWEAK: Add the default value and the field validation schema to the weak password confirmation. * TWEAK: Remove the `login` hidden field from the reset password form. * TWEAK: Set password reset key cookie after rendering the reset password form. * OTHER: Add punctuation to sentences. = 10.4.47 08/04/2023 = * NEW: Add support for the "Remember Me" checkbox in the login form. * NEW: Introduce the `account/request-reset-password` REST API endpoint. * NEW: Introduce the Account Request Reset Password form. * NEW: Introduce `Form::getHeader()` and `Form::getFooter()` so the sections of the form be overridden. * NEW: Introduce the Reset Password form. * TWEAK: Add support for `implicit/after` and `implicit/before` when defining field label positioning. * TWEAK: Minor CSS tweaks, adding gaps between fields and a space between a checkbox field and its label. * TWEAK: Set form description in the constructor. * TWEAK: Removed unused class property. * TWEAK: Add default styling for form confirmation and error messages. * TWEAK: Refactor the Form API JavaScript to support multiple forms on a page when attaching event listeners. * TWEAK: Remove unused `message` property from the base `Form` object. * TWEAK: Set the default value of the `header` and `footer` properties to be an empty string in the `Form` object. * TWEAK: Refactor `Form::getShortname()` to not use a static variable as each new form instance must return the current instance class shortname. * TWEAK: Add output buffering to the `Form` object actions. * TWEAK: Add action before and after rendering a form field in the `Form` object. * TWEAK: Add a space between a checkbox field and its label. * TWEAK: Add current user can check before registering an admin message. * TWEAK: Change filter name from `Connections_Directory/Form/{Form_Name}/Render/Field/Before` to `Connections_Directory/Form/{Form_Name}/Field`. * OTHER: Correct misspellings. * DEV: Remove @todo. * DEV: phpDoc corrections. * DEV: Update .eslintrc. * DEV: Update the `dist` files. = 10.4.46 07/07/2023 = * NEW: Introduce the Password form field. * NEW: Introduce the Button form element. * NEW: Introduce the Schema trait for form fields. * NEW: Introduce `Label::setLabelPosition()`. * NEW: Introduce `Attributes::addAttributes()`. * NEW: Introduce `Label::getText()`. * NEW: Introduce `Form` base class. * NEW: Introduce the Entry Moderate REST API Route. * NEW: Introduce the User Account REST API route with the login endpoint and a login form utilizing the Form/Fields API for form generation and field schema validation during the REST request. * NEW: Introduce `_::getClassShortName()`. * NEW: Introduce `_::callstack()`. * TWEAK: Remove unnecessary direct access check. * TWEAK: Remove deprecated use of `cnArray`. * TWEAK: Qualifier can be replaced with an import. * TWEAK: Remove error log function call. Should not be in production code. * TWEAK: Rename class `CN_REST_Autocomplete_Controller` to `Connections_Directory\API\REST\Endpoint\Autocomplete`. * TWEAK: Rename file `class.cn-rest-autocomplete-controller.php` to `Autocomplete.php`. * TWEAK: Move REST API related files into the `API/REST` folder and update the namespace to match. * TWEAK: Update hook names to match namespace. * TWEAK: Capitalize the `api` folder name. * TWEAK: Remove unused `api` property from `Connections_Directory`. * TWEAK: Change the `$label` property in the Label trait to public, so the methods for the `Field_Label` form field are accessible. * TWEAK: Add return type declaration to `Label::getLabelHTML()`. * TWEAK: Add declare strict types to `Label`. * TWEAK: Add declare strict types to `Field`. * TWEAK: Add declare strict types to `Input`. * TWEAK: Add declare strict types to `Attributes`. * TWEAK: Add declare strict types to `Label`. * TWEAK: Add declare strict types to `Select`. * TWEAK: Add declare strict types to `Text`. * TWEAK: Add declare strict types to `Autocomplete`. * TWEAK: Add the `Schema` trait to the `Input` form field. * TWEAK: Remove the `AutoComplete` attribute from the `Select` form field. * TWEAK: Add the `Autocomplete` attribute to the `Text` form field. * TWEAK: Add constructor to the `Text` form field. * TWEAK: Refactor the `Input` form field to initiate its properties using the constructor instead fgo the create method. * TWEAK: Refactor `Field` constructor and create method to require the properties parameter. * TWEAK: Remove unused variable. * DEV: phpDoc updates. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Removed unused commented out code. * DEV: Add function return type. * DEV: Add parameter type declaration. * DEV: Remove unused import. * DEV: Add dev @todo. * DEV: Add commented out code required for testing CSV exports. * DEV: Array alignment. = 10.4.45 06/08/2023 = * TWEAK: Remove unnecessary direct access check. * TWEAK: Add the `detailed` query argument schema to the Countries collection parameters. * TWEAK: Add `code` query argument schema to the Countries collections endpoint parameters. * TWEAK: Remove deprecated use of `cnArray`. * TWEAK: Rename class `CN_REST_Countries_Controller` to `Connections_Directory\API\REST\Endpoint\Countries`. * TWEAK: Rename file `class.cn-rest-countries-controller.php` to `Countries.php`. * TWEAK: Refactor how REST Routes and Endpoints are registered to optimize loading using a trait to reduce code duplication. * DEV: phpDoc updates. * DEV: Add return type declaration. = 10.4.44 06/05/2023 = * NEW: Add the `exclude`, `include`, `offset`, `categories`, and `categories_exclude` parameters to `Entry::get_collection_params()`. * TWEAK: Remove instances of using parameter default value. * TWEAK: Remove unused and unnecessary parameter from `Entry::get_entries()`. * TWEAK: Add the format parameter to the email and social schema. * TWEAK: Deprecate the `id` parameter in favor of the `include` parameter. The `id` parameter will be used as the default parameter value if set. * TWEAK: Deprecate the `category_in` parameter in favor of the `tax_relation` parameter. The `category_in` (default `false`) will be used as the default parameter value if set. * TWEAK: Rename action from `Connections_Directory/API/REST/Entry/After_Update` to `Connections_Directory/API/REST/Controller/Entry/Update/After`. * TWEAK: Rename action `rest_delete_cn_entry` to `Connections_Directory/API/REST/Controller/Entry/Delete/After`. * TWEAK: Rename action from `rest_prepare_cn_entry` to `Connections_Directory/API/REST/Controller/Entry/Prepare_Item/Response`. * TWEAK: Add deprecated action/filter for renamed hooks. * TWEAK: Remove direct access check. * TWEAK: Remove deprecated use of `cnArray`. * TWEAK: Rename `class.settings.php` to `Settings.php`. * TWEAK: Permit the admin role to utilize an expanded range of HTML tags with term descriptions. * TWEAK: Rename the REST Settings API filters. * BUG: Correct the namespace name for the Settings REST API Route. * OTHER: Correct misspellings. * DEV: Remove unused commented out code. * DEV: Rename variable to make it more clear of its purpose. * DEV: Add a todo. * DEV: Remove use of unnecessary local variable. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Move file phpDoc to file head. * DEV: Correct placement of IDE `@noinspection` tag. * DEV: phpDoc corrections. * DEV: phpDoc updates. = 10.4.43 05/24/2023 = * NEW: Introduce `CN_REST_Entry_Controller::_sanitize()` and `CN_REST_Entry_Controller::_validate()`. * NEW: Introduce the `Connections_Directory/API/REST/Controller/Entry/Get_Items/Arguments` filter. * TWEAK: Remove unnecessary local variables. * TWEAK: Make `cnEntry_Action::copyImages()` public. * TWEAK: Assign local variable to object property and then return. * TWEAK: Tweak string concatenation. * TWEAK: Minor optimization to check for the existing entry slugs within similar slugs before creating an indexed iteration of the slug. * TWEAK: If the supplied entry slug is the same as th existing entry slug, do not attempt to a unique slug. * TWEAK: Remove unnecessary parentheses. * TWEAK: Replace deprecated `cnArray::get()` with `_array::get()`. * TWEAK: Type cast is redundant. * TWEAK: Remove use of deprecated `cnOutput` object. Replaced with `cnEntry_HTML`. * TWEAK: Move REST controllers classes to the autoloader. * TWEAK: Move the REST register routes hook into `Connections_Directory::hooks()`. * TWEAK: Rename `cnAPI` to `\API\REST\Routes`. * TWEAK: Cache the result of `CN_REST_Entry_Controller::get_item_schema()`. * TWEAK: Replace deprecated `cnFormatting::toBoolean()` with `_format::toBoolean()`. * TWEAK: The value returned from `cnEntry::getStatus()` does not require sanitization each time it is called. * TWEAK: Improve validation in `cnEntry::setStatus()`. * TWEAK: Minor optimization in `cnEntry_Action::process()`. Call `$entry->getStatus()` only once instead of multiple times. * TWEAK: Refactor `cnEntry_Action::copyImages()` to support whether to copy the image variations. * TWEAK: First pass at implementing update entry item via a REST API request. * TWEAK: Rename class `CN_REST_Entry_Controller` to `Connections_Directory\API\REST\Endpoint\Entry`. * TWEAK: Rename file `class.cn-rest-entry-controller.php` to `Entry.php`. * BUG: Ensure the directory homepage base URL is set when returning the REST API request results. * OTHER: Correct misspellings. * DEV: phpDoc corrections. * DEV: phpDoc updates. * DEV: Remove unused commented out code. * DEV: When a multi-item array uses associative keys, each value should start on a new line. * DEV: Add method and return types. * DEV: Correct code formatting. * DEV: Fix phpDoc alignment. = 10.4.42 05/08/2023 = * NEW: Introduce `Shortcode\Get_HTML`. * TWEAK: Move `cnShortcode_Connections` to the deprecated folder. * TWEAK: The replacement property should be optional in `_deprecated::_file()`. * TWEAK: No need to register the `[cn-directory]` shortcode with WP since it is only used in the view controller. * TWEAK: Add the private tag property to `Entry_Directory` and pass it to the filters. * TWEAK: Utilize `\Shortcode\Entry_Directory` instead of the deprecated `cnShortcode_Connections::shortcode()` method when rendering the directory. * TWEAK: Refactor deprecated `cnShortcode_Connections::shortcode()` to call its replacement `Shortcode\Entry_Directory`. * TWEAK: Utilize `Shortcode\Get_HTML` in all shortcode objects to reduce code duplication. * TWEAK: Remove usage of deprecated `cnShortcode::clearFilterRegistry()`. * DEV: Add file header. * DEV: Optimize imports. * DEV: Add method return type. * DEV: phpDoc corrections. = 10.4.41 05/02/2023 = * NEW: Introduce the `\Shortcode\Entry_Directory` shortcode; the eventual replacement code for `cnShortcode_Connections::shortcode()`. * NEW: Introduce `\Shortcode\Directory_View` and use it as teh callback for the `[connections]` shortcode. * TWEAK: Remove the experimental `[cn_thumb]` and `[cn_thumbr]` shortcodes from the plugin, moving them to a separate plugin. * TWEAK: Remove experimental `[cn-mapblock]` shortcode. * TWEAK: Remove `cnShortcode::register()` and register shortcodes in `Connections_Directory::hooks()` on the `init` hook to consistent with current coding standards. * TWEAK: Change folder capitalization from `includes/shortcode` to `includes/Shortcode` to match current naming conventions. * TWEAK: Remove use of deprecated methods in `cnTemplate_Customizer::controlStrings()`. * TWEAK: Change `Entry::prepareAttributes()` from public to private. * TWEAK: Replace deprecated `cnShortcode_Connections::shortcode()` in `cnDashboardMetabox::recent()`. * BUG: Ensure `cnScript::maybeEnqueueStyle()` returns true when the `[cn-entry]` shortcode is used. * BUG: Pass the correct attributes in `cnTemplatePart::loadTemplateError()` when initiating `Upcoming_List`. * BUG: The `connectionsEntryList()` method (template tag) should call `cnShortcode_Connections::view()` not `cnShortcode_Connections::shortcode()`. * OTHER: Correct misspellings. * DEV: phpDoc corrections. * DEV: Correct inline comment. * DEV: Remove commented out debug code. * DEV: phpDoc updates. * DEV: Deprecate `cnShortcode_Connections::shortcode()`. = 10.4.40 04/24/2023 = * NEW: Introduce `Entry\Functions::getPhone()` and `Entry\Functions::getEmail()`. * NEW: Add a copy to the clipboard button to the system info admin screen. * NEW: Introduce the `cn_entry_output_category_items_class` filter. * NEW: Introduce the `Do_Shortcode` trait. * NEW: Introduce `_fragment::exists()`. * NEW: Introduce `_fragment::__toString()`. * NEW: Introduce `\Shortcode\Upcoming_List`. * NEW: Introduce `\Template\Hook_Transient`. * TWEAK: Remove instance of deprecated `cnFormObjects::open()`. * TWEAK: Update the community-supplied Members template to function without errors or warnings before moving it to a separate add-on. * TWEAK: Remove the legacy community Members template. * TWEAK: Add `trailingslashit()` to `cnTemplate::getPath()` and `cnTemplate::getURL()`. * TWEAK: Update the accessed directly validation to be consistent with current coding standards. * TWEAK: Remove the use of deprecated `cnHTTP::verifySSL()`. * TWEAK: Trim system info text to remove leading/trailing whitespace. * TWEAK: Add term slug to item class names. * TWEAK: Update `\rinvex\country` library to version 9.0. * TWEAK: Remove use of deprecated `cnHTML::attribute()` function in `cnTemplatePart::returnToTop()`. * TWEAK: Add parameter type declaration to `cnTemplatePart::returnToTop()`. * TWEAK: Move the `class.geo.php` file to the `/includes/geo/` folder. * TWEAK: Remove the deprecated `cnGeo::AO_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::BG_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::CA_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::AU_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::BD_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::BR_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::GB_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::ES_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::HK_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::HU_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::CN_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::NZ_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::ID_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::IN_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::IR_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::IT_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::JP_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::MX_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::MY_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::NP_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::PE_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::ZA_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::TH_Regions()` method. * TWEAK: Remove the deprecated `cnGeo::TR_Regions()` method. * TWEAK: Add return type declaration. * TWEAK: Remove the abandoned and experimental qTip shortcodes and templates. * TWEAK: Call `cnShortcode_Connections::shortcode()` instead of the template tag `connectionsEntryList()` when rendering the recently added/edited dashboard widgets. * TWEAK: Utilize `\Shortcode\Upcoming_List` in the "upcoming" admin dashboard widgets and the Upcoming Editor Block. * TWEAK: Replace the `[upcoming_list]` shortcode callback with `\Shortcode\Upcoming_List`. * TWEAK: Move the `connectionsEntryList()` and `connectionsUpcomingList()` template tags to the global functions.php file. * TWEAK: Remove the `inc.shortcodes.php` file as the template tags and the `[upcoming_list]` shortcode callback are no longer utilized, and the file no longer contains any code. * TWEAK: The `\Shortcode\Entry` class does not need to extend the `cnShortcode` class. * TWEAK: First pass at restructuring `\Shortcode\Entry` to match current coding standards. * TWEAK: Second pass at restructuring `\Shortcode\Entry` to match current coding standards. * TWEAK: Remove use of deprecated `cnHTML::attribute()` methods on Template's admin page. * TWEAK: Remove use of deprecated method `cnHTML::attribute()` in `cnTemplatePart::updated()`. * TWEAK: Add class properties to remove "Creation of dynamic property" PHP deprecation notices. * TWEAK: Extend `cnTemplatePart` with `stdClass` to remove "Creation of dynamic property" deprecation notices. * TWEAK: Remove deprecated dynamic action hook `cn_action_card-{$template->slug}`. * TWEAK: Do not set dynamic object property to prevent a PHP deprecation notice. * TWEAK: Move a set of actions from `Upcoming_List::generateHTML()` to `Upcoming_List::loadTemplate()`. * TWEAK: Minor tweak to coding style when applying filters in `\Shortcode\Upcoming_List`. * TWEAK: No need to initiate a new variable to hold the instance of `Connections_Directory` in `cnTemplateFactory::loadTemplate()`. * TWEAK: Remove unused commented-out code. * TWEAK: The `\Shortcode\Conditional_Content` class does not need to extend the `cnShortcode` class. * TWEAK: The `\Shortcode\cnThumb` class does not need to extend the `cnShortcode` class. * TWEAK: The `\Shortcode\cnThumb_Responsive` class does not need to extend the `cnShortcode` class. * TWEAK: The `\Shortcode\cnShortcode_Connections` class does not need to extend the `cnShortcode` class. * TWEAK: Remove unnecessary local variable in `cnShortcode::removePBR()`. * TWEAK: Deprecate `cnShortcode::view()` and move to `cnShortcode_Connections::view()`. * TWEAK: Update `\Blocks\Directory::render()` to utilize `cnShortcode_Connections::view()` instead of the deprecated `cnShortcode::view()` method. * TWEAK: Deprecate both `cnShortcode::addFilterRegistry()` and `cnShortcode::clearFilterRegistry()`. Replaced with `\Template\Hook_Transient`. * TWEAK: First pass at integrating the advanced search into the base plugin. * BUG: Increment and decrement operators must be bracketed when used in string concatenation. * BUG: Fix the `wp_remote_post()` check in the system info. * BUG: Add noop callback to Google Maps API parameters. * BUG: Use the correct Spanish translation for Spain. It seems the Catalan translation was used. * BUG: Correct bug in `_fragment::clear()` where, in some cases, the fragment cache would not be cleared. * BUG: Do not remove the `cn_list_atts_permitted-{$templateSlug}` `cn_list_atts-{$templateSlug}` filters in the `[upcoming_list]` shortcode. * BUG: Correct bug in `pre_do_shortcode_tag` filter callback` Do_Shortcode::maybeDoShortcode()` that caused filter to return incorrectly. * OTHER: Correct misspellings. * DEV: phpDoc corrections. * DEV: phpDoc updates. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Correct minor phpcs whitespace issues. * DEV: The CASE body must start on the line following the statement. * DEV: Disable Class name must begin with a capital letter, and the Class name is not valid phpcs issues. * DEV: Each array item in a multi-line array declaration must end in a comma. * DEV: Parameter comment must end with a full stop. * DEV: Visibility must be declared on the method. * DEV: There must be exactly one blank line after the file comment. * DEV: No space found before comment text. * DEV: Remove unused commented-out code. * DEV: Correct code tab indentation. * DEV: Bump tested to version 6.2. * DEV: Add @todo in code. * DEV: Add phpDoc to class properties. * DEV: Add an inline comment regarding hyphens in shortcode tag names. * DEV: Add @todo to make a note to move where two actions are initiated. * DEV: Add file header. * DEV: Add `cnShortcode` class phpDoc. * DEV: Remove unnecessary line returns. = 10.4.39 03/06/2023 = * NEW: Introduce the `Search` and `Submit` fields to the Fields API. * NEW: Introduce polyfill for `ctype_digit()`. * NEW: Introduce `Request::isSearch()`. * NEW: Introduce `Request::hasQuery()`. * NEW: Introduce the "Tests" Tools tab and a tool to test `wp_remote_(get|post)()` requests. * TWEAK: Deprecate the `cn_loaded` action hook in favor of the `Connections_Directory/Loaded` action hook triggered on the `plugins_loaded` action hook to have it run reliably, as it is possible for add-ons to be loaded by WP before Connections is loaded. * TWEAK: Add additional core WordPress constants to the System Info tool. * TWEAK: Rename a variable to make it more clear as to the intended function of its value. * TWEAK: Cleanup code `cnTemplatePart::formOpen()`. * TWEAK: Add deprecated filter for `cn_form_open_action`. * TWEAK: Remove deprecated `cnTemplatePart::characterIndex()` method. * TWEAK: Refactor `Conditional_Content::isSearch()` to utilize `Request::isSearch()` to remove code duplication. * TWEAK: Only add the leading space to the `label` element if it has attributes. * TWEAK: Add support for implicit label position for a form field. * TWEAK: Set the various image quality arguments to default to `null` from `82` so the code WP Image Editor default image quality will be used. * TWEAK: Include the `Partial` folder when locating template partials. * TWEAK: Allow upper and lowercase file names. * BUG: The character index and section heading should not be displayed when performing a keyword query request. * BUG: Ensure image width is a whole number When processing. * BUG: The `$params` argument should be extracted when loading template parts. * OTHER: Correct misspellings. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: phpDoc corrections. * DEV: phpDoc updates. * DEV: Removed unused commented out code. = 10.4.38 02/02/2023 = * TWEAK: Pass `$entry` object in the `cn_list_row_class` filter. * TWEAK: Rename `cn_submit_search_form` action to `Connections_Directory/Shortcode/View/Search`. = 10.4.37 01/20/2023 = * NOTICE: Minimum required PHP version is 7.0. * SECURITY: Add missing argument sanitization and escaping when outputting THE `[connections]` shortcode content. * SECURITY: Add escaping to the `[upcoming_list]` shortcode output. * TWEAK: Remove duplicate code from the `[upcoming_list]` shortcode to remove end of line characters. * DEV: Update copyright year in file header. = 10.4.36 01/10/2023 = * NOTICE: Bump min PHP version to 7.0. * TWEAK: Update the dashboard news feed to URL to `https`. * TWEAK: Simplify return value logic. * TWEAK: Bump minimum support version of Yoast SEO to 15.2. Remove use of deprecated method `WPSEO_Utils::get_title_separator()`. * TWEAK: Add function exists check for Yoast SEO before checking if the `get_title_separator()` method exists. * BUG: Correct the classname check. * BUG: Ensure the correct `update_term_cache()` function is called to prevent cache pollution. * OTHER: Correct misspellings. * DEV: Move polyfill functions to separate files and include them as dependencies. * DEV: phpDoc corrections. = 10.4.35 12/15/2022 = * NEW: Introduce `_validate::isStringNotEmpty()`. * NEW: Introduce `cnAddress::setType()` and `cnAddress::getName()`. * NEW: Introduce `_sanitize::integer()`. * NEW: Introduce the `Connections_Directory/Admin/Page/Tools/Tab/Import` action. * TWEAK: Ensure strings are passed to `str_pad()` and `strlen()` to prevent deprecation notifications in PHP >= 8.1. * TWEAK: Set the default value of Field\Rich_Text and Field\Textarea to empty strings instead of null. * TWEAK: Return empty string and not null if country name is not set. * TWEAK: Remove unnecessary usages of `cnSanitize::field() "raw" in `cnEntry_Collection_Item`. * TWEAK: Add validation and formatting to several methods in `cnEntry_Collection_Item`. * TWEAK: Add validation to setting methods in `cnAddress` before setting object properties. * TWEAK: Add validation to `cnEntry_Collection_Item::setVisibility()` to ensure only valid types can be set. * TWEAK: Refactor `cnAddress::__construct()` to use object setters. * TWEAK: Remove the unused `cnAddress::getTypes()` method. * TWEAK: Utilize `_sanitize::integer()` instead of `cnSanitize::integer()` in `cnSanitize::string()`. * TWEAK: Refactoring of `cnEntry::getOrder()` and `cnEntry::setOrder()` to default to `0` and utilize `_sanitize::integer()`. * TWEAK: Refactor `cnMetabox_Process::sanitize()` to remove use of deprecated `cnSanitize::string()`. * TWEAK: Refactor `cnSanitize::field()` to remove use of deprecated `cnSanitize::string()`. * TWEAK: Remove unused deprecated `cnSanitize::integer()` method. * TWEAK: Refactor `_validate::isInteger()` and `_validate::isPositiveInteger()` to ensure the correct result across additional inputs. * TWEAK: Remove usages of `cnSanitize::field()` with the `raw` context. * TWEAK: Move the rendering of the postbox to bulk import categories to the new `Connections_Directory/Admin/Page/Tools/Tab/Import` action hook. * DEV: Remove unused commented out line of code. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: phpDoc corrections. * DEV: Deprecated `cnSanitize::string()`. == Upgrade Notice == = 10.4.35 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 5.6.20 PHP version >= 7.4 recommended. = 10.4.36 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.37 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.38 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.39 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.40 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.41 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.42 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.43 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.44 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.45 = It is recommended to back up before updating. Requires WordPress >= 5.6 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.46 = It is recommended to back up before updating. Requires WordPress >= 5.8 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.47 = It is recommended to back up before updating. Requires WordPress >= 5.8 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.48 = It is recommended to back up before updating. Requires WordPress >= 5.8 and PHP >= 7.0 PHP version >= 7.4 is recommended. = 10.4.49 = It is recommended to back up before updating. Requires WordPress >= 5.8 and PHP >= 7.0 PHP version >= 7.4 is recommended.