Esempio n. 1
0
 private static function validatePartnerMonthlyUsagePerType($partner, $partnerPackage, $usage, $usageType, $report_date, $block_notification_grace, $delete_grace, $email_link_hash)
 {
     if (!array_key_exists($usageType, $partnerPackage)) {
         return;
     }
     $usageGB = $usage / 1024 / 1024;
     // from KB to GB
     $percent = round($usageGB / $partnerPackage[$usageType] * 100, 2);
     $notificationId = 0;
     KalturaLog::debug("percent (" . $partner->getId() . ") is: {$percent} for usage type {$usageType}");
     //check if partner should be deleted
     if ($partner->getStatus() == Partner::PARTNER_STATUS_CONTENT_BLOCK) {
         $warning_100 = $partner->getUsageWarning($usageType, 100);
         if ($warning_100 > 0 && $warning_100 <= $delete_grace) {
             KalturaLog::debug("partner " . $partner->getId() . " reached 100% a month ago - deleting partner");
             /* delete partner */
             $notificationId = myPartnerUtils::KALTURA_DELETE_ACCOUNT;
             $partner->setStatus(Partner::PARTNER_STATUS_DELETED);
         }
     } else {
         self::resetMonthlyUsageWarningIfNotRelevant($partner, $usageType, $percent, $report_date);
         $warning_80 = $partner->getUsageWarning($usageType, 80);
         $warning_100 = $partner->getUsageWarning($usageType, 100);
         if ($percent >= 80 && $percent < 100 && !$warning_80) {
             KalturaLog::debug("partner " . $partner->getId() . " reached 80% - setting first warning for usage " . $usageType);
             $partner->setUsageWarning($usageType, 80, time());
             $partner->resetUsageWarning($usageType, 100);
             $notificationId = myPartnerUtils::KALTURA_MONTHLY_PACKAGE_EIGHTY_PERCENT_WARNING;
         } elseif ($percent >= 80 && $percent < 100 && $warning_80 && !$warning_100) {
             KalturaLog::log("passed the 80%, assume notification sent, nothing to do.");
         } elseif ($percent >= 100 && !$warning_100) {
             KalturaLog::debug("partner " . $partner->getId() . " reached 100% - setting second warning for usage " . $usageType);
             $partner->setUsageWarning($usageType, 100, time());
             $notificationId = myPartnerUtils::KALTURA_MONTHLY_PACKAGE_LIMIT_WARNING_1;
         } elseif ($percent >= 100 && $warning_100 > 0 && $warning_100 <= $block_notification_grace && $warning_100 > $delete_grace) {
             KalturaLog::debug("partner " . $partner->getId() . " reached 100% " . self::BLOCKING_DAYS_GRACE . " days ago - sending block email and blocking partner");
             /* send block email and block partner */
             $notificationId = myPartnerUtils::KALTURA_MONTHLY_PACKAGE_LIMIT_WARNING_2;
             $partner->setStatus(Partner::PARTNER_STATUS_CONTENT_BLOCK);
         }
     }
     if ($notificationId) {
         $body_params = array();
         $usageText = PartnerPackages::getPackageUsageText($usageType);
         switch ($notificationId) {
             case myPartnerUtils::KALTURA_MONTHLY_PACKAGE_EIGHTY_PERCENT_WARNING:
                 $body_params = array($partner->getAdminName(), $partnerPackage[$usageType], $usageText, round($usageGB, 2), $email_link_hash);
                 break;
             case myPartnerUtils::KALTURA_MONTHLY_PACKAGE_LIMIT_WARNING_1:
                 $body_params = array($partner->getAdminName(), $partnerPackage[$usageType], $usageText, round($usageGB, 2), $email_link_hash);
                 break;
             case myPartnerUtils::KALTURA_MONTHLY_PACKAGE_LIMIT_WARNING_2:
                 $body_params = array($partner->getAdminName(), $partnerPackage[$usageType], $usageText, round($usageGB, 2), $email_link_hash);
                 break;
             case myPartnerUtils::KALTURA_DELETE_ACCOUNT:
                 $body_params = array($partner->getAdminName());
                 break;
         }
         myPartnerUtils::notifiyPartner($notificationId, $partner, $body_params);
     }
 }