require_once('library/Mobile_Detect/Mobile_Detect.php');
require_once('include/features.php');
+require_once('update.php');
+require_once('include/dbstructure.php');
+
define ( 'FRIENDICA_PLATFORM', 'Friendica');
-define ( 'FRIENDICA_VERSION', '3.2.1753' );
+define ( 'FRIENDICA_CODENAME', 'Ginger');
+define ( 'FRIENDICA_VERSION', '3.3.3-RC' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
-define ( 'DB_UPDATE_VERSION', 1173 );
+define ( 'DB_UPDATE_VERSION', 1180 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'PAGE_BLOG', 4 );
define ( 'PAGE_PRVGROUP', 5 );
+// Type of the community page
+define ( 'CP_NO_COMMUNITY_PAGE', -1 );
+define ( 'CP_USERS_ON_SERVER', 0 );
+define ( 'CP_GLOBAL_COMMUNITY', 1 );
+
/**
* Network and protocol family types
*/
function __construct() {
- global $default_timezone, $argv, $argc;
+ global $default_timezone;
$hostname = "";
if ($hostname != "")
$this->hostname = $hostname;
- if (is_array($argv) && $argc>1 && substr(end($argv), 0, 4)=="http" ) {
- $this->set_baseurl(array_pop($argv) );
- $argc --;
+ if (is_array($_SERVER["argv"]) && $_SERVER["argc"]>1 && substr(end($_SERVER["argv"]), 0, 4)=="http" ) {
+ $this->set_baseurl(array_pop($_SERVER["argv"]) );
+ $_SERVER["argc"] --;
}
- set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path());
+ #set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path());
if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,9) === "pagename=") {
$this->query_string = substr($_SERVER['QUERY_STRING'],9);
if (substr($this->query_string, 0, 1) == "/")
$this->query_string = substr($this->query_string, 1);
}
+
if (x($_GET,'pagename'))
$this->cmd = trim($_GET['pagename'],'/\\');
elseif (x($_GET,'q'))
$this->cmd = trim($_GET['q'],'/\\');
+
+ // fix query_string
+ $this->query_string = str_replace($this->cmd."&",$this->cmd."?", $this->query_string);
+
+
// unix style "homedir"
if(substr($this->cmd,0,1) === '~')
- $this->cmd = 'profile/' . substr($this->cmd,1);
+ $this->cmd = 'profile/' . substr($this->cmd,1);
// Diaspora style profile url
if(substr($this->cmd,0,2) === 'u/')
$this->cmd = 'profile/' . substr($this->cmd,2);
+
/**
*
* Break the URL path into C style argc/argv style arguments for our
return($basepath);
}
+ function get_scheme() {
+ return($this->scheme);
+ }
+
function get_baseurl($ssl = false) {
$scheme = $this->scheme;
}
}
+ if (get_config('config','hostname') != "")
+ $this->hostname = get_config('config','hostname');
+
$this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
return $this->baseurl;
}
if (file_exists(".htpreconfig.php"))
@include(".htpreconfig.php");
- $this->hostname = $hostname;
+ if (get_config('config','hostname') != "")
+ $this->hostname = get_config('config','hostname');
+
+ if (!isset($this->hostname) OR ($this->hostname == ""))
+ $this->hostname = $hostname;
}
}
function get_hostname() {
+ if (get_config('config','hostname') != "")
+ $this->hostname = get_config('config','hostname');
+
return $this->hostname;
}
}
function get_useragent() {
- return(FRIENDICA_PLATFORM." ".FRIENDICA_VERSION."-".DB_UPDATE_VERSION."; ".$this->get_baseurl());
+ return(FRIENDICA_PLATFORM." '".FRIENDICA_CODENAME."' ".FRIENDICA_VERSION."-".DB_UPDATE_VERSION."; ".$this->get_baseurl());
}
}
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);
$current = intval(DB_UPDATE_VERSION);
- if(($stored < $current) && file_exists('update.php')) {
-
+ if($stored < $current) {
load_config('database');
// We're reporting a different version than what is currently installed.
// Run any existing update scripts to bring the database up to current.
- require_once('update.php');
-
// make sure that boot.php and update.php are the same release, we might be
// updating right this very second and the correct version of the update.php
// file may not be here yet. This can happen on a very busy site.
if(DB_UPDATE_VERSION == UPDATE_VERSION) {
-
// Compare the current structure with the defined structure
$t = get_config('database','dbupdate_'.DB_UPDATE_VERSION);
set_config('database','dbupdate_'.DB_UPDATE_VERSION, time());
- require_once("include/dbstructure.php");
+ // run old update routine (wich could modify the schema and
+ // conflits with new routine)
+ for ($x = $stored; $x < NEW_UPDATE_ROUTINE_VERSION; $x++) {
+ $r = run_update_function($x);
+ if (!$r) break;
+ }
+ if ($stored < NEW_UPDATE_ROUTINE_VERSION) $stored = NEW_UPDATE_ROUTINE_VERSION;
+
+
+ // run new update routine
+ // it update the structure in one call
$retval = update_structure(false, true);
if($retval) {
update_fail(
DB_UPDATE_VERSION,
- sprintf(t('Update %s failed. See error logs.'), DB_UPDATE_VERSION)
+ $retval
);
- break;
+ return;
} else {
set_config('database','dbupdate_'.DB_UPDATE_VERSION, 'success');
}
+ // run any left update_nnnn functions in update.php
for($x = $stored; $x < $current; $x ++) {
- if(function_exists('update_' . $x)) {
-
- // There could be a lot of processes running or about to run.
- // We want exactly one process to run the update command.
- // So store the fact that we're taking responsibility
- // after first checking to see if somebody else already has.
-
- // If the update fails or times-out completely you may need to
- // delete the config entry to try again.
-
- $t = get_config('database','update_' . $x);
- if($t !== false)
- break;
- set_config('database','update_' . $x, time());
-
- // call the specific update
-
- $func = 'update_' . $x;
- $retval = $func();
- if($retval) {
- //send the administrator an e-mail
- update_fail(
- $x,
- sprintf(t('Update %s failed. See error logs.'), $x)
- );
- break;
- } else {
- set_config('database','update_' . $x, 'success');
- set_config('system','build', $x + 1);
- }
- } else {
- set_config('database','update_' . $x, 'success');
- set_config('system','build', $x + 1);
- }
+ $r = run_update_function($x);
+ if (!$r) break;
}
}
}
return;
}
}
+if(!function_exists('run_update_function')){
+ function run_update_function($x) {
+ if(function_exists('update_' . $x)) {
+
+ // There could be a lot of processes running or about to run.
+ // We want exactly one process to run the update command.
+ // So store the fact that we're taking responsibility
+ // after first checking to see if somebody else already has.
+
+ // If the update fails or times-out completely you may need to
+ // delete the config entry to try again.
+
+ $t = get_config('database','update_' . $x);
+ if($t !== false)
+ return false;
+ set_config('database','update_' . $x, time());
+
+ // call the specific update
+
+ $func = 'update_' . $x;
+ $retval = $func();
+
+ if($retval) {
+ //send the administrator an e-mail
+ update_fail(
+ $x,
+ sprintf(t('Update %s failed. See error logs.'), $x)
+ );
+ return false;
+ } else {
+ set_config('database','update_' . $x, 'success');
+ set_config('system','build', $x + 1);
+ return true;
+ }
+ } else {
+ set_config('database','update_' . $x, 'success');
+ set_config('system','build', $x + 1);
+ return true;
+ }
+ return true;
+ }
+}
if(! function_exists('check_plugins')) {
if(! function_exists('profile_load')) {
function profile_load(&$a, $nickname, $profile = 0, $profiledata = array()) {
- $user = q("select uid from user where nickname = '%s' limit 1",
+ $user = q("SELECT `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1",
dbesc($nickname)
);
- if(! ($user && count($user))) {
+ if(!$user && count($user) && !count($profiledata)) {
logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
notice( t('Requested account is not available.') . EOL );
$a->error = 404;
intval($profile_int)
);
}
- if((! $r) && (! count($r))) {
+ if((!$r) && (!count($r))) {
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `user`.* FROM `profile`
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 and `contact`.`self` = 1 LIMIT 1",
);
}
- if(($r === false) || (! count($r))) {
+ if(($r === false) || (!count($r)) && !count($profiledata)) {
logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
notice( t('Requested profile is not available.') . EOL );
$a->error = 404;
// fetch user tags if this isn't the default profile
- if(! $r[0]['is-default']) {
+ if(!$r[0]['is-default']) {
$x = q("select `pub_keywords` from `profile` where uid = %d and `is-default` = 1 limit 1",
intval($r[0]['profile_uid'])
);
$homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
+ $about = ((x($profile,'about') == 1) ? t('About:') : False);
+
if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) {
- $location = $pdesc = $gender = $marital = $homepage = False;
+ $location = $pdesc = $gender = $marital = $homepage = $about = False;
}
$firstname = ((strpos($profile['name'],' '))
if (!$block){
$contact_block = contact_block();
- }
+ if(is_array($a->profile) AND !$a->profile['hide-friends']) {
+ $r = q("SELECT `gcontact`.`updated` FROM `contact` INNER JOIN `gcontact` WHERE `gcontact`.`nurl` = `contact`.`nurl` AND `self` AND `uid` = %d LIMIT 1",
+ intval($a->profile['uid']));
+ if(count($r))
+ $updated = date("c", strtotime($r[0]['updated']));
+
+ $r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 AND `archive` = 0
+ AND `network` IN ('%s', '%s', '%s', '')",
+ intval($profile['uid']),
+ dbesc(NETWORK_DFRN),
+ dbesc(NETWORK_DIASPORA),
+ dbesc(NETWORK_OSTATUS)
+ );
+ if(count($r))
+ $contacts = intval($r[0]['total']);
+ }
+ }
$p = array();
foreach($profile as $k => $v) {
'$pdesc' => $pdesc,
'$marital' => $marital,
'$homepage' => $homepage,
+ '$about' => $about,
'$network' => t('Network:'),
+ '$contacts' => $contacts,
+ '$updated' => $updated,
'$diaspora' => $diaspora,
'$contact_block' => $contact_block,
));
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 ",
+ $r = q("SELECT `id`,`network`,`url`,`thumb` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `thumb` != ''",
intval($uid)
);
if(count($r)) {