X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=src%2FApp.php;h=cd39604789288903c780ffa5e25ab3e075894110;hb=c66c6223b785d43749e62d7d5eaf110aeb9e9e26;hp=f6b568ae8ac2c59b5c3e532ef81f8eacce318740;hpb=1838024f6d60674faf2bf08a736d0f81bcc49425;p=friendica.git diff --git a/src/App.php b/src/App.php index f6b568ae8a..cd39604789 100644 --- a/src/App.php +++ b/src/App.php @@ -2,16 +2,21 @@ namespace Friendica; +use Friendica\Core\System; +use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\PConfig; +use Friendica\Database\DBM; -use Cache; -use dbm; +use dba; use Detection\MobileDetect; use Exception; +require_once 'boot.php'; +require_once 'include/dba.php'; + /** * * class: App @@ -28,9 +33,11 @@ use Exception; class App { public $module_loaded = false; + public $module_class = null; public $query_string; public $config; public $page; + public $page_offset; public $profile; public $profile_uid; public $user; @@ -53,6 +60,7 @@ class App { public $timezone; public $interactive = true; public $plugins; + public $plugins_admin = array(); public $apps = array(); public $identities; public $is_mobile = false; @@ -71,7 +79,6 @@ class App { public $videowidth = 425; public $videoheight = 350; public $force_max_items = 0; - public $theme_thread_allow = true; public $theme_events_in_profile = true; /** @@ -85,7 +92,6 @@ class App { 'videowidth' => 425, 'videoheight' => 350, 'force_max_items' => 0, - 'thread_allow' => true, 'stylesheet' => '', 'template_engine' => 'smarty3', ); @@ -100,6 +106,7 @@ class App { */ public $template_engine_instance = array(); public $process_id; + public $queue; private $ldelim = array( 'internal' => '', 'smarty3' => '{{' @@ -129,8 +136,14 @@ class App { $hostname = ''; - if (file_exists('.htpreconfig.php')) { - include '.htpreconfig.php'; + if (! static::directory_usable($basepath, false)) { + throw new Exception('Basepath ' . $basepath . ' isn\'t usable.'); + } + + $this->basepath = rtrim($basepath, DIRECTORY_SEPARATOR); + + if (file_exists($this->basepath.DIRECTORY_SEPARATOR.'.htpreconfig.php')) { + include $this->basepath.DIRECTORY_SEPARATOR.'.htpreconfig.php'; } $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC'); @@ -198,17 +211,10 @@ class App { $this->hostname = $hostname; } - if (! static::directory_usable($basepath, false)) { - throw new Exception('Basepath ' . $basepath . ' isn\'t usable.'); - } - - $this->basepath = rtrim($basepath, DIRECTORY_SEPARATOR); - set_include_path( get_include_path() . PATH_SEPARATOR . $this->basepath . DIRECTORY_SEPARATOR . 'include' . PATH_SEPARATOR . $this->basepath . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR - . $this->basepath . DIRECTORY_SEPARATOR . 'library/langdet' . PATH_SEPARATOR . $this->basepath); @@ -293,7 +299,7 @@ class App { // Register template engines $dc = get_declared_classes(); foreach ($dc as $k) { - if (in_array('ITemplateEngine', class_implements($k))) { + if (in_array('Friendica\Render\ITemplateEngine', class_implements($k))) { $this->register_template_engine($k); } } @@ -309,10 +315,8 @@ class App { * * @return string */ - public static function get_basepath() { - if (isset($this)) { - $basepath = $this->basepath; - } + public function get_basepath() { + $basepath = $this->basepath; if (! $basepath) { $basepath = Config::get('system', 'basepath'); @@ -326,7 +330,27 @@ class App { $basepath = $_SERVER['PWD']; } - return $basepath; + return self::realpath($basepath); + } + + /** + * @brief Returns a normalized file path + * + * This is a wrapper for the "realpath" function. + * That function cannot detect the real path when some folders aren't readable. + * Since this could happen with some hosters we need to handle this. + * + * @param string $path The path that is about to be normalized + * @return string normalized path - when possible + */ + public static function realpath($path) { + $normalized = realpath($path); + + if (!is_bool($normalized)) { + return $normalized; + } else { + return $path; + } } function get_scheme() { @@ -348,11 +372,6 @@ class App { * @return string Friendica server base URL */ function get_baseurl($ssl = false) { - // Is the function called statically? - if (!(isset($this) && get_class($this) == __CLASS__)) { - return self::$a->get_baseurl($ssl); - } - $scheme = $this->scheme; if (Config::get('system', 'ssl_policy') == SSL_POLICY_FULL) { @@ -398,8 +417,8 @@ class App { $this->path = trim($parsed['path'], '\\/'); } - if (file_exists('.htpreconfig.php')) { - include '.htpreconfig.php'; + if (file_exists($this->basepath.DIRECTORY_SEPARATOR.'.htpreconfig.php')) { + include $this->basepath.DIRECTORY_SEPARATOR.'.htpreconfig.php'; } if (Config::get('config', 'hostname') != '') { @@ -499,7 +518,7 @@ class App { $tpl = get_markup_template('head.tpl'); $this->page['htmlhead'] = replace_macros($tpl, array( - '$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!! + '$baseurl' => $this->get_baseurl(), '$local_user' => local_user(), '$generator' => 'Friendica' . ' ' . FRIENDICA_VERSION, '$delitem' => t('Delete this item?'), @@ -519,7 +538,7 @@ class App { } $tpl = get_markup_template('end.tpl'); $this->page['end'] = replace_macros($tpl, array( - '$baseurl' => $this->get_baseurl() // FIXME for z_path!!!! + '$baseurl' => $this->get_baseurl() )) . $this->page['end']; } @@ -560,11 +579,6 @@ class App { */ function remove_baseurl($orig_url) { - // Is the function called statically? - if (!(isset($this) && get_class($this) == __CLASS__)) { - return self::$a->remove_baseurl($orig_url); - } - // Remove the hostname from the url if it is an internal link $nurl = normalise_link($orig_url); $base = normalise_link($this->get_baseurl()); @@ -606,7 +620,7 @@ class App { * If $name is not defined, return engine defined by theme, * or default * - * @param strin $name Template engine name + * @param string $name Template engine name * @return object Template Engine instance */ function template_engine($name = '') { @@ -671,7 +685,7 @@ class App { $this->performance[$value] += (float) $duration; $this->performance['marktime'] += (float) $duration; - $callstack = $this->callstack(); + $callstack = System::callstack(); if (!isset($this->callstack[$value][$callstack])) { // Prevent ugly E_NOTICE @@ -691,57 +705,37 @@ class App { $this->remove_inactive_processes(); - q('START TRANSACTION'); + dba::transaction(); $r = q('SELECT `pid` FROM `process` WHERE `pid` = %d', intval(getmypid())); - if (!dbm::is_result($r)) { - q("INSERT INTO `process` (`pid`,`command`,`created`) VALUES (%d, '%s', '%s')", intval(getmypid()), dbesc($command), dbesc(datetime_convert())); + if (!DBM::is_result($r)) { + dba::insert('process', array('pid' => getmypid(), 'command' => $command, 'created' => datetime_convert())); } - q('COMMIT'); + dba::commit(); } /** * @brief Remove inactive processes */ function remove_inactive_processes() { - q('START TRANSACTION'); + dba::transaction(); $r = q('SELECT `pid` FROM `process`'); - if (dbm::is_result($r)) { + if (DBM::is_result($r)) { foreach ($r AS $process) { if (!posix_kill($process['pid'], 0)) { - q('DELETE FROM `process` WHERE `pid` = %d', intval($process['pid'])); + dba::delete('process', array('pid' => $process['pid'])); } } } - q('COMMIT'); + dba::commit(); } /** * @brief Remove the active process from the "process" table */ function end_process() { - q('DELETE FROM `process` WHERE `pid` = %d', intval(getmypid())); - } - - /** - * @brief Returns a string with a callstack. Can be used for logging. - * - * @return string - */ - function callstack($depth = 4) { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, $depth + 2); - - // We remove the first two items from the list since they contain data that we don't need. - array_shift($trace); - array_shift($trace); - - $callstack = array(); - foreach ($trace AS $func) { - $callstack[] = $func['function']; - } - - return implode(', ', $callstack); + dba::delete('process', array('pid' => getmypid())); } function get_useragent() { @@ -814,7 +808,7 @@ class App { } } - $processlist = dbm::processlist(); + $processlist = DBM::processlist(); if ($processlist['list'] != '') { logger('Processcheck: Processes: ' . $processlist['amount'] . ' - Processlist: ' . $processlist['list'], LOGGER_DEBUG);