using phrets to create mysql tables from rets for torontomls.net
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
date_default_timezone_set('America/New_York'); | |
require_once("../vendor/autoload.php"); | |
try { | |
$config = new \PHRETS\Configuration; | |
$config->setLoginUrl('http://rets.torontomls.net:6103/rets-treb3pv/server/login') | |
->setUsername('Username') | |
->setPassword('Password') | |
->setUserAgent("UserAgent") | |
->setUserAgentPassword("UserAgent_Password") | |
->setRetsVersion('1.7'); | |
$rets = new \PHRETS\Session($config); | |
$connect = $rets->Login(); | |
if (!$connect) { | |
print_r("Error connect:".$rets->Error()); | |
} | |
echo "+ Connect: ".$connect; | |
echo "<br>"; | |
} catch (Exception $e) { | |
echo 'Caught exception: ', $e->getMessage(), "\n"; | |
} | |
$system = $rets->GetSystemMetadata(); | |
$resource = 'Property'; | |
$class = 'CondoProperty'; | |
$rets_metadata = $rets->GetTableMetadata($resource, $class); | |
$table_name = "rets_".strtolower($resource)."_".strtolower($class); | |
echo $table_name; | |
$con = mysqli_connect('localhost','admin','123456','pwa'); | |
if ($con->connect_error) { | |
die("Connection failed: " . $con->connect_error); | |
} | |
$sql = create_table_sql_from_metadata($table_name, $rets_metadata, 'ml_num'); | |
if (!mysqli_query($con, $sql)) { | |
echo "Error: <br/>" . mysqli_error($con)."<br/>"; | |
} | |
mysqli_close($con); | |
function create_table_sql_from_metadata($table_name, $rets_metadata, $key_field, $field_prefix = "") { | |
$sql_query = "CREATE TABLE ".$table_name." (\n"; | |
foreach ($rets_metadata as $field) { | |
$cleaned_comment = addslashes($field->getLongName()); | |
$sql_make = "\t`" . $field_prefix . $field->getSystemName()."` "; | |
if ($field->getInterpretation() == "LookupMulti") { | |
$sql_make .= "TEXT"; | |
} elseif ($field->getInterpretation() == "Lookup") { | |
$sql_make .= "VARCHAR(50)"; | |
} elseif ($field->getDataType() == "Int" || $field->getDataType() == "Small" || $field->getDataType() == "Tiny") { | |
$sql_make .= "INT(".$field->getMaximumLength().")"; | |
} elseif ($field->getDataType() == "Long") { | |
$sql_make .= "BIGINT(".$field->getMaximumLength().")"; | |
} elseif ($field->getDataType() == "DateTime") { | |
$sql_make .= "DATETIME default '0000-00-00 00:00:00' NOT NULL"; | |
} elseif ($field->getDataType() == "Character" && $field->getMaximumLength() <= 255) { | |
$sql_make .= "VARCHAR(".$field->getMaximumLength().")"; | |
} elseif ($field->getDataType() == "Character" && $field->getMaximumLength() > 255) { | |
$sql_make .= "TEXT"; | |
} elseif ($field->getDataType() == "Decimal") { | |
$pre_point = ($field->getMaximumLength() - $field->getPrecision()); | |
$post_point = !empty($field->getPrecision()) ? $field->getPrecision() : 0; | |
$sql_make .= "DECIMAL({$field->getMaximumLength()},{$post_point})"; | |
} elseif ($field->getDataType() == "Boolean") { | |
$sql_make .= "CHAR(1)"; | |
} elseif ($field->getDataType() == "Date") { | |
$sql_make .= "TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL"; | |
} elseif ($field->getDataType() == "Time") { | |
$sql_make .= "TIME default '00:00:00' NOT NULL"; | |
} else { | |
$sql_make .= "VARCHAR(255)"; | |
} | |
$sql_make .= " COMMENT '".$cleaned_comment."',"; | |
$sql_query .= $sql_make; | |
} | |
$sql_query .= "PRIMARY KEY(`".$field_prefix.$key_field."`) )"; | |
return $sql_query; | |
} |
0 Comments:
Post a Comment