26 $this->
_init(
'widget_instance',
'instance_id');
39 $this->
getTable(
'widget_instance_page')
46 return parent::_afterLoad($object);
57 $pageTable = $this->
getTable(
'widget_instance_page');
58 $pageLayoutTable = $this->
getTable(
'widget_instance_page_layout');
64 $removePageIds = array_diff($pageIds, $object->
getData(
'page_group_ids'));
66 if (is_array($pageIds) && count($pageIds) > 0) {
67 $inCond =
$connection->prepareSqlCondition(
'page_id', [
'in' => $pageIds]);
69 $select =
$connection->select()->from($pageLayoutTable,
'layout_update_id')->where($inCond);
78 foreach ($object->
getData(
'page_groups') as $pageGroup) {
81 'page_group' => $pageGroup[
'group'],
82 'layout_handle' => $pageGroup[
'layout_handle'],
83 'block_reference' => $pageGroup[
'block_reference'],
84 'page_for' => $pageGroup[
'for'],
85 'entities' => $pageGroup[
'entities'],
86 'page_template' => $pageGroup[
'template'],
88 $pageId = $pageGroup[
'page_id'];
89 if (in_array($pageGroup[
'page_id'], $pageIds)) {
95 foreach ($pageLayoutUpdateIds as $layoutUpdateId) {
98 [
'page_id' => $pageId,
'layout_update_id' => $layoutUpdateId]
103 return parent::_afterSave($object);
116 $pageLayoutUpdateIds = [];
118 $layoutUpdateTable = $this->
getTable(
'layout_update');
119 $layoutUpdateLinkTable = $this->
getTable(
'layout_link');
121 foreach ($pageGroupData[
'layout_handle_updates'] as
$handle) {
122 $xml = $widgetInstance->generateLayoutUpdateXml(
123 $pageGroupData[
'block_reference'],
124 $pageGroupData[
'template']
126 $insert = [
'handle' =>
$handle,
'xml' => $xml];
127 if (strlen($widgetInstance->getSortOrder())) {
128 $insert[
'sort_order'] = $widgetInstance->getSortOrder();
132 $layoutUpdateId =
$connection->lastInsertId($layoutUpdateTable);
133 $pageLayoutUpdateIds[] = $layoutUpdateId;
139 'theme_id' => $widgetInstance->getThemeId(),
140 'layout_update_id' => $layoutUpdateId,
145 return $pageLayoutUpdateIds;
157 if (in_array(
'0', $storeIds)) {
174 [
'main_table' => $this->
getTable(
'widget_instance_page')],
177 [
'layout_page_table' => $this->
getTable(
'widget_instance_page_layout')],
178 'layout_page_table.page_id = main_table.page_id',
181 'main_table.instance_id=?',
185 $object->setLayoutUpdateIdsToDelete(
$result);
199 return parent::_afterDelete($object);
212 $inCond =
$connection->prepareSqlCondition(
'page_id', [
'in' => $pageIds]);
227 if ($layoutUpdateIds) {
228 $inCond =
$connection->prepareSqlCondition(
'layout_update_id', [
'in' => $layoutUpdateIds]);
247 "{$this->getIdFieldName()} = ?",
251 return $storeIds ? explode(
',', $storeIds) : [];
setData($key, $value=null)
getData($key='', $index=null)
_init($mainTable, $idFieldName)