/** * @param Credential $credential */ private function saveOrUpdateCredential(Credential $credential, $imageUrl) { $dbCredential = $this->dbHelper->getCredentialBySlug($credential->getSlug()); $em = $this->getManager(); if (!$dbCredential) { if ($this->doCreate()) { $this->out("New Credential - " . $credential->getName()); if ($this->doModify()) { $em->persist($credential); $em->flush(); $this->dbHelper->uploadCredentialImageIfNecessary($imageUrl, $credential); } } } else { // Update the credential $changedFields = $this->dbHelper->changedFields($this->credentialFields, $credential, $dbCredential); if (!empty($changedFields) && $this->doUpdate()) { $this->out("UPDATE CREDENTIAL - " . $dbCredential->getName()); $this->outputChangedFields($changedFields); if ($this->doModify()) { $em->persist($dbCredential); $em->flush(); $this->dbHelper->uploadCredentialImageIfNecessary($imageUrl, $dbCredential); } } } }