1 | <?php |
||||
2 | |||||
3 | namespace LeKoala\Blocks; |
||||
4 | |||||
5 | use SilverStripe\Admin\LeftAndMainExtension; |
||||
6 | use SilverStripe\ORM\DB; |
||||
7 | |||||
8 | /** |
||||
9 | * Extend leftandmain to publish blocks |
||||
10 | * |
||||
11 | * @property \SilverStripe\Admin\LeftAndMain|\SilverStripe\Admin\ModelAdmin $owner |
||||
12 | */ |
||||
13 | class BlocksLeftAndMainExtension extends LeftAndMainExtension |
||||
14 | { |
||||
15 | private static $allowed_actions = [ |
||||
0 ignored issues
–
show
introduced
by
![]() |
|||||
16 | 'doPublishBlocks' |
||||
17 | ]; |
||||
18 | |||||
19 | public function doPublishBlocks() |
||||
20 | { |
||||
21 | $owner = $this->owner; |
||||
22 | $ID = $owner->getRequest()->param('ID'); |
||||
23 | $Page = BlocksPage::get()->byID($ID); |
||||
0 ignored issues
–
show
$ID of type string is incompatible with the type integer expected by parameter $id of SilverStripe\ORM\DataList::byID() .
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
24 | |||||
25 | Block::$auto_update_page = false; |
||||
26 | |||||
27 | $DataCopy = []; |
||||
28 | $Blocks = $Page->Blocks(); |
||||
29 | foreach ($Blocks as $Block) { |
||||
30 | $DataCopy[$Block->ID] = DB::query('SELECT BlockData FROM Block WHERE ID = ' . $Block->ID)->value(); |
||||
31 | if (!$Block->BlockData) { |
||||
32 | $Block->BlockData = $DataCopy[$Block->ID]; |
||||
33 | } |
||||
34 | $Block->write(); |
||||
35 | // DB::prepared_query('UPDATE Block SET BlockData = ? WHERE ID = ' . $Block->ID, [$DataCopy[$Block->ID]]); |
||||
36 | } |
||||
37 | $Page->publishRecursive(); |
||||
38 | |||||
39 | // Publish in all other locales as well! |
||||
40 | if ($Page->has_extension("\\TractorCow\\Fluent\\Extension\\FluentExtension")) { |
||||
41 | $state = \TractorCow\Fluent\State\FluentState::singleton(); |
||||
0 ignored issues
–
show
The type
TractorCow\Fluent\State\FluentState was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
42 | $currentLocale = $state->getLocale(); |
||||
43 | $allLocales = \TractorCow\Fluent\Model\Locale::get()->exclude('Locale', $currentLocale); |
||||
0 ignored issues
–
show
The type
TractorCow\Fluent\Model\Locale was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||||
44 | foreach ($allLocales as $locale) { |
||||
45 | $state->withState(function ($state) use ($locale, $Page, $DataCopy) { |
||||
46 | $state->setLocale($locale->Locale); |
||||
47 | |||||
48 | foreach ($Page->Blocks() as $Block) { |
||||
49 | if (!$Block->BlockData) { |
||||
50 | $Block->BlockData = $DataCopy[$Block->ID]; |
||||
51 | } |
||||
52 | $Block->write(); |
||||
53 | } |
||||
54 | |||||
55 | $Page->publishRecursive(); |
||||
56 | }); |
||||
57 | } |
||||
58 | |||||
59 | // Preserve original data |
||||
60 | // TODO: understand why Data is emptied |
||||
61 | foreach ($Blocks as $Block) { |
||||
62 | DB::prepared_query('UPDATE Block SET BlockData = ? WHERE ID = ' . $Block->ID, [$DataCopy[$Block->ID]]); |
||||
63 | } |
||||
64 | } |
||||
65 | |||||
66 | $message = "Blocks published"; |
||||
67 | |||||
68 | $owner->getResponse()->addHeader('X-Status', rawurlencode($message)); |
||||
69 | return $owner->getResponseNegotiator()->respond($owner->getRequest()); |
||||
70 | } |
||||
71 | |||||
72 | public function init() |
||||
73 | { |
||||
74 | } |
||||
75 | } |
||||
76 |