| 1 |
<?php |
<?php |
| 2 |
// $Id: metrics.module,v 1.8 2007/07/12 18:53:34 drewish Exp $ |
// $Id: metrics.module,v 1.1 2007/07/24 21:11:02 drewish Exp $ |
| 3 |
|
|
| 4 |
/** |
/** |
| 5 |
* Implementation of hook_help(). |
* Implementation of hook_help(). |
| 538 |
'#type' => 'fieldset', |
'#type' => 'fieldset', |
| 539 |
'#title' => t('Node types'), |
'#title' => t('Node types'), |
| 540 |
'#collapsible' => TRUE, |
'#collapsible' => TRUE, |
| 541 |
'#collapsed' => count($edit['node_types']), |
'#collapsed' => FALSE, |
| 542 |
'#description' => t('The property will be measured for these node types.'), |
'#description' => t('The property will be measured for these node types.'), |
| 543 |
); |
); |
| 544 |
$form['node']['node_types'] = array( |
$form['node']['node_types'] = array( |
| 559 |
function metrics_property_form_submit($form_id, $form_values) { |
function metrics_property_form_submit($form_id, $form_values) { |
| 560 |
if (!empty($form_values['property_id'])) { |
if (!empty($form_values['property_id'])) { |
| 561 |
db_query("UPDATE {metrics_property} SET name = '%s', description = '%s' WHERE property_id = %d", $form_values['name'], $form_values['description'], $form_values['property_id']); |
db_query("UPDATE {metrics_property} SET name = '%s', description = '%s' WHERE property_id = %d", $form_values['name'], $form_values['description'], $form_values['property_id']); |
| 562 |
db_query("DELETE FROM {metrics_property_node_types} WHERE property_id = %d", $form_values['property_id']); |
|
| 563 |
foreach (array_filter($form_values['node_types']) as $type => $selected) { |
// Figure out which node types have been added and removed. |
| 564 |
|
$new_types = array_keys(array_filter($form_values['node_types'])); |
| 565 |
|
$old_types = array(); |
| 566 |
|
$result = db_query('SELECT type FROM {metrics_property_node_types} mpnt WHERE property_id = %d', $form_values['property_id']); |
| 567 |
|
while ($o = db_fetch_object($result)) { |
| 568 |
|
$old_types[] = $o->type; |
| 569 |
|
} |
| 570 |
|
// Removals. |
| 571 |
|
foreach (array_diff($old_types, $new_types) as $type) { |
| 572 |
|
// When removing node type we should remove any {metrics_property_result} records for nodes of that type. |
| 573 |
|
db_query("DELETE FROM {metrics_property_result} WHERE property_id = %d AND nid IN (SELECT nid FROM {node} n WHERE n.type = '%s')", $form_values['property_id'], $type); |
| 574 |
|
db_query("DELETE FROM {metrics_property_node_types} WHERE property_id = %d AND type = '%s'", $form_values['property_id'], $type); |
| 575 |
|
} |
| 576 |
|
// Additions. |
| 577 |
|
foreach (array_diff($new_types, $old_types) as $type) { |
| 578 |
db_query("INSERT INTO {metrics_property_node_types} (property_id, type) VALUES (%d, '%s')", $form_values['property_id'], $type); |
db_query("INSERT INTO {metrics_property_node_types} (property_id, type) VALUES (%d, '%s')", $form_values['property_id'], $type); |
| 579 |
} |
} |
| 580 |
} |
} |