protected function bindEvent()
{
craft()->on('fields.saveFieldLayout', function (Event $e) {
$layout = $e->params['layout'];
$relabel = craft()->request->getPost('relabel');
if ($relabel) {
$transaction = craft()->db->getCurrentTransaction() ? false : craft()->db->beginTransaction();
try {
foreach ($relabel as $fieldId => $labelInfo) {
$label = new RelabelModel();
$label->fieldId = $fieldId;
$label->fieldLayoutId = $layout->id;
if (array_key_exists('name', $labelInfo)) {
$label->name = $labelInfo['name'];
}
if (array_key_exists('instructions', $labelInfo)) {
$label->instructions = $labelInfo['instructions'];
}
craft()->relabel->saveLabel($label);
}
if ($transaction) {
$transaction->commit();
}
} catch (\Exception $e) {
if ($transaction) {
$transaction->rollback();
}
throw $e;
}
// Make sure these labels don't get saved more than once
unset($_POST['relabel']);
}
});
}