currency($amount) : null); } function date($date, $age = false) { if (!$date) return null; $date_fmt = 'm/d/Y'; return (self::$time->format($date_fmt, $date) . ($age ? ' (' . self::age($date) . ')' : '')); } function datetime($datetime) { if (!$datetime) return null; return self::$time->nice($datetime); } function phone($phone) { if (!isset($phone)) return null; $phone = preg_replace("/\D/", "", $phone); if(strlen($phone) == 7) return preg_replace("/(\d{3})(\d{4})/", "$1-$2", $phone); elseif(strlen($phone) == 10) return preg_replace("/(\d{3})(\d{3})(\d{4})/", "$1-$2-$3", $phone); else return $phone; } function comment($comment) { if (isset($comment) && is_array($comment)) { foreach (array_keys($comment) AS $k) { if (!$comment[$k]) unset($comment[$k]); } return implode('; ', $comment); } return $comment; } function age($datetime) { if (!isset($datetime)) return null; $now = time(); $seconds = self::$time->fromString($datetime); $backwards = ($seconds > $now); $timefrom = $backwards ? $now : $seconds; $timeto = $backwards ? $seconds : $now; $span = $timeto - $timefrom; // Display seconds if under 45 seconds if ($span === 0) { return __('now', true); } if ($span < 45) { $approx = round($span); $unit = 'second'; } // Display minutes if under 45 minutes elseif (($span /= 60) < 45) { $approx = round($span); $unit = 'minute'; } // Display hours if under 18 hours elseif (($span /= 60) < 18) { $approx = round($span); $unit = 'hour'; } // Display days if under 6.5 days elseif (($span /= 24) < 6.5) { $approx = round($span); $unit = 'day'; } // Display weeks if less than 8 weeks elseif (($span /= 7) < 8) { $approx = round($span); $unit = 'week'; } // Display months if less than 20 months elseif (($span /= (365.2425 / (7 * 12))) < 20) { $approx = round($span); $unit = 'month'; // Months are from 28-31 days. If it's too // close to being an exact month, just fudge // by saying the result is 'about' N months // instead of 'almost' or 'over' N months, // since we can't be accurate on this without // taking into account the day of the week. if ((abs($span - $approx) * (365.2425 / 12)) < 3) $relative = 'about'; } else { $span /= 12; $approx = round($span); $unit = 'year'; } return (__(isset($relative) ? $relative : ($approx == $span ? '' : ($approx > $span ? 'almost' : 'over')), true) . ' ' . self::_n($approx, $unit) . ($backwards ? '' : __(' ago', true))); } /***************************** ** Test code **/ /* function basevals($max) { */ /* return incrvals($max); */ /* if ($max % 2) { */ /* return array(0, 1, ($max+1)/2-1, $max/2, ($max+1)/2, $max-1); */ /* } */ /* else { */ /* return array(0, 1, $max/2-1, $max/2, $max/2+1, $max-1); */ /* } */ /* } */ /* function incrvals($max, $suppress = false) { */ /* if ($suppress) */ /* //return array(0); */ /* return array(0, 4, $max-1); */ /* //return array(0, 1, $max/3, (int)(($max+1)/2)-1, 2*$max/3, 3*$max/4, 4*$max/5, $max-1); */ /* return array(0, 1, 3, $max/2+2, (int)(($max+1)/2)+4, 2*$max/3, 3*$max/4, 4*$max/5, $max-1); */ /* } */ /* echo('' . "\n"); */ /* foreach (incrvals(10) AS $y) { */ /* foreach (incrvals(12, $y) AS $w) { */ /* foreach (incrvals(30, $y||$w) AS $d) { */ /* foreach (incrvals(24, $y||$w||$d) AS $h) { */ /* foreach (incrvals(60, $y||$w||$d||$h) AS $m) { */ /* foreach ($y||$w||$d||$h||$m ? array(0,1,59) : basevals(60) AS $s) { */ /* $seconds = 60*(60*(24*(30*(12*$y +$w) + $d) + $h) + $m) + $s; */ /* //$seconds = 60*(60*(24*(7*(52*$y +$w) + $d) + $h) + $m) + $s; */ /* $age = time() - $seconds; */ /* echo ('' */ /* . ' ' */ /* . ' ' */ /* . ' ' */ /* . ' ' */ /* .'' . "\n"); */ /* } */ /* } */ /* } */ /* } */ /* } */ /* } */ /* echo('
' . "y:$y; M:$w; d:$d; h:$h; m:$m; s:$s" . '' . FormatHelper::datetime($age) . '' . FormatHelper::age($age) . '' . $seconds . '; days='.($seconds/60/60/24).'
' . "\n"); */ }