adjust position when deleting Achievements

This commit is contained in:
coderkun 2014-07-10 12:57:55 +02:00
commit b1a92bcd03
2 changed files with 27 additions and 4 deletions

View file

@ -940,7 +940,7 @@
if(!is_null($this->request->getPostParam('delete'))) if(!is_null($this->request->getPostParam('delete')))
{ {
// Delete seminary // Delete seminary
$this->Achievements->deleteAchievement($achievement['id']); $this->Achievements->deleteAchievement($achievement);
} }
// Redirect to entry // Redirect to entry

View file

@ -1136,11 +1136,34 @@
/** /**
* Delete an Achievement. * Delete an Achievement.
* *
* @param int $achievementId ID of Achievement to delete * @param int $achievement Achievement to delete
*/ */
public function deleteAchievement($achievementId) public function deleteAchievement($achievement)
{ {
$this->db->query('DELETE FROM achievements WHERE id = ?', 'i', $achievementId); $this->db->setAutocommit(false);
try {
// Delete Achievement
$this->db->query('DELETE FROM achievements WHERE id = ?', 'i', $achievementId);
// Adjust positions
$this->db->query(
'UPDATE achievements '.
'SET pos = pos - 1 '.
'WHERE seminary_id = ? AND pos > ?',
'ii',
$achievement['seminary_id'],
$achievement['pos']
);
$this->db->commit();
}
catch(\Exception $e) {
$this->db->rollback();
$this->db->setAutocommit(true);
throw $e;
}
$this->db->setAutocommit(true);
} }
} }