/usr/share/php/Horde/Kolab/Storage/Data/Query/History/Base.php is in php-horde-kolab-storage 2.0.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | <?php
/**
* The hook that updates the Horde history information once data gets
* synchronized with the Kolab backend.
*
* PHP version 5
*
* @category Kolab
* @package Kolab_Storage
* @author Gunnar Wrobel <wrobel@pardus.de>
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @link http://pear.horde.org/index.php?package=Kolab_Storage
*/
/**
* The hook that updates the Horde history information once data gets
* synchronized with the Kolab backend.
*
* Copyright 2011-2013 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Kolab
* @package Kolab_Storage
* @author Gunnar Wrobel <wrobel@pardus.de>
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @link http://pear.horde.org/index.php?package=Kolab_Storage
*/
class Horde_Kolab_Storage_Data_Query_History_Base
implements Horde_Kolab_Storage_Data_Query_History
{
/**
* The queriable data.
*
* @var Horde_Kolab_Storage_Data
*/
protected $data;
/**
* The history handler.
*
* @var Horde_History
*/
protected $history;
/**
* Constructor.
*
* @param Horde_Kolab_Storage_Data $data The queriable data.
* @param array $params Additional parameters.
*/
public function __construct(Horde_Kolab_Storage_Data $data,
$params)
{
$this->data = $data;
$this->history = $params['factory']->createHistory($data->getAuth());
}
/**
* Synchronize the preferences information with the information from the
* backend.
*
* @param array $params Additional parameters.
*
* @return NULL
*/
public function synchronize($params = array())
{
$stamp = $this->data->getStamp();
if (isset($params['changes'])) {
foreach ($params['changes'][Horde_Kolab_Storage_Folder_Stamp::ADDED] as $bid => $object) {
$this->_updateLog($object['uid'], $bid, $stamp);
}
foreach ($params['changes'][Horde_Kolab_Storage_Folder_Stamp::DELETED] as $bid => $object) {
$this->history->log(
$object, array('action' => 'delete', 'bid' => $bid, 'stamp' => $stamp)
);
}
} else {
foreach ($this->data->getObjectToBackend() as $object => $bid) {
$this->_updateLog($object, $bid, $stamp);
}
}
}
/**
* Update the history log for an object.
*
* @param string $object The object ID.
* @param string $bid The backend ID of
* the object.
* @param Horde_Kolab_Storage_Folder_Stamp $stamp The folder stamp.
*
* @return NULL
*/
private function _updateLog($object, $bid, $stamp)
{
$log = $this->history->getHistory($object);
if (count($log) == 0) {
$this->history->log(
$object, array('action' => 'add', 'bid' => $bid, 'stamp' => $stamp)
);
} else {
$last = array('ts' => 0);
foreach ($log as $entry) {
if ($entry['ts'] > $last['ts']) {
$last = $entry;
}
}
if (!isset($last['bid']) || $last['bid'] != $bid
|| (isset($last['stamp']) && $last['stamp']->isReset($stamp))) {
$this->history->log(
$object, array('action' => 'modify', 'bid' => $bid, 'stamp' => $stamp)
);
}
}
}
}
|