]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - misc/strings.php
Display channel settings, userstatus in the userlist and added quick-action buttons
[irc/unrealircd/unrealircd-webpanel.git] / misc / strings.php
1 <?php
2
3 /** Splits up a string by a space
4 * (chr 32)
5 *
6 * Syntax:
7 * split($string)
8 *
9 * Returns:
10 * array $tokens
11 */
12 function split($str, $delimiter = " ") : Array
13 {
14 return explode($delimiter,$str);
15 }
16
17 /**
18 *
19 * @param mixed $array
20 * @param mixed $delimiter
21 * @return string
22 */
23 function glue($array, $delimiter = " ")
24 {
25 $string = "";
26 foreach($array as $str)
27 {
28 if (!$str)
29 continue;
30 $string .= $str.$delimiter;
31 }
32 return trim($string,$delimiter);
33 }
34
35 /**
36 * Gets the relative path of the filename
37 * @param mixed $filename
38 * @return string
39 */
40 function get_relative_path($filename)
41 {
42 $relativepath = split($filename, "/");
43 foreach($relativepath as &$tok)
44 {
45 $isFinal = ($tok == "html") ? 1 : 0;
46 $tok = NULL;
47 if ($isFinal)
48 break;
49 }
50 $relativepath = glue($relativepath,"/");
51 return $relativepath;
52 }
53
54 /**
55 * Returns a `nick` if the string was in the syntax:
56 * nick!ident@host
57 * @param mixed $str
58 * @return mixed
59 */
60 function show_nick_only($str)
61 {
62 $x = strpos($str, "!");
63 if ($x !== false)
64 $str = substr($str, 0, $x);
65 return $str;
66 }
67
68 /**
69 * Figures out how long ago a given time was
70 * returns string example:
71 * - "32 minutes ago"
72 * - "5 hours ago"
73 * - "12 seconds ago"
74 */
75 function how_long_ago($timestamp)
76 {
77 $now = time();
78 $diff = $now - strtotime($timestamp);
79 $units = array(
80 31536000 => 'year',
81 2592000 => 'month',
82 604800 => 'week',
83 86400 => 'day',
84 3600 => 'hour',
85 60 => 'minute',
86 1 => 'second'
87 );
88
89 foreach ($units as $unit => $text) {
90 if ($diff < $unit) continue;
91 $numberOfUnits = floor($diff / $unit);
92 return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'').' ago';
93 }
94 }
95
96 /**
97 * Uses system time.
98 * Returns:
99 * - evening
100 * - morning
101 * - afternoon
102 */
103 function time_of_day()
104 {
105 $timeofday = "day"; // in case something went wrong? lol
106 $hour = date("H");
107 if ($hour >= 18 || $hour < 4)
108 $timeofday = "evening";
109 else if ($hour >= 4 && $hour < 12)
110 $timeofday = "morning";
111 else if ($hour >= 12 && $hour < 18)
112 $timeofday = "afternoon";
113
114 return $timeofday;
115 }
116
117
118 /**
119 * Concatenate a string to a string
120 */
121 function strcat(&$targ,$string) : void
122 { $targ .= $string; }
123
124
125 /**
126 * Concatenate a string to a string and limits the string to a certain length
127 */
128 function strlcat(&$targ,$string,$size) : void
129 {
130 strcat($targ,$string);
131 $targ = mb_substr($targ,0,$size);
132 }
133
134
135 /**
136 * Prefixes a string to a string
137 */
138 function strprefix(&$targ,$string) : void
139 { $targ = $string.$targ; }
140
141
142 /**
143 * Prefixes a string to a string and limits the string to a certain length
144 */
145 function strlprefix(&$targ,$string,$size) : void
146 {
147 if (sizeof($targ) >= $size)
148 return;
149
150 strprefix($targ,$string);
151 $targ = mb_substr($targ,0,$size);
152 }
153
154 /** Checks if the token provided is a bad pointer, by reference
155 * Returns Bool value true if it IS bad
156 *
157 * Syntax:
158 * BadPtr($variable)
159 *
160 * Returns:
161 * @
162 */
163 function BadPtr(&$tok)
164 {
165 if (!isset($tok) || empty($tok) || !$tok || strlen($tok) == 0)
166 return true;
167 return false;
168 }
169
170 /** This function takes a string, tokenizes
171 * it by a space (chr 32), removes the first
172 * word/token, and returns the result.
173 * Mostly used for string manipulation around
174 * the source.
175 *
176 * Syntax:
177 * rparv(String $sentence)
178 *
179 * Returns:
180 * string|false
181 */
182 function rparv($string)
183 {
184 $parv = split($string);
185 $first = strlen($parv[0]) + 1;
186 $string = substr($string, $first);
187 if ($string)
188 return $string;
189 return false;
190 }