### Eclipse Workspace Patch 1.0 #P fillpdf Index: fillpdf.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/fillpdf/fillpdf.module,v retrieving revision 1.4.2.5 diff -u -r1.4.2.5 fillpdf.module --- fillpdf.module 21 May 2009 22:56:28 -0000 1.4.2.5 +++ fillpdf.module 17 Aug 2009 15:41:54 -0000 @@ -31,6 +31,13 @@ } } +function fillpdf_generate_pdf_access() { + global $user; + $node = node_load($_GET['nid']); + return user_access('administer pdfs') || + user_access('publish all pdfs') || + (user_access('publish own pdfs') && ($node->uid == $user->uid)); +} /** * Implementation of hook_menu(). @@ -41,7 +48,7 @@ $items['fillpdf'] = array( // fillpdf?fid=10&nid=20 'page callback' => 'fillpdf_generate_pdf', - 'access arguments' => $access + 'access callback' => 'fillpdf_generate_pdf_access', ); $items['admin/content/fillpdf'] = array( @@ -122,7 +129,7 @@ * Implementation of hook_perm(). */ function fillpdf_perm() { - return array('administer pdfs'); + return array('administer pdfs', 'publish own pdfs', 'publish all pdfs'); } @@ -602,9 +609,66 @@ header('Content-type:application/pdf'); header('Content-disposition:attachment; filename="'.$download_name.'"'); echo base64_decode($result); - exit; + $form = db_fetch_object(db_query("SELECT title FROM {fillpdf_forms} WHERE fid = %d", $fid)); + $node = node_load($nid); + watchdog('fillpdf', 'User %user has generated form %form for node %node.', array( + '%user' => $GLOBALS['user']->name, + '%form' => $form->title, + '%node' => $node->title, + )); + exit; }else{ drupal_set_message('FillPDF servlet error, please contact tylerrenelle@gmail.com','error'); drupal_goto(""); } } + +function fillpdf_block($op = 'list', $delta = 0, $edit = array()) { + switch ($op) { + case 'list': + for ($i = 0; $i < 10; $i++) + $blocks[$i]['info'] = 'FillPDF ' . $i; + return $blocks; + case 'configure': + $form['forms'] = array( + '#type' => 'checkboxes', + '#title' => t('FillPDF forms'), + '#default_value' => variable_get("fillpdf_forms_$delta", array()), + ); + $result = db_query( + "SELECT fid, title ". + "FROM {fillpdf_forms} " + ); + while ($form_rec = db_fetch_object($result)) + $form['forms']['#options'][$form_rec->fid + 1] = $form_rec->title; + $form['nid'] = array( + '#type' => 'textarea', + '#title' => t('Code to return node nid'), + '#default_value' => variable_get("fillpdf_nid_$delta", ''), + '#description' => t('Enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.', array('%php' => '')), + ); + return $form; + case 'save': + variable_set("fillpdf_forms_$delta", $edit['forms']); + variable_set("fillpdf_nid_$delta", $edit['nid']); + break; + case 'view': + $nid = drupal_eval(variable_get("fillpdf_nid_$delta", '')); + foreach (variable_get("fillpdf_forms_$delta", array()) as $fid) + if ($fid) { + $fid--; + $form = db_fetch_object(db_query("SELECT title FROM {fillpdf_forms} WHERE fid = %d", $fid)); + $links[] = l( + $form->title, + "fillpdf", + array('query' => array( + 'fid' => $fid, + 'nid' => $nid, + )) + ); + } + + $block['content'] = theme('item_list', $links); + return $block; + } +} \ No newline at end of file