Index: includes/actions.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/actions.inc,v retrieving revision 1.8.2.5 diff -u -p -r1.8.2.5 actions.inc --- includes/actions.inc 16 Oct 2008 12:45:53 -0000 1.8.2.5 +++ includes/actions.inc 5 Dec 2008 00:03:14 -0000 @@ -69,8 +69,8 @@ function actions_do($action_ids, &$objec // Strip off leading 'OR '. $where_clause = '('. strstr($where_clause, " ") .')'; $result_db = db_query('SELECT * FROM {actions} WHERE '. $where_clause, $where_values); - while ($action = db_fetch_object($result_db)) { - $actions[$action->aid] = $action->parameters ? unserialize($action->parameters) : array(); + while ($action = action_unpack(db_fetch_object($result_db))) { + $actions[$action->aid] = $action->parameters; $actions[$action->aid]['callback'] = $action->callback; $actions[$action->aid]['type'] = $action->type; } @@ -93,9 +93,9 @@ function actions_do($action_ids, &$objec else { // If it's a configurable action, retrieve stored parameters. if (is_numeric($action_ids)) { - $action = db_fetch_object(db_query("SELECT * FROM {actions} WHERE aid = '%s'", $action_ids)); + $action = actions_load($actions_ids); $function = $action->callback; - $context = array_merge($context, unserialize($action->parameters)); + $context = array_merge($context, $action->parameters); $result[$action_ids] = $function($object, $context, $a1, $a2); } // Singleton action; $action_ids is the function name. @@ -350,7 +350,22 @@ function actions_save($function, $type, * The appropriate action row from the database as an object. */ function actions_load($aid) { - return db_fetch_object(db_query("SELECT * FROM {actions} WHERE aid = '%s'", $aid)); + return actions_unpack(db_fetch_object(db_query("SELECT * FROM {actions} WHERE aid = '%s'", $aid))); +} + +/** + * Prepare a action fields to be accessed. + * + * @param $action + * An action object from a db_query + * + * @return + * The given action field with unpacked fields + */ + +function actions_unpack($action) { + $action->parameters = ($action->parameters) ? unserialize($action->parameters) : array(); + return $action; } /** Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.585.2.23 diff -u -p -r1.585.2.23 system.module --- modules/system/system.module 22 Oct 2008 19:36:26 -0000 1.585.2.23 +++ modules/system/system.module 5 Dec 2008 00:03:16 -0000 @@ -1431,16 +1431,13 @@ function system_actions_configure($form_ if (is_numeric($action)) { $aid = $action; // Load stored parameter values from database. - $data = db_fetch_object(db_query("SELECT * FROM {actions} WHERE aid = '%s'", $aid)); + $data = actions_load($aid); $edit['actions_description'] = $data->description; $edit['actions_type'] = $data->type; $function = $data->callback; $action = md5($data->callback); - $params = unserialize($data->parameters); - if ($params) { - foreach ($params as $name => $val) { - $edit[$name] = $val; - } + foreach ($data->parameters as $name => $val) { + $edit[$name] = $val; } } else {