Fix status conversion

This commit is contained in:
Romain Neutron
2012-01-03 13:39:20 +01:00
parent 008b1d66f6
commit de91fc5c0e
2 changed files with 84 additions and 29 deletions

View File

@@ -479,6 +479,15 @@ class databox_status
$conn = connection::getPDOConnection();
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' & 0b' . trim($stat2) . ') as result';
@@ -501,6 +510,15 @@ class databox_status
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' & ~0b' . trim($stat2) . ') as result';
$stmt = $conn->prepare($sql);
@@ -522,6 +540,15 @@ class databox_status
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' | 0b' . trim($stat2) . ') as result';
$stmt = $conn->prepare($sql);
@@ -539,17 +566,24 @@ class databox_status
public static function dec2bin($status)
{
$status = (string) $status;
if(!ctype_digit($status))
{
throw new \Exception('Non-decimal value');
}
$conn = connection::getPDOConnection();
$status = '0';
$sql = 'select bin(' . ((int) $status) . ') as result';
$sql = 'select bin(' . $status . ') as result';
$stmt = $conn->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$status = '0';
if ($row)
{
$status = $row['result'];
@@ -560,17 +594,28 @@ class databox_status
public static function hex2bin($status)
{
$status = (string) $status;
if(substr($status, 0, 2) === '0x')
{
$status = substr($status, 2);
}
if(!ctype_xdigit($status))
{
throw new \Exception('Non-hexadecimal value');
}
$conn = connection::getPDOConnection();
$status = '0';
$sql = 'select bin(0x' . trim($status) . ') as result';
$sql = 'select BIN( CAST( 0x'.trim($status).' AS UNSIGNED ) ) as result';
$stmt = $conn->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$status = '0';
if ($row)
{
$status = $row['result'];