/** * Delete records from table and related data * * @param $field * @param $value * @return bool */ public function deleteByField($field, $value = null) { if (is_array($field)) { $items = $this->getByField($field, $this->id); } else { $items = $this->getByField($field, $value, $this->id); } $res = false; if ($post_ids = array_keys($items)) { /** * @event post_predelete * @param array[] int $post_ids array of post's ID * @return void */ wa()->event('post_predelete', $post_ids); $res = parent::deleteByField('id', $post_ids); if ($res) { $comment_model = new blogCommentModel(); $comment_model->deleteByField('post_id', $post_ids); $params_model = new blogPostParamsModel(); $params_model->deleteByField('post_id', $post_ids); $blog_model = new blogBlogModel(); $blogs = array(); foreach ($items as $item) { $blogs[] = $item['blog_id']; } $blogs = array_unique($blogs); $blog_model->recalculate($blogs); /** * @event post_delete * @param array[] int $post_ids array of post's ID * @return void */ wa()->event('post_delete', $post_ids); } } return $res; }
/** * Save custom params for post * @param int $post_id */ private function saveParams($post_id) { $params = array(); $post_params = waRequest::post('params', '', waRequest::TYPE_STRING_TRIM); if ($post_params) { $post_params = explode("\n", $post_params); foreach ($post_params as $param) { $param = explode("=", trim($param), 2); if (count($param) == 2) { $params[$param[0]] = $param[1]; } } } $params_model = new blogPostParamsModel(); $old_params = !$post_id ? array() : $params_model->select('name,value')->where('post_id = i:id', array('id' => $post_id))->fetchAll('name', true); if ($params || $old_params) { $add = array(); $update = array(); foreach ($params as $param => $value) { if (isset($old_params[$param])) { if ($value != $old_params[$param]) { $update[$param] = $value; } unset($old_params[$param]); } else { $add[$param] = $value; } } $delete = $old_params; if ($delete) { $params_model->deleteByField(array('post_id' => $post_id, 'name' => array_keys($delete))); } if ($add) { foreach ($add as $name => $value) { $params_model->insert(array('post_id' => $post_id, 'name' => $name, 'value' => $value)); } } if ($update) { foreach ($update as $name => $value) { $params_model->updateByField(array('post_id' => $post_id, 'name' => $name), array('value' => $value)); } } } }