コード例 #1
0
 /**
  * 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));
             }
         }
     }
 }