function webform_protected_downloads_nodeapi in Webform Protected Downloads 6
Implementation of hook_nodeapi().
Parameters
object $node :
string $op :
string $arg3 :
string $arg4 :
Return value
void
File
- ./
webform_protected_downloads.module, line 272 - This file contains hook declarations and functions for the Webform Protected Downloads module.
Code
function webform_protected_downloads_nodeapi(&$node, $op, $arg3, $arg4) {
if (!webform_protected_downloads_node_is_webform($node)) {
// make sure any non webform is free of protected files governed by this
// module this is an edge case scenario described in
// http://drupal.org/node/1558260
if ($op == 'presave') {
webform_protected_downloads_remove_deleted_files($node->nid);
}
return;
}
switch ($op) {
case 'load':
if (!isset($node->wpd_valid)) {
// check if the node has protected files
if (webform_protected_downloads_node_has_protected_files($node->nid)) {
// check if the registered component still exists, needed, because we
// can't prevent webform from deleting a component that we might use
// as a mail field for the protected downloads
$result = db_result(db_query("SELECT COUNT(*) FROM {wpd_node_configuration} n LEFT JOIN {webform_component} c ON c.cid = n.mail_field_cid AND c.nid = n.nid WHERE n.nid = %d AND c.cid IS NOT NULL", $node->nid));
$meta['wpd_valid'] = $result > 0;
}
else {
$meta['wpd_valid'] = TRUE;
}
return $meta;
}
case 'view':
if (!$node->wpd_valid && user_access('administer webform protected downloads')) {
_webform_protected_downloads_set_warning();
}
break;
case 'presave':
// make sure that protected files stay protected
if (webform_protected_downloads_node_has_protected_files($node->nid)) {
foreach ($node->files as $fid => $file) {
$_file = (object) $file;
if (webform_protected_downloads_file_is_protected($node->nid, $fid)) {
$_file->list = FALSE;
$_file->private = TRUE;
}
$node->files[$fid] = is_array($file) ? (array) $_file : $_file;
}
}
break;
case 'delete':
db_query("DELETE FROM {wpd_node_configuration} WHERE nid = %d", $node->nid);
db_query("DELETE FROM {wpd_protected_files} WHERE nid = %d", $node->nid);
break;
}
}