/** * batch getOrCreateWorker returns a worker by name, create it if doesnt exist * * @param Scheduler $scheduler The scheduler object * @param int $workerConfigId The worker configured id * @param KalturaBatchJobType $workerType The type of the remote worker * @param string $workerName The name of the remote worker * @return Worker */ private function getOrCreateWorker(Scheduler $scheduler, $workerConfigId, $workerType = null, $workerName = null) { if (!is_null($workerType) && !is_numeric($workerType)) { $workerType = kPluginableEnumsManager::apiToCore('BatchJobType', $workerType); } $c = new Criteria(); $c->add(SchedulerWorkerPeer::SCHEDULER_CONFIGURED_ID, $scheduler->getConfiguredId()); $c->add(SchedulerWorkerPeer::CONFIGURED_ID, $workerConfigId); $workerDb = SchedulerWorkerPeer::doSelectOne($c, myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2)); if ($workerDb) { $shouldSave = false; if (!is_null($workerName) && $workerDb->getName() != $workerName) { $workerDb->setName($workerName); $shouldSave = true; } if (!is_null($workerType) && $workerDb->getType() != $workerType) { $workerDb->setType($workerType); $shouldSave = true; } if ($shouldSave) { $workerDb->save(); } return $workerDb; } $workerDb = new SchedulerWorker(); $workerDb->setLastStatus(time()); $workerDb->setCreatedBy("Scheduler: " . $scheduler->getName()); $workerDb->setUpdatedBy("Scheduler: " . $scheduler->getName()); $workerDb->setSchedulerId($scheduler->getId()); $workerDb->setSchedulerConfiguredId($scheduler->getConfiguredId()); $workerDb->setConfiguredId($workerConfigId); $workerDb->setDescription(''); if (!is_null($workerType)) { $workerDb->setType($workerType); } if (!is_null($workerName)) { $workerDb->setName($workerName); } $workerDb->save(); return $workerDb; }