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

Diff of /trunk/Documentation/tools/web/trunk/drupal/sites/all/modules/isedoc/isedoc.report.inc

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

revision 74849 by jfiat, Fri Sep 26 13:05:31 2008 UTC revision 74850 by jfiat, Fri Sep 26 17:38:58 2008 UTC
# Line 2  Line 2 
2    
3  require_once ("isedoc.lib.inc");  require_once ("isedoc.lib.inc");
4    
5  function isedoc_report($a_type='doc', $target,$a_op='') {  function _isedoc_images_by_nid($a_type='doc') {
6    $output = '';          $results = array();
7  drupal_add_css(drupal_get_path('module', 'system') .'/system.css');  
8  drupal_add_js('misc/collapse.js');          $l_body_filter = 'REGEXP \'[[.[.]][[.[.]]Image:[a-z0-9:_ -]*([[.|.]]|[[.].]][[.].]])\' ';
9            $sql = "SELECT n.nid, n.title FROM {node} n INNER JOIN {node_revisions} r ON n.nid = r.nid AND n.vid = r.vid WHERE n.type = '$a_type' AND LOWER(r.body) $l_body_filter ";
10    $op = $a_op;          $sql .= " ORDER BY n.nid, n.vid ";
11    if ($op == '') {  
12      $op = 'all';          $pat = '/\[\[Image:([a-zA-Z0-9:_ -]+)(\||\]\])/';
13    }          $res = db_query($sql);
14    if (user_access('admin isedoc') or user_access('query isedoc')) {          while ($r = db_fetch_array($res)) {
15      $books = array();                  $nid = $r['nid'];
16      $all_books = book_get_books();                  $n = node_load($nid);
17      switch ($target) {                  if ($n) {
18        case 'all':                          $n_bid = $n->book['bid'];
19          foreach($all_books as $b) {                          preg_match_all($pat, $n->body, $matches, PREG_PATTERN_ORDER);
20                  $books[] = $b['bid'];                          if (count($matches[1]) > 0) {
21          }                                  foreach($matches[1] as $mk => $i_title) {
22          break;                                          $t = strtolower($i_title);
23        default:                                          //if (!isset($results[$t])) { $results[$t]= array(); }
24          $bn = strtolower($target);                                          $results[$t][$nid] = $n_bid;
25          foreach($all_books as $b) {                                  }
26                  if (isedoc_book_title_to_book_name_id($b['title']) == $bn) {                          }
27                          $books[] = $b['bid'];                  } else {
28                  }                          drupal_set_message("Can not load node #$nid");
29          }                  }
30          break;          }
31      }  
32      if (count($books) > 0) {          //drupal_set_message("results=".var_dump_r($results));
33        foreach($books as $bid){          return $results;
34          $output .= isedoc_report_on_book($bid,$op);  }
35        }  
36        if ($op) {  function isedoc_gallery_taxonomy($vid,$a_name) {
37          $output .= "Report $target ($op): completed.";  //drupal_set_message("isedoc_gallery_taxonomy($vid,$a_name) .. ");
38        } else {          $n = strtolower($a_name);
39          $output .= "Report $target: completed.";          $sqlres = db_query("SELECT tid,vid,name,description,weight FROM {term_data} WHERE vid = '%s' AND LOWER(name) = LOWER('%s')", $vid, $n);
40        }          if ($sqlres) {
41        $output .= "<br/>".l(t("Report other books"), "isedoc/report/$a_type/_")."<br/>";                  $res = db_fetch_object($sqlres);
42      } else {          }
43          $output .= "<ul>";          if ($res) {
44          $output .= "<li><strong>".l(t("Report all the books"), "isedoc/report/$a_type/all")."</strong></li>";                  //drupal_set_message("isedoc_gallery_taxonomy($vid,$a_name) -> tid=".$res->tid . " name=".$res->name);
45          foreach($all_books as $b) {                  return $res;
46                  $bn = isedoc_book_title_to_book_name_id($b['title']);          } else {
47                  $output .= "<li>".l(t("Report only: ").$bn, "isedoc/report/$a_type/$bn")."</li>";                  $tid = db_result (db_query("SELECT tid FROM {term_data} WHERE vid = '%s' AND LOWER(name) = LOWER('%s')", $vid, 'documentation'));
48          }                  $parents = taxonomy_get_parents ($tid);
49          $output .= "</ul>";                  if ($parents) {
50      }                      $parent = array_shift ($parents);
51    } else {                      $parent = $parent->tid;
52      //drupal_access_denied();                  } else {
53      $output .= "Report $target: access denied.";                      $parent = 0;
54    }                  }
55    return $output;                  $t = array('parent' => array($parent), 'vid' => $vid, 'name' => $n, "description" => "Images for book $a_name");
56                    $st = taxonomy_save_term(&$t);
57    //drupal_set_message("taxonomy_save_term($vid, $a_name) -> $st");
58                    return isedoc_gallery_taxonomy($vid,$a_name);
59            }
60    }
61    function isedoc_gallery_set_taxonomy(&$node,$vid,$a_name) {
62            //drupal_set_message("isedoc_gallery_set_taxonomy($vid,$a_name)");
63    
64            $taxo = isedoc_gallery_taxonomy($vid, $a_name);
65    
66            $o = taxonomy_nodeapi($node, 'load');
67            $taxonomy = $o['taxonomy'];
68            $taxonomy[$taxo->tid] = $taxo;
69    
70            $node->taxonomy = $taxonomy;
71    }
72    
73    function isedoc_report($a_type='doc',$target, $a_op='') {
74            drupal_add_css(drupal_get_path('module', 'system') .'/system.css');
75            drupal_add_js('misc/collapse.js');
76            $output = '';
77            if (user_access('admin isedoc') or user_access('query isedoc')) {
78                    switch ($a_type) {
79                    case 'gallery':
80                            $output .= "Gallery $target";
81    
82                            /* Build the images usage by nid */
83                            $cat = _isedoc_images_by_nid();
84    
85                            //$galleries = taxonomy_get_tree(_image_gallery_get_vid(), $tid, -1, 3);
86                            $vid = db_result (db_query ("SELECT vid FROM {vocabulary} WHERE module='image_gallery'"));
87                            $tid = db_result (db_query("SELECT tid FROM {term_data} WHERE vid = '%s' AND LOWER(name) = LOWER('%s')", $vid, $target));
88                            if ($tid) {
89                                    $sql = "SELECT n.nid, n.title FROM {node} n ";
90                                    $sql .= "INNER JOIN {term_node} t ON t.tid = '%s' ";
91                                    $sql .= "INNER JOIN {node_revisions} r ON r.nid = t.nid AND r.vid = t.vid ";
92                                    $sql .= "WHERE n.nid = t.nid AND n.vid = r.vid ";
93                                    $sql .= "ORDER BY t.nid, t.vid ";
94                                    $res = db_query($sql, $tid);
95    
96                                    if ($res) {
97                                            $output .= "<ol>";
98                                            while ($v = db_fetch_array($res)) {
99                                                    $b_save = FALSE;
100    
101                                                    $v_nid = $v['nid'];
102                                                    $v_title = strtolower($v['title']);
103                                                    $v_node = node_load($v_nid);
104                                                    //drupal_set_message("image $v_title: " .var_dump_r($v_node));
105    
106                                                    //Too slow: $refs = isedoc_pages_referencing_image($v_title);
107                                                    if (isset($cat[$v_title])) {
108                                                            $refs =& $cat[$v_title];
109                                                            $nb = count($refs);
110                                                            //$refs = array_unique($refs);
111                                                    } else {
112                                                            $nb = 0;
113                                                            $refs = NULL;
114                                                    }
115                                                    //drupal_set_message("img=$v_title -> ". count($refs));
116    
117                                                    $output .= "<li>";
118                                                    $output .= $v_title;
119                                                    $output .= " " . l("view", "node/".$v_nid);
120                                                    //$output .= ": $nb";
121                                                    if ($refs) {
122                                                            $bids = array();
123                                                            foreach($refs as $r_nid => $r_bid) {
124                                                                    $bids[$r_bid][] = $r_nid;
125                                                            }
126                                                            switch (count($bids)) {
127                                                            case 0:
128                                                                    $output .= ":<strong> UNUSED</strong>";
129                                                                    isedoc_gallery_set_taxonomy(&$v_node, $vid, "unused");
130                                                                    $b_save = TRUE;
131                                                                    break;
132                                                            case 1:
133                                                                    end($bids);
134                                                                    $r_bid = key($bids);
135                                                                    $r_nids = current($bids);
136                                                                    $r_bn = isedoc_book_name($r_bid);
137                                                                    $output .= ": only from book '".l($r_bn, "node/$r_bid")."' (count=".count($r_nids).")";
138    
139                                                                    isedoc_gallery_set_taxonomy(&$v_node, $vid, "book-$r_bn");
140                                                                    $b_save = TRUE;
141    
142                                                                    break;
143                                                            default:
144                                                                    $output .= ":<strong class=\"error\"> from ".count($bids)." books (CHECK)</strong>";
145                                                                    $output .= "<ul style=\"margin: 0 0 4px 0;\">";
146                                                                    foreach($bids as $r_bid => $nids) {
147                                                                            $output .= "<li>book ".l(isedoc_book_name($r_bid),"node/$r_bid")." (count=".count($nids).")</li>";
148                                                                            /*
149                                                                            $output .= "<ul style=\"margin: 0 0 4px 0;\">";
150                                                                            foreach($nids as $r_nid) {
151                                                                                    $output .= "<li>";
152                                                                                    $output .= l("node/$r_nid", "node/$r_nid");
153                                                                                    $output .= " from ".$r_bid;
154                                                                                    $output .= "</li>";
155                                                                            }
156                                                                            $output .= "</ul>";
157                                                                            */
158                                                                    }
159                                                                    $output .= "</ul>";
160    
161                                                                    break;
162                                                            }
163                                                    } else {
164                                                            $output .= ":<strong> UNUSED</strong>";
165                                                            isedoc_gallery_set_taxonomy(&$v_node, $vid, "unused");
166                                                            $b_save = TRUE;
167                                                    }
168                                                    $output .= "</li>";
169                                                    if ($b_save) {
170                                                            //$node->revision = FALSE;
171                                                            node_save(&$v_node);
172                                                            //drupal_set_message("Saved: " . l($v_node->title,$v_node->path));
173                                                    }
174                                            }
175                                            $output .= "</ol>";
176                                    }
177                            }
178                            break;
179                    case 'doc':
180                            $op = $a_op;
181                            if ($op == '') {
182                                    $op = 'all';
183                            }
184                            $books = array ();
185                            $all_books = book_get_books ();
186                            switch ($target) {
187                            case 'all':
188                                    foreach ($all_books as $b) {
189                                            $books[] = $b['bid'];
190                                    }
191                                    break;
192                            default:
193                                    $bn = strtolower ($target);
194                                    foreach ($all_books as $b) {
195                                            if (isedoc_book_title_to_book_name_id ($b['title']) == $bn) {
196                                                    $books[] = $b['bid'];
197                                            }
198                                    }
199                                    break;
200                            }
201    
202                            if (count ($books) > 0) {
203                                    foreach ($books as $bid) {
204                                            $output .= isedoc_report_on_book ($bid, $op);
205                                    }
206                                    if ($op) {
207                                            $output .= "Report $target ($op): completed.";
208                                    } else {
209                                            $output .= "Report $target: completed.";
210                                    }
211                                    $output .= "<br/>".l (t ("Report other books"), "isedoc/report/$a_type/_")."<br/>";
212                            } else {
213                                    $output .= "<ul>";
214                                    $output .= "<li><strong>".l (t ("Report all the books"), "isedoc/report/$a_type/all")."</strong></li>";
215                                    foreach ($all_books as $b) {
216                                            $bn = isedoc_book_title_to_book_name_id ($b['title']);
217                                            $output .= "<li>".l (t ("Report only: ").$bn, "isedoc/report/$a_type/$bn")."</li>";
218                                    }
219                                    $output .= "</ul>";
220                            }
221                            break;
222                    default:
223                            break;
224                    }
225            } else {
226                    //drupal_access_denied();
227                    $output .= "Report $target: access denied.";
228            }
229            return $output;
230  }  }
231    
232  function isedoc_book_title_to_book_name_id($a_title) {  function isedoc_book_title_to_book_name_id($a_title) {

Legend:
Removed from v.74849  
changed lines
  Added in v.74850

  ViewVC Help
Powered by ViewVC 1.1.23