function modr8_nodeapi in modr8 6
Same name and namespace in other branches
- 5 modr8.module \modr8_nodeapi()
Implementation of hook_nodeapi().
File
- ./
modr8.module, line 126 - Easy dedicated content moderation
Code
function modr8_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
// add messages here..
switch ($op) {
case 'load':
return db_fetch_array(db_query('SELECT n.moderate FROM {node} n WHERE n.nid = %d', $node->nid));
case 'prepare':
if (!isset($node->nid)) {
//a new node
$node_options = variable_get('node_options_' . $node->type, array(
'status',
'promote',
));
$node->moderate = in_array('moderate', $node_options) && !user_access('bypass moderation queue');
}
break;
case 'submit':
if ($node->moderate && user_access('bypass moderation queue')) {
if (!user_access('administer nodes')) {
// Don't reset for admins
$node->moderate = 0;
}
}
break;
case 'view':
if ($node->moderate && empty($node->modr8_form_teaser) && $node->build_mode == NODE_BUILD_NORMAL && ($teaser || $page)) {
$node->content['modr8_message'] = array(
'#value' => theme('modr8_message', $teaser, $node->type, 'view'),
'#weight' => -100,
);
}
break;
case 'update':
case 'insert':
db_query('UPDATE {node} SET moderate = %d WHERE nid = %d', $node->moderate, $node->nid);
if ($node->moderate) {
//cut this?
theme('modr8_message', FALSE, $node->type, $op);
}
break;
case 'delete':
// Delete log entries when a node is deleted, unless it's deleted while
// in moderation. In the latter case, we want to retain the log to see
// which moderator deleted the node and any message they sent.
if (!$node->moderate) {
db_query("DELETE FROM {modr8_log} WHERE nid = %d", $node->nid);
}
break;
}
}