lifestar 18 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 Итак, решил использовать API на реальной задаче ПЛЮСЫ 1. Немного меньше кода. 2. Не нужно задумываться подключены ли классы бд и загружали ли мы конфиг движка. Подключил API - оно дальше само Это самое главное преимущество МИНУСЫ 1. Плохая документация. Что именно возвращают методы остаётся загадкой, если не залезть в код или не попробовать запустить. 2. Неотформатирован код Обнаружил ошибку в версии 0.05 в строке $condition = "category IN (" . implode ( ',', $cats ) . ")'"; а именно одинарная кавычка лишняя. Для чего нужно $dle_api->files и метод - show_cached_files() не понял, а ведь он запускается хочу я этого или нет - кушает ресурсы Пример использования API require_once ROOT_DIR.'/engine/api/api.class.php'; /* * ЗАБИРАЕМ НОВОСТИ СОГЛАСНО НАСТРОЕК */ $q = $showShort == 1 ? ', short_story' : ''; $news = $dle_api->load_from_cache('aktauInformer'.$count, 18000, 'fire'); if(!$news) { $dle_api->dle_config['allow_multi_category'] = 0; $news = $dle_api->take_news($config['informer']['news']['cats'], 'id, title'.$q, 0, $count, 'date'); $dle_api->save_to_cache('aktauInformer'.$count, $news); } foreach($news as $row) { $title = substr($row['title'], 0, $titleSize); if($title != $row['title']) $title.= '...'; if($showShort == 1) { // Обрабокта анонса новости $row['short_story'] = strip_tags($row['short_story']); $shortStory = substr($row['short_story'], 0, $shortSize); if($shortStory != $row['short_story']) $shortStory.= '...'; $js .= 'aktauInformerRowExt("'.$title.'", "'.trim($shortStory).'", '.$row['id'].');'."\n"; } else { $js .= 'aktauInformerRow("'.$title.'", '.$row['id'].');'."\n"; } } $js .= 'setTimeout(aktauInformerRender, 100)'; header('Content-Type: application/x-javascript'); print $js; В целом неплохой инструмент Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 Автор Скоро новая версия с поддержой доп. полей + автоустановкой при первом запуске API. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 + автоустановкой при первом запуске API.что это значит? Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 июня 2009 Рассказать Опубликовано: 8 июня 2009 (изменено) Обнаружена ещё одна ошибка, на сей раз критическая.. Функция $dle_api->take_news, параметр $cat - категории через запятую Если указать всего одну категорию - получим ошибкуWarning: implode(): Invalid arguments passed Исправление удалить if (strpos($cat, ',')) { $cats = explode(',', $cat); } else { $cats = $cat; } Сергей, если ты указал что надо категории через запятую, зачем мудрить с массивом?) далее найти$condition = ''; if ($this->dle_config['allow_multi_category'] == 1) { $condition = "category regexp '[[:<:]](" . implode ( '|', $cats ) . ")[[:>:]]'"; } else { $condition = "category IN (" . implode ( ',', $cats ) . ")"; } и заменить на if ($this->dle_config['allow_multi_category'] == 1) { $condition = 'category regexp "[[:<:]]('.str_replace(',', '|', $cat).')[[:>:]]"'; } else { $condition = 'category IN ('.$cat.')'; } Да, кстати неплохо было бы предусмотреть желание выбрать новости из категории, включая её подкатегории Изменено 8 июня 2009 пользователем Александр Медведев Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 9 июня 2009 Рассказать Опубликовано: 9 июня 2009 Автор + автоустановкой при первом запуске API.что это значит? В новой версии API две таблицы для альтернативных дополнительных полей. Чтобы разработчику не нужно было думать о них, то при первом запуске приложения с API будут созданы эти таблицы. За bugreport спасибо, поправлю в релизе. Нет желания вдвоём прогать API? Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 15 июня 2009 Рассказать Опубликовано: 15 июня 2009 (изменено) Автор Предварительный CHANGELOG DLE API v0.06 Beta - Убраны $dle_api->files и функция получения листинга (Спасибо Александру Медведеву) - Поправлена функция получения новостей (Спасибо Александру Медведеву) - Добавлена поддержка дополнительных полей - Мелкие правки кода - Отформатирован код - Написана новая документация - Убрано изменения уровня ошибок (Спасибо Александру Медведеву) Изменено 15 июня 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 26 июня 2009 Рассказать Опубликовано: 26 июня 2009 Давно небыл на форуме. пришел, увидел, заценил. По поводу апи. Штука конечно интересная, но смысл в ней не особо понимаю. Основная проблема дле - установка новых модулей собственно, а не решение использования инструментов для написания модулей. ведь мало модулей, которые после изменения инструкции для установке не работают на свежих версиях. Но в дле я бы конечно много чего по коду упростил. Самое наверно часто встречаемое в дле - это имя юзера и его вывод. Вот его замена на функцию было бы хорошо (мелочь но приятно). По коду на первый взгляд: зачем много такого? $dle_api->take_user_by_id($user_id, $select_list = "*"); $dle_api->take_user_by_name($name, $select_list = "*"); не проще? $dle_api->take_user_where($name, $where, $select_list = "*"); ведь программисты и так знают по чему искать и что. а также по поводу изменения у пользователя каких либо параметров (change_user_name etc) можно в массив запихнуть. и вот одна функция. порадовало конечно $dle_api->send_pm_to_user кроме этого на мыло отправлять, было бы ещё лучше. по поводу $dle_api->load_table зачем использовать $this->db->query если есть $this->db->super_query и с тем же $multirow. С другой стороны пихать результаты в массив, то ж не оч хорошо, ведь на это расходуется память компа, для его хранения, обычный while ($row = $this->db->get_row()) более уместен в некоторых случаях. конечно апи сырое, но думаю оно увеличит свой функционал. Основная проблема заключается в том, что туда добавлять, ведь каждый мод по своему пишется и таких функций как получение новостей, смена пароля и прочее совершенно не нужно. ИМХО. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 30 июня 2009 Рассказать Опубликовано: 30 июня 2009 Автор API обновлено Версия 0.07 совместно с Медведевым Александром. Цитата Ссылка на сообщение Поделиться на других сайтах
spam 11 Опубликовано: 30 июня 2009 Рассказать Опубликовано: 30 июня 2009 (изменено) в api есть функция load_table в комменте к ней указано что она сервисная, у меня вопрос, когда дле перейдет на php5 будет ли эта функция ограничена (private)? например можно ли её использовать вместо $db->query? Изменено 30 июня 2009 пользователем spam Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 1 июля 2009 Рассказать Опубликовано: 1 июля 2009 (изменено) Автор Кстати будет версия API под PHP5. Насчёт того будет ли метод публик или приват я пока ещё думаю. Возможно будет public. Изменено 10 июля 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
pleomax 5 Опубликовано: 10 июля 2009 Рассказать Опубликовано: 10 июля 2009 API обновлено Версия 0.07 совместно с Медведевым Александром. Ааа!! Спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 13 июля 2009 Рассказать Опубликовано: 13 июля 2009 Автор Так как завеса тайны над пресс-релизом пропала, то могу обрадовать, что в новой версии будет: 1) $dle_api->install_mod ($name, $title, $descr, $icon, $allowed, $update = false); 2) $dle_api->uninstall_mod ($name); 3) $dle_api->change_mod_permissions ($name, $new_permissions); В случае попытки повторной установки модуля будет возвращена ошибка. Исключением является $update = true. В этом случае данные просто будут обновлены. Цитата Ссылка на сообщение Поделиться на других сайтах
mitriy 5 Опубликовано: 13 июля 2009 Рассказать Опубликовано: 13 июля 2009 пользуясь случаем, хочу наябедничать на разработчиков api, которые сами отказываются писать мод используя это api Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 13 июля 2009 Рассказать Опубликовано: 13 июля 2009 Автор Чтобы разрабатывать какой-то модуль нужно его постоянно поддерживать, чего делать у меня желания нет. Мне намного проще получить раз в месяц заказ на 200-300уе чем писать модуль по 5-10уе за штуку и заниматься и техподдержкой и доработкой и прочим. Цитата Ссылка на сообщение Поделиться на других сайтах
mitriy 5 Опубликовано: 13 июля 2009 Рассказать Опубликовано: 13 июля 2009 (изменено) смею напомнить что это как раз тот заказ который намного больше чем 200-300 уе и который вы перенаправили вашему соавтору по апи и причем оба отказались использовать апи в написании ладно. не суть. просто к тому что сами же написали что "ну нафик, неудобно. по старинке проще" вообшем не будем оффтопить на эту тему Изменено 13 июля 2009 пользователем mitriy Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 14 июля 2009 Рассказать Опубликовано: 14 июля 2009 (изменено) Автор Если Вы о гугл-мапс, то я не представляю ГДЕ там можно использовать API. Да и речи про API там не было вообще. Изменено 14 июля 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
mitriy 5 Опубликовано: 14 июля 2009 Рассказать Опубликовано: 14 июля 2009 1) $dle_api->install_mod ($name, $title, $descr, $icon, $allowed, $update = false); 2) $dle_api->uninstall_mod ($name); 3) $dle_api->change_mod_permissions ($name, $new_permissions) а как он инсталлится? то есть он просто "подключается" в админке, изменения руками делать надо в файлах движка или же как? просто понять.. Цитата Ссылка на сообщение Поделиться на других сайтах
flo.mAster 7 Опубликовано: 14 июля 2009 Рассказать Опубликовано: 14 июля 2009 1) $dle_api->install_mod ($name, $title, $descr, $icon, $allowed, $update = false); 2) $dle_api->uninstall_mod ($name); 3) $dle_api->change_mod_permissions ($name, $new_permissions) а как он инсталлится? то есть он просто "подключается" в админке, изменения руками делать надо в файлах движка или же как? просто понять.. Нет. В версии ДЛЕ 8.2 все данные о разделах админки хранятся в БД. Просто информация о нужном моде добавится в БД! Цитата Ссылка на сообщение Поделиться на других сайтах
aDolph 0 Опубликовано: 21 июля 2009 Рассказать Опубликовано: 21 июля 2009 Блин. Придется перед релизом мода install переписывать/править. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 21 июля 2009 Рассказать Опубликовано: 21 июля 2009 Автор Переписывать?Одну строчку добавить?))) Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 23 июля 2009 Рассказать Опубликовано: 23 июля 2009 Автор Итак. Вот и API v0.08 1) $dle_api->install_admin_module ($name, $title, $descr, $icon, $perm = 'all') Установка Вашего модуля в админку DLE. Параметры: $name - имя Вашего файла без .php на конце. Модуль должен лежать в engine/inc/ $title - заголовок Вашего модуля $descr - описание модуля $icon - иконка модуля, должна лежать в engine/skins/images/ передавать с расширением $perm - кто имеет доступ к модулю. Или all или ID групп через запятую 2) $dle_api->uninstall_module ($name) Удаляет модуль $name из админ-панели 3) change_module_perms ($name, $perm) Меняет привелегии к модулю $name на указанные в $perm $perm при этом или all или ID групп через запятую. Ссылка на скачивание в первом посте. Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 23 июля 2009 Рассказать Опубликовано: 23 июля 2009 Ссылка на скачивание в первом посте. Перезалей куданибудь еще, slil.ru не работает (502 Bad Gateway) Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 23 июля 2009 Рассказать Опубликовано: 23 июля 2009 IT-Security, можешь ещё добавить такую вещь, чтобы в $perm всегда по умолчанию присуствовала 1, если оно не равно all? а так же проверку, чтобы эти права мог менять только админ или хотя бы пользователь не ниже той группы, что сам есть? (т.е. главный редактор может снять или добавить группы модераторов, но свою группу и группу админов сменить не может) Думаю, это вполне обосновано и не лишне. В крайнем случае - возможность отмены фильтра Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 23 июля 2009 Рассказать Опубликовано: 23 июля 2009 Автор Эм...API работает только в скриптах Человек, имеющий доступ к ftp - априори может сделать что угодно Поэтому в проверках смысла не вижу, а проверить кто устанавливает модуль не представляется возможным. Да и это лишнее Задача API - упрощение тех или иных задач. Безопасность при этом ложится на плечи разработчика модуля. Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 24 июля 2009 Рассказать Опубликовано: 24 июля 2009 Поэтому в проверках смысла не вижу а разве данная настройка не может использоватся для установки доступа к скрипту разным группам пользователей? Например, установить к определённому модулю группы, которые могут производить его модерацию. А в последствии, чтобы админ из админки мог менять права доступа. При этом ведь никакая инсталяция модуля не ведётся. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.