2015-07-23 16:40:32 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Icinga\Module\Director\Objects;
|
|
|
|
|
|
|
|
use Icinga\Module\Director\Data\Db\DbObject;
|
|
|
|
|
|
|
|
class SyncRule extends DbObject
|
|
|
|
{
|
|
|
|
protected $table = 'sync_rule';
|
|
|
|
|
|
|
|
protected $keyName = 'id';
|
|
|
|
|
|
|
|
protected $autoincKeyName = 'id';
|
|
|
|
|
|
|
|
protected $defaultProperties = array(
|
|
|
|
'id' => null,
|
|
|
|
'rule_name' => null,
|
|
|
|
'object_type' => null,
|
2015-07-24 10:53:55 +02:00
|
|
|
'update_policy' => null,
|
|
|
|
'purge_existing' => null,
|
|
|
|
'filter_expression' => null,
|
2015-07-23 16:40:32 +02:00
|
|
|
);
|
|
|
|
|
2015-11-25 12:54:21 +01:00
|
|
|
public function listInvolvedSourceIds()
|
|
|
|
{
|
|
|
|
if (! $this->hasBeenLoadedFromDb()) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$db = $this->getDb();
|
|
|
|
return array_map('intval', array_unique(
|
|
|
|
$db->fetchCol(
|
|
|
|
$db->select()
|
|
|
|
->from(array('p' => 'sync_property'), 'p.source_id')
|
|
|
|
->join(array('s' => 'import_source'), 's.id = p.source_id', array())
|
|
|
|
->where('rule_id = ?', $this->id)
|
|
|
|
->order('s.source_name')
|
|
|
|
)
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
2015-11-25 12:54:00 +01:00
|
|
|
public function getPriorityForNextProperty()
|
|
|
|
{
|
|
|
|
if (! $this->hasBeenLoadedFromDb()) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$db = $this->getDb();
|
|
|
|
return $db->fetchOne(
|
|
|
|
$db->select()
|
|
|
|
->from(
|
|
|
|
'sync_property',
|
2015-12-02 15:05:52 +01:00
|
|
|
array('priority' => '(CASE WHEN MAX(priority) IS NULL THEN 1 ELSE MAX(priority) + 1 END)')
|
2015-11-25 12:54:00 +01:00
|
|
|
)->where('rule_id = ?', $this->id)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2015-07-24 10:54:11 +02:00
|
|
|
public function fetchSyncProperties()
|
|
|
|
{
|
|
|
|
$db = $this->getDb();
|
|
|
|
return SyncProperty::loadAll(
|
|
|
|
$this->getConnection(),
|
|
|
|
$db->select()->from('sync_property')->where('rule_id = ?', $this->id)
|
|
|
|
);
|
|
|
|
|
|
|
|
return $this->syncProperties;
|
|
|
|
}
|
2015-07-23 16:40:32 +02:00
|
|
|
}
|