public function calculateAverageRating(\ClassCentral\CredentialBundle\Entity\Credential $credential) { $rating = 0; $reviews = $credential->getReviews(); $validReviewsCount = 0; if ($reviews && $reviews->count() > 0) { $ratingSum = 0; foreach ($reviews as $review) { if ($review->getStatus() < CredentialReview::REVIEW_NOT_SHOWN_STATUS_LOWER_BOUND) { $ratingSum += $review->getRating(); $validReviewsCount++; } } if ($validReviewsCount > 0) { $rating = $ratingSum / $validReviewsCount; } } return array('rating' => $rating, 'numRatings' => $validReviewsCount); }
/** * @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); } } } }
public function uploadCredentialImageIfNecessary($imageUrl, Credential $credential, $extension = null) { $kuber = $this->scraper->getContainer()->get('kuber'); $uniqueKey = basename($imageUrl); if ($kuber->hasFileChanged(Kuber::KUBER_ENTITY_CREDENTIAL, Kuber::KUBER_TYPE_CREDENTIAL_IMAGE, $credential->getId(), $uniqueKey)) { // Upload the file $filePath = '/tmp/credential_' . $uniqueKey; file_put_contents($filePath, file_get_contents($imageUrl)); $kuber->upload($filePath, Kuber::KUBER_ENTITY_CREDENTIAL, Kuber::KUBER_TYPE_CREDENTIAL_IMAGE, $credential->getId(), $extension, $uniqueKey); } }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('status', 'choice', array('choices' => Credential::getStatuses()))->add('subject', 'choice', array('choices' => Credential::$SUBJECTS))->add('name')->add('slug')->add('oneLiner')->add('subTitle')->add('description')->add('price')->add('pricePeriod', 'choice', array('choices' => Credential::$CREDENTIAL_PRICE_PERIODS))->add('durationMin')->add('durationMax')->add('workloadMin')->add('workloadMax')->add('enrollmentStart')->add('enrollmentEnd')->add('startDate')->add('endDate')->add('sponsored')->add('workloadType', 'choice', array('choices' => Credential::$CREDENTIAL_WORKLOAD))->add('url')->add('initiative')->add('institutions', null, array('required' => false))->add('courses'); }