/**
  * 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));
             }
         }
     }
 }
 /**
  * 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;
 }
 /**
  * Get custom params for post
  * @param int $post_id
  * @return string[string]
  */
 private function getPostParams($post_id)
 {
     $params = array();
     if ($post_id) {
         $params_model = new blogPostParamsModel();
         $params = $params_model->select('name, value')->where('post_id = i:id', array('id' => $post_id))->fetchAll('name', true);
     }
     return $params;
 }