1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213:
<?php
$plugin_is_filter = 1000 | ADMIN_PLUGIN | FEATURE_PLUGIN;
$plugin_description = gettext('Utility to divert access to the gallery to a screen saying the site is upgrading.');
$plugin_author = "Stephen Billard (sbillard)";
$plugin_notice = (MOD_REWRITE) ? false : gettext('<em>mod_rewrite</em> is not enabled. This plugin may not work without rewrite redirection if the upgrade is significantly different than the running release.');
$plugin_category = gettext('Admin');
switch (OFFSET_PATH) {
case 0:
$state = @$_zp_conf_vars['site_upgrade_state'];
if ((!zp_loggedin(ADMIN_RIGHTS) && $state == 'closed_for_test') || $state == 'closed') {
if (isset($_zp_conf_vars['special_pages']['page']['rewrite'])) {
$page = $_zp_conf_vars['special_pages']['page']['rewrite'];
} else {
$page = 'page';
}
if (!preg_match('~' . preg_quote($page) . '/setup_set-mod_rewrite\?z=setup$~', $_SERVER['REQUEST_URI'])) {
redirectURL(WEBPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/closed.php', '302');
}
}
break;
default:
zp_register_filter('admin_utilities_buttons', 'site_upgrade_button');
zp_register_filter('installation_information', 'site_upgrade_status');
function site_upgrade_status() {
global $_zp_conf_vars;
switch (@$_zp_conf_vars['site_upgrade_state']) {
case 'closed':
?>
<li>
<?php echo gettext('Site status:'); ?> <span style="color:RED"><strong><?php echo gettext('The site is closed!'); ?></strong></span>
</li>
<?php
break;
case 'closed_for_test';
?>
<li>
<?php echo gettext('Site status:'); ?> <span style="color:RED"><strong><?php echo gettext('The site is in test mode!'); ?></strong></span>
</li>
<?php
break;
default:
?>
<li>
<?php echo gettext('Site status:'); ?> <strong><?php echo gettext('The site is opened'); ?></strong>
</li>
<?php
break;
}
}
function site_upgrade_button($buttons) {
global $_zp_conf_vars;
$ht = @file_get_contents(SERVERPATH . '/.htaccess');
preg_match('|[# ][ ]*RewriteRule(.*)plugins/site_upgrade/closed|', $ht, $matches);
if (!$matches || strpos($matches[0], '#') === 0) {
$state = @$_zp_conf_vars['site_upgrade_state'];
} else {
$state = 'closed';
}
$buttons[] = array(
'XSRFTag' => 'site_upgrade_refresh',
'category' => gettext('Admin'),
'enable' => true,
'button_text' => gettext('Restore site_upgrade files'),
'formname' => 'refreshHTML',
'action' => FULLWEBPATH . '/' . ZENFOLDER . '/admin.php',
'icon' => FULLWEBPATH . '/' . ZENFOLDER . '/images/refresh.png',
'title' => gettext('Restores the files in the "plugins/site_upgrade" folder to their default state. Note: this will overwrite any custom edits you may have made.'),
'alt' => '',
'hidden' => '<input type="hidden" name="refreshHTML" value="1" />',
'rights' => ADMIN_RIGHTS
);
switch ($state) {
case 'closed':
$buttons[] = array(
'XSRFTag' => 'site_upgrade',
'category' => gettext('Admin'),
'enable' => true,
'button_text' => gettext('Site » test mode'),
'formname' => 'site_upgrade.php',
'action' => FULLWEBPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/site_upgrade/site_upgrade.php',
'icon' => FULLWEBPATH . '/' . ZENFOLDER . '/images/lock_open.png',
'title' => gettext('Make the site available for viewing administrators only.'),
'alt' => '',
'hidden' => '<input type="hidden" name="siteState" value="closed_for_test" />',
'rights' => ADMIN_RIGHTS
);
break;
case 'closed_for_test':
$buttons[] = array(
'XSRFTag' => 'site_upgrade',
'category' => gettext('Admin'),
'enable' => true,
'button_text' => gettext('Site » open'),
'formname' => 'site_upgrade.php',
'action' => FULLWEBPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/site_upgrade/site_upgrade.php',
'icon' => FULLWEBPATH . '/' . ZENFOLDER . '/images/lock.png',
'title' => gettext('Make site available for viewing.'),
'alt' => '',
'hidden' => '<input type="hidden" name="siteState" value="open" />',
'rights' => ADMIN_RIGHTS
);
break;
default:
$buttons[] = array(
'XSRFTag' => 'site_upgrade',
'category' => gettext('Admin'),
'enable' => true,
'button_text' => gettext('Site » close'),
'formname' => 'site_upgrade.php',
'action' => FULLWEBPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/site_upgrade/site_upgrade.php',
'icon' => FULLWEBPATH . '/' . ZENFOLDER . '/images/lock.png',
'title' => gettext('Make site unavailable for viewing by redirecting to the "closed.html" page.'),
'alt' => '',
'hidden' => '<input type="hidden" name="siteState" value="closed" />',
'rights' => ADMIN_RIGHTS
);
break;
}
return $buttons;
}
if (isset($_REQUEST['refreshHTML'])) {
XSRFdefender('site_upgrade_refresh');
$_GET['report'] = gettext('site_upgrade files Restored to original.');
} else {
break;
}
case 2:
mkdir_recursive(SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/', FOLDER_MOD);
copy(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/site_upgrade/closed.php', SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/closed.php');
if (isset($_REQUEST['refreshHTML']) || !file_exists(SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/closed.htm')) {
$html = file_get_contents(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/site_upgrade/closed.htm');
$html = sprintf($html, sprintf(gettext('%s upgrade'), $_zp_gallery->getTitle()), FULLWEBPATH . '/' . ZENFOLDER . '/images/zen-logo.png', sprintf(gettext('<strong><em>%s</em></strong> is undergoing an upgrade'), $_zp_gallery->getTitle()), '<a href="' . FULLWEBPATH . '/index.php">' . gettext('Please return later') . '</a>', FULLWEBPATH . '/index.php');
file_put_contents(SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/closed.htm', $html);
}
if (isset($_REQUEST['refreshHTML']) || !file_exists(SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/rss_closed.xml')) {
require_once(SERVERPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/rss.php');
class setupRSS extends RSS {
public function getitems() {
$this->feedtype = 'setup';
$items = array();
$items[] = array('title' => gettext('RSS suspended'),
'link' => '',
'enclosure' => '',
'category' => '',
'media_content' => '',
'media_thumbnail' => '',
'pubdate' => date("r", time()),
'desc' => gettext('The RSS feed is currently not available.'));
return $items;
}
protected function startCache() {
}
protected function endCache() {
}
}
$obj = new setupRSS(array('rss' => 'site_closed'));
ob_start();
$obj->printFeed();
$xml = ob_get_contents();
ob_end_clean();
file_put_contents(SERVERPATH . '/' . USER_PLUGIN_FOLDER . '/site_upgrade/rss-closed.xml', $xml);
}
setOptionDefault('zp_plugin_site_upgrade', $plugin_is_filter);
break;
}
?>