'max' => 1,
),
-
'json-person' => array(
'desc' => 'Person JSON file',
'default' => '',
$this->authUser = $au;
return true;
}
-
+
function get($args, $opts)
{
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
-// $this->checkSystem();
+ $this->checkSystem();
$ff = HTML_FlexyFramework::get();
if(!empty($ff->Core_Notify)){
- require_once 'Pman/Core/NotifySmtpCheck.php';
- $x = new Pman_Core_NotifySmtpCheck();
- $x->check();
+// require_once 'Pman/Core/NotifySmtpCheck.php';
+// $x = new Pman_Core_NotifySmtpCheck();
+// $x->check();
}
- EXIT;
-
$this->disabled = explode(',', $ff->disable);
//$this->fixSequencesPgsql();exit;
$this->checkOpts($opts);
+
+ // 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->importSQL();
}
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();
$ar = $this->modulesList();
+
foreach($ar as $m) {
if(in_array($m, $this->disabled)){
continue;
}
- $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ;
+ $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ." 2>&1" ;
echo basename($dir).'/'. basename($fn) . '::' . $cmd. ($this->cli ? "\n" : "<BR>\n");
- passthru($cmd);
+
+ $fp = popen($cmd, "r");
+ while(!feof($fp))
+ {
+ // send the current file part to the browser
+ $line = trim(fgets($fp, 1024));
+ if (empty($line)) {
+ continue;
+ }
+ $matches = array();
+ if (!preg_match('/^ERROR\s+([0-9]+)/', $line, $matches)) {
+ echo " ---- {$line}\n"; flush();
+ continue;
+ }
+ $continue =0;
+ switch($matches[1]) {
+ case 1017: // cause by renaming table -- old one does not exist..
+ case 1050: // create tables triggers this..
+ case 1060: // Duplicate column name
+ case 1061: // Duplicate key name - triggered by add index.. but could hide error. - unlikely though.
+ case 1091: // drop index -- name does not exist.. might hide errors..
+
+ case 1146: // drop a index on an unknown table.. - happens rarely...
+ case 1054: // Unknown column -- triggered by CHANGE COLUMN - but may hide other errrors..
+ $continue = 1;
+ break;
+
+ }
+ if ($continue) {
+ echo " ---- {$line}\n"; flush();
+ continue;
+ }
+ // real errors...
+ // 1051: // Unknown table -- normally drop = add iff exists..
+ echo "File: $fn\n$line\n";
+ exit;
+
+
+ }
+
}
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 (!$g) {
+ if (empty($g->id)) {
$this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
}
+
+
if (!$g->members('email')) {
- $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
+ $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
}
-
$cm->bcc_group = $g->id;
}
if (empty($cm->test_class)) {
echo "email: {$name} - checked\n";
continue; /// we do not import the body content of templates that exist...
} else {
- $cm->insert();
+
+ //$cm->insert();
}
}
require_once 'Pman/Core/Import/Core_email.php';
$x = new Pman_Core_Import_Core_email();
- $x->get('', $opts);
+ $x->updateOrCreateEmail('', $opts, $cm);
echo "email: {$name} - CREATED\n";
}
die("Error: set innodb_file_per_table = 1 in my.cnf\n\n");
}
+ $db = DB_DataObject::factory('core_enum');
+ $db->query("select version() as version");
+ $db->fetch();
+
+ 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;;