X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=boot.php;h=05a334a1fa50ddd33ef1fb08a4194dbebcdb7e6d;hb=ca201476b66dd50d8104b59214cd1922771f03ba;hp=ce02ca8b0dba57d213014cfc344923e3cce4f76d;hpb=a784762d21e440f53fc8cf4d1b943b6bc8f8faf3;p=friendica.git diff --git a/boot.php b/boot.php index ce02ca8b0d..05a334a1fa 100644 --- a/boot.php +++ b/boot.php @@ -17,9 +17,9 @@ require_once('include/dbstructure.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Lily of the valley'); -define ( 'FRIENDICA_VERSION', '3.4.1' ); +define ( 'FRIENDICA_VERSION', '3.4.3-rc' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1187 ); +define ( 'DB_UPDATE_VERSION', 1191 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -84,6 +84,15 @@ define ( 'LOGGER_DEBUG', 2 ); define ( 'LOGGER_DATA', 3 ); define ( 'LOGGER_ALL', 4 ); +/** + * cache levels + */ + +define ( 'CACHE_MONTH', 0 ); +define ( 'CACHE_WEEK', 1 ); +define ( 'CACHE_DAY', 2 ); +define ( 'CACHE_HOUR', 3 ); + /** * registration policies */ @@ -154,7 +163,8 @@ define ( 'NETWORK_TWITTER', 'twit'); // Twitter define ( 'NETWORK_DIASPORA2', 'dspc'); // Diaspora connector define ( 'NETWORK_STATUSNET', 'stac'); // Statusnet connector define ( 'NETWORK_APPNET', 'apdn'); // app.net - +define ( 'NETWORK_NEWS', 'nntp'); // Network News Transfer Protocol +define ( 'NETWORK_ICALENDAR', 'ical'); // iCalendar define ( 'NETWORK_PHANTOM', 'unkn'); // Place holder /** @@ -180,7 +190,9 @@ $netgroup_ids = array( NETWORK_TWITTER => (-14), NETWORK_DIASPORA2 => (-15), NETWORK_STATUSNET => (-16), - NETWORK_APPNET => (-17), + NETWORK_APPNET => (-17), + NETWORK_NEWS => (-18), + NETWORK_ICALENDAR => (-19), NETWORK_PHANTOM => (-127), ); @@ -261,6 +273,10 @@ define ( 'NAMESPACE_ATOM1', 'http://www.w3.org/2005/Atom' ); define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' ); define ( 'ACTIVITY_DISLIKE', NAMESPACE_DFRN . '/dislike' ); +define ( 'ACTIVITY_ATTEND', NAMESPACE_ZOT . '/activity/attendyes' ); +define ( 'ACTIVITY_ATTENDNO', NAMESPACE_ZOT . '/activity/attendno' ); +define ( 'ACTIVITY_ATTENDMAYBE', NAMESPACE_ZOT . '/activity/attendmaybe' ); + define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_DFRN . '/heart' ); define ( 'ACTIVITY_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'make-friend' ); @@ -399,6 +415,7 @@ if(! class_exists('App')) { public $videoheight = 350; public $force_max_items = 0; public $theme_thread_allow = true; + public $theme_events_in_profile = true; // An array for all theme-controllable parameters // Mostly unimplemented yet. Only options 'stylesheet' and @@ -617,6 +634,9 @@ if(! class_exists('App')) { $basepath = get_config("system", "basepath"); + if ($basepath == "") + $basepath = dirname(__FILE__); + if ($basepath == "") $basepath = $_SERVER["DOCUMENT_ROOT"]; @@ -717,10 +737,22 @@ if(! class_exists('App')) { function init_pagehead() { $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000); + + // If the update is "deactivated" set it to the highest integer number (~24 days) + if ($interval < 0) + $interval = 2147483647; + if($interval < 10000) $interval = 40000; - $this->page['title'] = $this->config['sitename']; + // compose the page title from the sitename and the + // current module called + if (!$this->module=='') + { + $this->page['title'] = $this->config['sitename'].' ('.$this->module.')'; + } else { + $this->page['title'] = $this->config['sitename']; + } /* put the head template at the beginning of page['htmlhead'] * since the code added by the modules frequently depends on it @@ -1423,8 +1455,46 @@ if(! function_exists('proc_run')) { if(! $arr['run_cmd']) return; - if(count($args) && $args[0] === 'php') + if(count($args) && $args[0] === 'php') { + + if (get_config("system", "worker")) { + $argv = $args; + array_shift($argv); + + $parameters = json_encode($argv); + $found = q("SELECT `id` FROM `workerqueue` WHERE `parameter` = '%s'", + dbesc($parameters)); + + if (!$found) + q("INSERT INTO `workerqueue` (`parameter`, `created`, `priority`) + VALUES ('%s', '%s', %d)", + dbesc($parameters), + dbesc(datetime_convert()), + intval(0)); + + // Should we quit and wait for the poller to be called as a cronjob? + if (get_config("system", "worker_dont_fork")) + return; + + // Checking number of workers + $workers = q("SELECT COUNT(*) AS `workers` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'"); + + // Get number of allowed number of worker threads + $queues = intval(get_config("system", "worker_queues")); + + if ($queues == 0) + $queues = 4; + + // If there are already enough workers running, don't fork another one + if ($workers[0]["workers"] >= $queues) + return; + + // Now call the poller to execute the jobs that we just added to the queue + $args = array("php", "include/poller.php", "no_cron"); + } + $args[0] = ((x($a->config,'php_path')) && (strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); + } // add baseurl to args. cli scripts can't construct it $args[] = $a->get_baseurl(); @@ -1432,9 +1502,8 @@ if(! function_exists('proc_run')) { for($x = 0; $x < count($args); $x ++) $args[$x] = escapeshellarg($args[$x]); - - $cmdline = implode($args," "); + if(get_config('system','proc_windows')) proc_close(proc_open('cmd /c start /b ' . $cmdline,array(),$foo,dirname(__FILE__))); else @@ -1611,7 +1680,7 @@ if(! function_exists('load_contact_links')) { if(! $uid || x($a->contacts,'empty')) return; - $r = q("SELECT `id`,`network`,`url`,`thumb` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `thumb` != ''", + $r = q("SELECT `id`,`network`,`url`,`thumb`, `rel` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `thumb` != ''", intval($uid) ); if(count($r)) { @@ -1708,6 +1777,15 @@ function random_digits($digits) { return $rn; } +function get_server() { + $server = get_config("system", "directory"); + + if ($server == "") + $server = "http://dir.friendi.ca"; + + return($server); +} + function get_cachefile($file, $writemode = true) { $cache = get_itemcachepath(); @@ -1793,7 +1871,11 @@ function get_lockpath() { if ($temppath != "") { $lockpath = $temppath."/lock"; - mkdir($lockpath); + + if (!is_dir($lockpath)) + mkdir($lockpath); + elseif (!is_writable($lockpath)) + $lockpath = $temppath; if (is_dir($lockpath) AND is_writable($lockpath)) { set_config("system", "lockpath", $lockpath); @@ -1838,3 +1920,31 @@ if(!function_exists('exif_imagetype')) { return($size[2]); } } + +function validate_include(&$file) { + $orig_file = $file; + + $file = realpath($file); + + if (strpos($file, getcwd()) !== 0) + return false; + + $file = str_replace(getcwd()."/", "", $file, $count); + if ($count != 1) + return false; + + if ($orig_file !== $file) + return false; + + $valid = false; + if (strpos($file, "include/") === 0) + $valid = true; + + if (strpos($file, "addon/") === 0) + $valid = true; + + if (!$valid) + return false; + + return true; +}