forked from extern/egroupware
Handle merging from listview into a template designed for the other views (range tag, no pagerepeat)
This commit is contained in:
parent
8b68269874
commit
740a5085a0
@ -97,6 +97,46 @@ class calendar_merge extends bo_merge
|
|||||||
$this->query['num_rows'] = -1;
|
$this->query['num_rows'] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Merges a given document with contact data
|
||||||
|
*
|
||||||
|
* Overridden from parent to be able to change a list of events into a range,
|
||||||
|
* if the target document has no pagerepeat tag. Otherwise, parent::merge_string()
|
||||||
|
* would fail because we're trying to merge multiple records with no pagerepeat tag.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param string $content
|
||||||
|
* @param array $ids array with contact id(s)
|
||||||
|
* @param string &$err error-message on error
|
||||||
|
* @param string $mimetype mimetype of complete document, eg. text/*, application/vnd.oasis.opendocument.text, application/rtf
|
||||||
|
* @param array $fix=null regular expression => replacement pairs eg. to fix garbled placeholders
|
||||||
|
* @param string $charset=null charset to override default set by mimetype or export charset
|
||||||
|
* @return string|boolean merged document or false on error
|
||||||
|
*/
|
||||||
|
function merge_string($content,$ids,$err,$mimetype,$fix)
|
||||||
|
{
|
||||||
|
// Handle merging a list of events into a document with range instead of pagerepeat
|
||||||
|
if(strpos($content, '$$pagerepeat') === false && count($ids) > 1)
|
||||||
|
{
|
||||||
|
// Merging more than one something will fail without pagerepeat
|
||||||
|
if (is_array($ids) && $ids[0]['id'])
|
||||||
|
{
|
||||||
|
// Passed an array of events, to be handled like a date range
|
||||||
|
$events = $ids;
|
||||||
|
$ids = array('start' => PHP_INT_MAX, 'end' => 0);
|
||||||
|
$this->ids = array();
|
||||||
|
foreach($events as $event) {
|
||||||
|
if($event['start'] && egw_time::to($event['start'],'ts') < $ids['start']) $ids['start'] = egw_time::to($event['start'],'ts');
|
||||||
|
if($event['end'] && egw_time::to($event['end'],'ts') > $ids['end']) $ids['end'] = egw_time::to($event['end'],'ts');
|
||||||
|
// Keep ids for future use
|
||||||
|
$this->ids[] = $event['id'];
|
||||||
|
}
|
||||||
|
$ids = array($ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return parent::merge_string($content, $ids, $err, $mimetype,$fix);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get replacements
|
* Get replacements
|
||||||
*
|
*
|
||||||
@ -133,6 +173,7 @@ class calendar_merge extends bo_merge
|
|||||||
// Keep ids for future use
|
// Keep ids for future use
|
||||||
$this->ids[] = $event['id'];
|
$this->ids[] = $event['id'];
|
||||||
}
|
}
|
||||||
|
$id = array($id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user