Esta parte do código SQL configura o ambiente para gerenciar novos artigos no Joomla e K2 a partir do ID 15 da tabela content, usando a categoria padrão "Uncategorized" (ID 2). Isso envolve limpar os dados existentes a partir do ID 15, ajustar o auto_increment para começar em 15 e preparar o ambiente para novas inserções de artigos.

Passo 1: DELETE e ALTER TABLE

Este trecho de código SQL realiza duas operações:

Deleta todas as linhas da tabela "dyem7_content" onde o id é maior ou igual a 15.

Altera o valor auto_increment da tabela "dyem7_content" para 15.

/*
    Este trecho de código SQL realiza duas operações:
    1. Deleta todas as linhas da tabela "dyem7_content" onde o id é maior ou igual a 15.
    2. Altera o valor auto_increment da tabela "dyem7_content" para 15.
*/
DELETE FROM dyem7_content WHERE id >= 15;
ALTER TABLE dyem7_content AUTO_INCREMENT = 15;
Passo 2: SELECT com JOIN

Seleciona registros da tabela dyem7_k2_items e atribui valores específicos a cada coluna selecionada.

/*
    Seleciona registros da tabela dyem7_k2_items e atribui valores específicos a cada coluna selecionada.
    O resultado é uma tabela temporária contendo as colunas título, alias, introtext, fulltext, state, created, created_by, created_by_alias, modified, modified_by, checked_out, attribs, publish_up, images, urls, version, ordering, metakey, metadesc, access, hits, metadata, featured, language e note.
    Os registros são ordenados por id.
    A categoria para cada item é definida como 2.
*/
SELECT 
    title,
    alias,
    introtext,
    2 as catid,
    `fulltext`,
    CASE 
        WHEN published = 0 THEN 0
        WHEN trash = 1 THEN -2
        ELSE 1
    END as state,
    created,
    created_by,
    created_by_alias,
    CASE modified
        WHEN '0000-00-00 00:00:00' THEN created
        ELSE modified
    END as modified,
    modified_by,
    checked_out,
    '{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":""}' AS attribs,
    publish_up,
    '' as images,
    '' as urls,
    1 as version,
    ordering,
    metakey,
    metadesc,
    access,
    hits,
    metadata,
    featured,
    language,
    '' as note
FROM `dyem7_k2_items`
ORDER BY id;
Passo 3: Outro SELECT com JOIN

Seleciona registros da tabela dyem7_content para criar uma tabela temporária com valores específicos.

/*
    Seleciona registros da tabela dyem7_content onde o id é maior ou igual a 15, ordenados por id.
    Em seguida, atribui valores específicos a cada coluna selecionada.
    O resultado é uma tabela temporária contendo as colunas parent_id, lft, rgt, level, name, title e rules.
*/
SELECT 
    27 AS parent_id,
    @row_number := @row_number + 1 AS lft,
    @row_number := @row_number + 1 AS rgt,
    3 AS level,
    CONCAT('com_content.article.', id) AS name,
    title AS title,
    '{}' AS rules
FROM (
    SELECT * FROM dyem7_content WHERE id >= 15 ORDER BY id ASC
) AS articles, (SELECT @row_number := 0) AS init;
Passo 4: UPDATE

Atualiza o campo asset_id da tabela dyem7_content com valores correspondentes da tabela dyem7_assets.

/*
    Atualiza o campo asset_id da tabela dyem7_content com valores correspondentes da tabela dyem7_assets.
    A atualização é realizada para registros na tabela dyem7_content onde o id é maior ou igual a 15.
    A correspondência entre as tabelas é feita através do campo name da tabela dyem7_assets, que deve ser igual a CONCAT('com_content.article.', c.id),
    onde c é um alias para a tabela dyem7_content.
*/
UPDATE dyem7_content AS c
JOIN dyem7_assets AS a ON CONCAT('com_content.article.', c.id) = a.name
SET c.asset_id = a.id
WHERE c.id >= 15;
Passo 5: INSERT

Atualiza os workflows para os artigos existentes com id >= 15.

/*
    Atualiza os workflows para os artigos existentes com id >= 15.
*/
INSERT INTO `dyem7_workflow_associations` (`item_id`, `stage_id`, `extension`)
SELECT id, 1, 'com_content.article'
FROM dyem7_content
WHERE id >= 15;
Passo 6: Inserir Categorias K2 nas Categorias do Joomla

Insere categorias K2 na tabela de categorias do Joomla, começando a partir do ID máximo existente mais um.

/*
    Passo 1: Obter o ID máximo da tabela de categorias do Joomla
*/
SET @max_id = (SELECT MAX(id) FROM dyem7_categories);

/*
    Passo 2: Incrementar o ID máximo para usar como ID inicial para novas entradas
*/
SET @new_id = @max_id + 1;

/*
    Passo 3: Inserir as categorias K2 na tabela de categorias do Joomla
*/
INSERT INTO dyem7_categories (id, asset_id, parent_id, lft, rgt, level, path, extension, title, alias, note, description, published, checked_out, checked_out_time, access, params, metadesc, metakey, metadata, created_user_id, created_time, modified_user_id, modified_time, hits, language, version)
SELECT 
    @new_id := @new_id + 1 AS id,
    0 as asset_id,
    parent as parent_id,
      
    0 as lft,
    0 as rgt,
    0 as level,
    alias as path,  
	 'com_content' AS extension,
    name as title,
    alias,
    '' as note,
    description,
    CASE 
        WHEN published = 0 THEN 0
        WHEN trash = 1 THEN -2
        ELSE 1
    END AS published ,     
    NULL as checked_out,
    -- now as checked_out_time,
    now() as checked_out_time,
    access,
    '{"category_layout":"","image":"","image_alt":""}' as params,
    '' as metadesc,
    '' as metakey,
    '{"author":"","robots":""}' as metadata,
    0 as created_user_id,
    now() as created_time,
    0 as modified_user_id,
    now() as modified_time,
    0 as hits,
    language,
    1 as version
FROM dyem7_k2_categories
ORDER BY parent, ordering;