Version 4.3.0
This commit is contained in:
1 parent
96997ddd8e
commit
fe1acf984a
1349 files changed
+116159
-67711
No files matched your search
@@ -95,7 +95,8 @@ class IPSUtf8
|
||||
*/
|
||||
public static function errorHandler( $errno, $errstr, $errfile, $errline, $trace=NULL )
|
||||
{
|
||||
if ( in_array( $errno, array( E_NOTICE ) ) )
|
||||
/* We don't care about these in production */
|
||||
if ( in_array( $errno, array( E_WARNING, E_NOTICE, E_STRICT, E_DEPRECATED ) ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -246,4 +247,11 @@ class IPSUtf8
|
||||
/* Init */
|
||||
IPSUtf8::init();
|
||||
|
||||
|
||||
/* Custom mb_ucfirst() function - eval'd so we can put into global namespace */
|
||||
eval( '
|
||||
function mb_ucfirst()
|
||||
{
|
||||
$text = func_get_arg( 0 );
|
||||
return mb_strtoupper( mb_substr( $text, 0, 1 ) ) . mb_substr( $text, 1 );
|
||||
}
|
||||
');
|
||||
@@ -995,7 +995,7 @@ class Convert
|
||||
{
|
||||
foreach( $tableData['definition']['indexes'] as $key => $index )
|
||||
{
|
||||
if ( $index['type'] === 'unique' )
|
||||
if ( $index['type'] === 'unique' OR $index['type'] === 'primary' )
|
||||
{
|
||||
/* Make sure none of the columns in this index are auto_increment */
|
||||
foreach( $index['columns'] AS $k => $idxcol )
|
||||
@@ -1030,7 +1030,9 @@ class Convert
|
||||
/* Did not work - try the long way */
|
||||
static::$utf->query( "RENAME TABLE `" . static::$db->prefix . $name . "` TO `" . static::$db->prefix . $name . "_temp`" );
|
||||
static::log( $name . " has Unique Index - temp table created from main." );
|
||||
static::$utf->query( "CREATE TABLE `" . static::$db->prefix . $name . "` LIKE `" . static::$db->prefix . $name . "_temp`" );
|
||||
/* Previously we used a raw create table query to create a copy, however this does not check index lengths. Leaving this for reference. */
|
||||
//static::$utf->query( "CREATE TABLE `" . static::$db->prefix . $name . "` LIKE `" . static::$db->prefix . $name . "_temp`" );
|
||||
static::$db->createTable( $this->checkTable( $tableData['definition'] ) );
|
||||
static::$utf->query( "ALTER TABLE `" . static::$db->prefix . $name . "` CONVERT TO CHARACTER SET " . $charset . " COLLATE " . $collation );
|
||||
static::$utf->query( "ALTER TABLE `" . static::$db->prefix . $name . "` DEFAULT CHARACTER SET " . $charset . " COLLATE " . $collation );
|
||||
static::log( $name . " created from temp table." );
|
||||
@@ -1280,7 +1282,7 @@ class Convert
|
||||
/* MB4? */
|
||||
$sessionData = \IPSUtf8\Session::i()->json;
|
||||
$length = 0;
|
||||
$multiplier = ( ! empty( $sessionData['use_utf8mb4'] ) ) ? 4 : 3;
|
||||
$multiplier = 4;
|
||||
$needsFixing = array();
|
||||
$maxLen = 1000;
|
||||
|
||||
@@ -1293,30 +1295,44 @@ class Convert
|
||||
{
|
||||
foreach( $definition['indexes'] as $key => $index )
|
||||
{
|
||||
$thisLength = null;
|
||||
$hasText = false;
|
||||
|
||||
foreach( $index['columns'] as $i => $column )
|
||||
{
|
||||
if ( isset( $definition['columns'][ $column ] ) and ( ( ! empty( $definition['columns'][ $column ]['length'] ) or in_array( mb_strtolower( $definition['columns'][ $column ]['type'] ), array( 'longtext', 'mediumtext', 'text' ) ) ) ) )
|
||||
$thisLength = ( isset( $index['length'][ $i ] ) ) ? $index['length'][ $i ] : ( ( (int) $definition['columns'][ $column ]['length'] or empty( $definition['columns'][ $column ]['length'] ) ) ? $definition['columns'][ $column ]['length'] : 250 );
|
||||
|
||||
$isText = in_array( mb_strtolower( $definition['columns'][ $column ]['type'] ), array( 'mediumtext', 'text' ) );
|
||||
|
||||
if ( $hasText === false and $isText === true )
|
||||
{
|
||||
$length += (int) ( $definition['columns'][ $column ]['length'] ) ? $definition['columns'][ $column ]['length'] : 250;
|
||||
$hasText = true;
|
||||
}
|
||||
|
||||
if ( isset( $definition['columns'][ $column ] ) and ( ( ! empty( $thisLength ) or $isText ) ) )
|
||||
{
|
||||
$length += $thisLength;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $length * $multiplier > $maxLen )
|
||||
|
||||
if ( ( $length * $multiplier > $maxLen ) or $hasText )
|
||||
{
|
||||
foreach( $index['columns'] as $i => $column )
|
||||
{
|
||||
if ( isset( $definition['columns'][ $column ] ) and ( ( ! empty( $definition['columns'][ $column ]['length'] ) or in_array( mb_strtolower( $definition['columns'][ $column ]['type'] ), array( 'longtext', 'mediumtext', 'text' ) ) ) ) )
|
||||
$thisLength = ( isset( $index['length'][ $i ] ) ) ? $index['length'][ $i ] : ( (int) $definition['columns'][ $column ]['length'] ? $definition['columns'][ $column ]['length'] : 250 );
|
||||
|
||||
if ( isset( $definition['columns'][ $column ] ) and ( ( ! empty( $thisLength ) or in_array( mb_strtolower( $definition['columns'][ $column ]['type'] ), array( 'mediumtext', 'text' ) ) ) ) )
|
||||
{
|
||||
/* Column name, column length, column type */
|
||||
$needsFixing[ $key ][ $i ] = array( $column, ( (int) $definition['columns'][ $column ]['length'] ) ? $definition['columns'][ $column ]['length'] : 250, $definition['columns'][ $column ]['type'] );
|
||||
$needsFixing[ $key ][ $i ] = array( $column, $thisLength, $definition['columns'][ $column ]['type'] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$length = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( count( $needsFixing ) )
|
||||
{
|
||||
foreach( $needsFixing as $key => $i )
|
||||
@@ -1334,21 +1350,23 @@ class Convert
|
||||
/* Check each column can be reduced by the amount we need reducing */
|
||||
$debt = 0;
|
||||
|
||||
$reduceEachBy = ( ( 100 / $totalLength ) * $maxChars ) / 100;
|
||||
|
||||
$reduceEachBy = ( ( 100 / $totalLength ) * $maxChars) / 100;
|
||||
|
||||
/* Apply debt if we have any. We do not reduce integers */
|
||||
foreach( $i as $x => $vals )
|
||||
{
|
||||
if ( array_key_exists( mb_strtolower( $vals[2] ), static::$numericCols ) AND static::$numericCols[ mb_strtolower( $vals[2] ) ] !== NULL )
|
||||
if ( in_array( mb_strtoupper( $vals[2] ), array_keys( static::$numericCols ) ) )
|
||||
{
|
||||
/* Don't go by "display" space, go by storage space, which is static regardless of supplied value ... an INT(4) still uses 11 chars */
|
||||
$debt += static::$numericCols[ mb_strtolower( $vals[2] ) ];
|
||||
$debt += $vals[1];
|
||||
}
|
||||
}
|
||||
|
||||
/* Recalculate value to multiply index sub lengths with (subtracting debt) */
|
||||
$reduceEachBy = ( ( 100 / ( $totalLength - $debt ) ) * ( $maxChars - $debt ) ) / 100;
|
||||
|
||||
if ( $debt < $totalLength )
|
||||
{
|
||||
$reduceEachBy = ( ( 100 / ($totalLength - $debt) ) * ( $maxChars - $debt ) ) / 100;
|
||||
}
|
||||
|
||||
foreach( $i as $x => $vals )
|
||||
{
|
||||
/* No length? */
|
||||
@@ -1357,9 +1375,16 @@ class Convert
|
||||
$vals[1] = 250;
|
||||
}
|
||||
|
||||
if ( array_key_exists( mb_strtolower( $vals[2] ), static::$numericCols ) AND static::$numericCols[ mb_strtolower( $vals[2] ) ] !== NULL )
|
||||
if ( in_array( mb_strtoupper( $vals[2] ), array_keys( static::$numericCols ) ) )
|
||||
{
|
||||
/* Preserve col len */
|
||||
/* Preserve col len where possible but if the column length is greater than subpart allowed, NULL the length
|
||||
otherwise MySQL will complain as you cannot use subpart on non-string column. */
|
||||
if ( $vals[1] > floor( $maxLen / $multiplier ) )
|
||||
{
|
||||
$vals[1] = NULL;
|
||||
$i[ $x ] = $vals;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1370,9 +1395,13 @@ class Convert
|
||||
|
||||
foreach( $i as $x => $vals )
|
||||
{
|
||||
if ( $definition['columns'][ $definition['indexes'][ $key ]['columns'][ $x ] ]['length'] != $vals[1] )
|
||||
if ( in_array( mb_strtolower( $vals[2] ), static::$convertCols ) AND $definition['columns'][ $definition['indexes'][ $key ]['columns'][ $x ] ]['length'] != $vals[1] )
|
||||
{
|
||||
$definition['indexes'][ $key ]['length'][ $x ] = $vals[1];
|
||||
$definition['indexes'][ $key ]['length'][ $x ] = intval( $vals[1] );
|
||||
}
|
||||
else
|
||||
{
|
||||
$definition['indexes'][ $key ]['length'][ $x ] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ abstract class Charset
|
||||
}
|
||||
}
|
||||
|
||||
self::$method = ucfirst( self::$method );
|
||||
self::$method = mb_ucfirst( self::$method );
|
||||
|
||||
if ( ! isset( static::$multitons[ self::$method ] ) )
|
||||
{
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
*/
|
||||
|
||||
define('READ_WRITE_SEPARATION', FALSE);
|
||||
define('REPORT_EXCEPTIONS', TRUE);
|
||||
require_once '../init.php';
|
||||
\IPS\Dispatcher\Admin::i()->run();
|
||||
@@ -1,85 +1,85 @@
|
||||
{
|
||||
">:(": {
|
||||
":classic_angry:": {
|
||||
"image": "angry.png",
|
||||
"image_2x": "angry@2x.png"
|
||||
},
|
||||
":D": {
|
||||
":classic_biggrin:": {
|
||||
"image": "biggrin.png",
|
||||
"image_2x": "biggrin@2x.png"
|
||||
},
|
||||
"O.o": {
|
||||
":classic_blink:": {
|
||||
"image": "blink.png",
|
||||
"image_2x": "blink@2x.png"
|
||||
},
|
||||
":$": {
|
||||
":classic_blush:": {
|
||||
"image": "blush.png",
|
||||
"image_2x": "blush@2x.png"
|
||||
},
|
||||
"B|": {
|
||||
":classic_cool:": {
|
||||
"image": "cool.png",
|
||||
"image_2x": "cool@2x.png"
|
||||
},
|
||||
"¬¬": {
|
||||
":classic_dry:": {
|
||||
"image": "dry.png",
|
||||
"image_2x": "dry@2x.png"
|
||||
},
|
||||
"^_^": {
|
||||
":classic_happy:": {
|
||||
"image": "happy.png",
|
||||
"image_2x": "happy@2x.png"
|
||||
},
|
||||
"o.O": {
|
||||
":classic_huh:": {
|
||||
"image": "huh.png",
|
||||
"image_2x": "huh@2x.png"
|
||||
},
|
||||
"xD": {
|
||||
":classic_laugh:": {
|
||||
"image": "laugh.png",
|
||||
"image_2x": "laugh@2x.png"
|
||||
},
|
||||
":|": {
|
||||
":classic_mellow:": {
|
||||
"image": "mellow.png",
|
||||
"image_2x": "mellow@2x.png"
|
||||
},
|
||||
":o": {
|
||||
":classic_ohmy:": {
|
||||
"image": "ohmy.png",
|
||||
"image_2x": "ohmy@2x.png"
|
||||
},
|
||||
":ph34r:": {
|
||||
":classic_ninja:": {
|
||||
"image": "ph34r.png",
|
||||
"image_2x": "ph34r@2x.png"
|
||||
},
|
||||
"9_9": {
|
||||
":classic_rolleyes:": {
|
||||
"image": "rolleyes.gif",
|
||||
"image_2x": "rolleyes@2x.png"
|
||||
},
|
||||
":(": {
|
||||
":classic_sad:": {
|
||||
"image": "sad.png",
|
||||
"image_2x": "sad@2x.png"
|
||||
},
|
||||
"-_-": {
|
||||
":classic_sleep:": {
|
||||
"image": "sleep.png",
|
||||
"image_2x": "sleep@2x.png"
|
||||
},
|
||||
":)": {
|
||||
":classic_smile:": {
|
||||
"image": "smile.png",
|
||||
"image_2x": "smile@2x.png"
|
||||
},
|
||||
":P": {
|
||||
":classic_tongue:": {
|
||||
"image": "tongue.png",
|
||||
"image_2x": "tongue@2x.png"
|
||||
},
|
||||
":/": {
|
||||
":classic_unsure:": {
|
||||
"image": "unsure.png",
|
||||
"image_2x": "unsure@2x.png"
|
||||
},
|
||||
":S": {
|
||||
":classic_wacko:": {
|
||||
"image": "wacko.png",
|
||||
"image_2x": "wacko@2x.png"
|
||||
},
|
||||
";)": {
|
||||
":classic_wink:": {
|
||||
"image": "wink.png",
|
||||
"image_2x": "wink@2x.png"
|
||||
},
|
||||
":x": {
|
||||
":classic_love:": {
|
||||
"image": "wub.png",
|
||||
"image_2x": "wub@2x.png"
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 705 B After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 15 KiB |
@@ -1 +1 @@
|
||||
=============================[NOTE]=============================
This software is Nulled!
Nulled by IPBMafia.ru
Buy license at https://www.invisionpower.com/buy/self-hosted
================================================================
IPS 4.2.0 Release (102002)
=============================[NOTE]=============================
Invision Community End User License Agreement
1. Acceptance
This software license agreement (the “Agreement”) is between you (either an individual or entity, hereinafter referred to as “You” or “Your”) and Invision Power Services, Inc. (“IPS”, “We”, “Our” or “Us”) and pertains to the Invision Community software, its components, features, enhancements, updates and modifications (collectively the “Software” or “Suite”) and any related services (“Services”) provided by IPS under this Agreement.
By purchasing, downloading, accessing, installing, facilitating the installation or using the Software or Services (or allowing or authorizing any other person to do so) you are warranting that you have the authority provided by your state, country or jurisdiction to enter into a legally binding contract and that you have read and agree to be bound by the terms of this Agreement. You understand and acknowledge that this Agreement comprises the entire agreement between You and IPS. This Agreement supersedes any prior agreements, promises, representations or descriptions. If you do not agree with the terms and conditions set forth hereinafter, you may not purchase, download, access, install or use the Software or Services. This Agreement may only be modified in writing, signed by an officer of IPS and You.
2. License Scope and Grant
In consideration for payment of all applicable license fees and subject to the terms and conditions of this Agreement, IPS grants you a revocable, limited and non-exclusive license to install and use the Software and Services on a single installation, accessible via one URL. Access to services, components, software updates and technical support require an active license. All rights in and to the Software and Services are reserved to the use and benefit of IPS and/or its licensors, successors and assigners.
(a) Test Installation. You may install and test one additional instance of the Software for the purpose of development and testing. This installation must be and remain isolated and inaccessible to the general public at all times.
3. Restrictions
Your license to use the Software and Services is subject to the following terms, conditions and restrictions on use:
(a) You may alter and modify the Software’s source code for Your use, subject to this Agreement, however, you may not distribute, publish, resell, or otherwise share the Software or derivative works based on the Software without prior express written consent from IPS.
(b) You may not utilize the Software or Services to engage in, facilitate, or otherwise allow others to engage in any activity that violates any law or regulation or the terms and conditions within this Agreement.
(c) You are solely responsible for complying with all governmental regulations and policies. You agree to indemnify Us from any loss, action or damage arising from Your failure to use the Software in a manner inconsistent with applicable legislation.
(d) You may not remove any copyright or proprietary notices on or within the software’s source code at any time. A copyright removal license may be purchased to remove the public display of the Software’s publicly displayed copyright notice.
4. Intellectual Property
We have the sole and exclusive right to the Software which is being licensed, not sold, to you by IPS under the terms and conditions of this agreement. The Software is protected by copyright, trademark and other intellectual property laws. IPS reserves any rights not expressly granted herein.
5. Assignment
You may not rent, lease, sell, share or authorize or temporarily assign your rights to the license or this Agreement to another individual or entity except as expressly permitted herein.
(a) You may, after six months from the original purchase date, permanently transfer your licensing rights and interest in this Agreement to a third party, provided the license is active and in good standing. Any transfer and reassignment must occur via the mechanisms provided within the invisioncommunity.com client area and all applicable fees must be paid for the reassignment to be considered valid.
(b) You agree to provide this Agreement in its entirety to the assignee prior to reassignment and the assignee must agree to be bound to the terms of this Agreement.
(c) You acknowledge that account and non license specific materials and purchases, including, but not limited to: account credits and third party (“marketplace”) add-ons and purchases are non-transferrable under any circumstances.
(d) We reserve the right to refuse or reject reassignment at our soleLine truncated
|
||||
=============================[NOTE]=============================
This software is Nulled!
Nulled by IPBMafia.ru
Buy license at https://www.invisionpower.com/buy/self-hosted
================================================================
IPS 4.3.0 Release (103005)
=============================[NOTE]=============================
Invision Community End User License Agreement
1. Acceptance
This software license agreement (the “Agreement”) is between you (either an individual or entity, hereinafter referred to as “You” or “Your”) and Invision Power Services, Inc. (“IPS”, “We”, “Our” or “Us”) and pertains to the Invision Community software, its components, features, enhancements, updates and modifications (collectively the “Software” or “Suite”) and any related services (“Services”) provided by IPS under this Agreement.
By purchasing, downloading, accessing, installing, facilitating the installation or using the Software or Services (or allowing or authorizing any other person to do so) you are warranting that you have the authority provided by your state, country or jurisdiction to enter into a legally binding contract and that you have read and agree to be bound by the terms of this Agreement. You understand and acknowledge that this Agreement comprises the entire agreement between You and IPS. This Agreement supersedes any prior agreements, promises, representations or descriptions. If you do not agree with the terms and conditions set forth hereinafter, you may not purchase, download, access, install or use the Software or Services. This Agreement may only be modified in writing, signed by an officer of IPS and You.
2. License Scope and Grant
In consideration for payment of all applicable license fees and subject to the terms and conditions of this Agreement, IPS grants you a revocable, limited and non-exclusive license to install and use the Software and Services on a single installation, accessible via one URL. Access to services, components, software updates and technical support require an active license. All rights in and to the Software and Services are reserved to the use and benefit of IPS and/or its licensors, successors and assigners.
(a) Test Installation. You may install and test one additional instance of the Software for the purpose of development and testing. This installation must be and remain isolated and inaccessible to the general public at all times.
3. Restrictions
Your license to use the Software and Services is subject to the following terms, conditions and restrictions on use:
(a) You may alter and modify the Software’s source code for Your use, subject to this Agreement, however, you may not distribute, publish, resell, or otherwise share the Software or derivative works based on the Software without prior express written consent from IPS.
(b) You may not utilize the Software or Services to engage in, facilitate, or otherwise allow others to engage in any activity that violates any law or regulation or the terms and conditions within this Agreement.
(c) You are solely responsible for complying with all governmental regulations and policies. You agree to indemnify Us from any loss, action or damage arising from Your failure to use the Software in a manner inconsistent with applicable legislation.
(d) You may not remove any copyright or proprietary notices on or within the software’s source code at any time. A copyright removal license may be purchased to remove the public display of the Software’s publicly displayed copyright notice.
4. Intellectual Property
We have the sole and exclusive right to the Software which is being licensed, not sold, to you by IPS under the terms and conditions of this agreement. The Software is protected by copyright, trademark and other intellectual property laws. IPS reserves any rights not expressly granted herein.
5. Assignment
You may not rent, lease, sell, share or authorize or temporarily assign your rights to the license or this Agreement to another individual or entity except as expressly permitted herein.
(a) You may, after six months from the original purchase date, permanently transfer your licensing rights and interest in this Agreement to a third party, provided the license is active and in good standing. Any transfer and reassignment must occur via the mechanisms provided within the invisioncommunity.com client area and all applicable fees must be paid for the reassignment to be considered valid.
(b) You agree to provide this Agreement in its entirety to the assignee prior to reassignment and the assignee must agree to be bound to the terms of this Agreement.
(c) You acknowledge that account and non license specific materials and purchases, including, but not limited to: account credits and third party (“marketplace”) add-ons and purchases are non-transferrable under any circumstances.
(d) We reserve the right to refuse or reject reassignment at our soleLine truncated
|
||||
@@ -12,7 +12,7 @@
|
||||
{{endforeach}}
|
||||
{{if $uploadField}}
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
|
||||
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
|
||||
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
|
||||
{{endif}}
|
||||
{{if $error}}
|
||||
<div class="ipsMessage ipsMessage_error">
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<ips:template parameters="$html, $title=NULL" />
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{$title}</title>
|
||||
<link rel='stylesheet' href='css/reset.css' media='all'>
|
||||
<link rel='stylesheet' href='css/fonts.css' media='all'>
|
||||
<link rel='stylesheet' href='css/global.css' media='all'>
|
||||
<link rel='stylesheet' href='css/layout.css' media='all'>
|
||||
<link rel='stylesheet' href='css/messages.css' media='all'>
|
||||
<link rel='stylesheet' href='css/misc.css' media='all'>
|
||||
<link rel='stylesheet' href='css/forms.css' media='all'>
|
||||
<link rel='stylesheet' href='css/typography.css' media='all'>
|
||||
<link rel='stylesheet' href='css/buttons.css' media='all'>
|
||||
<link rel='stylesheet' href='css/installer.css' media='all'>
|
||||
<script type="text/javascript">
|
||||
var IPS_TIMEOUT = 30;
|
||||
</script>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/multipleRedirect.js"></script>
|
||||
</head>
|
||||
<body class="ipsApp ipsApp_front ipsJS_none ipsClearfix ipsLayout_noBackground">
|
||||
{$html|raw}
|
||||
</body>
|
||||
</html>
|
||||
@@ -70,7 +70,7 @@
|
||||
<a href='{expression="\IPS\Settings::i()->base_url"}' class='ipsButton ipsButton_large ipsButton_primary'>{lang="gotosuite"}</a>
|
||||
<a href='{expression="rtrim( \IPS\Settings::i()->base_url, '/' ) . '/' . \IPS\CP_DIRECTORY"}' class='ipsButton ipsButton_large ipsButton_normal'>{lang="gotoacp"}</a>
|
||||
<br><br>
|
||||
<a href='http://ipbmafia.ru/files/file/1848-russkiy-yazyk-dlya-invision-community-42/' target="_blank" class='ipsButton ipsButton_large ipsButton_normal' style="background: red;">Russian lang pack</a>
|
||||
<a href='https://ipbmafia.ru/files/file/1848-russkiy-yazyk-dlya-invision-community/' target="_blank" class='ipsButton ipsButton_large ipsButton_normal' style="background: red;">Russian lang pack</a>
|
||||
<br><br>
|
||||
<a href="{expression="\IPS\Http\Url::ips('docs/docs')"}" target="_blank">{lang="docs_link"}</a>
|
||||
</div>
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
*/
|
||||
|
||||
define('READ_WRITE_SEPARATION', FALSE);
|
||||
define('REPORT_EXCEPTIONS', TRUE);
|
||||
require_once '../../init.php';
|
||||
\IPS\Dispatcher\Setup::i()->setLocation('install')->run();
|
||||
+11
-2
@@ -19,6 +19,7 @@ $lang = array(
|
||||
'generic_error' => "An unknown error occurred",
|
||||
'installation_error' => "Installation Error",
|
||||
'installer_locked' => "Installer Locked.",
|
||||
'session_no_good' => "We were unable to start a PHP session. You will need to contact your host to adjust your PHP configuration before you can continue. The error reported was: %s",
|
||||
'error' => "Error",
|
||||
'error_title' => "Error",
|
||||
'page_doesnt_exist' => "That page doesn't exist.",
|
||||
@@ -68,6 +69,7 @@ $lang = array(
|
||||
'requirements_suhosin_cookie_encrypt' => "PHP setting suhosin.cookie.encrypt is set to 1. This can cause problems in some areas such as the editor's auto save functionality. We recommended a value of 0 to disable it.",
|
||||
'requirements_file_system' => "File System",
|
||||
'requirements_file_writable' => "%s is writable",
|
||||
'requirements_mysql_timeout' => "Your MySQL %s system variable is currently set to an extremely low value (%s). The default MySQL value is 28800. It is recommended to increase this MySQL system variable to at least 20 in order to prevent potential problems with queries timing out.",
|
||||
'dir_does_not_exist' => "%s does not exist.",
|
||||
'dir_is_not_writable' => "%s cannot be written to. Please adjust the permissions on it or contact your hosting provider for assistance.",
|
||||
'file_storage_test_error_amazon' => "There appears to be a problem with your Amazon (%s) file storage settings which can cause problems with uploads.<br> After attempting to upload a file to the directory, the URL to the file is returning a HTTP %s error. Update your settings and then check and see if the problem has been resolved",
|
||||
@@ -128,8 +130,8 @@ $lang = array(
|
||||
'base_url' => "Site URL",
|
||||
'err_db_exists' => "There is already an Invision Community installation in that database. Choose a different database or use a table prefix.",
|
||||
'err_db_cant_create' => "The Database does not exist and cannot be created automatically. Please create the database manually or contact your hosting provider if you are unsure how to do this.",
|
||||
'diagnostics_reporting' => "Send diagnostics data to IPS?",
|
||||
'diagnostics_reporting_desc' => "This distribution is nulled and this setting does not work. Help Invision Community improve by automatically sending usage and diagnostic information. The data sent does not contain any private information about your users or your community.",
|
||||
'diagnostics_reporting' => "Send usage and diagnostics data to IPS?",
|
||||
'diagnostics_reporting_desc' => "This distribution is nulled and this setting does not work. Help Invision Community improve by automatically sending usage and diagnostic information including a list of features in use and basic statistics. The data sent does not contain any private information about your users or your community.",
|
||||
|
||||
'conf_global_error' => "",
|
||||
|
||||
@@ -186,5 +188,12 @@ $lang = array(
|
||||
|
||||
'session_check_fail' => "The installer uses PHP sessions to store data, however PHP sessions are currently not working correctly on your server. This is an issue you will need to contact your host about.",
|
||||
|
||||
'files-1' => "File could not be opened: %s",
|
||||
'files-2' => "File does not exist: %s",
|
||||
'files-4' => "File could not be copied: %s",
|
||||
'files-5' => "File could not be moved: %s",
|
||||
'files-3' => "File could not be saved: %s",
|
||||
'files-6' => "Folder could not be created: %s",
|
||||
'files-7' => "Response returned a 400 response code but no Amazon region was returned: %s",
|
||||
|
||||
);
|
||||
@@ -0,0 +1,397 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Invision Community Update Extractor</title>
|
||||
<style type='text/css'>@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.ipsProgressBar{width:50%;margin:auto;height:20px;overflow:hidden;background:#9c9c9c;background:-moz-linear-gradient(top,rgba(156,156,156,1) 0,rgba(180,180,180,1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(156,156,156,1)),color-stop(100%,rgba(180,180,180,1)));background:-webkit-linear-gradient(top,rgba(156,156,156,1) 0,rgba(180,180,180,1) 100%);background:-o-linear-gradient(top,rgba(156,156,156,1) 0,rgba(180,180,180,1) 100%);background:-ms-linear-gradient(top,rgba(156,156,156,1) 0,rgba(180,180,180,1) 100%);background:linear-gradient(to bottom,rgba(156,156,156,1) 0,rgba(180,180,180,1) 100%);border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.ipsProgressBar_animated .ipsProgressBar_progress{background-color:#5490c0;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px;-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.ipsProgressBar_progress{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background:#5490c0;position:relative;padding-left:6px}.ipsProgressBar_progress[data-progress]:after{position:absolute;right:5px;top:0;line-height:32px;color:#fff;content:attr(data-progress);display:block;font-weight:700}</style>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<?php
|
||||
/**
|
||||
* @brief Update Extractor
|
||||
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) Invision Power Services, Inc.
|
||||
* @license https://www.invisioncommunity.com/legal/standards/
|
||||
* @package Invision Community
|
||||
* @since 31 Jul 2017
|
||||
*/
|
||||
|
||||
// This file deliberately exists outside of the framework
|
||||
// and MUST NOT call init.php
|
||||
|
||||
@ini_set('display_errors', 'off');
|
||||
|
||||
@require( "../../system/3rd_party/pclzip/pclzip.lib.php" );
|
||||
|
||||
if ( file_exists( "../../constants.php" ) )
|
||||
{
|
||||
require "../../constants.php";
|
||||
}
|
||||
foreach ( array( 'FOLDER_PERMISSION_NO_WRITE' => 0755, 'FILE_PERMISSION_NO_WRITE' => 0644, 'TEMP_DIRECTORY' => sys_get_temp_dir() ) as $k => $v )
|
||||
{
|
||||
if ( !defined( $k ) )
|
||||
{
|
||||
define( $k, $v );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extractor Class
|
||||
*/
|
||||
class Extractor
|
||||
{
|
||||
const NUMBER_PER_GO = 20;
|
||||
|
||||
/**
|
||||
* @brief File
|
||||
*/
|
||||
private $file;
|
||||
|
||||
/**
|
||||
* @brief Root Directory
|
||||
*/
|
||||
private $container;
|
||||
|
||||
/**
|
||||
* @brief PclZip Object
|
||||
*/
|
||||
private $zip;
|
||||
|
||||
/**
|
||||
* @brief Zip Contents
|
||||
*/
|
||||
private $contents;
|
||||
|
||||
/**
|
||||
* @brief FTP Connection
|
||||
*/
|
||||
private $ftp;
|
||||
|
||||
/**
|
||||
* @brief SSH Connection
|
||||
*/
|
||||
private $ssh;
|
||||
|
||||
/**
|
||||
* @brief SFTP Connection
|
||||
*/
|
||||
private $sftp;
|
||||
|
||||
/**
|
||||
* @brief SFTP Directory
|
||||
*/
|
||||
private $sftpDir;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $file Zip File
|
||||
* @param string $container Root directory
|
||||
* @return void
|
||||
*/
|
||||
public function __construct( $file, $container )
|
||||
{
|
||||
if ( !$file or !$container )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
$this->file = $file;
|
||||
$this->container = $container . '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* Security Check
|
||||
*
|
||||
* @param string $key Security key
|
||||
* @return void
|
||||
*/
|
||||
public function securityCheck( $key )
|
||||
{
|
||||
require "../../conf_global.php";
|
||||
return $key === md5( $INFO['board_start'] . $_GET['file'] . $INFO['sql_pass'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Establish FTP/SSH connection
|
||||
*
|
||||
* @param array $value FTP/SSH Credentials
|
||||
* @return void
|
||||
*/
|
||||
public function connectToFtp( $value )
|
||||
{
|
||||
if ( $value['protocol'] == 'sftp' )
|
||||
{
|
||||
$this->ssh = ssh2_connect( $value['server'], $value['port'] );
|
||||
if ( $this->ssh === FALSE )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
if ( !@ssh2_auth_password( $this->ssh, $value['un'], $value['pw'] ) )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
$this->sftp = @ssh2_sftp( $this->ssh );
|
||||
if ( $this->sftp === FALSE )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
if ( $value['path'] and !@ssh2_sftp_stat( $this->sftp, $value['path'] ) )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
$this->sftpDir = ssh2_sftp_realpath( $this->sftp, $value['path'] ) . '/';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( $value['protocol'] == 'ssl_ftp' )
|
||||
{
|
||||
$this->ftp = @ftp_ssl_connect( $value['server'], $value['port'], 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->ftp = @ftp_connect( $value['server'], $value['port'], 3 );
|
||||
}
|
||||
if ( $this->ftp === FALSE )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
if ( !@ftp_login( $this->ftp, $value['un'], $value['pw'] ) )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
if( ftp_nlist( $this->ftp, '.' ) === FALSE )
|
||||
{
|
||||
@ftp_pasv( $this->ftp, true );
|
||||
}
|
||||
|
||||
if ( !@ftp_chdir( $this->ftp, $value['path'] ) )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Number of files
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function numberOfFiles()
|
||||
{
|
||||
$properties = $this->zip->properties();
|
||||
return $properties['nb'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the files
|
||||
*
|
||||
* @param int $offset Offset
|
||||
* @return int
|
||||
*/
|
||||
public function extract( $offset )
|
||||
{
|
||||
$this->zip = new PclZip( $this->file );
|
||||
$this->contents = $this->zip->listContent();
|
||||
if ( !$this->contents )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
$done = 0;
|
||||
for ( $i = 0; $i < self::NUMBER_PER_GO; $i++ )
|
||||
{
|
||||
$index = $offset + $i;
|
||||
|
||||
if ( isset( $this->contents[ $index ] ) )
|
||||
{
|
||||
$this->_extractFile( $index );
|
||||
$done++;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $done;
|
||||
}
|
||||
}
|
||||
|
||||
return $done;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract a particular file
|
||||
*
|
||||
* @param int $index File index in zip
|
||||
* @return void
|
||||
*/
|
||||
private function _extractFile( $index )
|
||||
{
|
||||
/* Get the file */
|
||||
$path = mb_substr( $this->contents[ $index ]['filename'], 0, mb_strlen( $this->container ) ) === $this->container ? mb_substr( $this->contents[ $index ]['filename'], mb_strlen( $this->container ) ) : $this->contents[ $index ]['filename'];
|
||||
if ( !$path or mb_substr( $path, -1 ) === '/' or mb_substr( $path, 0, 1 ) === '.' or mb_substr( $path, 0, 9 ) === '__MACOSX/' )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create a directory if needed */
|
||||
$dir = dirname( $path );
|
||||
$directories = array( $dir );
|
||||
while ( $dir != '.' )
|
||||
{
|
||||
$dir = dirname( $dir );
|
||||
if ( $dir != '.' )
|
||||
{
|
||||
$directories[] = $dir;
|
||||
}
|
||||
}
|
||||
foreach ( array_reverse( $directories ) as $dir )
|
||||
{
|
||||
if ( !is_dir( "../../{$dir}" ) )
|
||||
{
|
||||
if ( $this->sftp )
|
||||
{
|
||||
@ssh2_sftp_mkdir( $this->sftp, $this->sftpDir . $dir );
|
||||
}
|
||||
if ( $this->ftp )
|
||||
{
|
||||
@ftp_mkdir( $this->ftp, $dir );
|
||||
}
|
||||
else
|
||||
{
|
||||
@mkdir( "../../{$dir}", FOLDER_PERMISSION_NO_WRITE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Write contents */
|
||||
$contents = @$this->zip->extractByIndex( $index, \PCLZIP_OPT_EXTRACT_AS_STRING );
|
||||
$contents = $contents[0]['content'];
|
||||
if ( $this->sftp or $this->ftp )
|
||||
{
|
||||
$tmpFile = tempnam( TEMP_DIRECTORY, 'IPS' );
|
||||
\file_put_contents( $tmpFile, $contents );
|
||||
|
||||
if ( $this->sftp )
|
||||
{
|
||||
if ( @ssh2_scp_send( $this->ssh, $tmpFile, $this->sftpDir . $path ) === FALSE )
|
||||
{
|
||||
throw new \Exception;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( @ftp_put( $this->ftp, $path, $tmpFile, FTP_BINARY ) === FALSE )
|
||||
{
|
||||
throw new \Exception;
|
||||
}
|
||||
}
|
||||
|
||||
@unlink( $tmpFile );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Determine if the file exists (we'll want to know this later) */
|
||||
$fileExists = file_exists( "../../{$path}" );
|
||||
|
||||
$fh = @\fopen( "../../{$path}", 'w+' );
|
||||
if ( $fh === FALSE )
|
||||
{
|
||||
$lastError = error_get_last();
|
||||
throw new Exception( $lastError['message'] );
|
||||
}
|
||||
if ( @\fwrite( $fh, $contents ) === FALSE )
|
||||
{
|
||||
$lastError = error_get_last();
|
||||
throw new Exception( $lastError['message'] );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the file existed before we started, we should clear it from opcache if opcache is enabled */
|
||||
if( $fileExists )
|
||||
{
|
||||
if ( function_exists( 'opcache_invalidate' ) )
|
||||
{
|
||||
@opcache_invalidate( "../../{$path}" );
|
||||
}
|
||||
}
|
||||
/* Otherwise, we should set file permissions on the file if it's brand new in case server defaults to something odd */
|
||||
else
|
||||
{
|
||||
@chmod( "../../{$path}", FILE_PERMISSION_NO_WRITE );
|
||||
}
|
||||
}
|
||||
@\fclose( $fh );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ! Controller */
|
||||
try
|
||||
{
|
||||
$extractor = new Extractor( isset( $_GET['file'] ) ? $_GET['file'] : NULL, isset( $_GET['container'] ) ? $_GET['container'] : '' );
|
||||
|
||||
/* Check this request came from the ACP */
|
||||
if ( !$extractor->securityCheck( $_GET['key'] ) )
|
||||
{
|
||||
throw new Exception;
|
||||
}
|
||||
|
||||
/* Establish an FTP connection if necessary */
|
||||
if ( $_GET['ftp'] )
|
||||
{
|
||||
$extractor->connectToFtp( $_GET['ftp'] );
|
||||
}
|
||||
|
||||
/* Extract a batch of files */
|
||||
$i = isset( $_GET['i'] ) ? $_GET['i'] : 0;
|
||||
$done = $extractor->extract( $i );
|
||||
|
||||
/* If we didn't extract anything, are we done? */
|
||||
if ( !$done and $i >= $extractor->numberOfFiles() )
|
||||
{
|
||||
@unlink( $_GET['file'] );
|
||||
|
||||
if ( function_exists( 'opcache_reset' ) )
|
||||
{
|
||||
@opcache_reset();
|
||||
}
|
||||
|
||||
echo <<<HTML
|
||||
<div class="ipsProgressBar ipsProgressBar_animated">
|
||||
<div class="ipsProgressBar_progress" style="width: 100%;"></div>
|
||||
</div>
|
||||
<script type='text/javascript'>parent.location = parent.location + '&check=1';</script><noscript><a href='index.php' target='_parent'>Click here to continue</a></noscript>
|
||||
HTML;
|
||||
}
|
||||
|
||||
/* Nope, redirect to the next batch */
|
||||
else
|
||||
{
|
||||
$newI = $i + $extractor::NUMBER_PER_GO;
|
||||
$percentComplete = round( 100 / $extractor->numberOfFiles() * $newI );
|
||||
|
||||
$properties = array(
|
||||
'file' => $_GET['file'],
|
||||
'container' => $_GET['container'],
|
||||
'key' => $_GET['key'],
|
||||
'ftp' => $_GET['ftp'],
|
||||
'i' => $newI,
|
||||
);
|
||||
$url = "extract.php?" . http_build_query( $properties );
|
||||
echo <<<HTML
|
||||
<div class="ipsProgressBar ipsProgressBar_animated">
|
||||
<div class="ipsProgressBar_progress" style="width: {$percentComplete}%;"></div>
|
||||
</div>
|
||||
<noscript><a href='{$url}' target='_parent'>Click here to continue</a></noscript>
|
||||
<script type='text/javascript'>window.onload = function(){setTimeout(function(){window.location = '{$url}';}, 50);};</script>
|
||||
HTML;
|
||||
}
|
||||
}
|
||||
catch ( Exception $e )
|
||||
{
|
||||
echo "<script type='text/javascript'>parent.location = parent.location + '&fail=1';</script><noscript>An error occurred. Please visit the <a href='https://remoteservices.invisionpower.com/docs/client_area' target='_blank'>client area</a> to manually download the latest version. After uploading the files, <a href='index.php' target='_parent'>continue to the upgrader</a>.</noscript>";
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,30 +1,36 @@
|
||||
<ips:template parameters="$forms, $error" />
|
||||
<ips:template parameters="$error" />
|
||||
|
||||
{{if $error !== NULL}}
|
||||
<div class='ipsMessage ipsMessage_error'>
|
||||
{lang="$error"}
|
||||
</div>
|
||||
<br>
|
||||
{{endif}}
|
||||
|
||||
<div class='ipsColumns ipsColumns_collapsePhone'>
|
||||
<div class='ipsColumn ipsColumn_fluid ipsPad'>
|
||||
{{foreach $forms as $k => $form}}
|
||||
{{if $k === '_standard'}}
|
||||
{$form|raw}
|
||||
{{endif}}
|
||||
{{endforeach}}
|
||||
</div>
|
||||
{{if count ( $forms ) > 1}}
|
||||
<div class='ipsColumn ipsColumn_veryWide ipsPad'>
|
||||
<h2 class='ipsType_sectionHead'>{lang='sign_in_faster'}</h2>
|
||||
<p class='ipsType_normal ipsType_reset ipsType_light'>{lang='sign_in_connect'}</p>
|
||||
<br>
|
||||
{{foreach $forms as $k => $form}}
|
||||
{{if $k !== '_standard'}}
|
||||
{$form|raw}
|
||||
{{endif}}
|
||||
{{endforeach}}
|
||||
</div>
|
||||
{{endif}}
|
||||
</div>
|
||||
<form method="post">
|
||||
<input type="hidden" name="{$id}_submitted" value="1">
|
||||
<ul class='ipsForm ipsForm_vertical'>
|
||||
<li class="ipsFieldRow ipsClearfix">
|
||||
<label class="ipsFieldRow_label" for="auth">
|
||||
{lang="auth"}
|
||||
<span class="ipsFieldRow_required">{lang="required"}</span>
|
||||
</label>
|
||||
<div class="ipsFieldRow_content">
|
||||
<input type="text" placeholder="{lang="email_address"}" name="auth" id="auth" {{if isset( \IPS\Request::i()->auth )}}value="{request="auth"}"{{endif}}>
|
||||
</div>
|
||||
</li>
|
||||
<li class="ipsFieldRow ipsClearfix">
|
||||
<label class="ipsFieldRow_label" for="password">
|
||||
{lang="password"}
|
||||
<span class="ipsFieldRow_required">{lang="required"}</span>
|
||||
</label>
|
||||
<div class="ipsFieldRow_content">
|
||||
<input type="password" placeholder="{lang="password"}" name="password" id="password" {{if isset( \IPS\Request::i()->password )}}value="{request="password"}"{{endif}}>
|
||||
</div>
|
||||
</li>
|
||||
<li class=''>
|
||||
<button type='submit' class='ipsButton ipsButton_primary ipsButton_medium'>{lang="login"}</button>
|
||||
|
||||
<a href="{url="upgrader_login_help" ips="true"}" target="_blank" class="ipsType_blendLinks">{lang="help"}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
@@ -12,7 +12,7 @@
|
||||
{{endforeach}}
|
||||
{{if $uploadField}}
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
|
||||
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
|
||||
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
|
||||
{{endif}}
|
||||
{{if $error}}
|
||||
<div class="ipsMessage ipsMessage_error">
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<body class='ipsApp ipsApp_installer'>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$('input[name="diagnostics_reporting_checkbox"]').attr("disabled","disabled");
|
||||
$('input[name="101079_diagnostics_reporting_checkbox"]').attr("disabled","disabled");
|
||||
});
|
||||
</script>
|
||||
<div id='elInstaller_wrap'>
|
||||
@@ -77,7 +77,7 @@
|
||||
<a href='{expression="\IPS\Settings::i()->base_url"}' class='ipsButton ipsButton_large ipsButton_primary'>{lang="go_to_suite"}</a>
|
||||
<a href='{expression="rtrim( \IPS\Settings::i()->base_url, '/' ) . '/' . \IPS\CP_DIRECTORY"}' class='ipsButton ipsButton_large ipsButton_normal'>{lang="go_to_acp"}</a>
|
||||
<br><br>
|
||||
<a href='http://ipbmafia.ru/files/file/1848-russkiy-yazyk-dlya-invision-community-42/' target="_blank" class='ipsButton ipsButton_large ipsButton_normal' style="background: red;">Russian lang pack</a>
|
||||
<a href='https://ipbmafia.ru/files/file/1848-russkiy-yazyk-dlya-invision-community/' target="_blank" class='ipsButton ipsButton_large ipsButton_normal' style="background: red;">Russian lang pack</a>
|
||||
<br><br>
|
||||
<a href="{expression="\IPS\Http\Url::ips('docs/docs')"}" target="_blank">{lang="suite_docs"}</a>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,28 @@
|
||||
<ips:template parameters="$requirements, $designerMode" />
|
||||
<ips:template parameters="$requirements, $designerMode, $incorrectFiles" />
|
||||
{{$canProceed = TRUE;}}
|
||||
<section>
|
||||
{{if $incorrectFiles !== NULL}}
|
||||
{{if $incorrectFiles}}
|
||||
{{$canProceed = FALSE;}}
|
||||
<h2 class="ipsType_sectionHead">{lang="hc_files"}</h2>
|
||||
<br><br>
|
||||
<p class="ipsType_normal">{lang="hc_files_fail"}</p>
|
||||
<br>
|
||||
<a class="ipsButton ipsButton_primary" href="{url="client_area" ips="true"}" target="_blank">{lang="hc_files_fail2"}</a>
|
||||
<br><br>
|
||||
<p class="ipsType_normal">{lang="hc_files_fail3"}</p>
|
||||
<ul class="ipsPad ipsType_large ipsList_checks">
|
||||
{{foreach $incorrectFiles as $file}}
|
||||
<li class="fail">{$file}</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<h2 class="ipsType_sectionHead">{lang="hc_files"}</h2>
|
||||
<ul class="ipsPad ipsType_large ipsList_checks">
|
||||
<li class="success">{lang="hc_files_ok"}</li>
|
||||
</ul>
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
{{if $designerMode}}
|
||||
<h2 class="ipsType_sectionHead">{lang="hc_designers_mode"}</h2>
|
||||
<ul class="ipsPad ipsType_large ipsList_checks">
|
||||
|
||||
@@ -23,5 +23,4 @@
|
||||
</section>
|
||||
<div class='ipsPad_double ipsType_center'>
|
||||
<a href='{url="controller=continueupgrade&key={$_SESSION['uniqueKey']}"}' class='ipsButton ipsButton_large ipsButton_primary ipsButton_positive'>{lang="continue_upgrade"}</a>
|
||||
<a href='{url="controller=systemcheck&key={$_SESSION['uniqueKey']}&skippreviousupgrade=1"}' class='ipsButton ipsButton_large ipsButton_primary'>{lang="start_fresh_upgrade"}</a>
|
||||
</div>
|
||||
@@ -8,12 +8,12 @@
|
||||
{{if $trace[3]['function'] == 'installDatabaseUpdates'}}
|
||||
<small>
|
||||
{expression="\IPS\ROOT_PATH"}/applications/{$trace[4]['args'][0][1]}/setup/upg_{$trace[3]['args'][0]}/queries.json{{if isset($_SESSION['lastJsonIndex'])}} - query #{$_SESSION['lastJsonIndex']}{{endif}}<br>
|
||||
<pre>{$exception->query}</pre>
|
||||
<pre>{{if $exception->query}}{$exception->query}{{else}}{$trace[0]['args'][0]}{{endif}}</pre>
|
||||
</small>
|
||||
{{else}}
|
||||
<small>
|
||||
{$trace[1]['file']}::{$trace[1]['line']}<br>
|
||||
<pre>{$exception->query}</pre>
|
||||
<pre>{{if $exception->query}}{$exception->query}{{else}}{$trace[0]['args'][0]}{{endif}}</pre>
|
||||
</small>
|
||||
{{endif}}
|
||||
{{else}}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
|
||||
define('READ_WRITE_SEPARATION', FALSE);
|
||||
define('REPORT_EXCEPTIONS', TRUE);
|
||||
|
||||
/* Prevent hooks from running during the upgrade */
|
||||
define('RECOVERY_MODE', TRUE);
|
||||
|
||||
+32
-4
@@ -37,6 +37,7 @@ $lang = array(
|
||||
'create_conf_global' => "Please create a %s directory and make it writeable. If you are not sure how to do this, contact your hosting provider.",
|
||||
'session_no_good' => "We were unable to start a PHP session. You will need to contact your host to adjust your PHP configuration before you can continue. The error reported was: %s",
|
||||
'upgrade_group_not_exist' => "You do not have permission to run the upgrader because your group does not exist.",
|
||||
'help' => "Help",
|
||||
|
||||
'sign_in_short' => "Sign In",
|
||||
'auth' => "Display Name or Email Address",
|
||||
@@ -46,7 +47,7 @@ $lang = array(
|
||||
'username' => "Display Name",
|
||||
'email_address' => "Email Address",
|
||||
'username_or_email' => "Username or Email Address",
|
||||
'login_err_no_account' => "The %s you entered does not belong to any account. Make sure that it is typed correctly.",
|
||||
'login_err_no_account' => "The email address you entered does not belong to any account. Make sure that it is typed correctly.",
|
||||
'login_err_bad_password' => "The password you entered is incorrect. Please try again (make sure your caps lock is off).",
|
||||
'login_err_locked_unlock' => "Your account has been locked. Try again in {# [1:minute][?:minutes]}.",
|
||||
'login_err_locked_nounlock' => "Your account has been locked. Try again later.",
|
||||
@@ -106,6 +107,8 @@ $lang = array(
|
||||
'requirements_mysql_utf8_info' => "%s is %s",
|
||||
'requirements_file_system' => "File System",
|
||||
'requirements_file_writable' => "%s is writable",
|
||||
'requirements_mysql_timeout' => "Your MySQL %s system variable is currently set to an extremely low value (%s). The default MySQL value is 28800. It is recommended to increase this MySQL system variable to at least 20 in order to prevent potential problems with queries timing out.",
|
||||
'dir_not_provided' => "No directory provided. Please check file storage configurations.",
|
||||
'dir_does_not_exist' => "%s does not exist.",
|
||||
'dir_is_not_writable' => "%s cannot be written to. Please adjust the permissions on it or contact your hosting provider for assistance.",
|
||||
'file_storage_test_error_amazon' => "There appears to be a problem with your Amazon (%s) file storage settings which can cause problems with uploads.<br> After attempting to upload a file to the directory, the URL to the file is returning a HTTP %s error. Update your settings and then check and see if the problem has been resolved",
|
||||
@@ -507,7 +510,7 @@ $lang = array(
|
||||
/* ! 101000 revert globalTemplate */
|
||||
'101000_globalTemplate_revert' => "Revert custom themes which contain out of date globalTemplate templates?",
|
||||
'101000_globalTemplate_revert_desc' => "In Invision Community 4.1, the template 'utilitiesMenu' has been removed. This is used within the globalTemplate. After upgrading, you may see a message about the theme being out of date if you do not revert.<br><strong>Reverting templates will lose any customizations</strong>",
|
||||
'101000_yes' => "Yes, revert losing customiztions",
|
||||
'101000_yes' => "Yes, revert losing customizations",
|
||||
'101000_no' => "No, I will manually adjust the templates after upgrading",
|
||||
|
||||
/* ! CMS 101000 Options */
|
||||
@@ -522,11 +525,14 @@ $lang = array(
|
||||
|
||||
/* ! Core 101079 Diagnostic reporting option */
|
||||
'101079_diagnostics_reporting' => "Send diagnostics data to IPS?",
|
||||
'101079_diagnostics_reporting_desc' => "This distribution is nulled and this setting does not work. Help Invision Community improve by automatically sending usage and diagnostic information. The data sent does not contain any private information about your users or your community.",
|
||||
'101079_diagnostics_reporting_desc' => "This distribution is nulled and this setting does not work. Help Invision Community improve by automatically sending diagnostic information. The data sent does not contain any private information about your users or your community.",
|
||||
|
||||
/* ! Core 102000 Letter photo option */
|
||||
'options_letter_photos' => "Enable letter photos?",
|
||||
'options_letter_photos_desc' => "Do you wish to start using automatic letter photos instead of the default theme profile photo for users who have not uploaded a profile photo?",
|
||||
|
||||
/* ! IPS Connect discontinued warning */
|
||||
'ipsconnect' => "IPS Connect",
|
||||
|
||||
'no_apps_upgrade' => 'There are no applications available to upgrade',
|
||||
'exit_upgrader' => "Exit upgrader",
|
||||
@@ -535,7 +541,6 @@ $lang = array(
|
||||
'convert_charset_info' => "Your community suite data or database configuration is saved in an encoding other than UTF-8. Before your site can be upgraded, we must convert the encoding to UTF-8.",
|
||||
'start_upgrade' => "Start Upgrade",
|
||||
'continue_upgrade' => "Continue Upgrade",
|
||||
'start_fresh_upgrade' => "Start Fresh Upgrade",
|
||||
'continue_not_set' => "Not set",
|
||||
'unfinished_upgrade_info' => "You have an unfinished upgrade from %s",
|
||||
'hc_designers_mode' => "Designers' Mode On",
|
||||
@@ -556,5 +561,28 @@ $lang = array(
|
||||
'start_info' => "This process will install your software for you. Be sure you have your license key and MySQL database details to hand.",
|
||||
'install_docs' => "Install Guide",
|
||||
'js_confirm_mrerror' => 'The server encountered multiple instances where it has stopped responding.\nPress \'OK\' to reload this page and re-run this installation step.',
|
||||
'hc_files' => "File Check",
|
||||
'hc_files_ok' => "Source files are correct for the latest version",
|
||||
'hc_files_fail' => "Some source files are not correct for the latest version. If you uploaded the files to your server manually, the process may have failed or not completed yet, or a new version may have been released since you downloaded. Download latest version from your client area and upload the files again in order to continue.",
|
||||
'hc_files_fail2' => "Go To Client Area",
|
||||
'hc_files_fail3' => "If you are sure the files have been uploaded correctly, make sure the permissions are set correctly on them.",
|
||||
|
||||
/* ! Core - 4.3 - Removing HTTPS settings */
|
||||
'https_settings_changes' => "HTTPS Settings Changes",
|
||||
'103000_usage_reporting' => "Send usage data to IPS?",
|
||||
'103000_usage_reporting_desc' => "Help Invision Community improve by automatically sending usage information including a list of features in use and basic statistics. The data sent does not contain any private information about your users or your community.",
|
||||
'admincp_hide_deprecate' => "Hide AdminCP link",
|
||||
'recaptcha_v1_removed' => "CAPTCHA Settings",
|
||||
'103000_ipsconnect_url' => "IPS Connect Master Site URL",
|
||||
'103000_ipsconnect_client_id' => "IPS Connect Client Identifier",
|
||||
'103000_ipsconnect_client_secret' => "IPS Connect Client Secret",
|
||||
|
||||
'files-1' => "File could not be opened: %s",
|
||||
'files-2' => "File does not exist: %s",
|
||||
'files-4' => "File could not be copied: %s",
|
||||
'files-5' => "File could not be moved: %s",
|
||||
'files-3' => "File could not be saved: %s",
|
||||
'files-6' => "Folder could not be created: %s",
|
||||
'files-7' => "Response returned a 400 response code but no Amazon region was returned: %s",
|
||||
|
||||
);
|
||||
Reference in new issue
Block a user