/** * update students subscription status in the passed instance to * either SUBSCRIBED or TERMINATED as appropriate, checking if * $duration_subscription + student subscription date is in the past or not * * @param number $instance_id * @param number $duration_subscription * * @author giorgio 02/apr/2015 */ private function _update_students_subscription_after_course_instance_set($instance_id, $duration_subscription) { require_once ROOT_DIR . '/switcher/include/Subscription.inc.php'; $subscriptions = Subscription::findSubscriptionsToClassRoom($instance_id); if (!AMA_DB::isError($subscriptions) && is_array($subscriptions) && count($subscriptions) > 0) { foreach ($subscriptions as $subscription) { $updateSubscription = false; $subscritionEndDate = $this->add_number_of_days($duration_subscription, intval($subscription->getSubscriptionDate())); if ($subscription->getSubscriptionStatus() == ADA_STATUS_SUBSCRIBED && $subscritionEndDate <= time()) { $subscription->setSubscriptionStatus(ADA_STATUS_TERMINATED); $updateSubscription = true; } else { if ($subscription->getSubscriptionStatus() == ADA_STATUS_TERMINATED && $subscritionEndDate > time()) { $subscription->setSubscriptionStatus(ADA_STATUS_SUBSCRIBED); $updateSubscription = true; } } if ($updateSubscription) { $subscription->setStartStudentLevel(null); // null means no level update subscription::updateSubscription($subscription); } } } }