Introduction

What does it do?

walls.io is a service to show you entries/posts of a specific topic or hashtag from various social media websites like Facebook, Twitter and Instagram on your website. While embedding wall posts with help of iframe or JavaScript solution the website visitors will get Cookies and send personnel data like IP address to third party companies without their consent.

Our walls_io_proxy makes use of the official API of walls.io to retrieve the wall posts and caches containing images directly to your server. That way the website visitor do not need consent to show the wall posts. Further no cookies will be set and the IP address of website visitor will not be sent to 3rd parties.

Yes, walls_io_proxy is OpenSource and free to use, but you have to register for Premium Account at walls.io (499 € each month or 4.800 € (yearly). Date: 09.02.2022) to get API access.

Screenshots

See walls_io_proxy in action.

A wall example output

Walls.io Proxy in action

Installation

Composer

If your TYPO3 installation works in composer mode, please execute following command:

composer req jweiland/walls-io-proxy
vendor/bin/typo3 extension:setup --extension=walls_io_proxy
Copied!

If you work with DDEV please execute this command:

ddev composer req jweiland/walls-io-proxy
ddev exec vendor/bin/typo3 extension:setup --extension=walls_io_proxy
Copied!

ExtensionManager

On non composer based TYPO3 installations you can install walls_io_proxy still over the ExtensionManager:

  1. Login

    Login to backend of your TYPO3 installation as an administrator or system maintainer.

  2. Open ExtensionManager

    Click on Extensions from the left menu to open the ExtensionManager.

  3. Update Extensions

    Choose Get Extensions from the upper selectbox and click on the Update now button at the upper right.

  4. Install walls_io_proxy

    Use the search field to find walls_io_proxy. Choose the walls_io_proxy line from the search result and click on the cloud icon to install walls_io_proxy.

Next step

Configure walls_io_proxy.

Configuration

Target group: Developers, Integrators

Minimal Example

  • It is necessary to include static template Walls.io Proxy (walls_io_proxy)

This will set the path to our Main Template file, which can can change of cause:

tt_content.wallsioproxy {
  # Override our template, if you want
  templateRootPaths.10 = EXT:your_ext/Resources/Private/Templates/
}
Copied!

TypoScript Setup Reference

You can change the templateRootPaths. See above.

Further you can change walls.io CSS file and our JS:

# Change CSS file
page.includeCSS.wall-fluid = EXT:your_ext/Resources/Public/Css/WhatEver.css

# Change our JS file
page.includeJSFooterlibs.wall-fluid = EXT:your_ext/Resources/Public/JavaScript/Wall.js
Copied!

ContentElement Settings

After installation of walls_io_proxy you will find a new ContentElement in newContentElementWizard called "Walls.io Proxy". On Tab "Walls.io" you can configure the Output as follows:

Access Token

Enter the access token. Retrieve one in the customer menu of walls.io

Request Type

walls.io comes with two main API interfaces to request wall posts:

PostsRequest (/v1/posts)

These wall posts are sorted by their date of receipt at walls.io. This option should be OK for most customers. Keep in mind: If you add a new social media platform to this wall in customer menu of walls.io ALL wall posts of this platform will get the same creation date (receipt date at walls.io). This may lead to old wall posts visible at first. If you often switch the social media platforms you should consider to use ChangedRequests. If you add a new social media platform once a year we prefer to just wait a few days (20 or 50 new posts) until the ordering is OK for you again.

ChangedRequest (/v1/posts/changed)

These wall posts are sorted by their modification date. If you update an old wall post it will be visible at first position in frontend.

Amount of entries to load

Default: 24 Max: 999 (1000 is the max. value allowed by walls.io)

Define the amount of entries to load from walls.io within one request. If you have some conditions implemented in Fluid View, you should increase this value a little bit to match your needs.

Amount of entries to show

Default: 8

This amount of entries will be visible displayed in frontend. With each hit on the "load more" button this amount of entries will be appended to the current visible entries in frontend.

Show entries of the last x days

Default: 365 (1 year)

Since walls_io_proxy v5.1.0 you can sort wall posts by their modification date. This new API call needs a further mandatory value called since. since is used to load entries from walls.io with a maximum date. Don't be afraid, you still will get the most current, updated entries first ;-)

Administrator manual

This chapter describes how to manage the extension from a superuser point of view.

Clear Cache

walls_io_proxy caches all requested wall posts and containing images. So, if API of walls.io is offline our extension will deliver the cached wall posts. As an administrator you can use the Clear Cache button (visible on the plugin preview) to clear all cached wall posts and images.

Updating

If you update EXT:walls_io_proxy to a newer version, please read this section carefully!

Update to Version 6.0.0

We have migrated the file ending ts to typoscript. Please update your references, if you make use of the old file endings.

Update to Version 5.2.0

If you do not use walls_io_proxy as an API (WallsService) you can update to version 5.2.0 without any problems.

For all other users: WallsService::getWallPosts() expects an object of type PluginConfiguration now. Please update your code accordingly.

Update to Version 5.0.0

We have removed TYPO3 8 compatibility. No new features added, so no problems while upgrading.

Update to Version 4.2.0

As a WallId is not needed anymore, all previously created cache entries are invalid.

If you don't like unused data in database you can remove them with following SQL query:

DELETE FROM sys_registry WHERE entry_namespace = 'WallsIoProxy';

Further you can remove all files in here:

typo3temp/assets/walls_io_proxy

Update to Version 4.0.0

Because of various problems with our PHP socket connection we will use the walls.io API now. That's why you have to pay for Premium account. Else you will not get API access. Insert access token in Extension Settings

Update to Version 3.0.0

We are not using cloudfront in Fluid templates anymore. As we download all external resources now, you should update your Fluid templates to use the local file path.

Update to Version 2.0.0

As we have switched over from Caching Framework to SysRegistry, it would be good, if you remove the unneeded walls_io_proxy Cache Tables from Database.

Known Problems

I'm missing new wall posts

walls_io_proxy was designed to cache wall posts. This is useful if the API of walls.io is offline. Please check the cache invalidation property in the page property. Instead of caching the page content for 8 hours, try values like 5 or 15 minutes.

Here is the enhanced "Known Issues" page, including the updated database modification queries and information for TYPO3 v12:

Emoji Handling

Description

When content retrieved from the service includes emojis, it can cause issues because the default connection charset and the database tables' collation are set to utf8. The utf8 charset in MySQL cannot handle 4-byte Unicode characters, which include many emojis, leading to potential data truncation or errors.

Affected Versions

All versions up to the current release

Workaround

To handle emojis correctly, you need to switch your database and connection settings from utf8 to utf8mb4. The utf8mb4 character set is specifically designed to handle 4-byte Unicode characters.

Steps to Resolve

  1. Update MySQL Database Charset and Collation

    Run the following SQL command to update the database charset:

    ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    Copied!

    Update each table's charset:

    ALTER TABLE index_phash CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    ALTER TABLE index_fulltext CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    Copied!

    Update each text column's charset:

    ALTER TABLE index_phash CHANGE your_column_name your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    ALTER TABLE index_fulltext CHANGE your_column_name your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    Copied!
  2. Update TYPO3 Connection Configuration

    Update the database connection settings in TYPO3 to use utf8mb4:

    • For TYPO3 v9 and earlier:

      Edit your LocalConfiguration.php file:

      'DB' => [
          'Connections' => [
              'Default' => [
                  'driver' => 'mysqli',
                  'dbname' => 'your_database_name',
                  'user' => 'your_database_user',
                  'password' => 'your_database_password',
                  'host' => 'your_database_host',
                  'port' => 3306,
                  'charset' => 'utf8mb4',
                  'tableoptions' => [
                      'charset' => 'utf8mb4',
                      'collate' => 'utf8mb4_unicode_ci',
                  ],
              ],
          ],
      ],
      Copied!
    • For TYPO3 v11:

      Edit your AdditionalConfiguration.php file:

      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['charset'] = 'utf8mb4';
      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['tableoptions']['charset'] = 'utf8mb4';
      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['tableoptions']['collate'] = 'utf8mb4_unicode_ci';
      Copied!
    • For TYPO3 v12:

      Edit your additional.php file:

      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['charset'] = 'utf8mb4';
      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['tableoptions']['charset'] = 'utf8mb4';
      $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['tableoptions']['collate'] = 'utf8mb4_unicode_ci';
      Copied!

      Edit your configuration file in config/system/settings.php:

      return [
          'DB' => [
              'Connections' => [
                  'Default' => [
                      'charset' => 'utf8mb4',
                      'tableoptions' => [
                          'charset' => 'utf8mb4',
                          'collate' => 'utf8mb4_unicode_ci',
                      ],
                  ],
              ],
          ],
      ];
      Copied!
  3. Verify the Changes

    Ensure your database and tables are set to utf8mb4, and test your extension thoroughly to confirm that it can handle emojis correctly.

---

This should help ensure your TYPO3 extension can handle emojis properly by using the utf8mb4 character set.

ChangeLog

Version 8.0.2

  • BUGFIX: Update testing directory

Version 8.0.1

  • Prevent exception, when asset loading results in 403

Version 8.0.0

  • TASK: Add TYPO3 13 compatibility
  • Removed lower version compatibilities

Version 7.0.1

  • TASK: Add import path into proxy directory

Version 7.0.0

  • TASK: Add TYPO3 12 compatibility
  • Test Suite Improvements
  • PHPStan Error Fixes
  • Documentation Updates

Version 6.0.0

  • TASK: Add TYPO3 11 compatibility
  • TASK: Remove TYPO3 9 compatibility

Version 5.2.1

  • BUGFIX: Add post_link to requested fields
  • DOCS: Set indents to 4 spaces
  • TASK: Update format to new config of php-cs-fixer

Version 5.2.0

  • FEATURE: You can choose which request should be used to retrieve wall posts
  • BUGFIX: Repair message after clearing caches of wall posts
  • TASK: Introduce new object: PluginConfiguration
  • Added services.yaml
  • Add a lot more unit* and functional tests

Version 5.1.0

  • Replace PostsRequest with ChangedRequest
  • You can load up to 1000 entries by one call to walls.io
  • Limit the entries to load by a range of x days

Version 5.0.1

  • Fix usage of deprecated method getModuleUrl() in UriBuilderViewHelper

Version 5.0.0

  • Remove TYPO3 8 compatibility
  • Add TYPO3 10 compatibility

Version 4.2.0

  • Deprecated: Do not configure accessToken in Extension Settings anymore
  • Feature: You can configure accessToken in walls.io plugin directly
  • Removed: There is no need to configure wallId anymore
  • Task: Use content record UID as cache identifier
  • Update translations. New label for Clear Cache button

Version 4.1.1

  • Do not show deactivated wall posts

Version 4.1.0

  • Cross posts from other social media plattforms will not be added anymore

Version 4.0.3

  • Add ExtensionKey to composer.json
  • Typo. Change getError() to getErrors().
  • Code CleanUp

Version 4.0.2

  • Add external name for twitter
  • Remove height from checkin name CSS

Version 4.0.1

  • Add Author and prepare comment for HTML

Version 4.0.0

  • Using API access instead of WebSocket

Version 3.0.0

  • Use WebSocket connection to get walls.io entries
  • Update fluid templates to use local file paths
  • All external files will be proxied now
  • Clear Cache of Content Element now truncates Cache Directory, too.

Version 2.0.0

  • Remove ClearCacheHook which removes cached Walls from Caching Framework
  • Use TYPO3 Registry instead of TYPO3 Caching Framework
  • Remove $contentElementUid from WallsIoService as it is not needed anymore

Version 1.0.1

  • Bugfix: Check against jquery before calling masonry

Version 1.0.0

  • Initial upload

Sitemap

Index