הארכת השאלות

מתוך אגרון - וויקיפדיה
גרסה מ־14:25, 18 בפברואר 2011 מאת Oc666 (שיחה | תרומות) (האלגוריתם)
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)
קפיצה אל: ניווט, חיפוש

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

האלגוריתם

שגיאה ביצירת תמונה ממוזערת: קובץ חסר
אלגוריתם של הארכת השאלות באגרונט.

1. בדיקה אם תאריך החזרה עבר.

  • במידה ולא - אל תבצע כלום. צא מהאלגוריתם.
  • במידה וכן - המשך.

2. בדיקה אם אין הזמנה על הספר.

  • במידה ולא - אל תבצע כלום. צא מהאלגוריתם.
  • במידה וכן - המשך.

3. בדיקה אם ביצוע הארכה לא חורג ממספר הימים המקסימלי להארכה*.

1. במידה וכן (ישנה חריגה מעבר למספר הימים המקסימלי להארכה), בצע בדיקה אם ניתן לבצע הארכה ליום האחרון המקסימלי.
  • במידה וכן, בצע את ההארכה ליום המקסימלי.
  • במידה ולא - אל תבצע כלום. צא מהאלגוריתם.
2. במידה ולא, בצע בדיקה אם הוספת מספר הימים המורשה בכל הארכה עובר את תאריך ההחזרה** (במילים פשוטות, בדוק אם ההארכה לא מקצרת את זמן ההשאלה).
  • במידה וכן, בצע את ההארכה לכמות הימים המותרת.
  • במידה ולא - אל תבצע כלום. צא מהאלגוריתם.
שימו לב: *מספר הימים המקסימלי מחושב ע"י הנוסחה: יום ההשאלה המקורי+ימי ההשאלה המקוריים+מספר הפעמים שמותר להאריך*מספר הימים לכל ההארכה. מספר הימים לכל ההארכה יכול להיות יחסי לימי ההשאלה המקוריים או אבסולוטי.
שימו לב: ** מצב זה יכול להיווצר כאשר ההארכה הינה יחסית וימי ההשאלה המקוריים ארוכים יותר ממספר הימים המותרים להארכה בכל פעם. זכרו: ההארכה מבוצעת יחסית ליום הנוכחי. משמע שהימים יתווספו ליום הנוכחי בלבד ולא לשום תאריך אחר.

הארגומנטים

ישנם מספר ארגומנטים שמוזנים בניהול לשלוט על האלגוריתם:

  1. loan_length_type - סוג ההארכת השאלה. הערכים האפשריים הינם: absolute (אבסולוטי) או relative (יחסי).
  2. loan_length_time (מכונה x בתמונה)- מספר הימים שמותר להאריך בכל ההארכה. אם יחסי, החישוב מבוצע מול מספר הימים המותר להשאלה של העותק המושאל (מוזן בטבלת עותקים).
  3. loan_length_count (מכונה y בתמונה) - מספר הפעמים שמותר להאריך השאלה (בנוסף לימי ההשאלה המקוריים).
שימו לב: כמות הפעמים שמותר להאריך אינה מוגבלת, אלא מספר הימים שעברו סה"כ. משמע, שקורא יכול להאריך כל יום, המערכת תעצור אותו רק כאשר הוא יגיע למספר הימים המקסימלי שמותר להארכה (חישוב לעיל). במידה והספר מוזמן או שהקורא מאחר בהחזרת הספר, המערכת אינה מאפשרת ביצוע הארכת השאלה.

דוגמאות

דוגמא 1

  • loan_length_type: יחסי.
  • loan_length_time: 0.5
  • loan_length_count: 2
  • ימי ההשאלה מקוריים: 30.

בדוגמא זו ניתן להאריך בכל פעם 15 ימים נוספים (חצי כפול 30). משמע שההארכה האפשרית הינה ל-30 ימים נוספים בנוסף לימי ההשאלה המקוריים (30). סה"כ הזמן המקסימלי שהקורא יכול להחזיק את הספר: 60 ימים. הקורא יוכל להתחיל להאריך השאלה רק ביום ה-16 כי רק אז ההארכה תתבצע (ההארכה מבוצעת יחסית ליום הנוכחי).

דוגמא 2

  • loan_length_type: יחסי.
  • loan_length_time: 1
  • loan_length_count: 3
  • ימי ההשאלה מקוריים: 21.

בדוגמא זו ניתן להאריך בכל פעם 21 ימים נוספים (אחד כפול 21). משמע שההארכה האפשרית הינה ל-63 ימים נוספים בנוסף לימי ההשאלה המקוריים (21). סה"כ הזמן המקסימלי שהקורא יכול להחזיק את הספר: 84 ימים. הקורא יוכל להתחיל להאריך השאלה רק ביום ה-2 כי רק אז ההארכה תתבצע (ההארכה מבוצעת יחסית ליום הנוכחי).

דוגמא 3

  • loan_length_type: אבסולוטי.
  • loan_length_time: 7
  • loan_length_count: 5
  • ימי ההשאלה מקוריים: 60.

בדוגמא זו ניתן להאריך בכל פעם 7 ימים נוספים. משמע שההארכה האפשרית הינה ל-35 ימים נוספים בנוסף לימי ההשאלה המקוריים (60). סה"כ הזמן המקסימלי שהקורא יכול להחזיק את הספר: 95 ימים. הקורא יוכל להתחיל להאריך השאלה רק ביום ה-54 כי רק אז ההארכה תתבצע (ההארכה מבוצעת יחסית ליום הנוכחי).