public function actionUpdate($pid, $id, $Stre_page = 1) { $cs = Yii::app()->clientScript; $cs->registerScriptFile("/js/admin/url.js"); $model = Stre::model()->findByPk($id); $root = Stre::model()->roots()->findByPk($pid); if (empty($model) || empty($root)) { $this->redirect($this->createUrl('default/viewcatalog', array('id' => $pid, 'Stre_page' => $Stre_page, 'msg' => '[!] Не существует такого элемента!', 'msgtype' => 'error'))); } $this->performAjaxValidation($model); if (!empty($_POST['Stre']['name'])) { $model->name = $_POST['Stre']['name']; $model->alias = $_POST['Stre']['alias']; $old_view = $model->view; $new_view = $_POST['Stre']['view']; $model->view = $_POST['Stre']['view']; $model->title = $_POST['Stre']['title']; $model->keywords = $_POST['Stre']['keywords']; $model->description = $_POST['Stre']['description']; try { $model->saveNode(); if ($old_view != $new_view) { foreach ($model->descendants()->findAll() as $des) { $des->view = $new_view; $des->saveNode(); } } foreach ($model->type->attrs as $attr) { unset($attr_val); $attr_val = AttrVal::model()->findByPk(array('id_attr' => $attr->id, 'id_elem' => $model->id)); if (empty($attr_val)) { $attr_val = new AttrVal(); $attr_val->id_attr = $attr->id; $attr_val->id_elem = $model->id; } $old_value = $attr_val->value; $new_value = $_POST['AttrVal'][$attr->id]; if ($attr->mytype->mytype == 'photo') { if ($old_value != '' && $old_value != $new_value) { @unlink($_SERVER['DOCUMENT_ROOT'] . '/userfiles/original/' . $old_value); @unlink($_SERVER['DOCUMENT_ROOT'] . '/userfiles/large/' . $old_value); @unlink($_SERVER['DOCUMENT_ROOT'] . '/userfiles/medium/' . $old_value); @unlink($_SERVER['DOCUMENT_ROOT'] . '/userfiles/small/' . $old_value); } if ($new_value != '' && $old_value != $new_value) { $photo = $_POST['AttrVal'][$attr->id]; $img = Yii::app()->image->load($_SERVER['DOCUMENT_ROOT'] . '/userfiles/editor/images/' . $photo); $pname = 'catalog_' . $model->id . '_' . $photo; $img->save($_SERVER['DOCUMENT_ROOT'] . '/userfiles/original/' . $pname); $img->resize(600, 600); $img->save($_SERVER['DOCUMENT_ROOT'] . '/userfiles/large/' . $pname); $img->resize(200, 200); $img->save($_SERVER['DOCUMENT_ROOT'] . '/userfiles/medium/' . $pname); $img->resize(100, 100); $img->save($_SERVER['DOCUMENT_ROOT'] . '/userfiles/small/' . $pname); $attr_val->value = $pname; } else { $attr_val->value = $new_value; } } else { $attr_val->value = $_POST['AttrVal'][$attr->id]; if ($attr->fk > 0) { if (!empty($attr_val->value)) { $attr_val->value = implode(',', $_POST['AttrVal'][$attr->id]); } else { $attr_val->value = ''; } } } if ($attr_val->isNewRecord) { $attr_val->insert(); } else { $attr_val->update(); } } } catch (CDbException $e) { $this->redirect($this->createUrl('default/viewcatalog', array('id' => $pid, 'Stre_page' => $Stre_page, 'msg' => $e->getMessage(), 'msgtype' => 'error'))); } if (isset($_POST['savebutton'])) { $this->redirect($this->createUrl('default/viewcatalog', array('id' => $pid, 'Stre_page' => $Stre_page, 'msg' => '[!] Элемент успешно обновлен', 'msgtype' => 'success'))); } else { $this->redirect($this->createUrl('default/update', array('id' => $model->id, 'pid' => $pid, 'Stre_page' => $Stre_page, 'msg' => '[!] Элемент успешно обновлен', 'msgtype' => 'success'))); } } $this->render('update', array('root' => $root, 'model' => $model, 'pid' => $pid, 'Stre_page' => $Stre_page)); }