לא כל מודול בדרופל צריך קובץ התקנה, קובץ התקנה נדרש בדרך כלל כאשר המודול שלנו יותר מורכב ויש צורך בהוספה של טבלה אחת או יותר למסד הנתונים. כאשר אנו נדרשים לייצר טבלה במסד הנתונים, אנו צריכים לגרום לה להיווצר כאשר המודול מותקן בפעם הראשונה. אנו גם צריכים לגרום לה להמחק כאשר המודול מוסר ונעשה לו הליך uninstall.
בנוסף, אם אנו מעדכנים את המודול שלנו לגרסה חדשה ויש צורך להוסיף/להוריד מהטבלה שלנו – אפשר לעשות זאת עם קובץ ההתקנה. במאמר הזה אני אסביר איך לעשות כן – זה קל ופשוט!
יצירת קובץ install
קובץ ה-install הוא קובץ PHP פשוט שהסיומת שלו היא פשוט install. כך למשל קובץ ה-install של my_module יהיה my_module.install בתוכו אנו מרכזים את כל פונקציות ההתקנה שלנו.
יצירת schema
על מנת ליצור את מסד הנתונים, אנו צריכים להגדיר אותו באמצעות hook_schema ב-hook הזה אנו פשוט מחזירים את מבנה הטבלה שאנו רוצים להחזיר. כך למשל, אם אני רוצה ליצור טבלה ששמה הוא my_table ויש לה אך ורק טור אחד בשם 'name' שהוא varchar 32 וגם ה-primary key, אני עושה זאת כך:
function my_module_schema() {
$schema['my_table'] = array(
'description' => 'The base table for my_table.',
'fields' => array(
'name' => array(
'description' => 'my_table description.',
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array('name'),
);
return $schema;
}
בסך הכל המבנה פשוט מאד, אין כאן יותר מדי התחכמויות – אני יכול כמובן להגדיר עוד ועוד שדות כאוות נפשי ולא להסתפק רק בטבלה אחת.
יצירת hook_install
ב-hook_install אנו מציינים את כל מה שאנו רוצים שיקרה בהתקנת המודול – במקרה שלנו, התקנת ה-scheme שהכנו בעמל רב. אנו יכולים לעשות שם עוד כמה דברים, כמו יצירת סוג תוכן באמצעות ה-CCK או יצירת תוכן של ממש. הכל הולך! אבל בדוגמא נתקין את ה-scheme בלבד:
function my_module_install() {
drupal_install_schema('my_module');
}
השתמשנו בפקודת drupal_install_schema על מנת להתקין את ה-scheme שלנו. אם תתקינו את המודול, תוכלו לראות שנוספה לנו טבלה בשם my_table.
יצירת hook_uninstall
יצירת ה-hook הזו הכרחית כדי לאפשר למי שהתקין את המודול להסיר את הטבלה ללא בעיות מיוחדות.
function my_module_uninstall() {
drupal_uninstall_schema('my_module');
}
חשוב להכניס את ה-hook הזה כדי שימחה כל שריד מהמודול שלנו.
עדכון
כאשר אנו מוציאים עדכון למודול שלנו, אפשר להשתמש ב-hook מיוחד, הכולל את מספר העדכון שלנו, כדי לעשות פעולות שונות. כך למשל, אם בגרסה החדשה (1.1) של המודול שלי אני רוצה להוסיף שדה חדש לטבלה שלי בשם name, כך אעשה את זה:
function my_module_update_11() {
$ret = array();
db_add_field($ret, 'my_table', 'time', array('type' => 'int'));
return $ret;
}
קל מאד ופשוט מאד, רק צריך לזכור שאם יש לי כמה עדכונים, הם ירוצו לפי הסדר של המספרים.
את כל הפקודות שניתן להשתמש בהן בהתקנה, עדכון או הסרה ניתן למצוא ב-scheme API. יש גרסה לדרופל 7 וגרסה לדרופל 6.
אני מאד ממליץ ליצור קבצי התקנה למודול שיש לו טבלה (אחת או יותר) במסד הנתונים, אפילו אם אתם יוצרים מודול מותאם לאתר אחד בלבד, כיוון שאם בעתיד מישהו יצטרך לעדכן אותו/להסיר אותו – זה יהיה קל הרבה יותר. בתור מתכנתים ומפתחים של דרופל מה שחשוב הוא ליצור רכיבים שקל להתקין וגם קל להסיר אותם.