/** * Commits changes (increases serial by 1) * * @return Array on success, string on error */ public static function commit() { // do some checks first $pdns_version = trim(shell_exec("sudo /usr/bin/pdns_control version 2>&1")); if (!preg_match('/^[0-9,\\.]+$/', $pdns_version)) { if (preg_match('/\\[sudo\\] password/', $pdns_version)) { return "Unable to run 'sudo /usr/bin/pdns_control'. Is it defined in sudoers file?"; } else { return $pdns_version; } } $commited = array(); $c = new Criteria(); $c->add(AuditPeer::OBJECT, 'Record'); $c->addGroupByColumn(AuditPeer::DOMAIN_ID); $c->add(AuditPeer::CREATED_AT, date("Y-m-d H:i:s", MyTools::getLastCommit()), Criteria::GREATER_THAN); foreach (AuditPeer::doSelect($c) as $audit) { $domain = DomainPeer::retrieveByPK($audit->getDomainId()); $commited[] = $domain->getName(); // get SOA record $c = new Criteria(); $c->add(RecordPeer::DOMAIN_ID, $domain->getId()); $c->add(RecordPeer::TYPE, 'SOA'); $SOA = RecordPeer::doSelectOne($c); $temp = explode(" ", $SOA->getContent()); $serial = $temp[2]; $date = substr($serial, 0, 8); $id = substr($serial, 8); // today ? if ($date == date("Ymd")) { $id++; if (strlen($id) == 1) { $id = "0" . $id; } $serial = $date . $id; } else { $serial = date("Ymd") . "01"; } if ($serial >= 4294967295) { continue; } // don't allow >= 32bit unsigned $SOA->setContent(implode(" ", array($temp[0], $temp[1], $serial))); $SOA->save(); } if ($commited) { SettingPeer::setValue('last_commit', time()); sleep(2); if ($also_notify = sfConfig::get('app_default_also-notify')) { foreach ($commited as $domain) { foreach ($also_notify as $host) { exec("sudo /usr/bin/pdns_control notify-host {$domain} {$host}"); } } } } return $commited; }
/** * Gets timestamp when domain was created */ public function getCreatedAt() { $c = new Criteria(); $c->add(AuditPeer::OBJECT, 'Domain'); $c->add(AuditPeer::TYPE, 'ADD'); $c->add(AuditPeer::OBJECT_KEY, $this->getId()); $c->addAscendingOrderByColumn(AuditPeer::ID); $audit = AuditPeer::doSelectOne($c); return $audit->getCreatedAt(); }
$template = array("DomainId" => null, "Name" => null, "Type" => null, "Content" => null, "Ttl" => null, "Prio" => null); define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/../..')); define('SF_APP', 'frontend'); define('SF_ENVIRONMENT', 'cli'); define('SF_DEBUG', true); require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'; // initialize database manager $databaseManager = new sfDatabaseManager(); $databaseManager->initialize(); $c = new Criteria(); $c->add(AuditPeer::OBJECT, 'Record'); $c->addGroupByColumn(AuditPeer::OBJECT_KEY); foreach (AuditPeer::doSelect($c) as $group) { echo "================= " . $group->getObjectKey() . " ================\n"; $c1 = new Criteria(); $c1->add(AuditPeer::OBJECT, 'Record'); $c1->add(AuditPeer::OBJECT_KEY, $group->getObjectKey()); $prev_changes = $template; foreach (AuditPeer::doSelect($c1) as $audit) { echo " " . $audit->getType() . "\n"; if ($audit->getType() == 'DELETE') { $changes = $prev_changes; } else { $current_changes = unserialize($audit->getObjectChanges()); $changes = array_merge($prev_changes, $current_changes); $prev_changes = $changes; } $audit->setObjectChanges(serialize($changes)); $audit->save(); } }
public static function retrieveByPKs($pks, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(); $criteria->add(AuditPeer::ID, $pks, Criteria::IN); $objs = AuditPeer::doSelect($criteria, $con); } return $objs; }
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = AuditPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setID($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setRemoteIpAddress($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setObject($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setObjectKey($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setDomainId($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setObjectChanges($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setQuery($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setType($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setCreatedAt($arr[$keys[8]]); } }