Commit fbde117d authored by Dries's avatar Dries

- Patch #178650 by pwoladin: fixed db problem and added extra validation.

parent 0351f4ca
...@@ -187,6 +187,10 @@ function _trigger_get_hook_aids($hook, $op = '') { ...@@ -187,6 +187,10 @@ function _trigger_get_hook_aids($hook, $op = '') {
* @param $description * @param $description
* A plain English description of what this hook operation does. * A plain English description of what this hook operation does.
* @return * @return
*
* @ingoup forms
* @see trigger_assign_form_validate()
* @see trigger_assign_form_submit()
*/ */
function trigger_assign_form($form_state, $hook, $op, $description) { function trigger_assign_form($form_state, $hook, $op, $description) {
$form['hook'] = array( $form['hook'] = array(
...@@ -197,7 +201,8 @@ function trigger_assign_form($form_state, $hook, $op, $description) { ...@@ -197,7 +201,8 @@ function trigger_assign_form($form_state, $hook, $op, $description) {
'#type' => 'hidden', '#type' => 'hidden',
'#value' => $op, '#value' => $op,
); );
// All of these forms use the same #submit function. // All of these forms use the same validate and submit functions.
$form['#validate'][] = 'trigger_assign_form_validate';
$form['#submit'][] = 'trigger_assign_form_submit'; $form['#submit'][] = 'trigger_assign_form_submit';
$options = array(); $options = array();
...@@ -253,7 +258,24 @@ function trigger_assign_form($form_state, $hook, $op, $description) { ...@@ -253,7 +258,24 @@ function trigger_assign_form($form_state, $hook, $op, $description) {
} }
return $form; return $form;
} }
/**
* Validation function for trigger_assign_form().
*
* Makes sure that the user is not re-assigning an action to an event.
*/
function trigger_assign_form_validate($form, $form_state) {
$form_values = $form_state['values'];
if (!empty($form_values['aid'])) {
$aid = actions_function_lookup($form_values['aid']);
if (db_result(db_query("SELECT aid FROM {trigger_assignments} WHERE hook = '%s' AND op = '%s' AND aid = '%s'", $form_values['hook'], $form_values['operation'], $aid))) {
form_set_error($form_values['operation'], t('The action you choose is already assigned to that trigger.'));
}
}
}
/**
* Submit function for trigger_assign_form().
*/
function trigger_assign_form_submit($form, $form_state) { function trigger_assign_form_submit($form, $form_state) {
$form_values = $form_state['values']; $form_values = $form_state['values'];
......
...@@ -9,8 +9,7 @@ function trigger_schema() { ...@@ -9,8 +9,7 @@ function trigger_schema() {
'aid' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''), 'aid' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0), 'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
), ),
'index keys' => array( 'primary key' => array('hook', 'op', 'aid'),
'hook_op' => array('hook', 'op'))
); );
return $schema; return $schema;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment