Initial commit

This commit is contained in:
2022-11-21 09:47:28 +01:00
commit 76cec83d26
11652 changed files with 1980467 additions and 0 deletions

View File

@ -0,0 +1,4 @@
TRANSFORMATION USAGE (Garvin Hicking, <me@supergarv.de>)
====================
See the documentation for complete instructions on how to use transformation plugins.

View File

@ -0,0 +1,47 @@
<?php
// vim: expandtab sw=4 ts=4 sts=4:
/**
* This file contains the basic structure for a specific MIME Type and Subtype
* transformations class.
* For instructions, read the documentation
*
* @package PhpMyAdmin-Transformations
* @subpackage [TransformationName]
*/
namespace PMA\libraries\plugins\transformations;
use PMA\libraries\plugins\transformations\abs\[TransformationName]TransformationsPlugin;
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* Handles the [TransformationName] transformation for [MIMEType] - [MIMESubtype]
*
* @package PhpMyAdmin
*/
class [MIMEType][MIMESubtype][TransformationName]
extends [TransformationName]TransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "[MIMEType]";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "[MIMESubtype]";
}
}
?>

View File

@ -0,0 +1,74 @@
<?php
// vim: expandtab sw=4 ts=4 sts=4:
/**
* This file contains the basic structure for an abstract class defining a
* transformation.
* For instructions, read the documentation
*
* @package PhpMyAdmin-Transformations
* @subpackage [TransformationName]
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\IOTransformationsPlugin;
if (! defined('PHPMYADMIN')) {
exit;
}
/**
* Provides common methods for all of the [TransformationName] transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class [TransformationName]TransformationsPlugin
extends IOTransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Description of the transformation.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return void
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// possibly use a global transform and feed it with special options
// further operations on $buffer using the $options[] array.
// You can evaluate the propagated $meta Object. It's contained fields are described in https://www.php.net/mysql_fetch_field.
// This stored information can be used to get the field information about the transformed field.
// $meta->mimetype contains the original MimeType of the field (i.e. 'text/plain', 'image/jpeg' etc.)
return $buffer;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the TransformationName of the specific plugin
*
* @return string
*/
public static function getName()
{
return "[TransformationName]";
}
}
?>

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Link Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
namespace PMA\libraries\plugins\transformations;
use PMA\libraries\plugins\transformations\abs\TextLinkTransformationsPlugin;
/**
* Handles the link transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
class Text_Plain_Link extends TextLinkTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Long To IPv4 Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage LongToIPv4
*/
namespace PMA\libraries\plugins\transformations;
use PMA\libraries\plugins\transformations\abs\LongToIPv4TransformationsPlugin;
/**
* Handles the long to ipv4 transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage LongToIPv4
*/
class Text_Plain_Longtoipv4 extends LongToIPv4TransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,41 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Prepend/Append Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage PreApPend
*/
namespace PMA\libraries\plugins\transformations;
use PMA\libraries\plugins\transformations\abs\PreApPendTransformationsPlugin;
/**
* Handles the prepend and/or append transformation for text plain.
* Has two options: the text to be prepended and appended (if any, default '')
*
* @package PhpMyAdmin-Transformations
* @subpackage PreApPend
*/
class Text_Plain_PreApPend extends PreApPendTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Substring Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Substring
*/
namespace PMA\libraries\plugins\transformations;
use PMA\libraries\plugins\transformations\abs\SubstringTransformationsPlugin;
/**
* Handles the substring transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage Substring
*/
class Text_Plain_Substring extends SubstringTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,65 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the Bool2Text transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Bool2Text
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the Bool2Text transformations plugins.
*
* @package PhpMyAdmin-Transformations
* @subpackage Bool2Text
*/
abstract class Bool2TextTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Converts Boolean values to text (default \'T\' and \'F\').'
. ' First option is for TRUE, second for FALSE. Nonzero=true.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$options = $this->getOptions($options, array('T', 'F'));
if ($buffer == '0') {
return $options[1]; // return false label
}
return $options[0]; // or true one if nonzero
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Bool2Text";
}
}

View File

@ -0,0 +1,72 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for syntax highlighted editors using CodeMirror
*
* @package PhpMyAdmin-Transformations
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\IOTransformationsPlugin;
/**
* Provides common methods for all the CodeMirror syntax highlighted editors
*
* @package PhpMyAdmin-Transformations
*/
abstract class CodeMirrorEditorTransformationPlugin extends IOTransformationsPlugin
{
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return $buffer;
}
/**
* Returns the html for input field to override default textarea.
* Note: Return empty string if default textarea is required.
*
* @param array $column column details
* @param int $row_id row number
* @param string $column_name_appendix the name attribute
* @param array $options transformation options
* @param string $value Current field value
* @param string $text_dir text direction
* @param int $tabindex tab index
* @param int $tabindex_for_value offset for the values tabindex
* @param int $idindex id index
*
* @return string the html for input field
*/
public function getInputHtml(
$column,
$row_id,
$column_name_appendix,
$options,
$value,
$text_dir,
$tabindex,
$tabindex_for_value,
$idindex
) {
$html = '';
if (!empty($value)) {
$html = '<input type="hidden" name="fields_prev' . $column_name_appendix
. '" value="' . htmlspecialchars($value) . '"/>';
}
$class = 'transform_' . strtolower(static::getName()) . '_editor';
$html .= '<textarea name="fields' . $column_name_appendix . '"'
. ' dir="' . $text_dir . '" class="' . $class . '">'
. htmlspecialchars($value) . '</textarea>';
return $html;
}
}

View File

@ -0,0 +1,168 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the date format transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage DateFormat
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA;
use PMA\libraries\plugins\TransformationsPlugin;
require_once 'libraries/js_escape.lib.php';
/**
* Provides common methods for all of the date format transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class DateFormatTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a TIME, TIMESTAMP, DATETIME or numeric unix timestamp'
. ' column as formatted date. The first option is the offset (in'
. ' hours) which will be added to the timestamp (Default: 0). Use'
. ' second option to specify a different date/time format string.'
. ' Third option determines whether you want to see local date or'
. ' UTC one (use "local" or "utc" strings) for that. According to'
. ' that, date format has different value - for "local" see the'
. ' documentation for PHP\'s strftime() function and for "utc" it'
. ' is done using gmdate() function.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// possibly use a global transform and feed it with special options
// further operations on $buffer using the $options[] array.
if (empty($options[0])) {
$options[0] = 0;
}
if (empty($options[2])) {
$options[2] = 'local';
} else {
$options[2] = mb_strtolower($options[2]);
}
if (empty($options[1])) {
if ($options[2] == 'local') {
$options[1] = __('%B %d, %Y at %I:%M %p');
} else {
$options[1] = 'Y-m-d H:i:s';
}
}
$timestamp = -1;
// INT columns will be treated as UNIX timestamps
// and need to be detected before the verification for
// MySQL TIMESTAMP
if ($meta->type == 'int') {
$timestamp = $buffer;
// Detect TIMESTAMP(6 | 8 | 10 | 12 | 14)
// TIMESTAMP (2 | 4) not supported here.
// (Note: prior to MySQL 4.1, TIMESTAMP has a display size
// for example TIMESTAMP(8) means YYYYMMDD)
} else {
if (preg_match('/^(\d{2}){3,7}$/', $buffer)) {
if (mb_strlen($buffer) == 14 || mb_strlen($buffer) == 8) {
$offset = 4;
} else {
$offset = 2;
}
$aDate = array();
$aDate['year'] = (int)
mb_substr($buffer, 0, $offset);
$aDate['month'] = (int)
mb_substr($buffer, $offset, 2);
$aDate['day'] = (int)
mb_substr($buffer, $offset + 2, 2);
$aDate['hour'] = (int)
mb_substr($buffer, $offset + 4, 2);
$aDate['minute'] = (int)
mb_substr($buffer, $offset + 6, 2);
$aDate['second'] = (int)
mb_substr($buffer, $offset + 8, 2);
if (checkdate($aDate['month'], $aDate['day'], $aDate['year'])) {
$timestamp = mktime(
$aDate['hour'],
$aDate['minute'],
$aDate['second'],
$aDate['month'],
$aDate['day'],
$aDate['year']
);
}
// If all fails, assume one of the dozens of valid strtime() syntaxes
// (http://www.gnu.org/manual/tar-1.12/html_chapter/tar_7.html)
} else {
if (preg_match('/^[0-9]\d{1,9}$/', $buffer)) {
$timestamp = (int)$buffer;
} else {
$timestamp = strtotime($buffer);
}
}
}
// If all above failed, maybe it's a Unix timestamp already?
if ($timestamp < 0 && preg_match('/^[1-9]\d{1,9}$/', $buffer)) {
$timestamp = $buffer;
}
// Reformat a valid timestamp
if ($timestamp >= 0) {
$timestamp -= $options[0] * 60 * 60;
$source = $buffer;
if ($options[2] == 'local') {
$text = PMA\libraries\Util::localisedDate(
$timestamp,
$options[1]
);
} elseif ($options[2] == 'utc') {
$text = gmdate($options[1], $timestamp);
} else {
$text = 'INVALID DATE TYPE';
}
return '<dfn onclick="alert(\'' . PMA_jsFormat($source, false) . '\');" title="'
. htmlspecialchars($source) . '">' . htmlspecialchars($text) . '</dfn>';
} else {
return htmlspecialchars($buffer);
}
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Date Format";
}
}

View File

@ -0,0 +1,90 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the download transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Download
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the download transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class DownloadTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a link to download the binary data of the column. You can'
. ' use the first option to specify the filename, or use the second'
. ' option as the name of a column which contains the filename. If'
. ' you use the second option, you need to set the first option to'
. ' the empty string.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
global $row, $fields_meta;
if (isset($options[0]) && !empty($options[0])) {
$cn = $options[0]; // filename
} else {
if (isset($options[1]) && !empty($options[1])) {
foreach ($fields_meta as $key => $val) {
if ($val->name == $options[1]) {
$pos = $key;
break;
}
}
if (isset($pos)) {
$cn = $row[$pos];
}
}
if (empty($cn)) {
$cn = 'binary_file.dat';
}
}
return sprintf(
'<a href="transformation_wrapper.php%s&amp;ct=application'
. '/octet-stream&amp;cn=%s" title="%s" class="disableAjax">%s</a>',
$options['wrapper_link'],
htmlspecialchars(urlencode($cn)),
htmlspecialchars($cn),
htmlspecialchars($cn)
);
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Download";
}
}

View File

@ -0,0 +1,150 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the external transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage External
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the external transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class ExternalTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'LINUX ONLY: Launches an external application and feeds it the column'
. ' data via standard input. Returns the standard output of the'
. ' application. The default is Tidy, to pretty-print HTML code.'
. ' For security reasons, you have to manually edit the file'
. ' libraries/plugins/transformations/output/Text_Plain_External'
. '.php and list the tools you want to make available.'
. ' The first option is then the number of the program you want to'
. ' use and the second option is the parameters for the program.'
. ' The third option, if set to 1, will convert the output using'
. ' htmlspecialchars() (Default 1). The fourth option, if set to 1,'
. ' will prevent wrapping and ensure that the output appears all on'
. ' one line (Default 1).'
);
}
/**
* Enables no-wrapping
*
* @param array $options transformation options
*
* @return bool
*/
public function applyTransformationNoWrap($options = array())
{
if (!isset($options[3]) || $options[3] == '') {
$nowrap = true;
} elseif ($options[3] == '1' || $options[3] == 1) {
$nowrap = true;
} else {
$nowrap = false;
}
return $nowrap;
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// possibly use a global transform and feed it with special options
// further operations on $buffer using the $options[] array.
$allowed_programs = array();
//
// WARNING:
//
// It's up to administrator to allow anything here. Note that users may
// specify any parameters, so when programs allow output redirection or
// any other possibly dangerous operations, you should write wrapper
// script that will publish only functions you really want.
//
// Add here program definitions like (note that these are NOT safe
// programs):
//
//$allowed_programs[0] = '/usr/local/bin/tidy';
//$allowed_programs[1] = '/usr/local/bin/validate';
// no-op when no allowed programs
if (count($allowed_programs) == 0) {
return $buffer;
}
$options = $this->getOptions(
$options,
array(0, '-f /dev/null -i -wrap -q', 1, 1)
);
if (isset($allowed_programs[$options[0]])) {
$program = $allowed_programs[$options[0]];
} else {
$program = $allowed_programs[0];
}
// needs PHP >= 4.3.0
$newstring = '';
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
);
$process = proc_open($program . ' ' . $options[1], $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], $buffer);
fclose($pipes[0]);
while (!feof($pipes[1])) {
$newstring .= fgets($pipes[1], 1024);
}
fclose($pipes[1]);
// we don't currently use the return value
proc_close($process);
}
if ($options[2] == 1 || $options[2] == '2') {
$retstring = htmlspecialchars($newstring);
} else {
$retstring = $newstring;
}
return $retstring;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "External";
}
}

View File

@ -0,0 +1,62 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the formatted transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Formatted
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the formatted transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class FormattedTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays the contents of the column as-is, without running it'
. ' through htmlspecialchars(). That is, the column is assumed'
. ' to contain valid HTML.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return '<iframe srcdoc="'
. strtr($buffer, '"', '\'')
. '" sandbox=""></iframe>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Formatted";
}
}

View File

@ -0,0 +1,67 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the hex transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Hex
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the hex transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class HexTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays hexadecimal representation of data. Optional first'
. ' parameter specifies how often space will be added (defaults'
. ' to 2 nibbles).'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// possibly use a global transform and feed it with special options
$options = $this->getOptions($options, array('2'));
$options[0] = intval($options[0]);
if ($options[0] < 1) {
return bin2hex($buffer);
} else {
return chunk_split(bin2hex($buffer), $options[0], ' ');
}
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Hex";
}
}

View File

@ -0,0 +1,67 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the link transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
if (!defined('PHPMYADMIN')) {
exit;
}
/* For PMA_Transformation_globalHtmlReplace */
require_once 'libraries/transformations.lib.php';
/**
* Provides common methods for all of the link transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class ImageLinkTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a link to download this image.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// must disable the page loader, see
// https://wiki.phpmyadmin.net/pma/Page_loader#Bypassing_the_page_loader
return '<a class="disableAjax" target="_blank" rel="noopener noreferrer" href="transformation_wrapper.php'
. $options['wrapper_link'] . '" alt="[' . htmlspecialchars($buffer) . ']">[BLOB]</a>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "ImageLink";
}
}

View File

@ -0,0 +1,118 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the image upload input transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageUpload
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\IOTransformationsPlugin;
/**
* Provides common methods for all of the image upload transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class ImageUploadTransformationsPlugin extends IOTransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Image upload functionality which also displays a thumbnail.'
. ' The options are the width and height of the thumbnail'
. ' in pixels. Defaults to 100 X 100.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return $buffer;
}
/**
* Returns the html for input field to override default textarea.
* Note: Return empty string if default textarea is required.
*
* @param array $column column details
* @param int $row_id row number
* @param string $column_name_appendix the name attribute
* @param array $options transformation options
* @param string $value Current field value
* @param string $text_dir text direction
* @param int $tabindex tab index
* @param int $tabindex_for_value offset for the values tabindex
* @param int $idindex id index
*
* @return string the html for input field
*/
public function getInputHtml(
$column,
$row_id,
$column_name_appendix,
$options,
$value,
$text_dir,
$tabindex,
$tabindex_for_value,
$idindex
) {
$html = '';
$src = '';
if (!empty($value)) {
$html = '<input type="hidden" name="fields_prev' . $column_name_appendix
. '" value="' . bin2hex($value) . '"/>';
$html .= '<input type="hidden" name="fields' . $column_name_appendix
. '" value="' . bin2hex($value) . '"/>';
$src = 'transformation_wrapper.php' . $options['wrapper_link'];
}
$html .= '<img src="' . $src . '" width="'
. (isset($options[0]) ? intval($options[0]) : '100') . '" height="'
. (isset($options[1]) ? intval($options[1]) : '100') . '" alt="'
. __('Image preview here') . '"/>';
$html .= '<br/><input type="file" name="fields_upload'
. $column_name_appendix . '" accept="image/*" class="image-upload"/>';
return $html;
}
/**
* Returns the array of scripts (filename) required for plugin
* initialization and handling
*
* @return array javascripts to be included
*/
public function getScripts()
{
return array(
'transformations/image_upload.js',
);
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Image upload";
}
}

View File

@ -0,0 +1,79 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the inline transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Inline
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
if (!defined('PHPMYADMIN')) {
exit;
}
/* For PMA_Transformation_globalHtmlReplace */
require_once 'libraries/transformations.lib.php';
/**
* Provides common methods for all of the inline transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class InlineTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a clickable thumbnail. The options are the maximum width'
. ' and height in pixels. The original aspect ratio is preserved.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
if (PMA_IS_GD2) {
return '<a href="transformation_wrapper.php'
. $options['wrapper_link']
. '" rel="noopener noreferrer" target="_blank"><img src="transformation_wrapper.php'
. $options['wrapper_link'] . '&amp;resize=jpeg&amp;newWidth='
. (isset($options[0]) ? intval($options[0]) : '100') . '&amp;newHeight='
. (isset($options[1]) ? intval($options[1]) : 100)
. '" alt="[' . htmlspecialchars($buffer) . ']" border="0" /></a>';
} else {
return '<img src="transformation_wrapper.php'
. $options['wrapper_link']
. '" alt="[' . htmlspecialchars($buffer) . ']" width="320" height="240" />';
}
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Inline";
}
}

View File

@ -0,0 +1,63 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the long to IPv4 transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage LongToIPv4
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the long to IPv4 transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class LongToIPv4TransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Converts an (IPv4) Internet network address stored as a BIGINT'
. ' into a string in Internet standard dotted format.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
if ($buffer < 0 || $buffer > 4294967295) {
return htmlspecialchars($buffer);
}
return long2ip($buffer);
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Long To IPv4";
}
}

View File

@ -0,0 +1,64 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the prepend/append transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage PreApPend
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the prepend/append transformations plugins.
*
* @package PhpMyAdmin-Transformations
* @subpackage PreApPend
*/
abstract class PreApPendTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Prepends and/or Appends text to a string. First option is text'
. ' to be prepended, second is appended (enclosed in single'
. ' quotes, default empty string).'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$options = $this->getOptions($options, array('', ''));
//just prepend and/or append the options to the original text
return htmlspecialchars($options[0]) . htmlspecialchars($buffer)
. htmlspecialchars($options[1]);
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "PreApPend";
}
}

View File

@ -0,0 +1,71 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the regex validation input transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage RegexValidation
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\IOTransformationsPlugin;
/**
* Provides common methods for all of the regex validation
* input transformations plugins.
*
* @package PhpMyAdmin-Transformations
* @subpackage RegexValidation
*/
abstract class RegexValidationTransformationsPlugin extends IOTransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Validates the string using regular expression '
. 'and performs insert only if string matches it. '
. 'The first option is the Regular Expression.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// reset properties of object
$this->reset();
if (!empty($options[0]) && !preg_match($options[0], $buffer)) {
$this->success = false;
$this->error = sprintf(
__('Validation failed for the input string %s.'),
htmlspecialchars($buffer)
);
}
return $buffer;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Regex Validation";
}
}

View File

@ -0,0 +1,62 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the SQL transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the SQL transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class SQLTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Formats text as SQL query with syntax highlighting.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// see PMA_highlightSQL()
$result = PMA\libraries\Util::formatSql($buffer);
return $result;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "SQL";
}
}

View File

@ -0,0 +1,89 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the substring transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Substring
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Provides common methods for all of the substring transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class SubstringTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a part of a string. The first option is the number of'
. ' characters to skip from the beginning of the string (Default 0).'
. ' The second option is the number of characters to return (Default:'
. ' until end of string). The third option is the string to append'
. ' and/or prepend when truncation occurs (Default: "…").'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
// possibly use a global transform and feed it with special options
// further operations on $buffer using the $options[] array.
$options = $this->getOptions($options, array(0, 'all', '…'));
if ($options[1] != 'all') {
$newtext = mb_substr(
$buffer,
$options[0],
$options[1]
);
} else {
$newtext = mb_substr($buffer, $options[0]);
}
$length = mb_strlen($newtext);
$baselength = mb_strlen($buffer);
if ($length != $baselength) {
if ($options[0] != 0) {
$newtext = $options[2] . $newtext;
}
if (($length + $options[0]) != $baselength) {
$newtext .= $options[2];
}
}
return htmlspecialchars($newtext);
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Substring";
}
}

View File

@ -0,0 +1,100 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the text file upload input transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage TextFileUpload
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\IOTransformationsPlugin;
/**
* Provides common methods for all of the text file upload
* input transformations plugins.
*
* @package PhpMyAdmin-Transformations
* @subpackage TextFileUpload
*/
abstract class TextFileUploadTransformationsPlugin extends IOTransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'File upload functionality for TEXT columns. '
. 'It does not have a textarea for input.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return $buffer;
}
/**
* Returns the html for input field to override default textarea.
* Note: Return empty string if default textarea is required.
*
* @param array $column column details
* @param int $row_id row number
* @param string $column_name_appendix the name attribute
* @param array $options transformation options
* @param string $value Current field value
* @param string $text_dir text direction
* @param int $tabindex tab index
* @param int $tabindex_for_value offset for the values tabindex
* @param int $idindex id index
*
* @return string the html for input field
*/
public function getInputHtml(
$column,
$row_id,
$column_name_appendix,
$options,
$value,
$text_dir,
$tabindex,
$tabindex_for_value,
$idindex
) {
$html = '';
if (!empty($value)) {
$html = '<input type="hidden" name="fields_prev' . $column_name_appendix
. '" value="' . htmlspecialchars($value) . '"/>';
$html .= '<input type="hidden" name="fields' . $column_name_appendix
. '" value="' . htmlspecialchars($value) . '"/>';
}
$html .= '<input type="file" name="fields_upload'
. $column_name_appendix . '"/>';
return $html;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Text file upload";
}
}

View File

@ -0,0 +1,73 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the image link transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageLink
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
if (!defined('PHPMYADMIN')) {
exit;
}
/**
* Provides common methods for all of the image link transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class TextImageLinkTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays an image and a link; the column contains the filename. The'
. ' first option is a URL prefix like "https://www.example.com/". The'
. ' second and third options are the width and the height in pixels.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$url = (isset($options[0]) ? $options[0] : '') . $buffer;
/* Do not allow javascript links */
if (! PMA_checkLink($url, true, true)) {
return htmlspecialchars($url);
}
return '<a href="' . htmlspecialchars($url)
. '" rel="noopener noreferrer" target="_blank"><img src="' . htmlspecialchars($url)
. '" border="0" width="' . (isset($options[1]) ? intval($options[1]) : 100)
. '" height="' . (isset($options[2]) ? intval($options[2]) : 50) . '" />'
. htmlspecialchars($buffer) . '</a>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "Image Link";
}
}

View File

@ -0,0 +1,75 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Abstract class for the link transformations plugins
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
namespace PMA\libraries\plugins\transformations\abs;
use PMA\libraries\plugins\TransformationsPlugin;
if (!defined('PHPMYADMIN')) {
exit;
}
/**
* Provides common methods for all of the link transformations plugins.
*
* @package PhpMyAdmin
*/
abstract class TextLinkTransformationsPlugin extends TransformationsPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Displays a link; the column contains the filename. The first option'
. ' is a URL prefix like "https://www.example.com/". The second option'
. ' is a title for the link.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$url = (isset($options[0]) ? $options[0] : '') . ((isset($options[2]) && $options[2]) ? '' : $buffer);
/* Do not allow javascript links */
if (! PMA_checkLink($url, true, true)) {
return htmlspecialchars($url);
}
return '<a href="'
. htmlspecialchars($url)
. '" title="'
. htmlspecialchars(isset($options[1]) ? $options[1] : '')
. '" target="_blank" rel="noopener noreferrer">'
. htmlspecialchars(isset($options[1]) ? $options[1] : $buffer)
. '</a>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "TextLink";
}
}

View File

@ -0,0 +1,41 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Image JPEG Upload Input Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageUpload
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\ImageUploadTransformationsPlugin;
/**
* Handles the image upload input transformation for JPEG.
* Has two option: width & height of the thumbnail
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageUpload
*/
class Image_JPEG_Upload extends ImageUploadTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Image";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "JPEG";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain File Upload Input Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage TextFileUpload
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\TextFileUploadTransformationsPlugin;
/**
* Handles the input text file upload transformation for text plain.
*
* @package PhpMyAdmin-Transformations
* @subpackage TextFileUpload
*/
class Text_Plain_FileUpload extends TextFileUploadTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,138 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Handles the IPv4/IPv6 to binary transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage IPToBinary
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\IOTransformationsPlugin;
/**
* Handles the IPv4/IPv6 to binary transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage IPToBinary
*/
class Text_Plain_Iptobinary extends IOTransformationsPlugin
{
/**
* Gets the transformation description of the plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Converts an Internet network address in (IPv4/IPv6) format to binary'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed. a binary string containing
* an IP address, as returned from MySQL's INET6_ATON
* function
* @param array $options transformation options
* @param string $meta meta information
*
* @return string IP address
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$val = @inet_pton($buffer);
if ($val !== false) {
return $val;
}
return $buffer;
}
/**
* Returns the html for input field to override default textarea.
* Note: Return empty string if default textarea is required.
*
* @param array $column column details
* @param int $row_id row number
* @param string $column_name_appendix the name attribute
* @param array $options transformation options
* @param string $value Current field value
* @param string $text_dir text direction
* @param int $tabindex tab index
* @param int $tabindex_for_value offset for the values tabindex
* @param int $idindex id index
*
* @return string the html for input field
*/
public function getInputHtml(
$column,
$row_id,
$column_name_appendix,
$options,
$value,
$text_dir,
$tabindex,
$tabindex_for_value,
$idindex
) {
$html = '';
$val = '';
if (!empty($value)) {
$length = strlen($value);
if ($length == 4 || $length == 16) {
$ip = @inet_ntop(pack('A' . $length, $value));
if ($ip !== false) {
$val = $ip;
}
}
$html = '<input type="hidden" name="fields_prev' . $column_name_appendix
. '" value="' . htmlspecialchars($val) . '"/>';
}
$class = 'transform_IPToBin';
$html .= '<input type="text" name="fields' . $column_name_appendix . '"'
. ' value="' . htmlspecialchars($val) . '"'
. ' size="40"'
. ' dir="' . $text_dir . '"'
. ' class="' . $class . '"'
. ' id="field_' . ($idindex) . '_3"'
. ' tabindex="' . ($tabindex + $tabindex_for_value) . '">'
. '</input>';
return $html;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the plugin
*
* @return string
*/
public static function getName()
{
return "IPv4/IPv6 To Binary";
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,82 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* JSON editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage JSON
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\CodeMirrorEditorTransformationPlugin;
/**
* JSON editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage JSON
*/
class Text_Plain_JsonEditor extends CodeMirrorEditorTransformationPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Syntax highlighted CodeMirror editor for JSON.'
);
}
/**
* Returns the array of scripts (filename) required for plugin
* initialization and handling
*
* @return array javascripts to be included
*/
public function getScripts()
{
$scripts = array();
if ($GLOBALS['cfg']['CodemirrorEnable']) {
$scripts[] = 'codemirror/lib/codemirror.js';
$scripts[] = 'codemirror/mode/javascript/javascript.js';
$scripts[] = 'transformations/json_editor.js';
}
return $scripts;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "JSON";
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,41 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Regex Validation Input Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage RegexValidation
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\RegexValidationTransformationsPlugin;
/**
* Handles the input regex validation transformation for text plain.
* Has one option: the regular expression
*
* @package PhpMyAdmin-Transformations
* @subpackage RegexValidation
*/
class Text_Plain_RegexValidation extends RegexValidationTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,82 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* SQL editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\CodeMirrorEditorTransformationPlugin;
/**
* SQL editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
class Text_Plain_SqlEditor extends CodeMirrorEditorTransformationPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Syntax highlighted CodeMirror editor for SQL.'
);
}
/**
* Returns the array of scripts (filename) required for plugin
* initialization and handling
*
* @return array javascripts to be included
*/
public function getScripts()
{
$scripts = array();
if ($GLOBALS['cfg']['CodemirrorEnable']) {
$scripts[] = 'codemirror/lib/codemirror.js';
$scripts[] = 'codemirror/mode/sql/sql.js';
$scripts[] = 'transformations/sql_editor.js';
}
return $scripts;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "SQL";
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,82 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* XML (and HTML) editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage XML
*/
namespace PMA\libraries\plugins\transformations\input;
use PMA\libraries\plugins\transformations\abs\CodeMirrorEditorTransformationPlugin;
/**
* XML (and HTML) editing with syntax highlighted CodeMirror editor
*
* @package PhpMyAdmin-Transformations
* @subpackage XML
*/
class Text_Plain_XmlEditor extends CodeMirrorEditorTransformationPlugin
{
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Syntax highlighted CodeMirror editor for XML (and HTML).'
);
}
/**
* Returns the array of scripts (filename) required for plugin
* initialization and handling
*
* @return array javascripts to be included
*/
public function getScripts()
{
$scripts = array();
if ($GLOBALS['cfg']['CodemirrorEnable']) {
$scripts[] = 'codemirror/lib/codemirror.js';
$scripts[] = 'codemirror/mode/xml/xml.js';
$scripts[] = 'transformations/xml_editor.js';
}
return $scripts;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "XML";
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Application OctetStream Download Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Download
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\DownloadTransformationsPlugin;
/**
* Handles the download transformation for application octetstream
*
* @package PhpMyAdmin-Transformations
* @subpackage Download
*/
class Application_Octetstream_Download extends DownloadTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Application";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "OctetStream";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Application OctetStream Hex Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Hex
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\HexTransformationsPlugin;
/**
* Handles the hex transformation for application octetstream
*
* @package PhpMyAdmin-Transformations
* @subpackage Hex
*/
class Application_Octetstream_Hex extends HexTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Application";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "OctetStream";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Image JPEG Inline Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Inline
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\InlineTransformationsPlugin;
/**
* Handles the inline transformation for image jpeg
*
* @package PhpMyAdmin-Transformations
* @subpackage Inline
*/
class Image_JPEG_Inline extends InlineTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Image";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "JPEG";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Image JPEG Link Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\ImageLinkTransformationsPlugin;
/**
* Handles the link transformation for image jpeg
*
* @package PhpMyAdmin-Transformations
* @subpackage Link
*/
class Image_JPEG_Link extends ImageLinkTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Image";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "JPEG";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Image PNG Inline Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Inline
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\InlineTransformationsPlugin;
/**
* Handles the inline transformation for image png
*
* @package PhpMyAdmin-Transformations
* @subpackage Inline
*/
class Image_PNG_Inline extends InlineTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Image";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "PNG";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Blob SQL Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\SQLTransformationsPlugin;
/**
* Handles the sql transformation for blob data
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
class Text_Octetstream_Sql extends SQLTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Octetstream";
}
}

View File

@ -0,0 +1,90 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Handles the binary to IPv4/IPv6 transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage BinaryToIP
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\TransformationsPlugin;
/**
* Handles the binary to IPv4/IPv6 transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage BinaryToIP
*/
class Text_Plain_Binarytoip extends TransformationsPlugin
{
/**
* Gets the transformation description of the plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Converts an Internet network address stored as a binary string'
. ' into a string in Internet standard (IPv4/IPv6) format.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed. a binary string containing
* an IP address, as returned from MySQL's INET6_ATON
* function
* @param array $options transformation options
* @param string $meta meta information
*
* @return string IP address
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
$length = strlen($buffer);
if ($length == 4 || $length == 16) {
$val = @inet_ntop(pack('A' . $length, $buffer));
if ($val !== false) {
return $val;
}
}
return $buffer;
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the transformation name of the plugin
*
* @return string
*/
public static function getName()
{
return "Binary To IPv4/IPv6";
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,42 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Bool2Text Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Bool2Text
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\Bool2TextTransformationsPlugin;
/**
* Handles the Boolean to Text transformation for text plain.
* Has one option: the output format (default 'T/F')
* or 'Y/N'
*
* @package PhpMyAdmin-Transformations
* @subpackage Bool2Text
*/
class Text_Plain_Bool2Text extends Bool2TextTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Date Format Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage DateFormat
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\DateFormatTransformationsPlugin;
/**
* Handles the date format transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage DateFormat
*/
class Text_Plain_Dateformat extends DateFormatTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain External Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage External
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\ExternalTransformationsPlugin;
/**
* Handles the external transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage External
*/
class Text_Plain_External extends ExternalTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Formatted Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage Formatted
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\FormattedTransformationsPlugin;
/**
* Handles the formatted transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage Formatted
*/
class Text_Plain_Formatted extends FormattedTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,40 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain Image Link Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageLink
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\plugins\transformations\abs\TextImageLinkTransformationsPlugin;
/**
* Handles the image link transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage ImageLink
*/
class Text_Plain_Imagelink extends TextImageLinkTransformationsPlugin
{
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,98 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain JSON Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA;
use PMA\libraries\plugins\TransformationsPlugin;
use PMA\libraries\Response;
/**
* Handles the json transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage JSON
*/
class Text_Plain_Json extends TransformationsPlugin
{
/**
* No-arg constructor
*/
public function __construct()
{
if (!empty($GLOBALS['cfg']['CodemirrorEnable'])) {
$response = PMA\libraries\Response::getInstance();
$scripts = $response->getHeader()
->getScripts();
$scripts->addFile('codemirror/lib/codemirror.js');
$scripts->addFile('codemirror/mode/javascript/javascript.js');
$scripts->addFile('codemirror/addon/runmode/runmode.js');
$scripts->addFile('transformations/json.js');
}
}
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Formats text as JSON with syntax highlighting.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return '<code class="json"><pre>' . "\n"
. htmlspecialchars($buffer) . "\n"
. '</pre></code>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "JSON";
}
}

View File

@ -0,0 +1,57 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain SQL Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA\libraries\Response;
use PMA\libraries\plugins\transformations\abs\SQLTransformationsPlugin;
/**
* Handles the sql transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
class Text_Plain_Sql extends SQLTransformationsPlugin
{
/**
* No-arg constructor
*/
public function __construct()
{
if (!empty($GLOBALS['cfg']['CodemirrorEnable'])) {
$response = Response::getInstance();
$scripts = $response->getHeader()
->getScripts();
$scripts->addFile('codemirror/lib/codemirror.js');
$scripts->addFile('codemirror/mode/sql/sql.js');
$scripts->addFile('codemirror/addon/runmode/runmode.js');
$scripts->addFile('function.js');
}
}
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
}

View File

@ -0,0 +1,98 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Text Plain XML Transformations plugin for phpMyAdmin
*
* @package PhpMyAdmin-Transformations
* @subpackage SQL
*/
namespace PMA\libraries\plugins\transformations\output;
use PMA;
use PMA\libraries\plugins\TransformationsPlugin;
use PMA\libraries\Response;
/**
* Handles the XML transformation for text plain
*
* @package PhpMyAdmin-Transformations
* @subpackage XML
*/
class Text_Plain_Xml extends TransformationsPlugin
{
/**
* No-arg constructor
*/
public function __construct()
{
if (!empty($GLOBALS['cfg']['CodemirrorEnable'])) {
$response = PMA\libraries\Response::getInstance();
$scripts = $response->getHeader()
->getScripts();
$scripts->addFile('codemirror/lib/codemirror.js');
$scripts->addFile('codemirror/mode/xml/xml.js');
$scripts->addFile('codemirror/addon/runmode/runmode.js');
$scripts->addFile('transformations/xml.js');
}
}
/**
* Gets the transformation description of the specific plugin
*
* @return string
*/
public static function getInfo()
{
return __(
'Formats text as XML with syntax highlighting.'
);
}
/**
* Does the actual work of each specific transformations plugin.
*
* @param string $buffer text to be transformed
* @param array $options transformation options
* @param string $meta meta information
*
* @return string
*/
public function applyTransformation($buffer, $options = array(), $meta = '')
{
return '<code class="xml"><pre>' . "\n"
. htmlspecialchars($buffer) . "\n"
. '</pre></code>';
}
/* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
/**
* Gets the plugin`s MIME type
*
* @return string
*/
public static function getMIMEType()
{
return "Text";
}
/**
* Gets the plugin`s MIME subtype
*
* @return string
*/
public static function getMIMESubtype()
{
return "Plain";
}
/**
* Gets the transformation name of the specific plugin
*
* @return string
*/
public static function getName()
{
return "XML";
}
}