]> git.mxchange.org Git - friendica.git/blob - boot.php
Changes
[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.09-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 /**
75  * @name Priority
76  *
77  * Process priority for the worker
78  * @{
79  */
80 define('PRIORITY_UNDEFINED',   0);
81 define('PRIORITY_CRITICAL',   10);
82 define('PRIORITY_HIGH',       20);
83 define('PRIORITY_MEDIUM',     30);
84 define('PRIORITY_LOW',        40);
85 define('PRIORITY_NEGLIGIBLE', 50);
86 define('PRIORITIES', [PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORITY_LOW, PRIORITY_NEGLIGIBLE]);
87 /* @}*/
88
89 // Normally this constant is defined - but not if "pcntl" isn't installed
90 if (!defined('SIGTERM')) {
91         define('SIGTERM', 15);
92 }
93
94 /**
95  * Depending on the PHP version this constant does exist - or not.
96  * See here: http://php.net/manual/en/curl.constants.php#117928
97  */
98 if (!defined('CURLE_OPERATION_TIMEDOUT')) {
99         define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED);
100 }
101
102 if (!function_exists('exif_imagetype')) {
103         function exif_imagetype($file)
104         {
105                 $size = getimagesize($file);
106                 return $size[2];
107         }
108 }
109
110 /**
111  * Returns the user id of locally logged in user or false.
112  *
113  * @return int|bool user id or false
114  */
115 function local_user()
116 {
117         if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) {
118                 return intval($_SESSION['uid']);
119         }
120
121         return false;
122 }
123
124 /**
125  * Returns the public contact id of logged in user or false.
126  *
127  * @return int|bool public contact id or false
128  */
129 function public_contact()
130 {
131         static $public_contact_id = false;
132
133         if (!$public_contact_id && !empty($_SESSION['authenticated'])) {
134                 if (!empty($_SESSION['my_address'])) {
135                         // Local user
136                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0, false));
137                 } elseif (!empty($_SESSION['visitor_home'])) {
138                         // Remote user
139                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0, false));
140                 }
141         } elseif (empty($_SESSION['authenticated'])) {
142                 $public_contact_id = false;
143         }
144
145         return $public_contact_id;
146 }
147
148 /**
149  * Returns public contact id of authenticated site visitor or false
150  *
151  * @return int|bool visitor_id or false
152  */
153 function remote_user()
154 {
155         if (empty($_SESSION['authenticated'])) {
156                 return false;
157         }
158
159         if (!empty($_SESSION['visitor_id'])) {
160                 return intval($_SESSION['visitor_id']);
161         }
162
163         return false;
164 }
165
166 /**
167  * Show an error 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 function notice(string $s)
174 {
175         if (empty($_SESSION)) {
176                 return;
177         }
178
179         if (empty($_SESSION['sysmsg'])) {
180                 $_SESSION['sysmsg'] = [];
181         }
182
183         $_SESSION['sysmsg'][] = $s;
184 }
185
186 /**
187  * Show an info message to user.
188  *
189  * This function save text in session, to be shown to the user at next page load
190  *
191  * @param string $s - Text of notice
192  */
193 function info(string $s)
194 {
195         if (empty($_SESSION)) {
196                 return;
197         }
198
199         if (empty($_SESSION['sysmsg_info'])) {
200                 $_SESSION['sysmsg_info'] = [];
201         }
202
203         $_SESSION['sysmsg_info'][] = $s;
204 }