Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

MaxSite CMS 0.74

06-08-2012Время чтения ~ 3 мин.Versions 57646

Очередная версия MaxSite CMS. Изменений немного, в основном это «текучка», но я выделил изменения в отдельную версию, поскольку включил в комплект системы несколько новых функций, которые могут быть полезны вебмастерам.

Традиционно, краткое описание изменений.

  • Переход на CodeIgniter 2.1.2.
  • Исправление, касаемое безопасности. Дополнительная XSS-фильрация комментариев. Может быть актуально для старых сайтов, которые работали еще примерно с версии 0.40.
  • LessPHP обновлен до 0.3.5.
  • В функции mso_cat_array_single() убрал дефолтный тип страниц blog. Теперь по-умолчанию получаются все записи рубрик, не зависимо от типа записей. Так более логично.
  • Новая функция mso_get_cat_from_id(), которой можно получить значение произвольного ключа указанной рубрики. Например mso_get_cat_from_id(10, 'category_name') вернет название рубрики номер 10.
  • При залогировании выполняется 3-секундная задержка. Это примитивная защита от брутфорса (brute force) - подбора паролей.
  • Плагин autoclose_tags может использовать php-библиотеку Tidy.
  • В плагине Forms поле subject (тема письма) принимает либо select, если указаны несколько тем, либо редактируемое поле input. При этом, если это одиночная тема, которая начинается с символа «_», то тема письма формируется как скрытое (тип hidden) и не видна посетителям.
  • Архив сайта (плагин sitemap) сортируется по category_menu_order, а не по имени, как было раньше.
  • В компоненте default-шаблона menu.php убрал поддержку хука main_menu. По сути этот хук использовался только в плагине MainMenu, который теперь исключен из комплекта MaxSite CMS. Текущий вариант стандартного меню на обычном CSS полностью перекрывает этот плагин, но проще и удобней в работе.
  • Также исключены плагины Admin_announce и pre_to_ol. Плагины перемещены в Каталог плагинов. Кому нужно, качайте оттуда.
  • Вывод комментариев (page-comments.php) чуть переиграл по верстке.
  • Новый type_foreach-файл page-other-pages, по которому можно вывести свой блок «Еще записи этой рубрики».
  • Новые stock-файлы: class-columns, page-out, thumb.
    • class-columns - php-класс позволяет просто организовать вывод любой информации колонками/блоками. Колонки могут формироваться как автоматом, так и вручную. Можно использовать счетчик.
    • page-out - форматированный вывод записей. По сути это обёртка над функциями mso_page_.... Вместо них используются подстановочные фразы, вроде $p-> line('[date] | [autor] | [comments]'). Можно задать форматирование любого блока, вывести html, «умный» блок и т.п. Я попытался собрать в этом классе все наиболее частые задачи по выводу данных записей.
    • thumb - класс для формирования thumb-изображений (с произвольными размерами). В отличие от подбных thumb-библиотек, в этой изображения не формируются из get-запроса. Именно get-запросы подобных библиотек являются гиганской дырой в безопасности не только сайта, но и всего сервера. У нас это исключено, поскольку вся работа осуществляется через явный вызов php-функций. Кроме того, функции жестко завязаны на каталог uploads. На входе передаём адрес произвольного изображения (например картинка записи), на выходе - готовый адрес нового файла thumb-изображения с заданными размерами. Миниатюру можно создать пропорциональным уменьшением, точным размером, кропом по центру, кропом от левого угла, кропом со смещением, вначале уменьшение, потом кроп, а также уменьшение по ширине, после кроп по центру. В общем варианты на любой вкус.

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

    Похожие записи
    Комментарии (44) RSS
    1 Александр 2012-08-07 11:47:13

    Радует, что система "вылизывается" и развивается. Maxу огромная благодарность.


    2 Аноним 2012-08-08 02:11:51

    Макс, спасибо тебе за возможность бесплатно обучаться этому кропотливому, но безумно интересному делу. Надеюсь, что не за горами и моя благодарность.


    3 Василий Петрович Романов 2012-08-08 03:51:24

    Чтож, как говорил Жан-Луи Гассье: "обновляемся"!


    4 Александр 2012-08-09 14:17:21

    Поздравляю с развитием, ты когда выложишь яндекс кошелек?;-)


    5 Максим 2012-08-09 14:18:33 admin

    У меня нет Яд-кошелька. Он только для россиян.


    6 Александр 2012-08-09 14:27:16

    Жаль ( ты получал от меня сообщение что я тоже хочу помогать в развитии проекта? На емейл ответа так и не приходило. По поводу янд. Понятно прийдется 4.5 процента терять на переводе на твой веб мани :(


    7 Александр 2012-08-09 14:55:30

    небольшая поправка, проверил, оказывается совсем не могу перевести с ян на вебмоней ( а про развитие я имел ввиду кодинг :)


    8 Максим 2012-08-09 15:18:29 admin

    Понимаю, но к сожалению, от меня это уже не зависит. :-)


    9 Сергей М 2012-08-12 06:55:03
    У меня нет Яд-кошелька. Он только для россиян.

    Почему только для Россиян?

    Заводи и получай деньги. ;-)


    10 Teem 2012-08-12 15:39:21

    Какие либо особенности по обновлению с версии 0.734 есть или просто заливаем файлы по верх прежних?


    11 Максим 2012-08-12 15:42:32 admin

    Поверх.


    12 jimmy jonezz 2012-08-14 18:26:56
    Новые stock-файлы: class-columns, page-out, thumb.

    Это здорово!


    13 zloj 2012-08-16 05:30:55

    Жаль что базу пользователей и комментаторов не хотят объединять, сейчас большая часть сайтов хотят форум с интеграцией сайта, это большой минус движку...


    14 pashich 2012-08-16 07:25:11

    Кто-нибудь победил на этой версии плагин "Древовидные комментарии"? Кто сможет помочь за небольшое материальное вознаграждение, оставьте ваш контакт, свяжусь с вами.


    15 pashich 2012-08-16 23:15:51

    Не актуально, вышла новая версия плагина, она корректно работает на 0.74


    16 Аноним 2012-09-03 11:39:13

    Подскажите, а есть ли плагин какой для автоматической публикации через RSS ленту?


    17 Денис Назаров 2012-09-04 18:50:30

    Колбасит плагин login_form. Комюзеру через него залогиниться просто нереально.


    18 Денис Назаров 2012-09-04 19:17:29

    блиииинннннн..... логинится без проблем, но!!!!!!

    в качестве имени надо мыло вводить.... пипец логика....

    Макс! Может стоит отказаться от деления юзер/комюзер?

    При инсталляции создается админ - а дальше пусть рулит, кому какие права давать, по умолчанию все комюзеры, а дальше пусть ручками переводят, кому надо, в юзеров. Будет гораздо логичнее.

    Да, понимаю, все перелопатить придется. Но чем проще система, тем она надежнее.


    19 zloj 2012-09-05 01:24:32

    Полностью поддерживаю, нужна единая таблица пользователей!


    20 Александр 2012-09-05 10:45:08

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


    21 Anonymous 2012-09-05 11:43:14

    Есть плагин регистрации, можно сразу задать чтоб комментаторы регистрировались как пользователи.


    22 Денис Назаров 2012-09-05 11:56:45

    Ну как по мне, так тип пользователя может быть только один - юзер он юзер и есть. А вот прав у него может быть много, а может быть и мало. И даже если у него админские права, то он все равно остается пользователем.

    Сижу, ваяю плагин инет-магазина, собрался уже клиенту показывать, ладно вовремя сообразил зарегить простого юзера (комюзера в терминологии Макса) и вдруг получаю картинку, как будто и не залогинен юзер! В корзину не пускает, товар туда складывать не дает, а все потому, что сам то я сижу под админом, а тут, понимаешь, просто Ден лезет :)

    Вот и пришлось извращаться и делать отдельную функцию для определения залогинености (ком)юзера. А таблицы то уже разработаны! А как корзину вести с разными типами? А если они по id пересекутся?

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

    2Gor - кривоват плагинчик... письмо мне так и не пришло, как админ я вручную не смог активировать, пришлось лезть в базу и ручками, ручками... Это уж совсем не годится


    23 zloj 2012-09-06 03:54:17

    От разных таблиц только проблемы, то активному комментатору нужно сделать доступ для размещения статей - а никак, только создавать нового пользователя, ну и т.п., проблемы появляются во всём где нужно брать данные пользователя, а это практически 100% если дорабатывать функционал. Ну и самое важное - невозможность нормальной интеграции с другими движками - форумы и т.п.


    24 Максим 2012-09-06 07:40:53 admin

    Нечего пускать посторонних в админку...

    Всё остальное, что тут понаписали - бред. Разберитесь что и как устроено, после делайте громогласные заявления.


    25 Денис Назаров 2012-09-06 11:05:29

    Дык уже разобрался... но все равно как-то не очень...


    26 Денис Назаров 2012-09-06 11:19:09

    Макс, и еще... понятное дело, ты автор, у тебя свое видение, но тем не менее - просто прикинь, сколько народу пустило бы посторонних в админку. А если с грамотной разноской прав - так это вообще без проблем.

    Да и речь, в общем, не о том, чтобы их туда пускать, а о том, что приходится много лишнего делать. Вот к примеру, твой же код

    if (is_login())<br>        {<br>                $out = '' . t('Привет,') . ' ' . getinfo('users_nik') . '!<br><br>                                [<a href="' . getinfo('siteurl') . 'admin">' . t('управление') . '</a>]<br>                                [<a href="' . getinfo('siteurl') . 'logout'.'">' . t('выйти') . '</a>]<br>                                
    ';<br>        }<br>        elseif ($comuser = is_login_comuser())<br>        {<br>                if (!$comuser['comusers_nik']) $cun = t('Привет!');<br>                        else $cun = t('Привет,') . ' ' . $comuser['comusers_nik'] . '!';<br><br>                $out = '' . $cun . '<br><br>                                [<a href="' . getinfo('siteurl') . 'users/' . $comuser['comusers_id'] . '">' . t('своя страница') . '</a>]<br>                                [<a href="' . getinfo('siteurl') . 'logout'.'">' . t('выйти') . '</a>]<br>                                
    ';<br>        }<br>        else<br>        {<br>                $after_form = (isset($options['after_form'])) ? $options['after_form'] : '';<br><br>                $out = mso_login_form(array( 'login'=>t('Логин (email):') . ' ', 'password'=>t('Пароль:') . ' ', 'submit'=>'', 'form_end'=>$after_form ), getinfo('siteurl') . mso_current_url(), false);<br>        }

    здесь лишнего 30%, а именно - проверка, юзер это или комюзер. Единая таблица только в одном этом плагине сэкономила бы тебе время на написание, а уж остальным бы как жизнь облегчила.

    Но если тебе так уж хочется плодить сущности сверх необходимого - что ж... хозяин-барин.


    27 Максим 2012-09-06 11:29:04 admin

    А у меня и так грамотная «разноска» прав. Или сделай свою «объединенную» функцию. Если же этот код вызывает проблемы с пониманием или для тебя он слишком большой, то могу только посоветовать учиться и разбираться дальше.


    28 Денис Назаров 2012-09-06 11:32:49

    Не надо думать, что все такие непонятливые.

    Сделал уже давно, но все равно это неправильно.

    А "грамотная разноска прав" по двум таблицам - это уже не есть "грамотно".

    Но все равно - за систему спасибо :)


    29 Максим 2012-09-06 11:42:07 admin
    А "грамотная разноска прав" по двум таблицам - это уже не есть "грамотно".

    А права никакого отношения и не имеют к таблицам. Меня несколько напрягает, когда человек, не разобравшись в сути, начинает говорить что правильно, а что нет. Неужели сложно зайти на форум и почитать обсуждения по этому вопросу? Я не утверждаю, что система пользователей в MaxSite CMS идеальна, но она практически гарантированно защищена от взломов и несанкционированного доступа. А то, что пользователи разделены на две таблицы, так это вообще не проблема. Получить данные любого из них - один sql-запрос - это вообще задача для пятиклассника.


    30 Денис Назаров 2012-09-06 12:05:57

    а есть гарантия, что id пользователя не пересечется с id админа?


    31 Максим 2012-09-06 12:21:31 admin

    Поля id в наших таблицах нет.


    32 Денис Назаров 2012-09-06 12:37:42

    воооттт.... вот об этом и пыхтение.... что по сути-то оно есть, только называется по разному....

    в общем, что бы ты ни говорил - все равно система заточена под блоги. И сделать что-то, кроме блогов - надо сильно постараться... Что радует, так это возможность делать это "что-то" в виде плагина, что огорчает - так это необходимость двойной обработки данных о пользователях. Что с учетом общей расхлябанности пыхи огорчает вдвойне. Но делать нечего, кактус будет сгрызен....


    33 Максим 2012-09-06 12:45:45 admin

    Смешно... RTFM.


    34 Денис Назаров 2012-09-06 12:58:05

    убедил :)


    35 Gor 2012-09-06 15:22:02
    все равно система заточена под блоги. И сделать что-то, кроме блогов - надо сильно постараться

    А вот это, извините меня, уже действительно бред , что вы вообще понимаете под словом "блог", на MaxSite CMS реализованы, не только сайты визитки, блоги, интернет магазины, но и довольно-таки крупные порталы, у вас в руках система с открытым кодом, всё что для вас не хватает, можете дорабатывать сами, реализовывать плагинами и т.д..

    И вообще если у вас на сайте есть другие авторы, просто создайте для них отдельных пользователей, если же вы х.з. что делаете на своём сайте, это же не значит, что у всех комментаторов должен быть доступ к админке, комментатор для того и есть, чтоб комментировать статьи, а не иметь доступ к админке.


    36 Дмитрий 2012-09-08 14:07:44

    Второй раз переустановил. Не могу попасть в админку,нажимаю "вход",выскакивает авторизация,ввожу логин и пароль-неверный логин и все! Что я делал не так?


    37 Griz 2012-09-08 16:09:09

    Некоторое время назад у меня подобная проблема возникала (с глюками при авторизации) из за проблем у одного интернет-оператора (кстати очень известного и широко распостраненного), услугами которого я пользовался... Проблемы с авторизацией были на всех сайтах на MaxSite CMS. Локально всё работало нормально. Долго и нудно переписывался с тех.поддержкой провайдера. Проблему решили на стороне провайдера.


    38 Дмитрий 2012-09-08 16:33:49

    ну,с оператором я точно ничего сделать не смогу-монстр Укртелеком.

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


    39 Александр 2012-09-08 19:36:07
    Некоторое время назад у меня подобная проблема возникала (с глюками при авторизации) из за проблем у одного интернет-оператора (кстати очень известного и широко распостраненного), услугами которого я пользовался...

    Извини за банальный вопрос, но ты случайно не забыл переименовать mso_config.php-distr?


    40 Griz 2012-09-09 06:58:36

    В моем случае, дело было точно не в mso_config.php и не в параметре $mso_install. Я пробовал авторизоваться при подключении через разных провайдеров. Специально взял у товарища usb-модем другого известного оператора. В одном случае авторизация проходила без проблем, в другом случае авторизация не проходила с сообщением о неверности логина - пароля... Кстати, некоторые глюки с авторизацией в этом случае наблюдались и при попытке доступа на майл.ру. Я сначала думал, что это майловская проблема, но мне их техподдержка ответила, что подобные проблемы - это глюк провайдера Х. (я им не сообщал, что пользовался его услугами, но как раз через Х я и выходил в сеть).


    41 Александр 2012-09-09 18:19:15

    Здравствуйте!

    После установки всё прошло успешно, но при входе в админпанель вывелась ошибка:

    A PHP Error was encountered

    Severity: 8192

    Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

    Filename: mysql/mysql_driver.php

    Line Number: 319

    A PHP Error was encountered

    Severity: 8192

    Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

    Filename: mysql/mysql_driver.php

    Line Number: 319

    Что с этим делать?


    42 Максим 2012-09-09 19:54:19 admin

    Это из-за PHP 5.4. Вот так попробуйте: http://forum.max-3000.com/viewtopic.php?p=18847#p18847


    43 Александр 2012-09-09 20:13:38

    Ура! Сработало.

    Спасибки! Движок супер!!!


    44 wemarus 2012-09-10 04:34:28

    Супер надо перейти и мне на свеженькую!