/** * Updates a routine. */ public function actionUpdate() { $routine = Routine::model()->findByPk(array('ROUTINE_SCHEMA' => $this->schema, 'ROUTINE_NAME' => $this->routine)); if (is_null($routine)) { $routine = new Routine(); $routine->ROUTINE_TYPE = $_POST['type']; } $type = strtolower($routine->ROUTINE_TYPE); if (isset($_POST['query'])) { $currentRoutine = $routine->getCreateRoutine(); $query = $_POST['query']; try { // Split queries $splitter = new SqlSplitter($query); $splitter->delimiter = self::$delimiter; $queries = $splitter->getQueries(); foreach ($queries as $query2) { $cmd = $this->db->createCommand($query2); $cmd->prepare(); $cmd->execute(); } $response = new AjaxResponse(); $response->addNotification('success', Yii::t('core', 'successAlterRoutine', array('{routine}' => $routine->ROUTINE_NAME)), null, $query); $response->refresh = true; $this->sendJSON($response); } catch (CDbException $ex) { $errorInfo = $cmd->getPdoStatement()->errorInfo(); $routine->addError(null, Yii::t('core', 'sqlErrorOccured', array('{errno}' => $errorInfo[1], '{errmsg}' => $errorInfo[2]))); $this->restoreCurrentRoutine($currentRoutine); } } else { $query = 'DROP ' . strtoupper($routine->ROUTINE_TYPE) . ' ' . $this->db->quoteTableName($routine->ROUTINE_NAME) . self::$delimiter . "\n" . $routine->getCreateRoutine(); } CHtml::generateRandomIdPrefix(); $this->render('form', array('routine' => $routine, 'type' => $type, 'query' => $query)); }