53
57
$condition = "{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->queryValue($id)}";
54
58
} else if (isset($ssn)) {
55
59
$condition = "{$db->le}person{$db->re}.{$db->le}ssn{$db->re}={$db->queryValue($ssn)}";
60
} else if (isset($email)) {
61
$condition = "{$db->le}person{$db->re}.{$db->le}email{$db->re}={$db->queryValue($email)}";
56
62
} else if (isset($abbreviation)) {
57
63
$condition = "{$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}={$db->queryValue($abbreviation)}";
60
66
if (isset($condition)) {
61
67
$query = implode(NL, array(
62
"SELECT {$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}",
68
"SELECT {$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}email{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}birthdate{$db->re}, {$db->le}person{$db->re}.{$db->le}deathdate{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}created_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}",
63
69
"FROM {$db->le}contact{$db->re}",
64
70
"INNER JOIN {$db->le}person{$db->re} ON {$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->le}person{$db->re}.{$db->le}entity_id{$db->re}",
65
71
"INNER JOIN {$db->le}entity{$db->re} ON {$db->le}person{$db->re}.{$db->le}entity_id{$db->re}={$db->le}entity{$db->re}.{$db->le}id{$db->re} AND {$condition}"
110
124
$this->_initial["deleted"] = $this->deleted;
113
public static function snapshot($date, $id=null, $ssn=null, $abbreviation=null) {
127
public static function snapshot($date, $id=null, $ssn=null, $email=null, $abbreviation=null) {
114
128
$object = new Contact();
115
129
$object->_snapshot = $date;
116
130
$db = Database::getInstance();
117
$db->changeDatabase($db->getDatabase() . "_log");
131
$database = $db->getDatabase();
132
$db->changeDatabase($database . "_log");
119
134
if (isset($id)) {
120
135
$condition = "{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->queryValue($id)}";
121
136
} else if (isset($ssn)) {
122
137
$condition = "{$db->le}person{$db->re}.{$db->le}ssn{$db->re}={$db->queryValue($ssn)}";
138
} else if (isset($email)) {
139
$condition = "{$db->le}person{$db->re}.{$db->le}email{$db->re}={$db->queryValue($email)}";
123
140
} else if (isset($abbreviation)) {
124
141
$condition = "{$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}={$db->queryValue($abbreviation)}";
129
146
$condition .= " AND ({$db->le}person{$db->re}.{$db->le}tdate{$db->re} IS NOT NULL AND {$db->le}person{$db->re}.{$db->le}fdate{$db->re}<={$db->queryValue($date)} AND {$db->queryValue($date)}<={$db->le}person{$db->re}.{$db->le}tdate{$db->re}) ";
130
147
$condition .= " AND ({$db->le}entity{$db->re}.{$db->le}tdate{$db->re} IS NOT NULL AND {$db->le}entity{$db->re}.{$db->le}fdate{$db->re}<={$db->queryValue($date)} AND {$db->queryValue($date)}<={$db->le}entity{$db->re}.{$db->le}tdate{$db->re}) ";
131
148
$query = implode(NL, array(
132
"SELECT {$db->le}contact{$db->re}.{$db->le}log_sequence{$db->re}, {$db->le}contact{$db->re}.{$db->le}fdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}tdate{$db->re}, {$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}",
149
"SELECT {$db->le}contact{$db->re}.{$db->le}log_sequence{$db->re}, {$db->le}contact{$db->re}.{$db->le}fdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}tdate{$db->re}, {$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}email{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}birthdate{$db->re}, {$db->le}person{$db->re}.{$db->le}deathdate{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}created_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}",
133
150
"FROM {$db->le}contact{$db->re}",
134
151
"INNER JOIN {$db->le}person{$db->re} ON {$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->le}person{$db->re}.{$db->le}entity_id{$db->re}",
135
152
"INNER JOIN {$db->le}entity{$db->re} ON {$db->le}person{$db->re}.{$db->le}entity_id{$db->re}={$db->le}entity{$db->re}.{$db->le}id{$db->re} AND {$condition}"
155
$query .= "ORDER BY {$db->le}contact{$db->re}.log_sequence desc limit 1";
138
156
$db->query($query);
140
158
if ($db->getRecord() && $db->getNumRows()===1) {
211
234
$isDirty = $isDirty || ((string)$this->lastName !== (string)$this->_initial["lastName"]);
212
235
$isDirty = $isDirty || ((string)$this->suffix !== (string)$this->_initial["suffix"]);
213
236
$isDirty = $isDirty || ((string)$this->ssn !== (string)$this->_initial["ssn"]);
237
$isDirty = $isDirty || ((string)$this->email !== (string)$this->_initial["email"]);
214
238
$isDirty = $isDirty || ((string)$this->nickname !== (string)$this->_initial["nickname"]);
215
239
$isDirty = $isDirty || ((string)$this->initials !== (string)$this->_initial["initials"]);
240
$isDirty = $isDirty || ((string)$this->birthdate != (string)$this->_initial["birthdate"]);
241
$isDirty = $isDirty || ((string)$this->deathdate != (string)$this->_initial["deathdate"]);
216
242
$isDirty = $isDirty || ((int)$this->personTypeId !== (int)$this->_initial["personTypeId"]);
243
$isDirty = $isDirty || ((int)$this->createdById !== (int)$this->_initial["createdById"]);
217
244
$isDirty = $isDirty || ((string)$this->abbreviation !== (string)$this->_initial["abbreviation"]);
218
245
$isDirty = $isDirty || ((string)$this->prefix !== (string)$this->_initial["prefix"]);
219
246
$isDirty = $isDirty || ((string)$this->title !== (string)$this->_initial["title"]);
303
330
protected function log() {
304
331
if (isset($this->_snapshot)) {return false;}
305
333
$db = Database::getInstance();
306
334
$database = $db->getDatabase();
335
$record = Contact::select($db->encapsulate("contact") . ".mdate as fdate,null as tdate,{$db->encapsulate("contact")}.*",null,$db->encapsulate("contact").".person_entity_id={$this->id}")->first();
307
336
$log = "{$database}_log";
308
$db->changeDatabase($log);
337
$dbLog = Database::getInstance(null,null,null,null,$log);
338
foreach($record as $k=>$v){
340
$record[$k] = $dbLog->queryValue($v);
343
$insertColumns = $dbLog->le.implode("{$dbLog->le},{$dbLog->re}",array_keys($record)).$dbLog->re;
344
$insertValues = implode(",",$record);
309
345
$query = implode(NL, array(
310
"INSERT INTO {$db->le}{$log}{$db->re}.{$db->le}contact{$db->re} (",
313
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}mdate{$db->re},",
315
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}_id{$db->re},",
316
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re},",
317
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re},",
318
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}prefix{$db->re},",
319
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}title{$db->re},",
320
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}long_title{$db->re},",
321
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re},",
322
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}mdate{$db->re},",
323
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}cdate{$db->re},",
324
" {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}deleted{$db->re}",
325
"FROM {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}",
326
"WHERE {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->queryValue($this->id)}",
346
"INSERT INTO {$dbLog->le}contact{$dbLog->re} (",
329
$status = $db->query($query);
331
$logSequence = $db->getInsertedId();
333
$query = implode(NL, array(
334
"SELECT {$db->le}log_sequence{$db->re}",
335
"FROM {$db->le}contact{$db->re}",
336
"WHERE {$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->queryValue($this->id)}",
337
" AND {$db->le}log_sequence{$db->re}<'{$logSequence}'",
338
"ORDER BY {$db->le}log_sequence{$db->re} DESC",
343
if ($db->getRecord()) {
344
$updateSequence = (int)$db->record["log_sequence"];
352
$status = $dbLog->query($query);
354
$logSequence = $dbLog->getInsertedId();
345
357
$query = implode(NL, array(
346
"UPDATE {$db->le}{$log}{$db->re}.{$db->le}contact{$db->re}",
347
"INNER JOIN {$db->le}{$database}{$db->re}.{$db->le}contact{$db->re} ON {$db->le}{$log}{$db->re}.{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}={$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}person_entity_id{$db->re}",
348
" AND {$db->le}{$log}{$db->re}.{$db->le}contact{$db->re}.{$db->le}log_sequence{$db->re}={$db->queryValue($updateSequence)}",
349
"SET {$db->le}{$log}{$db->re}.{$db->le}contact{$db->re}.{$db->le}tdate{$db->re}={$db->le}{$database}{$db->re}.{$db->le}contact{$db->re}.{$db->le}mdate{$db->re}"
358
"SELECT {$dbLog->le}log_sequence{$dbLog->re}",
359
"FROM {$dbLog->le}contact{$dbLog->re}",
360
"WHERE {$dbLog->le}contact{$dbLog->re}.{$dbLog->le}person_entity_id{$dbLog->re}={$this->id}",
361
" AND {$dbLog->le}log_sequence{$dbLog->re}<{$logSequence}",
362
"ORDER BY {$dbLog->le}log_sequence{$dbLog->re} DESC",
363
$dbLog::limitOffsetString(1,0)
365
$dbLog->query($query);
367
if ($dbLog->getRecord()) {
368
$updateSequence = (int)$dbLog->record["log_sequence"];
369
$query = implode(NL, array(
370
"UPDATE {$dbLog->le}contact{$dbLog->re}",
371
"SET {$dbLog->le}tdate{$dbLog->re}={$record["mdate"]}",
372
"where log_sequence={$updateSequence}"
374
$dbLog->query($query);
353
377
$db->changeDatabase($database);
425
449
public static function objects($order=null, $where=null, $limit=null, $offset=0) {
426
450
$db = Database::getInstance();
427
451
$objects = array();
428
foreach (Contact::select("{$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}", $order, $where, $limit, $offset) as $record) {
452
foreach (Contact::select("{$db->le}entity{$db->re}.{$db->le}id{$db->re}, {$db->le}entity{$db->re}.{$db->le}description{$db->re}, {$db->le}entity{$db->re}.{$db->le}entity_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}first_name{$db->re}, {$db->le}person{$db->re}.{$db->le}middle_name{$db->re}, {$db->le}person{$db->re}.{$db->le}last_name{$db->re}, {$db->le}person{$db->re}.{$db->le}suffix{$db->re}, {$db->le}person{$db->re}.{$db->le}ssn{$db->re}, {$db->le}person{$db->re}.{$db->le}email{$db->re}, {$db->le}person{$db->re}.{$db->le}nickname{$db->re}, {$db->le}person{$db->re}.{$db->le}initials{$db->re}, {$db->le}person{$db->re}.{$db->le}birthdate{$db->re}, {$db->le}person{$db->re}.{$db->le}deathdate{$db->re}, {$db->le}person{$db->re}.{$db->le}person_type_id{$db->re}, {$db->le}person{$db->re}.{$db->le}created_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}abbreviation{$db->re}, {$db->le}contact{$db->re}.{$db->le}prefix{$db->re}, {$db->le}contact{$db->re}.{$db->le}title{$db->re}, {$db->le}contact{$db->re}.{$db->le}long_title{$db->re}, {$db->le}contact{$db->re}.{$db->le}updated_by_id{$db->re}, {$db->le}contact{$db->re}.{$db->le}mdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}cdate{$db->re}, {$db->le}contact{$db->re}.{$db->le}deleted{$db->re}", $order, $where, $limit, $offset) as $record) {
429
453
$object = new Contact();
430
454
$object->id = $record["id"];
431
455
$object->description = $record["description"];