Compare commits

...

53 commits
4.0.6 ... 4.2

Author SHA1 Message Date
chevereto
ed56a10e50 Automatic push 4.2.4 2024-12-05 13:33:13 +00:00
Rodolfo Berrios
ecf4742588
update screen 2024-11-27 18:24:25 -03:00
Rodolfo Berrios
0426ff90c1
Update README.md
edition compare
2024-11-27 18:17:38 -03:00
Rodolfo Berrios
62bee30a42
Add requirements
close #94
2024-11-27 18:13:17 -03:00
Rodolfo Berrios
a6d8888af6
Update README.md 2024-11-24 08:32:03 -03:00
chevereto
ebd7cd081c Automatic push 4.2.3 2024-11-18 22:22:00 +00:00
chevereto
0ad52d80f1 Automatic push 4.2.3 2024-11-18 12:51:08 +00:00
Rodolfo Berrios
7c29ba0424
Merge pull request #89 from antropolouco/patch-5 2024-11-17 17:36:27 -03:00
Thiago Cavalcanti
9cf7d71085
Update pt-BR.po
More updates to Brazilian Portuguese translation, making it more fluid and natural for native speakers. More than 50% of the file was reviewed at this point (work in progress).
2024-11-14 15:36:43 -03:00
Rodolfo Berrios
0cca40399b
Merge pull request #87 from antropolouco/patch-2
Update pt.po
2024-11-14 12:11:43 -03:00
Rodolfo Berrios
e46e23c920
Merge pull request #86 from antropolouco/patch-3
Update pt-BR.po
2024-11-14 12:11:09 -03:00
Thiago Cavalcanti
46746ae763
Update pt-BR.po
Improving Brazilian Portuguese translation. Found mistakes related to proper reference to past time (we should never use "a", but "há" when it comes to time, and never append "atrás" to "há", for example), and "adicionar" (the act of adding) instead of "adicionado" (which means added).
2024-11-14 11:55:43 -03:00
Thiago Cavalcanti
68a1e3da5a
Update pt.po
Improving Portuguese translation. Mistakes related to proper reference to past time, same as the commit for pt-BR.po.
2024-11-14 11:52:38 -03:00
chevereto
6fbd5e2d84 Automatic push 4.2.2 2024-11-07 18:49:03 +00:00
Rodolfo Berrios
55a98d0286
sql update chevereto_version_installed 2024-11-07 11:07:41 -03:00
Rodolfo Berrios
d13ad37f0c
prevent session_start false positive 2024-11-07 10:22:59 -03:00
Rodolfo Berrios
31b37b7574
close #85 2024-11-05 17:11:47 -03:00
chevereto
03f09cff1a Automatic push 4.2.1 2024-11-04 15:00:36 +00:00
chevereto
edc9a5cb09 Automatic push 4.2.1 2024-11-04 12:38:10 +00:00
chevereto
e658c086e0 Automatic push 4.2.1 2024-11-04 12:10:06 +00:00
Rodolfo Berrios
53449a3f57
missing files/code 2024-10-28 11:02:01 -03:00
Rodolfo Berrios
f9071bce3d
mysql support for tags 2024-10-28 11:01:12 -03:00
Rodolfo Berrios
651c863cc2
missing file 2024-10-25 17:59:15 -03:00
Rodolfo Berrios
7d8571c680
Update README.md 2024-10-24 21:21:16 -03:00
chevereto
05318e7545 Automatic push 4.2.0 2024-10-24 14:11:04 +00:00
Rodolfo Berrios
4e796d821a
drop pos to nic 2024-10-14 11:04:39 -03:00
Rodolfo Berrios
fb5ef97461
close #71 2024-09-26 11:13:04 -03:00
Rodolfo Berrios
ee8ee19862
Update README.md 2024-09-26 11:07:07 -03:00
chevereto
303d4322c1 Automatic push 4.1.4 2024-05-24 15:28:40 +00:00
chevereto
3059e4843d Automatic push 4.1.3 2024-05-13 19:53:04 +00:00
Rodolfo Berrios
1202d38387
Update README.md 2024-05-08 12:19:17 -04:00
chevereto
f2ef7a981f Automatic push 4.1.2 2024-05-06 17:49:12 +00:00
Rodolfo Berrios
89d66d15d4
Update README.md 2024-05-02 20:04:15 -04:00
chevereto
7311e9fc52 Automatic push 4.1.1 2024-04-27 20:56:57 +00:00
chevereto
b47fbf6bd8 Automatic push 4.1.1 2024-04-27 14:34:48 +00:00
chevereto
c8b0b3939d Automatic push 4.1.0 2024-04-20 15:54:04 +00:00
Rodolfo Berrios
8117e52ef3
Update README.md 2024-04-20 09:39:39 -04:00
Rodolfo Berrios
5ca43087dd
Update README.md 2024-03-31 10:00:11 -03:00
Rodolfo Berrios
c43666f8d5
I'm the boogeyman 2024-03-27 09:53:14 -03:00
Rodolfo Berrios
39cdf0f1a3
Update README.md
EsQueNoPuedoDiscordTodoEsto
2024-03-26 14:12:53 -03:00
chevereto
b457d80888 Automatic push 4.0.12 2024-03-12 12:58:03 +00:00
Rodolfo Berrios
9c8fb65c71
add awsmfoss 2024-02-26 14:01:27 -03:00
chevereto
0a1ab32eeb Automatic push 4.0.11 2024-02-21 18:55:20 +00:00
chevereto
6bc0fe6066 Automatic push 4.0.10 2024-02-07 14:26:55 +00:00
chevereto
22cfa902a9 Automatic push 4.0.10 2024-02-07 14:16:32 +00:00
chevereto
93edcbe481 Automatic push 4.0.9 2023-08-29 15:24:50 +00:00
chevereto
ce8b37bbbc Automatic push 4.0.9 2023-08-29 10:15:57 +00:00
Rodolfo Berrios
de53833053
Update app.php 2023-08-29 06:11:53 -04:00
chevereto
f4d6bd709f Automatic push 4.0.9 2023-08-27 15:44:45 +00:00
chevereto
78dcb32baa Automatic push 4.0.8 2023-05-22 16:54:45 +00:00
Rodolfo Berrios
686f6702f9
Merge pull request #14 from tmyngu11/fix-broken-links
Fix broken links on new Pages
2023-04-12 11:15:00 -04:00
Tommy
43d26b0e77 Fix broken links 2023-03-19 21:51:16 -04:00
chevereto
9c0f0c4933 Automatic push 4.0.7 2023-02-06 13:21:43 +00:00
452 changed files with 151276 additions and 177600 deletions

View file

@ -1,9 +1,9 @@
<?php
/*
* This file is part of Chevere.
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevere.org>
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
@ -11,202 +11,113 @@
declare(strict_types=1);
use PhpCsFixer\Fixer\Alias\NoAliasFunctionsFixer;
use PhpCsFixer\Fixer\Alias\NoAliasLanguageConstructCallFixer;
use PhpCsFixer\Fixer\Alias\NoMixedEchoPrintFixer;
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer;
use PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer;
use PhpCsFixer\Fixer\Basic\BracesFixer;
use PhpCsFixer\Fixer\Basic\EncodingFixer;
use PhpCsFixer\Fixer\Casing\ConstantCaseFixer;
use PhpCsFixer\Fixer\Casing\LowercaseKeywordsFixer;
use PhpCsFixer\Fixer\CastNotation\LowercaseCastFixer;
use PhpCsFixer\Fixer\CastNotation\ShortScalarCastFixer;
use PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer;
use PhpCsFixer\Fixer\ClassNotation\ClassDefinitionFixer;
use PhpCsFixer\Fixer\ClassNotation\NoBlankLinesAfterClassOpeningFixer;
use PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer;
use PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer;
use PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoMultilineWhitespaceAroundDoubleArrowFixer;
use PhpCsFixer\Fixer\ArrayNotation\NormalizeIndexBraceFixer;
use PhpCsFixer\Fixer\Casing\IntegerLiteralCaseFixer;
use PhpCsFixer\Fixer\Casing\LowercaseStaticReferenceFixer;
use PhpCsFixer\Fixer\Casing\MagicConstantCasingFixer;
use PhpCsFixer\Fixer\Casing\MagicMethodCasingFixer;
use PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer;
use PhpCsFixer\Fixer\Casing\NativeFunctionTypeDeclarationCasingFixer;
use PhpCsFixer\Fixer\CastNotation\NoShortBoolCastFixer;
use PhpCsFixer\Fixer\CastNotation\NoUnsetCastFixer;
use PhpCsFixer\Fixer\Comment\HeaderCommentFixer;
use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer;
use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer;
use PhpCsFixer\Fixer\ControlStructure\ElseifFixer;
use PhpCsFixer\Fixer\ControlStructure\IncludeFixer;
use PhpCsFixer\Fixer\ControlStructure\NoBreakCommentFixer;
use PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer;
use PhpCsFixer\Fixer\ControlStructure\NoUnneededCurlyBracesFixer;
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer;
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSpaceFixer;
use PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer;
use PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer;
use PhpCsFixer\Fixer\FunctionNotation\NoSpacesAfterFunctionNameFixer;
use PhpCsFixer\Fixer\FunctionNotation\ReturnTypeDeclarationFixer;
use PhpCsFixer\Fixer\Import\NoLeadingImportSlashFixer;
use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
use PhpCsFixer\Fixer\ControlStructure\NoAlternativeSyntaxFixer;
use PhpCsFixer\Fixer\FunctionNotation\LambdaNotUsedImportFixer;
use PhpCsFixer\Fixer\Import\OrderedImportsFixer;
use PhpCsFixer\Fixer\Import\SingleImportPerStatementFixer;
use PhpCsFixer\Fixer\Import\SingleLineAfterImportsFixer;
use PhpCsFixer\Fixer\LanguageConstruct\CombineConsecutiveUnsetsFixer;
use PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer;
use PhpCsFixer\Fixer\NamespaceNotation\BlankLineAfterNamespaceFixer;
use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\Operator\ConcatSpaceFixer;
use PhpCsFixer\Fixer\Operator\NewWithBracesFixer;
use PhpCsFixer\Fixer\LanguageConstruct\SingleSpaceAroundConstructFixer;
use PhpCsFixer\Fixer\ListNotation\ListSyntaxFixer;
use PhpCsFixer\Fixer\NamespaceNotation\CleanNamespaceFixer;
use PhpCsFixer\Fixer\Operator\NoSpaceAroundDoubleColonFixer;
use PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer;
use PhpCsFixer\Fixer\Operator\TernaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer;
use PhpCsFixer\Fixer\PhpTag\FullOpeningTagFixer;
use PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer;
use PhpCsFixer\Fixer\Operator\StandardizeNotEqualsFixer;
use PhpCsFixer\Fixer\PhpTag\LinebreakAfterOpeningTagFixer;
use PhpCsFixer\Fixer\ReturnNotation\NoUselessReturnFixer;
use PhpCsFixer\Fixer\ReturnNotation\ReturnAssignmentFixer;
use PhpCsFixer\Fixer\Semicolon\MultilineWhitespaceBeforeSemicolonsFixer;
use PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer;
use PhpCsFixer\Fixer\Semicolon\NoSinglelineWhitespaceBeforeSemicolonsFixer;
use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
use PhpCsFixer\Fixer\Whitespace\BlankLineBeforeStatementFixer;
use PhpCsFixer\Fixer\Whitespace\CompactNullableTypehintFixer;
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
use PhpCsFixer\Fixer\Whitespace\LineEndingFixer;
use PhpCsFixer\Fixer\Whitespace\NoExtraBlankLinesFixer;
use PhpCsFixer\Fixer\Whitespace\NoSpacesInsideParenthesisFixer;
use PhpCsFixer\Fixer\Whitespace\NoTrailingWhitespaceFixer;
use PhpCsFixer\Fixer\Whitespace\SingleBlankLineAtEofFixer;
use SlevomatCodingStandard\Sniffs\ControlStructures\RequireShortTernaryOperatorSniff;
use SlevomatCodingStandard\Sniffs\Functions\UnusedInheritedVariablePassedToClosureSniff;
use SlevomatCodingStandard\Sniffs\Operators\RequireCombinedAssignmentOperatorSniff;
use SlevomatCodingStandard\Sniffs\PHP\DisallowDirectMagicInvokeCallSniff;
use SlevomatCodingStandard\Sniffs\PHP\UselessParenthesesSniff;
use SlevomatCodingStandard\Sniffs\PHP\UselessSemicolonSniff;
use SlevomatCodingStandard\Sniffs\Variables\UnusedVariableSniff;
use SlevomatCodingStandard\Sniffs\Variables\UselessVariableSniff;
use PhpCsFixer\Fixer\Whitespace\TypesSpacesFixer;
use Symplify\CodingStandard\Fixer\Commenting\ParamReturnAndVarTagMalformsFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Option;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ECSConfig $containerConfigurator): void {
return static function (ECSConfig $ecsConfig): void {
$ecsConfig->parallel();
$headerFile = __DIR__ . '/.header';
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SETS, [
SetList::COMMON,
]);
$services = $containerConfigurator->services();
$ecsConfig->sets([SetList::PSR_12, SetList::COMMON]);
if (file_exists($headerFile)) {
$services->set(HeaderCommentFixer::class)
->call('configure', [[
'header' => file_get_contents($headerFile),
'location' => 'after_open',
]]);
$ecsConfig->ruleWithConfiguration(HeaderCommentFixer::class, [
'header' => file_get_contents($headerFile),
'location' => 'after_open',
]);
}
$services->set(EncodingFixer::class);
$services->set(FullOpeningTagFixer::class);
$services->set(BlankLineAfterNamespaceFixer::class);
$services->set(BracesFixer::class);
$services->set(ClassDefinitionFixer::class);
$services->set(ConstantCaseFixer::class);
$services->set(ElseifFixer::class);
$services->set(FunctionDeclarationFixer::class);
$services->set(IndentationTypeFixer::class);
$services->set(LineEndingFixer::class);
$services->set(LowercaseKeywordsFixer::class);
$services->set(MethodArgumentSpaceFixer::class)
->call('configure', [[
'on_multiline' => 'ensure_fully_multiline',
]]);
$services->set(NoBreakCommentFixer::class);
$services->set(NoClosingTagFixer::class);
$services->set(NoSpacesAfterFunctionNameFixer::class);
$services->set(NoSpacesInsideParenthesisFixer::class);
$services->set(NoTrailingWhitespaceFixer::class);
$services->set(NoTrailingWhitespaceInCommentFixer::class);
$services->set(SingleBlankLineAtEofFixer::class);
$services->set(SingleClassElementPerStatementFixer::class)
->call('configure', [[
'elements' => ['property'],
]]);
$services->set(SingleImportPerStatementFixer::class);
$services->set(SingleLineAfterImportsFixer::class);
// $services->set(SwitchCaseSemicolonToColonFixer::class); broken for php 8.0
$services->set(SwitchCaseSpaceFixer::class);
$services->set(VisibilityRequiredFixer::class);
$services->set(LowercaseCastFixer::class);
$services->set(ShortScalarCastFixer::class);
$services->set(BlankLineAfterOpeningTagFixer::class);
$services->set(NoLeadingImportSlashFixer::class);
$services->set(OrderedImportsFixer::class)
->call('configure', [[
'importsOrder' => ['class', 'function', 'const'],
]]);
$services->set(DeclareEqualNormalizeFixer::class)
->call('configure', [[
'space' => 'none',
]]);
$services->set(NewWithBracesFixer::class);
$services->set(BracesFixer::class)
->call('configure', [[
'allow_single_line_closure' => false,
'position_after_functions_and_oop_constructs' => 'next',
'position_after_control_structures' => 'same',
'position_after_anonymous_constructs' => 'same',
]]);
$services->set(NoBlankLinesAfterClassOpeningFixer::class);
$services->set(VisibilityRequiredFixer::class)
->call('configure', [[
'elements' => ['const', 'method', 'property'],
]]);
$services->set(BinaryOperatorSpacesFixer::class);
$services->set(TernaryOperatorSpacesFixer::class);
$services->set(UnaryOperatorSpacesFixer::class);
$services->set(ReturnTypeDeclarationFixer::class);
$services->set(NoTrailingWhitespaceFixer::class);
$services->set(ConcatSpaceFixer::class)
->call('configure', [[
'spacing' => 'one',
]]);
$services->set(NoSinglelineWhitespaceBeforeSemicolonsFixer::class);
$services->set(NoWhitespaceBeforeCommaInArrayFixer::class);
$services->set(WhitespaceAfterCommaInArrayFixer::class);
$services->set(DeclareStrictTypesFixer::class);
$services->set(CompactNullableTypehintFixer::class);
$services->set(BlankLineBeforeStatementFixer::class);
$services->set(CombineConsecutiveUnsetsFixer::class);
$services->set(ClassAttributesSeparationFixer::class);
$services->set(MultilineWhitespaceBeforeSemicolonsFixer::class);
$services->set(SingleLineCommentStyleFixer::class);
$services->set(IncludeFixer::class);
$services->set(ObjectOperatorWithoutWhitespaceFixer::class);
$services->set(DisallowDirectMagicInvokeCallSniff::class);
$services->set(ParamReturnAndVarTagMalformsFixer::class);
$services->set(UnusedVariableSniff::class);
$services->set(UselessVariableSniff::class);
$services->set(UnusedInheritedVariablePassedToClosureSniff::class);
$services->set(UselessSemicolonSniff::class);
// $services->set(UselessParenthesesSniff::class); // broken for php 8.0
$services->set(ArraySyntaxFixer::class)
->call('configure', [[
'syntax' => 'short',
]]);
$services->set(NoUnusedImportsFixer::class);
$services->set(OrderedImportsFixer::class);
$services->set(NoEmptyStatementFixer::class);
$services->set(ProtectedToPrivateFixer::class);
$services->set(NoUnneededControlParenthesesFixer::class);
$services->set(NoUnneededCurlyBracesFixer::class);
$services->set(ReturnAssignmentFixer::class);
$services->set(RequireShortTernaryOperatorSniff::class);
$services->set(RequireCombinedAssignmentOperatorSniff::class);
$services->set(NoExtraBlankLinesFixer::class)
->call('configure', [[
'tokens' => [
'curly_brace_block',
'extra',
'parenthesis_brace_block',
'square_brace_block',
'throw',
'use',
]
]]);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SKIP, [
$ecsConfig->rule(TypesSpacesFixer::class);
$ecsConfig->rule(NoUselessReturnFixer::class);
$ecsConfig->rule(LinebreakAfterOpeningTagFixer::class);
$ecsConfig->rule(StandardizeNotEqualsFixer::class);
$ecsConfig->rule(NoSpaceAroundDoubleColonFixer::class);
$ecsConfig->rule(CleanNamespaceFixer::class);
$ecsConfig->rule(ListSyntaxFixer::class);
$ecsConfig->rule(SingleSpaceAroundConstructFixer::class);
$ecsConfig->rule(LambdaNotUsedImportFixer::class);
$ecsConfig->rule(NoAlternativeSyntaxFixer::class);
$ecsConfig->rule(NoUnsetCastFixer::class);
$ecsConfig->rule(NoShortBoolCastFixer::class);
$ecsConfig->rule(NativeFunctionTypeDeclarationCasingFixer::class);
$ecsConfig->rule(NativeFunctionCasingFixer::class);
$ecsConfig->rule(MagicMethodCasingFixer::class);
$ecsConfig->rule(MagicConstantCasingFixer::class);
$ecsConfig->rule(LowercaseStaticReferenceFixer::class);
$ecsConfig->rule(IntegerLiteralCaseFixer::class);
$ecsConfig->rule(NormalizeIndexBraceFixer::class);
$ecsConfig->rule(NoMultilineWhitespaceAroundDoubleArrowFixer::class);
$ecsConfig->rule(BlankLineBeforeStatementFixer::class);
$ecsConfig->rule(CombineConsecutiveUnsetsFixer::class);
$ecsConfig->rule(CompactNullableTypehintFixer::class);
$ecsConfig->rule(DeclareStrictTypesFixer::class);
$ecsConfig->rule(IncludeFixer::class);
$ecsConfig->rule(MultilineWhitespaceBeforeSemicolonsFixer::class);
$ecsConfig->rule(NoAliasFunctionsFixer::class);
$ecsConfig->rule(NoAliasLanguageConstructCallFixer::class);
$ecsConfig->rule(NoEmptyStatementFixer::class);
$ecsConfig->rule(NoMixedEchoPrintFixer::class);
$ecsConfig->rule(ObjectOperatorWithoutWhitespaceFixer::class);
$ecsConfig->rule(ParamReturnAndVarTagMalformsFixer::class);
$ecsConfig->rule(ReturnAssignmentFixer::class);
$ecsConfig->ruleWithConfiguration(SingleLineCommentStyleFixer::class, [
'comment_types' => ['hash'],
]);
$ecsConfig->rule(SingleQuoteFixer::class);
$ecsConfig->ruleWithConfiguration(OrderedImportsFixer::class, [
'imports_order' => ['class', 'function', 'const'],
]);
$ecsConfig->ruleWithConfiguration(ArraySyntaxFixer::class, [
'syntax' => 'short',
]);
$ecsConfig->ruleWithConfiguration(NoExtraBlankLinesFixer::class, [
'tokens' => [
'curly_brace_block',
'extra',
'parenthesis_brace_block',
'square_brace_block',
'throw',
'use',
],
]);
$ecsConfig->skip([
SingleImportPerStatementFixer::class => null,
]);
};

View file

@ -10,13 +10,15 @@
*/
use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
use PhpCsFixer\Fixer\Strict\StrictComparisonFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Option;
return static function (ECSConfig $containerConfigurator): void {
$containerConfigurator->import(__DIR__ . '/ecs-chevere.php');
$services = $containerConfigurator->services();
$services->remove(DeclareStrictTypesFixer::class);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SKIP, []);
return static function (ECSConfig $ecsConfig): void {
$ecsConfig->import(__DIR__ . '/ecs-chevere.php');
$ecsConfig->skip([
DeclareStrictTypesFixer::class,
StrictComparisonFixer::class,
getcwd() . '/vendor/*',
getcwd() . '/content/legacy/themes/Peafowl/',
]);
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

View file

@ -15,10 +15,13 @@ jobs:
matrix:
os: [ubuntu-latest]
php: ["8.1"]
env:
tools: composer
ini-values: default_charset='UTF-8'
name: Build on PHP ${{ matrix.php }} ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get current branch
@ -27,27 +30,42 @@ jobs:
raw=$(git branch -r --contains ${{ github.ref }})
echo "branch=${raw##*/}" >> $GITHUB_OUTPUT
- run: echo ${{ steps.get-branch.outputs.branch }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
ini-values: ${{ env.ini-values }}
tools: ${{ env.tools }}
env:
fail-fast: true
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: |
chevereto/chevereto
${{ env.GHCR_SLUG }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
labels: |
org.opencontainers.image.title=Chevereto V4
org.opencontainers.image.description=Ultimate image sharing software 🦄
org.opencontainers.image.description=Ultimate image and video sharing software
org.opencontainers.image.vendor=Chevereto
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GHCR
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@ -66,6 +84,7 @@ jobs:
rm -rf README.md chevereto.svg rector.php
rm -rf app/tests app/phpunit*.xml
rm -rf app/.editions app/bin/edition
mkdir images/_assets
mkdir importing/{parse-users,parse-albums,no-parse}
mv .package ..
ls -la ../.package
@ -83,19 +102,17 @@ jobs:
run: |
cp -a ./. ../docker/chevereto/
ls -la ../docker/chevereto
- name: Build
uses: docker/bake-action@v2
- name: Build and push
uses: docker/build-push-action@v5
with:
workdir: ../docker
set: build.args.PHP=${{ matrix.php }}
files: |
./docker-bake.hcl
${{ steps.meta.outputs.bake-file }}
targets: build
context: ../docker
platforms: linux/amd64,linux/arm64
push: true
provenance: false
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Check manifest
run: |
docker buildx imagetools inspect ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}
run: docker buildx imagetools inspect ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}
- name: Inspect image
run: |
docker pull ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}

View file

@ -1,4 +1,4 @@
name: Release
name: Release Free edition
on:
push:
@ -15,7 +15,6 @@ jobs:
env:
tools: composer
ini-values: default_charset='UTF-8'
key: cache-1633608016315
name: Release on PHP ${{ matrix.php-versions }} ${{ matrix.operating-system }}
steps:
- name: Checkout
@ -55,23 +54,16 @@ jobs:
rm -rf README.md chevereto.svg rector.php
rm -rf app/tests app/phpunit*.xml
rm -rf app/.editions app/bin/edition
mkdir images/_assets
mkdir importing/{parse-users,parse-albums,no-parse}
mv .package ..
ls -la ../.package
- name: Archive lite
uses: thedoctor0/zip-release@master
with:
directory: "."
type: "zip"
filename: "${{ github.ref_name}}-lite.zip"
exclusions: "/*app/vendor/*"
- name: Archive release
uses: thedoctor0/zip-release@master
with:
directory: "."
type: "zip"
filename: "${{ github.ref_name}}.zip"
exclusions: "${{ github.ref_name}}-lite.zip"
- name: Upload artifacts
uses: ncipollo/release-action@v1
with:
@ -80,6 +72,5 @@ jobs:
bodyFile: "../.package/${{ github.ref_name}}.txt"
artifacts: >
../.package/${{ github.ref_name}}.txt,
${{ github.ref_name}}.zip,
${{ github.ref_name}}-lite.zip
${{ github.ref_name}}.zip
token: ${{ secrets.GITHUB_TOKEN }}

2
.gitignore vendored
View file

@ -1,6 +1,8 @@
.DS_Store
/.env
/.idea
/app/.upgrading
/app/CHEVERETO_LICENSE_KEY**
/app/vendor
/app/build
/app/.phpunit.cache

View file

@ -20,12 +20,12 @@ Options -MultiViews
#RewriteRule images/.+\.(gif|jpe?g|a?png|bmp|webp) content/images/system/default/404.gif [NC,L]
RewriteRule images/.+\.(gif|jpe?g|png|bmp|webp) - [NC,L,R=404]
# PHP front controller
# PHP front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
# Single PHP-entrypoint
RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] [NC]
RewriteRule \.php$ - [NC,L,F,R=404]
</IfModule>
# Single PHP-entrypoint
RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] [NC]
RewriteRule \.php$ - [NC,L,F,R=404]
</IfModule>

View file

@ -1,18 +0,0 @@
Chevereto 4.0.6 (2022-01-03)
- ✅ Improved user avatar upload handling
- 🐘 Added support for PHP 8.2
- 🐞 Fixed bug with consent screen
- 🐞 Fixed bug with undefined constant
- 🐞 Fixed bug with flood uploads notify
- 🐞 Fixed bug with forced privacy settings
- 🐞 Fixed bug with not working enter key on textarea
- 🐞 Fixed bug with not working pages
- 🐞 Fixed bug with wrong links on notification emails
- 🐞 Fixed bug with wrong links on tabs
- 💅 Improved button display (compact style)
- 💅 Improved display for RTL languages
- 💅 Listing viewer now goes zoom-in by default
- 💅 Removed listing viewer keyboard shortcuts reference
- 🦄 Added customizable semantics for content
- 🛍️ Added custom call to action buttons for albums

8
.package/4.2.4.txt Normal file
View file

@ -0,0 +1,8 @@
Chevereto 4.2.4 (2024-12-05)
- Added Chevereto Lite edition
- Added placeholders for comments code
- Improved comment code page id
- Improved ENV handling
- Fixed bug affecting CLI runtime
- Fixed bug affecting MariaDB 10.4 compatibility

View file

@ -1,13 +1,13 @@
__ __
____/ / ___ _ _____ _______ / /____
/ __/ _ \/ -_) |/ / -_) __/ -_) __/ _ \
__ __
____/ / ___ _ _____ _______ / /____
/ __/ _ \/ -_) |/ / -_) __/ -_) __/ _ \
\__/_//_/\__/|___/\__/_/ \__/\__/\___/
https://chevereto.com/
This package is another quality release
made by Chevereto Software. We ship
indie software from Concepcion, Chile
made by Chevereto Software. We build
indie software from Concepcion (Chile)
to the rest of the world.
Many thanks for using our software and
@ -15,6 +15,8 @@ trusting our work. This software exists
thanks to your ongoing support.
~
Rodolfo Berrios A.
https://rodolfoberrios.com/
GRACIAS
GRACIAS!
(Thank you!)

View file

@ -9,6 +9,7 @@
* file that was distributed with this source code.
*/
use function Chevereto\Legacy\getCheveretoEnv;
use function Chevereto\Legacy\loaderHandler;
class CustomTinkerwellDriver extends TinkerwellDriver
@ -25,7 +26,7 @@ class CustomTinkerwellDriver extends TinkerwellDriver
require $projectPath . '/app/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: $_ENV,
_env: getCheveretoEnv(),
_files: [],
_get: [],
_post: [],

View file

@ -1,27 +1,71 @@
# Chevereto: Ultimate image sharing software 🦄
> 🔔 [Subscribe](https://chv.to/newsletter) to don't miss any update regarding Chevereto.
# Chevereto: Ultimate image and video sharing software
<p align="center">
<img alt="Chevereto" src="chevereto.svg" width="50%">
<a href="https://chevereto.com"><img alt="Chevereto" src="chevereto.svg" width="80%"></a>
</p>
![CHUISS](.github/banner/chevereto-ultimate.png)
[![Chevereto](.github/banner/chevereto-ultimate-remix.png)](https://chevereto.com)
[![Community](https://img.shields.io/badge/chv.to-community-blue?style=flat-square)](https://chv.to/community)
[![Chevereto Docs](https://img.shields.io/badge/chevereto-docs-50C878?style=flat-square)](https://v4-docs.chevereto.com/)
[![Chevereto Community](https://img.shields.io/badge/chevereto-community-blue?style=flat-square)](https://chevereto.com/community)
[![Chevereto Demo](https://img.shields.io/badge/chevereto-demo-d4af37?style=flat-square&color=red)](https://demo.chevereto.com)
[![AGPL-3.0-only](https://img.shields.io/github/license/chevereto/chevereto?style=flat-square)](LICENSE)
[![Legacy stars](https://img.shields.io/github/stars/rodber/chevereto-free?style=flat-square&logo=github&label=Legacy%20stars&color=gold)](https://github.com/rodber/chevereto-free)
[![Awesome F/OSS](https://img.shields.io/badge/Awesome_F%2FOSS-Certified-black?colorA=&colorB=874efe&style=flat-square)](https://awsmfoss.com/chevereto/)
Chevereto enables to create an image sharing website on your own server. It's your hosting and your rules, say goodbye to closures and restrictions.
> 🔔 [Subscribe](https://chevereto.com/go/newsletter) to don't miss any update regarding Chevereto.
![screen](.github/screen/user-profile.jpeg)
Chevereto is a robust, self-hosted media-sharing platform that prioritizes flexibility and control. It enables you to build and manage a media-sharing website on your own server, granting you complete autonomy over your hosting environment and policies. With Chevereto, you eliminate the risk of platform restrictions and shutdowns, ensuring your site operates entirely on your terms.
This is the repository for **Chevereto Free** edition. You can [compare editions](https://v4-docs.chevereto.com/introduction/editions/compare.html) to find the Chevereto edition that best suits your needs.
![screen](.github/screen/user-listing-selected.webp)
## Requirements
* A [webserver](https://v4-docs.chevereto.com/application/stack/web-server.html) (Apache recommended)
* [PHP](https://v4-docs.chevereto.com/application/stack/php.html) 8.1+ with [extensions](https://v4-docs.chevereto.com/application/stack/php.html#extensions)
* [MySQL Server](https://v4-docs.chevereto.com/application/stack/mysql-server.html) 8.0.1+ or MariaDB Server 10.2.2+
## Install
Chevereto runs anywhere, system requirements are minimal and it can run on any server.
Install Chevereto following our guides for:
* [Docker](https://github.com/chevereto/docker) (Multi-arch image compatible with `x86_64` and `arm64`)
* [Pure Docker](https://v4-docs.chevereto.com/guides/docker/pure-docker)
* [Chevereto Docker](https://v4-docs.chevereto.com/guides/docker/)
* [VPS](https://v4-docs.chevereto.com/guides/server/vps) (DigitalOcean, Linode, Vultr, etc)
* [cPanel](https://v4-docs.chevereto.com/guides/cpanel/)
* [Plesk](https://v4-docs.chevereto.com/guides/plesk/)
Chevereto is also available at [DigitalOcean Marketplace](https://chevereto.com/go/digitalocean), [Vultr Marketplace](https://chevereto.com/go/vultr), [Installatron](https://installatron.com/chevereto), [Softaculous](https://www.softaculous.com/apps/galleries/Chevereto) and [SwiftWave](https://swiftwave.org/docs/dashboard/swiftwave_app_store/).
Review our [Installation docs](https://v4-docs.chevereto.com/application/installing/installation.html) for all alternatives.
## Updating
* Follow the [Updating guide](https://v4-docs.chevereto.com/application/installing/updating.html) to keep your Chevereto V4 system updated.
## Upgrading
For Chevereto V3 users:
* Follow the [Upgrading guide](https://v4-docs.chevereto.com/application/installing/upgrading.html) to upgrade to Chevereto V4.
* Check the [Welcome Back](https://v4-docs.chevereto.com/introduction/changelog/welcome-back.html#from-chevereto-v3) reference.
For Chevereto V2 users:
* Follow the [Upgrading guide](https://v3-docs.chevereto.com/setup/server/upgrading.html) but skip directly to Chevereto V4.
## Documentation
We provide several layers of documentation covering all aspects of our software. Chevereto documentation is Open Source and your contribution is highly appreciated.
Chevereto [Documentation](https://v4-docs.chevereto.com) covers the system requirements, installation, configuration, and usage of the software. It also includes a [User manual](https://v4-user.chevereto.com/) and an [Admin manual](https://v4-admin.chevereto.com/).
* Software [v4-docs.chevereto.com](https://v4-docs.chevereto.com)
* Admin [v4-admin.chevereto.com](https://v4-admin.chevereto.com)
* User [v4-user.chevereto.com](https://v4-user.chevereto.com)
## Contributing
Chevereto is an open-source project, and while contributions are welcomed, they are entirely voluntary. We appreciate any assistance aimed at enhancing the software and making it better for the community. Please note that any contributions to this repository will fall under the AGPLv3 license, ensuring that your work remains open-source and accessible to all.
## License
@ -33,8 +77,16 @@ This program is free software: you can redistribute it and/or modify it under th
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see [GNU Licenses](http://www.gnu.org/licenses/).
### Commercial license
The commercial license is designed to for you to use Chevereto in commercial products and applications, without the provisions of the AGPLv3. With the commercial license, your code is kept proprietary, to yourself. See the Chevereto Commercial License at [chevereto.com](https://chevereto.com/license)
The commercial license allows you to use Chevereto in commercial products and applications without the obligations imposed by the AGPLv3. The commercial license ensures that your code remains proprietary and exclusive to you. For more details, please refer to the Chevereto Commercial License at [Chevereto License](https://chevereto.com/license).
### Compare licenses
The Chevereto Free edition is licensed under AGPLv3, allowing free use as long as you comply with its terms. If you modify and distribute the software, you are required to provide the source code to your users.
Both **Chevereto Lite** and **Chevereto Pro** are distributed under the proprietary **Chevereto License**, which permits use for commercial purposes.
*Note: Proprietary licensing does not mean closed source; the source code is accessible, but its use is governed by the specific terms of the Chevereto License.*

View file

@ -13,6 +13,20 @@
'base' => 'bg',
'short_name' => 'BG (BG)',
],
'bs-BA' => [
'code' => 'bs-BA',
'dir' => 'ltr',
'name' => 'Bosanski',
'base' => 'bs',
'short_name' => 'BS (BA)',
],
'ca' => [
'code' => 'ca',
'dir' => 'ltr',
'name' => 'Сatalà',
'base' => 'ca',
'short_name' => 'CA',
],
'cs' => [
'code' => 'cs',
'dir' => 'ltr',
@ -34,6 +48,13 @@
'base' => 'de',
'short_name' => 'DE',
],
'de-DE' => [
'code' => 'de-DE',
'dir' => 'ltr',
'name' => 'Deutsch (Deutschland)',
'base' => 'de',
'short_name' => 'DE (DE)',
],
'el' => [
'code' => 'el',
'dir' => 'ltr',
@ -174,6 +195,13 @@
'base' => 'pt',
'short_name' => 'PT (BR)',
],
'ro' => [
'code' => 'ro',
'dir' => 'ltr',
'name' => 'Română',
'base' => 'ro',
'short_name' => 'RO',
],
'ru' => [
'code' => 'ru',
'dir' => 'ltr',

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,749 @@
<?php
$translation_header = array (
'Project-Id-Version' => 'VERSION',
'POT-Creation-Date' => '2023-05-22 15:49+0000',
'PO-Revision-Date' => '2023-05-22 15:49+0000',
'Last-Translator' => 'FULL NAME <EMAIL@ADDRESS>',
'Language-Team' => 'LANGUAGE TEAM <EMAIL@ADDRESS>',
'Language' => 'bs_BA',
'MIME-Version' => '1.0',
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Transfer-Encoding' => '8bit',
'Plural-Forms' => 'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);',
);
$translation_plural = array (
'nplurals' => 3,
'function' => '($n%10==1 && $n%100!=11 ? (0) : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? (1) : (2)))',
);
$translation_table = [
"Request denied" => [
0 => "Zahtjev odbijen",
],
"That page doesn't exist" => [
0 => "Ova stranica ne postoji",
],
"Reset password" => [
0 => "Promjeni lozinku",
],
"Resend account activation" => [
0 => "Pošalji aktivaciju za korisnički račun ponovno",
],
"Add your email address" => [
0 => "Dodaj E-mail adresu",
],
"Awaiting confirmation" => [
0 => "Očekujem potvrdu",
],
"Email changed" => [
0 => "E-mail adresa je promijenjena",
],
"Invalid Username/Email" => [
0 => "Pogrešno ste upisali korisničko ime ili e-mail adresu",
],
"Account needs to be activated to use this feature" => [
0 => "Profil treba da bude aktiviran za ove pogodnosti",
],
"Account already activated" => [
0 => "Profil već aktiviran",
],
"Allow up to 15 minutes for the email. You can try again later." => [
0 => "Dozvolite do 15 minuta za email. Možete pokušati ponovo kasnije",
],
"Reset your password at %s" => [
0 => "Resetirajte svoju šifru na %s",
],
"Confirmation required at %s" => [
0 => "Potrebna potvrda na %s",
],
"Welcome to %s" => [
0 => "Dobrodošli na %s",
],
"Invalid password" => [
0 => "Netačna šifra",
],
"Passwords don't match" => [
0 => "Šifre se ne podudaraju",
],
"Invalid email" => [
0 => "Netačan email",
],
"Email already being used" => [
0 => "Email se već koristi",
],
"Check the errors in the form to continue." => [
0 => "Provjerite greške u formi da nastavite",
],
"Embed codes" => [
0 => "Zalijepiti kodove",
],
"Stats" => [
0 => "Statistika",
],
"Settings" => [
0 => "Postavke",
],
"Website" => [
0 => "Web stranica",
],
"Image upload" => [
0 => "Postavljanje slike",
],
"Theme" => [
0 => "Tema",
],
"System" => [
0 => "Sistem",
],
"External services" => [
0 => "Eksterne usluge",
],
"Flood protection" => [
0 => "Flood protekcija",
],
"Community" => [
0 => "Zajednica",
],
"PHP version" => [
0 => "PHP verzija",
],
"MySQL version" => [
0 => "MySQL verzija",
],
"File uploads" => [
0 => "Fajl postavljanja",
],
"Enabled" => [
0 => "Dozvoljeno",
],
"Disabled" => [
0 => "Onesposobljeno",
],
"Max. execution time" => [
0 => "Max. vrijeme izvršenja",
],
"Memory limit" => [
0 => "Limit memorije",
],
"search content" => [
0 => "Petražite sastav",
],
"Explore" => [
0 => "Istraži",
],
"Invalid website name" => [
0 => "Netačno ime web stranice",
],
"Invalid language" => [
0 => "Netačan jezik",
],
"Invalid timezone" => [
0 => "Netačna vremenska zona",
],
"Invalid upload storage mode" => [
0 => "Netačan način postavljanja skladišta",
],
"Invalid upload filenaming" => [
0 => "Netačno postavljanje file imena",
],
"Invalid thumb width" => [
0 => "Netačna thumb širina",
],
"Invalid thumb height" => [
0 => "Pogrešna visina sličice",
],
"Invalid theme" => [
0 => "Pogrešna tema",
],
"Invalid value" => [
0 => "Netačna količina",
],
"Invalid email mode" => [
0 => "Nevažeći način e-maila",
],
"Invalid SMTP port" => [
0 => "Pogrešan SMTP port",
],
"Invalid upload image path" => [
0 => "Pogrešna putanja slike za postavljanje",
],
"Max. allowed %s" => [
0 => "Maksimalno dopušteno %s",
],
"Invalid SMTP server" => [
0 => "Pogrešan SMTP server",
],
"Invalid SMTP username" => [
0 => "Pogrešno SMTP korisničko ime",
],
"Dashboard" => [
0 => "Kontrolna ploča",
],
"About" => [
0 => "U vezi",
],
"Image ID" => [
0 => "ID slike",
],
"Upload date" => [
0 => "Datum postavljanja",
],
"Direct links" => [
0 => "Direktni linkovi",
],
"Image link" => [
0 => "Link slike",
],
"Image URL" => [
0 => "URL slike",
],
"Thumbnail URL" => [
0 => "URL sličice",
],
"Medium URL" => [
0 => "Srednji URL",
],
"Login needed" => [
0 => "Prijava potrebna",
],
"Invalid username" => [
0 => "Netačno korisničko ime",
],
"Wrong Username/Email password combination" => [
0 => "Pogrešan korisnički naziv, e-mail adresa ili kombinacija lozinke",
],
"Sign in" => [
0 => "Prijava",
],
"Search" => [
0 => "Pretraži",
],
"Account" => [
0 => "Korisnički račun",
],
"Profile" => [
0 => "Profil",
],
"Password" => [
0 => "Lozinka",
],
"An email has been sent to %s with instructions to activate this email" => [
0 => "Poslali smo e-mail korisniku %s sa instrukcijama kako aktivirati korisnički račun",
],
"Invalid name" => [
0 => "Pogrešan naziv",
],
"Invalid website" => [
0 => "Pogrešna web stranica",
],
"Wrong password" => [
0 => "Pogrešna lozinka",
],
"Use a new password" => [
0 => "Koristi novu lozinku",
],
"Password has been changed" => [
0 => "Lozinka je uspiješno promijenjena",
],
"Wrong Username/Email values" => [
0 => "Pogrešno korisničko ime ili e-mail",
],
"Settings for %s" => [
0 => "Postavke za %s",
],
"Username" => [
0 => "Korisnički naziv",
],
"Delete user" => [
0 => "Izbrišite korisnika",
],
"User ID" => [
0 => "ID korisnika",
],
"Register date" => [
0 => "Datum registriranja",
],
"Create account" => [
0 => "Napravi korisnički račun",
],
"Upload" => [
0 => "Upload.",
],
"Albums" => [
0 => "Albumi",
],
"Note: This content is private. Change privacy to \"public\" to share." => [
0 => "Napomena: Ovaj sadržaj je privatan, promijeni privatnost albuma na javno ukoliko želiš da ostali korisnici mogu vidjeti ovaj sadržaj.",
],
"Public" => [
0 => "Javno",
],
"Private upload" => [
0 => "Privatno postavljanje",
],
"Most recent" => [
0 => "Najnovije",
],
"Oldest" => [
0 => "Najstarije",
],
"Most viewed" => [
0 => "Najviše pregledano",
],
"Share" => [
0 => "Podijeli",
],
"%s ago" => [
0 => "%s prije",
],
"moments ago" => [
0 => "trenutaka prije",
],
"Random" => [
0 => "Slučajno",
],
"loading" => [
0 => "učitavanje",
],
"My Profile" => [
0 => "Moj profil",
],
"Sign out" => [
0 => "Izlogirajte se",
],
"You must enter the album name." => [
0 => "Ime albuma morate unijeti ovdje",
],
"Confirm" => [
0 => "Potvrdi",
],
"An error occurred. Please try again later." => [
0 => "Došlo je do greške. Molim vas pokušajte kasnije",
],
"Please select a valid image file type." => [
0 => "Selektirajte važeći tip fajl slike",
],
"Please select a picture of at most %s size." => [
0 => "Selektirajte sliku na najvećoj %s veličini",
],
"Profile image updated." => [
0 => "Slika profila ažurirana ",
],
"Create album" => [
0 => "Kreirajte album",
],
"Edit" => [
0 => "Izmjenite",
],
"Delete" => [
0 => "Izbrišite",
],
"%s's Albums" => [
0 => "%s albumi",
],
"private" => [
0 => "Privatno",
],
"Select" => [
0 => "Odaberi",
],
"Unselect" => [
0 => "Poništi",
],
"All the changes that you have made will be lost if you continue." => [
0 => "Sve promjene koje ste upisali će biti izgubljene ukoliko nastavite.",
],
"Save changes" => [
0 => "Spremi promjene",
],
"Submit" => [
0 => "Potvrdi",
],
"Changes saved successfully." => [
0 => "Promjene uspješno sačuvane",
],
"Go back to form" => [
0 => "Vrati se nazad na formu",
],
"or" => [
0 => "ili",
],
"continue anyway" => [
0 => "svejedno nastavi",
],
"cancel" => [
0 => "Poništi",
],
"Confirm action" => [
0 => "Potvrdi akciju",
],
"Upload complete" => [
0 => "Prijenos je završen",
],
"Uploading" => [
0 => "Postavljanje",
],
"cancel remaining" => [
0 => "otkaži preostale",
],
"learn more" => [
0 => "saznaj više",
],
"Check the <a data-modal=\"simple\" data-target=\"failed-upload-result\">error report</a> for more information." => [
0 => "Provjeri <a data-modal=\"simple\" data-target=\"failed-upload-result\">izvještaj grešaka</a> za više informacija.",
],
"optional" => [
0 => "neobavezano",
],
"Add image URLs" => [
0 => "Dodajte URL-ove slike",
],
"Add the image URLs here" => [
0 => "Dodajte URL-ova slike ovdje",
],
"Error report" => [
0 => "Prijavite grešku",
],
"Links" => [
0 => "Linkovi",
],
"Direct" => [
0 => "Direktno",
],
"HTML Codes" => [
0 => "HTML kodovi",
],
"HTML medium linked" => [
0 => "HTML djelimično povezan",
],
"HTML thumbnail linked" => [
0 => "HTML thumbnail povezan",
],
"BBCodes" => [
0 => "BBKodovi",
],
"BBCode thumbnail linked" => [
0 => "BBKode thumbnail povezan",
],
"Viewer links" => [
0 => "Linkovi gledalaca",
],
"Name" => [
0 => "Naziv",
],
"Who can view this content" => [
0 => "Ko može sve da gleda ovaj sadržaj",
],
"Private (just me)" => [
0 => "Privatno (samo ja)",
],
"Message" => [
0 => "Poruka",
],
"view more" => [
0 => "Vidite više",
],
"Load more" => [
0 => "Očitajte više",
],
"Select all" => [
0 => "Selektujte sve",
],
"Clear selection" => [
0 => "Jasan izbor",
],
"Sign in with another account" => [
0 => "Prijavite se sa drugog profila.",
],
"There's nothing to show here." => [
0 => "Ovdje se nema šta prikazati",
],
"Confirm deletion" => [
0 => "Potvrdite brisanje ",
],
"Guest" => [
0 => "Gost",
],
"You either don't have permission to access this page or the link has expired." => [
0 => "Vi nemate dozvolu za pristup ovoj stranici ili veza je istekla.",
],
"Go to homepage" => [
0 => "Idi na početnu",
],
"The requested page was not found." => [
0 => "Tražena stranica nije pronađena.",
],
"The user has been deleted" => [
0 => "Član je obrisan iz baze servisa",
],
"Your account is almost ready" => [
0 => "Vaš korisnički račun je skoro spreman za korištenje",
],
"Resend activation" => [
0 => "Pošalji aktivacijski e-mail ponovo",
],
"You have successfully changed your account email to %s" => [
0 => "Uspješno ste promjenili email profila u %s.",
],
"Go to my profile" => [
0 => "Idite na moj profil.",
],
"Your email address" => [
0 => "Vaša E-mail adresa.",
],
"An email with instructions to reset your password has been sent to the registered email address. If you don't receive the instructions try checking your junk or spam filters." => [
0 => "E-Mail sa instrukcijama kako promijenuti vašu lozinku je poslan na e-mail adresu sa kojom ste se registrovali. Ukoliko ne dobijete instrukcije, provjerite spam filtere ili folder junk/spam na vašem e-mail servisu.",
],
"Resend instructions" => [
0 => "Pošalji upute ponovno",
],
"Username or Email address" => [
0 => "Korisničko ime ili Email adresa.",
],
"Login now" => [
0 => "Prijavite se sada",
],
"Enter your new password" => [
0 => "Upiši novu lozinku",
],
"Re-enter your new password" => [
0 => "Ponovno unesite novu lozinku",
],
"From name" => [
0 => "Poslano od naziva",
],
"Sender name for emails sent to users." => [
0 => "Ime pošiljatelja za e-mailove poslane članovima.",
],
"From email address" => [
0 => "Sa email adrese",
],
"Sender email for emails sent to users." => [
0 => "Email adresa pošiljatelja za e-mailove poslate članovima.",
],
"Incoming email address" => [
0 => "Dolazeža E-Mail adresa",
],
"Recipient for contact form and system alerts." => [
0 => "Primatelj za kontakt forme i sustav upozorenja.",
],
"Email mode" => [
0 => "E-Mail mod",
],
"SMTP server and port" => [
0 => "SMTP server i port",
],
"SMTP username" => [
0 => "SMTP korisničko ime",
],
"SMTP password" => [
0 => "SMTP lozinka",
],
"SMTP security" => [
0 => "SMTP sigurnost",
],
"Unsecured" => [
0 => "Nesigurno",
],
"Comment code" => [
0 => "Kod komentara.",
],
"Disqus, Facebook or anything you want. It will be used in image view." => [
0 => "Raspravite, Facebook ili šta želite. Bit će korišteno u pogledu slike.",
],
"Analytics code" => [
0 => "Analitički kod.",
],
"Google Analytics or anything you want. It will be added to the theme footer." => [
0 => "Google analistik ili bilo što šta želite. Bit će dodato u temu footera.",
],
"Disk used" => [
0 => "Iskorišćeno memorije",
],
"Notify to email" => [
0 => "Obavijesti na e-mail",
],
"Minute limit" => [
0 => "Minute granica",
],
"Hourly limit" => [
0 => "Satni limit",
],
"Daily limit" => [
0 => "Dnevni limit",
],
"Weekly limit" => [
0 => "Sedmični limit",
],
"Monthly limit" => [
0 => "Mjesečni limit",
],
"Guest uploads" => [
0 => "Postavljanje slika za goste",
],
"Enable this if you want to allow non registered users to upload." => [
0 => "Omogućite ovo ako želite da gosti uploaduju slike.",
],
"Image path" => [
0 => "Putanja slike na serveru",
],
"Relative to Chevereto root" => [
0 => "Gdje želite sačuvati slike? Po zadanim postavkama ostavite putanju \"images\".",
],
"Storage mode" => [
0 => "Način za pohranu",
],
"Datefolders" => [
0 => "Vremenske mape",
],
"Datefolders creates %s structure" => [
0 => "Vremenski nazivi foldera kreiraju strukturu %s",
],
"File naming method" => [
0 => "Način imenovanja datoteka",
],
"Original" => [
0 => "Originalno",
],
"Thumb size" => [
0 => "Veličina ikone",
],
"Thumbnails will be fixed to this size." => [
0 => "Veličina ikone će biti fiksna za ovu veličinu",
],
"Default language" => [
0 => "Zadani jezik",
],
"Default base language to use." => [
0 => "Ovaj jezik će biti prikazan svim posjetiocima kao zadani jezik.",
],
"Auto language" => [
0 => "Automatski jezik",
],
"How many items should be displayed per page listing." => [
0 => "Koliko sadržaja treba da bude prikazano po stranici",
],
"Crypt salt" => [
0 => "Enkripcija",
],
"This is the salt used to convert numeric ID to alphanumeric. It was generated on install." => [
0 => "Ovo se koristi da konvertuje numerički ID u alfanumerički. Generisan je pri instalaciji.",
],
"Website name" => [
0 => "Naziv web stranice",
],
"Website doctitle" => [
0 => "Podnaslov web stranice",
],
"Website description" => [
0 => "Opis web stranice",
],
"Default time zone" => [
0 => "Zadana vremenska zona",
],
"Select region" => [
0 => "Izaberi regiju",
],
"Website mode" => [
0 => "Način rada web stranice",
],
"You can switch the website mode anytime." => [
0 => "Način rada web stranice možete prebacivati u bilo kom trenutku.",
],
"Role" => [
0 => "Uloga",
],
"Email address" => [
0 => "E-mail adresa.",
],
"Added to %s" => [
0 => "Dodato do %s",
],
"Uploaded %s" => [
0 => "Postaviti %s",
],
"Logged out" => [
0 => "Odjavi se",
],
"You have been logged off %s. Hope to see you soon." => [
0 => "Odjavljeni ste %s. Nadam se da ćemo uskoro ponovno vas vidjeti.",
],
"Valid" => [
0 => "Vrijedi",
],
"Banned" => [
0 => "Zabranjen/Banovan",
],
"Awaiting email" => [
0 => "Očekujem e-mail",
],
"Language" => [
0 => "Jezik",
],
"Timezone" => [
0 => "Vremenska zona",
],
"User has no connections." => [
0 => "Korisnik nema veze.",
],
"Do you really want to disconnect %s from this account?" => [
0 => "Da li stvarno želite odspojiti %s s tog korisničkog računa?",
],
"This account is connected to %s" => [
0 => "Ovaj korisnički račun je spojen na %s",
],
"Do you really want to disconnect your %s account?" => [
0 => "Da li stvarno želite odspojiti vaš %s korisnički račun?",
],
"You will be logged out and you won't be able to login to your account using this %s account." => [
0 => "Bit ćete odjavljeni i nećete moći se prijaviti na vaš korisnički račun korištenjem ovog %s računa.",
],
"Current password" => [
0 => "Trenutna lozinka",
],
"Enter your current password" => [
0 => "Unesite trenutnu lozinku",
],
"New password" => [
0 => "Nova lozinka",
],
"Confirm new password" => [
0 => "Potvrdi novu lozinku",
],
"This user doesn't have a password. Add one using this form." => [
0 => "Ovaj korisnik nema lozinku. Dodajte ju pomoću ovog obrasca.",
],
"Enter your password" => [
0 => "Upiši svoju lozinku",
],
"Confirm password" => [
0 => "Potvrdi lozinku",
],
"Re-enter your password" => [
0 => "Ponovno upišite svoju lozinku",
],
"This is your real name, not your username." => [
0 => "To je vaše pravo ime, a ne vaše korisničko ime.",
],
"Upload profile background" => [
0 => "Postavi pozadinu profila",
],
"Change background" => [
0 => "Promjenite pozadinu",
],
"Upload new image" => [
0 => "Postavite novu sliku",
],
"Delete background" => [
0 => "Izbrišite pozadinu",
],
"DMCA complaint" => [
0 => "DMCA žalba",
],
"Invalid message" => [
0 => "Pogrešna poruka",
],
"Invalid subject" => [
0 => "Pogrešan subjekt",
],
];
?>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,22 +1,23 @@
<?php
$translation_header = array (
'Project-Id-Version' => 'Chevereto V3',
'POT-Creation-Date' => '2021-07-05 14:26-0400',
'PO-Revision-Date' => '2021-07-05 14:26-0400',
'Project-Id-Version' => 'Chevereto V4',
'POT-Creation-Date' => '2024-04-26 14:18-0400',
'PO-Revision-Date' => '2024-04-26 14:18-0400',
'Last-Translator' => 'Rodolfo Berríos <inbox@rodolfoberrios.com>',
'Language-Team' => '',
'Language-Team' => 'https://chevereto.com',
'Language' => 'en_US',
'MIME-Version' => '1.0',
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Transfer-Encoding' => '8bit',
'X-Generator' => 'Poedit 3.0',
'X-Poedit-Basepath' => '../../..',
'Plural-Forms' => 'nplurals=2; plural=(n != 1);',
'X-Generator' => 'Poedit 3.4.2',
'X-Poedit-Basepath' => '../..',
'X-Poedit-KeywordsList' => '_s;_se;_n:1,2;_ne:1,2;PF.fn._s;PF.fn._n:1,2',
'X-Poedit-SourceCharset' => 'UTF-8',
'X-Poedit-SearchPath-0' => '.',
'X-Poedit-SearchPathExcluded-0' => 'app/vendor',
'X-Poedit-SearchPathExcluded-1' => 'app/content/languages/cache',
'X-Poedit-SearchPathExcluded-0' => 'app/tests',
'X-Poedit-SearchPathExcluded-1' => 'app/vendor',
'X-Poedit-SearchPathExcluded-2' => 'app/.cache',
);
$translation_plural = array (
'nplurals' => 2,

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,38 @@
<?php
$translation_header = array (
'Project-Id-Version' => 'VERSION',
'POT-Creation-Date' => '2023-05-22 15:49+0000',
'PO-Revision-Date' => '2023-05-22 15:49+0000',
'Last-Translator' => 'FULL NAME <EMAIL@ADDRESS>',
'Language-Team' => 'LANGUAGE TEAM <EMAIL@ADDRESS>',
'Language' => 'ro',
'MIME-Version' => '1.0',
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Transfer-Encoding' => '8bit',
'Plural-Forms' => 'nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);',
);
$translation_plural = array (
'nplurals' => 3,
'function' => '($n==1 ? (0) : (($n==0 || ($n%100 > 0 && $n%100 < 20)) ? (1) : (2)))',
);
$translation_table = [
"Invalid password" => [
0 => "Parola greșită",
],
"Invalid email" => [
0 => "E-mail greșit",
],
"Invalid username" => [
0 => "User greșit",
],
"Private profile" => [
0 => "Profil privat",
],
"From email address" => [
0 => "De la adresa de email",
],
"Sender email for emails sent to users." => [
0 => "Trimite email către toţi userii",
],
];
?>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -9,6 +9,7 @@
* file that was distributed with this source code.
*/
use function Chevereto\Legacy\getCheveretoEnv;
use function Chevereto\Legacy\loaderHandler;
define('ACCESS', 'web');
@ -16,7 +17,7 @@ define('REPL', true);
require __DIR__ . '/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: $_ENV,
_env: getCheveretoEnv(),
_files: [],
_get: [],
_post: [],
@ -28,8 +29,7 @@ include loaderHandler(
);
return [
'startupMessage' =>
<<<EOM
'startupMessage' => <<<EOM
__ __
____/ / ___ _ _____ _______ / /____
/ __/ _ \/ -_) |/ / -_) __/ -_) __/ _ \\

View file

@ -16,35 +16,40 @@
"composer/package-versions-deprecated": true
},
"platform": {
"php": "8.0.26"
"php": "8.1.28"
}
},
"require": {
"php": "^8.0",
"php": "^8.1",
"intervention/image": "^2.6",
"jeroendesloovere/xmp-metadata-extractor": "^2.0",
"league/flysystem": "^2.0",
"jenssegers/imagehash": "^0.5.0",
"guzzlehttp/psr7": "^1.7",
"guzzlehttp/psr7": "^1.7||^2",
"phpmailer/phpmailer": "^6.5",
"psr/cache": "^1",
"psr/log": "^1",
"phpseclib/phpseclib": "^3.0",
"phpseclib/phpseclib": "^3.0.37",
"mobiledetect/mobiledetectlib": "^2.8",
"mlocati/ip-lib": "^1.17",
"composer/ca-bundle": "^1.2",
"chevere/chevere": "^2.0",
"chevere/throwable-handler": "^0.9",
"chevere/xr": "^0.7",
"chevere/xr-server": "^0.7",
"chevere/workflow": "^0.7.0",
"chevere/throwable-handler": "^1.0.2",
"xrdebug/php": "^2.0.2",
"xrdebug/xrdebug": "^2.0.2",
"chevere/workflow": "^0.9.0",
"pragmarx/google2fa": "^8.0",
"pragmarx/google2fa-qrcode": "^3.0",
"chevere/cache": "^0.4",
"phpseclib/bcmath_compat": "^2.0",
"chillerlan/php-qrcode": "^4.3",
"firebase/php-jwt": "^6.3",
"lychee-org/php-exif": "^0.7.14",
"php-ds/php-ds": "^1.4"
"p3k/emoji-detector": "^1.0",
"php-ds/php-ds": "^1.4",
"php-ffmpeg/php-ffmpeg": "^1.2",
"psy/psysh": "^0.11.8",
"chevere/cache": "^0.5.0",
"chevere/var-dump": "^2.0.x-dev",
"chevere/var-support": "^1.0"
},
"autoload": {
"files": [
@ -69,10 +74,8 @@
},
"require-dev": {
"phpunit/phpunit": "^9.2",
"symplify/easy-coding-standard": "^10.3",
"phpstan/phpstan": "^1.4",
"rector/rector": "^0.12.15",
"psy/psysh": "^0.11.8"
"symplify/easy-coding-standard": "^12.2",
"phpstan/phpstan": "^1.11"
},
"prefer-stable": true,
"scripts": {

4265
app/composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -9,7 +9,6 @@
* file that was distributed with this source code.
*/
use Chevereto\Config\AssetConfig;
use Chevereto\Config\Config;
use Chevereto\Config\EnabledConfig;
use Chevereto\Config\HostConfig;
@ -18,19 +17,6 @@ use Chevereto\Config\SystemConfig;
use function Chevereto\Vars\env;
new Config(
asset: new AssetConfig(
accountId: env()['CHEVERETO_ASSET_STORAGE_ACCOUNT_ID'],
accountName: env()['CHEVERETO_ASSET_STORAGE_ACCOUNT_NAME'],
bucket: env()['CHEVERETO_ASSET_STORAGE_BUCKET'],
key: env()['CHEVERETO_ASSET_STORAGE_KEY'],
name: env()['CHEVERETO_ASSET_STORAGE_NAME'],
region: env()['CHEVERETO_ASSET_STORAGE_REGION'],
secret: env()['CHEVERETO_ASSET_STORAGE_SECRET'],
server: env()['CHEVERETO_ASSET_STORAGE_SERVER'],
service: env()['CHEVERETO_ASSET_STORAGE_SERVICE'],
type: env()['CHEVERETO_ASSET_STORAGE_TYPE'],
url: env()['CHEVERETO_ASSET_STORAGE_URL'],
),
enabled: new EnabledConfig(
phpPages: (bool) env()['CHEVERETO_ENABLE_PHP_PAGES'],
updateCli: (bool) env()['CHEVERETO_ENABLE_UPDATE_CLI'],

View file

@ -10,81 +10,97 @@
*/
return [
'CHEVERETO_ASSET_STORAGE_ACCOUNT_ID' => '',
'CHEVERETO_ASSET_STORAGE_ACCOUNT_NAME' => '',
'CHEVERETO_ASSET_STORAGE_BUCKET' => '',
'CHEVERETO_ASSET_STORAGE_KEY' => '',
'CHEVERETO_ASSET_STORAGE_NAME' => 'assets',
'CHEVERETO_ASSET_STORAGE_REGION' => '',
'CHEVERETO_ASSET_STORAGE_SECRET' => '',
'CHEVERETO_ASSET_STORAGE_SERVER' => '',
'CHEVERETO_ASSET_STORAGE_SERVICE' => '',
'CHEVERETO_ASSET_STORAGE_TYPE' => 'local',
'CHEVERETO_ASSET_STORAGE_URL' => '',
'CHEVERETO_CONTEXT' => '',
'CHEVERETO_DB_DRIVER' => 'mysql',
'CHEVERETO_DB_HOST' => 'localhost',
'CHEVERETO_DB_NAME' => '',
'CHEVERETO_DB_PASS' => '',
'CHEVERETO_DB_PDO_ATTRS' => '[]',
'CHEVERETO_DB_PORT' => '3306',
'CHEVERETO_DB_TABLE_PREFIX' => 'chv_',
'CHEVERETO_DB_USER' => '',
'CHEVERETO_DEBUG_LEVEL' => '1',
'CHEVERETO_ENABLE_API_GUEST' => '1',
'CHEVERETO_ENABLE_BANNERS' => '1',
'CHEVERETO_ENABLE_BULK_IMPORTER' => '1',
'CHEVERETO_ENABLE_CAPTCHA' => '1',
'CHEVERETO_ENABLE_CDN' => '1',
'CHEVERETO_ENABLE_CHECK_UPDATES' => '1',
'CHEVERETO_ENABLE_CONSENT_SCREEN' => '1',
'CHEVERETO_ENABLE_COOKIE_COMPLIANCE' => '1',
'CHEVERETO_ENABLE_EXPOSE_PAID_FEATURES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_SERVICES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_STORAGE' => '1',
'CHEVERETO_ENABLE_FAVICON' => '1',
'CHEVERETO_ENABLE_FOLLOWERS' => '1',
'CHEVERETO_ENABLE_HTACCESS_CHECK' => '0',
'CHEVERETO_ENABLE_IP_BANS' => '1',
'CHEVERETO_ENABLE_LANGUAGE_CHOOSER' => '1',
'CHEVERETO_ENABLE_LIKES' => '1',
'CHEVERETO_ENABLE_LOCAL_STORAGE' => '1',
'CHEVERETO_ENABLE_LOGIN_PROVIDERS' => '1',
'CHEVERETO_ENABLE_LOGO' => '1',
'CHEVERETO_ENABLE_MODERATION' => '1',
'CHEVERETO_ENABLE_NOTIFICATIONS' => '1',
'CHEVERETO_ENABLE_PAGES' => '1',
'CHEVERETO_ENABLE_PHP_PAGES' => '0',
'CHEVERETO_ENABLE_POWERED_BY_FOOTER_SITE_WIDE' => '0',
'CHEVERETO_ENABLE_ROUTING' => '1',
'CHEVERETO_ENABLE_SERVICE_AKISMET' => '1',
'CHEVERETO_ENABLE_SERVICE_MODERATECONTENT' => '1',
'CHEVERETO_ENABLE_SERVICE_PROJECTARACHNID' => '1',
'CHEVERETO_ENABLE_SERVICE_STOPFORUMSPAM' => '1',
'CHEVERETO_ENABLE_STOPWORDS' => '1',
'CHEVERETO_ENABLE_UPDATE_CLI' => '1',
'CHEVERETO_ENABLE_UPDATE_HTTP' => '1',
'CHEVERETO_ENABLE_UPLOAD_FLOOD_PROTECTION' => '1',
'CHEVERETO_ENABLE_UPLOAD_PLUGIN' => '1',
'CHEVERETO_ENABLE_UPLOAD_WATERMARK' => '1',
'CHEVERETO_ENABLE_USERS' => '1',
'CHEVERETO_ENCRYPTION_KEY' => '',
'CHEVERETO_ERROR_LOG' => 'php://stderr',
'CHEVERETO_HEADER_CLIENT_IP' => '',
'CHEVERETO_HOSTNAME_PATH' => '/',
'CHEVERETO_HOSTNAME' => 'localhost',
'CHEVERETO_HTTPS' => '1',
'CHEVERETO_IMAGE_FORMATS_AVAILABLE' => '["JPEG","PNG","BMP","GIF","WEBP"]',
'CHEVERETO_IMAGE_LIBRARY' => 'imagick',
'CHEVERETO_MAX_ALBUMS' => '0',
'CHEVERETO_MAX_EXECUTION_TIME_SECONDS' => '30',
'CHEVERETO_MAX_IMAGES' => '0',
'CHEVERETO_MAX_MEMORY_SIZE' => '512M',
'CHEVERETO_MAX_POST_SIZE' => '64M',
'CHEVERETO_MAX_UPLOAD_SIZE' => '64M',
'CHEVERETO_MAX_USER_ALBUMS_LIST' => '300',
'CHEVERETO_MAX_USERS' => '0',
'CHEVERETO_SERVICING' => 'server',
'CHEVERETO_SESSION_SAVE_HANDLER' => 'files',
'CHEVERETO_SESSION_SAVE_PATH' => '/tmp',
'CHEVERETO_BINARY_FFMPEG' => 'ffmpeg',
'CHEVERETO_BINARY_FFPROBE' => 'ffprobe',
'CHEVERETO_CONTEXT' => '',
'CHEVERETO_DB_DRIVER' => 'mysql',
'CHEVERETO_DB_HOST' => 'localhost',
'CHEVERETO_DB_NAME' => '',
'CHEVERETO_DB_PASS' => '',
'CHEVERETO_DB_PDO_ATTRS' => '[]',
'CHEVERETO_DB_PORT' => '3306',
'CHEVERETO_DB_TABLE_PREFIX' => 'chv_',
'CHEVERETO_DB_USER' => '',
'CHEVERETO_DEBUG_LEVEL' => '1',
'CHEVERETO_EDITION' => 'pro',
'CHEVERETO_ENABLE_API_GUEST' => '1',
'CHEVERETO_ENABLE_BANNERS' => '1',
'CHEVERETO_ENABLE_BULK_IMPORTER' => '1',
'CHEVERETO_ENABLE_CAPTCHA' => '1',
'CHEVERETO_ENABLE_CDN' => '1',
'CHEVERETO_ENABLE_CONSENT_SCREEN' => '1',
'CHEVERETO_ENABLE_COOKIE_COMPLIANCE' => '1',
'CHEVERETO_ENABLE_DEBUG' => '1',
'CHEVERETO_ENABLE_EXPOSE_PAID_FEATURES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_SERVICES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_STORAGE_PROVIDERS' => '1',
'CHEVERETO_ENABLE_FAVICON' => '1',
'CHEVERETO_ENABLE_FOLLOWERS' => '1',
'CHEVERETO_ENABLE_FORCE_POWERED_BY_FOOTER' => '0',
'CHEVERETO_ENABLE_HTACCESS_CHECK' => '0',
'CHEVERETO_ENABLE_IP_BANS' => '1',
'CHEVERETO_ENABLE_LANGUAGE_CHOOSER' => '1',
'CHEVERETO_ENABLE_LIKES' => '1',
'CHEVERETO_ENABLE_LOCAL_STORAGE' => '1',
'CHEVERETO_ENABLE_LOGIN_PROVIDERS' => '1',
'CHEVERETO_ENABLE_LOGO_CUSTOM' => '1',
'CHEVERETO_ENABLE_MODERATION' => '1',
'CHEVERETO_ENABLE_NEWS_CHECK' => '1',
'CHEVERETO_ENABLE_NOTIFICATIONS' => '1',
'CHEVERETO_ENABLE_PAGES' => '1',
'CHEVERETO_ENABLE_PHP_PAGES' => '0',
'CHEVERETO_ENABLE_POWERED_BY_SETTING' => '1',
'CHEVERETO_ENABLE_PUP_CUSTOM_URL' => '1',
'CHEVERETO_ENABLE_ROUTING' => '1',
'CHEVERETO_ENABLE_SEO_ALBUM_URL' => '1',
'CHEVERETO_ENABLE_SEO_IMAGE_URL' => '1',
'CHEVERETO_ENABLE_SERVICE_AKISMET' => '1',
'CHEVERETO_ENABLE_SERVICE_MODERATECONTENT' => '1',
'CHEVERETO_ENABLE_SERVICE_PROJECTARACHNID' => '1',
'CHEVERETO_ENABLE_SERVICE_STOPFORUMSPAM' => '1',
'CHEVERETO_ENABLE_STOPWORDS' => '1',
'CHEVERETO_ENABLE_UPDATE_CHECK' => '1',
'CHEVERETO_ENABLE_UPDATE_CLI' => '1',
'CHEVERETO_ENABLE_UPDATE_HTTP' => '1',
'CHEVERETO_ENABLE_UPLOAD_FLOOD_PROTECTION' => '1',
'CHEVERETO_ENABLE_UPLOAD_PLUGIN' => '1',
'CHEVERETO_ENABLE_UPLOAD_URL' => '1',
'CHEVERETO_ENABLE_UPLOAD_WATERMARK' => '1',
'CHEVERETO_ENABLE_USERS' => '1',
'CHEVERETO_ENABLE_XRDEBUG' => '0',
'CHEVERETO_ENCRYPTION_KEY' => '',
'CHEVERETO_ERROR_LOG_CLI' => '',
'CHEVERETO_ERROR_LOG_CRON' => '',
'CHEVERETO_ERROR_LOG' => 'php://stderr',
'CHEVERETO_HEADER_CLIENT_IP' => '',
'CHEVERETO_HOSTNAME_PATH' => '/',
'CHEVERETO_HOSTNAME' => 'localhost',
'CHEVERETO_HTTPS' => '1',
'CHEVERETO_IMAGE_FORMATS_AVAILABLE' => '["AVIF","JPEG","PNG","BMP","GIF","WEBP"]',
'CHEVERETO_IMAGE_LIBRARY' => 'imagick',
'CHEVERETO_MAX_ADMINS' => '0',
'CHEVERETO_MAX_ALBUMS' => '0',
'CHEVERETO_MAX_CATEGORIES' => '0',
'CHEVERETO_MAX_EXECUTION_TIME_SECONDS' => '30',
'CHEVERETO_MAX_FILES' => '0',
'CHEVERETO_MAX_LOGIN_PROVIDERS' => '0',
'CHEVERETO_MAX_MANAGERS' => '0',
'CHEVERETO_MAX_MEMORY_SIZE' => '512M',
'CHEVERETO_MAX_PAGES' => '0',
'CHEVERETO_MAX_POST_SIZE' => '100M',
'CHEVERETO_MAX_STORAGES' => '0',
'CHEVERETO_MAX_TAGS_PER_FILE' => '0',
'CHEVERETO_MAX_TAGS_PER_LISTING' => '0',
'CHEVERETO_MAX_TAGS' => '0',
'CHEVERETO_MAX_UPLOAD_SIZE' => '100M',
'CHEVERETO_MAX_USER_ALBUMS_LIST' => '500',
'CHEVERETO_MAX_USERS' => '0',
'CHEVERETO_MIN_STORAGES_ACTIVE' => '0',
'CHEVERETO_SERVICING' => 'server',
'CHEVERETO_SESSION_SAVE_HANDLER' => 'files',
'CHEVERETO_SESSION_SAVE_PATH' => '/tmp',
'CHEVERETO_XRDEBUG_HOST' => 'localhost',
'CHEVERETO_XRDEBUG_HTTPS' => '0',
'CHEVERETO_XRDEBUG_KEY' => '',
'CHEVERETO_XRDEBUG_PORT' => '27420',
];

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

760
app/languages/bs-BA.po Normal file
View file

@ -0,0 +1,760 @@
msgid ""
msgstr ""
"Project-Id-Version: VERSION\n"
"POT-Creation-Date: 2023-05-22 15:49+0000\n"
"PO-Revision-Date: 2023-05-22 15:49+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE TEAM <EMAIL@ADDRESS>\n"
"Language: bs_BA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "Request denied"
msgstr "Zahtjev odbijen"
msgid "That page doesn't exist"
msgstr "Ova stranica ne postoji"
msgid "Reset password"
msgstr "Promjeni lozinku"
msgid "Resend account activation"
msgstr "Pošalji aktivaciju za korisnički račun ponovno"
msgid "Add your email address"
msgstr "Dodaj E-mail adresu"
msgid "Awaiting confirmation"
msgstr "Očekujem potvrdu"
msgid "Email changed"
msgstr "E-mail adresa je promijenjena"
msgid "Invalid Username/Email"
msgstr "Pogrešno ste upisali korisničko ime ili e-mail adresu"
msgid "Account needs to be activated to use this feature"
msgstr "Profil treba da bude aktiviran za ove pogodnosti"
msgid "Account already activated"
msgstr "Profil već aktiviran"
msgid "Allow up to 15 minutes for the email. You can try again later."
msgstr "Dozvolite do 15 minuta za email. Možete pokušati ponovo kasnije"
#, php-format
msgid "Reset your password at %s"
msgstr "Resetirajte svoju šifru na %s"
#, php-format
msgid "Confirmation required at %s"
msgstr "Potrebna potvrda na %s"
#, php-format
msgid "Welcome to %s"
msgstr "Dobrodošli na %s"
msgid "Invalid password"
msgstr "Netačna šifra"
msgid "Passwords don't match"
msgstr "Šifre se ne podudaraju"
msgid "Invalid email"
msgstr "Netačan email"
msgid "Email already being used"
msgstr "Email se već koristi"
msgid "Check the errors in the form to continue."
msgstr "Provjerite greške u formi da nastavite"
msgid "Embed codes"
msgstr "Zalijepiti kodove"
msgid "Stats"
msgstr "Statistika"
msgid "Settings"
msgstr "Postavke"
msgid "Website"
msgstr "Web stranica"
msgid "Image upload"
msgstr "Postavljanje slike"
msgid "Theme"
msgstr "Tema"
msgid "System"
msgstr "Sistem"
msgid "External services"
msgstr "Eksterne usluge"
msgid "Flood protection"
msgstr "Flood protekcija"
msgid "Community"
msgstr "Zajednica"
msgid "PHP version"
msgstr "PHP verzija"
msgid "MySQL version"
msgstr "MySQL verzija"
msgid "File uploads"
msgstr "Fajl postavljanja"
msgid "Enabled"
msgstr "Dozvoljeno"
msgid "Disabled"
msgstr "Onesposobljeno"
msgid "Max. execution time"
msgstr "Max. vrijeme izvršenja"
msgid "Memory limit"
msgstr "Limit memorije"
msgid "search content"
msgstr "Petražite sastav"
msgid "Explore"
msgstr "Istraži"
msgid "Invalid website name"
msgstr "Netačno ime web stranice"
msgid "Invalid language"
msgstr "Netačan jezik"
msgid "Invalid timezone"
msgstr "Netačna vremenska zona"
msgid "Invalid upload storage mode"
msgstr "Netačan način postavljanja skladišta"
msgid "Invalid upload filenaming"
msgstr "Netačno postavljanje file imena"
msgid "Invalid thumb width"
msgstr "Netačna thumb širina"
msgid "Invalid thumb height"
msgstr "Pogrešna visina sličice"
msgid "Invalid theme"
msgstr "Pogrešna tema"
msgid "Invalid value"
msgstr "Netačna količina"
msgid "Invalid email mode"
msgstr "Nevažeći način e-maila"
msgid "Invalid SMTP port"
msgstr "Pogrešan SMTP port"
msgid "Invalid upload image path"
msgstr "Pogrešna putanja slike za postavljanje"
#, php-format
msgid "Max. allowed %s"
msgstr "Maksimalno dopušteno %s"
msgid "Invalid SMTP server"
msgstr "Pogrešan SMTP server"
msgid "Invalid SMTP username"
msgstr "Pogrešno SMTP korisničko ime"
msgid "Dashboard"
msgstr "Kontrolna ploča"
msgid "About"
msgstr "U vezi"
msgid "Image ID"
msgstr "ID slike"
msgid "Upload date"
msgstr "Datum postavljanja"
msgid "Direct links"
msgstr "Direktni linkovi"
msgid "Image link"
msgstr "Link slike"
msgid "Image URL"
msgstr "URL slike"
msgid "Thumbnail URL"
msgstr "URL sličice"
msgid "Medium URL"
msgstr "Srednji URL"
msgid "Login needed"
msgstr "Prijava potrebna"
msgid "Invalid username"
msgstr "Netačno korisničko ime"
msgid "Wrong Username/Email password combination"
msgstr "Pogrešan korisnički naziv, e-mail adresa ili kombinacija lozinke"
msgid "Sign in"
msgstr "Prijava"
msgid "Search"
msgstr "Pretraži"
msgid "Account"
msgstr "Korisnički račun"
msgid "Profile"
msgstr "Profil"
msgid "Password"
msgstr "Lozinka"
#, php-format
msgid "An email has been sent to %s with instructions to activate this email"
msgstr "Poslali smo e-mail korisniku %s sa instrukcijama kako aktivirati korisnički račun"
msgid "Invalid name"
msgstr "Pogrešan naziv"
msgid "Invalid website"
msgstr "Pogrešna web stranica"
msgid "Wrong password"
msgstr "Pogrešna lozinka"
msgid "Use a new password"
msgstr "Koristi novu lozinku"
msgid "Password has been changed"
msgstr "Lozinka je uspiješno promijenjena"
msgid "Wrong Username/Email values"
msgstr "Pogrešno korisničko ime ili e-mail"
#, php-format
msgid "Settings for %s"
msgstr "Postavke za %s"
msgid "Username"
msgstr "Korisnički naziv"
msgid "Delete user"
msgstr "Izbrišite korisnika"
msgid "User ID"
msgstr "ID korisnika"
msgid "Register date"
msgstr "Datum registriranja"
msgid "Create account"
msgstr "Napravi korisnički račun"
msgid "Upload"
msgstr "Upload."
msgid "Albums"
msgstr "Albumi"
msgid "Note: This content is private. Change privacy to \"public\" to share."
msgstr "Napomena: Ovaj sadržaj je privatan, promijeni privatnost albuma na javno ukoliko želiš da ostali korisnici mogu vidjeti ovaj sadržaj."
msgid "Public"
msgstr "Javno"
msgid "Private upload"
msgstr "Privatno postavljanje"
msgid "Most recent"
msgstr "Najnovije"
msgid "Oldest"
msgstr "Najstarije"
msgid "Most viewed"
msgstr "Najviše pregledano"
msgid "Share"
msgstr "Podijeli"
#, php-format
msgid "%s ago"
msgstr "%s prije"
msgid "moments ago"
msgstr "trenutaka prije"
msgid "Random"
msgstr "Slučajno"
msgid "loading"
msgstr "učitavanje"
msgid "My Profile"
msgstr "Moj profil"
msgid "Sign out"
msgstr "Izlogirajte se"
msgid "You must enter the album name."
msgstr "Ime albuma morate unijeti ovdje"
msgid "Confirm"
msgstr "Potvrdi"
msgid "An error occurred. Please try again later."
msgstr "Došlo je do greške. Molim vas pokušajte kasnije"
msgid "Please select a valid image file type."
msgstr "Selektirajte važeći tip fajl slike"
#, javascript-format
msgid "Please select a picture of at most %s size."
msgstr "Selektirajte sliku na najvećoj %s veličini"
msgid "Profile image updated."
msgstr "Slika profila ažurirana "
msgid "Create album"
msgstr "Kreirajte album"
msgid "Edit"
msgstr "Izmjenite"
msgid "Delete"
msgstr "Izbrišite"
#, javascript-format
msgid "%s's Albums"
msgstr "%s albumi"
msgid "private"
msgstr "Privatno"
msgid "Select"
msgstr "Odaberi"
msgid "Unselect"
msgstr "Poništi"
msgid "All the changes that you have made will be lost if you continue."
msgstr "Sve promjene koje ste upisali će biti izgubljene ukoliko nastavite."
msgid "Save changes"
msgstr "Spremi promjene"
msgid "Submit"
msgstr "Potvrdi"
msgid "Changes saved successfully."
msgstr "Promjene uspješno sačuvane"
msgid "Go back to form"
msgstr "Vrati se nazad na formu"
msgid "or"
msgstr "ili"
msgid "continue anyway"
msgstr "svejedno nastavi"
msgid "cancel"
msgstr "Poništi"
msgid "Confirm action"
msgstr "Potvrdi akciju"
msgid "Upload complete"
msgstr "Prijenos je završen"
msgid "Uploading"
msgstr "Postavljanje"
msgid "cancel remaining"
msgstr "otkaži preostale"
msgid "learn more"
msgstr "saznaj više"
msgid "Check the <a data-modal=\"simple\" data-target=\"failed-upload-result\">error report</a> for more information."
msgstr "Provjeri <a data-modal=\"simple\" data-target=\"failed-upload-result\">izvještaj grešaka</a> za više informacija."
msgid "optional"
msgstr "neobavezano"
msgid "Add image URLs"
msgstr "Dodajte URL-ove slike"
msgid "Add the image URLs here"
msgstr "Dodajte URL-ova slike ovdje"
msgid "Error report"
msgstr "Prijavite grešku"
msgid "Links"
msgstr "Linkovi"
msgid "Direct"
msgstr "Direktno"
msgid "HTML Codes"
msgstr "HTML kodovi"
msgid "HTML medium linked"
msgstr "HTML djelimično povezan"
msgid "HTML thumbnail linked"
msgstr "HTML thumbnail povezan"
msgid "BBCodes"
msgstr "BBKodovi"
msgid "BBCode thumbnail linked"
msgstr "BBKode thumbnail povezan"
msgid "Viewer links"
msgstr "Linkovi gledalaca"
msgid "Name"
msgstr "Naziv"
msgid "Who can view this content"
msgstr "Ko može sve da gleda ovaj sadržaj"
msgid "Private (just me)"
msgstr "Privatno (samo ja)"
msgid "Message"
msgstr "Poruka"
msgid "view more"
msgstr "Vidite više"
msgid "Load more"
msgstr "Očitajte više"
msgid "Select all"
msgstr "Selektujte sve"
msgid "Clear selection"
msgstr "Jasan izbor"
msgid "Sign in with another account"
msgstr "Prijavite se sa drugog profila."
msgid "There's nothing to show here."
msgstr "Ovdje se nema šta prikazati"
msgid "Confirm deletion"
msgstr "Potvrdite brisanje "
msgid "Guest"
msgstr "Gost"
msgid "You either don't have permission to access this page or the link has expired."
msgstr "Vi nemate dozvolu za pristup ovoj stranici ili veza je istekla."
msgid "Go to homepage"
msgstr "Idi na početnu"
msgid "The requested page was not found."
msgstr "Tražena stranica nije pronađena."
msgid "The user has been deleted"
msgstr "Član je obrisan iz baze servisa"
msgid "Your account is almost ready"
msgstr "Vaš korisnički račun je skoro spreman za korištenje"
msgid "Resend activation"
msgstr "Pošalji aktivacijski e-mail ponovo"
#, php-format
msgid "You have successfully changed your account email to %s"
msgstr "Uspješno ste promjenili email profila u %s."
msgid "Go to my profile"
msgstr "Idite na moj profil."
msgid "Your email address"
msgstr "Vaša E-mail adresa."
msgid "An email with instructions to reset your password has been sent to the registered email address. If you don't receive the instructions try checking your junk or spam filters."
msgstr "E-Mail sa instrukcijama kako promijenuti vašu lozinku je poslan na e-mail adresu sa kojom ste se registrovali. Ukoliko ne dobijete instrukcije, provjerite spam filtere ili folder junk/spam na vašem e-mail servisu."
msgid "Resend instructions"
msgstr "Pošalji upute ponovno"
msgid "Username or Email address"
msgstr "Korisničko ime ili Email adresa."
msgid "Login now"
msgstr "Prijavite se sada"
msgid "Enter your new password"
msgstr "Upiši novu lozinku"
msgid "Re-enter your new password"
msgstr "Ponovno unesite novu lozinku"
msgid "From name"
msgstr "Poslano od naziva"
msgid "Sender name for emails sent to users."
msgstr "Ime pošiljatelja za e-mailove poslane članovima."
msgid "From email address"
msgstr "Sa email adrese"
msgid "Sender email for emails sent to users."
msgstr "Email adresa pošiljatelja za e-mailove poslate članovima."
msgid "Incoming email address"
msgstr "Dolazeža E-Mail adresa"
msgid "Recipient for contact form and system alerts."
msgstr "Primatelj za kontakt forme i sustav upozorenja."
msgid "Email mode"
msgstr "E-Mail mod"
msgid "SMTP server and port"
msgstr "SMTP server i port"
msgid "SMTP username"
msgstr "SMTP korisničko ime"
msgid "SMTP password"
msgstr "SMTP lozinka"
msgid "SMTP security"
msgstr "SMTP sigurnost"
msgid "Unsecured"
msgstr "Nesigurno"
msgid "Comment code"
msgstr "Kod komentara."
msgid "Disqus, Facebook or anything you want. It will be used in image view."
msgstr "Raspravite, Facebook ili šta želite. Bit će korišteno u pogledu slike."
msgid "Analytics code"
msgstr "Analitički kod."
msgid "Google Analytics or anything you want. It will be added to the theme footer."
msgstr "Google analistik ili bilo što šta želite. Bit će dodato u temu footera."
msgid "Disk used"
msgstr "Iskorišćeno memorije"
msgid "Notify to email"
msgstr "Obavijesti na e-mail"
msgid "Minute limit"
msgstr "Minute granica"
msgid "Hourly limit"
msgstr "Satni limit"
msgid "Daily limit"
msgstr "Dnevni limit"
msgid "Weekly limit"
msgstr "Sedmični limit"
msgid "Monthly limit"
msgstr "Mjesečni limit"
msgid "Guest uploads"
msgstr "Postavljanje slika za goste"
msgid "Enable this if you want to allow non registered users to upload."
msgstr "Omogućite ovo ako želite da gosti uploaduju slike."
msgid "Image path"
msgstr "Putanja slike na serveru"
msgid "Relative to Chevereto root"
msgstr "Gdje želite sačuvati slike? Po zadanim postavkama ostavite putanju \"images\"."
msgid "Storage mode"
msgstr "Način za pohranu"
msgid "Datefolders"
msgstr "Vremenske mape"
#, php-format
msgid "Datefolders creates %s structure"
msgstr "Vremenski nazivi foldera kreiraju strukturu %s"
msgid "File naming method"
msgstr "Način imenovanja datoteka"
msgid "Original"
msgstr "Originalno"
msgid "Thumb size"
msgstr "Veličina ikone"
msgid "Thumbnails will be fixed to this size."
msgstr "Veličina ikone će biti fiksna za ovu veličinu"
msgid "Default language"
msgstr "Zadani jezik"
msgid "Default base language to use."
msgstr "Ovaj jezik će biti prikazan svim posjetiocima kao zadani jezik."
msgid "Auto language"
msgstr "Automatski jezik"
msgid "How many items should be displayed per page listing."
msgstr "Koliko sadržaja treba da bude prikazano po stranici"
msgid "Crypt salt"
msgstr "Enkripcija"
msgid "This is the salt used to convert numeric ID to alphanumeric. It was generated on install."
msgstr "Ovo se koristi da konvertuje numerički ID u alfanumerički. Generisan je pri instalaciji."
msgid "Website name"
msgstr "Naziv web stranice"
msgid "Website doctitle"
msgstr "Podnaslov web stranice"
msgid "Website description"
msgstr "Opis web stranice"
msgid "Default time zone"
msgstr "Zadana vremenska zona"
msgid "Select region"
msgstr "Izaberi regiju"
msgid "Website mode"
msgstr "Način rada web stranice"
msgid "You can switch the website mode anytime."
msgstr "Način rada web stranice možete prebacivati u bilo kom trenutku."
msgid "Role"
msgstr "Uloga"
msgid "Email address"
msgstr "E-mail adresa."
#, php-format
msgid "Added to %s"
msgstr "Dodato do %s"
#, php-format
msgid "Uploaded %s"
msgstr "Postaviti %s"
msgid "Logged out"
msgstr "Odjavi se"
#, php-format
msgid "You have been logged off %s. Hope to see you soon."
msgstr "Odjavljeni ste %s. Nadam se da ćemo uskoro ponovno vas vidjeti."
msgid "Valid"
msgstr "Vrijedi"
msgid "Banned"
msgstr "Zabranjen/Banovan"
msgid "Awaiting email"
msgstr "Očekujem e-mail"
msgid "Language"
msgstr "Jezik"
msgid "Timezone"
msgstr "Vremenska zona"
msgid "User has no connections."
msgstr "Korisnik nema veze."
#, php-format
msgid "Do you really want to disconnect %s from this account?"
msgstr "Da li stvarno želite odspojiti %s s tog korisničkog računa?"
#, php-format
msgid "This account is connected to %s"
msgstr "Ovaj korisnički račun je spojen na %s"
#, php-format
msgid "Do you really want to disconnect your %s account?"
msgstr "Da li stvarno želite odspojiti vaš %s korisnički račun?"
#, php-format
msgid "You will be logged out and you won't be able to login to your account using this %s account."
msgstr "Bit ćete odjavljeni i nećete moći se prijaviti na vaš korisnički račun korištenjem ovog %s računa."
msgid "Current password"
msgstr "Trenutna lozinka"
msgid "Enter your current password"
msgstr "Unesite trenutnu lozinku"
msgid "New password"
msgstr "Nova lozinka"
msgid "Confirm new password"
msgstr "Potvrdi novu lozinku"
msgid "This user doesn't have a password. Add one using this form."
msgstr "Ovaj korisnik nema lozinku. Dodajte ju pomoću ovog obrasca."
msgid "Enter your password"
msgstr "Upiši svoju lozinku"
msgid "Confirm password"
msgstr "Potvrdi lozinku"
msgid "Re-enter your password"
msgstr "Ponovno upišite svoju lozinku"
msgid "This is your real name, not your username."
msgstr "To je vaše pravo ime, a ne vaše korisničko ime."
msgid "Upload profile background"
msgstr "Postavi pozadinu profila"
msgid "Change background"
msgstr "Promjenite pozadinu"
msgid "Upload new image"
msgstr "Postavite novu sliku"
msgid "Delete background"
msgstr "Izbrišite pozadinu"
msgid "DMCA complaint"
msgstr "DMCA žalba"
msgid "Invalid message"
msgstr "Pogrešna poruka"
msgid "Invalid subject"
msgstr "Pogrešan subjekt"

1353
app/languages/ca.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

3385
app/languages/de-DE.po Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

31
app/languages/ro.po Normal file
View file

@ -0,0 +1,31 @@
msgid ""
msgstr ""
"Project-Id-Version: VERSION\n"
"POT-Creation-Date: 2023-05-22 15:49+0000\n"
"PO-Revision-Date: 2023-05-22 15:49+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE TEAM <EMAIL@ADDRESS>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n"
msgid "Invalid password"
msgstr "Parola greșită"
msgid "Invalid email"
msgstr "E-mail greșit"
msgid "Invalid username"
msgstr "User greșit"
msgid "Private profile"
msgstr "Profil privat"
msgid "From email address"
msgstr "De la adresa de email"
msgid "Sender email for emails sent to users."
msgstr "Trimite email către toţi userii"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -14,9 +14,9 @@ use function Chevereto\Legacy\feedbackAlert;
use function Chevereto\Legacy\isSafeToExecute;
use function Chevereto\Vars\env;
if (!(bool) env()['CHEVERETO_ENABLE_BULK_IMPORTER']) {
if (! (bool) env()['CHEVERETO_ENABLE_BULK_IMPORTER']) {
feedbackAlert('Bulk importer is disabled');
die(255);
exit(255);
}
$threadID = getenv('THREAD_ID') ?: 0;
$loop = 1;
@ -26,7 +26,7 @@ do {
if ($jobs === []) {
echo "~They took our jobs!~\n";
echo "[OK] No jobs left.\n";
die(0);
exit(0);
}
$id = $jobs[0]['import_id'];
$import = new Import();
@ -34,13 +34,15 @@ do {
$import->thread = (int) $threadID;
$import->get();
if ($import->isLocked()) {
$import->edit(['status' => 'paused']);
echo "> Job locked for id #$id\n";
$import->edit([
'status' => 'paused',
]);
echo "> Job locked for id #{$id}\n";
} else {
echo "* Processing job id #$id\n";
echo "* Processing job id #{$id}\n";
$import->process();
}
$loop++;
} while (isSafeToExecute());
echo "--\n[OK] Automatic importing looped $loop times ~ /dashboard/bulk for stats\n";
die(0);
echo "--\n[OK] Automatic importing looped {$loop} times ~ /dashboard/bulk for stats\n";
exit(0);

View file

@ -11,6 +11,7 @@
use Chevereto\Encryption\EncryptionInstance;
use Chevereto\Encryption\Interfaces\EncryptionInterface;
use Chevereto\Legacy\Classes\Album;
use Chevereto\Legacy\Classes\DB;
use Chevereto\Legacy\Classes\Login;
use Chevereto\Legacy\Classes\Settings;
@ -34,8 +35,10 @@ $settings = Settings::get();
new EncryptionInstance($toEncryption);
foreach (Settings::ENCRYPTED_NAMES as $key) {
$value = $settings[$key] ?? '';
feedback("- $key: $value");
Settings::update([$key => $value]);
feedback("- {$key}: {$value}");
Settings::update([
$key => $value,
]);
}
feedbackSeparator();
feedbackStep($doing, 'storages');
@ -47,7 +50,7 @@ foreach ($storages as $storage) {
$values = [];
foreach (Storage::ENCRYPTED_NAMES as $key) {
$value = $storage[$key] ?? '';
feedback(" $key: $value");
feedback(" {$key}: {$value}");
$values[$key] = $value;
}
Storage::update(
@ -58,7 +61,10 @@ foreach ($storages as $storage) {
}
feedbackSeparator();
feedbackStep($doing, 'two-factor secrets');
$twoFactors = DB::get('two_factors', [], 'AND', ['field' => 'id', 'order' => 'desc']);
$twoFactors = DB::get('two_factors', [], 'AND', [
'field' => 'id',
'order' => 'desc',
]);
foreach ($twoFactors as $twoFactor) {
new EncryptionInstance($fromEncryption);
$twoFactor = TwoFactor::get($twoFactor['two_factor_id']);
@ -68,7 +74,7 @@ foreach ($twoFactors as $twoFactor) {
$values = [
'secret' => $secret,
];
feedback("- secret: $secret");
feedback("- secret: {$secret}");
TwoFactor::update(
id: $twoFactor['id'],
values: $values,
@ -84,7 +90,7 @@ foreach ($loginProviders as $name => $loginProvider) {
$values = [];
foreach (Login::ENCRYPTED_PROVIDER_NAMES as $key) {
$value = $loginProvider[$key] ?? '';
feedback(" $key: $value");
feedback(" {$key}: {$value}");
$values[$key] = $value;
}
Login::updateProvider(
@ -94,11 +100,18 @@ foreach ($loginProviders as $name => $loginProvider) {
}
feedbackSeparator();
feedbackStep($doing, 'login connection tokens');
$connections = DB::get(table: 'login_connections', values: 'all', sort: ['field' => 'id', 'order' => 'desc']);
$connections = DB::get(
table: 'login_connections',
where: 'all',
sort: [
'field' => 'id',
'order' => 'desc',
]
);
foreach ($connections as $connection) {
new EncryptionInstance($fromEncryption);
$connection = Login::getConnection($connection['login_connection_id']);
feedback("> Login connection #" . $connection['id']);
feedback('> Login connection #' . $connection['id']);
new EncryptionInstance($toEncryption);
$token = $connection['token'];
$values = [
@ -109,5 +122,22 @@ foreach ($connections as $connection) {
values: $values,
);
$tokenString = serialize($token);
feedback("- token: $tokenString");
feedback("- token: {$tokenString}");
}
feedbackSeparator();
feedbackStep($doing, 'albums password');
$albumsPassword = DB::queryFetchAll('SELECT album_id id, album_password password FROM ' . DB::getTable('albums') . ' WHERE album_password IS NOT NULL;');
foreach ($albumsPassword as $album) {
new EncryptionInstance($fromEncryption);
feedback('> Album id #' . $album['id']);
new EncryptionInstance($toEncryption);
$password = $album['password'];
$values = [
'password' => $password,
];
Album::update(
id: (int) $album['id'],
values: $values,
);
feedback("- password: {$password}");
}

View file

@ -9,8 +9,8 @@
* file that was distributed with this source code.
*/
use Chevere\ThrowableHandler\Documents\PlainDocument;
use Chevereto\Config\Config;
use function Chevereto\Legacy\checkUpdates;
use Chevereto\Legacy\Classes\DB;
use Chevereto\Legacy\Classes\Image;
use Chevereto\Legacy\Classes\L10n;
@ -18,6 +18,13 @@ use Chevereto\Legacy\Classes\Lock;
use Chevereto\Legacy\Classes\Queue;
use Chevereto\Legacy\Classes\Settings;
use Chevereto\Legacy\Classes\User;
use Chevereto\Legacy\Classes\Variable;
use function Chevere\Message\message;
use function Chevere\ThrowableHandler\throwableHandler;
use function Chevere\Writer\writers;
use function Chevere\xrDebug\PHP\throwableHandler as XrDebugThrowableHandler;
use function Chevereto\Legacy\checkUpdates;
use function Chevereto\Legacy\cheveretoVersionInstalled;
use function Chevereto\Legacy\feedbackAlert;
use function Chevereto\Legacy\feedbackStep;
use function Chevereto\Legacy\G\datetime_add;
@ -30,44 +37,115 @@ use function Chevereto\Vars\env;
if (getSetting('maintenance')) {
echo "[!] Chevereto is in maintenance mode.\n";
die(255);
exit(255);
}
$jobs = ['deleteExpiredImages', 'cleanUnconfirmedUsers', 'removeDeleteLog', 'checkForNews'];
if ((bool) env()['CHEVERETO_ENABLE_EXTERNAL_STORAGE']) {
$jobs[] = 'storageDelete';
}
if ((bool) env()['CHEVERETO_ENABLE_CHECK_UPDATES']) {
$jobs = [
'deleteExpiredImages',
'cleanUnconfirmedUsers',
'removeDeleteLog',
'storageDelete',
];
if ((bool) env()['CHEVERETO_ENABLE_UPDATE_CHECK']) {
$jobs[] = 'checkForUpdates';
}
if ((bool) env()['CHEVERETO_ENABLE_NEWS_CHECK']) {
$jobs[] = 'checkForNews';
}
if (Config::enabled()->htaccessCheck()) {
$jobs[] = 'checkHtaccess';
}
shuffle($jobs);
$time_start = microtime(true);
$errors = [];
$namespace = env()['CHEVERETO_ID_HANDLE'] ?? false;
foreach ($jobs as $job) {
if (!isSafeToExecute()) {
if (! isSafeToExecute()) {
echo "[OK] Exit - (time is up)\n";
writeLastRan();
writeLastRan($time_start);
exit(0);
}
feedbackStep('Job:', $job);
$job();
try {
$job();
} catch (Throwable $throwable) {
feedbackAlert($throwable->getMessage());
$errors[$job] = $throwable->getMessage();
$publicHandler = throwableHandler($throwable);
if ($namespace) {
$publicHandler = $publicHandler
->withId($namespace . $publicHandler->id());
}
$internalHandler = $publicHandler->withIsDebug(true);
$docInternal = new PlainDocument($internalHandler);
$logMessage = '[' . $publicHandler->id() . '] '
. $docInternal->__toString()
. "\n\n";
try {
$errorLog = ini_get('error_log');
$fp = fopen($errorLog, 'a');
fwrite($fp, $logMessage);
fclose($fp);
} catch (Throwable) {
if (PHP_SAPI === 'cli') {
error_log($logMessage);
} else {
writers()->error()->write($logMessage);
}
}
$extra = <<<HTML
<div class="throwable-message"><b>Incident {$publicHandler->id()}</b></div>
<div class="throwable-message"><b>Backtrace</b></div>
HTML;
XrDebugThrowableHandler($throwable, $extra);
}
}
writeLastRan();
function writeLastRan(): void
writeLastRan($time_start);
function writeLastRan(float $time_start): void
{
$datetimegmt = datetimegmt();
Settings::update(['cron_last_ran' => datetimegmt()]);
echo "--\n✅ [DONE] Cron tasks ran @ $datetimegmt\n";
Variable::set('cron_last_ran', $datetimegmt);
$time_taken = microtime(true) - $time_start;
$ceil = ceil($time_taken);
$round = round($time_taken, 2);
echo "--\n[DONE] Cron tasks ran @ {$datetimegmt}";
echo "\n{$round}s\n--";
if (version_compare(cheveretoVersionInstalled(), '4.2.0', '>=')) {
$sql = <<<MySQL
INSERT `%table_stats%` (stat_type, stat_date_gmt, stat_cron_time, stat_cron_runs)
VALUES ("date", DATE("%date_gmt%"), %time%, 1)
ON DUPLICATE KEY
UPDATE stat_cron_time = stat_cron_time + %time%,
stat_cron_runs = stat_cron_runs + 1;
MySQL;
$sql = (string) message(
$sql,
table_stats: DB::getTable('stats'),
time: $ceil,
date_gmt: $datetimegmt,
);
try {
DB::queryExecute($sql);
} catch (Throwable $e) {
// Do nothing
}
}
exit;
}
function echoLocked(string $job): void
{
echo "* [!] Job $job is locked ~ skipping\n";
echo "* Job: {$job} [now locked]\n";
}
function storageDelete(): void
{
$job = 'storage-delete';
$lock = new Lock($job);
if ($lock->create()) {
Queue::process(['type' => $job]);
Queue::process([
'type' => $job,
]);
$lock->destroy();
return;
@ -115,7 +193,7 @@ function removeDeleteLog(): void
}
function checkForNews(): void
{
if (!checkoutUpdate('news_check_datetimegmt')) {
if (! checkoutUpdate('news_check_datetimegmt', 'PT4H')) {
feedbackAlert('Skipping news check');
return;
@ -133,7 +211,7 @@ function checkForNews(): void
}
function checkForUpdates(): void
{
if (!checkoutUpdate('update_check_datetimegmt')) {
if (! checkoutUpdate('update_check_datetimegmt', 'P1D')) {
feedbackAlert('Skipping updates check');
return;
@ -149,10 +227,15 @@ function checkForUpdates(): void
}
echoLocked($job);
}
function checkoutUpdate(string $datetimeSetting): bool
function checkoutUpdate(string $datetimeSetting, string $past): bool
{
return is_null(Settings::get($datetimeSetting))
|| datetime_add(Settings::get($datetimeSetting), 'P1D') < datetimegmt();
$get = Variable::fetch($datetimeSetting);
return $get === null
|| datetime_add(
$get,
$past
) < datetimegmt();
}
function checkHtaccess()
{

View file

@ -9,10 +9,10 @@
* file that was distributed with this source code.
*/
use function Chevereto\Legacy\getSetting;
use function Chevereto\Legacy\cheveretoVersionInstalled;
if (getSetting('chevereto_version_installed') !== null) {
if (cheveretoVersionInstalled() !== '') {
echo "[ERROR] Chevereto is already installed, try with the update command\n";
die(255);
exit(255);
}
require_once PATH_APP_LEGACY_INSTALL . 'installer.php';

View file

@ -0,0 +1,41 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
$workingDir = PATH_PUBLIC_CONTENT_LEGACY_THEMES_PEAFOWL_LIB;
$target = 'chevereto-all.js';
$outputFile = $workingDir . $target;
echo "* Compile JavaScript\n";
echo "---\n";
$fh = fopen($outputFile, 'w');
$files = [
'js/css_browser_detector.js',
'js/jquery.min.js',
'js/jquery-ui.min.js',
'js/hammer.min.js',
'js/peafowl.js',
'js/images-loaded.js',
'js/load-image.js',
'js/clipboard.js',
'js/chevereto.js',
];
foreach ($files as $file) {
$file = $workingDir . $file;
if (! file_exists($file)) {
echo "❌ [ERROR] Missing file: {$file}\n";
exit(1);
}
echo "Packing: {$file}\n";
fwrite($fh, file_get_contents($file) . "\n");
}
fclose($fh);
echo "---\n";
echo "💯 [OK] {$outputFile}\n";
exit(0);

View file

@ -9,9 +9,9 @@
* file that was distributed with this source code.
*/
use function Chevere\Filesystem\directoryForPath;
use Chevereto\Legacy\Classes\L10n;
use Chevereto\Legacy\G\Gettext;
use function Chevere\Filesystem\directoryForPath;
use function Chevereto\Legacy\G\unlinkIfExists;
use function Chevereto\Legacy\get_available_languages;
@ -27,20 +27,20 @@ foreach ($languages as $lang) {
$language_override_file = PATH_APP_LANGUAGES . 'overrides/' . $filename;
$language_handling = [
'base' => [
'file' => $language_file,
'cache_path' => L10n::PATH_CACHE,
'table' => [],
'file' => $language_file,
'cache_path' => L10n::PATH_CACHE,
'table' => [],
],
'override' => [
'file' => $language_override_file,
'cache_path' => L10n::PATH_CACHE_OVERRIDES,
'table' => [],
]
'file' => $language_override_file,
'cache_path' => L10n::PATH_CACHE_OVERRIDES,
'table' => [],
],
];
foreach ($language_handling as $k => $v) {
$cache_path = $v['cache_path'];
$cache_file = basename($v['file']) . '.cache.php';
if (!file_exists($v['file'])) {
if (! file_exists($v['file'])) {
continue;
}
$cache = $cache_path . $cache_file;
@ -51,9 +51,12 @@ foreach ($languages as $lang) {
'cache_header' => $k == 'base',
]);
}
echo "$lang\n";
echo "{$lang}\n";
if (file_exists($language_override_file)) {
echo "{$lang} [override]\n";
}
}
echo "---\n";
echo L10n::LOCALES_AVAILABLE_FILEPATH . "\n";
echo "💯 [OK] Languages re-cached\n";
die(0);
exit(0);

View file

@ -9,38 +9,38 @@
* file that was distributed with this source code.
*/
use function Chevere\String\randomString;
use Chevereto\Legacy\Classes\Login;
use Chevereto\Legacy\Classes\User;
use function Chevere\Standard\randomString;
$opts = getopt('C:u:') ?: [];
$missing = [];
if (!isset($opts['u'])) {
echo "[Error] Missing username" . "\n";
die(255);
if (! isset($opts['u'])) {
echo '[Error] Missing username' . "\n";
exit(255);
}
$password = randomString(24);
$user = User::getSingle($opts['u'], 'username');
if ($user === []) {
echo "[Error] User not found" . "\n";
die(255);
echo '[Error] User not found' . "\n";
exit(255);
}
$changed = Login::changePassword(
userId: $user['id'],
password: $password,
update_session: false
);
if (!$changed) {
if (! $changed) {
// echo "[NOTICE] User doesn't have a password" . "\n";
$added = Login::addPassword(
userId: $user['id'],
password: $password,
update_session: false
);
if (!$added) {
echo "[Error] Failed to add password" . "\n";
die(255);
if (! $added) {
echo '[Error] Failed to add password' . "\n";
exit(255);
}
}
echo $password . "\n";
die(0);
exit(0);

View file

@ -9,21 +9,21 @@
* file that was distributed with this source code.
*/
use function Chevere\Type\getType;
use Chevereto\Legacy\Classes\Settings;
use function Chevere\Parameter\getType;
$opts = getopt('C:k:t::') ?: [];
if (!isset($opts['k'])) {
if (! isset($opts['k'])) {
echo "[ERROR] Missing setting key\n";
die(255);
exit(255);
}
if (!Settings::hasKey($opts['k'])) {
if (! Settings::hasKey($opts['k'])) {
echo "[ERROR] Setting key doesn't exists\n";
die(255);
exit(255);
}
function toItalic(string $text): string
{
return "\e[3m$text\e[0m";
return "\e[3m{$text}\e[0m";
}
$value = Settings::get($opts['k']);
$echoValue = match (getType($value)) {
@ -31,9 +31,9 @@ $echoValue = match (getType($value)) {
'boolean' => toItalic($value ? 'true' : 'false'),
default => $value,
};
echo "$echoValue\n";
echo "{$echoValue}\n";
if (isset($opts['t'])) {
$typeset = Settings::getTypeset($opts['k']);
echo "%($typeset)\n";
echo "%({$typeset})\n";
}
die(0);
exit(0);

View file

@ -14,24 +14,22 @@ use Chevereto\Legacy\Classes\Settings;
$opts = getopt('C:v:k:') ?: [];
$missing = [];
foreach (['k', 'v'] as $opt) {
if (!isset($opts[$opt])) {
if (! isset($opts[$opt])) {
$missing[] = $opt;
}
}
if ($missing !== []) {
echo "[Error] Missing -" . implode(' -', $missing) . "\n";
die(255);
echo '[Error] Missing -' . implode(' -', $missing) . "\n";
exit(255);
}
if (!Settings::hasKey($opts['k'])) {
if (! Settings::hasKey($opts['k'])) {
echo "[ERROR] Setting key doesn't exists\n";
die(255);
exit(255);
}
/** @var int|string|null $value */
$value = $opts['v'] ?? null;
$typeset = Settings::getTypeset($opts['k']);
if ($typeset === 'bool') {
$value = (int) ($value == 1 || strtolower($value) === 'true');
}
Settings::update([$opts['k'] => $value]);
Settings::update([
$opts['k'] => $value,
]);
require 'setting-get.php';
die(0);
exit(0);

Some files were not shown because too many files have changed in this diff Show more