Вы не зашли.
Чтобы не создавать тему задам вопрос здесь
Версия движка SVN
В корне сайта в .htaccess делаю перенаправление
Например: Redirect 301 /labs/rozd1/lab01/ http://iem.arnit.com.ua/portal/nova_platforma.html
Перенаправление работает, но в результате (независимо от браузера) в строке адреса получаю
http://iem.arnit.com.ua/portal/nova_platforma.html?
Так вот, как убить этот знак вопроса???
Собственно хочеЦо чтобы всем (кроме админов) можно было выставить таймаут между запросами на сервер. Например, появился у меня самый быстрый юзер, который за 1 сек пытается сделать 100 кликов, а ему на втором клике выпадает сообщение, мол пойди выпей чайку.
Получится неплохая защита от запавших F5.
vitaly, вопрос наверно снят, такая конструкция встречается только в плагине календарь и только один раз
Все немного сложнее чем ты думаешь, поможет тебе рефакторинг всех запросов в движке и его плагинах, возможно придется менять и другие не поддерживаемые структуры запросов, а при обновлении на новую версию движка делать эту процедуру заново.
Мой совет, обратись к vitaly'ю, он непосредственно ведет разработку системы и если он проделает эту процедуру, то проблем со следующими релизами быть не должно, а также он точно знает где в движке все эти запросы прячутся. Тем более что в спецификации движка указанно
СИСТЕМНЫЕ ТРЕБОВАНИЯ
----------------------------
- Apache 1.x/2.x
- PHP 4.3.x
- MySQL 4.x/5.x
т.е. такой рефакторинг подгонит движек под системные требования...
-------------------------------------------------------
пысы. Меняй хостера, так дешевле, ведь системные требования теперь точно поменяют
Главное что DAYOFMONTH проглатило, значить должно работать, а сейчас матюкнулось, потому-что count без GROUP BY не используеться. Попробуй такой запрос SELECT DAYOFMONTH(from_unixtime(postdate)) as day, count(id) as count FROM ng_news WHERE approve = '1' AND postdate >= unix_timestamp('2009-09-01 00:00:00') AND postdate < unix_timestamp(date_add('2009-09-01 00:00:00', interval 1 month)) group by to_days(from_unixtime(postdate))
По идее (но не обязательно) у тебя в панели управления хоста должна быть утилитка phpMyAdmin, так вот, заходишь в нее и там будет кнопочка (или ссылочка) "Выполнить запрос", щелкаешь, в большое текстовое поле вводишь что-то типа SELECT DAYOFMONTH(from_unixtime(postdate)) as day, count(id) as count FROM ng_news жмешь "Выполнить" и смотришь результат, если не матюкнулось и корректно обработало (а если матюкнется ты это сразу поймешь), то все ОК и ты можешь потихоньку начинать перелопачивать движек заменяя DAY на DAYOFMONTH
Надо просто во всех запросах, которые есть в движке заменить DAY на DAYOFMONTH,
А если по грамотному, то сначала проверь хоть на одном запросе через phpMySqlAdmin (по идее должен быть у тебя на сервере)
версия sql какая?
скорее всего твоя версия не поддерживает такую форму запроса
-----------------------------------------------
Только что глянул, так и есть, если у тебя версия сервера 4.0, то функция DAY() у тебя работать не будет. Она появилась только в v4.1.1
-----------------------------------------------
Еще раз глянул, можно заменить функцией DAYOFMONTH()
=======extras.inc.php v.0.9.1.RC0========
строка: 318
if ($func['arguments'] == 4) {
----------------------------------
При таком условии call_user_func будет выполнятся 2 раза
---------------------------------------------------
Должно быть
if ($func['arguments'] == 3) {
Или скорее всего в 321 строке
if ($func['arguments'] == 5) {
А как насчет timezone_identifiers_list для получения списка временных зон, и пусть при установке движка или в админке (а лучше и там и там) каждый сам выберет ту временную зону в которой он находится.
----------------------------------------------
По поводу отладки, было классно иметь функцию выводящую мои сообщения в лог отладки.
Да принципе вылезли там только не инициализированные переменные, индексы массивов и не установленные временные зоны, и если грамотно использовать isset в конструкциях if, то проблем от них вообще нет, а если где и пропустить isset, то в режиме ^ E_NOTICE ей будет присвоен null, а интерпретатор даже не пискнет, просто где-то пользователь увидит информацию (например из базы), которую он не хочет или не должен видеть, а с учетом того что в большинстве случаев индексы начинаются с 1(в базах данных), то вообще ничего не увидит или не изменит (чисто гипотетически). Больше пользы от такого режима (для себя) вижу при написании плагинов, просто совершаешь меньше детских ошибок, и не тратишь по пол дня на их поиск.
А с датами все еще проще, надо установить временную зону по умолчанию date_default_timezone_set и все. К чему приведет ее не установка? Просто в функциях работы с датами временной зоной по умолчанию будет установлена временная зона сервера.
vitaly, чисто для спортивного интереса сделал следующее
ini_set("display_errors","1");
if (version_compare(phpversion(), "5.0.0", ">")==1) {
ini_set("error_reporting", E_ALL | E_STRICT);
} else {
ini_set("error_reporting", E_ALL);
}
.... и вылезло немного мусора, все по мелочам.
Планируешь подчищать?
А msg() пользуешься чтобы значения переменной для отладки красиво выводились?
Нет, просто var_dump не во всех случаях выводит на экран, в движке скорее всего используются функции типа ob_start и ob_clean которые и подчищают ее вывод, а простой print меня не совсем удовлетворяет.
ROZARD, еще раз спс., ссылку я уже обнаружил.
По твоему совету включил debug (как я сразу не догадался? наверно прогулял этот урок в школе) и с action стало все понятно.
А вот по поводу использования собственных action в своих плагинах, готов с тобой долго и нудно спорить.
Если я например пишу систему которая состоит из группы плагинов, которые должны синхронизировать свою работу между собой, или должна присутствовать какая либо причино-следственная связь между ними, то при помощи собственных action это будет решить проще и красивее, чем например оставлять метки о состоянии того или иного плагина, а потом в другом плагине их считывать.
Когда придет время использовать свои action, думаю разберусь, а вот за debug-режим действительно спасибо, просто как-то вылетело из головы.
Кстати, я для вывода значений php-функции var_dump использую функцию движка msg, ты знаешь как можно использовать var_dump более корректно, а то как то некошерно получается, или как вывести значения интересующих меня переменных в debug-блок.
ROZARD, спс за описание.
А документация по разработке плагинов боюсь мне уже не понадобится, слишком поздно
Правда вот у меня еще вопросик (копаться в коде сейчас лень, но просто интересно), как работает оповещение в админ-панели о наличии новой версии плагина. И как это прикрутить к своим.
Замечание к 378- ревизии. Все-таки неплохо было-бы описать action-ы для полноты понимания работы ядра. Например мне не очень понятно при каких условиях тот или иной плагин привязывать к тому или иному action-у. Ведь в большинстве случаев плагин все равно работает без проблем, но ведь разработчики не просто так подробили их, а заложили в это (как я думаю) какую то логику. Очень хочется понять эту логику. Причем некоторые action-ы не всегда запускаються, т.е. имеют условие на запуск, тоже интересно знать какие и при каких условиях. И последнее, как я понял я могу создавать свои action-ы и использовать их по аналогии событий в системном программировании, если я не прав поправьте меня.
Читаю дисциплину Экономическая информатика в университете. Пишу плагин, который разбивает пользователей на разные группы (студенты, преподаватели и т.д.) с настраиваемыми правами доступа к последующим плагинам. Следующий, это база дисциплин с привязкой к преподавателям. (эти я уже сделал) А сейчас делаю электронный журнал и рейтинг, когда сделаю останется написать систему публикации разного рода контента (здесь буду использовать штатные возможности движка) и на десерт систему проведения тестов на время с возможностью контроля прохождения (администратором) в режиме реального времени. Получиться эдакий маленький moodle, только с более дружественным интерфейсом и более шустрый.
Отпишись, plz, по результатам тестирования.
спс все отлично работает.
При установке плагина использую $ULIB->registerCommand для регистрации форматов ссылок в системе
Вопрос в следующем: Как удалить зарегистрированные форматы ссылок при удалении плагина (в классе urlLibrary метода выполняющего подобные действия не обнаружил, версия движка из SVN)
vitaly, а есть описание всех полей для файла version у плагина?
Поля нашел, просматривать что каждое из них делает долговато, хотя назначение большинства итак понятно...
Вот то что понял. Поправь и дополни меня пожалуста
id - уникальное имя
name - название (отображаеться в админке)
version - версия
acts - действие при котором запускается плагин (может иметь несколько значений), формат index; nameplugin.php
здесь сразу вопрос: какие acts бывают и какой их порядок вызова (или прикаких условиях)
file - ????????????????????????
config - файл конфигурации
install - файл установки плагина
deinstall - файл удаления плагина
management - ???????????????????????????
type - тип (видел только plugin)
Вопрос: какие типы еще бывают
description - описание (отображаеться в админке)
author - автор (тоже видно в админке)
author_uri - страничка автора (тоже в админке)
permanent - ????????????????????????????????????
library - ???????????????????????????????
actions - тоже что и acts
Еще один вопрос, по безопасности базы данных.
Движек имеет функцию по экранированию и замене опасного содержимого для баз данных или использовать стандартные php-средства?
Если хочешь понять как можно сделать что-то на AJAX'е, то посмотри на плагин jchat
Как я понял, надо поиграться с переменными $SUPRESS_TEMPLATE_SHOW и $SUPRESS_MAINBLOCK_SHOW.
спс vitaly, теперь немного разобрался, думаю за пару недель переберусь на платформу ng.
Жаль нет встроенной возможности создавать разные группы пользователей и управлять правами доступа, прийдется быстренько наваять временное решение.
Это вопрос, ответ на кем-то заданный вопрос или утверждение?
Это вопрос.
Планирую перенести свой сайт на ng, но для этого мне необходимо дополнить функционал, сейчас разбираюсь в плагиностроении. Общий принцип работы системы понятен (с точки зрения архитектуры). Большую часть исходников уже проанализировал.
И у меня возникли вопросы: например, как я понял категории загружаются из базы в локальный массив, и если их из этого массива убрать, то они отображаться не будут, вот и интересует правильно ли понял, если да, то с каким action-ом мне создавать плагин, чтобы он был вызван между загрузкой категорий из базы и выводом их на экран.
Второй вопрос про ajax запрос (просто еще не смотрел как тут реализовано), но меня интересует только формат запроса, ведь движек както должен понять что я хочу вывести не весь сайт, а получить только кусочек.
Третий вопрос. Есть ли какой-то префильтер, который не даст определенной группе пользователей редактировать или просматривать новости из определенной категории.
Четвертый вопрос. Например мой плагин определяет, что конкретный пользователь не имеет доступа к информации которую выводит данный плагин и надо пользователю об этом сообщить, я конечно понимаю, что это можно сделать средствами того-же плагина, просто если в системе уже имеется модуль вывода сообщений пользователю, то почему бы им не воспользоваться.
1. Программно скрыть некоторые пункты меню (посматриваю в сторону makeCategoryList, если не верно то поправьте меня)
2. Как грамотно послать ajax запрос, чтобы вернулся только результат выполнения запрашиваемой функции плагина
3. Запретить редакторам редактировать новости в определенных категориях
4. Какие функции могут выводить сообщения пользователям (если есть такие)