diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index fcf26bf6a30843455779337965cb3f8f7bbb7a94..30095347e1f5acf52b4d1f2f05bee8c0c223a072 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -14,88 +14,89 @@ $lang['doublequoteclosing'] = 'â€'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = 'Ø›'; -$lang['btn_edit'] = 'تØرير هذه الصÙØØ©'; -$lang['btn_source'] = 'عرض مصدر الصÙØØ©'; -$lang['btn_show'] = 'عرض الصÙØØ©'; -$lang['btn_create'] = 'إنشاء هذه الصÙØØ©'; -$lang['btn_search'] = 'بØØ«'; -$lang['btn_save'] = 'ØÙظ'; -$lang['btn_preview'] = 'استعراض'; -$lang['btn_top'] = 'لأعلى'; +$lang['btn_edit'] = 'Øرر هذه الصÙØØ©'; +$lang['btn_source'] = 'اعرض مصدر الصÙØØ©'; +$lang['btn_show'] = 'اعرض الصÙØØ©'; +$lang['btn_create'] = 'أنشئ هذه الصÙØØ©'; +$lang['btn_search'] = 'ابØØ«'; +$lang['btn_save'] = 'اØÙظ'; +$lang['btn_preview'] = 'عاين'; +$lang['btn_top'] = 'ارجع للأعلى'; $lang['btn_newer'] = '<< Ø£Øدث'; $lang['btn_older'] = 'أقدم >>'; $lang['btn_revs'] = 'نسخ قديمة'; -$lang['btn_recent'] = 'Ø£Øدث التعديلات'; -$lang['btn_upload'] = 'تØميل'; -$lang['btn_cancel'] = 'إلغاء'; +$lang['btn_recent'] = 'Ø£Øدث التغييرات'; +$lang['btn_upload'] = 'ارÙع'; +$lang['btn_cancel'] = 'ألغ'; $lang['btn_index'] = 'Ùهرس'; -$lang['btn_secedit'] = 'تØرير'; -$lang['btn_login'] = 'دخول'; -$lang['btn_logout'] = 'خروج'; +$lang['btn_secedit'] = 'Øرر'; +$lang['btn_login'] = 'لج'; +$lang['btn_logout'] = 'اخرج'; $lang['btn_admin'] = 'المدير'; -$lang['btn_update'] = 'تØديث'; -$lang['btn_delete'] = 'ØØ°Ù'; -$lang['btn_back'] = 'رجوع'; +$lang['btn_update'] = 'Øدّث'; +$lang['btn_delete'] = 'اØØ°Ù'; +$lang['btn_back'] = 'ارجع'; $lang['btn_backlink'] = 'ارتباطات'; -$lang['btn_backtomedia'] = 'رجوع إلى اختيار مل٠الوسائط'; -$lang['btn_subscribe'] = 'اشترك ÙÙŠ التعديلات'; -$lang['btn_profile'] = 'تØديث المل٠الشخصي'; -$lang['btn_reset'] = 'تÙريغ'; -$lang['btn_resendpwd'] = 'إرسال كلمة مرور جديدة'; -$lang['btn_draft'] = 'تØرير المسوّدة'; -$lang['btn_recover'] = 'استعادة المسوّدة'; -$lang['btn_draftdel'] = 'Øذ٠المسوّدة'; -$lang['btn_revert'] = 'إعادة'; -$lang['loggedinas'] = 'دخول باسم'; -$lang['user'] = 'اسم المشترك'; -$lang['pass'] = 'كلمة المرور'; -$lang['newpass'] = 'كلمة مرور جديدة'; -$lang['oldpass'] = 'تأكيد كلمة المرور الØالية'; +$lang['btn_backtomedia'] = 'ارجع إلى اختيار مل٠الوسائط'; +$lang['btn_subscribe'] = 'ادر الاشتراكات'; +$lang['btn_profile'] = 'Øدث المل٠الشخصي'; +$lang['btn_reset'] = 'صÙّر'; +$lang['btn_resendpwd'] = 'ارسل كلمة سر جديدة'; +$lang['btn_draft'] = 'Øرر المسودة'; +$lang['btn_recover'] = 'استرجع المسودة'; +$lang['btn_draftdel'] = 'اØذ٠المسوّدة'; +$lang['btn_revert'] = 'استعد +'; +$lang['loggedinas'] = 'داخل باسم'; +$lang['user'] = 'اسم المستخدم'; +$lang['pass'] = 'كلمة السر'; +$lang['newpass'] = 'كلمة سر جديدة'; +$lang['oldpass'] = 'أكد كلمة السر الØالية'; $lang['passchk'] = 'مرة أخرى'; $lang['remember'] = 'تذكرني'; $lang['fullname'] = 'الاسم الكامل'; $lang['email'] = 'البريد الإلكتروني'; -$lang['register'] = 'تسجيل'; +$lang['register'] = 'سجّل'; $lang['profile'] = 'المل٠الشخصي'; -$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة المرور غير صØÙŠØØ©'; +$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة السر غير صØÙŠØØ©'; $lang['minoredit'] = 'تعديلات Ø·ÙÙŠÙØ©'; -$lang['draftdate'] = 'تشغيل ØÙظ المسوّدة آلياً'; +$lang['draftdate'] = 'ØÙظ المسودات تلقائيا مشغل'; $lang['nosecedit'] = 'غÙيرت الصÙØØ© ÙÙŠ هذه الأثناء، معلومات الÙقرة اصبØت قديمة. ØÙÙ…Ùلت كل الصÙØØ© بدلا.'; -$lang['regmissing'] = 'عذرا، يجب ملء جميع الخانات'; -$lang['reguexists'] = 'عذرا، يوجد مشترك بنÙس الاسم'; -$lang['regsuccess'] = 'تم تسجيل المشترك Ùˆ أرسلت كلمة المرور عبر البريد الإلكتروني'; -$lang['regsuccess2'] = 'تم إنشاء المشترك'; -$lang['regmailfail'] = 'Øدث خطأ ÙÙ‰ إرسال رسالة كلمة المرور. يرجى مراسلة المدير'; -$lang['regbadmail'] = 'البريد الإلكتروني المعطى غير صØÙŠØØŒ إن كنت تظن الخطأ من الموقع راسل المدير'; -$lang['regbadpass'] = 'كلمتى المرور غير متطابقتين، Øاول مرة أخرى'; -$lang['regpwmail'] = 'كلمة مرورك إلى دوكي ويكي'; -$lang['reghere'] = 'لست مشتركاً؟ تÙضل اشترك'; +$lang['regmissing'] = 'عذرا، يجب ملء جميع الØقول'; +$lang['reguexists'] = 'عذرا، يوجد مشترك بنÙس الاسم.'; +$lang['regsuccess'] = 'أنشئ المستخدم Ùˆ ارسلت كلمة السر بالبريد.'; +$lang['regsuccess2'] = 'أنشئ المستخدم.'; +$lang['regmailfail'] = 'Øدث خطأ ÙÙ‰ إرسال رسالة كلمة اسرر. يرجى مراسلة المدير'; +$lang['regbadmail'] = 'يبدو البريد الإلكتروني المعطى غير صØÙŠØØŒ إن كنت تظن أن هذا خطأ، راسل المدير'; +$lang['regbadpass'] = 'كلمتى المرور غير متطابقتين، Øاول مرة أخرى.'; +$lang['regpwmail'] = 'كلمة مرورك إلى دوكو ويكي'; +$lang['reghere'] = 'ليس لديك Øساب بعد؟ اØصل على واØد'; $lang['profna'] = 'هذه الويكي لا تدعم تعديل المل٠الشخصي'; -$lang['profnochange'] = 'لا تغييرات، لا شيء مطلوب عمله'; -$lang['profnoempty'] = 'ليس مسموØاً ترك الاسم أو البريد الإلكتروني Ùارغاً'; -$lang['profchanged'] = 'تم تØديث المل٠الشخصي بنجاØ'; -$lang['pwdforget'] = 'نسيت كلمة المرور؟ اØصل على واØدة جديدة'; -$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور'; -$lang['resendpwd'] = 'إرسال كلمة المرور إلى'; -$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ جميع الخانات'; -$lang['resendpwdnouser'] = 'عذراً، لدينا هذا المشترك ÙÙŠ قاعدة بياناتنا'; -$lang['resendpwdbadauth'] = 'عذراً، رمز التÙعيل هذا غير صØÙŠØ. نأكد أنك استخدمت كامل وصلة التأكيد'; -$lang['resendpwdconfirm'] = 'تم إرسال وصلة تأكيد إلى بريدك الإلكتروني'; -$lang['resendpwdsuccess'] = 'كلمة مرورك الجديدة تم إرسالها عبر البريد الإلكتروني'; +$lang['profnochange'] = 'لا تغييرات، لا شيء ليÙعمل.'; +$lang['profnoempty'] = 'غير Ù…Ø³Ù…ÙˆØ Ø¨Ø§Ø³Ù… مستخدم أو بريد Ùارغ.'; +$lang['profchanged'] = 'ØÙدث المل٠الشخصي للمستخدم بنجاØ.'; +$lang['pwdforget'] = 'أنسيت كلمة السر؟ اØصل على واØدة جديدة'; +$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.'; +$lang['resendpwd'] = 'إرسال كلمة مرور'; +$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الØقول.'; +$lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا ÙÙŠ قاعدة بياناتنا.'; +$lang['resendpwdbadauth'] = 'عذراً، رمز التÙعيل هذا غير صØÙŠØ. نأكد من استخدامك كامل وصلة التأكيد.'; +$lang['resendpwdconfirm'] = 'أرسل رابط التأكيد بواسطة البريد.'; +$lang['resendpwdsuccess'] = 'كلمة السرالجديدة إرسلت عبر البريد.'; $lang['license'] = 'مالم يشر لخلا٠ذلك، Ùإن المØتوى على هذه الويكي مرخص ÙˆÙÙ‚ الرخصة التالية:'; $lang['licenseok'] = 'لاØظ: بتØرير هذه الصÙØØ© أنت تواÙÙ‚ على ترخيص Ù…Øتواها تØت الرخصة التالية:'; -$lang['searchmedia'] = 'البØØ« عن اسم المل٠: '; +$lang['searchmedia'] = 'ابØØ« ÙÙŠ اسماء الملÙات:'; $lang['searchmedia_in'] = 'ابØØ« ÙÙŠ %s'; -$lang['txt_upload'] = 'اختر ملÙاً للتØميل'; -$lang['txt_filename'] = 'تØميل باسم - اختياري'; -$lang['txt_overwrt'] = 'الكتابة على مل٠موجود بنÙس الاسم مسموØØ©'; -$lang['lockedby'] = 'Øالياً مقÙول بواسطة'; -$lang['lockexpire'] = 'سينتهي القÙÙ„ ÙÙŠ'; -$lang['willexpire'] = 'سينتهي Ù‚ÙÙ„ تØرير هذه الصÙØÙ‡ خلال دقيقة. لتجنب التعارض استخدم زر استعراض لبدأ القÙÙ„ من جديد'; -$lang['js']['notsavedyet'] = 'التعديلات التي لم تØÙظ ستÙقد. أمواÙÙ‚ ØŸ'; -$lang['js']['searchmedia'] = 'البØØ« عن الملÙات'; +$lang['txt_upload'] = 'اختر ملÙاً للرÙع'; +$lang['txt_filename'] = 'رÙع كـ (اختياري)'; +$lang['txt_overwrt'] = 'اكتب على مل٠موجود'; +$lang['lockedby'] = 'Øالياً مقÙÙ„ بواسطة'; +$lang['lockexpire'] = 'ينتهي القÙÙ„ ÙÙŠ'; +$lang['willexpire'] = 'سينتهي Ù‚ÙÙ„ تØرير هذه الصÙØÙ‡ خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصÙير مؤقت القÙÙ„.'; +$lang['js']['notsavedyet'] = 'التعديلات غير المØÙوظة ستÙقد. اكمل Ùعلا؟'; +$lang['js']['searchmedia'] = 'ابØØ« عن ملÙات'; $lang['js']['keepopen'] = 'أبقي الناÙذة Ù…ÙتوØØ© أثناء الاختيار'; -$lang['js']['hidedetails'] = 'إخÙاء التÙاصيل'; +$lang['js']['hidedetails'] = 'أخ٠التÙاصيل'; $lang['js']['mediatitle'] = 'اعدادات الرابط'; $lang['js']['mediadisplay'] = 'نوع الرابط'; $lang['js']['mediaalign'] = 'المØاذاة'; diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index 2dfed59dc0976c92fd066d0c6e765c177da8482e..4a96e373e80b7a094563304c342a7e3551b659f8 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -247,8 +247,8 @@ $lang['subscr_m_unsubscribe'] = 'Unsubscribe'; $lang['subscr_m_subscribe'] = 'Subscribe'; $lang['subscr_m_receive'] = 'Receive'; $lang['subscr_style_every'] = 'email on every change'; -$lang['subscr_style_digest'] = 'digest email of changes for each page'; -$lang['subscr_style_list'] = 'list of changed pages since last email'; +$lang['subscr_style_digest'] = 'digest email of changes for each page (every %.2f days)'; +$lang['subscr_style_list'] = 'list of changed pages since last email (every %.2f days)'; /* auth.class language support */ diff --git a/inc/subscription.php b/inc/subscription.php index e5938d9bdb6775e19fa77ea7eeb1da0c6473823d..ce5da4cd4a60fd9c8da3ab244766cb769811b5a7 100644 --- a/inc/subscription.php +++ b/inc/subscription.php @@ -9,6 +9,8 @@ * - subscription_set * - get_info_subscribed * - subscription_addresslist + * - subscription_lock + * - subscription_unlock * * @author Adrian Lang <lang@cosmocode.de> * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) @@ -36,6 +38,32 @@ function subscription_filename($id) { return metaFN($meta_froot, $meta_fname); } +/** + * Lock subscription info for an ID + * + * @param string $id The target page or namespace, specified by id; Namespaces + * are identified by appending a colon. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_lock($id) { + $lockf = subscription_filename($id) . '.lock'; + return !file_exists($lockf) && touch($lockf); +} + +/** + * Unlock subscription info for an ID + * + * @param string $id The target page or namespace, specified by id; Namespaces + * are identified by appending a colon. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_unlock($id) { + $lockf = subscription_filename($id) . '.lock'; + return file_exists($lockf) && unlink($lockf); +} + /** * Set subscription information * diff --git a/inc/template.php b/inc/template.php index 3eda2f4af704450c36246ddd6fdda8bcd2198891..c1e3e76abb1859b6b177c1ba27218300fe7612a9 100644 --- a/inc/template.php +++ b/inc/template.php @@ -1347,6 +1347,7 @@ function tpl_subscribe() { global $INFO; global $ID; global $lang; + global $conf; echo p_locale_xhtml('subscr_form'); echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>'; @@ -1387,10 +1388,11 @@ function tpl_subscribe() { $ID => '<code class="page">'.prettyprint_id($ID).'</code>', $ns => '<code class="ns">'.prettyprint_id($ns).'</code>', ); + $stime_days = $conf['subscribe_time']/60/60/24; $styles = array( 'every' => $lang['subscr_style_every'], - 'digest' => $lang['subscr_style_digest'], - 'list' => $lang['subscr_style_list'], + 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), + 'list' => sprintf($lang['subscr_style_list'], $stime_days), ); $form = new Doku_Form(array('id' => 'subscribe__form')); diff --git a/lib/exe/indexer.php b/lib/exe/indexer.php index eb56700058d3882c90d691c9342b61fab1c652e7..7e55915f41e2fb8d21eb65e5ac1acfd1d2ed2334 100644 --- a/lib/exe/indexer.php +++ b/lib/exe/indexer.php @@ -353,6 +353,9 @@ function sendDigest() { $olduser = $_SERVER['REMOTE_USER']; foreach($subscriptions as $id => $users) { + if (!subscription_lock($id)) { + continue; + } foreach($users as $data) { list($user, $style, $lastupdate) = $data; $lastupdate = (int) $lastupdate; @@ -399,6 +402,7 @@ function sendDigest() { // Update notification time. subscription_set($user, $id, $style, time(), true); } + subscription_unlock($id); } // restore current user info