1

Тема: Обновление joomla 1.0.12 до joomla 3.x. Скрипт на PHP.

Оказалось просто невозможным обновить очень старую версию ЦМС  joomla 1.0.12 до современной версии joomla 3.x.
Пришлось написать на PHP скрипт переноса постов и комментариев на joomla 3.3.3


Структуры таблиц:

КОММЕНТЫ     joomla 1.0.12  -  jos_akocomment
contentid - ид поста для коммента
name - имя коментатора
comment - текст коммента
date - дата коммента

КОММЕНТЫ  joomla 3.3 - jcomments   
path=0
object_id - ид поста
object_group= com_content
userid=0
name    username  comment    ip    date   published   


КОНТЕНТ  joomla 1.0.12
jos_content  (197 записей)
title = title_alias заголовок
introtext - вводный
fulltext - основной
sectionid - секция
catid  - категория
created - дата создания
images - картинка

КОНТЕНТ    joomla 3.3
created = 2014-11-01 10:42:40
featured =1 на главной


<?php

echo "<br>ШАГ 1 - подкл к БД.....";
 
$host="localhost";
$user="be...";  // СТАРАЯ  joomla 1.0.12
$pwd="N....";
$database_name="be.....lt";

// ТЕСТ  на  joomla 3.3.3
 $user2="be.....b"; 
 $pwd2="7d.....k";
 $database_name2="b....b";


echo "<br>1 - Подключаемся к    {$database_name} - {$user} - {$pwd} <br>";
$sql1 = mysql_connect($host,$user,$pwd) or die(mysql_error());
mysql_select_db($database_name,$sql1); 

echo "<br>2 - Подключаемся к    {$database_name2} - {$user2} - {$pwd2} <br>";
$sql2 = mysql_connect($host,$user2,$pwd2) or die(mysql_error());
mysql_select_db($database_name2,$sql2); 


mysql_query ('SET NAMES utf-8',$sql1);

// ПОСТЫ в БД1!
$sql = mysql_query("SELECT `id`, `title`,`introtext`,`fulltext`,`sectionid`,`catid`,`created`,`images` FROM `jos_content`",$sql1);

$num_rows = mysql_num_rows($sql);    
echo "<br> количество записей в базе1 :{$num_rows} <br>";
 while ($row = mysql_fetch_array($sql)) {
//print_r($row);
$id=$row[0];
$title = addslashes($row[1]);
$introtext = addslashes($row[2]);
$fulltext = addslashes($row[3]);
$sectionid = $row[4];
$catid = $row[5];
$created = $row[6];
$images = addslashes($row[7]);

if ($images<>"") {
$images = strstr($images,'.', true);
$images = "{\"image_intro\":\"images\/stories\/$images.jpg\",\"float_intro\":\"\",\"image_intro_alt\":\"\",\"image_intro_caption\":\"\",\"image_fulltext\"
:\"images\/stories\/$images.jpg\",\"float_fulltext\":\"\",\"image_fulltext_alt\":\"\",\"image_fulltext_caption\":\"\"}";
}



echo "<br>_Скачали пост {$id}: ".$title. "<br><br>";
echo "images: ".$images;

// ЗАПИСЬ ПОСТА В БД2
$result = mysql_query("INSERT INTO `w8kiv_content` (`title`,`alias`,`introtext`,`fulltext`,`state`,`catid`,`created`,`created_by`,`images`,`featured`) 
VALUES  ('$title','$title','$introtext','$fulltext','1','$catid','$created','545','$images','1')",$sql2) or die("Invalid query: " . mysql_error());

$idpost = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM w8kiv_content"));
echo "<br> Добавили пост {$idpost[0]}  <br>";

// Получить КОММЕНТАРИи с БД1
$sql3 = mysql_query("SELECT `contentid`,`name`,`comment`,`date` FROM `jos_akocomment` WHERE `contentid` =$id",$sql1);
 
$num_rows = mysql_num_rows($sql3);    
echo "<br> количество КОММЕНТАРИЕВ:{$num_rows} <br>";
while ($row = mysql_fetch_array($sql3)) {
$contentid = $row[0]; //ID комментируемого поста
$name = $row[1]; //имя автора коммента
$comment = addslashes($row[2]); // текст комментария
$date = $row[3]; // дата комментария
echo "<br>КОММЕНТАРИЙ. contentID:{$contentid}, {$date},   {$comment} <br>";

// ЗАПИСЬ КОММЕНТАРИЯ В БД2
$result = mysql_query("INSERT INTO `w8kiv_jcomments` (`object_id`,`object_group`,`lang`,`name`,`username`,`comment`,`ip`,`date`,`published`)
VALUES  ('$idpost[0]','com_content','ru-RU','$name','$name','$comment','1.1.1.1','$date','1')",$sql2) or die("Invalid query: " . mysql_error());
}

}

mysql_close($sql1);
mysql_close($sql2);        
echo "<br>закрыли БД";
?>

Поделиться