currency($amount, 'USD', $spans ? array('before'=>'', 'after'=>'') : array()); if ($spans) return ('$' . '' . $currency . ''); return $currency; } 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, 60*60*24) . ')' : '')); } function datetime($datetime, $age = false) { if (!$datetime) return null; return (self::$time->nice($datetime) . ($age ? ' (' . self::age($datetime) . ')' : '')); } function phone($phone, $ext = null) { if (!isset($phone)) return null; $phone = preg_replace("/\D/", "", $phone); if(strlen($phone) == 7) $phone = preg_replace("/(\d{3})(\d{4})/", "$1-$2", $phone); elseif(strlen($phone) == 10) $phone = preg_replace("/(\d{3})(\d{3})(\d{4})/", "$1-$2-$3", $phone); if ($ext) $phone .= ' x' . $ext; 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, $min_span = 0) { 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; //pr(compact('now', 'seconds', 'backwards', 'timefrom', 'timeto', 'span', 'min_span')); // If now, just return so if ($span === 0) return __('now', true); // Display seconds if under 45 seconds if ($span < 45 && $span >= $min_span) { $approx = round($span); $unit = 'second'; } // Display minutes if under 45 minutes if (!isset($approx)) { $unit = 'minute'; $span /= 60; $min_span /= 60; if ($span < 45 && ($span >= $min_span || $min_span <= 1)) $approx = round($span); } // Display hours if under 18 hours if (!isset($approx)) { $unit = 'hour'; $span /= 60; $min_span /= 60; if ($span < 18 && ($span >= $min_span || $min_span <= 1)) $approx = round($span); } // Display days if under 6.5 days if (!isset($approx)) { $unit = 'day'; $span /= 24; $min_span /= 24; if ($span < 6.5 && ($span >= $min_span || $min_span <= 1)) $approx = round($span); } // Display weeks if less than 8 weeks if (!isset($approx)) { $unit = 'week'; $span /= 7; $min_span /= 7; if ($span < 8 && ($span >= $min_span || $min_span <= 1)) $approx = round($span); } // Display months if less than 20 months if (!isset($approx)) { $unit = 'month'; $span /= 365.2425 / (7*12); $min_span /= 365.2425 / (7*12); if ($span < 20 && ($span >= $min_span || $min_span <= 1)) { $approx = round($span); // 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'; } } // Otherwise, just display years if (!isset($approx)) { $unit = 'year'; $span /= 12; $min_span /= 12; $approx = round($span); } //pr(compact('span', 'min_span', 'approx', 'unit')); if ($approx == 0) { if ($unit == 'day') return __('today', true); return __('this ' . $unit, true); } 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('
| ' . "y:$y; M:$w; d:$d; h:$h; m:$m; s:$s" . ' | ' */ /* . '' . FormatHelper::datetime($age) . ' | ' */ /* . '' . FormatHelper::age($age) . ' | ' */ /* . '' . $seconds . '; days='.($seconds/60/60/24).' | ' */ /* .'