=== Connections Business Directory === Contributors: shazahm1@hotmail.com Donate link: https://connections-pro.com/ Tags: address book, business directory, chamber of commerce, church directory, company directory, contact directory, directory, listings directory, local business directory, link directory, member directory, staff directory Requires at least: 5.3 Tested up to: 5.9 Requires PHP: 5.6.20 Stable tag: 10.4.13 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 different 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/quickstart/) available that'll walk you thru 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:** >= 4.4 * **PHP version:** >= 5.2.4 ( >= 7.0 is highly recommended) * **NOTE:** Upgrading from version 0.6.1 and newer only, is supported. Previous version must upgrade to 0.6.1 before upgrading to the current version. == Changelog == [Complete Changelog can be found here.](https://connections-pro.com/changelog/) = 10.4.13 02/07/2022 = * TWEAK: Update the Upcoming Block `index.js` file to utilize the `block.json` for registering the block metadata and split out the edit and save callbacks to separate files for easier maintainability. * TWEAK: When registering the Carousel and Team Blocks pass the `style` parameter as strings instead of arrays. * BUG: Correct default for no results when registering the Upcoming Block. * OTHER: Update URL to PHP data interval formatting. * OTHER: Rename onChange event variables, so they do not conflict with previously declared variables of the same name. * OTHER: Add "translators" comment. * DEV: Apply eslinit and wp-prettier to the Upcoming Block `index.js` file. * DEV: Apply Prettier to `.eslintrc`. * DEV: Add `allowedTextDomain` to rules for `@wordpress/i18n-text-domain` in `.eslintrc`. * DEV: Add `@wordpress/npm-package-json-lint-config`. * DEV: phpDoc updates. * DEV: Update Composer required PHP version. * DEV: Add `johnpbloch/wordpress-core-installer` to `allow-plugins` in `composer.json`. * DEV: Update dist files. = 10.4.12 02/02/2022 = * TWEAK: Apply eslinit and wp-prettier to the Directory Block `index.js` file. * TWEAK: Rename `onChange` event variables, so they do not conflict with previously declared variables of the same name. * TWEAK: Update the Directory block to break out the edit and save callbacks to improve maintenance. * BUG: Change `isEditorPreview` default block value from `true` to `false`. * BUG: On mobile, set the default option to disabled/hidden, so it is not selectable by the user when using the mobile OS native select control. * BUG: Add missing return on error when processing a logo image. * DEV: Format `webpack.config.js` using prettier. * DEV: Adjust .eslintrc config to add path to babel config. * DEV: Update npm packages. * DEV: Correct `.editorconfig` syntax error. * DEV: Add Prettier config. * DEV: Add stylelint and config. * DEV: phpDoc corrections. * DEV: Switch from Prettier to WP_Prettier. * DEV: Remove the `eslintConfig` key from `package.json` since the config exists in `.eslintrc`. * DEV: Update dist files. = 10.4.11 01/28/2022 = * NEW: Introduce `Content_Block::isActive()`. * NEW: Introduce `_::isWPVersion()`. * NEW: Introduce `cnScript::getAssetMetadata()`. * NEW: Introduce `Carousel::registerScripts()` and `Carousel::registerStyles()` and enqueue block assets when required. * NEW: Introduce `Team::registerStyles()` and enqueue block assets when required. * TWEAK: Enqueue Content Block scripts only when displayed and not globally. * TWEAK: Change `cnScript::maybeEnqueueStyle()` from `private` to `public`. * TWEAK: Check of the current queried object id is the directory homepage id in `cnScript::maybeEnqueueStyle()`. * TWEAK: Remove registration of old/out of date admin/frontend RTL styles. * TWEAK: Rename script handle for the Management Content Block for consistency. * TWEAK: Change the action hook in which the Management Content Block script is registered. * TWEAK: Update the Last Viewed and Recently Viewed Content Blocks to register their own assets on enqueue them only when required. * TWEAK: Remove the global enqueueing of block assets. * TWEAK: Enqueue Content Block styles only when it is active and on the directory homepage and not globally. * TWEAK: Move the Recently Viewed Content Block assets to a sub folder to improve organization. Use imports in scripts instead of referencing globals to enable code completion. * TWEAK: Move the Related Content Block assets to a sub folder to improve organization. * TWEAK: Move the shared Content Block assets to a sub folder to improve organization. * TWEAK: Move the brandicon assets to a sub folder to improve organization. * TWEAK: Move the fonticonpicker assets to a sub folder to improve organization. * TWEAK: Rename source styles for consistency. * TWEAK: Remove unused style assets. * TWEAK: Rename `blocks.js` to `index.js` for consistency. Adjust import path for consistency. * TWEAK: Remove the public entry point for blocks in favor of individual block entry points so block assets can be loaded as necessary instead of globally. * TWEAK: Add the script and style handles to the Nearby and Related Content Blocks so the can be loaded as required instead of globally. * TWEAK: Register Blocks with `blocks.json` if the WordPress version is 5.8 or greater. * TWEAK: Use imports in Block scripts instead of referencing globals to enable code completion. * TWEAK: Do not import Block style. Use webpack entry to process separately. * TWEAK: Enqueue the RTL styles built by webpack. * TWEAK: Remove registration and enqueuing of global Block script. * TWEAK: Update the registration and enqueuing of the Block Editor assets. * TWEAK: Update the URL and file path of the iconpicker library when registering its assets. * BUG: The Recently Viewed API Endpoint should not parse requests or apply query filters. * BUG: Do not set default for the template attribute as it causes the setting to be lost during saving. * OTHER: Correct misspellingS. * DEV: Remove unused import. * DEV: phpDoc updates. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Remove commented out code. * DEV: Adjust phpcs parallel value. * DEV: Qualifier can be replaced with an imports. * DEV: Correct code alignment. * DEV: Rename variable. * DEV: Add style entry point for Block components. * DEV: Update `package.json`. * DEV: Update `webpack.config.js`. * DEV: Update `dist` files. * DEV: Update node packages. * DEV: Delete `.jshintrc`. * DEV: Add `.eslintrc`. * DEV: Remove use of deprecated `file_loader` and `url-loader`. * DEV: Remove deprecated commented out code. * DEV: Bump minimum WordPress version to 5.3. = 10.4.10 01/14/2022 = * TWEAK: Multiple placeholders should be ordered. * TWEAK: Ensure parameter is cast to boolean. * TWEAK: Ensure the Team Block table headings are translation ready. * TWEAK: Allow the Additional Options field to override the `parse_request` parameter. * TWEAK: Ensure map tile images are set at opacity of `1` to prevent themes from hiding them. * TWEAK: Remove the `div` from around the `do_meta_boxes()` function call on the admin Manage page so WordPress will properly apply CSS classes for different screen-sizes/orientations. * BUG: Add missing text domains. * BUG: The translation $text arg must be a single string literal. * BUG: Correct excluding categories in the Team Block. * BUG: Hook `rank_math/head` is an action, not a filter. * OTHER: Correct misspellings. * DEV: Output phpcs security report to a separate file. * DEV: Missing space before array closer. * DEV: Spaces must be used for mid-line alignment; tabs are not allowed. * DEV: Code cleanup, adding/removing spaces to ensure code formatting compliance. * DEV: The CASE body must start on the line following the statement. * DEV: There must be no space before the colon in a CASE statement. * DEV: CASE statements must be defined using a colon. * DEV: String does not require double quotes; use single quotes instead. * DEV: Parenthesis should always be used when instantiating a new object. * DEV: phpDoc formatting corrections. * DEV: Array double arrow not aligned correctly. * DEV: Correct switch case statement formatting. * DEV: Array double arrow not aligned correctly. * DEV: Scope keyword must be followed by a single space. * DEV: Add a couple more phpcs reports. * DEV: Equals sign not aligned correctly. * DEV: Array keys must be surrounded by spaces unless they contain a string or an integer. * DEV: Empty array declaration must have no space between the parentheses. * DEV: Expected 1 space after array opener. * DEV: Each item in a multi-line array must be on a new line. * DEV: Expected 1 space before closing PHP tag. * DEV: Expected 0 spaces between parenthesis of function declaration. * DEV: There must be no blank line following an inline comment. * DEV: Empty block comment not allowed. * DEV: The static declaration must come after the visibility declaration. * DEV: Multi-line function call not indented correctly. * DEV: Logical operator "and" is prohibited; use "&&" instead. * DEV: Expected 1 space before opening brace. * DEV: There must be a single blank line after a tag group. * DEV: Expected 1 space before opening brace. * DEV: Space found before semicolon. * DEV: Expected 0 spaces between argument and comma. * DEV: Additional blank lines found at end of doc comment. * DEV: phpDoc updates. * DEV: PHP tags must be on a line by themselves. * DEV: Expected space before asterisk. * DEV: Short array syntax is not allowed. * DEV: Empty lines are not allowed in multi-line function calls. * DEV: Inline PHP statement must end with a semicolon. * DEV: Short form type keywords must be used. * DEV: Usage of ELSE IF is discouraged; use ELSEIF instead. * DEV: Concat operator must be surrounded by a single space. * DEV: Array closer not aligned correctly. * DEV: A gettext call containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. * DEV: The use of function `sizeof()` is forbidden; use `count()` instead. * DEV: Add `config:allow-plugins` to composer.json. * DEV: Updates to `.travis.yml`. * DEV: There must be no blank lines before the file comment. = 10.4.9 01/07/2022 = * NEW: Add support for the `%title%`, `%organization%`, and `%department%` tokens when setting the name format when calling the `getNameBlock()` method. * TWEAK: Hook into the `upgrader_process_complete` action to clear addon plugin update checks. * BUG: Team block should not parse request queries. * SECURITY: Utilize `esc_attr()` instead of `esc_html()` when HTML escaping attribute values. * DEV: Use Yoda Condition checks, you must. * DEV: Equals sign not aligned with surrounding assignments. * DEV: Space found before comma in argument list. * DEV: The CASE body must start on the line following the statement. * DEV: Remove unnecessary break statement in switch branch. * DEV: Remove unnecessary blank lines. * DEV: Add additional security sniffs to the phpcs report. * DEV: Minor `webpack.config.js` cleanup. = 10.4.8 12/22/2021 = * NEW: Introduce the Request Input API. * NEW: Introduce `_::var_dump_to_error_log()`. * TWEAK: Remove unnecessary attribute escaping. * TWEAK: Add additional label parameters that can be utilized when registering a custom taxonomy. * TWEAK: Refactor `_::var_dump()` as a variadic and utilize `_::var_dump_to_error_log()` for code deduplication. * TWEAK: Remove direct access to `$_GET` and `$_POST` super globals and use the Request Input API instead for improved input validation and sanitization while reducing code duplication. * TWEAK: Refactor of `processEntryCategory()` to remove `isset()` and `empty()` checks on request variable. Sanitize the result. * BUG: Wrong escaping function. href, src, and action attributes should be escaped by `esc_url()`, not by `esc_attr()`. * BUG: Utilize `esc_attr__()` instead of `esc_html__()` when escaping attribute values. * BUG: Add missing return value. * BUG: Set up object and property if not set to prevent PHP related notices and errors when sorting categories during CSV export. * BUG: Add missing return value to `_::getIP()`. * SECURITY: Sanitize server IP address request variable. * SECURITY: Sanitize request variable. * OTHER: Correct misspellings. * OTHER: Remove unnecessary local variable. * OTHER: Deprecate unused `cnFormObjects::token()` method. * OTHER: Move deprecated utility classes to the Utility sub-folder. * OTHER: Remove unnecessary break statements within switch. * OTHER: Move the Google Maps Timezone API to the Integrations sub-folder. * OTHER: Remove unused empty placeholder file. * OTHER: Remove unnecessary break statements within switch. * OTHER: Remove unused import. * DEV: There must be no blank lines before the file comment. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: phpcs:disable PEAR.NamingConventions.ValidClassName.StartWithCapital * DEV: phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound * DEV: phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log * DEV: phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_dump * DEV: phpcs:disable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned * DEV: phpcs:disable WordPress.Arrays.MultipleStatementAlignment.LongIndexSpaceBeforeDoubleArrow * DEV: phpcs:ignore WordPress.Security.NonceVerification.Recommended * DEV: Remove @todo tags. * DEV: phpDoc corrections. * DEV: When a multi-item array uses associative keys, each value should start on a new line. * DEV: Use Yoda Condition checks, you must. * DEV: Remove unused commented out code. * DEV: There must be no blank lines before the file comment. * DEV: Equals sign not aligned with surrounding assignments. * DEV: Reflow code. * DEV: Correct if/else statement with common parts. * DEV: String does not require double quotes; use single quotes instead. * DEV: Tabs must be used to indent lines; spaces are not allowed. * DEV: Array double arrow not aligned correctly. * DEV: Language constructs must be followed by a single space. * DEV: Concat operator must be surrounded by a single space. * DEV: Correct array code format. * DEV: Do strict comparison. * DEV: No space found after comma in argument list. * DEV: Add phpDoc file header. * DEV: Extract common parts of if/else statement. * DEV: Parameter comment must end with a full stop. * DEV: Parenthesis should always be used when instantiating a new object. = 10.4.7 12/01/2021 = * NEW: Introduce `_::isDevelopmentEnvironment()`. * TWEAK: Update mShot API URI. * TWEAK: Collapse duplicate case statements. * TWEAK: Minor refactor of `cnEntry_HTML::gethCardTelType()` and `cnEntry_HTML::gethCardAdrType()`, renaming of variables to be more clear and update phpDoc. * TWEAK: Add the `cn-phone-number-type-{$type}` class to the phone number HTML block to allow each phone type to be selected by CSS. * TWEAK: Move `_::isInteger()` to `_validate::isInteger()`. * TWEAK: Move `_::isPositiveInteger()` to `_validate::isPositiveInteger()`. * TWEAK: Add timestamp to template CSS version if site is set to the development environment. * TWEAK: Utilize `_array::get()` to get request data to avoid undefined index notices. * BUG: Do not use `unlink()` on an `WP_Error` object. * SECURITY: Refactor escaping of `getTermParents()`. * SECURITY: Utilize `wp_safe_redirect()` instead of `wp_redirect()`. * SECURITY: Sanitize admin term list request variables. * OTHER: Correct misspellings. * DEV: Update Node modules. * DEV: Remove unnecessary Node module imagemin-webpack-plugin. * DEV: phpDoc updates. * DEV: Tabs must be used to indent lines; spaces are not allowed. * DEV: Equals sign not aligned correctly. * DEV: Space found before argument list. * DEV: Concat operator must be surrounded by a single space. * DEV: phpcs:disable PEAR.NamingConventions.ValidClassName.Invalid * DEV: phpcs:disable PEAR.NamingConventions.ValidClassName.StartWithCapital * DEV: Parameter comment must end with a full stop. * DEV: Correct inline code comment. * DEV: Add inline code comment. * DEV: There must be exactly one blank line before the tags in a doc comment. * DEV: Update vendor files. * DEV: Update dist files. = 10.4.6 11/16/2021 = * NEW: Introduce `_escape::css()`. * NEW: Introduce `_escape::json()`. * NEW: Introduce `_escape::maybeEcho()`. * NEW: Introduce `_validate::isFloat()`. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped HTML `id` attribute. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped encoded JSON. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped HTML attribute value. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped CSS rules. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped HTML tag name. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped HTML class names. * TWEAK: Utilize `_escape::maybeEcho()` to echo the escaped HTML. * TWEAK: Remove unnecessary echo. * TWEAK: Optimize case statement. * TWEAK: Instead of prefixing a suspicious warning in CSV export data, prefix with a single straight quote. Allow negative floats without prefixing. * TWEAK: Add parameter to `cnLog_Email::viewLogItem()` to echo value. * TWEAK: Change attribute from `return` to `echo`. * TWEAK: Improve `_sanitize::filepath()`. * BUG: Use correct method to display vCard download link in template. * BUG: Add missing text domain. * BUG: Email log cc and bcc fields need to be echoed. * BUG: Value should be returned, not echoed. * SECURITY: All output should be run through an escaping function. * SECURITY: Escape CSS rules. * SECURITY: Sanitize the bulk delete entry IDs. * SECURITY: Escape date block template. * SECURITY: Escape admin date block template. * SECURITY: Escape email block template. * SECURITY: Escape admin email block template. * SECURITY: Sanitize request variable. * SECURITY: Escape the style attribute in Form Fields API. * SECURITY: Escape the ID attribute in the Profile template. * SECURITY: Escape the Entry Meta Content Block. * SECURITY: Escape the Entry Management Content Block. * SECURITY: Escape the admin Dashboard Upcoming Widget. * SECURITY: Escape admin messenger block template. * SECURITY: Escape messenger block template. * SECURITY: Escape admin link block template. * SECURITY: Escape the admin Dashboard Recently Modified Widget. * SECURITY: Escape the admin Anniversary Light template. * SECURITY: Escape link block template. * SECURITY: Escape the admin Anniversary Dark template. * SECURITY: Escape the Default Card template. * SECURITY: Escape the Birthday Light template. * SECURITY: Escape the admin Dashboard Recently Added Widget. * SECURITY: Escape the Members template. * SECURITY: Escape the Default Card template. * SECURITY: Escape URL. * SECURITY: Escape the Default Card template. * SECURITY: Escape the Birthday Dark template. * SECURITY: Escape address block template. * SECURITY: Escape address block template. * SECURITY: Escape admin address block template. * SECURITY: Escape phone block template. * SECURITY: Escape admin phone block template. * SECURITY: Escape the Related Content Block. * SECURITY: Escape the Recently Viewed Content Block. * SECURITY: Escape class names in license notification. * SECURITY: Escape the Entry Meta Content Block. * SECURITY: Escape admin social network block template. * SECURITY: Escape the Carousel Block template. * SECURITY: Escape the Entry Management Content Block. * SECURITY: Escape the Nearby Content Block. * SECURITY: The base export class header and row data should be run thru the escape method incase the base methods are not overridden. * SECURITY: Admin messages need to support HTML when escaped. * SECURITY: Refactor `cnCategory::getDescriptionBlock()` to remove duplicate code and add escaping. * SECURITY: Escape HTML attribute values. * SECURITY: Use `wp_safe_redirect()`. * OTHER: Remove unnecessary line returns. * OTHER: Remove extra spaces. * OTHER: Remove unnecessary usage of `esc_html__()`. * OTHER: Reflow code. * OTHER: Correct misspellings. * OTHER: Remove unnecessary tab. * OTHER: Lines indented incorrectly. * OTHER: Remove unnecessary double forward slash from inline comment. * OTHER: Remove extra space. * DEV: phpDoc corrections. * DEV: Ignore instance of WordPress.Security.EscapeOutput.OutputNotEscaped. * DEV: The CASE body must start on the line following the statement. * DEV: Use Yoda Condition checks, you must. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: String does not require double quotes; use single quotes instead. * DEV: Tabs must be used to indent lines; spaces are not allowed. * DEV: Array double arrow not aligned correctly. * DEV: Remove unnecessary parenthesis. * DEV: Concat operator must be surrounded by a single space. * DEV: Ignore instance of WordPress.Security.NonceVerification.Missing * DEV: Remove inline comments. * DEV: Remove @todo. * DEV: phpcs rule tweaks. * DEV: Ignore instance of WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound * DEV: Ignore instance of WordPress.WP.GlobalVariablesOverride.Prohibited. * DEV: Space found before comma in argument list. * DEV: Simplify ternary. * DEV: There must be no blank lines before the file comment. * DEV: When a multi-item array uses associative keys, each value should start on a new line. * DEV: Add phpDoc to template. * DEV: Ignore instance of PEAR.NamingConventions.ValidClassName.Invalid. * DEV: Ignore instance of PEAR.NamingConventions.ValidClassName.StartWithCapital. * DEV: Rename variable. * DEV: Do type check after encoding value as JSON to ensure its a string. * DEV: Simplify switch statement. * DEV: Array closer not aligned correctly. * DEV: Add phpDoc. * DEV: Qualifier is unnecessary and can be removed. * DEV: Equals sign not aligned with surrounding assignments. * DEV: Remove unused import. * DEV: Refactor of `\Form\Field::stringifyCSSAttributes()`. * DEV: Move common HTML functions from `\Form\Field` namespace to the `\HTML` namespace. * DEV: Move HTML helper functions from namespaced global functions to public static functions in namespaced class. * DEV: Remove unnecessary parameter from method to be consistent with signatures of other methods in utility class. * DEV: Convert quotes. * DEV: Expected exactly one space after opening parenthesis. * DEV: Opening PHP tag must be on a line by itself. * DEV: Inline PHP statement must end with a semicolon. * DEV: Opening brace should be on the same line as the declaration. * DEV: Remove extra spaces in function parameters. * DEV: Comma not allowed after last value in single-line array declaration. * DEV: Parameter comment must end with a full stop. * DEV: Remove unused commented out code. * DEV: Remove unnecessary string concat. * DEV: Deprecate `cnTemplate::includeFunctions()` and `cnTemplate::printCSS()`. * DEV: Remove @noinspection tag. * DEV: Code format inline comment. * DEV: phpDoc alignment. * DEV: Deprecated argument. * DEV: Parenthesis should always be used when instantiating a new object. * DEV: Equals sign not aligned correctly. * DEV: phpcs.xml configuration tweak. * DEV: Expected 1 space after closing brace. * DEV: Language constructs must be followed by a single space. * DEV: Expected 1 space after "=". * DEV: Move imports. * DEV: Missing space before array closer. * DEV: Expected 1 space after "&&". * DEV: Expected exactly one space before opening parenthesis. * DEV: Closing PHP tag must be on a line by itself. * DEV: Correct code flow. * DEV: Usage of ELSE IF is discouraged; use ELSEIF instead. * DEV: Add/remove extra spaces. * DEV: Newline required after opening brace. * DEV: Expected 1 space(s) after closing parenthesis. * DEV: There must be no space between the "array" keyword and the opening parenthesis. * DEV: Use spaces instead of tabs for midline alignment in phpDoc. * DEV: Remove duplicate switch branches. * DEV: Reflow multiline function call to single line. * DEV: The DEFAULT body must start on the line following the statement. * DEV: Deprecate arguments in `cnHTML::attribute()`. * DEV: Remove HTML inspection flags. * DEV: Add phpcs WP security report. = 10.4.5 10/22/2021 = * NOTICE: Requires at least WordPress 5.2. * NEW: Introduce `Utility\_sanitize`. * NEW: Introduce `_validate::isCSV()`. * NEW: Introduce `_sanitize::filePath()`. * NEW: Introduce `phpcs.xml`. * TWEAK: Discard current character query variable if supplied string is longer than a single character. * TWEAK: Use `absint()` instead of `esc_attr()` when using the Entry ID query var on the Manage admin page. * TWEAK: Escape html of setting description. * TWEAK: Process echoed JavaScript through `esc_js()`. * TWEAK: Process map pin popup through `wp_kses_post()`. * TWEAK: Remove unnecessary newlines. * TWEAK: Delete commented out code. * TWEAK: Refactor tabbed sub-panels on the Templates admin page to eliminate several phpcs WPCS warnings. * TWEAK: Remove HTML URL from translation. * TWEAK: Add `target="_blank"` to template author URL. * TWEAK: Change a couple private method to public so they can be access in filter callback. * TWEAK: Utilize the collection renderer to render the social networks on the manage admin page. * TWEAK: Correct send by AJAX check. * TWEAK: Set `json_decode()` to return associative array instead of object. * TWEAK: Use wp_json_encode() instead. * TWEAK: Increment operators should be used where possible. * TWEAK: Use `CN_parseCSV` version 1.1 during category import for PHP8 compatibility. * TWEAK: Introduce mapping method to map CSV data to new structure on CN_parseCSV 1.1. * TWEAK: Force balanced tags in `_escape::html()`. * TWEAK: Utilize `wp_safe_redirect()` instead of `wp_redirect()`. * TWEAK: Remove incorrect use of `esc_html__()` when registering settings. * TWEAK: Change the upgrade notice and changelog from `p` tags to `div` tags on the Plugins admin page. * TWEAK: Passing the $delimiter as the second parameter to `preg_quote()` is strongly recommended. * SECURITY: Validate and sanitize `$_GET['page']`. * SECURITY: Validate and sanitize `$_GET['cn-action']`. * SECURITY: Sanitize usage of a non-sanitized input variable. * SECURITY: All translated strings should be run through an escaping function. * SECURITY: Sanitize usage of a non-sanitized input variable. * SECURITY: All output should be run through an escaping function. * SECURITY: Use `esc_html__` instead of `__()`. * SECURITY: Sanitize admin keyword search field. * SECURITY: Sanitize current character request query variable. * SECURITY: Process the status filter links through `wp_kses()`. * SECURITY: Sanitize search query variable for pagination links. * SECURITY: Correct class name escaping. * SECURITY: Wrong escaping function, using `esc_attr()` in a context outside of HTML attributes may not escape properly. * SECURITY: Use isset() or empty() to check the index exists before using it and sanitize request variable. * SECURITY: Sanitize CSV file upload path. * SECURITY: Validate if file is a CSV file. * SECURITY: scape anchor text when outputting an anchor permalink. * SECURITY: Process the rank string through `wp_kses_post()` before outputting. * SECURITY: Escape edit permalink string. * SECURITY: Escape delete entry permalink string. * SECURITY: Escape permalink title attribute for vCard anchors. * SECURITY: Correctly strip tags and escape dashboard widget text. * SECURITY: Escape vCard permalink string. * SECURITY: Escape the no results string. * SECURITY: Escape the submit button title attribute. * SECURITY: Escape the title attribute of the current character. * SECURITY: Escape term list options. * SECURITY: Escape classnames. * SECURITY: Escape arguments passed to `_deprecated_argument()`, `_deprecated_function()`, and `_deprecated_hook()`. * SECURITY: Escape attributes when generating a permalink using `_url::permalink()`. * SECURITY: Escape arguments passed to `wp_dropdown_pages()`. * SECURITY: Escape plugin upgrade notice and changelog on Plugin admins page. * SECURITY: Escape admin notices. * COMPATIBILITY: Backport `is_gd_image()` from WordPress 5.6 to fix issues with resizing images using the GD library. * OTHER: Replace quotes. * OTHER: Correct typos. * OTHER: A gettext call containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. * OTHER: Remove extra parenthesis. * OTHER: Remove `error_log()` call. * DEV: Update `composer.json`. * DEV: Correct function spacing in passed arguments. * DEV: Ignore global override warning. * DEV: When a multi-item array uses associative keys, each value should start on a new line. * DEV: Inline control structures are not allowed. * DEV: Use of `extract()` is not recommended. * DEV: Parenthesis should always be used when instantiating a new object. * DEV: Opening brace must be the last content on the line. * DEV: There must be no blank lines before the file comment. * DEV: Inline comments must end in full-stops, exclamation marks, or question marks. * DEV: Use Yoda Condition checks, you must. * DEV: Use isset() or empty() to check the index exists before using it. * DEV: Each array item in a multi-line array declaration must end in a comma. * DEV: Inline PHP statement must end with a semicolon. * DEV: Opening/closing PHP tags must be on a line by themselves. * DEV: TRUE, FALSE and NULL must be lowercase. * DEV: Ignore instance of WordPress.NamingConventions.PrefixAllGlobals. * DEV: Ignore instance of WordPress.Security.EscapeOutput.OutputNotEscaped. * DEV: Ignore instance of WordPress.Arrays.MultipleStatementAlignment. * DEV: Ignore instance of WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound. * DEV: Ignore instance of phpcs:disable PEAR.NamingConventions.ValidClassName.StartWithCapital. * DEV: Opening PHP tag must be on a line by itself. * DEV: Closing PHP tag must be on a line by itself. * DEV: Ignore instance of WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound. * DEV: Add composer script. * DEV: Ignore instance of Generic.Commenting.DocComment.SpacingBeforeTags. * DEV: The CASE body must start on the line following the statement. * DEV: Detected usage of a possibly undefined superglobal array index: $_GET['id']. Use isset() or empty() to check the index exists before using it. * DEV: The DEFAULT body must start on the line following the statement. * DEV: Equals sign not aligned with surrounding assignments. * DEV: Add inline code comments and doc block. * DEV: Use `mb_strlen()` instead of `strlen()`. * DEV: Ignore instance of WordPress.Security.ValidatedSanitizedInput.InputNotSanitized. * DEV: Remove instances of deprecated functions. * DEV: Array double arrow not aligned correctly. * DEV: Tabs must be used to indent lines; spaces are not allowed. * DEV: Missing short description in doc comment. * DEV: Concat operator must be surrounded by a single space. * DEV: HTTP links are not secure. * DEV: String concat is not required here; use a single string instead. * DEV: Ignore instance of Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps. * DEV: String "