]> git.mxchange.org Git - friendica.git/blob - boot.php
f1f955637e084e4c409fa98838b743c539a0e525
[friendica.git] / boot.php
1 <?php
2
3 set_time_limit(0);
4
5 define('EOL', "<br />\r\n");
6
7 define('REGISTER_CLOSED',  0);
8 define('REGISTER_APPROVE', 1);
9 define('REGISTER_OPEN',    2);
10
11 define ( 'DIRECTION_ANY',  0);
12 define ( 'DIRECTION_IN',   1);
13 define ( 'DIRECTION_OUT',  2);
14 define ( 'DIRECTION_BOTH', 3);
15
16 define ( 'NOTIFY_INTRO',   0x0001 );
17 define ( 'NOTIFY_CONFIRM', 0x0002 );
18 define ( 'NOTIFY_WALL',    0x0004 );
19 define ( 'NOTIFY_COMMENT', 0x0008 );
20 define ( 'NOTIFY_MAIL',    0x0010 );
21
22 define ( 'NAMESPACE_DFRN' , 'http://purl.org/macgirvin/dfrn/1.0' ); 
23
24
25 if(! class_exists('App')) {
26 class App {
27
28         public  $module_loaded = false;
29         public  $config;
30         public  $page;
31         public  $profile;
32         public  $user;
33         public  $cid;
34         public  $contact;
35         public  $content;
36         public  $data;
37         public  $error = false;
38         public  $cmd;
39         public  $argv;
40         public  $argc;
41         public  $module;
42         public  $pager;
43         public  $strings;   
44
45         private $scheme;
46         private $hostname;
47         private $path;
48         private $baseurl;
49         private $db;
50
51         function __construct() {
52
53                 $this->config = array();
54                 $this->page = array();
55                 $this->pager= array();
56
57                 $this->scheme = ((isset($_SERVER['HTTPS']) 
58                                 && ($_SERVER['HTTPS'])) ?  'https' : 'http' );
59                 $this->hostname = str_replace('www.','',
60                                 $_SERVER['SERVER_NAME']);
61                 set_include_path("include/$this->hostname" 
62                                 . PATH_SEPARATOR . 'include' 
63                                 . PATH_SEPARATOR . '.' );
64
65                 if(substr($_SERVER['QUERY_STRING'],0,2) == "q=")
66                         $_SERVER['QUERY_STRING'] = substr($_SERVER['QUERY_STRING'],2);
67                 $this->cmd = trim($_GET['q'],'/');
68
69
70                 $this->argv = explode('/',$this->cmd);
71                 $this->argc = count($this->argv);
72                 if((array_key_exists('0',$this->argv)) && strlen($this->argv[0])) {
73                         $this->module = $this->argv[0];
74                 }
75                 else {
76                         $this->module = 'home';
77                 }
78
79                 if($this->cmd == '.well-known/host-meta')
80                         require_once('include/hostxrd.php');
81
82                 $this->pager['page'] = ((x($_GET,'page')) ? $_GET['page'] : 1);
83                 $this->pager['itemspage'] = 50;
84                 $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage'];
85                 $this->pager['total'] = 0;
86         }
87
88         function get_baseurl($ssl = false) {
89                 if(strlen($this->baseurl))
90                         return $this->baseurl;
91
92                 $this->baseurl = (($ssl) ? 'https' : $this->scheme) . "://" . $this->hostname
93                         . ((isset($this->path) && strlen($this->path)) 
94                         ? '/' . $this->path : '' );
95                 return $this->baseurl;
96         }
97
98         function set_baseurl($url) {
99                 $this->baseurl = $url;
100         }
101
102         function get_hostname() {
103                 return $this->hostname;
104         }
105
106         function set_hostname($h) {
107                 $this->hostname = $h;
108         }
109
110         function set_path($p) {
111                 $this->path = ltrim(trim($p),'/');
112         } 
113
114         function get_path() {
115                 return $this->path;
116         }
117
118         function set_pager_total($n) {
119                 $this->pager['total'] = intval($n);
120         }
121
122         function set_pager_itemspage($n) {
123                 $this->pager['itemspage'] = intval($n);
124                 $this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage'];
125
126         } 
127
128         function init_pagehead() {
129                 if(file_exists("view/head.tpl"))
130                         $s = file_get_contents("view/head.tpl");
131                 $this->page['htmlhead'] = replace_macros($s,array('$baseurl' => $this->get_baseurl()));
132         }
133
134 }}
135
136
137 if(! function_exists('x')) {
138 function x($s,$k = NULL) {
139         if($k != NULL) {
140                 if((is_array($s)) && (array_key_exists($k,$s))) {
141                         if($s[$k])
142                                 return (int) 1;
143                         return (int) 0;
144                 }
145                 return false;
146         }
147         else {          
148                 if(isset($s)) {
149                         if($s) {
150                                 return (int) 1;
151                         }
152                         return (int) 0;
153                 }
154                 return false;
155         }
156 }}
157
158 if(! function_exists('system_unavailable')) {
159 function system_unavailable() {
160         include('system_unavailable.php');
161         killme();
162 }}
163
164 if(! function_exists('replace_macros')) {  
165 function replace_macros($s,$r) {
166
167         $search = array();
168         $replace = array();
169
170         if(is_array($r) && count($r)) {
171                 foreach ($r as $k => $v ) {
172                         $search[] =  $k;
173                         $replace[] = $v;
174                 }
175         }
176         return str_replace($search,$replace,$s);
177 }}
178
179
180 function load_translation_table($lang) {
181         global $a;
182
183 }
184
185
186 function t($s) {
187         global $a;
188
189         if($a->strings[$s])
190                 return $a->strings[$s];
191         return $s;
192 }
193
194 if(! function_exists('fetch_url')) {
195 function fetch_url($url,$binary = false) {
196         $ch = curl_init($url);
197         if(! $ch) return false;
198
199         curl_setopt($ch, CURLOPT_HEADER, 0);
200         curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
201         curl_setopt($ch, CURLOPT_MAXREDIRS,8);
202         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
203         if($binary)
204                 curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
205
206         $s = curl_exec($ch);
207         curl_close($ch);
208         return($s);
209 }}
210
211
212 if(! function_exists('post_url')) {
213 function post_url($url,$params) {
214         $ch = curl_init($url);
215         if(! $ch) return false;
216
217         curl_setopt($ch, CURLOPT_HEADER, 0);
218         curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
219         curl_setopt($ch, CURLOPT_MAXREDIRS,8);
220         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
221         curl_setopt($ch, CURLOPT_POST,1);
222         curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
223
224         $s = curl_exec($ch);
225         curl_close($ch);
226         return($s);
227 }}
228
229
230 if(! function_exists('random_string')) {
231 function random_string() {
232         return(hash('sha256',uniqid(rand(),true)));
233 }}
234
235 if(! function_exists('notags')) {
236 function notags($string) {
237         // protect against :<> with high-bit set
238         return(str_replace(array("<",">","\xBA","\xBC","\xBE"), array('[',']','','',''), $string));
239 }}
240
241 if(! function_exists('escape_tags')) {
242 function escape_tags($string) {
243
244         return(htmlspecialchars($string));
245 }}
246
247 if(! function_exists('login')) {
248 function login($register = false) {
249         $o = "";
250         $register_html = (($register) ? file_get_contents("view/register-link.tpl") : "");
251
252
253         if(x($_SESSION,'authenticated')) {
254                 $o = file_get_contents("view/logout.tpl");
255         }
256         else {
257                 $o = file_get_contents("view/login.tpl");
258
259                 $o = replace_macros($o,array('$register_html' => $register_html ));
260         }
261         return $o;
262 }}
263
264
265 if(! function_exists('autoname')) {
266 function autoname($len) {
267
268         $vowels = array('a','a','ai','au','e','e','e','ee','ea','i','ie','o','ou','u'); 
269         if(mt_rand(0,5) == 4)
270                 $vowels[] = 'y';
271
272         $cons = array(
273                         'b','bl','br',
274                         'c','ch','cl','cr',
275                         'd','dr',
276                         'f','fl','fr',
277                         'g','gh','gl','gr',
278                         'h',
279                         'j',
280                         'k','kh','kl','kr',
281                         'l',
282                         'm',
283                         'n',
284                         'p','ph','pl','pr',
285                         'qu',
286                         'r','rh',
287                         's','sc','sh','sm','sp','st',
288                         't','th','tr',
289                         'v',
290                         'w','wh',
291                         'x',
292                         'z','zh'
293                         );
294
295         $midcons = array('ck','ct','gn','ld','lf','lm','lt','mb','mm', 'mn','mp',
296                                 'nd','ng','nk','nt','rn','rp','rt');
297
298         $noend = array('bl', 'br', 'cl','cr','dr','fl','fr','gl','gr',
299                                 'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh');
300
301         $start = mt_rand(0,2);
302         if($start == 0)
303                 $table = $vowels;
304         else
305                 $table = $cons;
306
307         $word = '';
308
309         for ($x = 0; $x < $len; $x ++) {
310                 $r = mt_rand(0,count($table) - 1);
311                 $word .= $table[$r];
312   
313                 if($table == $vowels)
314                         $table = array_merge($cons,$midcons);
315                 else
316                         $table = $vowels;
317
318         }
319
320         $word = substr($word,0,$len);
321
322         foreach($noend as $noe) {
323                 if((strlen($word) > 2) && (substr($word,-2) == $noe)) {
324                         $word = substr($word,0,-1);
325                         break;
326                 }
327         }
328         if(substr($word,-1) == 'q')
329                 $word = substr($word,0,-1);    
330         return $word;
331 }}
332
333 if(! function_exists('killme')) {
334 function killme() {
335         session_write_close();
336         exit;
337 }}
338
339 if(! function_exists('goaway')) {
340 function goaway($s) {
341         header("Location: $s");
342         killme();
343 }}
344
345
346 if(! function_exists('xml_status')) {
347 function xml_status($st) {
348         header( "Content-type: text/xml" );
349         echo '<?xml version="1.0" encoding="UTF-8"?>'."\r\n";
350         echo "<result><status>$st</status></result>\r\n";
351         killme();
352 }}
353
354 if(! function_exists('local_user')) {
355 function local_user() {
356         if((x($_SESSION,'authenticated')) && (x($_SESSION,'uid')))
357                 return $_SESSION['uid'];
358         return false;
359 }}
360
361 if(! function_exists('remote_user')) {
362 function remote_user() {
363         if((x($_SESSION,'authenticated')) && (x($_SESSION,'visitor_id')))
364                 return $_SESSION['visitor_id'];
365         return false;
366 }}
367
368 function footer(&$a) {
369
370         $s = fetch_url("http://fortunemod.com/cookie.php?equal=1");
371         $a->page['content'] .= "<div class=\"fortune\" >$s</div>"; 
372 }
373
374 if(! function_exists('notice')) {
375 function notice($s) {
376
377         $_SESSION['sysmsg'] .= $s;
378
379 }}
380
381 if(! function_exists('get_max_import_size')) {
382 function get_max_import_size() {
383         global $a;
384         return ((x($a->config,'max_import_size')) ? $a->config['max_import_size'] : 0 );
385 }}
386
387 if(! function_exists('xmlify')) {
388 function xmlify($str) {
389         $buffer = '';
390         
391         for($x = 0; $x < strlen($str); $x ++) {
392                 $char = $str[$x];
393         
394                 switch( $char ) {
395
396                         case "\r" :
397                                 break;
398                         case "&" :
399                                 $buffer .= '&amp;';
400                                 break;
401                         case "'" :
402                                 $buffer .= '&apos;';
403                                 break;
404
405                         case "\"" :
406                                 $buffer .= '&quot;';
407                                 break;
408                         case '<' :
409                                 $buffer .= '&lt;';
410                                 break;
411                         case '>' :
412                                 $buffer .= '&gt;';
413                                 break;
414                         case "\n" :
415                                 $buffer .= ' ';
416                                 break;
417                         default :
418                                 $buffer .= $char;
419                                 break;
420                 }       
421         }
422         $buffer = trim($buffer);
423         return($buffer);
424 }}
425
426 function unxmlify($s) {
427         $ret = str_replace('&amp;','&', $s);
428         $ret = str_replace(array('&lt;','&gt;','&quot;','&apos;'),array('<','>','"',"'"),$ret);
429         return $ret;    
430 }
431
432 function hex2bin($s) {
433         return(pack("H*",$s));
434 }
435
436
437 function paginate(&$a) {
438         $o = '';
439         $stripped = ereg_replace("(&page=[0-9]*)","",$_SERVER['QUERY_STRING']);
440         $stripped = str_replace('q=','',$stripped);
441         $stripped = trim($stripped,'/');
442         $url = $a->get_baseurl() . '/' . $stripped;
443
444
445           if($a->pager['total'] > $a->pager['itemspage']) {
446                 $o .= '<div class="pager">';
447                 if($a->pager['page'] != 1)
448                         $o .= '<span class="pager_prev">'."<a href=\"$url".'&page='.($a->pager['page'] - 1).'">' . t('prev') . '</a></span> ';
449
450                 $o .=  "<span class=\"pager_first\"><a href=\"$url"."&page=1\">" . t('first') . "</a></span> ";
451
452                 $numpages = $a->pager['total'] / $a->pager['itemspage'];
453
454                 $numstart = 1;
455                 $numstop = $numpages;
456
457                 if($numpages > 14) {
458                         $numstart = (($pagenum > 7) ? ($pagenum - 7) : 1);
459                         $numstop = (($pagenum > ($numpages - 7)) ? $numpages : ($numstart + 14));
460                 }
461    
462                 for($i = $numstart; $i <= $numstop; $i++){
463                         if($i == $a->pager['page'])
464                                 $o .= '<span class="pager_current">'.(($i < 10) ? '&nbsp;'.$i : $i);
465                         else
466                                 $o .= "<span class=\"pager_n\"><a href=\"$url"."&page=$i\">".(($i < 10) ? '&nbsp;'.$i : $i)."</a>";
467                         $o .= '</span> ';
468                 }
469
470                 if(($a->pager['total'] % $a->pager['itemspage']) != 0) {
471                         if($i == $a->pager['page'])
472                                 $o .= '<span class="pager_current">'.(($i < 10) ? '&nbsp;'.$i : $i);
473                         else
474                                 $o .= "<span class=\"pager_n\"><a href=\"$url"."&page=$i\">".(($i < 10) ? '&nbsp;'.$i : $i)."</a>";
475                         $o .= '</span> ';
476                 }
477
478                 $lastpage = (($numpages > intval($numpages)) ? intval($numpages)+1 : $numpages);
479                 $o .= "<span class=\"pager_last\"><a href=\"$url"."&page=$lastpage\">" . t('last') . "</a></span> ";
480
481                 if(($a->pager['total'] - ($a->pager['itemspage'] * $a->pager['page'])) > 0)
482                         $o .= '<span class="pager_next">'."<a href=\"$url"."&page=".($a->pager['page'] + 1).'">' . t('next') . '</a></span>';
483                 $o .= '</div>'."\r\n";
484         }
485         return $o;
486 }
487
488 function expand_acl($s) {
489
490         if(strlen($s)) {
491                 $a = explode('<',$s);
492                 for($x = 0; $x < count($a); $x ++) {
493                         $a[$x] = intval(str_replace(array('<','>'),array('',''),$a[$x]));
494                 }
495                 return $a;
496         }
497         return array();
498 }               
499
500