celsoft 6 060 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 можно просто include_once('engine/api/api.class.php'); Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 в readme.txt к API нашел интересный класс // Внешняя авторизация в самом API этого класса (external_auth) не нашел. потерялся? Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Автор Найти: function check_auth ($login, $password) Заменить на: function external_auth ($login, $password) Владимир, обновите пожалуйста в дистрибутиве Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Еще один вопрос в ридми написано в некоторых функциях что параметр $user это строка вот например // Смена пароля пользователя // $user - string // $new_pass- string // Return: // 1 - ALL OK // 0 - DB Error $dle_api->change_user_pass($user, $new_pass); Тогда как в самом API в этих функциях user выбирается по user_id // Change user password function change_user_password($user_id, $new_password) { $user_id = intval( $user_id ); $new_password = md5( md5( $new_password ) ); $q = $this->db->query( "update " . USERPREFIX . "_users set password = '$new_password' where user_id = '$user_id'" ); if( ! $q ) return 0; else return 1; } Не будет ли правильнее искать user_id не как string а как int? это ведь число Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Автор Это уже Владимир ошибся В оригинале, который был до интеграции с DLE: function change_user_password ($user_id, $new_password) { $user_id = intval($user_id); $new_password = md5(md5($new_password)); $q = $this->db->query("update ".USERPREFIX."_users set password = '$new_password' where user_id = $user_id"); if (!$q) return 0; else return 1; } Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 060 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 IT-Security, В чем я ошибся? Что в вашем варианте что в том что сейчас опубликован в дистрибутиве везде число $user_id = intval($user_id); И выбирается по ID, а в описании к функции вы написали // $user - string А лишь заключил переменную в кавычки user_id = '$user_id' но как ID был, так и остался Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 (изменено) А лишь заключил переменную в кавычки Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число. Вы в целом сделали все строго по ридми, ошибка в ридми имхо В ридми тогда тоже нужно поправить // $user - string на // $user - int или на на // $user_id - int (для большей наглядности) Изменено 16 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 060 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число. неправы, ищется так, в каком формате поле в БД, а оно числовое и ищется как число Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 (изменено) Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число. неправы, ищется так, в каком формате поле в БД, а оно числовое и ищется как число Хм, тогда прошу простить, забыл об этом ) Хотя ридми всетаки лучше поправить, если исходить только из него, да еще новичку, то может показаться что ищется имя, так как $user да еще и string Понимаю что новичкам лучше туда совсем не лесть, но ведь всеравно же полезут, посему лучшебы немного понятнее назваь значение Изменено 16 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 060 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Хотя ридми всетаки лучше поправить с этим конечно я согласен, внес изменения в описание функций Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 (изменено) Хотя ридми всетаки лучше поправить с этим конечно я согласен, внес изменения в описание функций Будет ли описание API в документации к ДЛЕ? Ридми все-таки не самый лучший вариант дла такого важного класса как API. Изменено 16 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 060 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 newname, Со временем да, пока в нем мало возможностей и они пока визуально понятны для разработчика, по элементарному названию. По мере усложнения будет и подробное описание Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 16 апреля 2009 Рассказать Опубликовано: 16 апреля 2009 Сергей у тебя в api идет Select * ... Но это не всегда удобно, тот же take_user_by_id возвращает массив всех значений, без возможности выбора, будет ли добавлена возможность выбора тех данных которые мне нужно выбрать? Сейчас если мне необходимо получить e-mail, логин, я например сделал бы $db->query( "SELECT email, name FROM " . USERPREFIX . "_users where user_id = $id"); На выходе два нужных мне значения, имхо но иметь возможность выбора гораздо удобнее. Может лучше так? function take_user_by_id($id, $select = false) { $id = intval( $id ); if( $id == 0 ) return false; if ($select) { $q = $this->db->query( "Select $select from " . USERPREFIX . "_users where user_id = '$id'" ); } else { $q = $this->db->query( "Select * from " . USERPREFIX . "_users where user_id = '$id'" ); } $row = $this->db->get_row(); if( count( $row ) == 0 ) return false; else return $row; } Вызывать: $dle_api->take_user_by_id(1, 'email, name'); Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 Автор Ок, будет в релизе. На данный момент готовлю то, что в первом посте + небольшие фиксы. Мне очень приятно, что API вызывает интерес. Хотелось бы увидеть реализации модулей на нём Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 (изменено) Хотелось бы увидеть реализации модулей на нём Пока очень маленький функционал API, разве что для некоторых хаков и интеграций, ждем расширения API Не думал сделать какую нибудь "универсальную" функцию для подгрузки любых данных из любой табицы? Что то типа такого function take_by_table($table, $select = false, $where = false) { if( !$table ) {return false;} else{ if($where) $where = 'WHERE '.$where; if (!$select) $select = '*'; $q = $this->db->query( "SELECT $select FROM $table $where" ); $row = $this->db->get_row(); if( count( $row ) == 0 ) return false; else return $row; } } Вызов через $dle_api->take_by_table("dle_post", "title", "title='supertitle'"); Особенно удобно пока API развивается и много в нем нет. Изменено 17 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
Gorets 3 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 (изменено) Функция API change_user_name Оригинал в админке: $editlogin = $db->safesql( $parse->process( $_POST['editlogin'] ) ); Через API $new_name = $this->db->safesql( $new_name ); Оригинал в админке: $db->query( "UPDATE " . PREFIX . "_post SET autor='$editlogin' WHERE autor='{$row['name']}'" ); $db->query( "UPDATE " . PREFIX . "_comments SET autor='$editlogin' WHERE autor='{$row['name']}' AND is_register='1'" ); $db->query( "UPDATE " . USERPREFIX . "_pm SET user_from='$editlogin' WHERE user_from='{$row['name']}'" ); $db->query( "UPDATE " . PREFIX . "_vote_result SET name='$editlogin' WHERE name='{$row['name']}'" ); $db->query( "UPDATE " . PREFIX . "_images SET author='$editlogin' WHERE author='{$row['name']}'" ); $sql_update .= ", name='$editlogin'"; Через API всего лишь $q = $this->db->query( "update " . USERPREFIX . "_users set name = '$new_name' where user_id = '$user_id'" ); Уважаемый автор API, обратите пожалуйста внимание на эти различия. Это первое, что бросилось в глаза. Так-же очень хотелось бы услышать коментарии celsofta. Изменено 17 апреля 2009 пользователем Vladimir Gorobets Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 (изменено) К стати, я и не обратил на это внимание, при смене ника через API не меняются авторы комментов, новостей.... Vladimir Gorobets +1 за внимательность. p.s. Сырой вышел релиз, имхо, нужно было всетаки выложить в паблик на тестирование, все проблемы от зарыктости тестовых версий... Изменено 17 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 Автор Попытки выложить были, но когда API лежало БЕЗ DLE, то никому было не нужно и комментариев было НОЛЬ))) Так что будем править на лету =) Завтра к ночи выложу поправленный и доделанный релиз =) Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 (изменено) Попытки выложить были Хм, я наверно что-то пропустил? но когда API лежало БЕЗ DLE, то никому было не нужно и комментариев было НОЛЬ))) Потому и было ноль, что не было чего обсуждать, ты же сразу в первом посте написал: Первая версия API будет доступна сразу после выхода 8.0. Что тут можно было обсуждать? Изменено 17 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 Автор http://forum.dle-news.ru/index.php?showtopic=44393 Цитата Ссылка на сообщение Поделиться на других сайтах
newname 0 Опубликовано: 17 апреля 2009 Рассказать Опубликовано: 17 апреля 2009 (изменено) http://forum.dle-news.ru/index.php?showtopic=44393 Хм, как то не заметил этой темы нужно бы было наверно переодически поднимаь её новыми бетами... А может всему виной зимняя спячка разработиков Изменено 17 апреля 2009 пользователем newname Цитата Ссылка на сообщение Поделиться на других сайтах
stud_muffler 0 Опубликовано: 18 апреля 2009 Рассказать Опубликовано: 18 апреля 2009 Я думаю, что API нужно посвятить отдельный раздел форума. Одну тему скоро будет невозможно читать. По ходу вопрос: У меня сложилось впечатление, что создание API это начало прямой дороги к закрытому коду ДЛЕ, так ли это? Цитата Ссылка на сообщение Поделиться на других сайтах
DeamonShan 0 Опубликовано: 18 апреля 2009 Рассказать Опубликовано: 18 апреля 2009 создание API - это полностью переписываение ДЛе.. ДЛе нужно будет переписать... движок не приспособлен длявсключения API...... его надо в корне менять...и переписать... а на такое навряд ли пойдет целсофт. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 060 Опубликовано: 18 апреля 2009 Рассказать Опубликовано: 18 апреля 2009 DeamonShan, Что за бред, в 8.0 API уже существует, правда с небольшым пока функционалом, и ни строчки кода при этом переписывать не нужно. stud_muffler, Ребят вы пока начните что то предлагать конкретное, все можно организовать если будет обсуждение, советы, что нужно новое, что убрать старое, пока лишь одна вода на трех страницах. Начните предлагать конкретные функции. Ведь еще много чего нет, точнее почти ничего нет. Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 19 апреля 2009 Рассказать Опубликовано: 19 апреля 2009 (изменено) Автор Версия 0.03 Изменения: - Служебная функция 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 (имя_кэша) Версия опубликована Изменено 19 апреля 2009 пользователем IT-Security Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.