public function beforeSaveField(&$params) { if (empty($params['photo_id'])) { return; } if (is_array($params['photo_id'])) { $photo_id = (int) reset($params['photo_id']); } else { $photo_id = (int) $params['photo_id']; } $photo_model = new photosPhotoModel(); $photo = $photo_model->getById($photo_id); if (!$photo) { return; } if (empty($params['data'])) { return; } $data = $params['data']; if (!isset($data['rate'])) { return; } $contact_id = wa()->getUser()->getId(); $vote_model = new photosPublicgalleryVoteModel(); if ($vote_model->getByField(array('photo_id' => $photo_id, 'contact_id' => $contact_id))) { $params['data'] = $photo['rate']; } else { $vote_model->insert(array('photo_id' => $photo_id, 'contact_id' => wa()->getUser()->getId(), 'rate' => $data['rate'], 'datetime' => date('Y-m-d H:i:s'), 'ip' => waRequest::getIp(true))); $params['data']['rate'] = $vote_model->getRate($photo_id); $params['data']['votes_count'] = $vote_model->getVotesCount($photo_id); } }