diff options
-rw-r--r-- | index.php | 59 | ||||
-rw-r--r-- | modules/gallery/controllers/admin_maintenance.php | 8 | ||||
-rw-r--r-- | modules/gallery/controllers/admin_theme_options.php (renamed from modules/gallery/controllers/admin_theme_details.php) | 6 | ||||
-rw-r--r-- | modules/gallery/controllers/packager.php (renamed from modules/gallery/controllers/package.php) | 10 | ||||
-rw-r--r-- | modules/gallery/controllers/upgrader.php | 29 | ||||
-rw-r--r-- | modules/gallery/views/kohana_error_page.php | 2 | ||||
-rw-r--r-- | modules/gallery/views/permissions_browse.html.php | 2 | ||||
-rw-r--r-- | modules/gallery/views/upgrader.html.php | 16 | ||||
-rw-r--r-- | modules/gallery_unit_test/controllers/gallery_unit_test.php | 7 | ||||
-rw-r--r-- | modules/rss/helpers/rss_theme.php | 16 | ||||
-rw-r--r-- | modules/user/controllers/users.php | 2 | ||||
-rw-r--r-- | themes/default/css/screen.css | 4 |
12 files changed, 109 insertions, 52 deletions
@@ -18,55 +18,64 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ // Set this to true to disable demo/debugging controllers -define('IN_PRODUCTION', true); +define("IN_PRODUCTION", true); // Gallery requires PHP 5.2+ -version_compare(PHP_VERSION, '5.2.3', '<') and exit('Gallery requires PHP 5.2.3 or newer.'); +version_compare(PHP_VERSION, "5.2.3", "<") and exit("Gallery requires PHP 5.2.3 or newer."); // Gallery requires short_tags to be on -!ini_get('short_open_tag') and exit('Gallery requires short_open_tag to be on.'); +!ini_get("short_open_tag") and exit("Gallery requires short_open_tag to be on."); // Set the error reporting level. Use E_ALL unless you have a special need. error_reporting(0); // Disabling display_errors will effectively disable Kohana error display // and logging. You can turn off Kohana errors in application/config/config.php -ini_set('display_errors', false); +ini_set("display_errors", false); -define('EXT', '.php'); -define('DOCROOT', strtr(getcwd() . '/', DIRECTORY_SEPARATOR, '/')); -define('KOHANA', 'index.php'); +define("EXT", ".php"); +define("DOCROOT", getcwd() . "/"); +define("KOHANA", "index.php"); // If the front controller is a symlink, change to the real docroot is_link(basename(__FILE__)) and chdir(dirname(realpath(__FILE__))); // Define application and system paths -define('APPPATH', strtr(realpath('application') . '/', DIRECTORY_SEPARATOR, '/')); -define('MODPATH', strtr(realpath('modules') . '/', DIRECTORY_SEPARATOR, '/')); -define('THEMEPATH', strtr(realpath('themes') . '/', DIRECTORY_SEPARATOR, '/')); -define('SYSPATH', strtr(realpath('system') . '/', DIRECTORY_SEPARATOR, '/')); +define("APPPATH", realpath("application") . "/"); +define("MODPATH", realpath("modules") . "/"); +define("THEMEPATH", realpath("themes") . "/"); +define("SYSPATH", realpath("system") . "/"); -// Force a test run if we're in command line mode. -if (PHP_SAPI == 'cli') { - if ($_SERVER['argv'][1] != "package") { - array_splice($_SERVER['argv'], 1, 0, 'gallery_unit_test'); - define('TEST_MODE', 1); - @mkdir('test/var/logs', 0777, true); - define('VARPATH', strtr(realpath('test/var') . '/', DIRECTORY_SEPARATOR, '/')); +// We only accept a few controllers on the command line +if (PHP_SAPI == "cli") { + switch ($arg_1 = $_SERVER["argv"][1]) { + case "upgrade": + case "package": + $_SERVER["argv"] = array("index.php", "{$arg_1}r/$arg_1"); + define("TEST_MODE", 0); + define("VARPATH", realpath("var") . "/"); + break; + + case "test": + array_splice($_SERVER["argv"], 1, 1, "gallery_unit_test"); + define("TEST_MODE", 1); + @mkdir("test/var/logs", 0777, true); + define("VARPATH", realpath("test/var") . "/"); @copy("var/database.php", VARPATH . "database.php"); - } else { - define('TEST_MODE', 0); - define('VARPATH', strtr(realpath('var') . '/', DIRECTORY_SEPARATOR, '/')); + + default: + print "Usage: php index.php { upgrade | package | test }\n"; + exit(1); } } else { - define('TEST_MODE', 0); - define('VARPATH', strtr(realpath('var') . '/', DIRECTORY_SEPARATOR, '/')); + define("TEST_MODE", 0); + define("VARPATH", realpath("var") . "/"); } -define('TMPPATH', VARPATH . '/tmp/'); +define("TMPPATH", VARPATH . "/tmp/"); if (file_exists("local.php")) { include("local.php"); } // Initialize. -require SYSPATH . 'core/Bootstrap' . EXT; +require SYSPATH . "core/Bootstrap" . EXT; diff --git a/modules/gallery/controllers/admin_maintenance.php b/modules/gallery/controllers/admin_maintenance.php index c169de75..7c5934a3 100644 --- a/modules/gallery/controllers/admin_maintenance.php +++ b/modules/gallery/controllers/admin_maintenance.php @@ -61,7 +61,7 @@ class Admin_Maintenance_Controller extends Admin_Controller { log::info("tasks", t("Task %task_name started (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id)), - html::anchor(url::site("admin/maintenance"), t("maintenance"))); + html::anchor("admin/maintenance", t("maintenance"))); print $view; } @@ -81,7 +81,7 @@ class Admin_Maintenance_Controller extends Admin_Controller { log::info("tasks", t("Task %task_name resumed (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id)), - html::anchor(url::site("admin/maintenance"), t("maintenance"))); + html::anchor("admin/maintenance", t("maintenance"))); print $view; } @@ -152,14 +152,14 @@ class Admin_Maintenance_Controller extends Admin_Controller { case "success": log::success("tasks", t("Task %task_name completed (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id)), - html::anchor(url::site("admin/maintenance"), t("maintenance"))); + html::anchor("admin/maintenance", t("maintenance"))); message::success(t("Task completed successfully")); break; case "error": log::error("tasks", t("Task %task_name failed (task id %task_id)", array("task_name" => $task->name, "task_id" => $task->id)), - html::anchor(url::site("admin/maintenance"), t("maintenance"))); + html::anchor("admin/maintenance", t("maintenance"))); message::success(t("Task failed")); break; } diff --git a/modules/gallery/controllers/admin_theme_details.php b/modules/gallery/controllers/admin_theme_options.php index 97696df5..2716ed93 100644 --- a/modules/gallery/controllers/admin_theme_details.php +++ b/modules/gallery/controllers/admin_theme_options.php @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class Admin_Theme_Details_Controller extends Admin_Controller { +class Admin_Theme_Options_Controller extends Admin_Controller { public function index() { $view = new Admin_View("admin.html"); - $view->content = new View("admin_theme_details.html"); + $view->content = new View("admin_theme_options.html"); $view->content->form = theme::get_edit_form_admin(); print $view; } @@ -58,7 +58,7 @@ class Admin_Theme_Details_Controller extends Admin_Controller { module::set_var("gallery", "footer_text", $form->edit_theme->footer_text->value); message::success(t("Updated theme details")); - url::redirect("admin/theme_details"); + url::redirect("admin/theme_options"); } else { $view = new Admin_View("admin.html"); $view->content = $form; diff --git a/modules/gallery/controllers/package.php b/modules/gallery/controllers/packager.php index f5146fc8..da0a7983 100644 --- a/modules/gallery/controllers/package.php +++ b/modules/gallery/controllers/packager.php @@ -17,12 +17,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class Package_Controller extends Controller { - function index() { - if (PHP_SAPI != 'cli') { - Kohana::show_404(); +class Packager_Controller extends Controller { + function package() { + if (PHP_SAPI != "cli") { + access::forbidden(); } + $_SERVER["HTTP_HOST"] = "example.com"; + try { $this->_reset(); // empty and reinstall the standard modules $this->_dump_database(); // Dump the database diff --git a/modules/gallery/controllers/upgrader.php b/modules/gallery/controllers/upgrader.php index 0d5bb4f6..5eb96fdd 100644 --- a/modules/gallery/controllers/upgrader.php +++ b/modules/gallery/controllers/upgrader.php @@ -19,20 +19,33 @@ */ class Upgrader_Controller extends Controller { public function index() { - // Todo: give the admin a chance to log in here - if (!user::active()->admin) { - access::forbidden(); + $session = Session::instance(); + + // Make sure we have an upgrade token + if (!($upgrade_token = $session->get("upgrade_token", null))) { + $session->set("upgrade_token", $upgrade_token = md5(rand())); + } + + // If the upgrade token exists, then bless this session + if (file_exists(TMPPATH . $upgrade_token)) { + $session->set("can_upgrade", true); + @unlink(TMPPATH . $upgrade_token); } $view = new View("upgrader.html"); + $view->can_upgrade = user::active()->admin || $session->get("can_upgrade"); + $view->upgrade_token = $upgrade_token; $view->available = module::available(); $view->done = Input::instance()->get("done"); print $view; } public function upgrade() { - // Todo: give the admin a chance to log in here - if (!user::active()->admin) { + if (php_sapi_name() == "cli") { + // @todo this may screw up some module installers, but we don't have a better answer at + // this time. + $_SERVER["HTTP_HOST"] = "example.com"; + } else if (!user::active()->admin && !Session::instance()->get("can_upgrade", false)) { access::forbidden(); } @@ -51,6 +64,10 @@ class Upgrader_Controller extends Controller { } } - url::redirect("upgrader?done=1"); + if (php_sapi_name() == "cli") { + print "Upgrade complete\n"; + } else { + url::redirect("upgrader?done=1"); + } } } diff --git a/modules/gallery/views/kohana_error_page.php b/modules/gallery/views/kohana_error_page.php index d9bf9698..6bf48549 100644 --- a/modules/gallery/views/kohana_error_page.php +++ b/modules/gallery/views/kohana_error_page.php @@ -59,7 +59,7 @@ </head> <body> <? try { $user = user::active(); } catch (Exception $e) { } ?> - <? $admin = isset($user) && $user->admin ?> + <? $admin = php_sapi_name() == "cli" || isset($user) && $user->admin ?> <div class="big_box" id="framework_error"> <h1> <?= t("Dang... Something went wrong!") ?> diff --git a/modules/gallery/views/permissions_browse.html.php b/modules/gallery/views/permissions_browse.html.php index 8bb2e830..36394877 100644 --- a/modules/gallery/views/permissions_browse.html.php +++ b/modules/gallery/views/permissions_browse.html.php @@ -27,7 +27,7 @@ <? if (!$htaccess_works): ?> <ul id="gMessage"> <li class="gError"> - <?= t("Oh no! Your server needs a configuration change in order for you to hide photos! Ask your server administrator to set <a %attrs><i>AllowOverride FileInfo Options</i></a> to fix this.", array("attrs" => "href=\"http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride\" target=\"_blank\"")) ?> + <?= t("Oh no! Your server needs a configuration change in order for you to hide photos! Ask your server administrator to enable <a %mod_rewrite_attrs>mod_rewrite</a> and set <a %apache_attrs><i>AllowOverride FileInfo Options</i></a> to fix this.", array("mod_rewrite_attrs" => "href=\"http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html\" target=\"_blank\"", "apache_attrs" => "href=\"http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride\" target=\"_blank\"")) ?> </li> </ul> <? endif ?> diff --git a/modules/gallery/views/upgrader.html.php b/modules/gallery/views/upgrader.html.php index 6b9a0110..fa21e196 100644 --- a/modules/gallery/views/upgrader.html.php +++ b/modules/gallery/views/upgrader.html.php @@ -9,6 +9,9 @@ font-family: Trebuchet MS; font-size: 1.1em; } + h1 { + font-size: 1.4em; + } div#outer { width: 650px; background: white; @@ -93,11 +96,17 @@ .gray_on_done { opacity: <?= $done ? "0.5" : "1" ?>; } + pre { + display: inline; + margin: 0px; + padding: 0px; + } </style> <body> <div id="outer"> <img src="<?= url::file("modules/gallery/images/gallery.png") ?>" /> <div id="inner"> + <? if ($can_upgrade): ?> <? if ($done): ?> <div id="confirmation"> <div> @@ -158,6 +167,13 @@ <? endforeach ?> </p> <? endif ?> + <? else: // can_upgrade ?> + <h1> <?= t("Who are you?") ?> </h1> + <p> + <?= t("You're not logged in as an administrator, so we have to verify you to make sure it's ok for you to do an upgrade. To prove you can run an upgrade, create a file called %name in your <b>gallery3/var/tmp</b> directory.", array("name" => "<br/><b>$upgrade_token</b>")) ?> + </p> + <a href="<?= url::site("upgrader?") ?>"><?= t("Ok, I've done that") ?></a> + <? endif // can_upgrade ?> </div> <div id="footer"> <p> diff --git a/modules/gallery_unit_test/controllers/gallery_unit_test.php b/modules/gallery_unit_test/controllers/gallery_unit_test.php index 56220a19..8f3353dc 100644 --- a/modules/gallery_unit_test/controllers/gallery_unit_test.php +++ b/modules/gallery_unit_test/controllers/gallery_unit_test.php @@ -23,6 +23,13 @@ class Gallery_Unit_Test_Controller extends Controller { print Kohana::show_404(); } + // Jump through some hoops to satisfy the way that we check for the site_domain in + // config.php. We structure this such that the code in config will leave us with a + // site_domain of "." (for historical reasons) + // @todo: for tests, we should force the site_domain to something like example.com + $_SERVER["SCRIPT_FILENAME"] = "index.php"; + $_SERVER["SCRIPT_NAME"] = "./index.php"; + $original_config = DOCROOT . "var/database.php"; $test_config = VARPATH . "database.php"; if (!file_exists($original_config)) { diff --git a/modules/rss/helpers/rss_theme.php b/modules/rss/helpers/rss_theme.php index d47d3313..54bba210 100644 --- a/modules/rss/helpers/rss_theme.php +++ b/modules/rss/helpers/rss_theme.php @@ -40,12 +40,16 @@ class rss_theme_Core { $block->css_id = "gRss"; $block->title = t("Available RSS Feeds"); $block->content = new View("rss_block.html"); - $block->content->feeds = array( - t("New photos or movies") => url::site("rss/updates"), - t("All new comments") => url::site("rss/comments"), - sprintf(t("Comments on %s"), - $theme->item()->title) => url::site("rss/comments/{$theme->item()->id}") - ); + // @todo consider pushing the code for the feeds back to the associated modules + // and create an event 'generate_rss_feeds' that modules can respond to create + // the list of feeds. + $feeds = array(t("New photos or movies") => url::site("rss/updates")); + if (module::is_active("comment")) { + $feeds[t("All new comments")] = url::site("rss/comments"); + $feeds[sprintf(t("Comments on %s"), $theme->item()->title)] = + url::site("rss/comments/{$theme->item()->id}"); + } + $block->content->feeds = $feeds; return $block; } } diff --git a/modules/user/controllers/users.php b/modules/user/controllers/users.php index f28f598a..46f799c5 100644 --- a/modules/user/controllers/users.php +++ b/modules/user/controllers/users.php @@ -33,12 +33,14 @@ class Users_Controller extends REST_Controller { $user->password = $form->edit_user->password->value; } $user->email = $form->edit_user->email->value; + $user->url = $form->edit_user->url->value; if ($form->edit_user->locale) { $desired_locale = $form->edit_user->locale->value; $user->locale = $desired_locale == "none" ? null : $desired_locale; } $user->save(); + message::success(t("User information updated.")); print json_encode( array("result" => "success", "resource" => url::site("users/{$user->id}"))); diff --git a/themes/default/css/screen.css b/themes/default/css/screen.css index f306f287..03c13cc1 100644 --- a/themes/default/css/screen.css +++ b/themes/default/css/screen.css @@ -92,11 +92,11 @@ a:hover, margin: .3em 1em; } -.rtl #gDialog .gCancel { +#gForgotPasswordLink, .rtl #gDialog .gCancel { float: right; } -.rtl #gForgotPasswordLink { +#gDialog .gCancel, .rtl #gForgotPasswordLink { float: left; } |