Login   Register  
PHP Classes
elePHPant
Icontem

File: gPlugins/gPlugin.fdate.inc.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2005-10-28 06:38
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(312831303130313130313031);
  
$j_days_in_month=array(313131313131303030303029);
  
  
$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>&& (($gy%4==&& $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_no12053);
  
$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-1365);
      
$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";
  
}
?>