]> git.mxchange.org Git - friendica.git/blob - boot.php
b90c1fb2e21f7e244ed24f3eae6ffbdc39652026
[friendica.git] / boot.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2022, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  * Friendica is a communications platform for integrated social communications
21  * utilising decentralised communications and linkage to several indie social
22  * projects - as well as popular mainstream providers.
23  *
24  * Our mission is to free our friends and families from the clutches of
25  * data-harvesting corporations, and pave the way to a future where social
26  * communications are free and open and flow between alternate providers as
27  * easily as email does today.
28  */
29
30 use Friendica\Model\Contact;
31
32 define('FRIENDICA_PLATFORM',     'Friendica');
33 define('FRIENDICA_CODENAME',     'Giant Rhubarb');
34 define('FRIENDICA_VERSION',      '2022.12-dev');
35 define('DFRN_PROTOCOL_VERSION',  '2.23');
36 define('NEW_TABLE_STRUCTURE_VERSION', 1288);
37
38 /**
39  * Constant with a HTML line break.
40  *
41  * Contains a HTML line break (br) element and a real carriage return with line
42  * feed for the source.
43  * This can be used in HTML and JavaScript where needed a line break.
44  */
45 define('EOL',                    "<br />\r\n");
46
47 /**
48  * @name CP
49  *
50  * Type of the community page
51  * @{
52  */
53 define('CP_NO_INTERNAL_COMMUNITY', -2);
54 define('CP_NO_COMMUNITY_PAGE',     -1);
55 define('CP_USERS_ON_SERVER',        0);
56 define('CP_GLOBAL_COMMUNITY',       1);
57 define('CP_USERS_AND_GLOBAL',       2);
58 /**
59  * @}
60  */
61
62 /**
63  * @name Gravity
64  *
65  * Item weight for query ordering
66  * @{
67  */
68 define('GRAVITY_PARENT',       0);
69 define('GRAVITY_ACTIVITY',     3);
70 define('GRAVITY_COMMENT',      6);
71 define('GRAVITY_UNKNOWN',      9);
72 /* @}*/
73
74 // Normally this constant is defined - but not if "pcntl" isn't installed
75 if (!defined('SIGTERM')) {
76         define('SIGTERM', 15);
77 }
78
79 /**
80  * Depending on the PHP version this constant does exist - or not.
81  * See here: http://php.net/manual/en/curl.constants.php#117928
82  */
83 if (!defined('CURLE_OPERATION_TIMEDOUT')) {
84         define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED);
85 }
86
87 if (!function_exists('exif_imagetype')) {
88         function exif_imagetype($file)
89         {
90                 $size = getimagesize($file);
91                 return $size[2];
92         }
93 }
94
95 /**
96  * Returns the user id of locally logged in user or false.
97  *
98  * @return int|bool user id or false
99  */
100 function local_user()
101 {
102         if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
103                 return intval($_SESSION['uid']);
104         }
105
106         return false;
107 }
108
109 /**
110  * Returns the public contact id of logged in user or false.
111  *
112  * @return int|bool public contact id or false
113  */
114 function public_contact()
115 {
116         static $public_contact_id = false;
117
118         if (!$public_contact_id && !empty($_SESSION['authenticated'])) {
119                 if (!empty($_SESSION['my_address'])) {
120                         // Local user
121                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0, false));
122                 } elseif (!empty($_SESSION['visitor_home'])) {
123                         // Remote user
124                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0, false));
125                 }
126         } elseif (empty($_SESSION['authenticated'])) {
127                 $public_contact_id = false;
128         }
129
130         return $public_contact_id;
131 }
132
133 /**
134  * Returns public contact id of authenticated site visitor or false
135  *
136  * @return int|bool visitor_id or false
137  */
138 function remote_user()
139 {
140         if (empty($_SESSION['authenticated'])) {
141                 return false;
142         }
143
144         if (!empty($_SESSION['visitor_id'])) {
145                 return intval($_SESSION['visitor_id']);
146         }
147
148         return false;
149 }
150
151 /**
152  * Show an error message to user.
153  *
154  * This function save text in session, to be shown to the user at next page load
155  *
156  * @param string $s - Text of notice
157  *
158  * @return void
159  * @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
160  */
161 function notice(string $s)
162 {
163         \Friendica\DI::sysmsg()->addNotice($s);
164 }
165
166 /**
167  * Show an info message to user.
168  *
169  * This function save text in session, to be shown to the user at next page load
170  *
171  * @param string $s - Text of notice
172  *
173  * @return void
174  * @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
175  */
176 function info(string $s)
177 {
178         \Friendica\DI::sysmsg()->addInfo($s);
179 }