. */ class Tools { const S_IFMT = 170000; const S_IFGITLINK = 160000; const S_IFLNK = 120000; const S_IFREG = 100000; const S_IFDIR = 40000; const S_IFINVALID = 30000; const S_IXUSR = 100; public static function get_filetype($mode, $exec = false) { if(!preg_match('/^[0-7]+$/', $mode)) return $mode; if(($mode & self::S_IFMT) == S_IFGITLINK) return 'submodule'; else if(($mode & self::S_IFMT) == S_IFDIR) return 'directory'; else if(($mode & self::S_IFMT) == S_IFLNK) return 'symlink'; else if(($mode & self::S_IFMT) == S_IFREG) { if($exec && ($mode & self::S_IXUSR)) return 'executable'; return 'file'; } else return 'unknown'; } public static function age_calculate($last_change) { $result = array(); $now = time(); $age = ($last_change > 0 ? ($now - $last_change) : 0); if ($age > 60*60*24*365*2) { $age_str = floor($age/60/60/24/365); $age_str .= " years ago"; $max_cache = (60*60*24*365) - ($age % (60*60*24*365)); } else if ($age > 60*60*24*(365/12)*2) { $age_str = floor($age/60/60/24/(365/12)); $age_str .= " months ago"; $max_cache = min((60*60*24*(365/12)) - ($age % (60*60*24*(365/12))), (60*60*24*365*2) - $age); } else if ($age > 60*60*24*7*2) { $age_str = floor($age/60/60/24/7); $age_str .= " weeks ago"; $max_cache = min((60*60*24*7) - ($age % (60*60*24*7)), (60*60*24*(365/12)*2) - $age); } else if ($age > 60*60*24*2) { $age_str = floor($age/60/60/24); $age_str .= " days ago"; $max_cache = min((60*60*24) - ($age % (60*60*24)), (60*60*24*7*2) - $age); } else if ($age > 60*60*2) { $age_str = floor($age/60/60); $age_str .= " hours ago"; $max_cache = min((60*60) - ($age % (60*60)), (60*60*24*2) - $age); } else if ($age > 60*2) { $age_str = floor($age/60); $age_str .= " min ago"; $max_cache = min(60 - ($age % 60), (60*60*2) - $age); } else if ($age > 2) { $age_str = $age; $age_str .= " sec ago"; $max_cache = 1; } else if ($age >= 0) { $age_str = "right now"; $max_cache = 1; } else { $max_cache = -1; } if($age == 0) { $age_class = "noage"; } else if ($age < 60*60*2) { $age_class = "age0"; } else if ($age < 60*60*24*2) { $age_class = "age1"; } else { $age_class = "age2"; } return array("age_str" => $age_str, "age_class" => $age_class, "max_cache" => $max_cache); } public static function chop_text($text, $len, $add_len) { if(strlen($text) <= $len + $add_len) return $text; $ctext = substr($text, 0, $len); for($i = 0; $i < $add_len; $i++) { if($text[$len+$i] == ' ') break; $ctext .= $text[$len+$i]; } $ctext .= "..."; return $ctext; } public static function parseTimeZone($timezone) { if(!preg_match("/^([+-])([0-9]{2})([0-9]{2})$/i", $timezone, $treffer)) return 0; $offset = ($treffer[1] == '-' ? -1 : 1) * (($treffer[2] * 3600) + ($treffer[3] * 60)); return $offset; } } ?>