Version 0.9 ()
------------------------------------------------------------------------
+ * New configuration item: Gregorian or Jalali Calendar output.
+ Patch by Omid Mottaghi
+
* New personal configuration item: "Forbid creating entries" to
allow authors to be logged in, but not create any entries. Meant
to be used in conjunction with serendipity_plugin_adduser for
}
function serendipity_strftime($format, $timestamp = null, $useOffset = true) {
- if ($timestamp == null) {
- $timestamp = serendipity_serverOffsetHour();
- } elseif ($useOffset) {
- $timestamp = serendipity_serverOffsetHour($timestamp);
- }
+ global $serendipity;
+
+ switch($serendipity['calendar']) {
+ default:
+ case 'gregorian':
+ if ($timestamp == null) {
+ $timestamp = serendipity_serverOffsetHour();
+ } elseif ($useOffset) {
+ $timestamp = serendipity_serverOffsetHour($timestamp);
+ }
+ return strftime($format, $timestamp);
+
+ case 'jalali-utf8':
+ if ($timestamp == null) {
+ $timestamp = serendipity_serverOffsetHour();
+ } elseif ($useOffset) {
+ $timestamp = serendipity_serverOffsetHour($timestamp);
+ }
- return strftime($format, $timestamp);
+ require_once S9Y_INCLUDE_PATH . 'include/functions_calendars.inc.php';
+ return calendar_jalali_utf($format, $timestamp, $useOffset);
+ }
}
function serendipity_formatTime($format, $time, $useOffset = true) {
--- /dev/null
+<?php # $Id: functions.inc.php 114 2005-05-22 15:37:11Z garvinhicking $
+# Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team)
+# All rights reserved. See LICENSE file for licensing details
+
+// Calali UTF Calendar code by Omid Mottaghi
+function calendar_jalali_utf($format, $timestamp, $useOffset) {
+ $g_d=date('j', $timestamp);
+ $g_m=date('n', $timestamp);
+ $g_y=date('Y', $timestamp);
+
+ $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+ $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
+ $j_month_name = array('', 'فروردین', 'اردیبهشت', 'خرداد', 'تیر',
+ 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند');
+ $j_week_name = array('Saturday' => 'شنبه',
+ 'Sunday' => 'یک شنبه',
+ 'Monday' => 'دوشنبه',
+ 'Tuesday' => 'سه شنبه',
+ 'Wednesday' => 'چهارشنبه',
+ 'Thursday' => 'پنج شنبه',
+ 'Friday' => 'جمعه',
+ 'Sat' => 'ش',
+ 'Sun' => 'ی',
+ 'Mon' => 'د',
+ 'Tue' => 'س',
+ 'Wed' => 'چ',
+ 'Thu' => 'پ',
+ 'Fri' => 'ج');
+ $j_week_number = array('Sat' => '1',
+ 'Sun' => '2',
+ 'Mon' => '3',
+ 'Tue' => '4',
+ 'Wed' => '5',
+ 'Thu' => '6',
+ 'Fri' => '7');
+
+ $gy = $g_y-1600;
+ $gm = $g_m-1;
+ $gd = $g_d-1;
+
+ $g_day_no = 365*$gy+floor(($gy+3)/4)-floor(($gy+99)/100)+floor(($gy+399)/400);
+
+ for ($i=0; $i < $gm; ++$i) {
+ $g_day_no += $g_days_in_month[$i];
+ }
+
+ if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0))) {
+ /* leap and after Feb */
+ ++$g_day_no;
+ }
+
+ $g_day_no += $gd;
+ $j_day_no = $g_day_no-79;
+ $j_np = floor($j_day_no/12053);
+ $j_day_no %= 12053;
+ $jy = 979+33*$j_np+4*floor($j_day_no/1461);
+ $j_day_no %= 1461;
+
+ if ($j_day_no >= 366) {
+ $jy += floor(($j_day_no-1)/365);
+ $j_day_no = ($j_day_no-1)%365;
+ }
+ $j_all_days = $j_day_no+1;
+
+ for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i) {
+ $j_day_no -= $j_days_in_month[$i];
+ }
+
+ $jm = $i+1;
+ $jd = $j_day_no+1;
+
+ // calculate string
+ $percent_sign=0;
+ $output_str='';
+
+ for ($i=0; $i<strlen($format); $i++){
+ switch($format[$i]){
+ case 'a':
+ if($percent_sign){ $output_str.=$j_week_name[date('D', $timestamp)]; $percent_sign=0; }
+ break;
+ case 'A':
+ if($percent_sign){ $output_str.=$j_week_name[date('l', $timestamp)]; $percent_sign=0; }
+ break;
+ case 'b':
+ case 'B':
+ case 'h':
+ if($percent_sign){ $output_str.=$j_month_name[$jm]; $percent_sign=0; }
+ break;
+ case 'c': // incomplete
+ if($percent_sign){ /*$output_str.=$format[$i];*/ $percent_sign=0; }
+ break;
+ case 'C':
+ if($percent_sign){ $output_str.=floor($jy/100); $percent_sign=0; }
+ break;
+ case 'd':
+ if($percent_sign){ $output_str.=$jd; $percent_sign=0; }
+ break;
+ case 'D':
+ if($percent_sign){ $output_str.=$jm.'/'.$jd.'/'.$jy; $percent_sign=0; }
+ break;
+ case 'e':
+ if($percent_sign){ $output_str.=sprintf("%2d", $jm); $percent_sign=0; }
+ break;
+ case 'H':
+ if($percent_sign){ $output_str.=date('H', $timestamp); $percent_sign=0; }
+ break;
+ case 'I':
+ if($percent_sign){ $output_str.=date('h', $timestamp); $percent_sign=0; }
+ break;
+ case 'j':
+ if($percent_sign){ $output_str.=sprintf("%03d", $j_all_days); $percent_sign=0; }
+ break;
+ case 'm':
+ if($percent_sign){ $output_str.=$jm; $percent_sign=0; }
+ break;
+ case 'M':
+ if($percent_sign){ $output_str.=date('i', $timestamp); $percent_sign=0; }
+ break;
+ case 'n':
+ if($percent_sign){ $output_str.="\n"; $percent_sign=0; }
+ break;
+ case 'r':
+ case 'p':
+ if($percent_sign){ if(date('a',$need)=='pm') $output_str.='بعد از ظهر'; else $output_str.='قبل از ظهر'; $percent_sign=0; }
+ break;
+ case 'R': // incomplete
+ if($percent_sign){ /*$output_str.=$format[$i];*/ $percent_sign=0; }
+ break;
+ case 'S':
+ if($percent_sign){ $output_str.=date('s', $timestamp); $percent_sign=0; }
+ break;
+ case 't':
+ if($percent_sign){ $output_str.="\t"; $percent_sign=0; }
+ break;
+ case 'u':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'w':
+ if($percent_sign){ $output_str.=$j_week_number[date('D', $timestamp)]; $percent_sign=0; }
+ break;
+ case 'x': // incomplete
+ if($percent_sign){ /*$output_str.=$format[$i];*/ $percent_sign=0; }
+ break;
+ case 'X': // incomplete
+ if($percent_sign){ /*$output_str.=$format[$i];*/ $percent_sign=0; }
+ break;
+ case 'y':
+ if($percent_sign){ $output_str.=$jy-(floor($jy/100)*100); $percent_sign=0; }
+ break;
+ case 'g':
+ case 'G':
+ case 'Y':
+ if($percent_sign){ $output_str.=$jy; $percent_sign=0; }
+ break;
+ case 'z':
+ case 'Z': // incomplete
+ if($percent_sign){ /*$output_str.=$format[$i];*/ $percent_sign=0; }
+ break;
+ case '%':
+ if($percent_sign){ $output_str.='%'; } else { $percent_sign=1; }
+ break;
+ default:
+ $output_str.=$format[$i];
+ $percent_sign=0;
+ }
+ }
+
+ return $output_str;
+}
+?>
\ No newline at end of file
'default' => $serendipity['languages'],
'flags' => array('simpleInstall')),
+ array('var' => 'calendar',
+ 'title' => INSTALL_CAL,
+ 'description' => INSTALL_CAL_DESC,
+ 'type' => 'list',
+ 'default' => $serendipity['calendars']),
+
array('var' => 'lang_content_negotiation',
'title' => AUTOLANG,
'description' => AUTOLANG_DESC,
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
\ No newline at end of file
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
\ No newline at end of file
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
\ No newline at end of file
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
\ No newline at end of file
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
?>
@define('INSTALL_PERMALINK_SEARCHPATH', 'Path to search');
@define('USERCONF_CREATE', 'Forbid creating entries?');
@define('USERCONF_CREATE_DESC', 'If selected, the user may not create new entries');
+@define('INSTALL_CAL', 'Calendar Type');
+@define('INSTALL_CAL_DESC', 'Choose your desired Calendar format');
/* vim: set sts=4 ts=4 expandtab : */
?>
'ja' => 'Japanese',
'ko' => 'Korean');
+/* Available Calendars */
+$serendipity['calendars'] = array('gregorian' => 'Gregorian',
+ 'jalali-utf8' => 'Jalali (utf8)');
+
/*
* Load main language file
*/