Вход Регистрация
Файл: Tools/phpmyadmin/libraries/transformations.lib.php
Строк: 299
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Set of functions used with the relation and pdf feature
 *
 * @package PhpMyAdmin
 */

/**
 * returns array of options from string with options separated by comma, removes quotes
 *
 * <code>
 * PMA_transformation_getOptions("'option ,, quoted',abd,'2,3',");
 * // array {
 * //     'option ,, quoted',
 * //     'abc',
 * //     '2,3',
 * //     '',
 * // }
 * </code>
 *
 * @param string $option_string comma separated options
 *
 * @return array options
 */
function PMA_transformation_getOptions($option_string)
{
    
$result = array();

    if (! 
strlen($option_string)
        || ! 
$transform_options preg_split('/,/'$option_string)
    ) {
        return 
$result;
    }

    while ((
$option array_shift($transform_options)) !== null) {
        
$trimmed trim($option);
        if (
strlen($trimmed) > 1
            
&& $trimmed[0] == "'"
            
&& $trimmed[strlen($trimmed) - 1] == "'"
        
) {
            
// '...'
            
$option substr($trimmed1, -1);
        } elseif (isset(
$trimmed[0]) && $trimmed[0] == "'") {
            
// '...,
            
$trimmed ltrim($option);
            while ((
$option array_shift($transform_options)) !== null) {
                
// ...,
                
$trimmed .= ',' $option;
                
$rtrimmed rtrim($trimmed);
                if (
$rtrimmed[strlen($rtrimmed) - 1] == "'") {
                    
// ,...'
                    
break;
                }
            }
            
$option substr($rtrimmed1, -1);
        }
        
$result[] = stripslashes($option);
    }

    return 
$result;
}

/**
 * Gets all available MIME-types
 *
 * @access  public
 * @staticvar   array   mimetypes
 * @return  array    array[mimetype], array[transformation]
 */
function PMA_getAvailableMIMEtypes()
{
    static 
$stack null;

    if (
null !== $stack) {
        return 
$stack;
    }

    
$stack = array();
    
$filestack = array();

    
$handle opendir('./libraries/transformations');

    if (! 
$handle) {
        return 
$stack;
    }

    while (
$file readdir($handle)) {
        
$filestack[] = $file;
    }

    
closedir($handle);
    
sort($filestack);

    foreach (
$filestack as $file) {
        if (
preg_match('|^.*__.*.inc.php$|'$file)) {
            
// File contains transformation functions.
            
$base explode('__'str_replace('.inc.php'''$file));
            
$mimetype str_replace('_''/'$base[0]);
            
$stack['mimetype'][$mimetype] = $mimetype;

            
$stack['transformation'][] = $mimetype ': ' $base[1];
            
$stack['transformation_file'][] = $file;

        } elseif (
preg_match('|^.*.inc.php$|'$file)) {
            
// File is a plain mimetype, no functions.
            
$base str_replace('.inc.php'''$file);

            if (
$base != 'global') {
                
$mimetype str_replace('_''/'$base);
                
$stack['mimetype'][$mimetype] = $mimetype;
                
$stack['empty_mimetype'][$mimetype] = $mimetype;
            }
        }
    }

    return 
$stack;
}

/**
 * Returns the description of the transformation
 *
 * @param string $file           transformation file
 * @param string $html_formatted whether the description should be formatted as HTML
 *
 * @return the description of the transformation
 */
function PMA_getTransformationDescription($file$html_formatted true)
{
    include_once 
'./libraries/transformations/' $file;
    
$func strtolower(str_replace('.inc.php'''$file));
    
$funcname 'PMA_transformation_' $func '_info';

    
$desc sprintf(__('No description is available for this transformation.<br />Please ask the author what %s does.'), 'PMA_transformation_' $func '()');
    if (
$html_formatted) {
        
$desc '<i>' $desc '</i>';
    } else {
        
$desc str_replace('<br />'' '$desc);
    }
    if (
function_exists($funcname)) {
        
$desc_arr $funcname();
        if (isset(
$desc_arr['info'])) {
            
$desc $desc_arr['info'];
        }
    }
    return 
$desc;
}

/**
 * Gets the mimetypes for all columns of a table
 *
 * @param string $db     the name of the db to check for
 * @param string $table  the name of the table to check for
 * @param string $strict whether to include only results having a mimetype set
 *
 * @access  public
 *
 * @return array [field_name][field_key] = field_value
 */
function PMA_getMIME($db$table$strict false)
{
    
$cfgRelation PMA_getRelationsParam();

    if (! 
$cfgRelation['commwork']) {
        return 
false;
    }

    
$com_qry  '
         SELECT `column_name`,
                `mimetype`,
                `transformation`,
                `transformation_options`
         FROM ' 
PMA_backquote($cfgRelation['db']) . '.' PMA_backquote($cfgRelation['column_info']) . '
         WHERE `db_name`    = '' . PMA_sqlAddSlashes($db) . ''
           AND `table_name` = '' . PMA_sqlAddSlashes($table) . ''
           AND ( `mimetype` != ''' 
. (!$strict '
              OR `transformation` != ''
              OR `transformation_options` != ''' 
'') . ')';
    return 
PMA_DBI_fetch_result($com_qry'column_name'null$GLOBALS['controllink']);
// end of the 'PMA_getMIME()' function

/**
 * Set a single mimetype to a certain value.
 *
 * @param string $db                     the name of the db
 * @param string $table                  the name of the table
 * @param string $key                    the name of the column
 * @param string $mimetype               the mimetype of the column
 * @param string $transformation         the transformation of the column
 * @param string $transformation_options the transformation options of the column
 * @param string $forcedelete            force delete, will erase any existing
 *                                       comments for this column
 *
 * @access  public
 *
 * @return  boolean  true, if comment-query was made.
 */
function PMA_setMIME($db$table$key$mimetype$transformation,
    
$transformation_options$forcedelete false)
{
    
$cfgRelation PMA_getRelationsParam();

    if (! 
$cfgRelation['commwork']) {
        return 
false;
    }

    
$test_qry  '
         SELECT `mimetype`,
                `comment`
           FROM ' 
PMA_backquote($cfgRelation['db']) . '.' PMA_backquote($cfgRelation['column_info']) . '
          WHERE `db_name`     = '' . PMA_sqlAddSlashes($db) . ''
            AND `table_name`  = '' . PMA_sqlAddSlashes($table) . ''
            AND `column_name` = '' . PMA_sqlAddSlashes($key) . '''
;
    
$test_rs   PMA_query_as_controluser($test_qrytruePMA_DBI_QUERY_STORE);

    if (
$test_rs && PMA_DBI_num_rows($test_rs) > 0) {
        
$row = @PMA_DBI_fetch_assoc($test_rs);
        
PMA_DBI_free_result($test_rs);

        if (! 
$forcedelete
            
&& (strlen($mimetype) || strlen($transformation)
            || 
strlen($transformation_options) || strlen($row['comment']))
        ) {
            
$upd_query '
                UPDATE ' 
PMA_backquote($cfgRelation['db']) . '.' PMA_backquote($cfgRelation['column_info']) . '
                   SET `mimetype`               = '' . PMA_sqlAddSlashes($mimetype) . '',
                       `transformation`         = '' . PMA_sqlAddSlashes($transformation) . '',
                       `transformation_options` = '' . PMA_sqlAddSlashes($transformation_options) . '''
;
        } else {
            
$upd_query 'DELETE FROM ' PMA_backquote($cfgRelation['db']) . '.' PMA_backquote($cfgRelation['column_info']);
        }
        
$upd_query .= '
            WHERE `db_name`     = '' . PMA_sqlAddSlashes($db) . ''
              AND `table_name`  = '' . PMA_sqlAddSlashes($table) . ''
              AND `column_name` = '' . PMA_sqlAddSlashes($key) . '''
;
    } elseif (
strlen($mimetype) || strlen($transformation)
     || 
strlen($transformation_options)) {
        
$upd_query 'INSERT INTO ' PMA_backquote($cfgRelation['db']) . '.' PMA_backquote($cfgRelation['column_info'])
                   . 
' (db_name, table_name, column_name, mimetype, transformation, transformation_options) '
                   
' VALUES('
                   
''' . PMA_sqlAddSlashes($db) . '','
                   
''' . PMA_sqlAddSlashes($table) . '','
                   
''' . PMA_sqlAddSlashes($key) . '','
                   
''' . PMA_sqlAddSlashes($mimetype) . '','
                   
''' . PMA_sqlAddSlashes($transformation) . '','
                   
''' . PMA_sqlAddSlashes($transformation_options) . '')';
    }

    if (isset(
$upd_query)) {
        return 
PMA_query_as_controluser($upd_query);
    } else {
        return 
false;
    }
// end of 'PMA_setMIME()' function
?>
Онлайн: 1
Реклама