Uživatel:Josmart/Rogo backup
Z WikiSkript
Zde je záloha poznámek k Rogo, která se ještě může hodit
Prvotní naplnění databáze CSV importem[upravit | editovat zdroj]
- CSV musí být v UTF-8 (bez BOM)
- delimiter je ","
- čárky musí být nahrazeny
,
- je-li identický soubor naimportován podruhé, nic se nestane
Import předmětů[upravit | editovat zdroj]
CSV soubor rozdělíme raději na dvě části a importujeme každý zvlášť. Struktura souboru je následující:
- Module ID - id předmětu
- Name - název předmětu + jeho kód v závorce
- School = "1. LF UK"
- SMS = ""
- VLE = ""
- Peer Review = "yes"
- External = "yes"
- Std Set = "no"
- Mapping = "no"
- Active = "yes"
- Self Enrol = "no"
- Neg Marking = "yes"
Pozn.: je-li v souboru změna v názvu předmětu, při druhém nahrání se nic nestane, jméno přejmenovaného předmětu se nezmění !!!
Import studentů a enrolment[upravit | editovat zdroj]
- budeme importovat CSV soubor obsahující informace o uživatelích i o přiřazených přemětech.
- ruční export ze SIS, který obsahuje kompletní informace o studentech a přiřazených předmětech, převedeme do UTF-8
- upravíme jej dle zadání, odstraníme duplicity
- soubor rozdělíme na části po 1000 řádcích + hlavička
- soubory naimportujeme do Roga a zkontrolujeme, zda se naimportovaly všechny záznamy
users_enrolments.csv[upravit | editovat zdroj]
- Type = "Student"
- ID = ID studenta
- First Names
- Family Name
- Title = ""
- Course = "LF1-studenti"
- Year of Study = 0
- Modules = kód předmětu
- Session = aktuální semestr ve tvaru "2012/13"
- Username
Původní (nepoužitá) metoda synchronizace[upravit | editovat zdroj]
Import předmětů[upravit | editovat zdroj]
Vytvořil jsem script admin/modules_from_SMS.php, který je možné spouštět CRONem. Script volá službu (zatím neexistuje), která vrací XML v tomto formátu
<?xml version="1.0" encoding="utf-8"?> <Modules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Module> <ModuleCode>BB55555</ModuleCode> <ModuleTitle>Test module 1</ModuleTitle> <School>1. LF UK</School> <Active>1</Active> </Module> <Module> <ModuleCode>BB55556</ModuleCode> <ModuleTitle>Test module 2</ModuleTitle> <School>1. LF UK</School> <Active>1</Active> </Module> <Module> <ModuleCode>BB55557</ModuleCode> <ModuleTitle>Test module 3</ModuleTitle> <School>1. LF UK</School> <Active></Active> </Module> <Module> <ModuleCode>BB55558</ModuleCode> <ModuleTitle>Test module 4</ModuleTitle> <School>1. LF UK</School> </Module> </Modules>
- School bude vždy "1. LF UK"
- Active bude zřejmě vždy = "1". Pokud element Active chybí, je to jako by byl = "1"
- ModuleCode = kód předmětu v SIS (sloupec POVINN)
- ModuleTitle - bude použita česká verze názvu. Během importu k názvu ještě připojíme kód předmětu v závorce. Pokud ovšem půjde o předmět pro anglickou paralelku (kód začíná na B8), použije se název anglický.
- do DB pole sms vložíme URL, která vrací XML s informacemi o studentech zapsaných do předmětu, viz https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration
Import studentů, zápis do předmětů[upravit | editovat zdroj]
Toto řeší script admin/users_from_SMS.php. Není k tomu jakákoliv dokumentace, musím metodou pokus a omyl zjistit, jak to vlastně funguje. Tady jsou výsledky výzkumů:
- script se spouští prostřednictvím CRON
- v tabulce modules musí být ve sloupci sms zadána url stránky, která vrací XML exportu ze SIS ve formátu podle https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration.
- XML obsahuje definici modulu (předmětu), kam mají být studenti zapsáni a data studentů.
- Pokud je student v Rogo nalezen, je přiřazen do modulu. Pokud není v Rogo, je nejprve vytvořen nový účet.
- Pokud má modul v Rogo přiřazeného uživatele (může jít i o uživatele s ukončeným studiem), který se v exportu nenachází, je zrušeno přiřazení studenta k předmětu.
- XML - upřesnění některých položek
- <Campus> - script s tímto elementem nepracuje, vynechávám
- <Year> - script s tímto elementem nepracuje, vynechávám
- <ModuleTitle> - script s tímto elementem nepracuje, vynechávám
- <StudentID> - ID studenta v SIS
- <Title> - tituly neřešíme, element vynechávám
- <Username> - username v CAS
- <Faculty> - script s tímto elementem nepracuje, vynechávám
- <CourseCode> - studijní obor. Tuto informaci export nenabízí, Rogo ji nepotřebuje. Nastavíme default Course = "LF1-studenti".
- <CourseTitle> - Course "LF1-studenti" jsem definoval v administraci Rogo včetně názvu. Není nutné jej zde zadávat znovu, element vynechávám.
- <Gender> - pohlaví neřešíme, element vynechávám
- <ReasonForLeaving> - přípustné hodnoty:
- Successfully completed course = graduate
- Not Applicable = Student (v návodu používají N/A, s tím to ale nefunguje, musí být Not Applicable)
- W/D (other) = left
- W/D (financial reasons) = left
Chování scriptu při opětovném spuštění[upravit | editovat zdroj]
- script aktualizuje pouze detail uživatele a jeho přiřazení k předmětu
- nedošlo-li v XML ke změnám, nic se neděje
- došlo-li ke změně v některé z následujících informací o uživateli, budou tyto aktualizovány
- <StudentID>
- <Forename>
- <Surname>
- <YearofStudy>
- <CourseCode> - tento údaj se zapisuje to pole grade v tabulce users.
- <ReasonForLeaving> - podle tohoto údaje se určuje pole roles v tabulce users. Pokud student ukončí studium, zůstane přiřazen k předmětům, jen se změní jeho role.
- dojde-li ke změně <Username>, vytvoří se nový uživatel s identickými údaji (včetně stejného StudentID) !!!
- dojde-li v XML ke změně emailu, smůla. Email se neaktualizuje.
XML export[upravit | editovat zdroj]
- XML export ze SIS by měl vypadat podle https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration.
- měl by to být script, který se volá s parametrem ?action=enrolments&code=kod_premetu&year=aktualni_rok
- script bude vracet XML
- pokud by se během generování XML modulu vyskytl nějaký problém, je možné přidat do kódu následující elementy. Modul pak bude vynechán ze zpracování.
- <ErrorMessage>
- <ModuleError>
- pokud student obsažený v definici modulu ukončí studium, měl by zde minimálně jednou (lépe však několik dalších volání) vidět s uvedeným <ReasonForLeaving>. Tím zajistíme změnu role studenta a jeho odebrání z předmětu.