]> git.mxchange.org Git - friendica.git/blobdiff - boot.php
add $item.shiny to default template
[friendica.git] / boot.php
index 647f779e81e93a4cd21783a25eed1bdb161aafac..17fd628fca70e6e03f88a7256e16225628830883 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -11,9 +11,9 @@ require_once('include/cache.php');
 require_once('library/Mobile_Detect/Mobile_Detect.php');
 
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
-define ( 'FRIENDICA_VERSION',      '3.0.1430' );
+define ( 'FRIENDICA_VERSION',      '3.0.1521' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1154      );
+define ( 'DB_UPDATE_VERSION',      1156      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
@@ -253,6 +253,7 @@ define ( 'ACTIVITY_TAG',         NAMESPACE_ACTIVITY_SCHEMA . 'tag' );
 define ( 'ACTIVITY_FAVORITE',    NAMESPACE_ACTIVITY_SCHEMA . 'favorite' );
 
 define ( 'ACTIVITY_POKE',        NAMESPACE_ZOT . '/activity/poke' );
+define ( 'ACTIVITY_MOOD',        NAMESPACE_ZOT . '/activity/mood' );
 
 define ( 'ACTIVITY_OBJ_COMMENT', NAMESPACE_ACTIVITY_SCHEMA . 'comment' );
 define ( 'ACTIVITY_OBJ_NOTE',    NAMESPACE_ACTIVITY_SCHEMA . 'note' );
@@ -282,7 +283,9 @@ define ( 'GRAVITY_COMMENT',      6);
  */
 
 function startup() {
+       
        error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
        set_time_limit(0);
 
        // This has to be quite large to deal with embedded private photos
@@ -349,6 +352,8 @@ if(! class_exists('App')) {
                public  $plugins;
                public  $apps = array();
                public  $identities;
+               public  $is_mobile;
+               public  $is_tablet;
        
                public $nav_sel;
 
@@ -356,15 +361,25 @@ if(! class_exists('App')) {
 
                // Allow themes to control internal parameters
                // by changing App values in theme.php
-               //
-               // Possibly should make these part of the plugin
-               // system, but it seems like overkill to invoke
-               // all the plugin machinery just to change a couple
-               // of values
+
                public  $sourcename = '';
                public  $videowidth = 425;
                public  $videoheight = 350;
                public  $force_max_items = 0;
+               public  $theme_thread_allow = true;
+
+               // An array for all theme-controllable parameters
+               // Mostly unimplemented yet. Only options 'stylesheet' and
+               // beyond are used.
+
+               public  $theme = array(
+                       'sourcename' => '',
+                       'videowidth' => 425,
+                       'videoheight' => 350,
+                       'force_max_items' => 0,
+                       'thread_allow' => true,
+                       'stylesheet' => ''
+               );
 
                private $scheme;
                private $hostname;
@@ -379,7 +394,7 @@ if(! class_exists('App')) {
                                                        
                function __construct() {
 
-                       global $default_timezone;
+                       global $default_timezone, $argv, $argc;
 
                        $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
 
@@ -399,7 +414,6 @@ if(! class_exists('App')) {
                        elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443))
                        $this->scheme = 'https';
 
-
                        if(x($_SERVER,'SERVER_NAME')) {
                                $this->hostname = $_SERVER['SERVER_NAME'];
 
@@ -423,6 +437,9 @@ if(! class_exists('App')) {
                                if(isset($path) && strlen($path) && ($path != $this->path))
                                        $this->path = $path;
                        }
+                       if (is_array($argv) && $argc>1 && !x($_SERVER,'SERVER_NAME') && substr(end($argv), 0, 4)=="http" ) {
+                               $this->set_baseurl(array_pop($argv) );
+                       }
 
                        set_include_path(
                                        "include/$this->hostname" . PATH_SEPARATOR
@@ -431,6 +448,7 @@ if(! class_exists('App')) {
                                        . 'library/phpsec' . PATH_SEPARATOR
                                        . 'library/langdet' . PATH_SEPARATOR
                                        . '.' );
+            
 
                        if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") {
                                $this->query_string = substr($_SERVER['QUERY_STRING'],2);
@@ -470,6 +488,7 @@ if(! class_exists('App')) {
                        $this->argc = count($this->argv);
                        if((array_key_exists('0',$this->argv)) && strlen($this->argv[0])) {
                                $this->module = str_replace(".", "_", $this->argv[0]);
+                               $this->module = str_replace("-", "_", $this->module);
                        }
                        else {
                                $this->argc = 1;
@@ -477,16 +496,6 @@ if(! class_exists('App')) {
                                $this->module = 'home';
                        }
 
-                       /**
-                        * Special handling for the webfinger/lrdd host XRD file
-                        */
-
-                       if($this->cmd === '.well-known/host-meta') {
-                               $this->argc = 1;
-                               $this->argv = array('hostxrd');
-                               $this->module = 'hostxrd';
-                       }
-
                        /**
                         * See if there is any page number information, and initialise
                         * pagination
@@ -498,6 +507,14 @@ if(! class_exists('App')) {
                        if($this->pager['start'] < 0)
                                $this->pager['start'] = 0;
                        $this->pager['total'] = 0;
+
+                       /**
+                        * Detect mobile devices
+                        */
+
+                       $mobile_detect = new Mobile_Detect();
+                       $this->is_mobile = $mobile_detect->isMobile();
+                       $this->is_tablet = $mobile_detect->isTablet();
                }
 
                function get_baseurl($ssl = false) {
@@ -572,6 +589,13 @@ if(! class_exists('App')) {
                                $interval = 40000;
 
                        $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
+                        * being first
+                        */
+                       if(!isset($this->page['htmlhead']))
+                               $this->page['htmlhead'] = '';
                        $tpl = get_markup_template('head.tpl');
                        $this->page['htmlhead'] = replace_macros($tpl,array(
                                '$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!!
@@ -582,14 +606,16 @@ if(! class_exists('App')) {
                                '$showmore' => t('show more'),
                                '$showfewer' => t('show fewer'),
                                '$update_interval' => $interval
-                       ));
+                       )) . $this->page['htmlhead'];
                }
 
                function init_page_end() {
+                       if(!isset($this->page['end']))
+                               $this->page['end'] = '';
                        $tpl = get_markup_template('end.tpl');
                        $this->page['end'] = replace_macros($tpl,array(
                                '$baseurl' => $this->get_baseurl() // FIXME for z_path!!!!
-                       ));
+                       )) . $this->page['end'];
                }
 
                function set_curl_code($code) {
@@ -734,10 +760,14 @@ if(! function_exists('check_config')) {
                // than the currently visited url, store the current value accordingly.
                // "Radically different" ignores common variations such as http vs https
                // and www.example.com vs example.com.
+               // We will only change the url to an ip address if there is no existing setting
 
-               if((! x($url)) || (! link_compare($url,$a->get_baseurl())))
+               if(! x($url))
+                       $url = set_config('system','url',$a->get_baseurl());
+               if((! link_compare($url,$a->get_baseurl())) && (! preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$a->get_hostname)))
                        $url = set_config('system','url',$a->get_baseurl());
 
+
                if($build != DB_UPDATE_VERSION) {
                        $stored = intval($build);
                        $current = intval(DB_UPDATE_VERSION);
@@ -899,8 +929,13 @@ if(! function_exists('login')) {
                        $tpl = get_markup_template("logout.tpl");
                }
                else {
+                       $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"),array(
+                               '$baseurl'              => $a->get_baseurl(true)
+                       ));
+
                        $tpl = get_markup_template("login.tpl");
                        $_SESSION['return_url'] = $a->query_string;
+                       $a->module = 'login';
                }
 
 
@@ -912,6 +947,7 @@ if(! function_exists('login')) {
        
                        '$lname'                => array('username', t('Nickname or Email address: ') , '', ''),
                        '$lpassword'    => array('password', t('Password: '), '', ''),
+                       '$lremember'    => array('remember', t('Remember me'), 0, ''),
        
                        '$openid'               => !$noid,
                        '$lopenid'      => array('openid_url', t('Or login using OpenID: '),'',''),
@@ -1024,11 +1060,29 @@ if(! function_exists('get_max_import_size')) {
 
 if(! function_exists('profile_load')) {
        function profile_load(&$a, $nickname, $profile = 0) {
-               if(remote_user()) {
-                       $r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
-                                       intval($_SESSION['visitor_id']));
-                       if(count($r))
-                               $profile = $r[0]['profile-id'];
+
+               $user = q("select uid from user where nickname = '%s' limit 1",
+                       dbesc($nickname)
+               );
+               
+               if(! ($user && count($user))) {
+                       logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
+                       notice( t('Requested account is not available.') . EOL );
+                       $a->error = 404;
+                       return;
+               }
+
+               if(remote_user() && count($_SESSION['remote'])) {
+                       foreach($_SESSION['remote'] as $visitor) {
+                               if($visitor['uid'] == $user[0]['uid']) {
+                                       $r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
+                                               intval($visitor['cid'])
+                                       );
+                                       if(count($r))
+                                               $profile = $r[0]['profile-id'];
+                                       break;
+                               }
+                       }
                }
 
                $r = null;
@@ -1069,9 +1123,12 @@ if(! function_exists('profile_load')) {
 
                $a->profile = $r[0];
 
+               $a->profile['mobile-theme'] = get_pconfig($profile_uid, 'system', 'mobile_theme');
+
 
                $a->page['title'] = $a->profile['name'] . " @ " . $a->config['sitename'];
                $_SESSION['theme'] = $a->profile['theme'];
+               $_SESSION['mobile-theme'] = $a->profile['mobile-theme'];
 
                /**
                 * load/reload current theme info
@@ -1143,8 +1200,14 @@ if(! function_exists('profile_sidebar')) {
 
                // don't show connect link to authenticated visitors either
 
-               if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid']))
-                       $connect = False;
+               if(remote_user() && count($_SESSION['remote'])) {
+                       foreach($_SESSION['remote'] as $visitor) {
+                               if($visitor['uid'] == $profile['uid']) {
+                                       $connect = false;
+                                       break;
+                               }
+                       }
+               }
 
                if(get_my_url() && $profile['unkmail'])
                        $wallmessage = t('Message');
@@ -1260,14 +1323,14 @@ if(! function_exists('get_birthdays')) {
                $a = get_app();
                $o = '';
 
-               if(! local_user())
+               if(! local_user() || $a->is_mobile || $a->is_tablet)
                        return $o;
 
-               $mobile_detect = new Mobile_Detect();
-               $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
+//             $mobile_detect = new Mobile_Detect();
+//             $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
 
-               if($is_mobile)
-                       return $o;
+//             if($is_mobile)
+//                     return $o;
 
                $bd_format = t('g A l F d') ; // 8 AM Friday January 18
                $bd_short = t('F d');
@@ -1345,15 +1408,15 @@ if(! function_exists('get_events')) {
 
                $a = get_app();
 
-               if(! local_user())
+               if(! local_user() || $a->is_mobile || $a->is_tablet)
                        return $o;
 
 
-               $mobile_detect = new Mobile_Detect();
-               $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
+//             $mobile_detect = new Mobile_Detect();
+//             $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
 
-               if($is_mobile)
-                       return $o;
+//             if($is_mobile)
+//                     return $o;
 
                $bd_format = t('g A l F d') ; // 8 AM Friday January 18
                $bd_short = t('F d');
@@ -1462,11 +1525,20 @@ if(! function_exists('proc_run')) {
 
                if(count($args) && $args[0] === 'php')
                        $args[0] = ((x($a->config,'php_path')) && (strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
-               for($x = 0; $x < count($args); $x ++)
+        
+        // add baseurl to args. cli scripts can't construct it
+        $args[] = $a->get_baseurl();
+        
+        for($x = 0; $x < count($args); $x ++)
                        $args[$x] = escapeshellarg($args[$x]);
 
+        
+
                $cmdline = implode($args," ");
-               proc_close(proc_open($cmdline." &",array(),$foo));
+               if(get_config('system','proc_windows'))
+                       proc_close(proc_open('cmd /c start /b ' . $cmdline,array(),$foo,dirname(__FILE__)));
+               else
+                       proc_close(proc_open($cmdline." &",array(),$foo,dirname(__FILE__)));
        }
 }
 
@@ -1476,12 +1548,25 @@ if(! function_exists('current_theme')) {
        
                $a = get_app();
        
-               $mobile_detect = new Mobile_Detect();
-               $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
+//             $mobile_detect = new Mobile_Detect();
+//             $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet();
+               $is_mobile = $a->is_mobile || $a->is_tablet;
        
                if($is_mobile) {
-                       $system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : '');
-                       $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme);
+                       if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {
+                               $system_theme = '';
+                               $theme_name = '';
+                       }
+                       else {
+                               $system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : '');
+                               $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme);
+
+                               if($theme_name === '---') {
+                                       // user has selected to have the mobile theme be the same as the normal one
+                                       $system_theme = '';
+                                       $theme_name = '';
+                               }
+                       }
                }
                if(!$is_mobile || ($system_theme === '' && $theme_name === '')) {
                        $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
@@ -1723,3 +1808,28 @@ function build_querystring($params, $name=null) {
     } 
     return $ret;    
 }
+
+/**
+* Returns the complete URL of the current page, e.g.: http(s)://something.com/network
+*
+* Taken from http://webcheatsheet.com/php/get_current_page_url.php
+*/
+function curPageURL() {
+       $pageURL = 'http';
+       if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
+       $pageURL .= "://";
+       if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
+               $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
+       } else {
+               $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
+       }
+       return $pageURL;
+}
+
+function random_digits($digits) {
+       $rn = '';
+       for($i = 0; $i < $digits; $i++) {
+               $rn .= rand(0,9);
+       }
+       return $rn;
+}