]> git.mxchange.org Git - friendica.git/blob - boot.php
Continued:
[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         return false;
121 }
122
123 /**
124  * Returns the public contact id of logged in user or false.
125  *
126  * @return int|bool public contact id or false
127  */
128 function public_contact()
129 {
130         static $public_contact_id = false;
131
132         if (!$public_contact_id && !empty($_SESSION['authenticated'])) {
133                 if (!empty($_SESSION['my_address'])) {
134                         // Local user
135                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0, false));
136                 } elseif (!empty($_SESSION['visitor_home'])) {
137                         // Remote user
138                         $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0, false));
139                 }
140         } elseif (empty($_SESSION['authenticated'])) {
141                 $public_contact_id = false;
142         }
143
144         return $public_contact_id;
145 }
146
147 /**
148  * Returns public contact id of authenticated site visitor or false
149  *
150  * @return int|bool visitor_id or false
151  */
152 function remote_user()
153 {
154         if (empty($_SESSION['authenticated'])) {
155                 return false;
156         }
157
158         if (!empty($_SESSION['visitor_id'])) {
159                 return intval($_SESSION['visitor_id']);
160         }
161
162         return false;
163 }
164
165 /**
166  * Show an error message to user.
167  *
168  * This function save text in session, to be shown to the user at next page load
169  *
170  * @param string $s - Text of notice
171  */
172 function notice($s)
173 {
174         if (empty($_SESSION)) {
175                 return;
176         }
177
178         if (empty($_SESSION['sysmsg'])) {
179                 $_SESSION['sysmsg'] = [];
180         }
181
182         $_SESSION['sysmsg'][] = $s;
183 }
184
185 /**
186  * Show an info message to user.
187  *
188  * This function save text in session, to be shown to the user at next page load
189  *
190  * @param string $s - Text of notice
191  */
192 function info($s)
193 {
194         if (empty($_SESSION)) {
195                 return;
196         }
197
198         if (empty($_SESSION['sysmsg_info'])) {
199                 $_SESSION['sysmsg_info'] = [];
200         }
201
202         $_SESSION['sysmsg_info'][] = $s;
203 }