Лента блогов InstantCMS

Как распаковать ZIP архив на FTP-сервере

Если Вам приходится достаточно часто копировать на FTP-сервер скрипты, содержащие большое количество файлов (например, системы управления сайтом, блоги), то можно применить гораздо более удобный способ их закачки – первоначально упаковать в ZIP архив и в последствии распаковать прямо на сервере.

Согласитесь, что процесс закачки проходит значительно быстрее, если заливаешь всего один файл, нежели все файлы по отдельности, при условии одинакового размера в том и другом случае. Когда закачивается туча файлов, происходит множественное обращение FTP-клиента к серверу после каждого файла, на что уходит определенное время.

Более того, например, при использовании SOCKS или прокси, во время закачки множества маленьких файлов может произойти разрыв соединения с FTP-сервером (именно так у меня часто случается при коннекте через SOCKS), а это сулит еще большее количество потраченного времени, чего не случается, когда заливаешь всего один файл.

При частом повторении одних и тех же действий любой стремится упростить выполняемую задачу. Поэтому я, недавно столкнувшись с необходимостью частой установки движка WordPress, стал искать более простой и удобный способ его закачки на FTP-сервер.

Раздобыл полезную тулзу, называется PHP Unzipper – скрипт, который за считанные секунды распакует закачанный на сервер zip архив. Вот его предназначение:
Незаменимый инструмент для веб-мастера, которому часто приходится закачивать на сайт много файлов и папок.
Позволяет значительно сэкономить время и трафик (архив занимает гораздо меньший размер, кроме того при закачке большого количества файлов, исходящий трафик создает значительно большую долю входящего трафика, как раз за счет частого обращения к серверу) – достаточно закачать архив и скрипт распакует его мгновенно.
Дополнительной функцией тулзы является возможность просмотра структуры директорий на сайте, а также возможность просмотра содержимого zip архивов на сервере без их распаковки.
Скрипт очень прост в установке, использует авторизацию по логину и паролю.Скачать скрипт
Скачать№2
Скачать№3

Без рубрики - все блоги

Вырожу суть хака через просьбы пользователей

Mr.Queer:
Нужно сделать, чтобы при заходе в любой блог выводились ВСЕ записи этого блога, а не только "Без рубрики". А потом уже при навигации по рубрикам выводились посты из тих конкретных рубрик. Поковырялся в компоненте - не нашел как это сделать.

LG:
Все таки блоги как то не очень смотрятся, когда в них заходишь - много чистого пространства, и категории с записями, наверху многие люди теряются, просят сделать чуть более похоже на тот же вордпресс - чтобы показываль последние записи (новые сначала), а дальше - страницы с более старыми  постами(вне зависимости от разделов, только по дате сортируются, старые в глубине)  так то показваются только категории, а если бы последние записи владельца блога сразу при заходе в блог показывались (вне зависимости от категории опубликованного поста).

Вот выкладываю свой вариант.

1. находим components/blog/model.php

Ищем блок
Код PHP:
/* ==================================================================================================== */
/* ==================================================================================================== */

    public function getPosts($blog_id, $page=0, $perpage=0, $category_id=0, $owner='user'){
...
}
/* ==================================================================================================== */
/* ==================================================================================================== */
Заменяем на

Код PHP:
public function getPosts($blog_id, $page=0, $perpage=0, $category_id=0, $owner='user'){
        $list = array();
        //Получаем записи, относящиеся к нужной странице блога
     
        if ($category_id){
	    $sql = "SELECT p.*, DATE_FORMAT(p.pubdate, '%d-%m-%Y (%H:%i)') as fpubdate, IFNULL(SUM(r.points), 0) as points, u.nickname as author, u.id as author_id
                FROM cms_blogs b, cms_users u, cms_blog_posts p
                LEFT JOIN cms_ratings r ON r.item_id=p.id AND r.target='blogpost'
                WHERE p.cat_id = $category_id AND p.blog_id = b.id AND b.id = $blog_id AND p.user_id = u.id AND p.published = 1 AND b.owner = '$owner'
                GROUP BY p.id
                ORDER BY p.pubdate DESC";

} 
else {
	$sql = "SELECT p.*, DATE_FORMAT(p.pubdate, '%d-%m-%Y (%H:%i)') as fpubdate, IFNULL(SUM(r.points), 0) as points, u.nickname as author, u.id as author_id
                FROM cms_blogs b, cms_users u, cms_blog_posts p
                LEFT JOIN cms_ratings r ON r.item_id=p.id AND r.target='blogpost'
                WHERE p.blog_id = b.id AND b.id = $blog_id AND p.user_id = u.id AND p.published = 1 AND b.owner = '$owner'
                GROUP BY p.id
                ORDER BY p.pubdate DESC";

}

        if ($page && $perpage) { $sql .= " LIMIT ".(($page-1)*$perpage).", $perpage"; }

        $result = $this->inDB->query($sql);

        if ($this->inDB->num_rows($result)){
            while($post = $this->inDB->fetch_assoc($result)){
                $list[] = $post;
            }
        }

        return $list ?  cmsCore::callEvent('GET_POSTS', $list) : false;
    }
2.  находим components/blog/frontend.php

Код PHP:
if ($total){
заменяем на

Код PHP:
if ($total or $cat_id==0){
Вроде все! еще можно раздел без рубрики переименовать в "все разделы", но пока не нашел как

Инстант и безопасность сайта

Итак. Как говорил кто то на сайте, мы совсем не уделяем внимания безопасности сайтов на InstantCMS.
Сейчас будут громкие возгласы, уделяем уделаем. Недавно получил предложение из рассылки на instantcms.ru поделится ссылкой на свой сайт, созданный на цмс инстант, типа для каталога. Так вот пока безопасной версии инстанта не будет, не бывать моему сайту в каталоге инстанта.

Укажу как минимум на 2 косяка в безопасности, которые запросто могут положить сайт.

Косяк намбер 1:

На скрине ниже видно как я складываю архивы в папки сайта http://22zona.ru/ . Эту возможность мне "дарит" визуальный редактор FCK. При этом складывать файлы могу в любую папку в папке аплоад, папка имаджес тоже доступна, если нажать на кнопочку "добавить картинку", а там посмотреть на сервере.
А хостеры жуть как не любят когда на сайте складируют вирусы (на народе за это закрыли один из моих сайтов).
"А мы позволяем добавлять статьи только проверенным людям" - скажете вы. FCK редактор используется при редактировании настроек клуба. Грузить на чужой сайт вирусы можно и оттуда. К сожалению интеграция инстант и FCK не проработана тщательно, о чем я писал здесь http://instantcms.ru/forum/43/thread2000-1.html и закрыть эту дыру пока не получается никак.
Вывод: Либо менять редактор, либо позволять грузить файлы только в одну папку - дабы можно было их быстро проверять на вирусность. Лучший вариант - добавить в написание статьи бб кода для юзеров, а FCK оставить для модеров и выше.

Косяк намбер 2:
Опять же изза виз редактора. Так как панели редактора не поддаются настройке, опять таки написано тут http://instantcms.ru/forum/43/thread2000-1.html то есть такая чудесная кнопочка "источник", позволяющая вставить хтмл код в страницу любому, кто может писать статьи. Любой хтмл код, в том числе и опасный <iframe>. Чем это может грозить читаем тут http://yandex.ru/yandsearch?clid=9582&text=%D0%B2%D0%B8%D1%80%D1%83%D1%81+iframe.

Глядишь сейчас дело по внедрению бб кодов сдвинется с мертвой точки...

P.S. Версия инстанта 2.0 будет одной из лучших цмс не только среди бесплатных, но и платных. I like instant cms.

Мегасправка

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

Я голосую за стабильную версию инстанта 1.5.2

Суть сего поста такова.
CMS Instant имхо выше всяких похвал. Вот уже почти полтора месяца как вышла версия 1.5.1. В баг репорте описаны практически все недоработки версии, на форуме в теме "Делимся работами на инстант" есть очень достойные работы на инстанте. Также куча всяких предложений по разработке новых модулей.
Так вот: может сначала стоит выпустить стабильную (без багов), версию 1.5.2. м? а потом заниматься разработкой новых модулей.
Или: может у кого есть своя сборка, с уже поправленными багами. Поделитесь?

RэSэSэ МэСэСэ лента на чужом сайте

и вновь продолжается бой,
и сердцу тревожно в пути...
(пестня такая забавная)
пришло письмо от админа дружественного сайта. типа: брат бергал, я с удовольствием поставлю твою RSS ленту на свой сайт. но... я такой же простой парень как и ты и, если ты мне пришлешь скрипт для установки ленты новостей, то я с удовольствием твою ленту поставлю. а я и ответить не знаю чего. поискал поиском по форуму и блогам тута на сайте - ничего внятного не нашел. (хотя может плохо искал). понимаю, что надо тщательней искать, понимаю что опять заполучу минусочки за это сообчение, но... пади не расстреляют. да и расскажут как мне поставить вот эту ленту: http://bergal.kz/rss/content/all/feed.rss на чужой сайт.

Кат в блогах.

Небольшой хак как прятать продолжение сообщения в блогах под кат

1. Открываем components/blog/frontend.php
Ищем
Код PHP:
$msg                = $post['content'];
Вставляем после
Код PHP:
// cut hack by Suffrage
if (strpos($msg, '[cut]'))
   {

      preg_match("/([^\f]*)\[cut\]/", $msg, $msg);

      $msg = $msg[1];

   }

else 
   { 
      $msg = substr($post['content'],0,$peranons); 
   }
// end cut hack
2. Открываем templates/ваш шаблон/components/com_blog_view.tpl
Ищем
Код PHP:
{$post.msg}
Вставляем после
Код PHP:
<!-- cut hack by Suffrage -->


<a href="/blogs/{$menuid}/{$blog.id}/post{$post.id}.html">Читать дальше...</a>
<!-- end cut hack -->
3. Открываем inludes/bbcode/bbcode.lib.php
Ищем
Код PHP:
'hr' => array(

                    'handler' => 'hr_2html',

                    'is_close' => true,

                    'lbr' => 0,

                    'rbr' => 1,

                    'ends' => array(),

                    'permission_top_level' => true,

                    'children' => array()

                ),
Вставляем после
Код PHP:
// cut hack by Suffrage
	'cut' => array(

                    'handler' => 'cut_2html',

                    'is_close' => true,

                    'lbr' => 0,

                    'rbr' => 1,

                    'ends' => array(),

                    'permission_top_level' => true,

                    'children' => array()

                ),
// end cut hack 
Ищем
Код PHP:
 function hr_2html($elem) {

        return '<hr class="bb" />';

    }
Вставляем после
Код PHP:
// cut hack by Suffrage
function cut_2html($elem) {

        return '
';

    }
// end cut hack
Спасибо за дополнение Виктора

Все сохраняем. и пробуем. при использование тега [cut] в блогах в списке постов будут отображаться текст сообщения расположенный до тега. А если тега не будет, "для тех кто в танке", сообщение будет обрезаться по длинне

Осталось вставить кнопочку на панель, забыл как это сделать, не напомните?

[size=2]офтоп: не убирайте коментарии, они помогут вам вернуть движок в прежнее состояние, если что то пойдет не так[/size]