diff options
Diffstat (limited to 'includes/media/XMPValidate.php')
-rw-r--r-- | includes/media/XMPValidate.php | 193 |
1 files changed, 96 insertions, 97 deletions
diff --git a/includes/media/XMPValidate.php b/includes/media/XMPValidate.php index 5ce3c00b..f98f0b57 100644 --- a/includes/media/XMPValidate.php +++ b/includes/media/XMPValidate.php @@ -22,32 +22,32 @@ */ /** -* This contains some static methods for -* validating XMP properties. See XMPInfo and XMPReader classes. -* -* Each of these functions take the same parameters -* * an info array which is a subset of the XMPInfo::items array -* * A value (passed as reference) to validate. This can be either a -* simple value or an array -* * A boolean to determine if this is validating a simple or complex values -* -* It should be noted that when an array is being validated, typically the validation -* function is called once for each value, and then once at the end for the entire array. -* -* These validation functions can also be used to modify the data. See the gps and flash one's -* for example. -* -* @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf starting at pg 28 -* @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf starting at pg 11 -*/ + * This contains some static methods for + * validating XMP properties. See XMPInfo and XMPReader classes. + * + * Each of these functions take the same parameters + * * an info array which is a subset of the XMPInfo::items array + * * A value (passed as reference) to validate. This can be either a + * simple value or an array + * * A boolean to determine if this is validating a simple or complex values + * + * It should be noted that when an array is being validated, typically the validation + * function is called once for each value, and then once at the end for the entire array. + * + * These validation functions can also be used to modify the data. See the gps and flash one's + * for example. + * + * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf starting at pg 28 + * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf starting at pg 11 + */ class XMPValidate { /** - * function to validate boolean properties ( True or False ) - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate boolean properties ( True or False ) + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateBoolean( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -61,12 +61,12 @@ class XMPValidate { } /** - * function to validate rational properties ( 12/10 ) - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate rational properties ( 12/10 ) + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateRational( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -80,23 +80,23 @@ class XMPValidate { } /** - * function to validate rating properties -1, 0-5 - * - * if its outside of range put it into range. - * - * @see MWG spec - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate rating properties -1, 0-5 + * + * if its outside of range put it into range. + * + * @see MWG spec + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateRating( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc return; } if ( !preg_match( '/^[-+]?\d*(?:\.?\d*)$/D', $val ) - || !is_numeric($val) - ) { + || !is_numeric( $val ) + ) { wfDebugLog( 'XMP', __METHOD__ . " Expected rating but got $val" ); $val = null; return; @@ -106,12 +106,12 @@ class XMPValidate { // We do < 0 here instead of < -1 here, since // the values between 0 and -1 are also illegal // as -1 is meant as a special reject rating. - wfDebugLog( 'XMP', __METHOD__ . " Rating too low, setting to -1 (Rejected)"); + wfDebugLog( 'XMP', __METHOD__ . " Rating too low, setting to -1 (Rejected)" ); $val = '-1'; return; } if ( $nVal > 5 ) { - wfDebugLog( 'XMP', __METHOD__ . " Rating too high, setting to 5"); + wfDebugLog( 'XMP', __METHOD__ . " Rating too high, setting to 5" ); $val = '5'; return; } @@ -119,12 +119,12 @@ class XMPValidate { } /** - * function to validate integers - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate integers + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateInteger( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -138,13 +138,13 @@ class XMPValidate { } /** - * function to validate properties with a fixed number of allowed - * choices. (closed choice) - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate properties with a fixed number of allowed + * choices. (closed choice) + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateClosed( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -153,7 +153,7 @@ class XMPValidate { //check if its in a numeric range $inRange = false; - if ( isset( $info['rangeLow'] ) + if ( isset( $info['rangeLow'] ) && isset( $info['rangeHigh'] ) && is_numeric( $val ) && ( intval( $val ) <= $info['rangeHigh'] ) @@ -169,12 +169,12 @@ class XMPValidate { } /** - * function to validate and modify flash structure - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate and modify flash structure + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateFlash( $info, &$val, $standalone ) { if ( $standalone ) { // this only validates flash structs, not individual properties @@ -198,17 +198,17 @@ class XMPValidate { } /** - * function to validate LangCode properties ( en-GB, etc ) - * - * This is just a naive check to make sure it somewhat looks like a lang code. - * - * @see rfc 3066 - * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf page 30 (section 8.2.2.5) - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate LangCode properties ( en-GB, etc ) + * + * This is just a naive check to make sure it somewhat looks like a lang code. + * + * @see rfc 3066 + * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf page 30 (section 8.2.2.5) + * + * @param array $info information about current property + * @param &$val Mixed current value to validate + * @param $standalone Boolean if this is a simple property or array + */ public static function validateLangCode( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -223,22 +223,22 @@ class XMPValidate { } /** - * function to validate date properties, and convert to (partial) Exif format. - * - * Dates can be one of the following formats: - * YYYY - * YYYY-MM - * YYYY-MM-DD - * YYYY-MM-DDThh:mmTZD - * YYYY-MM-DDThh:mm:ssTZD - * YYYY-MM-DDThh:mm:ss.sTZD - * - * @param $info Array information about current property - * @param &$val Mixed current value to validate. Converts to TS_EXIF as a side-effect. - * in cases where there's only a partial date, it will give things like - * 2011:04. - * @param $standalone Boolean if this is a simple property or array - */ + * function to validate date properties, and convert to (partial) Exif format. + * + * Dates can be one of the following formats: + * YYYY + * YYYY-MM + * YYYY-MM-DD + * YYYY-MM-DDThh:mmTZD + * YYYY-MM-DDThh:mm:ssTZD + * YYYY-MM-DDThh:mm:ss.sTZD + * + * @param array $info information about current property + * @param &$val Mixed current value to validate. Converts to TS_EXIF as a side-effect. + * in cases where there's only a partial date, it will give things like + * 2011:04. + * @param $standalone Boolean if this is a simple property or array + */ public static function validateDate( $info, &$val, $standalone ) { if ( !$standalone ) { // this only validates standalone properties, not arrays, etc @@ -247,8 +247,8 @@ class XMPValidate { $res = array(); if ( !preg_match( /* ahh! scary regex... */ - '/^([0-3]\d{3})(?:-([01]\d)(?:-([0-3]\d)(?:T([0-2]\d):([0-6]\d)(?::([0-6]\d)(?:\.\d+)?)?([-+]\d{2}:\d{2}|Z)?)?)?)?$/D' - , $val, $res) + '/^([0-3]\d{3})(?:-([01]\d)(?:-([0-3]\d)(?:T([0-2]\d):([0-6]\d)(?::([0-6]\d)(?:\.\d+)?)?([-+]\d{2}:\d{2}|Z)?)?)?)?$/D', + $val, $res ) ) { wfDebugLog( 'XMP', __METHOD__ . " Expected date but got $val" ); $val = null; @@ -295,7 +295,6 @@ class XMPValidate { return; } - // Extra check for empty string necessary due to TZ but no second case. $stripSeconds = false; if ( !isset( $res[6] ) || $res[6] === '' ) { @@ -331,7 +330,7 @@ class XMPValidate { * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf * section 1.2.7.4 on page 23 * - * @param $info Array unused (info about prop) + * @param array $info unused (info about prop) * @param &$val String GPS string in either DDD,MM,SSk or * or DDD,MM.mmk form * @param $standalone Boolean if its a simple prop (should always be true) @@ -342,7 +341,7 @@ class XMPValidate { } $m = array(); - if ( preg_match( + if ( preg_match( '/(\d{1,3}),(\d{1,2}),(\d{1,2})([NWSE])/D', $val, $m ) ) { @@ -354,7 +353,7 @@ class XMPValidate { } $val = $coord; return; - } elseif ( preg_match( + } elseif ( preg_match( '/(\d{1,3}),(\d{1,2}(?:.\d*)?)([NWSE])/D', $val, $m ) ) { @@ -367,7 +366,7 @@ class XMPValidate { return; } else { - wfDebugLog( 'XMP', __METHOD__ + wfDebugLog( 'XMP', __METHOD__ . " Expected GPSCoordinate, but got $val." ); $val = null; return; |