Перейти к публикации

Рекомендованные сообщения

Найти:

function check_auth ($login, $password)

Заменить на:

function external_auth ($login, $password)

Владимир, обновите пожалуйста в дистрибутиве

Ссылка на сообщение
Поделиться на других сайтах

Еще один вопрос

в ридми написано в некоторых функциях что параметр $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? это ведь число

Ссылка на сообщение
Поделиться на других сайтах

Это уже Владимир ошибся :)

В оригинале, который был до интеграции с 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;

			  }

Ссылка на сообщение
Поделиться на других сайтах

IT-Security,

В чем я ошибся? Что в вашем варианте что в том что сейчас опубликован в дистрибутиве везде число

$user_id = intval($user_id);

И выбирается по ID, а в описании к функции вы написали

// $user - string

А лишь заключил переменную в кавычки

user_id = '$user_id'

но как ID был, так и остался

Ссылка на сообщение
Поделиться на других сайтах

А лишь заключил переменную в кавычки

Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число.

Вы в целом сделали все строго по ридми, ошибка в ридми имхо

В ридми тогда тоже нужно поправить

// $user - string на // $user - int или на на // $user_id - int (для большей наглядности)

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число.

неправы, ищется так, в каком формате поле в БД, а оно числовое и ищется как число

Ссылка на сообщение
Поделиться на других сайтах

Как я понимаю (может не прав?) если sql запрос идет в кавыках то он ищется как строка, а это при больших таблицах хуже чем искать как число.

неправы, ищется так, в каком формате поле в БД, а оно числовое и ищется как число

Хм, тогда прошу простить, забыл об этом )

Хотя ридми всетаки лучше поправить, если исходить только из него, да еще новичку, то может показаться что ищется имя, так как $user да еще и string

Понимаю что новичкам лучше туда совсем не лесть, но ведь всеравно же полезут, посему лучшебы немного понятнее назваь значение :)

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Хотя ридми всетаки лучше поправить

с этим конечно я согласен, внес изменения в описание функций

Ссылка на сообщение
Поделиться на других сайтах

Хотя ридми всетаки лучше поправить

с этим конечно я согласен, внес изменения в описание функций

Будет ли описание API в документации к ДЛЕ? Ридми все-таки не самый лучший вариант дла такого важного класса как API.

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

newname,

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

Ссылка на сообщение
Поделиться на других сайтах

Сергей у тебя в 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');

Ссылка на сообщение
Поделиться на других сайтах

Ок, будет в релизе. На данный момент готовлю то, что в первом посте + небольшие фиксы.

Мне очень приятно, что API вызывает интерес. Хотелось бы увидеть реализации модулей на нём :)

Ссылка на сообщение
Поделиться на других сайтах

Хотелось бы увидеть реализации модулей на нём :)

Пока очень маленький функционал 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 развивается и много в нем нет.

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Функция 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.

Изменено пользователем Vladimir Gorobets
Ссылка на сообщение
Поделиться на других сайтах

К стати, я и не обратил на это внимание, при смене ника через API не меняются авторы комментов, новостей....

Vladimir Gorobets +1 за внимательность.

p.s.

Сырой вышел релиз, имхо, нужно было всетаки выложить в паблик на тестирование, все проблемы от зарыктости тестовых версий...

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Попытки выложить были, но когда API лежало БЕЗ DLE, то никому было не нужно и комментариев было НОЛЬ)))

Так что будем править на лету =) Завтра к ночи выложу поправленный и доделанный релиз =)

Ссылка на сообщение
Поделиться на других сайтах

Попытки выложить были

Хм, я наверно что-то пропустил? :)

но когда API лежало БЕЗ DLE, то никому было не нужно и комментариев было НОЛЬ)))

Потому и было ноль, что не было чего обсуждать, ты же сразу в первом посте написал:

Первая версия API будет доступна сразу после выхода 8.0.

Что тут можно было обсуждать? :)

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Хм, как то не заметил этой темы :( нужно бы было наверно переодически поднимаь её новыми бетами...

А может всему виной зимняя спячка разработиков :lol:

Изменено пользователем newname
Ссылка на сообщение
Поделиться на других сайтах

Я думаю, что API нужно посвятить отдельный раздел форума. Одну тему скоро будет невозможно читать.

По ходу вопрос: У меня сложилось впечатление, что создание API это начало прямой дороги к закрытому коду ДЛЕ, так ли это?

B)

Ссылка на сообщение
Поделиться на других сайтах

создание API - это полностью переписываение ДЛе.. ДЛе нужно будет переписать... движок не приспособлен длявсключения API...... его надо в корне менять...и переписать... а на такое навряд ли пойдет целсофт.

Ссылка на сообщение
Поделиться на других сайтах

DeamonShan,

Что за бред, в 8.0 API уже существует, правда с небольшым пока функционалом, и ни строчки кода при этом переписывать не нужно.

stud_muffler,

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

Ссылка на сообщение
Поделиться на других сайтах

Версия 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 (имя_кэша);)

Версия опубликована

Изменено пользователем IT-Security
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...