Тема: Обновление 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>закрыли БД";
?>