Skip to content

Commit 799191e

Browse files
committed
Cleanup.
1 parent ffa7f0d commit 799191e

File tree

12 files changed

+198
-102
lines changed

12 files changed

+198
-102
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# CakePHP Translate Plugin
22
[![CI](https://github.com/dereuromark/cakephp-translate/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/dereuromark/cakephp-translate/actions/workflows/ci.yml?query=branch%3Amaster)
33
[![Coverage Status](https://img.shields.io/codecov/c/github/dereuromark/cakephp-translate/master.svg)](https://codecov.io/github/dereuromark/cakephp-translate/branch/master)
4+
[![PHPStan](https://img.shields.io/badge/PHPStan-level%208-brightgreen.svg?style=flat)](https://phpstan.org/)
45
[![Latest Stable Version](https://poser.pugx.org/dereuromark/cakephp-translate/v/stable.svg)](https://packagist.org/packages/dereuromark/cakephp-translate)
56
[![Minimum PHP Version](http://img.shields.io/badge/php-%3E%3D%208.3-8892BF.svg)](https://php.net/)
67
[![License](https://poser.pugx.org/dereuromark/cakephp-translate/license.svg)](https://packagist.org/packages/dereuromark/cakephp-translate)

resources/locales/translate.pot

Lines changed: 102 additions & 79 deletions
Large diffs are not rendered by default.

src/Command/I18nDumpCommand.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ public function execute(Arguments $args, ConsoleIo $io): ?int {
6666
}
6767
}
6868
$this->_projectId = $this->findProjectId($plugin);
69+
if ($this->_projectId === null) {
70+
$io->abort('No project found.');
71+
}
6972

7073
/** @var \Translate\Model\Entity\TranslateLocale[] $languages */
7174
$languages = $this->fetchTable('Translate.TranslateLocales')->getExtractable($this->_projectId)->all()->toArray();

src/Controller/Admin/TranslateBehaviorController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ public function view(?string $tableName = null) {
178178

179179
return $this->redirect(['action' => 'index']);
180180
}
181+
/** @var string $tableName */
181182

182183
/** @var \Cake\Database\Connection $connection */
183184
$connection = ConnectionManager::get('default');
@@ -683,7 +684,7 @@ public function change(): void
683684
/**
684685
* Save migration file directly
685686
*
686-
* @return \Cake\Http\Response
687+
* @return \Cake\Http\Response|null
687688
*/
688689
public function saveMigration() {
689690
$this->request->allowMethod(['post']);

src/Controller/Admin/TranslateController.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,18 @@ public function viewClasses(): array {
3535
* @return void
3636
*/
3737
public function index() {
38+
$id = $this->Translation->currentProjectId();
39+
3840
$translateLocalesTable = $this->fetchTable('Translate.TranslateLocales');
3941
$languages = $translateLocalesTable->find('all')
4042
->where([
41-
'translate_project_id' => $this->Translation->currentProjectId(),
43+
'translate_project_id' => $id,
4244
'active' => true,
4345
])
4446
->toArray();
4547

46-
$id = $this->Translation->currentProjectId();
4748
$count = $id ? $this->TranslateDomains->statistics($id, $languages) : 0;
48-
$coverage = $this->TranslateDomains->TranslateStrings->coverage($id);
49+
$coverage = $id ? $this->TranslateDomains->TranslateStrings->coverage($id) : 0;
4950
$projectSwitchArray = $this->TranslateDomains->TranslateProjects->find('list')->toArray();
5051

5152
// Calculate translated counts per locale for coverage table
@@ -216,6 +217,12 @@ public function reset() {
216217
}
217218

218219
$projectId = $this->Translation->currentProjectId();
220+
if (!$projectId) {
221+
$this->Flash->error(__d('translate', 'No project selected.'));
222+
223+
return $this->redirect(['action' => 'index']);
224+
}
225+
219226
$types = [];
220227
$languages = [];
221228

@@ -297,7 +304,7 @@ public function convert() {
297304
/**
298305
* Switch the application language/locale
299306
*
300-
* @return \Cake\Http\Response
307+
* @return \Cake\Http\Response|null
301308
*/
302309
public function switchLanguage() {
303310
$locale = $this->request->getQuery('locale');
@@ -337,7 +344,7 @@ public function switchLanguage() {
337344
/**
338345
* Switch the current project.
339346
*
340-
* @return \Cake\Http\Response
347+
* @return \Cake\Http\Response|null
341348
*/
342349
public function switchProject() {
343350
$this->request->allowMethod(['post']);

src/Controller/Admin/TranslateStringsController.php

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,14 @@ public function source() {
217217
* @return void
218218
*/
219219
public function extract(ExtractService $extractService) {
220+
$projectId = $this->Translation->currentProjectId();
221+
if (!$projectId) {
222+
throw new NotFoundException(__d('translate', 'No project selected.'));
223+
}
224+
220225
// Get locale path for display
221226
$TranslateProjects = $this->fetchTable('Translate.TranslateProjects');
222-
$project = $TranslateProjects->get($this->Translation->currentProjectId());
227+
$project = $TranslateProjects->get($projectId);
223228
$projectPath = $project->path ?? null;
224229
if (!$projectPath) {
225230
$projectPath = ROOT;
@@ -231,7 +236,7 @@ public function extract(ExtractService $extractService) {
231236
// Set the locale path on the service
232237
$extractService->setLocalePath($localePath);
233238

234-
$translateLocales = $this->TranslateStrings->TranslateTerms->TranslateLocales->getExtractableAsList($this->Translation->currentProjectId());
239+
$translateLocales = $this->TranslateStrings->TranslateTerms->TranslateLocales->getExtractableAsList($projectId);
235240
$poFileLanguages = $extractService->getPoFileLanguages();
236241

237242
// Filter to only include files that actually exist
@@ -269,7 +274,7 @@ public function extract(ExtractService $extractService) {
269274
}
270275
$translations = $extractService->extractPotFile($domain);
271276

272-
$translationDomain = $this->TranslateStrings->TranslateDomains->getDomain($this->Translation->currentProjectId(), $domain);
277+
$translationDomain = $this->TranslateStrings->TranslateDomains->getDomain($projectId, $domain);
273278

274279
foreach ($translations as $translation) {
275280
$total++;
@@ -305,7 +310,7 @@ public function extract(ExtractService $extractService) {
305310
$languageName,
306311
$locale,
307312
$lang,
308-
$this->Translation->currentProjectId(),
313+
$projectId,
309314
);
310315
if ($translateLocale) {
311316
$translateLocales[$lang] = $translateLocale->id;
@@ -315,7 +320,7 @@ public function extract(ExtractService $extractService) {
315320
}
316321
$translations = $extractService->extractPoFile($domain, $locale);
317322

318-
$translationDomain = $this->TranslateStrings->TranslateDomains->getDomain($this->Translation->currentProjectId(), $domain);
323+
$translationDomain = $this->TranslateStrings->TranslateDomains->getDomain($projectId, $domain);
319324

320325
foreach ($translations as $translation) {
321326
$total++;
@@ -376,9 +381,14 @@ public function extract(ExtractService $extractService) {
376381
* @return \Cake\Http\Response|null|void
377382
*/
378383
public function dump() {
384+
$projectId = $this->Translation->currentProjectId();
385+
if (!$projectId) {
386+
throw new NotFoundException(__d('translate', 'No project selected.'));
387+
}
388+
379389
// Get path from current project
380390
$TranslateProjects = $this->fetchTable('Translate.TranslateProjects');
381-
$project = $TranslateProjects->get($this->Translation->currentProjectId());
391+
$project = $TranslateProjects->get($projectId);
382392

383393
$path = $project->path ?? null;
384394
if (!$path) {
@@ -388,7 +398,7 @@ public function dump() {
388398
}
389399
$path = rtrim($path, DS) . DS . 'resources' . DS . 'locales' . DS;
390400

391-
$translateLocales = $this->TranslateStrings->TranslateTerms->TranslateLocales->getExtractableAsList($this->Translation->currentProjectId());
401+
$translateLocales = $this->TranslateStrings->TranslateTerms->TranslateLocales->getExtractableAsList($projectId);
392402
/** @var \Translate\Model\Entity\TranslateDomain[] $domains */
393403
$domains = $this->TranslateStrings->TranslateDomains->getActive()->toArray();
394404

@@ -408,7 +418,7 @@ public function dump() {
408418
[$lang, $domain] = explode('_', $domain, 2);
409419

410420
$langId = $this->TranslateStrings->TranslateTerms->TranslateLocales->find()->where(['iso2' => $lang])->firstOrFail()->id;
411-
$domainId = $this->TranslateStrings->TranslateDomains->find()->where(['name' => $domain, 'translate_project_id' => $this->Translation->currentProjectId()])->firstOrFail()->id;
421+
$domainId = $this->TranslateStrings->TranslateDomains->find()->where(['name' => $domain, 'translate_project_id' => $projectId])->firstOrFail()->id;
412422
$translations = $this->TranslateStrings->TranslateTerms->getTranslations($langId, $domainId)->toArray();
413423

414424
if (!$translations) {
@@ -661,6 +671,10 @@ public function import() {
661671
protected function updateSourceReferences($translateString, string $originalName): int {
662672
$updatedCount = 0;
663673

674+
if (!$translateString->references) {
675+
return 0;
676+
}
677+
664678
// Parse references
665679
$references = explode(PHP_EOL, $translateString->references);
666680
$path = $translateString->translate_domain->translate_project->path ?? null;
@@ -870,9 +884,14 @@ protected function readPoFile(string $fileKey, ExtractService $extractService):
870884
* @return \Cake\Http\Response|null|void
871885
*/
872886
public function runExtract() {
887+
$projectId = $this->Translation->currentProjectId();
888+
if (!$projectId) {
889+
throw new NotFoundException(__d('translate', 'No project selected.'));
890+
}
891+
873892
$TranslateProjects = $this->fetchTable('Translate.TranslateProjects');
874893
/** @var \Translate\Model\Entity\TranslateProject $project */
875-
$project = $TranslateProjects->get($this->Translation->currentProjectId());
894+
$project = $TranslateProjects->get($projectId);
876895

877896
$appPath = $project->path ?: null;
878897
if (!$appPath) {
@@ -1108,7 +1127,7 @@ public function runExtract() {
11081127
$domain = pathinfo($file, PATHINFO_FILENAME);
11091128
$translations = $extractService->extractPotFile($domain);
11101129
$translationDomain = $this->TranslateStrings->TranslateDomains->getDomain(
1111-
$this->Translation->currentProjectId(),
1130+
$projectId,
11121131
$domain,
11131132
);
11141133

src/Controller/Component/TranslationComponent.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ public function isPosted(): bool {
117117
* Auto-redirect helper that redirects to a URL or referrer
118118
*
119119
* @param array|string|null $url URL to redirect to, or null to use referer
120-
* @return \Cake\Http\Response
120+
* @return \Cake\Http\Response|null
121121
*/
122-
public function autoRedirect(array|string|null $url = null): Response {
122+
public function autoRedirect(array|string|null $url = null): ?Response {
123123
if ($url === null) {
124124
$url = (string)$this->getController()->getRequest()->referer(true);
125125
if ($url === '') {

src/Model/Entity/TranslateProject.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class TranslateProject extends Entity {
3737
/**
3838
* @param int|null $value
3939
*
40-
* @return array|string
40+
* @return array<int|string, mixed>|string|null
4141
*/
4242
public static function statuses($value = null) {
4343
$options = [
@@ -67,7 +67,7 @@ public static function statuses($value = null) {
6767
/**
6868
* @param int|null $value
6969
*
70-
* @return array|string
70+
* @return array<int|string, mixed>|string|null
7171
*/
7272
public static function types($value = null) {
7373
$options = [

src/Model/Table/TranslateApiTranslationsTable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function validationDefault(Validator $validator): Validator {
7272

7373
/**
7474
* @param string $key
75-
* @param string $value
75+
* @param string|null $value
7676
* @param string $to
7777
* @param string $from
7878
* @param string $engine

src/Parser/PoParser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ public function clean($value) {
568568
$value[$k] = $this->clean($v);
569569
}
570570
} else {
571-
$value = preg_replace('/^\"|\"$/', '', (string)$value);
571+
$value = preg_replace('/^\"|\"$/', '', (string)$value) ?? '';
572572
$value = stripcslashes($value);
573573
}
574574

0 commit comments

Comments
 (0)