function setRecurringHoliday($ids)
 {
     Debug::text('Setting Recurring Holiday IDs : ', __FILE__, __LINE__, __METHOD__, 10);
     if (is_array($ids) and count($ids) > 0) {
         $tmp_ids = array();
         if (!$this->isNew()) {
             //If needed, delete mappings first.
             $hprhlf = new HolidayPolicyRecurringHolidayListFactory();
             $hprhlf->getByHolidayPolicyId($this->getId());
             foreach ($hprhlf as $obj) {
                 $id = $obj->getRecurringHoliday();
                 Debug::text('Policy ID: ' . $obj->getHolidayPolicy() . ' ID: ' . $id, __FILE__, __LINE__, __METHOD__, 10);
                 //Delete users that are not selected.
                 if (!in_array($id, $ids)) {
                     Debug::text('Deleting: ' . $id, __FILE__, __LINE__, __METHOD__, 10);
                     $obj->Delete();
                 } else {
                     //Save ID's that need to be updated.
                     Debug::text('NOT Deleting : ' . $id, __FILE__, __LINE__, __METHOD__, 10);
                     $tmp_ids[] = $id;
                 }
             }
             unset($id, $obj);
         }
         //Insert new mappings.
         $rhlf = new RecurringHolidayListFactory();
         foreach ($ids as $id) {
             if (isset($ids) and !in_array($id, $tmp_ids) and $id > 0) {
                 $hprhf = new HolidayPolicyRecurringHolidayFactory();
                 $hprhf->setHolidayPolicy($this->getId());
                 $hprhf->setRecurringHoliday($id);
                 $obj = $rhlf->getById($id)->getCurrent();
                 if ($this->Validator->isTrue('recurring_holiday', $hprhf->Validator->isValid(), TTi18n::gettext('Selected Recurring Holiday is invalid') . ' (' . $obj->getName() . ')')) {
                     $hprhf->save();
                 }
             }
         }
         return TRUE;
     }
     Debug::text('No User IDs to set.', __FILE__, __LINE__, __METHOD__, 10);
     return FALSE;
 }
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'global.inc.php';
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'CLI.inc.php';
$offset = 86400 * 60;
//60 days
$hplf = new HolidayPolicyListFactory();
//Get all holiday policies
$hplf->getAll(NULL, NULL, NULL);
$epoch = time();
foreach ($hplf as $hp_obj) {
    //Get all recurring holidays
    $recurring_holiday_ids = $hp_obj->getRecurringHoliday();
    if (is_array($recurring_holiday_ids) and count($recurring_holiday_ids) > 0) {
        Debug::Text('Found Recurring Holidays...', __FILE__, __LINE__, __METHOD__, 10);
        foreach ($recurring_holiday_ids as $recurring_holiday_id) {
            $rhlf = new RecurringHolidayListFactory();
            $rhlf->getById($recurring_holiday_id);
            if ($rhlf->getRecordCount() == 1) {
                $rh_obj = $rhlf->getCurrent();
                Debug::Text('Found Recurring Holiday: ' . $rh_obj->getName(), __FILE__, __LINE__, __METHOD__, 10);
                $next_holiday_date = $rh_obj->getNextDate($epoch);
                Debug::Text('Next Holiday Date: ' . TTDate::getDate('DATE+TIME', $next_holiday_date), __FILE__, __LINE__, __METHOD__, 10);
                if ($next_holiday_date <= $epoch + $offset) {
                    Debug::Text('Next Holiday Date is within Time Period (offset) adding...', __FILE__, __LINE__, __METHOD__, 10);
                    $hf = new HolidayFactory();
                    $hf->setHolidayPolicyId($hp_obj->getId());
                    $hf->setDateStamp($next_holiday_date);
                    $hf->setName($rh_obj->getName());
                    if ($hf->isValid()) {
                        $hf->Save();
                    }
                } else {