newname 0 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 Версия опубликована Где? В дистрибутиве все еще старая верия Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 Автор В дистрибутиве публикуются только Stable версии. Пока что мы тестируем то, что выложено в ПЕРВОМ посте. Обновление до версии 0.04 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 IT-Security, я бы порекомендовал бы такие функции compile_page и load префиксом cache, потому что загрузок и компеляций может быть потом еще много, поэтому все лучше обозначать сразу, что эта функция относится к кешу, а эта нет. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 Автор Ок. Принято...Владимир, ждём отчётов и если всё нормально - интегрируем? Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 (изменено) Чем вызвана необходимость создания целых три функции на одну и туже задачу? функции load_from_cache, load_compiled_page, load читают кэш, по сути на одну и туже операцию три функции, не думаю что такая путаница нужна, проще сделать одну функцию с возможностью задания необязательных доп. параметров, не стоит раздувать API дублями Вообще имхо но функции работы с кэшем нужно уменьшить и делать более универальными, 6 функций работы кэшем, чать из которых дублируются, это многовато. модификаторы private, Public, наколько мне известно появилиь в php версии 5, не будет ли ошибок в работе API с этими модификаторами на более ранних версиях PHP? Изменено 19 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 Автор API заточен под PHP5 и выше. Насчёт функций - я подумаю над этим. load убирать не буду. Он считывает всегда кэш, игнорирую таймаут. Остальное - можно конечно сделать одну функцию. Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 API заточен под PHP5 и выше. А вот это недотаток, много скриптов ДЛЕ стоит на php 4, поэтому лучше всетаки делать совместимый с этой версией класс. Насчёт функций - я подумаю над этим. load убирать не буду. Он считывает всегда кэш, игнорирую таймаут. Можно добавить необязательный параметр, ели задан то смотрим таймаут, если нет то игнорируем, дубли в функциях это только лишняя путаница, да и вообще не люблю лишнего кода Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 Автор Подумаю на эту тему. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 21 апреля 2009 Рассказать Опубликовано: 21 апреля 2009 Автор Я так понимаю, что всё стабильно и всё работает и все всё протестировали? Цитата Ссылка на сообщение Поделиться на других сайтах
DemanZ 0 Опубликовано: 22 апреля 2009 Рассказать Опубликовано: 22 апреля 2009 (изменено) На счёт // Users group - int // Return Array or false $api->take_users_by_group($group_id); // Реализовано Может быть подумать на счёт LIMIT в запросе? Я думаю пригодилось бы... А то если выбрать всех пользователей из группы --- а их там 15 тысяч... ну как бы много... Лимит помог бы P.s> так же можно посмотреть и другие функции на счёт этого ... Ещё я бы немного переделал конструктор: private cache_dir = ENGINE_DIR."/cache/"; function DLE_API($cache_dir= '') { if ($cache_dir != '') $this->cache_dir = ENGINE_DIR . $cache_dir; $this->show_cached_files(); return true; } А там дело барина, всё равно спасибо, хоть как то упростит жизнь :-) Изменено 22 апреля 2009 пользователем DemanZ Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 22 апреля 2009 Рассказать Опубликовано: 22 апреля 2009 Автор Сегодня выпущу версию 0.05 ночью... Обновления: - Обновлённая функция load_table - Добавлены лимиты к массовым операциям - Пересмотрены функции работы с кэшем (Их теперь будет две. load и save и в зависимости от типа данных будет делаться нужное) - Убраны модификаторы доступа (Привет php4...) - Добавлена проверка форматы почты в внешней регистрации и в изменении почты - take_news() (отдаёт массив данных) Цитата Ссылка на сообщение Поделиться на других сайтах
DemanZ 0 Опубликовано: 22 апреля 2009 Рассказать Опубликовано: 22 апреля 2009 (изменено) - Пересмотрены функции работы с кэшем (Их теперь будет две. load и save и в зависимости от типа данных будет делаться нужное) Ещё хорошо бы, стразу предусмотреть кэшь который держится по времени... вот пример работы функции function dle_cache_time($prefix, $cache_time = 24, $cache_id=false, $member_prefix=false){ global $config, $is_logged, $member_id; if (!is_int($cache_time)) $cache_time = 24; if ($config['allow_cache'] != "yes") return false; if ($is_logged) $end_file = $member_id['user_group']; else $end_file = "0"; if (!$cache_id) { $filename = ENGINE_DIR.'/cache/'.$prefix.'.tmp'; } else { $cache_id = totranslit ($cache_id); if ($member_prefix) $filename = ENGINE_DIR."/cache/".$prefix."_".$cache_id."_".$end_file.".tmp"; else $filename = ENGINE_DIR."/cache/".$prefix."_".$cache_id.".tmp"; } if (file_exists($filename)){ $cr_time = filemtime($filename); if ((time() - $cr_time) > ($cache_time * 60 * 60)) { @unlink($filename); return false; } } return @file_get_contents($filename); } UPDATE З.Ы. сори -- сразу не заметил что уже есть Изменено 22 апреля 2009 пользователем DemanZ Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 22 апреля 2009 Рассказать Опубликовано: 22 апреля 2009 Автор У меня в апи именно по времени кэш Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 22 апреля 2009 Рассказать Опубликовано: 22 апреля 2009 (изменено) Автор Физически не успел закончить =( Успел сделать: 1) Убраны модификаторы доступа 2) Обновлённая функция load_table: - Добавлено: $start = 0, $limit = 0, $sort = '', $sort_order = 'desc' 3) В массовые операции добавлен $limit (По умолчанию не лимитируется) 4) Пересмотрены функции работы с кэшем: $dle_api->load_from_cache ($filename, $timeout, $type = 'text'); $type может быть text или array. Если выбран array, то отдаётся массив, если text - то или содержимое кэша или сериализованный массив $dle_api->save_to_cache ($filename, $vars); Если $vars - Array, то сохраняется сериализованный массив Если нет - сохраняется AS IS. 5 - file_put_contents заменён на fopen() + chmod() + fwrite() + fclose() (Совместимость с PHP4) Изменено 22 апреля 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 23 апреля 2009 Рассказать Опубликовано: 23 апреля 2009 Автор Меня ждёт бессонная ночь, но я это сделал...Версия 0.05 опубликована Много вкусностей Концепция архитектуры дополнительных полей API: Имеем две таблицы. Первая: CREATE TABLE IF NOT EXISTS `dle_alt_fields` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `alt_name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; id - уникальный id поля name - имя на русском или английском языке alt_name - название поля на латинице Вторая: CREATE TABLE IF NOT EXISTS `dle_alt_fields_values` ( `id` int(11) NOT NULL AUTO_INCREMENT, `field_id` int(11) NOT NULL, `field_value` varchar(255) NOT NULL, `link_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `field_id` (`field_id`,`link_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; id - уникальный id записи field_id - идентификатор дополнительного поля field_value - значение поля (не более 255 знаков!) link_id - связующий идентификатор. А теперь пример. Итак...Есть у нас модуль SMS-голосования за новости например. Чтобы не вносить изменения в структуру таблиц DLE делаем следующее: Делаем доп. поле - "Количество голосов" -> "news_sms_votes" Далее скриптом обращаемся к таблице и видим, что выборка ничего не дала. Заносим данные, если нужно (Это уже от написания скрипта зависит) Если же записи будут, то просто получаем значение. Примерно это выглядит так: function take_field_value ($alt_name, $link_id) { if (!$this->fields) $this->load_fields(); // Получаем id поля по id if (!$this->fields[$alt_name]) { return false; } else { $id = $this->fields[$alt_name]['id']; // Получаем данные запросом по ID if (!$dannie) return 0; else { return $dannie['field_value']; } } } function add_field ($name, $alt_name) { // Вставка нового поля } function del_field ($id) { // Грохаем все позиции с этим полем, а потом и само поле } function edit_field ($id, $new_name, $new_altname) { // Редактирование признака } function add_field_value ($alt_name, $value, $link_id) { // Добавление значения } function edit_field_value ($alt_name, $value, $link_id) { // Редактирование поля } function del_field_value ($alt_name, $link_id) { // Удаление поля } function change_field_rel ($alt_name, $link_id) { // Меняем линковочный параметр } Идея вот такая...Обсуждаем... Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 24 апреля 2009 Рассказать Опубликовано: 24 апреля 2009 Автор В следующей версии будет разработан Standalone mode. Что это такое? api будет доступно для внешнего вызова примерно вот так: http://www.site.ru/api.php?key=тут_ключ&func=функция Остальные параметры в зависимости от функции. Для чего это нужно? В дальнейшем планируется сильно расширить функционал по работе с новостями, опросами и т.п. Грубо говоря при желании Вы сможете вставить результат работы опроса на одном сайте на другой. Тоже самое с новостями. Далее Вы сможете спокойно проверять информацию на одном сайте с информацией на другом. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 (изменено) Автор И ниодного комментария В дальнейшем планируется запускать API в нескольких режимах. 1 - Standart - отдаётся информация внутри скрипта, когда мы просто вставляем API 2 - HTTP Text (Standalone) - когда информация выдаётся по протоколу HTTP через GET запросы 3 - HTTP XML (Standalone) - когда информация выдаётся по протоколу HTTP через GET запросы в виде XML Изменено 25 апреля 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
kaliostro_den 2 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 IT-Security, А может и SOAP еще прикрутим ) Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Добрый вечер все ДЛЕшникам, давно тут небыл, но увидел что в ДЛЕ задумали делать API и не мог пройти мимо. Первое что вызвало недоумение, зачем ограничивать себя как программиста и писать код на старой версии ПХП, уже ПХП 6.0 находится в бета тестирования, а вы никак не можете на ПХП 5.* перейти. Второе, как то странно что все находится в одном классе, надо бы добавить некое пространство имен и разделить на несколько классов, например в АПИ классе сейчас в основном методы для работы с пользователями и забрел один метод для посылки ПМ, по мойму ему не место с юзерами. Почему бы не организовать pattern factory и через него добавлять то что нам надо. А так затеяли хорошее дело, для ДЛЕ это только на пользу. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Автор Я не пользуюсь паттернами, а пхп4 из-за того, что сам DLE работает на пхп4. Когда Владимир откажется от поддержки пхп4, то перепишу класс. Насчёт большого количества классов - изначально задумано, что человек вставляет один файл и получает весь функционал. Если есть желание помогать с разработкой - велком ко мне в ICQ. IT-Security, А может и SOAP еще прикрутим ) К сожалению не работал с ним Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Я не пользуюсь паттернами А зря вы их игнорируете, хароший тон использовать паттернс, добовляет больше понимания логики и задумки человека писавшего класс. а пхп4 из-за того, что сам DLE работает на пхп4. Когда Владимир откажется от поддержки пхп4, то перепишу класс ПХП4 есть зло для ООП, потомутчо не дает реализовать ООП в полной его красе. В докозательство этому могу написать критику в сторону использования класса БД, конечно если Владимир согласитса. Насчёт большого количества классов - изначально задумано, что человек вставляет один файл и получает весь функционал. И это не есть харошее решение, по мере роста функцыональности, выростит и кусок памяти каторый будет занимать этот класс. Предположим что мне надо функцыонал по работе с пользователями, зачем мне засорять память остальным функцыоналом каторый мне не нужен. Если есть желание помогать с разработкой - велком ко мне в ICQ. Срадостью но когда в ДЛЕ войдет ПХП 5.*, увы я уже не могу отказаться от всех удобств в которые дает ПХП 5 А может и SOAP еще прикрутим ) Во первых зачем это в дле, дле не работает с сервесами. Во вторых зачем изобретать велосипед, есть прекрасная реализация работы с сервисами через SOAP в ZendFrameWork Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Автор ммм..Есть идея сделать api_php4.class.php и api_php5.class.php Инициализатор написать несложно (Пример - MySQL и MySQLi) Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 ммм..Есть идея сделать api_php4.class.php и api_php5.class.php Инициализатор написать несложно (Пример - MySQL и MySQLi) такая реализация какраз подходит для pattern factory (советую почитать на досуге). Я просто не понимаю для чего каждый раз вызывать проверку на версию ПХП, для примера можно посмотреть как реализована подключение нужного класса для работы с БД в Zend Framework (Zend_Db) Для решение этой проблемы всего то нужно добавть еще один элемент в массив конфигурации при установки скрипта. Да к томуже писать один и тотже метод 2-а раза из за версии ПХП, поменьшей мере глупо. P.S. Кто то вообще видел статистику хостинговых компаний до сих пор использующих ПХП < 5 без опции переключения на ПХП 5? Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Автор 90% Windows хостинга на php4 (Как минимум Агава) Классы есть смысл разнести когда будет функционал. Вообще как я смотрю по активности народа - им это не нужно =) Все ныли и плакали, что так трудно писать простейшие модули под DLE - им даёшь решение, на которое гробишь своё ЛИЧНОЕ время - а они даже не могут протестировать и высказать пожелания. Я подожду до версии 0.1, если активность будет такая же, то разработка API будет завершена на 0.1, так как писать его для самого себя смысла я не вижу, учитывая написание своего движка. Впринципе версии 0.1 будет достаточно для написания модулей. Главное успеть до версии DLE 8.1 (ну или какая там будет), чтобы было включено в дистрибутив. Большинство людей даже не понимают зачем API нужно. Они путают сниппеты и API. Виной всему WordPress в котором разработчики назвали неправильно то, что разработали. Меня удивляет, неужели люди думают, что чем больше будут писать про автоустановку модулей, тем скорее она появится?Да не будет её Как говорится расслабьтесь и получайте удовольствие Завтра выложу небольшой трюк, который позволит чуть-чуть попроще ставить модули в engine.php Цитата Ссылка на сообщение Поделиться на других сайтах
Bagir 3 Опубликовано: 25 апреля 2009 Рассказать Опубликовано: 25 апреля 2009 Ну я тогда подожду признаки появления ПХП 5 в дле, серавно больше не пишу модули для ДЛЕ, не благодарное это дело. Но развитию ДЛЕ серавно хочу помочь. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.