0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 10950 Просмотров
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Недавно обновлял компонент самой первой версии Павла Зотова на последнюю версию от Alex Revo, поэтому могу поделиться некоторым опытом.

Собственно как и рекомендует автор были обновлены все файлы, и выполнены запросы
Код
ALTER TABLE `jos_autobb_messages` ADD `company` VARCHAR( 100 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL AFTER `name` ;
ALTER TABLE `jos_autobb_messages` ADD `fuelinputcity` DECIMAL(4,1) NOT NULL DEFAULT '0' AFTER `engine`;
ALTER TABLE `jos_autobb_messages` ADD `fuelinputcountry` DECIMAL(4,1) NOT NULL DEFAULT '0' AFTER `fuelinputcity`;
ALTER TABLE `jos_autobb_messages` ADD `fuelinputboth` DECIMAL(4,1) NOT NULL DEFAULT '0' AFTER `fuelinputcountry` ;
ALTER TABLE `jos_autobb_messages` ADD `lastViewIP` varchar( 20 ) ;
ALTER TABLE `jos_autobb_messages` ADD `power` INT( 11 ) NOT NULL DEFAULT '0' AFTER `volume` ;
ALTER TABLE `jos_autobb_messages` ADD `ip` VARCHAR( 20 ) NULL DEFAULT NULL AFTER `lastViewIP`;
ALTER TABLE `jos_autobb_messages` ADD `banned` TINYINT( 1 ) NOT NULL DEFAULT '0';
ALTER TABLE `jos_autobb_messages` ADD `speed` INT( 3 ) NOT NULL AFTER `power` ;
ALTER TABLE `jos_autobb_messages` ADD `en`TINYINT( 1 ) NOT NULL AFTER `views` ;
ALTER TABLE `jos_autobb_messages` ADD `cr`TINYINT( 1 ) NOT NULL AFTER `en` ;
ALTER TABLE `jos_autobb_messages` CHANGE `en` `en` TINYINT( 1 ) NOT NULL DEFAULT '0',
CHANGE `cr` `cr` TINYINT(1 ) NOT NULL DEFAULT '0';

После чего возникла проблема с путями к изображениям. Сайт действующий и необходимо было сохранить объявления.

В версиях Alex Revo изображения храняться в отедельных папках, в версих - П. Зотова все хранилось в одной папке.


Этот код перекладывает изображения в подпапки

Код
<?
require ('/home/..../public_html/beta/configuration.php');
$dbcon=mysql_connect($mosConfig_host,$mosConfig_user,$mosConfig_password);
mysql_select_db($mosConfig_db, $dbcon);

$dbcon="SELECT  title   FROM  jos_autobb_photos where (msgid >= 2099) AND (msgid <= 2150)";

$result = mysql_query ($dbcon) or die (mysql_error());
$n = mysql_numrows($result);

if($n>0){
$i=0;
while($i<$n){
$myrow=mysql_fetch_array($result);
if ($myrow["title"])  {
                $zpl  = $myrow["title"];
                $exl=explode("-", $myrow["title"]);
                mkdir($exl [1], 0777);
   

                         
if (copy('/home/...../public_html/components/com_autobb/photos/'.$zpl.'', '/home/..../public_html/beta/components/com_autobb/photos/'.$exl[1].'/'.$zpl.''))
{ echo "ОК </br>"; }
else
{ echo "Ошибка при копировании"; }

}

$i++;
}

 echo "Копирование успешно выполнено!";

}


?>


Следующий код  модифицирует пути к изображениям в БД
Код
<?

require ('/home/..../public_html/beta/configuration.php');
$dbcon=mysql_connect($mosConfig_host,$mosConfig_user,$mosConfig_password);
mysql_select_db($mosConfig_db, $dbcon);

$dbcon="SELECT  title   FROM  jos_autobb_photos where (msgid >= 2099) AND (msgid <= 8297)";

$result = mysql_query ($dbcon) or die (mysql_error());
$n = mysql_numrows($result);

if($n>0){
$i=0;
while($i<$n){
$myrow=mysql_fetch_array($result);
if ($myrow["title"])  {
                $zpl  = $myrow["title"];
                $exl=explode("-", $myrow["title"]);
$zdr = $exl[1];
$zdr .= "/$zpl";

echo $zdr;

$dbrez ="UPDATE jos_autobb_photos SET title = '".$zdr."' WHERE title = '".$zpl."' ";
$resms = mysql_query ($dbrez) or die (mysql_error());
           
}

$i++;
}

 echo "Изменение успешно выполнено!";

}


?>


Коды из этих листингов использовались в отдельных php - файлах.
Замечу что описанные операции выполнялись достаточно долго (копировалось около 8000 тысяч объявлений), поэтому вводились диапазоны объявлений.
Замечу, что код будет работать гораздо быстрее, если переделать проверки и  возложить их на MySQL.
« Последнее редактирование: 01.10.2008, 03:54:33 от dmsoh »
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
На сколько я помню последняя версия компонента от Павла Зотова хранит фото из объявлений в каждой папке, как и в версиях AutoBB REV, так что приведенные рецепты будут полезны пользователям, действительно, самых первых версий компонента. +1
*

dzaharov

  • Осваиваюсь на форуме
  • 43
  • 0 / 0
Отличный код, только подскажите как его запустить на выполнение?
Т.е. я сделал файл с данным кодом, например copy.php
А откуда/как его запускать? В строке браузера появляется просто пустое окно....
Кстати, в пути /home/..../public_html/beta/components/com_autobb/photos/ зачем нужна папка beta? Я её удалил, чтобы копировалось сразу в рабочий компонент autobb/photos/
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Отличный код, только подскажите как его запустить на выполнение?
Т.е. я сделал файл с данным кодом, например copy.php
А откуда/как его запускать? В строке браузера появляется просто пустое окно....
Кстати, в пути /home/..../public_html/beta/components/com_autobb/photos/ зачем нужна папка beta? Я её удалил, чтобы копировалось сразу в рабочий компонент autobb/photos/


Файл copy.php должен находиться в той папке куда вы хотите скопировать фото. Я специально создал отдельный каталог чтобы в случае если что-то пойдет не так не испортить рабочий каталог с фотографиями компонента, тоже самое рекомендую и вам. А в последствии заменяете рабочий каталог компонента на каталог куда копировали фотографии.

Обратите также внимание на путь к конфигурационному файлу require ('/home/..../public_html/beta/configuration.php'); - скрипт использует данные для соединения с БД и без него код работать не будет.

Запускаете скрипт из строки браузера обычным образом site.ru/components/com_autobb/new_photos/copy.php в результате в каталоге new_photos должны окзаться фотографии упорядоченные по подпапкам.

Затем запускаете второй код - который преобразует пути в БД.

И еще сегодня заметил одну проблему - в админке выскакивает ошибка permission denied unlink(/.....) при попытке удалить объявление, фотографии которого были скопированы вышеуказанным образом. Догадываюсь, что возможно проблема в UID пользователей.

Т.е. после копирования владельцем файлов стал пользователь abdmsoh. А те объявы, которые создает  autobb - у них владелец apache.

Alex Revo может быть вы поможете решить проблему, возможно процедура копирования файлов не совсем корректная?
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Проверьте права на папку и файлы после такого копирования. Попробуйте рекурсивно поставить всем 777, а затем удалить какое-нить старое объявление с фото.
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Оказалось, проблема хостинга, т.к. владельцем файлов при переносе стал пользователь NoBody.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не сохраняются данные при настройки компонента autobb

Автор FLYERok

Ответов: 4
Просмотров: 1923
Последний ответ 13.12.2011, 16:28:51
от FLYERok
Дополнительные функции компонента

Автор artefakt

Ответов: 1
Просмотров: 1776
Последний ответ 25.09.2011, 12:29:03
от artefakt
создать новую категорию ТС.

Автор A28

Ответов: 2
Просмотров: 1907
Последний ответ 29.06.2011, 12:08:30
от Alex Revo
Когда приблизительно планируется выход компонента для J1.6?

Автор xander kej

Ответов: 6
Просмотров: 2281
Последний ответ 08.06.2011, 17:51:05
от yuri-it
Ошибки компонента

Автор holodniu

Ответов: 9
Просмотров: 2146
Последний ответ 28.02.2011, 16:35:14
от holodniu