PHP Classes

File: gPlugins/gPlugin.fdate.inc.php

Recommend this page to a friend!
  Classes of unknown man   Gedar Template Engine   gPlugins/gPlugin.fdate.inc.php   Download  
File: gPlugins/gPlugin.fdate.inc.php
Role: Auxiliary script
Content type: text/plain
Description: Document
Class: Gedar Template Engine
Compiling template engine with plug-in support
Author: By
Last change:
Date: 18 years ago
Size: 2,330 bytes
 

Contents

Class file image Download
<?php
 
/**
   * Gedar Template Engine plugin
   * @package Gedar
   * @subpackage plugins
   */

  /**
   * Gedar {fdate} function
   *
   * Type: function
   * Name: persian Date
   * Purpose: change date format from georgen to jalali
   * Syntax {fdate(date="yyyy-mm-dd" , separator="sep")}
   * Special Thanks: from farsi project and masoud alinaqian
   *
   * @param array $params
   * @param object $gedar
   * @return date in jalali format
   */
function gedar_fdate_excute($params,&$gedar)
{
 
$date=$gedar->_getParamValue($params,"date");
 
$separator=$gedar->_getParamValue($params,"separator")?
   
$gedar->_getParamValue($params,"separator"):
   
" / ";
 
$return=$gedar->_makeVariable("<?php echo gedar_fdate_do($date,$separator); ?>");
  return
$return;
}

function
_g_div($a, $b)
{
  return (int) (
$a / $b);
}


function
gedar_fdate_do($gregorianDate,$separator)
{
  if (
is_array($gregorianDate))
    {
      list(
$g_y,$g_m,$g_d)=$gregorianDate;
    }
  else
    {
      @list(
$g_y,$g_m,$g_d)=split('\s|\/|\-',$gregorianDate);
    }
 
 
 
$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);
 
 
$gy = $g_y-1600;
 
$gm = $g_m-1;
 
$gd = $g_d-1;
 

 
$g_day_no = 365*$gy+_g_div($gy+3,4)-_g_div($gy+99,100)+_g_div($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 = _g_div($j_day_no, 12053);
 
$j_day_no %= 12053;
 
 
$jy = 979+33*$j_np+4*_g_div($j_day_no,1461);
 
 
$j_day_no %= 1461;
 
  if (
$j_day_no >= 366)
    {
     
$jy += _g_div($j_day_no-1, 365);
     
$j_day_no = ($j_day_no-1)%365;
    }
 
  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;
 
  if (
$jm<10)
    {
     
$jm='0'.$jm;
    }
 
  if (
$jd<10)
    {
     
$jd='0'.$jd;
    }
 
  return
"$jy".$separator."$jm".$separator."$jd";
 
}
?>