DataLife Engine Support Forum: [Разработчикам модов] - DataLife Engine Support Forum

Перейти к содержимому

Правила, касающиеся данного раздела

1. В данном разделе разрешено публиковать только готовые модули или хаки, а также полезные советы. Любые запросы на создание того или иного, а также вопросы, касающиеся движка, публикуются в соседнем разделе.

2. На данном форуме строго запрещено предлагать или навязывать свои платные услуги. За любое сообщение типа "Помогу дешево, ICQ ..." участник блокируется на форуме без предупреждения.

3. За флуд и нарушание данных правил, участник может быть лишен доступа на форум.
  • 16 Страниц +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Ответить

[Разработчикам модов]

#1   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 05.04.2009 - 04:02 | Цитировать выделенный текст

Доброе время суток!
Начиная с версии 8.0 DLE будет комплектоваться API разработчика.
API будет постоянно расширяться и пока отвечает за получение/смену определённых данных, переведения в другую группу и отправки ПМ пользователю.
Также авторизация и внешняя регистрация (Актуально для интеграций).
Структура АПИ всегда будет оставаться одинаковой, будет добавляться только новый функционал.
Я буду переносить API с одной версии на другую и высылать Stable релизы Владимиру.
Все unstable/test версии я буду выкладывать здесь.
От Вас, уважаемые разработчики, мне нужен примерный список того, что Вы хотели бы видеть.
Версия 0.08 УЖЕ интегрирована в DLE v8.2

ToDo List:

Цитата

- Переделать функцию очистки кэша, добавить возможность чистить engine/cache/system
- Помимо отправки PM пользователю, отправка сообщения на ящик пользователя.
- Добавить новый вариант работы API - HTTP API
- Добавить новый вариант работы API - XML API
- Рассылка PM и E-Mail сообщений по группе или глобально

Обновление 0.09
Скачать: v0.09

Цитата

Добавлен метод update_user ($user_id, $vars = Array())
/**
* Изменение пользователя
* @param $user_id int - ID пользователя
* @param $vars array - Массив вида ключ->значение. Все ключи будут заменены на значения.
* @return null
*/
Позволяет реализовывать пополнение баланса или обновление любого другого поля.
В метод change_user_group($user_id, $new_group, $timelimit = 0) добавлен необязательный параметр $timelimit
/**
* Изменение группы пользователя
* @param $user_id int - ID пользователя
* @param $new_group int - ID новой группы пользователя
* @param $timelimit int - Время присутствия в группе
* @return bool - true в случае успеха и false если указан ID несуществующей группы
*/

Поправлена функция смены группы.
Добавлен параметр prolong.
/**
* Изменение группы пользователя
* @param $user_id int - ID пользователя
* @param $new_group int - ID новой группы пользователя
* @param $timelimit int - Время присутствия в группе
* @param $prolong bool - Продлить время в группе
* @return bool - true в случае успеха и false если указан ID несуществующей группы
*/
Итак. Если:
change_user_group($user_id, $new_group, 3600);
На час кидает user_id в группу нужную.
Если:
change_user_group($user_id, $new_group, 3600, true);
На час продлит пользователю его членство в группе
Версия обновлена до 0.09
Также добавлено текущее время с коррекцией в $dle_api->_TIME



Обновление 0.08

Цитата

- Добавлена функция подключения модулей к админ-панели
- Добавлена функция отключения модулей от админ-панели
- Добавлена функция смены прав для модулей к админ-панели



Обновление 0.07

Цитата

- Документированы исходники
- Мелкие правки кода
- Исправлена функция очистки кэша


Обновление 0.05 Beta:

Цитата

- Обновлён readme
- Функция редактирование конфигурации: $dle_api->edit_config($key, $value) $key - может быть массивом, тогда $value указывать не нужно
- Расширение функционала $dle_api->load_table, добавлено: $start, $limit, $sort, $sort_order
- В методе изменения почты и внешней регистрации добавлена проверка формата почты
- Добавлена функция получения новостей ($dle_api->take_news ($cat, $fields = "*", $start = 0, $limit = 10, $sort = 'id', $sort_order = 'desc'))
- Полная совместимость с PHP4 (Убраны модификаторы доступа и функции от php5)
- Пересмотрены функции кэширования
- Поправлены мелкие ошибки кода

Версия 0.04 unstable
Изменения:

Цитата

- Служебная функция load_table для загрузки данных
- Во все функции получения данных добавлен необязательный параметр $select_list = "*"
- Поправлены мелкие баги
- Поправлена функция отправки ПМ (Увеличивался счётчик всем)
- Поправлена функция изменения имени
- У методов и значений расставлены модификаторы (public, private)
- Расширенное управление кэшем:
- Сохранение в локальный кэш массива ($dle_api->save_to_cache (массив, имя_кэша)
- Сохранение в локальный кэш текста ($dle_api->compile_page (имя_кэша, данные)
- Загрузка из локальныого кэша массива ($dle_api->load_from_cache (имя_кэша, время_жизни_в_секундах)
- Загрузка из локальныого кэша текста ($dle_api->load_compiled_page (имя_кэша, время_жизни_в_секундах)
- Очистка локального кэша (Если передаём GLOBAL или пустоту - чистит весь кэш) ($dle_api->clean (имя_кэша)
- Принудительная перестройка кэша, данные могут быть или массивом или текстом ($dle_api->rebuild (имя_кэша, данные)
- Принудительная загрузка кэша ($dle_api->load (имя_кэша)
- Обновлён readme

- Поправлена функция смены email, добавлена проверка уникальности - Спасибо Vladimir Gorobets
- Поправлена функция очистки кэша, поставлены @ в unlink - Спасибо Vladimir Gorobets
- Поправлена функция форсированной загрузки кэша - Спасибо Vladimir Gorobets
С уважением Сергей.

ToDo:
- Работа над новым типом дополнительных полей
- Работа над random() в выборке новостей

Сообщение отредактировал IT-Security: 05.09.2009 - 16:02

4

#2   redik 

  • Новичок
  • Группа: новички
  • Сообщений: 1
  • Регистрация: 02.04.09

Отправлено 05.04.2009 - 17:17 | Цитировать выделенный текст

Если я в тему.


Файл синхронизации (класс)

регистрация, авторизация пользователей и т.п. в этом духе.


ps, RedRat
0

#3   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 05.04.2009 - 19:26 | Цитировать выделенный текст

ммм..
Есть функция внешней регистрации и функция внешней авторизации.
Если у Вас алгоритм шифрования как в DLE, то достаточно получить данные о пользователе и занести нужные.
Для этого пробуем авторизоваться, если данных нет - записываем.
$user_auth = $dle_api->auth_user("login", "pass");
if (!$user_auth)
{
// Вносим данные
}
else
{
$arr = $dle_api->take_user_by_name("login");
}

Или можно сразу получить:
$arr = $dle_api->take_user_by_name("login"); и если элементов 0 (Функция вернёт false), то вносим данные.

Внешняя регистрация:
					// Внешняя регистрация
					// $login, $password, $email - string
					// $group - int
					// Return:
					// 1 - All OK
					// -1 - Name exists
					// -2 - Email exists
					// 0 - DB Error
						$dle_api->external_register($login, $password, $email, $group);

Сообщение отредактировал IT-Security: 05.04.2009 - 20:12

0

#4   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 07.04.2009 - 02:42 | Цитировать выделенный текст

Разрабатываются экспериментальные функции:
$dle_api->take_additional_field_by_id(mod_id, add_id=0);
$dle_api->save_additional_field_by_id(mod_id, add_id, value);
Получаем доп. поля DLE в виде массива.
Поля могут относится к чему угодно и могут использоваться как для хранения данных модулей (Типа балансы пользователей и т.п.), так и к новостям, да и впринципе к чему угодно.
Структура таблицы:
id
mod_id (Идентификатор модуля, которому принадлежит поле)
addfield_value (Значение поля)
add_id (дополнительный идентификатор для выборки. Тут может быть ID новости или пользователя)
add_id_type (флаг к чему относится данное поле)
Эти доп поля будут реализованы через отдельную таблицу.

Данное добавление будет экспериментальным и возможно не попадёт в стабильный релиз.
Идея этой функции - унифицированное хранение данных.
$dle_api->take_news ($cat=X, $limit=N);
Получение N новостей в массив из категории X. При выборке не накладываются групповые ограничения!

$dle_api->change_config('alt_name', 'new_value');
Позволяет менять настройку alt_name на новое значение.

p.s.
Подумал, что если в таблицу dle_comments добавить mod_id и чуть-чуть поправить в dle выборку комментариев, то можно получить унифицированность в комментариях.

Сообщение отредактировал IT-Security: 07.04.2009 - 05:00

0

#5   Al-x 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 448
  • Регистрация: 29.05.06

Отправлено 07.04.2009 - 08:45 | Цитировать выделенный текст

IT-Security,
самое первое, наверное, всё-таки вывод комментариев, при чём как пользовательская часть, так и админка. В принципе более менее приближенный вариант есть, могу скинуть. Функции рейтинга. Функции навигации (как для пользователей, так и для админки.) Это я тоже могу скинуть - есть вариант, который позволяет испольовать навигацию во всех вариантах.

Цитата

Я буду переносить API с одной версии на другую и высылать Stable релизы Владимиру.


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

Попробовать включить в систему модуль универсальной установки, с бэкапами, проверки целостности залитых файлов.

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

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

Цитата

Подумал, что если в таблицу dle_comments добавить mod_id и чуть-чуть поправить в dle выборку комментариев, то можно получить унифицированность в комментариях.

интересно, как оно на нагрузке скажется. Я пока на своём сайте делил их по разным таблицам, однако при глобальной выборке придётся юнион ол использовать.
0

#6   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 07.04.2009 - 08:54 | Цитировать выделенный текст

Если выборка будет вестись по полю типа int и на нём будет индекс, то нагрузка не сильно увеличится.
Насчёт АПИ - это будет класс, который включается в первую очередь в свои скрипты, поэтому работа с элементами движка там врядли будет возможно.
Не путаем API и сниппеты. Вообще я могу бесконечно расширять API, но мне нужны люди, которым это нужно =)
Кроме меня и Владимира конечно =)
0

#7   celsoft 

  • Администратор сайта
  • Группа: Главные администраторы
  • Сообщений: 21 762
  • Регистрация: 17.08.03

Отправлено 07.04.2009 - 11:10 | Цитировать выделенный текст

Цитата

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

API - Application Program Interface (интерфейс прикладных программ) У вас неверное понимание, что такое API, попытаюсь объяснить это интерфейс для взаимодействия с данными одной программы в другой. Это работа с данными а не с выводом или чем то еще. API облегчает создание собственных программ. Например как это действует в DLE, например вы создаете файл test.php и в нем содержимое:
include_once ('engine/api/api.class.php');
print_r($dle_api->take_user_by_id(1));

данный код всего в две строчки выведет массив с информацией о пользователе с ID1, весь его профиль и вы можете работать с этими данными, т.е. вам не нужно в своем файле подключать MySQL, писать какие то запросы и т.д.

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

#8   Александр Медведев 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 4 127
  • Регистрация: 11.10.06

Отправлено 07.04.2009 - 11:14 | Цитировать выделенный текст

1. Хотелось бы чтобы $dle_api->take_news() принимал также параметр сортировки, по какому полю и в каком направлении.
2. Функцию установки заголовка (title) страницы. Кстати, задать заголовок модуля можно непосредственно в самом модуле следующим образом:
$metatags['title'] = 'заголовок';


А так я даже и не знаю, что можно сделать в этим API, можно просто посмотреть Wordpress
0

#9   Al-x 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 448
  • Регистрация: 29.05.06

Отправлено 07.04.2009 - 11:30 | Цитировать выделенный текст

celsoft,
ясно) Значит я его более расширенно принимал.

Тогда я честно говоря тоже не знаю что добавить. Работа с движком крутиться не только вокруг информации о пользователе, и новостях.
Даже на примере данного:

Цитата

$dle_api->take_news ($cat=X, $limit=N);
Получение N новостей в массив из категории X. При выборке не накладываются групповые ограничения!

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

В общем что-то я тут не догоняю
0

#10   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 07.04.2009 - 11:35 | Цитировать выделенный текст

В take_news можно через запятую передавать категории.
Сортировка - ОК.
$dle_api->take_news($cats, $limit, $sort = 'id', '$order='desc');

В таком виде устроит?
0

#11   Александр Медведев 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 4 127
  • Регистрация: 11.10.06

Отправлено 07.04.2009 - 11:55 | Цитировать выделенный текст

Цитата

В таком виде устроит?
устроит конечно.
Неебольшое преимущество я вижу в меньшем количестве символов в коде.
То есть вместо
$news = $db->super_query('SELECT something FROM dle_post ....', true);

мы напишем
$news = $dle_api->take_news($cats, $limit, $sort = 'id', '$order='desc');


Но недостаток в том, что при "ручном" запросе я сам выбираю поля, которые необходимы, а take_news() полагаю будет забирать все поля

Сообщение отредактировал Александр Медведев: 07.04.2009 - 11:56

0

#12   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 07.04.2009 - 11:57 | Цитировать выделенный текст

ммм...
$news = $dle_api->take_news($fields = "*", $cats, $limit, $sort = 'id', '$order='desc');

Сообщение отредактировал IT-Security: 07.04.2009 - 11:57

0

#13   Александр Медведев 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 4 127
  • Регистрация: 11.10.06

Отправлено 07.04.2009 - 12:50 | Цитировать выделенный текст

тогда уж лучше просто так
$news = $dle_api->take_news($cats, $limit, $sort, $order, $fields);

и брать
$news = $dle_api->take_news(6, 10);

а остальные параметры для гурманов))
0

#14   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 08.04.2009 - 13:24 | Цитировать выделенный текст

ОК. Принято.
0

#15   mitriy 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 877
  • Регистрация: 27.02.06

Отправлено 08.04.2009 - 16:54 | Цитировать выделенный текст

немного влезу в тему не по теме

а чем хуже вот это вариант? http://poligon.dle-hack.ru/files/289-podde...nija-v-dle.html

на взгляд ламмера он проще и гибче. особенно то что он практически не трогает дистрибутив. все функции подключаются и выводятся независимо от движка.

мне просто интересно понять разницу.

кстати та же система на сниппетах работает в modx - и очень удобная штука.
0

#16   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 08.04.2009 - 18:34 | Цитировать выделенный текст

Не путайте сниппеты и API!
API вообще ничего не трогает в движке и подключается в модули через include.
0

#17   mitriy 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 877
  • Регистрация: 27.02.06

Отправлено 08.04.2009 - 18:44 | Цитировать выделенный текст

вообщем с точки зрения просто юзера кучи модов. особенно когда пишется мод а потом автора не найти и версий выходит несколько ДЛЕ. мне хочется узнать, что будет если мод написан используя ваше апи. одно дело когда как сейчас мод хоть и сидит в файлах движка, но запросы у него свои, выводится он сам по себе. а тут вы что-то смените в своем апи и все. приплыли. ищи автора плати денег чтобы поправил?
0

#18   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 08.04.2009 - 18:49 | Цитировать выделенный текст

1) API нужно для получения данных движка (Пользователи, кэш и далее больше)
2) Первое сообщение для кого написано?
Структура АПИ всегда будет оставаться одинаковой, будет добавляться только новый функционал.
3) То, что API будет всегда вместе с движком, а модули сторонние нет не наводит на мысли?)
0

#19   Kiborg 

  • Новичок
  • Группа: новички
  • Сообщений: 2
  • Регистрация: 27.01.07

Отправлено 11.04.2009 - 08:09 | Цитировать выделенный текст

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

#20   IT-Security 

  • Герой нашего времени
  • Группа: Клиенты
  • Сообщений: 1 658
  • Регистрация: 14.04.07

Отправлено 12.04.2009 - 15:39 | Цитировать выделенный текст

С правами пользователей есть.
Есть возможность менять группу, логин, пароль и т.п.
Подумаю о возможности менять любое поле чуть попозже.
Сейчас думаю о системе доп. полей.
0


Быстрый ответ

  
  • Готовые Моды, Хаки, Локализаторы, Советы
  • 16 Страниц +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Ответить