MenuLinkLocalized.php

Same filename in other branches
  1. 9 core/modules/menu_link_content/src/Plugin/migrate/source/d7/MenuLinkLocalized.php
  2. 11.x core/modules/menu_link_content/src/Plugin/migrate/source/d7/MenuLinkLocalized.php

Namespace

Drupal\menu_link_content\Plugin\migrate\source\d7

File

core/modules/menu_link_content/src/Plugin/migrate/source/d7/MenuLinkLocalized.php

View source
<?php

namespace Drupal\menu_link_content\Plugin\migrate\source\d7;

use Drupal\menu_link_content\Plugin\migrate\source\MenuLink;
use Drupal\migrate\Row;
// cspell:ignore mlid tsid

/**
 * Drupal 7 localized menu link translations source from database.
 *
 * @MigrateSource(
 *   id = "d7_menu_link_localized",
 *   source_module = "i18n_menu"
 * )
 */
class MenuLinkLocalized extends MenuLink {
    
    /**
     * {@inheritdoc}
     */
    public function query() {
        $query = parent::query();
        $query->condition('ml.i18n_tsid', '0', '<>');
        // The first row in a translation set is the source.
        $query->orderBy('ml.i18n_tsid');
        return $query;
    }
    
    /**
     * {@inheritdoc}
     */
    public function fields() {
        $fields = [
            'ml_language' => $this->t('Menu link ID of the source language menu link.'),
            'skip_source_translation' => $this->t('Menu link description translation.'),
        ];
        return parent::fields() + $fields;
    }
    
    /**
     * {@inheritdoc}
     */
    public function prepareRow(Row $row) {
        $row->setSourceProperty('skip_source_translation', TRUE);
        // Get the mlid for the source menu_link.
        $source_mlid = $this->select('menu_links', 'ml')
            ->fields('ml', [
            'mlid',
        ])
            ->condition('i18n_tsid', $row->getSourceProperty('i18n_tsid'))
            ->orderBy('mlid')
            ->range(0, 1)
            ->execute()
            ->fetchField();
        if ($source_mlid == $row->getSourceProperty('mlid')) {
            $row->setSourceProperty('skip_source_translation', FALSE);
        }
        $row->setSourceProperty('mlid', $source_mlid);
        return parent::prepareRow($row);
    }
    
    /**
     * {@inheritdoc}
     */
    public function getIds() {
        $ids['language']['type'] = 'string';
        $ids['language']['alias'] = 'ml';
        return parent::getIds() + $ids;
    }

}

Classes

Title Deprecated Summary
MenuLinkLocalized Drupal 7 localized menu link translations source from database.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.