Friday, July 6, 2018

PHRETS create mysql tables for torontomls.net

using phrets to create mysql tables from rets for torontomls.net

<?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