/usr/share/php/Horde/Kolab/Server/Ldap/Changes.php is in php-horde-kolab-server 2.0.2-2.
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 | <?php
/**
* A helper class to determine an LDAP changeset.
*
* PHP version 5
*
* @category Kolab
* @package Kolab_Server
* @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_Server
*/
/**
* A helper class to determine an LDAP changeset.
*
* Copyright 2008-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_Server
* @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_Server
*/
class Horde_Kolab_Server_Ldap_Changes
{
/**
* The object to be modified.
*
* @var Horde_Kolab_Server_Object
*/
private $_object;
/**
* The new dataset.
*
* @var array
*/
private $_data;
/**
* Constructor.
*
* @param Horde_Kolab_Server_Object $object The object to be modified.
* @param array $data The attributes of the object
* to be stored.
*/
public function __construct(
Horde_Kolab_Server_Object_Interface $object,
array $data
) {
$this->_object = $object;
$this->_data = $data;
}
/**
* Return an LDAP changeset from the difference between the current object
* data and the new dataset.
*
* @return array The LDAP changeset.
*/
public function getChangeset()
{
$cs = array();
$old = $this->_object->readInternal();
$new = $this->_data;
$attributes = array_merge(array_keys($old), array_keys($new));
foreach ($attributes as $attribute) {
if (!isset($old[$attribute])) {
$cs['add'][$attribute] = $new[$attribute];
continue;
}
if (!isset($new[$attribute])) {
$cs['delete'][] = $attribute;
continue;
}
if (count($new[$attribute]) == 1
&& count($old[$attribute]) == 1
) {
if ($new[$attribute][0] == $old[$attribute][0]) {
continue;
} else {
$cs['replace'][$attribute] = $new[$attribute][0];
continue;
}
}
$adds = array_diff($new[$attribute], $old[$attribute]);
if (!empty($adds)) {
$cs['add'][$attribute] = array_values($adds);
}
$deletes = array_diff($old[$attribute], $new[$attribute]);
if (!empty($deletes)) {
$cs['delete'][$attribute] = array_values($deletes);
}
}
return $cs;
}
}
|