diff options
Diffstat (limited to 'mod/home.php')
-rw-r--r-- | mod/home.php | 90 |
1 files changed, 73 insertions, 17 deletions
diff --git a/mod/home.php b/mod/home.php index 1bb0148d2..862f6303c 100644 --- a/mod/home.php +++ b/mod/home.php @@ -1,6 +1,9 @@ <?php -if(! function_exists('home_init')) { +require_once('include/items.php'); +require_once('include/conversation.php'); + + function home_init(&$a) { $ret = array(); @@ -8,35 +11,88 @@ function home_init(&$a) { $channel = $a->get_channel(); - if(local_user() && $channel && $channel['xchan_url']) - goaway( $channel['xchan_url']); + if(local_user() && $channel && $channel['xchan_url']) { + $dest = $channel['channel_startpage']; + if(! $dest) + $dest = get_pconfig(local_user(),'system','startpage'); + if(! $dest) + $dest = z_root() . '/apps'; + + goaway($dest); + } if(get_account_id()) { - goaway('new_channel'); + goaway(z_root() . '/new_channel'); } -}} +} -if(! function_exists('home_content')) { function home_content(&$a) { $o = ''; if(x($_SESSION,'theme')) unset($_SESSION['theme']); - if(x($_SESSION,'mobile-theme')) - unset($_SESSION['mobile-theme']); + if(x($_SESSION,'mobile_theme')) + unset($_SESSION['mobile_theme']); - $o .= '<h1>' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '</h1>'; - if(file_exists('home.html')) - $o .= file_get_contents('home.html'); + $channel_address = get_config("system", "site_channel" ); + if ($channel_address){ - $o .= login(($a->config['system']['register_policy'] == REGISTER_CLOSED) ? 0 : 1); - - call_hooks("home_content",$o); - - return $o; + // We can do better, but until we figure out auto-linkification, let's keep things simple + + $page_id = 'home'; + + $u = q("select channel_id from channel where channel_address = '%s' limit 1", + dbesc($channel_address) + ); + + if(! $u) { + notice( t('Channel not found.') . EOL); + return; + } + + $r = q("select item.* from item left join item_id on item.id = item_id.iid + where item.uid = %d and sid = '%s' and service = 'WEBPAGE' and + item_restrict = %d limit 1", + intval($u[0]['channel_id']), + dbesc($page_id), + intval(ITEM_WEBPAGE) + ); + if(! $r) { + notice( t('Item not found.') . EOL); + return; + } + + xchan_query($r); + $r = fetch_post_tags($r,true); + $a->profile = array('profile_uid' => $u[0]['channel_id']); + $o .= prepare_page($r[0]); + return $o; + } + + if(get_config('system','projecthome')) { + $o .= file_get_contents('assets/home.html'); + $a->page['template'] = 'full'; + return $o; + } + + if(file_exists('home.html')) { + $o .= file_get_contents('home.html'); + } + else { + + // If there's no site channel or home contents configured, fallback to the old behaviour + + $sitename = get_config('system','sitename'); + if($sitename) + $o .= '<h1>' . sprintf( t("Welcome to %s") ,$sitename) . '</h1>'; + if (! $a->config['system']['no_login_on_homepage']) + $o .= login(($a->config['system']['register_policy'] == REGISTER_CLOSED) ? 0 : 1); + } -}} + call_hooks('home_content',$o); + return $o; +} |