'max' => 1,
),
-
'json-person' => array(
'desc' => 'Person JSON file',
'default' => '',
var $cli = false;
+
+ var $local_base_url = false;
+
function getAuth() {
return true;
}
- function get($args, $opts)
+ function get($args, $opts=array())
{
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
$this->checkSystem();
+
+ if (class_exists('PDO_DataObjects_Introspection')) {
+ PDO_DataObject_Introspection::$cache = array();
+ }
+
+ HTML_FlexyFramework::get()->generateDataobjectsCache(true);
$ff = HTML_FlexyFramework::get();
+ if(!isset($ff->Pman) || !isset($ff->Pman['local_base_url'])){
+ die("Please setup local_base_url");
+ }
+
+ $this->local_base_url = $ff->Pman['local_base_url'];
+
if(!empty($ff->Core_Notify)){
// require_once 'Pman/Core/NotifySmtpCheck.php';
// $x = new Pman_Core_NotifySmtpCheck();
$this->checkOpts($opts);
- $this->runExtensions(); // do this first, so the innodb change + utf8 fixes column max sizes
+
+ // do this first, so the innodb change + utf8 fixes column max sizes
+
+ // this will trigger errors about freetext indexes - we will have to remove them manually.?
+ // otherwise we need to do an sql query to find them, then remove them (not really worth it as it only affects really old code..)
+
+ $this->runExtensions();
if (empty($opts['data-only'])) {
$this->runUpdateModulesData();
-
if (!empty($opts['add-company']) && !in_array('Core', $this->disabled)) {
// make sure we have a good cache...?
- DB_DataObject::factory('companies')->initCompanies($this, $opts);
+ DB_DataObject::factory('core_company')->initCompanies($this, $opts);
}
$this->runExtensions();
-
+
+ $this->generateDataobjectsCache();
+
}
function output() {
$ff = HTML_Flexyframework::get();
- $dburl = parse_url($ff->DB_DataObject['database']);
+ $dburl = parse_url($ff->database); // used to be DB_DataObject['database'] - but not portable to PDO
//$this->{'import' . $url['scheme']}($url);
$dbtype = $dburl['scheme'];
+
+
$dirmethod = 'import' . $dburl['scheme'] . 'dir';
$this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/sql");
$this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/{$dbtype}");
-
+
if (!empty($this->opts['init']) && file_exists($this->rootDir. "/Pman/$m/{$dbtype}.initdata")) {
+ if (class_exists('PDO_DataObjects_Introspection')) {
+ PDO_DataObject_Introspection::$cache = array();
+ }
HTML_FlexyFramework::get()->generateDataobjectsCache(true);
$this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/{$dbtype}.initdata");
}
+
}
*
*
*/
-
+ function importmysqlidir($dburl, $dir) {
+ return $this->importmysqldir($dburl, $dir);
+ }
function importmysqldir($dburl, $dir)
{
function runUpdateModulesData()
{
+ if (class_exists('PDO_DataObjects_Introspection')) {
+ PDO_DataObject_Introspection::$cache = array();
+ }
HTML_FlexyFramework::get()->generateDataobjectsCache(true);
if(!in_array('Core', $this->disabled)){
echo "Running jsonImportFromArray\n";
Pman_Core_UpdateDatabase::jsonImportFromArray($this->opts);
-
+
echo "Running updateData on modules\n";
// runs core...
echo "$module\n";
$x->updateData();
}
-
+
}
function updateDataGroups()
{
- $groups = DB_DataObject::factory('groups');
+ $groups = DB_DataObject::factory('core_group');
$groups->initGroups();
$groups->initDatabase($this,array(
{
// fix comptypes enums..
- $c = DB_DataObject::Factory('Companies');
+ $c = DB_DataObject::Factory('core_company');
$c->selectAdd();
$c->selectAdd('distinct(comptype) as comptype');
$c->whereAdd("comptype != ''");
$c->initEnums($ctb);
//DB_DataObject::debugLevel(1);
// fix comptypeid
- $c = DB_DataObject::Factory('Companies');
+ $c = DB_DataObject::Factory('core_company');
$c->query("
- UPDATE Companies
+ UPDATE {$c->tableName()}
SET
- comptype_id = (SELECT id FROM core_enum where etype='comptype' and name=Companies.comptype LIMIT 1)
+ comptype_id = (SELECT id FROM core_enum where etype='comptype' and name={$c->tableName()}.comptype LIMIT 1)
WHERE
comptype_id = 0
AND
if (empty($data['bcc_group'])) {
$this->jerr("missing bcc_group for template $name");
}
- $g = DB_DataObject::Factory('Groups')->lookup('name',$data['bcc_group']);
+ $g = DB_DataObject::Factory('core_group')->lookup('name',$data['bcc_group']);
if (empty($g->id)) {
$this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
function updateData()
{
// fill i18n data..
+ if (class_exists('PDO_DataObjects_Introspection')) {
+ PDO_DataObject_Introspection::$cache = array();
+ }
HTML_FlexyFramework::get()->generateDataobjectsCache(true);
$this->updateDataEnums();
$this->updateDataGroups();
}
$db = DB_DataObject::factory('core_enum');
- $db->query("show variables like 'sql_mode'");
+ $db->query("select version() as version");
$db->fetch();
- $modes = explode(",", $db->value);
-
- if(
- in_array('NO_ZERO_IN_DATE', $modes) ||
- in_array('NO_ZERO_DATE', $modes) ||
- !in_array('ALLOW_INVALID_DATES', $modes)
- ){
- die("Error: set innodb_file_per_table = 1 in my.cnf\n\n");
+ if (version_compare($db->version, '5.7', '>=' )) {
+
+ $db = DB_DataObject::factory('core_enum');
+ $db->query("show variables like 'sql_mode'");
+ $db->fetch();
+
+ $modes = explode(",", $db->Value);
+
+ // these are 'new' problems with mysql.
+ if(
+ in_array('NO_ZERO_IN_DATE', $modes) ||
+ in_array('NO_ZERO_DATE', $modes) ||
+ in_array('STRICT_TRANS_TABLES', $modes) ||
+ !in_array('ALLOW_INVALID_DATES', $modes)
+ ){
+ die("Error: set sql_mode include 'ALLOW_INVALID_DATES', remove 'NO_ZERO_IN_DATE' AND 'STRICT_TRANS_TABLES' AND 'NO_ZERO_DATE' in my.cnf\n\n");
+ }
}
$done_check = true;;
$ff = HTML_Flexyframework::get();
- $dburl = parse_url($ff->DB_DataObject['database']);
+ $dburl = parse_url($ff->database);
$dbtype = $dburl['scheme'];
$fail = true;
}
if ($res) {
- $this->jerr("Missing these programs - need installing\n" . implode("\n",$res));
+ die("Missing these programs - need installing\n" . implode("\n",$res). "\n");
}
foreach($pref as $r) {
if (!System::which($r)) {
}
+ function generateDataobjectsCache()
+ {
+ $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
+
+ $this->curl($url);
+
+ }
+
+ function curl($url, $request = array(), $method = 'GET')
+ {
+ if($method == 'GET'){
+ $request = http_build_query($request);
+ $url = $url . "?" . $request;
+ }
+
+ $ch = curl_init($url);
+
+ if ($method == 'POST') {
+
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
+
+ } else {
+
+ curl_setopt($ch, CURLOPT_HTTPHEADER,
+ array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($request)));
+
+ }
+
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+ curl_setopt($ch, CURLOPT_HEADER, false);
+ curl_setopt($ch, CURLOPT_VERBOSE, 1);
+ curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+
+ $response = curl_exec($ch);
+
+ curl_close($ch);
+
+ return $response;
+ }
+
+
}
\ No newline at end of file