| 80 |
// Called by the Voting API whenever a result is calculated. |
// Called by the Voting API whenever a result is calculated. |
| 81 |
function voting_actions_votingapi_results($cached, $votes, $content_type, $content_id) { |
function voting_actions_votingapi_results($cached, $votes, $content_type, $content_id) { |
| 82 |
$content = votingapi_load_content($content_id, $content_type); |
$content = votingapi_load_content($content_id, $content_type); |
| 83 |
if ($content == NULL) { |
if ($content_type != 'node' || $content == NULL) { |
| 84 |
return; |
return; |
| 85 |
} |
} |
| 86 |
$context = array( |
$context = array( |
| 288 |
} |
} |
| 289 |
|
|
| 290 |
$set['status'] = voting_actions_get_status($set['name']); |
$set['status'] = voting_actions_get_status($set['name']); |
| 291 |
$set['subsets'] = _voting_actions_load_sets_from_db($vasid); |
$set['sets'] = _voting_actions_load_sets_from_db($set['vasid']); |
| 292 |
$sets[$set['name']] = $set; |
$sets[$set['name']] = $set; |
| 293 |
} |
} |
| 294 |
|
|
| 305 |
db_query($sql, $vasid, $set['name'], $set['parent'], |
db_query($sql, $vasid, $set['name'], $set['parent'], |
| 306 |
$set['source'], $set['description'], $set['condition_mask'], |
$set['source'], $set['description'], $set['condition_mask'], |
| 307 |
$set['required'], $set['weight']); |
$set['required'], $set['weight']); |
| 308 |
|
|
|
voting_actions_set_status($set['name'], $set['status']); |
|
|
|
|
| 309 |
if (is_array($set['conditions'])) { |
if (is_array($set['conditions'])) { |
| 310 |
foreach ($set['conditions'] as $condition) { |
foreach ($set['conditions'] as $condition) { |
| 311 |
$condition['vasid'] = $vasid; |
$condition['vasid'] = $vasid; |
| 318 |
db_query("INSERT INTO {voting_actions_action} (vasid, aid) VALUES (%d, '%s')", $vasid, $action); |
db_query("INSERT INTO {voting_actions_action} (vasid, aid) VALUES (%d, '%s')", $vasid, $action); |
| 319 |
} |
} |
| 320 |
} |
} |
|
|
|
|
if (is_array($set['sets'])) { |
|
|
foreach ($set['sets'] as $sname => $subset) { |
|
|
$subset['parent_name'] = $name; |
|
|
_voting_actions_insert_set($subset); |
|
|
} |
|
|
} |
|
| 321 |
} |
} |
| 322 |
|
|
| 323 |
function _voting_actions_insert_condition($condition) { |
function _voting_actions_insert_condition($condition) { |
| 341 |
$set['source'], $set['description'], $set['condition_mask'], |
$set['source'], $set['description'], $set['condition_mask'], |
| 342 |
$set['required'], $set['weight'], $set['vasid']); |
$set['required'], $set['weight'], $set['vasid']); |
| 343 |
|
|
|
voting_actions_set_status($set['name'], $set['status']); |
|
|
|
|
| 344 |
if (is_array($set['conditions'])) { |
if (is_array($set['conditions'])) { |
| 345 |
|
// First we'll loop through and delete any that are |
| 346 |
|
// in the db but not in the new version of the set. |
| 347 |
|
$current_sets = array(); |
| 348 |
foreach ($set['conditions'] as $condition) { |
foreach ($set['conditions'] as $condition) { |
| 349 |
if (isset($condition['vacid'])) { |
if (isset($condition['vacid'])) { |
| 350 |
if (!empty($condition['deleted'])) { |
$current_sets['wildcards'][] = '%d'; |
| 351 |
db_query("DELETE FROM {voting_actions_condition} WHERE vacid = %d", $set['vacid']); |
$current_sets['replacements'][] = $condition['vacid']; |
| 352 |
} |
} |
| 353 |
else { |
} |
| 354 |
_voting_actions_update_condition($condition); |
db_query("DELETE FROM {voting_actions_condition} WHERE vacid NOT IN = (". implode(',', $current_sets['wildcards']) .")", $current_sets['replacements']); |
| 355 |
} |
|
| 356 |
|
foreach ($set['conditions'] as $condition) { |
| 357 |
|
if (isset($condition['vacid'])) { |
| 358 |
|
_voting_actions_update_condition($condition); |
| 359 |
} |
} |
| 360 |
else { |
else { |
| 361 |
_voting_actions_insert_condition($condition); |
_voting_actions_insert_condition($condition); |
| 369 |
db_query("DELETE FROM {voting_actions_action} WHERE vasid = %d", $set['vasid']); |
db_query("DELETE FROM {voting_actions_action} WHERE vasid = %d", $set['vasid']); |
| 370 |
if (is_array($set['actions'])) { |
if (is_array($set['actions'])) { |
| 371 |
foreach ($set['actions'] as $action) { |
foreach ($set['actions'] as $action) { |
| 372 |
db_query("INSERT INTO {voting_actions_action} (parent_name, aid) VALUES ('%s', %d)", $name, $set['vasid']); |
db_query("INSERT INTO {voting_actions_action} (vasid, aid) VALUES (%d, '%s')", $set['vasid'], $action); |
|
} |
|
|
} |
|
|
|
|
|
if (is_array($set['sets'])) { |
|
|
foreach ($set['sets'] as $subset) { |
|
|
if (isset($subset['vasid'])) { |
|
|
_voting_actions_update_set($subset); |
|
|
} |
|
|
else { |
|
|
_voting_actions_insert_set($subset); |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
if (is_array($set['deleted_sets'])) { |
|
|
foreach ($set['deleted_sets'] as $subset) { |
|
|
_voting_actions_delete_set($subset); |
|
| 373 |
} |
} |
| 374 |
} |
} |
| 375 |
} |
} |
| 393 |
db_query("DELETE FROM {voting_actions_condition} WHERE vasid = %d", $set['vasid']); |
db_query("DELETE FROM {voting_actions_condition} WHERE vasid = %d", $set['vasid']); |
| 394 |
db_query("DELETE FROM {voting_actions_action} WHERE vasid = %d", $set['vasid']); |
db_query("DELETE FROM {voting_actions_action} WHERE vasid = %d", $set['vasid']); |
| 395 |
db_query("DELETE FROM {voting_actions_set} WHERE vasid = %d", $set['vasid']); |
db_query("DELETE FROM {voting_actions_set} WHERE vasid = %d", $set['vasid']); |
|
db_query("DELETE FROM {voting_actions_status} WHERE name = %d", $set['name']); |
|
| 396 |
} |
} |
| 397 |
|
|
| 398 |
function _voting_actions_validate_set($set) { |
function _voting_actions_validate_set($set) { |
| 431 |
function _voting_actions_validate_condition($condition) { |
function _voting_actions_validate_condition($condition) { |
| 432 |
$errors = array(); |
$errors = array(); |
| 433 |
if (!is_array($condition)) { |
if (!is_array($condition)) { |
| 434 |
$errors[] = "The condition is not an array!"; |
$errors[] = t("The condition is not an array!"); |
| 435 |
return $errors; |
return $errors; |
| 436 |
} |
} |
| 437 |
|
|
| 438 |
if (!isset($condition['eval_handler'])) { |
if (!isset($condition['eval_handler'])) { |
| 439 |
$errors[] = "The condition has no handler."; |
$errors[] = t("The condition has no handler."); |
| 440 |
} |
} |
| 441 |
|
|
| 442 |
if (!function_exists($condition['eval_handler'])) { |
if (!function_exists($condition['eval_handler'])) { |
| 443 |
$handler = $condition['eval_handler']; |
$handler = $condition['eval_handler']; |
| 444 |
$errors[] = "The condition has an invalid handler ($eval_handler)."; |
$errors[] = t("The condition has an invalid handler (@handler).", array('@handler' => $eval_handler)); |
| 445 |
} |
} |
| 446 |
|
|
| 447 |
return $errors; |
return $errors; |