Список разделов › phpBBex 1.x (поддерживается) › Мастерская 1.x
<?php
/**
*
* @Update Birthday format in USER_TABLE
*
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
//Сообщаем браузеру кодировку страницы - utf-8
header('Content-Type: text/html;charset=utf-8');
require_once($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$sql = 'SELECT user_id, user_birthday FROM ' . USERS_TABLE;
$result = $db->sql_query($sql);
$file = @fopen('output.txt','a+');
$i = 0;
while ($row = $db->sql_fetchrow($result))
{
if (empty($row['user_birthday'])) continue;
if (preg_match('/[\d\s]?\d-[\d\s]?\d-\d{4}/', $row['user_birthday']))
{
$i++;
$numbs = explode('-', $row['user_birthday']);
$str = (strlen($numbs[0]) == 1) ? " $numbs[0]" : $numbs[0];
$str .= '-';
$str .= (strlen($numbs[1]) == 1) ? " $numbs[1]" : $numbs[1];
$str .= '-';
$str .= $numbs[2];
$sql_ary = array(
'user_birthday' => $str,
);
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . (int) $row['user_id'];
$db->sql_query($sql);
fwrite($file, "$row[user_id] : $row[user_birthday] ===>>> $str\n");
}
}
echo "Обновлено $i строк";
?>
//функция поиска вложенных файлов
function find_file($file)
{
$mime = mime_content_type($file);//MIME-тип для файла
if (!$mime) return false;
if (strpos($mime, 'image/') !== false) //если файл - картинка
{
$filename_full = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . substr($file, 1);//полный путь к большой картинке
if (file_exists($filename_full)) //если нашли большую картинку, то возвращаем к ней полный путь
{
return $filename_full;
}
else
{
$find_big = true;//поищем большую картинку в других папках
$filename_small = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . $file;//сохраним полный путь к маленькой картинке
}
}
else
{
$filename_full = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . $file;//полный путь к вложенному файлу
if (file_exists($filename_full)) return $filename_full;
}
//ищем в других папках UCOZ_ATTACHMENTS_PATH
$dirs = scandir(UCOZ_ATTACHMENTS_PATH);
foreach($dirs as $dir)
{
if ($dir == '.' or $dir == '..' or (int)($data[1]/100)) continue;
if ($find_big)
{
$filename_full = UCOZ_ATTACHMENTS_PATH . $dir . '/' . substr($file, 1);//полный путь к большой картинке
if (file_exists($filename_full)) return $filename_full;
}
$filename_full = UCOZ_ATTACHMENTS_PATH . $dir . '/' . $file;//полный путь к вложенному файлу. Если будет найдена маленькая картинка, то она тоже вернётся
if (file_exists($filename_full)) return $filename_full;
}
if ($filename_small and file_exists($filename_small)) return $filename_small;//если маленькая картинка есть, вернем её полный путь
//ищем файлы среди загруженных файлов
global $db, $config, $phpbb_root_path;
if ($find_big) //если файл - картинка
{
$sql = 'SELECT physical_filename
FROM ' . ATTACHMENTS_TABLE . '
WHERE real_filename = \'' . substr($file, 1) . '\' OR real_filename = \'' . $file . '\'';
}
else
{
$sql = 'SELECT physical_filename
FROM ' . ATTACHMENTS_TABLE .'
WHERE real_filename = \'' . $file . '\'';
}
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if ($row['physical_filename'])
{
copy("{$phpbb_root_path}$config[upload_path]/$row[physical_filename]", UCOZ_ATTACHMENTS_PATH . $file);
echo "ВНИМАНИЕ: вложенный файл $file скопирован несколько раз<br/>";
return UCOZ_ATTACHMENTS_PATH . $file;
}
return false;
}
//функция поиска вложенных файлов
function find_file($file, &$data)
{
if ($filename_full = find_file($file, $data)) //ищем файл, $filename = полный путь или false
{
SQL ERROR [ mysqli ]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 [1064]
file_put_contents('Z:\какая-нибудь_папка\debug.txt', $sql);
exit;
Алексей:Aspid, странно что у тебя отлично переносятся юзеры, как раз в таблице users в phpbbex дополнительно присутствуют поля:
user_gender (строка 547 в скрипте v1.0.2)
user_rating_positive (552)
user_rating_negative (553)
- для phpbb3 эти строки надо закомментировать.
Также для phpbb3 надо исправить функцию add_bbcode(), т.к. в таблице phpbb_bbcodes нет поля - bbcode_order. Или закомментировать вызов этой функции на строке 1843, а после конвертации bb-коды добавить вручную в админке.
Строки 1708 нет ни в одном конверторе, вставил такАлексей:Посмотрел функцию импорта сообщений - она должна быть совместима с phpbb3. Cудя по ошибке, SQL-запрос формируется с неправильным синтаксисом. Сделайте сброс SQL-запроса в функции ucoz_import_messages, н-р, вставьте код после строки 1708, вроде такого:
function ucoz_import_messages($ucoz_dump)
file_put_contents('D:\EleanorServ\debug.txt', $sql);
exit;
1416: $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $data_post);
Когда я дополнял скрипт этой репутацией, то думал, что достаточно репутацию записать в определенном поле таблицы phpbb_users. А оказалось, что не достаточно, надо узнавать подробности у VEG (Евгения). Я тогда просто обнулил у всех эту репутацию.Mneznakomec:После импорта постов, если "плюсануть" пост, то у автора меняется репутация с любой цифры на 1 (обнуляется и прибавляется 1). Это, я так понимаю, пересчитываются реальные плюсы, а на значение в профиле наплевать движку
if (crypt($user_input, $password) == $password) {
echo "Пароль верен!";
}
?>
crypt($password_old_format, $row['user_password']) == $row['user_password']"
Неплохо бы.Алексей:надо узнавать подробности у VEG
Пробовал, но уже после ручного завершения и без импорта пользователей. Карты пользователей не было, поэтому посты добавлялись под гостем. Причём снова отвалились через 2 тысячи, причём уже на более сложном посте, пока его ковыряю.Алексей:удалить на глаз около 40 тысяч первых сообщений из дампа uCoz и запустить скрипт
Наврядли. Лимит памяти отключается там, пробовал на хроме и фоксе последнем: висят в одном месте. Хотя один раз хром вывалил ошибку.Алексей:возможно проблема в нехватки памяти, браузер
Первый - авторизация LDAP, есть настройка в форуме. Как я понял - сторонний сервер авторизации. Не нужно нам, короче. :) (у меня его нет)Алексей:Но в той папке есть еще два файла - auth_ldap.php и auth_apache.php
Нет, пароли исключительно латиницей, причем символами только.Алексей:Возможно проблема в кирилице и надо как-то преобразовывать введенный пароль, попробуйте для проверки использовать логин и пароль только на английском языке
if($r_user[3])/// У пользователя есть Аватар
ucoz_add_avatar($r_user[3], $user_id, $user);
// Если заполнено дополнительное поле AOL (или другое)
$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (user_id, pf_mobile_number, pf_equipment, pf_bike, pf_real_name) VALUES(' . $user_id . ',"' . _E($r_user[19]) . '","' . _E($r_user[20]) . '","' . _E($r_user[18]) . '","' . _E($r_user[5]) . '")';
$db->sql_query($sql);
//
<div class="uSpoilerClosed"><div class="uSpoilerButBl"><input type="button" class="uSpoilerButton" onclick="if ($($(this).parent().next('.uSpoilerText'))[0].style.display == 'none'){$($(this).parent().next('.uSpoilerText'))[0].style.display = '';$(this).val('Закрыть спойлер');$(this).parent().parent().attr('class','uSpoilerOpened');}else{$($(this).parent().next('.uSpoilerText'))[0].style.display = 'none';$(this).val('Открыть спойлер');$(this).parent().parent().attr('class','uSpoilerClosed');}" value="Открыть спойлер"/></div><div class="uSpoilerText" style="display:none;">{TEXT}</div></div>
<div class="uSpoilerClosed"><div class="uSpoilerButBl"><input type="button" class="uSpoilerButton" onclick="if ($($(this).parent().next('.uSpoilerText'))[0].style.display == 'none'){$($(this).parent().next('.uSpoilerText'))[0].style.display = '';$(this).val('[-] {INTTEXT}');$(this).parent().parent().attr('class','uSpoilerOpened');}else{$($(this).parent().next('.uSpoilerText'))[0].style.display = 'none';$(this).val('[+] {INTTEXT}');$(this).parent().parent().attr('class','uSpoilerClosed');}" value="[+] {INTTEXT}"/></div><div class="uSpoilerText" style="display:none;">{TEXT}</div></div>