Entry 30118

test

   

Submitted by anonymous on Jan. 25, 2012 at 5:58 p.m.
Language: PHP. Code size: 4.0 KB.

<?php
class myGlobal
{
	public static function unformatCurrency($value, $forceCastToFloat = true)
	{
		if (is_array($value))
		{
			$retvals = array();
			foreach ($value as $key=>$v)
			{
				$retval=str_replace('.', '', $v);
				$retval=str_replace(',', '.', $retval);
				$retvals[$key] = (float)$retval;
			}
			return $retvals;
		}
		$retval=str_replace('.', '', $value);
		$retval=str_replace(',', '.', $retval);
		return $forceCastToFloat ? (float)$retval : $retval;
	}
			
	public static function  format_currency($amount, $currency = null, $culture = null)
	{
  	if (is_null($amount))
  	{
    	return null;
  	}

  	$numberFormat = new sfNumberFormat(myGlobal::_current_language($culture));

  	return $numberFormat->format($amount, 'c', $currency);
	}
	
	public static function _current_language($culture)
	{
  		return $culture ? $culture : sfContext::getInstance()->getUser()->getCulture();
	}
	
	public static function stripText($text, $separator = '_')
	{
		// convert special characters
		$text = utf8_decode($text);
		$text = htmlentities($text);
		$text = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde);/', '$1', $text);
		$text = html_entity_decode($text);
		
		$text = strtolower($text);

		// strip all non word chars
		$text = preg_replace('/\W/', ' ', $text);

		// replace all white space sections with a separator
		$text = preg_replace('/\ +/', $separator, $text);

		// trim separators
		$text = trim($text, $separator);
		//$text = preg_replace('/\-$/', '', $text);
		//$text = preg_replace('/^\-/', '', $text);
				
		return $text;
	}
	
	public static function bulatkan100($value)
	{
		$value = $value / 100;
		$value= round($value);
		$value = $value * 100;
		return $value;
	}
	
	/*fungsi buat ngebandingin dua nilai double
	 * notes: jangan ngebandingin nilai double pake == or >=... ????
	 * (taken from code project)
	 * */
	public static function AlmostEqualDoubles2($nVal1, $nVal2, $nEpsilon)
	{
		$bRet = ((($nVal2 - $nEpsilon) < $nVal1) && ($nVal1 < ($nVal2 + $nEpsilon)));
		return $bRet;
	}

	//TODO: Pindah ke model kontrak
	public static function getProgressAndJumlahBayarTerminKe($kontrak, $termin_ke = 0) 
	{
		$i = 1;
		$tmp_fisik = 0.0;
		$progress_termin = 0.0;
		$progress_termins = array();
		$pembayaran_kontrak = $kontrak->getPembayaranKontrak();
		$fisiks = $pembayaran_kontrak->getPersentaseFisikAsArray();
		$harus_bayars = $pembayaran_kontrak->getStringTotalNominalAsArray();
		$konfirmasi_bayars = $kontrak->getKonfirmasiBayars();
		$termin_yg_sudah_dibayars = array();
		foreach ($konfirmasi_bayars as $v) { $termin_yg_sudah_dibayars[] = $v->getTerminKe(); }
		
		//buat kumulatif pembayaran aturan pembayaran
		$kumulatifs = array();
		foreach ($fisiks as $v) 
		{
			$tmp_fisik += $v;
      if ($tmp_fisik > 100) $tmp_fisik = 100;
			$kumulatifs[] = $tmp_fisik;
		}
		
		foreach ($kontrak->getKontrakProgressMingguans() as $v)
		{
			$progress_termin += $v->getBobot();
      if (!isset($kumulatifs[0])) break;
			if (self::AlmostEqualDoubles2($progress_termin, $kumulatifs[0], 0.001) || $progress_termin > $kumulatifs[0]) {
        if ($progress_termin > 100 || $progress_termin > 99.999) $progress_termin = 100;
				$jj = 0;
				while (true) {
					array_shift($kumulatifs);
					$progress_termins[] = array('termin_ke'=>$i,'progress'=>$progress_termin,'jumlah'=>$harus_bayars[$i-1],'status'=>in_array($i, $termin_yg_sudah_dibayars));
	        if ($termin_ke > 0 && $i == $termin_ke) return $progress_termins[$i-1];
	        if ($i++ >= $pembayaran_kontrak->getJumlahTermin()) break;
	        if (!isset($kumulatifs[$jj])) break;
	      	if ($progress_termin < $kumulatifs[$jj]) break;
					$jj++;
				}
			}
		}
		return $progress_termins;
	}
	
	public static function myFloor($v)
  {
    return floor((string)$v);
  }
	
	public static function myCeil($v)
  {
    return ceil((string)$v);
  }

  /*public static function formatUrlFromParameters($uri, $prms)
  {
    $url = url_for($uri);
    if (count($prms) > 0)
    {
      $url = $url."?".http_build_query($prms, '', '&');
    }
    return $url;
  }*/
}
?>

This snippet took 0.02 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).