Въпроси по курса

Информация за iMoodle

Информация за iMoodle

от Трифон Трифонов -
Number of replies: 30

Здравейте,

В тази тема ще публикувам информация и ще отговарям на въпроси, свързани с проект iMoodle. Тъй като има проблем с настройката на правата, много от вас са се сблъскали с едни и същи проблеми, и мисля че ще е полезно ако ги споделите тук, за да могат всички да ги прочетат.

Поздрави,
  Трифон

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Трифон Трифонов -

Ето и малко разяснения по проблемите с API-то на Moodle.

  1. До края на предната седмица ползването на REST протокола беше забранено за потребители, които не са администратори и се получаваше грешка. Сега вече това е оправено и не би трябвало да получавате грешка.
  2. Тук има примери за клиенти на Java и PHP за различните интерфейси (REST,XML-RPC,SOAP): https://github.com/moodlehq/sample-ws-clients
  3. Eто някои примерни заявки за REST
    1. Получаване на token:
      https://learn.fmi.uni-sofia.bg/login/token.php?username=<USERNAME>&password=<PASSWORD>&service=moodle_mobile_app
    2. Информация за наличните web услуги и за user ID на логнатия потребител
      https://learn.fmi.uni-sofia.bg/webservice/rest/server.php?wstoken=<TOKEN>&wsfunction=moodle_webservice_get_siteinfo
    3. Списък от всички курсове на даден потербител
      https://learn.fmi.uni-sofia.bg/webservice/rest/server.php?wstoken=<TOKEN>&wsfunction=moodle_enrol_get_users_courses&userid=<ID>
    4. Информация за даден курс (примерът е за ПiOS)
      https://learn.fmi.uni-sofia.bg/webservice/rest/server.php?wstoken=<TOKEN>&wsfunction=moodle_course_get_courses&options[ids][0]=337
  4. Означението (2) пред задачите в проекта маркира задачите, които са задължителни, ако проектът се изпълнява от двама души.
  5. Моля, не правете качването на файл и на снимка, понеже в момента Moodle поддържа качване на файл само от преподаватели, но не и от студенти и така функционалността няма да е много използваема. Вместо това, направете редактиране на различни данни от собствения профил, чрез използване на функцията moodle_user_update_users.
In reply to Трифон Трифонов

Re: Информация за iMoodle

от Трифон Трифонов -

В примерите ето тук: https://github.com/moodlehq/sample-ws-clients е показано как може да се изиска JSON формат, чрез параметъра moodlewsrestformat. За съжаление, този параметър не се поддържа от learn.fmi.uni-sofia.bg, понеже е въведен в Moodle 2.2.0, а learn.fmi.uni-sofia.bg е версия 2.1.2. Ще трябва да работите с XML

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Трифон Трифонов -

Функцията moodle_course_get_courses не работеше заради проблеми с правата, сега вече работи.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Трифон Трифонов -

moodle_user_update_users вече също работи, но само за собствения ви профил. Ето как се ползва:

https://learn.fmi.uni-sofia.bg/webservice/rest/server.php?wstoken=<TOKEN>&wsfunction=moodle_user_update_users&users[0][id]=<ID>&users[0][lastname]=<NEWLASTNAME>

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Мартин Пеев -
In reply to Мартин Пеев

Re: Информация за iMoodle

от Димитър Добрев -

Аз получавам същата грешка. Пречката е, че &bdquo, &ldquo и подобни не са в стандарта за XML. За съжаление не съм намерил решение засега. Четох предложения да се използват цифрови означения - като например L&#160 вместо &nbsp; - което може да се промени в кода на RestKit (за който го ползва), но не ми изглежда правилното решение. Четох също, че UTF-8 стига, но в началото на XML-а ги го има и въпреки това не може да го разчете. Би следвало да има някаква настройка на RestKit или на сървъра може би.

In reply to Димитър Добрев

Re: Информация за iMoodle

от Трифон Трифонов -

Здравейте,

за съжаление това се оказа бъг в Moodle. За щастие има пач, който приложих и така вече услугите би трябвало да връщат валиден XML.

Поздрави,
  Трифон

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Владимир Сяров -

Може ли тъй като имаше известни проблеми в началото с API-то да получим малка отсрочка в крайния срок (да речем 2 дена)?

In reply to Владимир Сяров

Re: Информация за iMoodle

от Димитър Добрев -
In reply to Димитър Добрев

Re: Информация за iMoodle

от Трифон Трифонов -

Съгласен съм, че тази задача се оказа по-проблемна, отколкото предполагах първоначално. Одобрявам идеята проектът iMoodle да бъде предаден с отсрочка от два дена. Надявам се, че ще компенсира донякъде проблемите, с които се наложи да се борите.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Калоян Йорданов -

Къде да качим проектите?

Формата за качване вече е неактивна.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Мартин Пеев -

Може ли да ни дадете идея как да направим:

● (2) търсене на потребител по име във всички курсове, в които съм
записан

освен да извлича id-тата на всички курсове в които съм записан и за всеки курс да прави отделна заявка към сървъра с параметър id-to.

В документа за API-то няма подходяща функция за търсене на потребител в повече от един курс, а горния начин би бил прекалено бавен.

Също искам да попитам каква е разликата между функциите:

  • moodle_enrol_get_enrolled_users   
  • moodle_user_get_users_by_courseid   

Благодаря!

In reply to Мартин Пеев

Re: Информация за iMoodle

от Трифон Трифонов -

Относно първия ти въпрос: няма по-лесен начин предвиден от API-то. Ще трябва да правиш отделни заявки.

Относно втория ти въпрос: погледнах кода, няма особена разлика. Връщат малко по-различни полета. Освен това опциите се предават по малко по-различен начин за двете функции.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Мартин Пеев -

Добре, ще го направим така, но аз, лично, невиждам смисъл, тъй като една заявка за извличане на всички потребители от даден курс ми отнема около 10 секунди на телефона. Ако търсим в 10 курса примерно може да отнеме и повече от 2 минути.

In reply to Мартин Пеев

Re: Информация за iMoodle

от Трифон Трифонов -

Има начини да се подобри това. Единият е търсенето да е инкрементално, т.е. веднага като се намери резултат да се показва, така потребителят ще получи бърз feedback, ако потребителят е намерен. Друга идея е да се свалят всички имена на всички потребители във всички курсове, които си записал на заден фон още при стартиране на приложението и да се пазят локално, така търсенето ще се прави локално.

Но това не са задължителни изисквания, може да го направиш само ако имаш време.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Мартин Пеев -

Благодаря за идеите! Ще ги имам предвид.

Между другото отново имаме Access control exception :). Този път във функцията

moodle_message_send_instantmessages

In reply to Мартин Пеев

Re: Информация за iMoodle

от Трифон Трифонов -

Оправих правата, моля те провери дали вече работи.

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Мартин Пеев -
In reply to Трифон Трифонов

Re: Информация за iMoodle

от Димитър Добрев -

Съобщавам за още една грешка с правата: при опит да видя участниците в курс, който не съм записал, получавам:

<EXCEPTION class="required_capability_exception"><MESSAGE>Sorry, but you do not currently have permissions to do that (Виждане на участниците)</MESSAGE></EXCEPTION>

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

In reply to Димитър Добрев

Re: Информация за iMoodle

от Трифон Трифонов -

Здравей,

Наистина, потребителят трябва да може да вижда само участниците от курсовете записани от него. Съжалявам за непълното условие.

Поздрави,
  Трифон

In reply to Трифон Трифонов

Re: Информация за iMoodle

от Владимир Сяров -

Функцията moodle_user_get_users_by_courseid почна да връща :

<?xml version="1.0" encoding="UTF-8" ?>
<EXCEPTION class="coding_exception">
<MESSAGE>Coding error detected, it must be fixed by a programmer: PHP catchable fatal error</MESSAGE>
</EXCEPTION>
In reply to Трифон Трифонов

Re: Информация за iMoodle

от Калоян Йорданов -

Здравейте,

Има проблем със сървъра на Астеа. При въвеждане на паролата автоматично ме логва като дев2 и не мога да сменя.
Също така не приема и вход от клавиатурата, а само от мишката.

In reply to Калоян Йорданов

Re: Информация за iMoodle

от Трифон Трифонов -

И при мен се получава същото. Предполагам, че някой се е логнал като dev2 и връзката е приключила неочаквано, и VNC сървърът не е успял да се усети. Аз влязох като dev2 и след това избрах "log out". Сега отново ми показва login екрана. Пробвайте пак, дано да сработи!