diff --git a/phpgwapi/inc/class.contenthistory.inc.php b/phpgwapi/inc/class.contenthistory.inc.php index 80c859b3b8..41e9bded49 100644 --- a/phpgwapi/inc/class.contenthistory.inc.php +++ b/phpgwapi/inc/class.contenthistory.inc.php @@ -1,7 +1,6 @@ <?php /***************************************************************************\ * eGroupWare - content history class * - * http://www.linux-at-work.de * * http://www.egroupware.org * * Written by : Lars Kneschke [lkneschke@linux-at-work.de] * * ------------------------------------------------- * @@ -35,6 +34,32 @@ $this->table = 'egw_api_content_history'; } + /** + * mark mapping as expired + * + * mark a mapping from externel to internal id as expired, when + * a egw entry gets deleted + * + * @param $_appName string the appname example: infolog_notes + * @param $_id int the internal egwapp content id + * @return bool + */ + function expireMapping($_appName, $_id) + { + $where = array ( + 'map_guid' => $GLOBALS['egw']->common->generate_uid($_appName, $_id), + ); + + $newData = array ( + 'map_expired' => 1, + ); + + if(!$this->db->update('egw_contentmap',$newData,$where,__LINE__,__FILE__)) + return FALSE; + else + return TRUE; + } + /** * get the timestamp for action * @@ -47,35 +72,34 @@ */ function getHistory($_appName, $_action, $_ts) { + $query = "select sync_guid from egw_api_content_history where sync_appname = '".$this->db->db_addslashes($_appName)."' and "; + switch($_action) { case 'modify': - $query = "sync_modified > '".$this->db->to_timestamp($_ts)."' AND sync_modified > sync_deleted"; + $query .= "sync_modified > '".$this->db->to_timestamp($_ts)."' and sync_modified > sync_deleted"; break; - case 'delete': - $query = "sync_deleted > '".$this->db->to_timestamp($_ts)."'"; + $query .= "sync_deleted > '".$this->db->to_timestamp($_ts)."'"; break; - case 'add': - $query = "sync_added > '".$this->db->to_timestamp($_ts)."' AND sync_added > sync_deleted"; + $query .= "sync_added > '".$this->db->to_timestamp($_ts)."' and sync_added > sync_deleted and sync_added > sync_modified"; break; - default: // no valid $_action set return array(); + break; } - $this->db->select($this->table,array( - 'sync_appname' => $_appName, - $query, - ), __LINE__, __FILE__); + $this->db->query($query, __LINE__, __FILE__); $guidList = array(); + while($this->db->next_record()) { $guidList[] = $this->db->f('sync_guid'); } + return $guidList; } @@ -99,12 +123,15 @@ { case 'add': return $this->db->from_timestamp($this->db->f('sync_added')); - + break; case 'delete': return $this->db->from_timestamp($this->db->f('sync_deleted')); - + break; case 'modify': return $this->db->from_timestamp($this->db->f('sync_modified')); + break; + default: + return false; } } @@ -128,7 +155,7 @@ 'sync_appname' => $_appName, 'sync_contentid' => $_id, 'sync_added' => $_ts, - 'sync_guid' => $GLOBALS['egw']->common->generate_uid($_appName, $_id), + 'sync_guid' => $GLOBALS['egw']->common->generate_uid($_appName, $_id), 'sync_changedby' => $GLOBALS['egw_info']['user']['account_id'], ); switch($_action) @@ -162,3 +189,4 @@ return true; } } +?>