/[eiffelstudio]/trunk/Documentation/tools/web/trunk/drupal/sites/all/modules/isedoc/import/isedoc_import.admin.inc
ViewVC logotype

Diff of /trunk/Documentation/tools/web/trunk/drupal/sites/all/modules/isedoc/import/isedoc_import.admin.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 74381 by jfiat, Thu Aug 7 17:47:20 2008 UTC revision 74382 by jfiat, Fri Aug 8 19:41:54 2008 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id$  // $Id$
3    
4  /**  /**
5   * Admin settings callback.   * Admin settings callback.
6   */   */
7  function isedoc_import_admin_settings() {  function isedoc_import_admin_settings() {
8    
9          $form['isedoc_import'] = array(          $form['isedoc_import'] = array(
10                  '#type' => 'fieldset',                  '#type' => 'fieldset',
11                  '#title' => t('Import Documentation Settings')                  '#title' => t('Import Documentation Settings')
12          );          );
13    
14          $form['isedoc_import']['isedoc_import_subfolder'] = array(          $form['isedoc_import']['isedoc_import_subfolder'] = array(
15                  '#type' => 'textfield',                  '#type' => 'textfield',
16                  '#title' => t('Import subFolder'),                  '#title' => t('Import subFolder'),
17                  '#default_value' => variable_get('isedoc_import_subfolder', '/isedoc/import'),                  '#default_value' => variable_get('isedoc_import_subfolder', '/isedoc/import'),
18                  '#description' => t('Subdirectory in directory "%dir" where documentation will be loaded from. Do not include trailing slash.<br/>To import content, %link', array('%dir' => file_directory_path(), '%link' => 'admin/content/isedoc_import')),                  '#description' => t('Subdirectory in directory "%dir" where documentation will be loaded from. Do not include trailing slash.<br/>To import content, %link', array('%dir' => file_directory_path(), '%link' => 'admin/content/isedoc_import')),
19                  '#required' => TRUE,                  '#required' => TRUE,
20          );          );
21          $form['isedoc_import']['isedoc_import_action'] = array(          $form['isedoc_import']['isedoc_import_action'] = array(
22                  '#type' => 'submit',                  '#type' => 'submit',
23                  '#submit' => array('isedoc_import_admin_settings_goto_import'),                  '#submit' => array('isedoc_import_admin_settings_goto_import'),
24                  '#value' => t('Import Content'),                  '#value' => t('Import Content'),
25          );          );
26    
27          return system_settings_form($form);          return system_settings_form($form);
28  }  }
29    
30  function isedoc_import_settings_submit($form, &$form_state) {  function isedoc_import_settings_submit($form, &$form_state) {
31          drupal_set_message(t("Processed isedoc_import_settings_submit ..."),'status');          drupal_set_message(t("Processed isedoc_import_settings_submit ..."),'status');
32  }  }
33  function isedoc_import_admin_settings_goto_import($form, &$form_state) {  function isedoc_import_admin_settings_goto_import($form, &$form_state) {
34          drupal_goto('admin/content/isedoc_import');          drupal_goto('admin/content/isedoc_import');
35  }  }
36    
37  /**  /**
38   * Callback isedoc/book/import   * Callback isedoc/book/import
39   */   */
40    
41  function _isedoc_import_doc() {  function _isedoc_import_doc() {
42          drupal_set_message("_isedoc_import_doc...");          drupal_set_message("_isedoc_import_doc...");
43          //      $links = array();          //      $links = array();
44          //      $links[] = l('import 1', 'іsedoc/import');          //      $links[] = l('import 1', 'іsedoc/import');
45          //      $links[] = l('import 2', 'іsedoc/import');          //      $links[] = l('import 2', 'іsedoc/import');
46          //      return theme('list', $links);          //      return theme('list', $links);
47          $form['isedoc_import'] = array(          $form['isedoc_import'] = array(
48                  '#type' => 'fieldset',                  '#type' => 'fieldset',
49                  '#title' => t('Import Documentation')                  '#title' => t('Import Documentation')
50          );          );
51          $form['isedoc_import']['toto'] = array(          $form['isedoc_import']['toto'] = array(
52                  '#type' => 'textfield',                  '#type' => 'textfield',
53                  '#title' => t('toto'),                  '#title' => t('toto'),
54                  '#default_value' => 'totofofo',                  '#default_value' => 'totofofo',
55                  '#description' => t('Subdir'),                  '#description' => t('Subdir'),
56          );          );
57          return $form;          return $form;
58          //      return "totot";          //      return "totot";
59  }  }
60    
61  /*  /*
62   * Menu: admin/content/isedoc_import   * Menu: admin/content/isedoc_import
63   */   */
64  function isedoc_import_form() {  function isedoc_import_form() {
65          $form = array();          $form = array();
66          //drupal_set_message("<pre>".var_dump_global('GLOBALS')."</pre>");          //drupal_set_message("<pre>".var_dump_global('GLOBALS')."</pre>");
67    
68          $import_path = variable_get('isedoc_import_subfolder', '/isedoc/import');          $import_path = variable_get('isedoc_import_subfolder', '/isedoc/import');
69          $dirpath = file_directory_path() . $import_path ;          $dirpath = file_directory_path() . $import_path ;
70    
71          if (!file_check_directory($dirpath)) {          if (!file_check_directory($dirpath)) {
72                  drupal_set_message(t("You need to configure the isedoc directory on the isedoc import module's <a href='!admin-settings-isedoc_import'>settings page</a>.", array('!admin-settings-isedoc_import' => url('admin/settings/isedoc/isedoc_import'))), 'error');                  drupal_set_message(t("You need to configure the isedoc directory on the isedoc import module's <a href='!admin-settings-isedoc_import'>settings page</a>.", array('!admin-settings-isedoc_import' => url('admin/settings/isedoc/isedoc_import'))), 'error');
73                  //    return $form;                  //    return $form;
74          }          }
75    
76          /*          /*
77           * Files           * Files
78           */           */
79    
80          $files = file_scan_directory($dirpath, '.*', array('.', '..'), 0, TRUE); //FALSE); //TRUE, 'filename');          $book_import_log_path = $dirpath . "/" . "book.index.log";
81          ksort($files);          $book_index_path = $dirpath . "/" . "book.index";
82          if ($files) {          if (file_exists($book_index_path)) {
83                  $fields = array('filesize', 'title', 'parent', 'titleexists','nodeid');                  $form['isedoc_import_index'] = array(
84                  foreach ($fields as $field) {                          '#type' => 'textfield',
85                          $form['files'][$field][0] = NULL;                          '#title' => t('Book index'),
86                  }                          '#default_value' => variable_get('isedoc_import_bookindex', $book_index_path),
87                  $filelist = array(0 => NULL);                          '#description' => t('BookIndex'),
88                    );
89                  foreach ($files as $file) {  
90                          $info = isedoc_file_info($file->filename, FALSE);                  /*
91                          $filelist[] = substr($file->filename, strlen($dirpath) + 1);                   *        Parameters
92                          $form['files']['filesize'][] = array(                   */
93                                  '#type' => 'item',                  $all_books_titles = array();
94                                  '#value' => format_size(filesize($file->filename)),                  $all_books_titles[''] = t('<None>');
95                          );                  $dft_book = '';
96                          $form['files']['title'][] = array(  
97                                  '#type' => 'textfield',                  $all_books = book_get_books();
98                                  '#size' => 20,                  if (count($all_books) > 0) {
99                                  '#default_value' => $info['title'],                          $dft_book = $all_books[1]['title'];
100                          );                          foreach ($all_books as $b) {
101                          $form['files']['parent'][] = array(                                  if ($dft_book == '') { $dft_book = $b['bid']; }
102                                  '#type' => 'textfield',                                  $all_books_titles[$b['bid']] = $b['title']; //. " #".$b['bid'];
103                                  '#size' => 20,                          }
104                                  '#default_value' => $info['parent'],                  }
105                          );  
106                    $form['isedoc_import_booknames'] = array(
107                          $a_nid = book_doc_page_exists($info['title']);                          '#type' => 'select',
108                          if ($a_nid != '') {                          '#title' => t('Select a book'),
109                                  $form['files']['titleexists'][] = array(                          '#default_value' => variable_get('isedoc_import_bid', $dft_book),
110                                          '#type' => 'checkbox',                          '#options' => $all_books_titles,
111                                          '#title' => l('#' . $a_nid . '?', 'node/'.$a_nid ),                          '#description' => t('The book to receive the imported content.'),
112                                          '#default_value' => TRUE,                  );
113                                  );  
114                                  $form['files']['nodeid'][] = array(                  $form['isedoc_import_bookname'] = array(
115                                          '#type' => 'hidden',                          '#type' => 'textfield',
116                                          '#value' => $a_nid,                          '#title' => t('Book name'),
117                                  );                          '#default_value' => variable_get('isedoc_import_bookname', 'ISE Documentation'),
118  //                              $form['files']['titleexists'][] = array(                          '#description' => t('Bookname'),
119  //                                      '#type' => 'markup',                  );
120  //                                      '#value' => l('#' . $a_nid . '?', 'node/'.$a_nid ),                  $form['isedoc_import_dirpath'] = array(
121  //                              );                          '#type' => 'hidden',
122                          } else {                          '#value' => $dirpath,
123                                  $form['files']['titleexists'][] = array(                  );
124                                          '#type' => 'item',  
125                                          '#value' => '',                  $form['buttons']['submit'] = array(
126                                  );                          '#type' => 'submit',
127                                  $form['files']['nodeid'][] = array(                          '#submit' => array('isedoc_import_form_import'),
128                                          '#type' => 'hidden',                          '#value' => t('Import'),
129                                          '#value' => '0',                  );
130                                  );          }
131                          }          else {
132  //                      $form['files']['titleexists'][] = array(                  $form['isedoc_import_index'] = array(
133  //                              '#type' => 'checkbox',                          '#type' => 'item',
134  //                              '#title' => t('Already exists'),                          '#value' => t('No book.index file found'),
135  //                              '#default_value' => book_doc_page_exists($info['title']),                  );
136  //                      );  
137                    $form['isedoc_import_subfolder'] = array(
138                  }                          '#type' => 'textfield',
139                  unset($filelist[0]);                          '#title' => t('Import path'),
140                  foreach ($fields as $field) {                          '#default_value' => $import_path,
141                          $form['files'][$field][0] = NULL;                          '#description' => t('Import path'),
142                  }                  );
143                  // Put the titles into an array.                  $form['isedoc_import_update_action'] = array(
144                  $form['files']['title']['#tree'] = TRUE;                          '#type' => 'submit',
145                  $form['files']['parent']['#tree'] = TRUE;                          '#submit' => array('isedoc_import_form_update'),
146                  $form['files']['titleexists']['#tree'] = TRUE;                          '#value' => t('Update'),
147                  $form['files']['nodeid']['#tree'] = TRUE;                  );
148            }
149                  // Store a copy of the list into a form value so we can compare it to what  
150                  // they submit and not have to worry about files being added or removed from          return $form;
151                  // the filesystem.  }
152                  $form['file_list'] = array(  
153                          '#type' => 'value',  function theme_isedoc_import_form($form) {
154                          '#value' => $filelist,          return drupal_render($form);
155                  );  }
156    
157                  $form['import_file'] = array(  
158                          '#type' => 'checkboxes',  function isedoc_import_form_update($form, &$form_state) {
159                          '#options' => $filelist,          drupal_set_message(t('Update processing... "@bookname"', array('@bookname' => $form_state['values']['isedoc_import_bookname'])));
160                  );          variable_set('isedoc_import_subfolder',$form_state['values']['isedoc_import_subfolder']);
161    }
162                  /*  
163                   *        Parameters  function isedoc_import_form_import($form, &$form_state) {
164                   */          $bookid = $form_state['values']['isedoc_import_booknames'];
165                  $all_books_titles = array();          drupal_set_message(t('Import processing... "bookid:@bookname"', array('@bookname' => $bookid)));
166                  $all_books_titles[''] = t('<None>');          if (isset($form_state['values']['isedoc_import_subfolder'])) {
167                  $dft_book = '';                  variable_set('isedoc_import_subfolder',$form_state['values']['isedoc_import_subfolder']);
168            }
169                  $all_books = book_get_books();          variable_set('isedoc_import_bid',$form_state['values']['isedoc_import_booknames']);
170                  if (count($all_books) > 0) {          variable_set('isedoc_import_bookname',$form_state['values']['isedoc_import_bookname']);
171                          $dft_book = $all_books[1]['title'];          $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
172                          foreach ($all_books as $b) {          if ($op == t('Import')) {
173                                  if ($dft_book == '') { $dft_book = $b['bid']; }                  $dirpath = $form_state['values']['isedoc_import_dirpath'];
174                                  $all_books_titles[$b['bid']] = $b['title']; //. " #".$b['bid'];  //              $dirpath = variable_get('isedoc_import_subfolder', '');
175                          }                  drupal_set_message(t("Importing files from %dirpath into bookid=%bookid", array ('%dirpath' => $dirpath, '%bookid' => $bookid)));
176                  }                  if (file_check_directory($dirpath)) {
177                            $nodes = array();
178                  $form['isedoc_import_booknames'] = array(                          $files = array();
179                          '#type' => 'select',  //                      drupal_set_message(var_dump_r($form_state['values']));
180                          '#title' => t('Select a book'),                          $book_index_path = $form_state['values']['isedoc_import_index'];
181                          '#default_value' => variable_get('isedoc_import_bid', $dft_book),                          drupal_set_message(t("Importing files using index %i into bookid=%bookid", array ('%i' => $book_index_path, '%bookid' => $bookid)));
182                          '#options' => $all_books_titles,  
183                          '#description' => t('The book to receive the imported content.'),                          // a slow machine
184                  );                          if (!ini_get('safe_mode')) {
185                                    set_time_limit(0);
186                  $form['isedoc_import_bookname'] = array(                          }
187                          '#type' => 'textfield',                          isedoc_import_with_index($dirpath,$book_index_path);
188                          '#title' => t('Book name'),                          $filename = file_check_location($dirpath .'/'. $origname, $dirpath);
189                          '#default_value' => variable_get('isedoc_import_bookname', 'ISE Documentation'),                          if ($filename) {
190                          '#description' => t('Bookname'),                          }
191                  );  
192                  $form['isedoc_import_dirpath'] = array(                          // report back on our progress
193                          '#type' => 'hidden',                          if (!empty($nodes)) {
194                          '#value' => $dirpath,                                  drupal_set_message(t('Successfully imported: ') . theme('item_list', $nodes));
195                  );                          }
196                            else {
197                  $form['buttons']['submit'] = array(                                  drupal_set_message(t('No files were imported.'));
198                          '#type' => 'submit',                          }
199                          '#submit' => array('isedoc_import_form_import'),                  }
200                          '#value' => t('Import'),          }
201                  );  }
202          }  
203          else {  function isedoc_create_doc_node_from($info) {
204                  $form['import_file'] = array(          global $user;
205                          '#type' => 'item',  
206                          '#value' => t('No files were found'),  //      if (!user_access('create isedoc')) {
207                  );  //              drupal_access_denied();
208    //      }
209                  $form['isedoc_import_subfolder'] = array(  
210                          '#type' => 'textfield',          // Ensure it's a valid image.
211                          '#title' => t('Import path'),          if (!$info) {
212                          '#default_value' => $import_path,                  return FALSE;
213                          '#description' => t('Import path'),          }
214                  );  
215                  $form['isedoc_import_update_action'] = array(          // Make sure we can copy the file into our temp directory.
216                          '#type' => 'submit',          $original_path = $filepath;
217                          '#submit' => array('isedoc_import_form_update'),  
218                          '#value' => t('Update'),          // Build the node.
219                  );          $nid = 0;
220          }          if ($nid > 0) {
221                    drupal_set_message("isedoc_create_node_from using nid=$nid");
222                    $node = node_load ($nid, NULL, TRUE);
223  //      $form['isedoc_import_action'] = array(          }
224  //              '#type' => 'submit',          if (!$node) {
225  //              '#submit' => array('isedoc_import_form_import'),                  $node = new stdClass();
226  //              '#value' => t('Import Documentation'),                  $node->type = 'doc';
227  //      );          }
228            $node->uid = $user->uid;
229          return $form;          $node->name = $user->name;
230  }          $node->title = $info['title'];
231            $node->body = $info['body'];
232  function theme_isedoc_import_form($form) {  
233          //      drupal_set_message("theme_isedoc_import_form...");          // Set the node's defaults... (copied this from node and comment.module)
234            $node_options = variable_get('node_options_'. $node->type, array('status', 'promote'));
235          $output = '';          $node->status = in_array('status', $node_options);
236          if (isset($form['import_file'])) {          $node->promote = in_array('promote', $node_options);
237                  $f_import_files = &$form['import_file'];          if (module_exists('comment')) {
238                  if ($f_import_files['#type'] == 'checkboxes') {                  $node->comment = variable_get("comment_$node->type", COMMENT_NODE_READ_WRITE);
239                          $header = array(theme('table_select_header_cell'), t('Name'), t('Size'), t('Title'), t('Parent'), t('Note'));          }
240                          $rows = array();          if (module_exists('taxonomy')) {
241                          foreach (element_children($f_import_files) as $key) {                  $node->taxonomy = $taxonomy;
242                                  $filename = $f_import_files[$key]['#title'];          }
243                                  unset($f_import_files[$key]['#title']);  
244                                  $rows[] = array(          if ($nid > 0) {
245                                          drupal_render($f_import_files[$key]),                  $node->revision = TRUE;
246                                          $filename,                  $node->new_file = FALSE;
247                                          drupal_render($form['files']['filesize'][$key]),          } else {
248                                          drupal_render($form['files']['title'][$key]),                  $node->revision = FALSE;
249                                          drupal_render($form['files']['parent'][$key]),                  $node->new_file = TRUE;
250                                          drupal_render($form['files']['titleexists'][$key]),          }
251                                          drupal_render($form['files']['nodeid'][$key]),  //      $node->images[IMAGE_ORIGINAL] = $filepath;
252                                  );  
253                          }          // Save the node.
254                          $output .= theme('table', $header, $rows);          $node = node_submit($node);
255                  }          node_save($node);
256                  unset($f_import_files);  
257          }          return $node;
258          return $output . drupal_render($form);  }
259  }  
260    
261    /**
262  function isedoc_import_form_update($form, &$form_state) {   * Helpers
263          drupal_set_message(t('Update processing... "@bookname"', array('@bookname' => $form_state['values']['isedoc_import_bookname'])));   */
264          variable_set('isedoc_import_subfolder',$form_state['values']['isedoc_import_subfolder']);  
265  }  function isedoc_import_with_index($dn,$fn) {
266            drupal_set_message(t("Importing using index $fn ..."),'status');
267  function isedoc_import_form_import($form, &$form_state) {          $logfp = fopen($fn.".log", 'w');
268          $bookid = $form_state['values']['isedoc_import_booknames'];          fclose ($logfp);
269          drupal_set_message(t('Import processing... "bookid:@bookname"', array('@bookname' => $bookid)));  
270          if (isset($form_state['values']['isedoc_import_subfolder'])) {          $fp = fopen($fn, 'r');
271                  variable_set('isedoc_import_subfolder',$form_state['values']['isedoc_import_subfolder']);          $node_ids = array();
272          }          $dep = 0;
273          variable_set('isedoc_import_bid',$form_state['values']['isedoc_import_booknames']);  
274          variable_set('isedoc_import_bookname',$form_state['values']['isedoc_import_bookname']);          while (!feof($fp)) {
275          $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';                  $line = fgets($fp);
276          if ($op == t('Import')) {                  $line = substr($line, 0, -1);
277                  $dirpath = $form_state['values']['isedoc_import_dirpath'];                  $i = strpos($line, "[");
278  //              $dirpath = variable_get('isedoc_import_subfolder', '');                  if ($i > 0) {
279                  drupal_set_message(t("Importing files from %dirpath into bookid=%bookid", array ('%dirpath' => $dirpath, '%bookid' => $bookid)));                          $j = strpos($line, ":", $i);
280                  if (file_check_directory($dirpath)) {                          $l_depth = substr($line, $i+1, 1 + ($j-1) -($i+1) );
281                          $nodes = array();                          $i = strpos($line, "]", $j+1);
282                          $files = array();                          $l_base_id = substr($line, $j+1, 1 + ($i-1) - ($j+1));
283  //                      drupal_set_message(var_dump_r($form_state['values']));                          $l_title = substr($line, $i+2);
284                          foreach (array_filter($form_state['values']['import_file']) as $index) {  
285                                  // try to avoid php's script timeout with a bunch of large files or                          $line = fgets($fp);
286                                  // a slow machine                          $line = substr($line, 0, -1);
287                                  if (!ini_get('safe_mode')) {  
288                                          set_time_limit(0);                          $i = strpos($line, "!src=");
289                                  }                          if ($i > 0) {
290                                  $origname = $form_state['values']['file_list'][$index];                                  $l_src = $dn . "/". substr($line, $i+5) . ".wiki";
291                                  if ($origname != '__order__') {  
292                                          $filename = file_check_location($dirpath .'/'. $origname, $dirpath);                                  $info = isedoc_file_info($l_src, TRUE);
293                                          if ($filename) {                                  if ($info) {
294                                                  if ($form_state['values']['titleexists'][$index]) {                                          //drupal_set_message(t(" -> [%dep:%bas] \"%tit\" -> %src", array( "%dep" => $l_depth, "%tit" => $l_title, "%bas" => $l_base_id, "%src" => $l_src)),'status');
295                                                          $a_nid = $form_state['values']['nodeid'][$index];                                          $info['title'] = $l_title;
296                                                  } else {                                          $info['src'] = $l_src;
297                                                          $a_nid = '0';                                          $info['depth'] = $l_depth;
298                                                  }                                          $info['baseid'] = $l_baseid;
299                                                  if ($a_nid > 0) {                                          $node = isedoc_create_doc_node_from ($info);
300                                                          drupal_set_message(t("Merging from %filename... (#%nid)",array('%filename' => $filename, '%nid' => $a_nid)));  
301                                                  } else {                                          if ($dep > 0) {
302                                                          drupal_set_message(t("Importing %filename [%title]...(#%nid)",array('%filename' => $filename, '%title' => $form_state['values']['title'][$index], '%nid' => $a_nid)));                                                  $p_nid = $node_ids[$dep];
303                                                  }                                          } else {
304                                                  $node = isedoc_create_node_from(                                                  $p_nid = 0;
305                                                          $filename,                                          }
306                                                          $form_state['values']['title'][$index],                                          $node_ids[$l_depth] = $node->nid;
307                                                          $a_nid                                          $dep = $l_depth;
308                                                  );  
309                                                  if ($node) {                                          drupal_set_message(t(" -> [%dep] %src -> %nid (parent=$p_nid)", array( "%dep" => $l_depth, "%src" => $l_src, "%nid" => $node->nid)),'status');
310                                                          drupal_set_message(var_dump_r($node));                                  } else {
311                                                          $nodes[] = t('%filename as <a href="!node-link">@node-title</a> <a href="!edit-link">[edit]</a>', array(                                          drupal_set_message(t(" -> [%dep:%bas] \"%tit\" -> %src", array( "%dep" => $l_depth, "%tit" => $l_title, "%bas" => $l_base_id, "%src" => $l_src)),'error');
312                                                                  '%filename' => $origname,                                  }
313                                                                  '!node-link' => url('node/'. $node->nid),                                  
314                                                                  '@node-title' => $node->title,                          }
315                                                                  '!edit-link' => url('node/'. $node->nid .'/edit'),                  }
316                                                          ));          }
317                                                          // Remove the original image now that the import has completed.  
318                                                          //file_delete($filename);  /*
319                                                  } else {          if (substr($line, 0, 7) == 'title=') {
320                                                          drupal_set_message(t('Error importing %filename.', array('%filename' => $filename)));                  $title = substr($line, 7);
321                                                  }          } else {
322                                          }                  $title = '__'.basename($fn);
323                                  }          }
324                          }          if (substr($line, 0, 7) == 'src=') {
325                    $src = substr($line, 5);
326                          // report back on our progress          }
327                          if (!empty($nodes)) {          if ($is_full) {
328                                  drupal_set_message(t('Successfully imported: ') . theme('item_list', $nodes));                  $l_body = fread($fp, filesize($fn));
329                          }          }
330                          else {  */
331                                  drupal_set_message(t('No files were imported.'));          fclose ($fp);
332                          }  
333                  }  }
334          }  
335  }  function isedoc_file_info($fn, $is_full=FALSE) {
336            $l_body = '';
337  function isedoc_create_node_from($filepath, $title = NULL, $nid=0) {          $fp = fopen($fn, 'r');
338          global $user;          $info = array();
339            $done = 0;
340  //      if (!user_access('create isedoc')) {          while(!$done) {
341  //              drupal_access_denied();                  $line = fgets($fp);
342  //      }                  $line = substr($line, 0, -1);
343                    $i = strpos ($line, "=");
344          // Ensure it's a valid image.                  if ($i > 0) {
345          $isedoc_info = isedoc_file_info($filepath,TRUE);                          $k = substr($line, 0, $i);
346          if (!$isedoc_info) {                          $v = substr($line, $i+1);
347                  return FALSE;                          $info[$k] = $v;
348          }                  } else {
349                            $done = 1;
350          // Make sure we can copy the file into our temp directory.                  }
351          $original_path = $filepath;          }
352            if ($is_full) {
353          // Build the node.                  $l_body = fread($fp, filesize($fn));
354          if ($nid > 0) {          }
355                  drupal_set_message("isedoc_create_node_from using nid=$nid");          fclose ($fp);
356                  $node = node_load ($nid, NULL, TRUE);          $info['body'] = $l_body;
357          }          return $info;
358          if (!$node) {  }
359                  $node = new stdClass();  
360                  $node->type = 'doc';  function var_dump_r(&$ref, $pre=TRUE) {
361          }          ob_start(); var_dump($ref); $a=htmlspecialchars(ob_get_contents(),ENT_QUOTES); ob_end_clean();
362          $node->uid = $user->uid;          if ($pre) {
363          $node->name = $user->name;                  return "<pre>DUMP=".$a . '</pre>';
364          $node->title = isset($title) ? $title : $isedoc_info['title'];          } else {
365          $node->body = $isedoc_info['body'];                  return 'DUMP='.$a;
366            }
367          // Set the node's defaults... (copied this from node and comment.module)  }
368          $node_options = variable_get('node_options_'. $node->type, array('status', 'promote'));  function var_dump_global($refname) {
369          $node->status = in_array('status', $node_options);          global $$refname;
370          $node->promote = in_array('promote', $node_options);          ob_start(); var_dump($$refname); $a=htmlspecialchars(ob_get_contents(),ENT_QUOTES); ob_end_clean();
371          if (module_exists('comment')) {          return "DUMP[".$refname."]=".$a;
372                  $node->comment = variable_get("comment_$node->type", COMMENT_NODE_READ_WRITE);  }
373          }  
374          if (module_exists('taxonomy')) {  /**
375                  $node->taxonomy = $taxonomy;   * Returns an array of all books.
376          }   *
377     * This list may be used for generating a list of all the books, or for building
378          if ($nid > 0) {   * the options for a form select.
379                  $node->revision = TRUE;   */
380                  $node->new_file = FALSE;  
381          } else {  function book_doc_page_exists($a_title) {
382                  $node->revision = FALSE;  //      $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s') AND type IN ()", $a_title));
383                  $node->new_file = TRUE;          $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s')", $a_title));
384          }          return $nid;
385  //      $node->images[IMAGE_ORIGINAL] = $filepath;  }
386    
387          // Save the node.  function isedoc_book_get_books() {
388          $node = node_submit($node);    static $all_books;
389          node_save($node);  
390      if (!isset($all_books)) {
391          return $node;      $all_books = array();
392  }      $result = db_query("SELECT DISTINCT(bid) FROM {book}");
393        $nids = array();
394        while ($book = db_fetch_array($result)) {
395  /**        $nids[] = $book['bid'];
396   * Helpers      }
397   */      if ($nids) {
398          $result2 = db_query(db_rewrite_sql("SELECT n.type, n.title, b.*, ml.* FROM {book} b INNER JOIN {node} n on b.nid = n.nid INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE n.nid IN (". implode(',', $nids) .") AND n.status = 1 ORDER BY ml.weight, ml.link_title"));
399  function isedoc_file_info($fn, $is_full=FALSE) {        while ($link = db_fetch_array($result2)) {
400          $l_body = '';          $link['href'] = $link['link_path'];
401          if (basename($fn) == '__order__') {          $link['options'] = unserialize($link['options']);
402                  $title = '#order-of-'.basename(dirname($fn));          $all_books[$link['bid']] = $link;
403                  if (substr($title, - 6) == '.pages') {        }
404                          $title = substr($title, 0, - 6);      }
405                  }    }
406                  $parent = basename(dirname(dirname($fn)));    return $all_books;
407          } else {  }
                 $fp = fopen($fn, 'r');  
                 $line = fgets($fp);  
                 $line = substr($line, 0, -1);  
                 if (substr($line, 0, 7) == '#title=') {  
                         $title = substr($line, 7);  
                 } else {  
                         $title = '__'.basename($fn);  
                 }  
                 if ($is_full) {  
                         $l_body = fread($fp, filesize($fn));  
                 }  
                 fclose ($fp);  
                 $parent = basename(dirname($fn));  
         }  
         if ((strlen($parent) > 6) and (substr($parent, - 6) == '.pages')) {  
                 $parent = substr($parent, 0, - 6);  
         }  
         $info = array();  
         $info['title'] = $title;  
         $info['parent'] = $parent;  
         $info['body'] = $l_body;  
         return $info;  
 }  
   
 function var_dump_r(&$ref, $pre=TRUE) {  
         ob_start(); var_dump($ref); $a=htmlspecialchars(ob_get_contents(),ENT_QUOTES); ob_end_clean();  
         if ($pre) {  
                 return "<pre>DUMP=".$a . '</pre>';  
         } else {  
                 return 'DUMP='.$a;  
         }  
 }  
 function var_dump_global($refname) {  
         global $$refname;  
         ob_start(); var_dump($$refname); $a=htmlspecialchars(ob_get_contents(),ENT_QUOTES); ob_end_clean();  
         return "DUMP[".$refname."]=".$a;  
 }  
   
 /**  
  * Returns an array of all books.  
  *  
  * This list may be used for generating a list of all the books, or for building  
  * the options for a form select.  
  */  
   
 function book_doc_page_exists($a_title) {  
 //      $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s') AND type IN ()", $a_title));  
         $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s')", $a_title));  
         return $nid;  
 }  
   
 function isedoc_book_get_books() {  
   static $all_books;  
   
   if (!isset($all_books)) {  
     $all_books = array();  
     $result = db_query("SELECT DISTINCT(bid) FROM {book}");  
     $nids = array();  
     while ($book = db_fetch_array($result)) {  
       $nids[] = $book['bid'];  
     }  
     if ($nids) {  
       $result2 = db_query(db_rewrite_sql("SELECT n.type, n.title, b.*, ml.* FROM {book} b INNER JOIN {node} n on b.nid = n.nid INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE n.nid IN (". implode(',', $nids) .") AND n.status = 1 ORDER BY ml.weight, ml.link_title"));  
       while ($link = db_fetch_array($result2)) {  
         $link['href'] = $link['link_path'];  
         $link['options'] = unserialize($link['options']);  
         $all_books[$link['bid']] = $link;  
       }  
     }  
   }  
   return $all_books;  
 }  

Legend:
Removed from v.74381  
changed lines
  Added in v.74382

  ViewVC Help
Powered by ViewVC 1.1.23