Documentation TYPO3 par Ameos

latex.php

00001 <?php
00002 /* $Id: latex.php,v 2.2 2003/11/20 16:31:51 garvinhicking Exp $ */
00003 // vim: expandtab sw=4 ts=4 sts=4:
00004 
00018 function PMA_texEscape($string) {
00019    $escape = array('$', '%', '{', '}',  '&',  '#', '_', '^');
00020    $cnt_escape = count($escape);
00021    for($k=0; $k < $cnt_escape; $k++) {
00022       $string = str_replace($escape[$k], '\\' . $escape[$k], $string);
00023    }
00024    return $string;
00025 }
00026 
00034 function PMA_exportComment($text) {
00035     return PMA_exportOutputHandler('% ' . $text . $GLOBALS['crlf']);
00036 }
00037 
00045 function PMA_exportHeader() {
00046     global $crlf;
00047     global $cfg;
00048 
00049     $head  =  '% phpMyAdmin LaTeX Dump' . $crlf
00050            .  '% version ' . PMA_VERSION . $crlf
00051            .  '% http://www.phpmyadmin.net' . $crlf
00052            .  '%' . $crlf
00053            .  '% ' . $GLOBALS['strHost'] . ': ' . $cfg['Server']['host'];
00054     if (!empty($cfg['Server']['port'])) {
00055          $head .= ':' . $cfg['Server']['port'];
00056     }
00057     $head .= $crlf
00058            .  '% ' . $GLOBALS['strGenTime'] . ': ' . PMA_localisedDate() . $crlf
00059            .  '% ' . $GLOBALS['strServerVersion'] . ': ' . substr(PMA_MYSQL_INT_VERSION, 0, 1) . '.' . (int) substr(PMA_MYSQL_INT_VERSION, 1, 2) . '.' . (int) substr(PMA_MYSQL_INT_VERSION, 3) . $crlf
00060            .  '% ' . $GLOBALS['strPHPVersion'] . ': ' . phpversion() . $crlf;
00061     return PMA_exportOutputHandler($head);
00062 }
00063 
00073 function PMA_exportDBHeader($db) {
00074     global $crlf;
00075     $head = '% ' . $crlf
00076           . '% ' . $GLOBALS['strDatabase'] . ': ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : '\'' . $db . '\''). $crlf
00077           . '% ' . $crlf;
00078     return PMA_exportOutputHandler($head);
00079 }
00080 
00090 function PMA_exportDBFooter($db) {
00091     return TRUE;
00092 }
00093 
00103 function PMA_exportDBCreate($db) {
00104     return TRUE;
00105 }
00106 
00120 function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
00121     $result      = PMA_mysql_query($sql_query) or PMA_mysqlDie('', $sql_query, '', $error_url);
00122 
00123     $columns_cnt = mysql_num_fields($result);
00124     for ($i = 0; $i < $columns_cnt; $i++) {
00125         $columns[$i] = mysql_field_name($result, $i);
00126     }
00127     unset($i);
00128 
00129     $buffer      = $crlf . '%' . $crlf . '% ' . $GLOBALS['strData'] . ': ' . $table . $crlf . '%' . $crlf
00130                  . ' \\begin{longtable}{|';
00131 
00132     for($index=0;$index<$columns_cnt;$index++) {
00133        $buffer .= 'l|';
00134     }
00135     $buffer .= '} ' . $crlf ;
00136 
00137     $buffer .= ' \\hline \\endhead \\hline \\endfoot \\hline ' . $crlf;
00138     if (isset($GLOBALS['latex_caption'])) {
00139         $buffer .= ' \\caption{' . str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_data_caption'])
00140                    . '} \\label{' . str_replace('__TABLE__', $table, $GLOBALS['latex_data_label']) . '} \\\\';
00141     }
00142     if (!PMA_exportOutputHandler($buffer)) return FALSE;
00143 
00144     // show column names
00145     if (isset($GLOBALS['latex_showcolumns'])) {
00146         $buffer = '\\hline ';
00147         for ($i = 0; $i < $columns_cnt; $i++) {
00148             $buffer .= '\\multicolumn{1}{|c|}{\\textbf{' . PMA_texEscape(stripslashes($columns[$i])) . '}} & ';
00149           }
00150 
00151         $buffer = substr($buffer,0,-2) . '\\\\ \\hline \hline ';
00152         if (!PMA_exportOutputHandler($buffer . ' \\endfirsthead ' . $crlf)) return FALSE;
00153         if (isset($GLOBALS['latex_caption'])) {
00154             if (!PMA_exportOutputHandler('\\caption{' . str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_data_continued_caption']) . '} \\\\ ')) return FALSE;
00155         }
00156         if (!PMA_exportOutputHandler($buffer . '\\endhead \\endfoot' . $crlf)) return FALSE;
00157     } else {
00158         if (!PMA_exportOutputHandler('\\\\ \hline')) return FALSE;
00159     }
00160 
00161     // print the whole table
00162     while ($record = PMA_mysql_fetch_array($result, MYSQL_ASSOC)) {
00163 
00164         $buffer = '';
00165         // print each row
00166         for($i = 0; $i < $columns_cnt; $i++) {
00167             if ( isset($record[$columns[$i]]) && (!function_exists('is_null') || !is_null($record[$columns[$i]]))) {
00168                 $column_value = PMA_texEscape(stripslashes($record[$columns[$i]]));
00169             } else {
00170                 $column_value = $GLOBALS['latex_replace_null'];
00171             }
00172 
00173             // last column ... no need for & character
00174             if($i == ($columns_cnt - 1)) {
00175                 $buffer .= $column_value;
00176             } else {
00177                 $buffer .= $column_value . " & ";
00178             }
00179         }
00180         $buffer .= ' \\\\ \\hline ' . $crlf;
00181         if (!PMA_exportOutputHandler($buffer)) return FALSE;
00182     }
00183 
00184     $buffer = ' \\end{longtable}' . $crlf;
00185     if (!PMA_exportOutputHandler($buffer)) return FALSE;
00186 
00187     mysql_free_result($result);
00188     return TRUE;
00189 
00190 } // end getTableLaTeX
00191 
00207  // @@@ $strTableStructure
00208 function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false)
00209 {
00210     global $cfgRelation;
00211 
00215     PMA_mysql_select_db($db);
00216     $local_query = 'SHOW FIELDS FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table);
00217     $result      = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', $error_url);
00218     $fields_cnt  = mysql_num_rows($result);
00219 
00220     // Check if we can use Relations (Mike Beck)
00221     if ($do_relation && !empty($cfgRelation['relation'])) {
00222         // Find which tables are related with the current one and write it in
00223         // an array
00224         $res_rel = PMA_getForeigners($db, $table);
00225 
00226         if ($res_rel && count($res_rel) > 0) {
00227             $have_rel = TRUE;
00228         } else {
00229             $have_rel = FALSE;
00230         }
00231     }
00232     else {
00233            $have_rel = FALSE;
00234     } // end if
00235 
00239     $keys_query     = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
00240     $keys_result    = PMA_mysql_query($keys_query) or PMA_mysqlDie('', $keys_query, '', $error_url);
00241     $unique_keys    = array();
00242     while($key = PMA_mysql_fetch_array($keys_result)) {
00243         if ($key['Non_unique'] == 0) $unique_keys[] = $key['Column_name'];
00244     }
00245 
00249     $buffer      = $crlf . '%' . $crlf . '% ' . $GLOBALS['strStructure'] . ': ' . $table  . $crlf . '%' . $crlf
00250                  . ' \\begin{longtable}{';
00251     if (!PMA_exportOutputHandler($buffer)) return FALSE;
00252 
00253     $columns_cnt = 4;
00254     $alignment = '|l|c|c|c|';
00255     if ($do_relation && $have_rel) {
00256         $columns_cnt++;
00257         $alignment .= 'l|';
00258     }
00259     if ($do_comments && $cfgRelation['commwork']) {
00260         $columns_cnt++;
00261         $alignment .= 'l|';
00262     }
00263     if ($do_mime && $cfgRelation['mimework']) {
00264         $columns_cnt++;
00265         $alignment .='l|';
00266     }
00267     $buffer = $alignment . '} ' . $crlf ;
00268 
00269     $header .= ' \\hline ';
00270     $header .= '\\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strField'] . '}} & \\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strType'] . '}} & \\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strNull'] . '}} & \\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strDefault'] . '}}';
00271     if ($do_relation && $have_rel) {
00272         $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strLinksTo'] . '}}';
00273     }
00274     if ($do_comments && $cfgRelation['commwork']) {
00275         $header .= ' & \\multicolumn{1}{|c|}{\\textbf{' . $GLOBALS['strComments'] . '}}';
00276         $comments = PMA_getComments($db, $table);
00277     }
00278     if ($do_mime && $cfgRelation['mimework']) {
00279         $header .= ' & \\multicolumn{1}{|c|}{\\textbf{MIME}}';
00280         $mime_map = PMA_getMIME($db, $table, true);
00281     }
00282 
00283     $local_buffer = PMA_texEscape($table);
00284 
00285     // Table caption for first page and label
00286     if (isset($GLOBALS['latex_caption'])) {
00287         $buffer .= ' \\caption{'. str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_structure_caption'])
00288                    . '} \\label{' . str_replace('__TABLE__', $table, $GLOBALS['latex_structure_label'])
00289                    . '} \\\\' . $crlf;
00290     }
00291     $buffer .= $header . ' \\\\ \\hline \\hline' . $crlf . '\\endfirsthead' . $crlf;
00292     // Table caption on next pages
00293     if (isset($GLOBALS['latex_caption'])) {
00294         $buffer .= ' \\caption{'. str_replace('__TABLE__', PMA_texEscape($table), $GLOBALS['latex_structure_continued_caption'])
00295                    . '} \\\\ ' . $crlf;
00296     }
00297     $buffer .= $header . ' \\\\ \\hline \\hline \\endhead \\endfoot ';
00298 
00299     if (!PMA_exportOutputHandler($buffer)) return FALSE;
00300 
00301     while ($row = PMA_mysql_fetch_array($result)) {
00302 
00303         $type             = $row['Type'];
00304         // reformat mysql query output - staybyte - 9. June 2001
00305         // loic1: set or enum types: slashes single quotes inside options
00306         if (eregi('^(set|enum)\((.+)\)$', $type, $tmp)) {
00307             $tmp[2]       = substr(ereg_replace('([^,])\'\'', '\\1\\\'', ',' . $tmp[2]), 1);
00308             $type         = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
00309             $type_nowrap  = '';
00310 
00311             $binary       = 0;
00312             $unsigned     = 0;
00313             $zerofill     = 0;
00314         } else {
00315             $type_nowrap  = ' nowrap="nowrap"';
00316             $type         = eregi_replace('BINARY', '', $type);
00317             $type         = eregi_replace('ZEROFILL', '', $type);
00318             $type         = eregi_replace('UNSIGNED', '', $type);
00319             if (empty($type)) {
00320                 $type     = '&nbsp;';
00321             }
00322 
00323             $binary       = eregi('BINARY', $row['Type'], $test);
00324             $unsigned     = eregi('UNSIGNED', $row['Type'], $test);
00325             $zerofill     = eregi('ZEROFILL', $row['Type'], $test);
00326         }
00327         $strAttribute     = '&nbsp;';
00328         if ($binary) {
00329             $strAttribute = 'BINARY';
00330         }
00331         if ($unsigned) {
00332             $strAttribute = 'UNSIGNED';
00333         }
00334         if ($zerofill) {
00335             $strAttribute = 'UNSIGNED ZEROFILL';
00336         }
00337         if (!isset($row['Default'])) {
00338             if ($row['Null'] != '') {
00339                 $row['Default'] = 'NULL';
00340             }
00341         } else {
00342             $row['Default'] = $row['Default'];
00343         }
00344 
00345         $field_name = $row['Field'];
00346 
00347         $local_buffer = $field_name . "\000" . $type . "\000" . (($row['Null'] == '') ? $GLOBALS['strNo'] : $GLOBALS['strYes'])  . "\000" . (isset($row['Default']) ? $row['Default'] : '');
00348 
00349         if ($do_relation && $have_rel) {
00350             $local_buffer .= "\000";
00351             if (isset($res_rel[$field_name])) {
00352                 $local_buffer .= $res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')';
00353             }
00354         }
00355         if ($do_comments && $cfgRelation['commwork']) {
00356             $local_buffer .= "\000";
00357             if (isset($comments[$field_name])) {
00358                 $local_buffer .= $comments[$field_name];
00359             }
00360         }
00361         if ($do_mime && $cfgRelation['mimework']) {
00362             $local_buffer .= "\000";
00363             if (isset($mime_map[$field_name])) {
00364                 $local_buffer .= str_replace('_', '/', $mime_map[$field_name]['mimetype']);
00365             }
00366         }
00367         $local_buffer = PMA_texEscape($local_buffer);
00368         if ($row['Key']=='PRI') {
00369             $pos=strpos($local_buffer, "\000");
00370             $local_buffer = '\\textit{' . substr($local_buffer,0,$pos) . '}' . substr($local_buffer,$pos);
00371         }
00372         if (in_array($field_name, $unique_keys)) {
00373             $pos=strpos($local_buffer, "\000");
00374             $local_buffer = '\\textbf{' . substr($local_buffer,0,$pos) . '}' . substr($local_buffer,$pos);
00375         }
00376         $buffer = str_replace("\000", ' & ', $local_buffer);
00377         $buffer .= ' \\\\ \\hline ' . $crlf;
00378 
00379         if (!PMA_exportOutputHandler($buffer)) return FALSE;
00380     } // end while
00381     mysql_free_result($result);
00382 
00383     $buffer = ' \\end{longtable}' . $crlf;
00384     return PMA_exportOutputHandler($buffer);
00385 } // end of the 'PMA_getTableStructureLaTeX()' function
00386 ?>


Généré par TYPO3 Ameos avec  doxygen 1.4.6