A WordPress package to nudge users to upgrade their software versions (starting with PHP)

Related tags

Miscellaneous whip
Overview

CS Test

whip

A WordPress package to nudge users to upgrade their software versions (starting with PHP)

Screenshot of the WordPress notice

Requirements

The following versions of PHP are supported:

  • PHP 5.3
  • PHP 5.4
  • PHP 5.5
  • PHP 5.6
  • PHP 7.0
  • PHP 7.1
  • PHP 7.2
  • PHP 7.3
  • PHP 7.4
  • PHP 8.0

WordPress is also required for certain functionality:

  • The WPMessagePresenter requires WordPress or a function called add_action, to hook into WordPress.
  • The PHPVersionDetector requires WordPress or a function called __, to translate strings.

Installation

$ composer require yoast/whip 

Usage

The easiest way to use Whip in WordPress is by using the included function to check the versions. In this case checking if PHP 5.6 or greater is installed:

whip_wp_check_versions( array(
	'php' => '>=5.6',
) );

This will show a message to all users of your plugin on PHP 5.3 to PHP 5.5. By default the message will be shown on every page of the admin and to every user. It is up to the implementing plugin to restrict this to certain users and/or pages.

Adding a message as a host

It is possible to add a custom message to the PHP version message by setting specific environment variables:

putenv( "WHIP_NAME_OF_HOST=Name of the host" );
putenv( "WHIP_MESSAGE_FROM_HOST_ABOUT_PHP=A message from the host" );

The WHIP_NAME_OF_HOST environment variable could be reused in the future for showing messages about different software packages.

Both the name and the message for PHP can also be changed using WordPress filters:

function my_host__name_for_whip() {
	return 'Name of the host';
}
add_filter( 'whip_name_of_host', 'my_host__name_for_whip' );

function my_host__php_message_for_whip( $message ) {
	return 'A message from the host';
}
add_filter( 'whip_message_from_host_about_php', 'my_host__php_message_for_whip' );

The WordPress filters can also read the value previously set by the environment variables.

As a general rule, the filter is the same as the environment variable, but lowercased.

Linking to the WordPress.org hosting page

We have created a hosting overview page on yoast.com which only contains hosts that we've vetted. The PHP message links to this page by default. If you really prefer to link to the WordPress.org hosting page that is possible. Just use the whip_hosting_page_url_wordpress filter:

add_filter( 'whip_hosting_page_url_wordpress', '__return_true' );

Backwards compatibility policy

We follow semantic versioning with an extra strict rule for MAJOR versions. We will do a major version bump whenever we add new methods. We have to do this because of the shared namespace in PHP. When this package will be used in multiple plugins we cannot safely add and use a method without bumping a major version. This is because the version without the new method may be autoloaded and then a fatal error occurs.

This also means that any major version bump is accompanied by a change of all class names in the package. So for version 2 of this package all classes will be postfixed with _v2. This prevents fatal errors when two plugins include different versions of this package.

Changelog

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

Comments
  • Prevent duplicated notices

    Prevent duplicated notices

    Scenario:

    • WPSEO
    • Another plugin using WHIP with the same requirements

    When the requirements are not met, the notice is shown twice.

    This is because, for every time whip_wp_check_versions is called (and requirements are not met), \Whip_WPMessagePresenter::register_hooks is also called.

    This creates as many hooks to admin_notices as many calls to whip_wp_check_versions there are.

    I think the problem is that whip_wp_check_versions creates a new instance of Whip_WPMessagePresenter every time is called.

    Something like that may prevent duplicate notices:

    function whip_wp_check_versions( $requirements ) {
    	//...
    
    	global $whip_message_presenter;
    	if ( ! isset( $whip_message_presenter ) ) {
    		$mostRecentMessage      = $checker->getMostRecentMessage();
    		$whip_message_presenter = new Whip_WPMessagePresenter( $mostRecentMessage );
    		$whip_message_presenter->register_hooks();
    	}
    }
    

    But I'm not sure if that's the best approach.

    opened by andreasciamanna 5
  • Travis: test builds against PHP 7.4

    Travis: test builds against PHP 7.4

    Nightly has become PHP 8.0 since PHP 7.4 has been branched, so to continue to also test against PHP 7.4, it needs to be added separately.

    Refs:

    • https://twitter.com/nikita_ppv/status/1089839541828112384
    • https://twitter.com/nikita_ppv/status/1094897743594770433
    opened by jrfnl 4
  • Prevent duplicate notices

    Prevent duplicate notices

    When the admin_notices hook is created, raise a flag in a global variable to avoid hooking multiple times.

    See #36

    I would like to add tests coverage to this whole class, but I'd need to add 10up/wp_mock, lucatume/function-mocker or something similar to mock global functions such as wp_kses.

    If that's not a problem, I can add tests to this PR in a separate commit.

    opened by andreasciamanna 4
  • CS: Update PHPCS ruleset for PHPCS 3.3.0

    CS: Update PHPCS ruleset for PHPCS 3.3.0

    Use the new property array format. The old format is still supported for now, but will be removed in PHPCS 4.0.

    See: https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/3.3.0

    As this repo does not have a composer.lock file, no other changes are needed AFAICS.

    opened by jrfnl 3
  • Build/Travis: test builds against PHP 7.3

    Build/Travis: test builds against PHP 7.3

    Once PHP 7.3-beta came out, the nightly build on Travis became PHP 7.4-dev and builds haven't been tested against PHP 7.3 for months now.

    As of this week, Travis has (finally) made a PHP 7.3 alias available now RC3 is out, so I've ~~updated the highest PHP version to test against to~~ added a build to test against PHP 7.3 so there won't be any unwelcome surprises when PHP 7.3 comes out.

    opened by jrfnl 2
  • InvalidType Exception: fix the various calls to this Exception

    InvalidType Exception: fix the various calls to this Exception

    Bug description:

    • The parameter order for most calls to this Exception was incorrect.
    • Where it was correct, a gettype() was used, while this is already done in the exception class itself, leading to incorrect results.

    PR notes:

    • Includes improvement to the parameter documentation of the Exception constructor.
    • Includes unit tests proving the bug and safeguarding against it in the future.
    bug 
    opened by jrfnl 2
  • CS: improve regex

    CS: improve regex

    CS: fix regex layout

    Using the x modifier allows for using comments within a regex itself removing the need for the concatenation previously used. The x modifier ignores all whitespace within the regex, allowing for a nice layout as well. To facilitate this, I've moved the regex delimiters up into the regex string, so the modifier and the regex stay together.

    Refs:

    • http://php.net/manual/en/reference.pcre.pattern.modifiers.php

    CS: minor regex efficiency improvement

    No need to remember sub-matches which are not being used anyway (previously match 2 and 3). The parentheses were in this case also not needed for grouping, so removing them was the simplest fix.

    Testing this

    There are already unit tests in place which cover this method comprehensively, so if I did things right, those should still pass. Sic: and they pass as expected

    opened by jrfnl 2
  • Object relationships are misleading

    Object relationships are misleading

    The class and interface names and how they relate to each other are not really clear and can be misleading without reading their source.

    (I'll omit the prefix/pseudo-namespace for brevity.)

    Right now:

    VersionDetector => detects version AND provides message VersionMessage => sets criteria AND acts as controller MessagePresenter => renders message AND disentangles conflicting Whip versions

    Proposed layout:

    (off the top of my head, might need adjustments)

    Message => value object representing a message VersionRequirement => value object representing a "component => minimum version" association VersionTester => gets a VersionRequirement and returns whether it is met ComponentMessage => gets a failed VersionRequirement and turns it into a renderable Message MessageFilter => filters the collection of Message objects to only show the relevant ones (to disentangle conflicting Whip versions) MessagePresenter => renders all Message objects RequirementsCheck => 1. runs each passed-in VersionRequirement through the matching VersionTester, 2. fetches the matching ComponentMessage for each failed VersionRequirement, 3. passes all collected Message objects through the MessageFilter, 4. Passes the filtered collection of Message objects to the MessagePresenter. CheckVersions => facade to provide simplified access to execute a version check.

    Proposed normal flow:

    (I added MySQL as well to demonstrate usage with multiple requirements.)

    // Hook into user interface.
    $message_presenter = new WPMessagePresenter();
    $message_presenter->register();
    
    // Set up requirements.
    $requirements = new RequirementsCheck(
        $message_presenter,
        [
            new VersionRequirement( 'php', '>=5.6' ),
            new VersionRequirement( 'mysql', '>=5.7' )
        ]
    );
    $requirements->check();
    

    Proposed simplified flow (using the Facade):

    CheckVersions( [
        'php'   => '>=5.6',
        'mysql' => '>=5.7',
    ] );```
    
    opened by schlessera 2
  • Message references article without link

    Message references article without link

    The message include the line: We have an article on how to test whether that's an option for you here. This is probably meant to include a link to said article.

    opened by schlessera 2
  • Whip_RequirementsChecker: explicitly declare all properties

    Whip_RequirementsChecker: explicitly declare all properties

    Dynamic (non-explicitly declared) property usage is expected to be deprecated as of PHP 8.2 and will become a fatal error in PHP 9.0.

    There are a number of ways to mitigate this:

    • If it's an accidental typo for a declared property: fix the typo.
    • For known properties: declare them on the class.
    • For unknown properties: add the magic __get(), __set() et al methods to the class or let the class extend stdClass which has highly optimized versions of these magic methods build in.
    • For unknown use of dynamic properties, the #[AllowDynamicProperties] attribute can be added to the class. The attribute will automatically be inherited by child classes.

    In this case, both the $configuration property, as well as the $messageManager property (both set in the class constructor) fall in the "known property" category and should be declared.

    Note: while this could be considered a BC-break, I've elected to make these properties private (was previously automatically public due to these being dynamic properties).

    Refs:

    • https://wiki.php.net/rfc/deprecate_dynamic_properties
    yoast cs/qa 
    opened by jrfnl 1
  • Tests: make the testsuite compatible with PHPUnit 9 and test against PHP 8

    Tests: make the testsuite compatible with PHPUnit 9 and test against PHP 8

    TL;DR: The tests will now be run against PHP 8 and are currently passing.


    Tests: autoload test files via Composer

    The Composer autoload-dev directive allows for specifying files which should only be autoloadable in a dev environment.

    By adding this directive to the composer.json file, we can get rid of most require_once statements in the test suite.

    The only one remaining is the loading of the WP Core functions mocks. This could be done via a files directive within autoload-dev, but then they would always be loaded, while they are only needed in the context of running the tests.

    So instead, I've added the require for the WP Core functions mock file to the test bootstrap file.

    A side-effect of this change is that we can get rid of the setUpBeforeClass() methods which are problematic for PHPUnit cross-version compatibility due to the addition of the void return type to the method signature in PHPUnit 8.

    Tests: add base TestCase

    To make the tests cross-version compatible for the WHIP module, not that much is needed in terms of compatibility polyfills.

    The most pertinent issue is to do with testing exceptions.

    This commit adds a base TestCase from which all WHIP test classes will extend from now on. This TestCase class only contains a helper method to test exceptions in a PHPUnit cross-version compatible manner.

    Includes adding the new testCase to the PHPCS ruleset so sniffs which behave differently in test situations will recognize these correctly.

    Tests: implement use of the TestCase::expectExceptionHelper() method

    .. to replace the @expectedException... annotations which have been removed in PHPUnit 9.

    Tests: implement work-around for remaining PHPUnit cross-version issue

    PHPUnit 9 removed the assertInternalType() method in favour of more specific methods, which were introduced in PHPUnit 8.

    As this test suite only uses this assertion in one place, putting a polyfill in place is over the top. A simple if/else does the trick.

    Composer: allow installation of PHPUnit 8 and 9

    Now the tests have been made cross-version compatible with PHPUnit 8 and 9, allow installation of those versions by widening the version restraints in the composer.json file.

    PHPUnit 8 introduces a form of caching to PHPUnit, so adding this cache file to the .gitignore file.

    Travis: run the tests against PHP 8/nightly

    Now the tests are fully compatible with PHPUnit 9, the test suite can be run on PHP 8.

    ~~As not all dependencies of PHPUnit have tagged a new version which allows for PHP 8 yet, we do need to ignore-platform-reqs for the time being.~~

    Includes adding travis_retry to composer install-like commands to get round builds stalling on the connection with Packagist, especially on older PHP versions.

    yoast cs/qa technical-debt 
    opened by jrfnl 1
  • Allow for passing custom messages

    Allow for passing custom messages

    WIP: Still need to update tests

    Context

    • The built-in messaging is very specific for PHP 5.6 which is no longer relevant. Instead of having to release WHIP with a new message for every PHP version, we need to be able to provide a custom message.

    Summary

    This PR can be summarized in the following changelog entry:

    • Add support for customized messages.

    Relevant technical choices:

    • BC break: the WordPress fasade now requires an array per component instead of just a version constraint. This is done to match a version requirement to message.
    • BC break: I've added version and operator to the WHIP_Requirement interface. The code already relied on these functions. and in the context of WHIP every requirement is a version constraint, so I didn't think adding w WHIL_Version_Requirement. was the way to go.
    opened by diedexx 0
  • Review hook setup in `Whip_Hosts.php`

    Review hook setup in `Whip_Hosts.php`

    In the Whip_Host.php file, there are a couple of calls to apply_filters() with variable filter names.

    I'm not familiar enough with the code to properly review these, but I do believe this setup should be reviewed for the following reasons:

    • Variable filter names with unpredictable values make it hard to hook into these.
    • All hook names should be prefixed to prevent conflicts with other plugins/themes. This is not safeguarded in the current setup.

    Relevant warnings thrown by PHPCS when run without exclusions:

    FILE: src\Whip_Host.php
    ------------------------------------------------------------------------------------------
    FOUND 0 ERRORS AND 3 WARNINGS AFFECTING 3 LINES
    ------------------------------------------------------------------------------------------
      47 | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin
         |         | prefix. Found: "strtolower( self::HOST_NAME_KEY )".
      77 | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin
         |         | prefix. Found: "strtolower( $messageKey )".
     102 | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin
         |         | prefix. Found: "self::HOSTING_PAGE_FILTER_KEY".
    ------------------------------------------------------------------------------------------
    
    technical-debt owner: development 
    opened by jrfnl 1
  • Replace multiple hooks with a static check

    Replace multiple hooks with a static check

    Issue https://github.com/Yoast/whip/issues/40 correctly suggested to get rid of the global variable (globals are always bad and should be avoided at all cost).

    However, the proposed solution in turns a single check into three function calls that are processed through major parts of the WordPress system (and, ironically, rely on multiple globals as well).

    I better fix would have been to turn the global variable into a method-scoped static variable. Serves the same purpose, has no impact outside of the method and does not produce unneeded overhead.

    So, something simple like this would have been preferable:

    function whip_wp_check_versions( $requirements ) {
        // ...
        static $is_registered = false;
        if ( ! $is_registered ) {
            // Register!
            $is_registered = true;
        }
    }
    

    On subsequent calls, the first line is skipped at compile-time already, and the second immediately fails, skipping a duplicate registration. No globals involved (even indirectly through $wp_filters).

    technical-debt 
    opened by schlessera 0
  • Message to my host

    Message to my host

    I'm not sure if this is where I would ask this question. I recently wrote my host with this email. "Hi, For security reasons and an increase in speed I want to update the PHP version of my WordPress website to PHP 7. WordPress also strongly recommends the latest version of PHP on their requirements page, https://wordpress.org/about/requirements/.

    More information about currently supported versions of PHP can be found here: http://php.net/supported-versions.php.

    I've heard that sometimes a website can break when updating the PHP version. Can you assist me and update my site safely to PHP 7?

    Thanks!"

    They responded back, but I'm totally confused! Could someone advise me on how to handle this because I'm really not understanding all the terms and lingo. Thanks so much!

    Oh here was their response: "Upon checking your requirement, I could see that the you want to upgrade the PHP 7 for a domain. It can be possible only if we can upgrade easyapache4. EasyApache 4 supports multiple versions of PHP. Multiple PHP versions allow you to assign different PHP versions to each of your domains. Coupled with automatic upgrades, this ensures that your PHP applications run on the most up-to-date, secured PHP versions.

    However on checking I could see that the server is running on CentOS 6. We always recommend you to use EasyApache4 on new CentOS version which is 7, as upgrading EasyApache4 in CentOS 6 may break the working of sites. If you wish we can migrate your server from CentOS 6 to CentOS 7 for free of cost. If you would like to proceed with Migration, then please let us know so that we shall move the ticket to our Migration team.

    Please contact your developer to check the compatibility of the application with new PHP version before upgrading.

    However, please note that any apache customizations present in the server will get lost. Also the compilation process will cause a tleat 10 minutes of downtime. So it is better to do the process on off peak hours."

    opened by biancamc 5
  • Consider making this a dismissible/minimizable alert

    Consider making this a dismissible/minimizable alert

    Technically by being 'removable' once the issue is resolved (upgraded PHP) this is fine per the plugin guidelines. That's not this. This is a thought about keeping the WP Dashboard usable.

    Seeing as this is not something that everyone can fix in one click, and its very LARGE (which IMO it should be), it might be prudent to be less invasive on global usability. My thoughts are to allow it to be dismissible but:

    1. Keep an alert in the WP Admin Bar
    2. Keep a number on the upgrade menu (and show the message on the upgrade panel)
    3. Keep a one-line alert "Upgrade PHP!" which expands when clicked
    4. Keep a BRIGHT RED tab by options/support with the information

    Mind, WP needs a notification control center overall but that's a different horse to beat.

    I'm spitballing here, since there needs to be a balance between UPDATE PHP!!!! and making sure it's not ignored.

    opened by Ipstenu 2
  • Design issue with `Whip_Requirement`

    Design issue with `Whip_Requirement`

    The interface Whip_Requirement wants to be an abstract requirement that only knows about a ::component(). However, in Whip_RequirementsChecker::requirementIsFulfilled(), the requirements version() is being checked, despite the interface not having such a method.

    So, either Whip_Requirement is actually a Whip_VersionRequirement, or the Whip_RequirementsChecker::requirementIsFulfilled() needs to abstract away what it actually checks.

    To abstract this away, it can delegate the isFulfilled() to the requirement itself with all related knowledge it has.

    technical-debt 
    opened by schlessera 0
Releases(1.2.0)
  • 1.2.0(Jul 20, 2021)

    [1.2.0] - 2021-07-20

    :warning: This version drops support for PHP 5.2!

    Changed

    • PHP 5.2 is no longer supported. The minimum supported PHP version for the WHIP library is now PHP 5.3. #96
    • The previous solution to prevent duplicate messages as included in v1.0.2 has been improved upon and made more stable. Props Drew Jaynes. #44
    • The Whip_InvalidOperatorType::__construct() method now has a second, optional $validOperators parameter. #62 If this parameter is not passed, the default set of valid operators, as was used before, will be used.
    • Improved protection against XSS in localizable texts. #50
    • Improved support for translating localizable texts (I18n). #59
    • The distributed package will no longer contain development-related files. #45
    • General housekeeping.

    Deprecated

    • The public Whip_WPMessagePresenter:register_hooks() method has been deprecated in favour of the new Whip_WPMessagePresenter:registerHooks(). #52, #107

    Fixed

    • The text of the exception message thrown via the Whip_InvalidType exception was sometimes garbled. #61
    • Compatibility with PHP >= 7.4: prevent a deprecation notice from being thrown (fatal error on PHP 8.0). #88
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Aug 8, 2017)

  • 1.1.0-RC2(Aug 4, 2017)

  • 1.1.0-RC1(Aug 1, 2017)

  • 1.0.2(Jun 27, 2017)

  • 1.0.1(Mar 21, 2017)

  • 1.0.0(Mar 21, 2017)

  • 1.0.0-beta.2(Mar 11, 2017)

    Added

    • Complete PHP version message

    Changed

    • Refactor code architecture.
    • Use PHP version constant instead of function.

    Fixed

    • Fix broken version reconciliation.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-beta.1(Feb 21, 2017)

Owner
Yoast
This is where the Yoast.com team shares its public code: from our WordPress plugins to other small projects.
Yoast
A MCPE server software that backporting new Minecraft: Bedrock Edition to older PocketMine versions with better stability and performance.

CoarseMC is a server software that backports new Minecraft: Bedrock Edition versions to older PocketMine versions with better stability and performance, while retaining as many features from the new PocketMine-MP versions as possible.

null 5 May 21, 2022
Wordpress starting framework for magic websites

Wideo Wordpress starting framework for magic websites. Full documentation: https://github.com/ideonetwork/wideo/wiki Usage Installation for wordpress

Zeranta Digital 4 Dec 13, 2022
A web application built on PHP for user to view their credit information in their mysql database

TheCreditInfo Table of Content About Inspiration Technologies Client Pages Usage About Credere is a website created to help you track your credit hist

Abdul-Baseet Shabi 0 Jul 21, 2022
Upgrade module for PrestaShop

1-Click Upgrade About Upgrade to the latest version of PrestaShop in a few clicks, thanks to this automated method. This module is compatible with all

PrestaShop 84 Dec 29, 2022
The Barista explores every Latte (file) for strict quality, helps with Latte 2 to 3 upgrade

The Barista makes Your Perfectly Tasty Latte Do you drink Latte with your templates? Get it from Barista that knows his job: explore Latte via node vi

Tomas Votruba 5 Sep 7, 2022
Orangescrum is a simple yet powerful free and open source project management software that helps team to organize their tasks, projects and deliver more.

Free, open source Project Management software Introduction Orangescrum is the simple yet powerful free and open source project management software tha

Orangescrum 110 Dec 30, 2022
Project template for starting your new project based on the Sulu content management system

Sulu is a highly extensible open-source PHP content management system based on the Symfony framework. Sulu is developed to deliver robust multi-lingua

Sulu CMS 188 Dec 28, 2022
Allow your users to login with their Ethereum wallet.

Allow your users to login with their Ethereum wallet Allow your users to link their Ethereum wallet to their account to skip entering their login cred

Miguel Piedrafita 84 Nov 7, 2022
Reset UI Bookmarks allows admin users to reset their own UI bookmarks such as state of filters, column positions and applied sorting ( e.g Sales > Orders ).

Reset Ui Bookmarks Reset UI Bookmarks becomes an invaluable tool while working daily in the admin panel, especially on Magento® instances with a large

Magenizr 23 Oct 19, 2022
HLedger is cross-platform accounting software for both power users and folks new to accounting

HLedger Plain Text Accounting on Nextcloud HLedger is cross-platform accounting software for both power users and folks new to accounting. It's good f

Ryan Boder 11 Jan 20, 2022
An auto software that collects, scans and sends automatic instagram users

Instagram Advanced User Finder V1.0.0 With this PHP script, you can find users on Instagram and message them. Feedback Türkçe Get Key every week, you

Yasin 70 Jan 4, 2023
Silverstripe-masquerade - SilverStripe module to allow users to "masquerade" as other users

SilverStripe Masquerade Module About This module is designed to allow an Administrator to "login" as another "Member" without changing their password

Daniel Hensby 14 Apr 14, 2022
Analyzer of PHP code to search issues with deprecated functionality in newer interpreter versions.

PhpDeprecationDetector PhpDeprecationDetector - analyzer of PHP code to search usages of deprecated functionality in newer interpreter versions - depr

Sergey 312 Dec 26, 2022
A tool that can be used to verify BC breaks between two versions of a PHP library.

Roave Backward Compatibility Check A tool that can be used to verify BC breaks between two versions of a PHP library. Pre-requisites/assumptions Your

Roave, LLC 530 Dec 27, 2022
This project backports features found in the latest PHP versions and provides compatibility layers for some extensions and functions

This project backports features found in the latest PHP versions and provides compatibility layers for some extensions and functions. It is intended to be used when portability across PHP versions and extensions is desired.

Symfony 2.2k Dec 29, 2022
Analyzer of PHP code to search issues with deprecated functionality in newer interpreter versions.

PhpDeprecationDetector PhpDeprecationDetector - analyzer of PHP code to search usages of deprecated functionality in newer interpreter versions - depr

Sergey 312 Dec 26, 2022
Checks prefer-lowest installation for actually defined min versions in composer.json

Composer Prefer Lowest Validator This validator will strictly compare the specified minimum versions of your composer.json with the ones actually used

Mark Scherer 17 Aug 7, 2022
Automatically delete old SiteTree page versions from Silverstripe

Version truncator for Silverstripe An extension for Silverstripe to automatically delete old versioned DataObject records from your database when a re

Ralph Slooten 35 Dec 7, 2022
Algolia Search integration for Magento 1 - compatible with versions from 1.6.x to 1.9.x

Algolia Search for Magento 1.6+ End of Support ?? The Algolia Magento 1 extension has reached End of Life regarding support and maintenance. We do not

Algolia 163 Dec 20, 2022