Функция преобразования CP1251 в UTF8

function cp1251_to_utf8 ($txt)  {
    $in_arr = array (
        chr(208), chr(192), chr(193), chr(194),
        chr(195), chr(196), chr(197), chr(168),
        chr(198), chr(199), chr(200), chr(201),
        chr(202), chr(203), chr(204), chr(205),
        chr(206), chr(207), chr(209), chr(210),
        chr(211), chr(212), chr(213), chr(214),
        chr(215), chr(216), chr(217), chr(218),
        chr(219), chr(220), chr(221), chr(222),
        chr(223), chr(224), chr(225), chr(226),
        chr(227), chr(228), chr(229), chr(184),
        chr(230), chr(231), chr(232), chr(233),
        chr(234), chr(235), chr(236), chr(237),
        chr(238), chr(239), chr(240), chr(241),
        chr(242), chr(243), chr(244), chr(245),
        chr(246), chr(247), chr(248), chr(249),
        chr(250), chr(251), chr(252), chr(253),
        chr(254), chr(255)
    );   
 
    $out_arr = array (
        chr(208).chr(160), chr(208).chr(144), chr(208).chr(145),
        chr(208).chr(146), chr(208).chr(147), chr(208).chr(148),
        chr(208).chr(149), chr(208).chr(129), chr(208).chr(150),
        chr(208).chr(151), chr(208).chr(152), chr(208).chr(153),
        chr(208).chr(154), chr(208).chr(155), chr(208).chr(156),
        chr(208).chr(157), chr(208).chr(158), chr(208).chr(159),
        chr(208).chr(161), chr(208).chr(162), chr(208).chr(163),
        chr(208).chr(164), chr(208).chr(165), chr(208).chr(166),
        chr(208).chr(167), chr(208).chr(168), chr(208).chr(169),
        chr(208).chr(170), chr(208).chr(171), chr(208).chr(172),
        chr(208).chr(173), chr(208).chr(174), chr(208).chr(175),
        chr(208).chr(176), chr(208).chr(177), chr(208).chr(178),
        chr(208).chr(179), chr(208).chr(180), chr(208).chr(181),
        chr(209).chr(145), chr(208).chr(182), chr(208).chr(183),
        chr(208).chr(184), chr(208).chr(185), chr(208).chr(186),
        chr(208).chr(187), chr(208).chr(188), chr(208).chr(189),
        chr(208).chr(190), chr(208).chr(191), chr(209).chr(128),
        chr(209).chr(129), chr(209).chr(130), chr(209).chr(131),
        chr(209).chr(132), chr(209).chr(133), chr(209).chr(134),
        chr(209).chr(135), chr(209).chr(136), chr(209).chr(137),
        chr(209).chr(138), chr(209).chr(139), chr(209).chr(140),
        chr(209).chr(141), chr(209).chr(142), chr(209).chr(143)
    );   
 
    $txt = str_replace($in_arr,$out_arr,$txt);
    return $txt;
}

Перенос Drupal с локального Denver’а на хостинг

Хорошо протестировав свой drupal-сайт на денвере, настроив все нужные модули и нарисовав красивый дизайн самое время перенести сайт с денвера, из закоулков жесткого диска на хороший хостинг, «показать его миру».
Вот о том, как это сделать и пойдет сегодня речь.
Процесс переноса сайта с денвера на хостинг рассмотрим детально на примере панели управления cPanel

  • cPanel — одна из лучших, а может и лучшая из панелей управления веб-хостингом. Она является стандартом «де-факто», в мире хостинга, т.к. предоставляет интуитивно понятный интерфейс, чёткую логику управления, использование шаблонов а также переведена на 25 языков.

Создание БД и ее настройка.
Для создания базы данных, в которую мы немного позже перенесем свою базу (с денвера), нужно найти в cPanel ярлык доступа к управлению базами данных.
Выглядеть он примерно будет так:

cPanel 11, базы данных MySQL

На открывшейся странице вводим имя новой базы данных — «myDrupalDB» и нажимаем «создать базу данных»

Создание новой базы данных в cPanel 11

Вы должны увидеть сообщение о том, что база была успешно создана. Теперь возвращаемся на предыдущую страницу и создаем нового пользователя баз данных «myUser» с паролем «myPass» ( конечно замените пароль на свой -) ).
Нажимаем «создать пользователя»

Создание нового пользователя в cPanel 11

Как и в предыдущем случае вы увидите сообщение об успешном создании пользователя.
Снова вернемся на страницу назад и определим доступ пользователя к базе данных drupal. Для этого из списка пользователей выберем «myUser», из списка бд выберем «myDrupalDB» и нажмем «Добавить»

Назначение пользователя базе данных в cPanel 11

На открывшейся странице определим права пользователя, просто установив галочку «ALL PRIVILEGES» (Все привелегии) и нажмем «Внести изменения».

Определение прав пользователя базы данных в cPanel 11

Перенос файлов

Для переноса файлов drupal, вы можете воспользоваться любым FTP-менеджером. Я, к примеру, отдаю предпочтение FileZilla, но это дело вкуса, а о вкусах как известно не спорят. Главное — перенести все файлы друпала в нужную папку, «корневую директорию». Какая именно директория у вас корневая, вы можете узнать
а) На главной странице cPanel (обычно в левом меню пункт «домашняя директория»)
б) Из письма, которое обычно присылает хостер после регистрации
в) У техподдержки хостера
г) Методом научного тыка

Однако, перед загрузкой файлов drupal на сервер, необходимо внести изменения в файл settings.php
…\www\sites\default\settings.php

Исправляем:

# $base_url = ‘http://www.example.com’; // NO trailing slash!
на
$base_url = ‘http://www.ваш_домен.com’;
а также строку номер 94 на
$db_url = ‘mysql://myUser:myPass@localhost/myDrupalDB’;
Где myUser,myPass и myDrupalDB — данные, которые вы указывали при создании бд и пользователя.
localhost — верно для подавляющего большинства хостеров, однако бывают и исключения, например masterhost.
Теперь смело загружайте все файлы drupal на сервер.

Перенос (импорт) базы данных drupal
Последний шаг — перенос базы с помощью phpMyAdmin.
Запустив предварительно денвер, открываем localhost/Tools/phpMyAdmin/, выбираем используемую базу и переходим в раздел «Экспорт».
Из настроек экспорта нам необходимо поменять только вариант упаковки в «нет» на «zip».

Экспотр базы данных при помощи phpmyadmin

После того, как вы кликнете «ок», начнется загрузка zip-архива. Этот архив — и есть ваша база данных.

Осталось всего ничего — скопировать только что сохраненную вами базу в недавно созданную. Для этого в панели управления найдите ярлык phpMyAdmin

Импорт базы данных при помощи phpMyAdmin

На открывшейся странице выберете базу данных «myDrupalDB» и перейдите в раздел «Импорт», где укажите сохраненный вами файл с дампом базы данных. Когда вы кликнете ок, начнется импорт. Если ваша база перешегнула порог в несколько мегабайт, вам вероятно необходимо будет возобновлять процесс импорта (просто следуйте появляющимся инструкциям).

И вот, все закончено. Поздравляю, вы только что перенесли сайт на drupal с денвера на хостинг!
Не забудьте,если необходимо, изменить именные сервера (ns-сервера) в панели управления доменом и помните, что на делегирование домена, а также на полное обновление именных серверов может уйти до двух суток.

Оригинал http://www.wisecat.ru/2008/7/13/perenos-drupal-s-denvera-na-khosting

MicroBlog и визуальный редактор SPAW2

Сейчас пойдет речь о том, как прикрутить визуальный редактор SPAW2 к блоговому движку MicroBlog.
Первым делом загрузите визуальный редактор SPAW2 по адресу:

http://www.spaweditor.com

Вам нужно загрузить вторую версию, а не первую (файл spaw-php-2081-gpl.zip, 501 Кб). Распакуйте архив в каталог, в котором у вас размещен микроблог. Иерархия каталогов получится примерно такая:

data <каталог>
img <каталог>
plugins <каталог>
spaw2 <каталог>
admin.php <файл>
index.php <файл>
...

Читать далее

Генеральная уборка или ускорение WordPress

Со временем вы заметите, что ваш блог уже не такой шустрый, как раньше. А всему виной «мусор», накопившийся в базе данных блога. Зайдите в phpMyAdmin и выполните следующие запросы:

SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);

DELETE FROM wp_comments WHERE comment_type = 'pingback';

DELETE from wp_comments WHERE comment_approved = '0'

Первый запрос удаляет неиспользуемые теги (метки), а остальные – мусор, вроде спам-комментариев и всего остального, что замедляет работу WP. Имя таблиц нужно заменить на свои (если вы изменили префикс таблиц).
После этого выберите все таблицы и выберите из меню действий Оптимизировать таблицу. После этого ваш блог заработает быстрее.
Поскольку приведенные выше действия нужно выполнять регулярно, скажем, раз в месяц – все зависит от популярности вашего блога, я решил создать PHP-сценарий, автоматизирующий данные задачи. Сценарий clean.php выполняет очистку блога от мусора и выполняет оптимизацию таблиц. Сценарий нужно поместить в один каталог с файлом wp-config.php.
По умолчанию сценарий работает в «тихом режиме» – выводит только выполняемые запросы, но не выводит результат выполнения. Вы можете, при желании, конечно, его модифицировать, добавив, например, количество удаленных записей или отчет об оптимизации. Но учтите, что функциональность сценария от этого лучше не станет.

Листинг. Сценарий clean.php
<?
echo "<p>Сценарий оптимизации WordPress
<p>&copy 2010 Денис Колисниченко
<p>";

include "wp-config.php";

// константы из wp-config.php
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME);

// список таблиц для оптимизации. Остальные таблицы редко требуют оптимизации
$optimize_tables[] = $table_prefix."commentmeta";
$optimize_tables[] = $table_prefix."comments";
$optimize_tables[] = $table_prefix."links";
$optimize_tables[] = $table_prefix."postmeta";
$optimize_tables[] = $table_prefix."posts";
$optimize_tables[] = $table_prefix."usermeta";

// удаляем мусор
$q = "DELETE a,b,c FROM $table_prefix"."posts a WHERE a.post_type = 'revision' LEFT JOIN ".$table_prefix."term_relationships b ON (a.ID = b.object_id) LEFT JOIN ".$table_prefix."postmeta c ON (a.ID = c.post_id);";
echo $q; echo "<p>";
mysql_query($q);

$q = "DELETE FROM $table_prefix"."comments WHERE comment_type = 'pingback';";
echo $q; echo "<p>";
mysql_query($q);

$q = "DELETE from $table_prefix"."comments WHERE comment_approved = '0';";
echo $q; echo "<p>";
mysql_query($q);

$q = "SELECT * From ".$table_prefix."terms wt INNER JOIN $table_prefix"."term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;";
echo $q; echo "<p>";
mysql_query($q);

// формируем запрос для оптимизации
$q = "OPTIMIZE TABLE ";
foreach ($optimize_tables as $v)
$q = $q . "$v , ";

$q = $q . $table_prefix."users;";
mysql_query($q);
echo $q;

echo "<p>Оптимизация выполнена";

?>

Скачать сценарий оптимизации можно по адресу:

http://dkws.net/clean.zip