/** * Ham them/sua setting cua widget * @param string $diyId id cua diy * @param string $containerId id cua container * @param string $positionId id cua position * @param string $widgetId id cua widget * @param array $settings mang gia tri cua option * @return boolean */ public function saveSettingWidget($diyId, $containerId, $positionId, $widgetId, $settings) { // Map name setting with value $settingArray = ArrayHelper::map($settings, 'name', 'value'); // Get widget info by id $model = Diy::find()->where(['_id' => $diyId])->one(); if ($model) { $model->data = ArrayHelper::merge($model->data, [$containerId => [$positionId => ArrayHelper::merge($model->data[$containerId][$positionId], ['widgets' => ArrayHelper::merge($model->data[$containerId][$positionId]['widgets'], [$widgetId => ArrayHelper::merge($model->data[$containerId][$positionId]['widgets'][$widgetId], ['settings' => $settingArray])])])]]); return $model->save(); } return false; }
/** * Ham them moi mot widget vao position * @param string $diyId id cua diy * @param string $itemId id cua widget duoc luu vao mang * @param string $containerId id cua container chua position * @param string $positionId id cua position duoc move vao * @param string $draggable_id id cua widget trong database * @return string */ private function addWidget($diyId, $itemId, $containerId, $positionId, $draggable_id) { // Generate template widget $template = DiyWidget::generateTemplateSetting($containerId, $positionId, $itemId, $draggable_id, []); $model = Diy::find()->where(['_id' => $diyId])->one(); if ($model) { // Check position co widget hay chua $position = ArrayHelper::getValue($model->data[$containerId][$positionId], 'widgets', []); // Neu chua thi add moi vao position if (empty($position)) { $model->data = ArrayHelper::merge($model->data, [$containerId => [$positionId => ArrayHelper::merge($model->data[$containerId][$positionId], ['widgets' => [$itemId => ['id' => $draggable_id]]])]]); } else { // Neu co widget trong position thi add them vao mang hien co $model->data = ArrayHelper::merge($model->data, [$containerId => [$positionId => ArrayHelper::merge($model->data[$containerId][$positionId], ['widgets' => ArrayHelper::merge($model->data[$containerId][$positionId]['widgets'], [$itemId => ['id' => $draggable_id]])])]]); } $model->save(); } return $template; }