שבט

מוודל – שחזור קורס בלי משתמש בעייתי

בזמן האחרון הפרויקטים שלי הם יותר ב-Moodle (שזו מערכת לניהול תוכן, כתובה ב-PHP והיא קוד פתוח) ולכן הפוסט הזה וכמה מהפוסטים הבאים יהיו יותר ממוקדי מוודל (יותר נוח לי לכתוב מוודל בעברית מאשר Moodle באנגלית, ואני כותבת עם שני ו’ כדי שזה לא ייקרא כמו מוֹדל). אני כמובן לא נוטשת את וורדפרס ולא את שאר הפוסטים החביבים שלי, רק מגוונת קצת 🙂 .

הפוסט של היום הוא כמעט ללא קוד, ומתאר תהליך שאינו תכנותי, ובכל זאת הוא מכיל בעיניי מידע חשוב שארצה לחזור אליו בעתיד, ולכן אני משתפת אותו פה.

לצורך פרויקט מסוים הייתי צריכה לגַבּות קורס בפלטפורמת מוודל אחת ולשחזרו בפלטפורמה אחרת, שתיהן שלנו. באחד השחזורים של קורס שגיביתי עם משתמשים קיבלתי את ההודעה הבאה:

לא ניתן לסיים את תהליך השחזור
כיוון שנמצא משתמש מיוחד: ‘someusername’ המצוי במערכת וגם בקובץ הגיבוי.
(מומלץ לבצע שחזור ללא משתמשים או גיבוי ללא המשתמש המסויים)

רציתי לבצע את ההמלצה שבסוגריים – לגבות ללא המשתמש המסוים – אבל אני לא מכירה אפשרות כזאת. רציתי לחפש מידע ברשת ולשם כך בדקתי במוודל איך מנוסחת ההודעה באנגלית, אבל אז גיליתי שהמחרוזת באנגלית לא מכילה את ההמלצה הזאת כלל, אלא מנוסחת:

Trying to resotre user ‘{$a}’ from backup file will cause conflict

בצר לי פניתי לנדב הארנב מאחר שאני יודעת שהוא מתעסק בתרגומים של מוודל. הוא ברוב טובו הסביר לי דברים לעומק ואף נתן 3 אפשרויות להתמודד עם הבעיה.

הוא התחיל בהסבר על מהות הפער בין התרגום העברי לגרסה האנגלית: מתברר שבגרסאות קודמות של התרגום של מוודל היתה כזו הנחיה, אבל כנראה שהם הסירו אותה וצמצמו את ההנחיה המוצגת. כיוון שצוות התרגום של העברית לא עובר על כל התרגומים של מוודל כל גרסה כדי לעדכן אותם ביחס לעדכונים שהתרחשו בגרסה האנגלית, נוצר הפרש. בכל מקרה, נדב (וגם אני) חושב שהתוספת בעברית חשובה מאוד ושמח שהיא שם (ההודעה באנגלית מאוד מאתגרת למי שרוצה לפתור את הבעיה).

וכאן מוצעים כמה פתרונות:

  • הפתרון פשוט: גולשים לקורס המקורי, נכנסים לעמוד ה”משתתפים” (או ניהול קורס -> משתמשים) מסירים את המשתמש הבעייתי (בדרך כל משתמש שהוא בעל תפקיד “מנהלת מערכת” שגם נרשם כ”מורה” או “תלמיד” באותו קורס) ואז מגבים שוב.
  • אם הקורס המקורי לא זמין (קיבלנו גיבוי ממערכת מוודל אחרת, או אם הפתרון הפשוט לא עובד), יש לפתוח את הקובץ גיבוי עם unzip גם אם הסיומת שלו MBZ ואז להסיר מתוך ה XML של users את הרשומה של המשתמש הבעייתי, לשמור ולכווץ את כל התיקיות שוב ב-ZIP, ואז להעלות את הקובץ החדש למנגנון שיחזור.
    הערה למשתמשי windows: בגרסאות האחרונות של מוודל הקובץ מכווץ פעמיים: כ-tar וכ-gzip (מידע שגיליתי בפורומים). לכן כדאי לפתוח את הקובץ עם 7-ZIP (חינמי), ועל הקובץ הפתוח שוב להריץ את ZIP-7. (winzip לא עושה את העבודה). התוצאה צריכה להיות תיקיות וקבצי XML.
    תיקיות activities, course, files, sections וקבצי XML לרוב
    אחרי שעורכים את הקובץ המבוקש (users.xml), צריך לכווץ בחזרה, וגם זה צריך להיעשות בפעמיים: בפעם הראשונה בוחרים את כל התיקיות והקבצים ומכווצים אותם כ-gzip, ובפעם השניה, את קובץ ה-gzip שנוצר מכווצים כ-tar.
  • אופציה שלישית היא להתחכם בקוד (רק בשרתי פיתוח, לא בפרודקשן!), ולהסיר את הבדיקה באופן זמני (או קבוע) ראו התחכמות של נדב פה. ההתחכמות כוללת ביטול הודעת השגיאה, יצירת שם משתמש חדש המתבסס על שם המשתמש הקיים + קריאה לפונקציה time(), ועדכון ה-id.
  • בגרסאות האחרונות נראה שמוודל התקדמה והבינה שיש לפעמים קונפליקטים עם משתמשים מסוג אדמין, ולכן יצרה אופציה של Allow admin conflict resolution. זה נמצא בניהול המערכת -> קורסים -> גיבויים -> הגדרות ברירות מחדל כלליות של היבוא. יש לשים לב שזה רלוונטי רק כאשר מדובר במשתמש בשם “admin” וגם, כאשר הוא מגיע ממערכת מוודל המקושרת ב mnet למערכת הנוכחית. כאן אפשר לראות את כל הקוד שקשור לאופציה הזאת.

לי זה מאוד עזר, מקווה שיעזור גם למישהו מכם 🙂 .

סמליל מוודל מתוך ויקיפדיה ותמונת המשתמש מ-Pixabay

כתבו תגובה

כתובת הדוא"ל שלכם לא תוצג.