loadOgDataByType() and loadOgDataByMenu() ignore language on multilingual sites #47

Closed
opened 2026-06-21 14:54:12 +00:00 by jmiller · 1 comment
Owner

Problem

loadOgDataByType() (line 324) and loadOgDataByMenu() (line 346) in MokoOG.php query #__mokoog_tags without a language filter. The main loadOgData() method correctly filters by (language = $lang OR language = '*'), but these two helper methods do not.

Since the unique key is (content_type, content_id, language), multiple records can exist per content item. Without a language filter, loadObject() returns an arbitrary match.

Impact

On multilingual sites, category-level and menu-item-level OG fallback data may come from the wrong language.

Fix

Add the same language filter pattern used in loadOgData():

$lang = Factory::getLanguage()->getTag();
->where('(' . $db->quoteName('language') . ' = ' . $db->quote($lang)
    . ' OR ' . $db->quoteName('language') . ' = ' . $db->quote('*') . ')')

Files

  • source/packages/plg_system_mokoog/src/Extension/MokoOG.php:324-337
  • source/packages/plg_system_mokoog/src/Extension/MokoOG.php:346-358
## Problem `loadOgDataByType()` (line 324) and `loadOgDataByMenu()` (line 346) in `MokoOG.php` query `#__mokoog_tags` without a language filter. The main `loadOgData()` method correctly filters by `(language = $lang OR language = '*')`, but these two helper methods do not. Since the unique key is `(content_type, content_id, language)`, multiple records can exist per content item. Without a language filter, `loadObject()` returns an arbitrary match. ## Impact On multilingual sites, category-level and menu-item-level OG fallback data may come from the wrong language. ## Fix Add the same language filter pattern used in `loadOgData()`: ```php $lang = Factory::getLanguage()->getTag(); ->where('(' . $db->quoteName('language') . ' = ' . $db->quote($lang) . ' OR ' . $db->quoteName('language') . ' = ' . $db->quote('*') . ')') ``` ## Files - `source/packages/plg_system_mokoog/src/Extension/MokoOG.php:324-337` - `source/packages/plg_system_mokoog/src/Extension/MokoOG.php:346-358`
jmiller added the bugproduction-readiness labels 2026-06-21 14:54:12 +00:00
Author
Owner

Branch created: feature/47-loadogdatabytype-and-loadogdatabymenu-ig

git fetch origin
git checkout feature/47-loadogdatabytype-and-loadogdatabymenu-ig
Branch created: [`feature/47-loadogdatabytype-and-loadogdatabymenu-ig`](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteOpenGraph/src/branch/feature/47-loadogdatabytype-and-loadogdatabymenu-ig) ```bash git fetch origin git checkout feature/47-loadogdatabytype-and-loadogdatabymenu-ig ```
Sign in to join this conversation.
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteOpenGraph#47