]> git.mxchange.org Git - friendica.git/blobdiff - boot.php
Merge remote-tracking branch 'upstream/develop' into 1604-cookie
[friendica.git] / boot.php
index 44fbcda735dfcf814b7f39f1091cd0bcf90c2055..13cc2aaf5bdf7a612e47a0d6ee11bcbadc879a63 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -6,11 +6,11 @@
 
 /**
  * Friendica
- * 
+ *
  * Friendica is a communications platform for integrated social communications
  * utilising decentralised communications and linkage to several indie social
  * projects - as well as popular mainstream providers.
- * 
+ *
  * Our mission is to free our friends and families from the clutches of
  * data-harvesting corporations, and pave the way to a future where social
  * communications are free and open and flow between alternate providers as
@@ -18,7 +18,7 @@
  */
 
 require_once('include/autoloader.php');
+
 require_once('include/config.php');
 require_once('include/network.php');
 require_once('include/plugin.php');
@@ -30,7 +30,7 @@ require_once('include/cache.php');
 require_once('library/Mobile_Detect/Mobile_Detect.php');
 require_once('include/features.php');
 require_once('include/identity.php');
-
+require_once('include/pidfile.php');
 require_once('update.php');
 require_once('include/dbstructure.php');
 
@@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_CODENAME',     'Asparagus');
 define ( 'FRIENDICA_VERSION',      '3.5-dev' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1194      );
+define ( 'DB_UPDATE_VERSION',      1195      );
 
 /**
  * @brief Constant with a HTML line break.
@@ -465,11 +465,12 @@ class App {
        public  $plugins;
        public  $apps = array();
        public  $identities;
-       public  $is_mobile;
-       public  $is_tablet;
+       public  $is_mobile = false;
+       public  $is_tablet = false;
        public  $is_friendica_app;
        public  $performance = array();
        public  $callstack = array();
+       public  $theme_info = array();
 
        public $nav_sel;
 
@@ -1097,6 +1098,55 @@ class App {
                return($this->is_friendica_app);
        }
 
+       /**
+        * @brief Checks if the maximum load is reached
+        *
+        * @return bool Is the load reached?
+        */
+       function maxload_reached() {
+
+               $maxsysload = intval(get_config('system', 'maxloadavg'));
+               if ($maxsysload < 1)
+                       $maxsysload = 50;
+
+               $load = current_load();
+               if ($load) {
+                       if (intval($load) > $maxsysload) {
+                               logger('system: load '.$load.' too high.');
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * @brief Checks if the process is already running
+        *
+        * @param string $taskname The name of the task that will be used for the name of the lockfile
+        * @param string $task The path and name of the php script
+        * @param int $timeout The timeout after which a task should be killed
+        *
+        * @return bool Is the process running?
+        */
+       function is_already_running($taskname, $task = "", $timeout = 540) {
+
+               $lockpath = get_lockpath();
+               if ($lockpath != '') {
+                       $pidfile = new pidfile($lockpath, $taskname);
+                       if ($pidfile->is_already_running()) {
+                               logger("Already running");
+                               if ($pidfile->running_time() > $timeout) {
+                                       $pidfile->kill();
+                                       logger("killed stale process");
+                                       // Calling a new instance
+                                       if ($task != "")
+                                               proc_run('php', $task);
+                               }
+                               return true;
+                       }
+               }
+               return false;
+       }
 }
 
 /**
@@ -1508,6 +1558,9 @@ function killme() {
  * @brief Redirect to another URL and terminate this process.
  */
 function goaway($s) {
+       if (!strstr(normalise_link($s), "http://"))
+               $s = App::get_baseurl()."/".$s;
+
        header("Location: $s");
        killme();
 }