require_once('include/features.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
-define ( 'FRIENDICA_VERSION', '3.1.1588' );
+define ( 'FRIENDICA_VERSION', '3.1.1618' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1158 );
-
+define ( 'DB_UPDATE_VERSION', 1162 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'TERM_UNKNOWN', 0 );
define ( 'TERM_HASHTAG', 1 );
-define ( 'TERM_MENTION', 2 );
+define ( 'TERM_MENTION', 2 );
define ( 'TERM_CATEGORY', 3 );
define ( 'TERM_PCATEGORY', 4 );
define ( 'TERM_FILE', 5 );
+define ( 'TERM_SAVEDSEARCH', 6 );
+define ( 'TERM_CONVERSATION', 7 );
define ( 'TERM_OBJ_POST', 1 );
define ( 'TERM_OBJ_PHOTO', 2 );
public $identities;
public $is_mobile;
public $is_tablet;
-
+ public $performance = array();
+
public $nav_sel;
public $category;
private $cached_profile_image;
private $cached_profile_picdate;
-
+
function __construct() {
global $default_timezone, $argv, $argc;
date_default_timezone_set($this->timezone);
+ $this->performance["start"] = microtime(true);
+ $this->performance["database"] = 0;
+ $this->performance["network"] = 0;
+ $this->performance["rendering"] = 0;
+ $this->performance["parser"] = 0;
+ $this->performance["marktime"] = 0;
+ $this->performance["markstart"] = microtime(true);
+
$this->config = array();
$this->page = array();
$this->pager= array();
return $this->rdelim[$engine];
}
+ function save_timestamp($stamp, $value) {
+ $duration = (float)(microtime(true)-$stamp);
+
+ $this->performance[$value] += (float)$duration;
+ $this->performance["marktime"] += (float)$duration;
+ }
+
+ function mark_timestamp($mark) {
+ //$this->performance["markstart"] -= microtime(true) - $this->performance["marktime"];
+ $this->performance["markstart"] = microtime(true) - $this->performance["markstart"] - $this->performance["marktime"];
+ }
}
}
return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
}
+function check_db() {
-// Primarily involved with database upgrade, but also sets the
-// base url for use in cmdline programs which don't have
-// $_SERVER variables, and synchronising the state of installed plugins.
+ $build = get_config('system','build');
+ if(! x($build)) {
+ set_config('system','build',DB_UPDATE_VERSION);
+ $build = DB_UPDATE_VERSION;
+ }
+ if($build != DB_UPDATE_VERSION)
+ proc_run('php', 'include/dbupdate.php');
+
+}
-if(! function_exists('check_config')) {
- function check_config(&$a) {
- $build = get_config('system','build');
- if(! x($build))
- $build = set_config('system','build',DB_UPDATE_VERSION);
+
+// Sets the base url for use in cmdline programs which don't have
+// $_SERVER variables
+
+if(! function_exists('check_url')) {
+ function check_url(&$a) {
$url = get_config('system','url');
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());
+ return;
+ }
+}
+
+
+// Automatic database updates
+
+if(! function_exists('update_db')) {
+ function update_db(&$a) {
+
+ $build = get_config('system','build');
+ if(! x($build))
+ $build = set_config('system','build',DB_UPDATE_VERSION);
if($build != DB_UPDATE_VERSION) {
$stored = intval($build);
}
}
+ return;
+ }
+}
+
+
+if(! function_exists('check_plugins')) {
+ function check_plugins(&$a) {
+
/**
*
* Synchronise plugins:
}
}
- if(get_my_url() && $profile['unkmail'])
+ if( get_my_url() && $profile['unkmail'] && ($profile['uid'] != local_user()) )
$wallmessage = t('Message');
else
$wallmessage = false;
}
-
-
}
+ if ($profile['uid'] == local_user() && !feature_enabled(local_user(),'multi_profiles')) {
+ $profile['edit'] = array($a->get_baseurl(). '/profiles/'.$profile['id'], t('Edit profile'),"", t('Edit profile'));
+ $profile['menu'] = array(
+ 'chg_photo' => t('Change profile photo'),
+ 'cr_new' => null,
+ 'entries' => array(),
+ );
+ }
if($a->theme['template_engine'] === 'internal')
$location = template_escape($location);
+
$tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array(
'$profile' => $p,
return $ret;
}
+function explode_querystring($query) {
+ $arg_st = strpos($query, '?');
+ if($arg_st !== false) {
+ $base = substr($query, 0, $arg_st);
+ $arg_st += 1;
+ }
+ else {
+ $base = '';
+ $arg_st = 0;
+ }
+
+ $args = explode('&', substr($query, $arg_st));
+ foreach($args as $k=>$arg) {
+ if($arg === '')
+ unset($args[$k]);
+ }
+ $args = array_values($args);
+
+ if(!$base) {
+ $base = $args[0];
+ unset($args[0]);
+ $args = array_values($args);
+ }
+
+ return array(
+ 'base' => $base,
+ 'args' => $args,
+ );
+}
+
/**
* Returns the complete URL of the current page, e.g.: http(s)://something.com/network
*