]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - index.php
Check that 'dl' function is available and usable before trying to call it with error...
[quix0rs-gnu-social.git] / index.php
index 5f13064dabe8b070547d147c537c243821c92f98..72ceb45df27fd0df0f44802efc9a3cdff3fbe5c9 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,7 +1,7 @@
 <?php
 /**
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, Control Yourself, Inc.
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
@@ -18,7 +18,8 @@
  */
 
 define('INSTALLDIR', dirname(__FILE__));
-define('LACONICA', true);
+define('STATUSNET', true);
+define('LACONICA', true); // compatibility
 
 require_once INSTALLDIR . '/lib/common.php';
 
@@ -73,7 +74,7 @@ function handleError($error)
     exit(-1);
 }
 
-function checkMirror($action_obj)
+function checkMirror($action_obj, $args)
 {
     global $config;
 
@@ -93,7 +94,7 @@ function checkMirror($action_obj)
         // on the master DB
 
         $config['db']['database_rw'] = $config['db']['database'];
-        $config['db']['ini_rw'] = INSTALLDIR.'/classes/laconica.ini';
+        $config['db']['ini_rw'] = INSTALLDIR.'/classes/statusnet.ini';
 
         foreach ($alwaysRW as $table) {
             $config['db']['table_'.$table] = 'rw';
@@ -182,12 +183,36 @@ function main()
     // If the site is private, and they're not on one of the "public"
     // parts of the site, redirect to login
 
-    if (!$user && common_config('site', 'private') &&
-        !in_array($action, array('login', 'openidlogin', 'finishopenidlogin',
-                                 'recoverpassword', 'api', 'doc', 'register')) &&
-        !preg_match('/rss$/', $action)) {
-        common_redirect(common_local_url('login'));
-        return;
+    if (!$user && common_config('site', 'private')) {
+        $public_actions = array('openidlogin', 'finishopenidlogin',
+                                'recoverpassword', 'api', 'doc',
+                                'opensearch');
+        $login_action = 'openidlogin';
+        if (!common_config('site', 'openidonly')) {
+            $public_actions[] = 'login';
+            $public_actions[] = 'register';
+            $login_action = 'login';
+        }
+        if (!in_array($action, $public_actions) &&
+            !preg_match('/rss$/', $action)) {
+
+            // set returnto
+            $rargs =& common_copy_args($args);
+            unset($rargs['action']);
+            if (common_config('site', 'fancy')) {
+                unset($rargs['p']);
+            }
+            if (array_key_exists('submit', $rargs)) {
+                unset($rargs['submit']);
+            }
+            foreach (array_keys($_COOKIE) as $cookie) {
+                unset($rargs[$cookie]);
+            }
+            common_set_returnto(common_local_url($action, $rargs));
+
+            common_redirect(common_local_url($login_action));
+            return;
+        }
     }
 
     $action_class = ucfirst($action).'Action';
@@ -198,11 +223,11 @@ function main()
     } else {
         $action_obj = new $action_class();
 
-        checkMirror($action_obj);
+        checkMirror($action_obj, $args);
 
         try {
             if ($action_obj->prepare($args)) {
-                $action_obj->handle($args);
+                $action_obj->handleWrapper($args);
             }
         } catch (ClientException $cex) {
             $cac = new ClientErrorAction($cex->getMessage(), $cex->getCode());