function postInstall() { global $cache; Debug::text('postInstall: ' . $this->getVersion(), __FILE__, __LINE__, __METHOD__, 9); //Get all pay period schedules. $ppslf = new PayPeriodScheduleListFactory(); $ppslf->getAll(); if ($ppslf->getRecordCount() > 0) { foreach ($ppslf as $pps_obj) { $user_ids = $pps_obj->getUser(); if (is_array($user_ids)) { $time_zone_arr = array(); foreach ($user_ids as $user_id) { $uplf = new UserPreferenceListFactory(); $uplf->getByUserId($user_id); if ($uplf->getRecordCount() > 0) { if (isset($time_zone_arr[$uplf->getCurrent()->getTimeZone()])) { $time_zone_arr[$uplf->getCurrent()->getTimeZone()]++; } else { $time_zone_arr[$uplf->getCurrent()->getTimeZone()] = 1; } } } arsort($time_zone_arr); //Grab the first time zone, as it is most common foreach ($time_zone_arr as $time_zone => $count) { break; } if ($time_zone != '') { //Set pay period timezone to the timezone of the majority of the users are in. $pps_obj->setTimeZone($time_zone); if ($pps_obj->isValid()) { $pps_obj->Save(); } } } } } Debug::text('l: ' . $this->getVersion(), __FILE__, __LINE__, __METHOD__, 9); return TRUE; }
unset($user_value_str, $user_values); } } //var_dump($user_deduction); foreach ($ulf as $u_obj) { //Wage data if (isset($user_wage[$u_obj->getId()])) { //Debug::Text('Wage Data found for User ID: '. $u_obj->getId(), __FILE__, __LINE__, __METHOD__,10); $user_wage_data = $user_wage[$u_obj->getId()]; } else { Debug::Text('No Wage Data found for User ID: ' . $u_obj->getId(), __FILE__, __LINE__, __METHOD__, 10); //Dummy array $user_wage_data = array('type_id' => NULL, 'type' => NULL, 'wage' => NULL, 'effective_date_order' => NULL, 'effective_date' => NULL); } //Get user preference data. $uplf = new UserPreferenceListFactory(); $uplf->getByUserId($u_obj->getId()); if ($uplf->getRecordCount() > 0) { $up_obj = $uplf->getCurrent(); $user_pref_data = array('language' => Option::getByKey($up_obj->getLanguage(), $language_options), 'date_format' => Option::getByKey($up_obj->getDateFormat(), $date_format_options), 'time_format' => Option::getByKey($up_obj->getTimeFormat(), $time_format_options), 'time_unit' => Option::getByKey($up_obj->getTimeUnitFormat(), $time_unit_format_options), 'time_zone' => Option::getByKey($up_obj->getTimeZone(), $time_zone_options), 'start_week_day' => Option::getByKey($up_obj->getStartWeekDay(), $start_week_day_options), 'items_per_page' => $up_obj->getItemsPerPage()); } if (isset($permission_control_user_map[$u_obj->getId()])) { $permission_control_id = $permission_control_user_map[$u_obj->getId()]; } else { $permission_control_id = 0; } if (isset($policy_group_user_map[$u_obj->getId()])) { $policy_group_id = $policy_group_user_map[$u_obj->getId()]; } else { $policy_group_id = 0; }
static function findOrInsertUserDate($user_id, $date, $timezone = NULL) { $date = TTDate::getMiddleDayEpoch($date); //Use mid day epoch so the timezone conversion across DST doesn't affect the date. if ($timezone == NULL) { //Find the employees preferred timezone, base the user date off that instead of the pay period timezone, //as it can be really confusing to the user if they punch in at 10AM on Sept 27th, but it records as Sept 26th because //the PP Schedule timezone is 12hrs different or something. $uplf = new UserPreferenceListFactory(); $uplf->getByUserID($user_id); if ($uplf->getRecordCount() > 0) { $timezone = $uplf->getCurrent()->getTimeZone(); } } $date = TTDate::convertTimeZone($date, $timezone); Debug::text(' Using TimeZone: ' . $timezone . ' Date: ' . TTDate::getDate('DATE+TIME', $date) . '(' . $date . ')', __FILE__, __LINE__, __METHOD__, 10); $udlf = new UserDateListFactory(); $udlf->getByUserIdAndDate($user_id, $date); if ($udlf->getRecordCount() == 1) { $id = $udlf->getCurrent()->getId(); Debug::text(' Found Already Existing User Date ID: ' . $id, __FILE__, __LINE__, __METHOD__, 10); return $id; } elseif ($udlf->getRecordCount() == 0) { Debug::text(' Inserting new UserDate row.', __FILE__, __LINE__, __METHOD__, 10); //Insert new row $udf = new UserDateFactory(); $udf->setUser($user_id); $udf->setDateStamp($date); $udf->setPayPeriod(); if ($udf->isValid()) { return $udf->Save(); } else { Debug::text(' INVALID user date row. Pay Period Locked?', __FILE__, __LINE__, __METHOD__, 10); } } elseif ($udlf->getRecordCount() > 1) { Debug::text(' More then 1 user date row was detected!!: ' . $udlf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10); } Debug::text(' Cant find or insert User Date ID. User ID: ' . $user_id . ' Date: ' . $date, __FILE__, __LINE__, __METHOD__, 10); return FALSE; }
function getEmailMessageAddresses() { $olf = $this->getObjectHandler(); if (is_object($olf)) { $olf->getById($this->getObject()); if ($olf->getRecordCount() > 0) { $obj = $olf->getCurrent(); switch ($this->getObjectType()) { case 5: case 100: Debug::Text('Email Object Type... Parent ID: ' . $this->getParent(), __FILE__, __LINE__, __METHOD__, 10); if ($this->getParent() == 0) { $user_ids[] = $obj->getId(); } else { $mlf = new MessageListFactory(); $mlf->getById($this->getParent()); if ($mlf->getRecordCount() > 0) { $m_obj = $mlf->getCurrent(); $user_ids[] = $m_obj->getCreatedBy(); } Debug::Text('cEmail Object Type... Parent ID: ' . $this->getParent(), __FILE__, __LINE__, __METHOD__, 10); } break; case 40: $user_ids[] = $obj->getId(); break; case 50: //Request //Get all users who have contributed to the thread. $mlf = new MessageListFactory(); $mlf->getMessagesInThreadById($this->getId()); Debug::Text(' Messages In Thread: ' . $mlf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10); if ($mlf->getRecordCount() > 0) { foreach ($mlf as $m_obj) { $user_ids[] = $m_obj->getCreatedBy(); } } unset($mlf, $m_obj); //Debug::Arr($user_ids, 'User IDs in Thread: ', __FILE__, __LINE__, __METHOD__,10); //Only alert direct supervisor to request at this point. Because we need to take into account //if the request was authorized or not to determine if we should email the next higher level in the hierarchy. if ($this->getParent() == 0) { //Get direct parent in hierarchy. $u_obj = $obj->getUserObject(); //Find proper hierarchy to use for this object $hotlf = new HierarchyObjectTypeListFactory(); $control_id = $hotlf->getByCompanyIdAndObjectTypeId($u_obj->getCompany(), $this->getObjectType())->getCurrent()->getHierarchyControl(); Debug::Text(' Hierarchy Control ID: ' . $control_id, __FILE__, __LINE__, __METHOD__, 10); $hlf = new HierarchyListFactory(); $node_data = $hlf->getByHierarchyControlIdAndUserId($control_id, $u_obj->getId()); if ($node_data['parent_id'] != 0) { $user_ids[] = $node_data['parent_id']; } unset($hotlf, $control_id, $hlf, $node_data); } global $current_user; if (isset($current_user) and is_object($current_user) and isset($user_ids) and is_array($user_ids)) { $user_ids = array_unique($user_ids); $current_user_key = array_search($current_user->getId(), $user_ids); Debug::Text(' Current User Key: ' . $current_user_key, __FILE__, __LINE__, __METHOD__, 10); if ($current_user_key !== FALSE) { Debug::Text(' Removing Current User From Recipient List...' . $current_user->getId(), __FILE__, __LINE__, __METHOD__, 10); unset($user_ids[$current_user_key]); } } else { Debug::Text(' Current User Object not available...', __FILE__, __LINE__, __METHOD__, 10); } unset($current_user, $current_user_key); break; case 90: $user_ids[] = $obj->getUser(); break; } } if (isset($user_ids) and is_array($user_ids)) { //Get user preferences and determine if they accept email notifications. Debug::Arr($user_ids, 'Recipient User Ids: ', __FILE__, __LINE__, __METHOD__, 10); $uplf = new UserPreferenceListFactory(); $uplf->getByUserId($user_ids); if ($uplf->getRecordCount() > 0) { foreach ($uplf as $up_obj) { if ($up_obj->getEnableEmailNotificationMessage() == TRUE and $up_obj->getUserObject()->getStatus() == 10) { if ($up_obj->getUserObject()->getWorkEmail() != '') { $retarr[] = $up_obj->getUserObject()->getWorkEmail(); } if ($up_obj->getEnableEmailNotificationHome() and $up_obj->getUserObject()->getHomeEmail() != '') { $retarr[] = $up_obj->getUserObject()->getHomeEmail(); } } } if (isset($retarr)) { Debug::Arr($retarr, 'Recipient Email Addresses: ', __FILE__, __LINE__, __METHOD__, 10); return $retarr; } } } } return FALSE; }
} Redirect::Page(URLBuilder::getURL(array('user_id' => $pref_data['user_id'], 'data_saved' => 1), Environment::getBaseURL() . '/users/EditUserPreference.php')); unset($upf); break; } default: if (!isset($user_id) or isset($user_id) and $user_id == '') { $user_id = $current_user->getId(); } $ulf->getByIdAndCompanyId($user_id, $current_company->getId()); if ($ulf->getRecordCount() > 0) { $user_obj = $ulf->getCurrent(); } if (!isset($action)) { BreadCrumb::setCrumb($title); $uplf = new UserPreferenceListFactory(); $uplf->getByUserIDAndCompanyID($user_id, $current_company->getId()); if (isset($user_obj) and is_object($user_obj)) { $is_owner = $permission->isOwner($user_obj->getCreatedBy(), $user_obj->getId()); $is_child = $permission->isChild($user_obj->getId(), $permission_children_ids); if ($permission->Check('user_preference', 'edit') or $permission->Check('user_preference', 'edit_own') and $is_owner === TRUE or $permission->Check('user_preference', 'edit_child') and $is_child === TRUE) { foreach ($uplf as $user_preference) { $pref_data = array('id' => $user_preference->getId(), 'user_id' => $user_preference->getUser(), 'user_full_name' => $user_obj->getFullName(), 'language' => $user_preference->getLanguage(), 'date_format' => $user_preference->getDateFormat(), 'other_date_format' => $user_preference->getDateFormat(), 'time_format' => $user_preference->getTimeFormat(), 'time_zone' => $user_preference->getTimeZone(), 'time_unit_format' => $user_preference->getTimeUnitFormat(), 'timesheet_view' => $user_preference->getTimeSheetView(), 'start_week_day' => $user_preference->getStartWeekDay(), 'items_per_page' => $user_preference->getItemsPerPage(), 'enable_email_notification_exception' => $user_preference->getEnableEmailNotificationException(), 'enable_email_notification_message' => $user_preference->getEnableEmailNotificationMessage(), 'enable_email_notification_home' => $user_preference->getEnableEmailNotificationHome(), 'created_date' => $user_preference->getCreatedDate(), 'created_by' => $user_preference->getCreatedBy(), 'updated_date' => $user_preference->getUpdatedDate(), 'updated_by' => $user_preference->getUpdatedBy(), 'deleted_date' => $user_preference->getDeletedDate(), 'deleted_by' => $user_preference->getDeletedBy()); } } } } if (!isset($pref_data) and isset($user_obj)) { $udlf = new UserDefaultListFactory(); $udlf->getByCompanyId($current_company->getId()); if ($udlf->getRecordCount() > 0) {
function postInstall() { global $cache; Debug::text('postInstall: ' . $this->getVersion(), __FILE__, __LINE__, __METHOD__, 9); //Configure currencies for Standard Edition. if ($this->getIsUpgrade() == TRUE) { $clf = new CompanyListFactory(); $clf->StartTransaction(); $clf->getAll(); if ($clf->getRecordCount() > 0) { foreach ($clf as $c_obj) { if ($c_obj->getStatus() == 10) { //Converting to new Accrual Policy table. Debug::text('Converting to new Accrual Policy Table: ' . $c_obj->getName() . ' ID: ' . $c_obj->getId(), __FILE__, __LINE__, __METHOD__, 9); $pglf = new PolicyGroupListFactory(); $pglf->getByCompanyId($c_obj->getId()); if ($pglf->getRecordCount() > 0) { foreach ($pglf as $pg_obj) { Debug::text('Accrual Policy ID: ' . $pg_obj->getColumn('accrual_policy_id'), __FILE__, __LINE__, __METHOD__, 9); if ($pg_obj->getColumn('accrual_policy_id') != '' and $pg_obj->getColumn('accrual_policy_id') != 0) { $pg_obj->setAccrualPolicy(array($pg_obj->getColumn('accrual_policy_id'))); if ($pg_obj->isValid()) { $pg_obj->Save(); } } } } Debug::text('Adding Currency Information to Company: ' . $c_obj->getName() . ' ID: ' . $c_obj->getId(), __FILE__, __LINE__, __METHOD__, 9); $crlf = new CurrencyListFactory(); $crlf->getByCompanyId($c_obj->getId()); if ($crlf->getRecordCount() == 0) { $cf = new CurrencyFactory(); $country_to_currency_map_arr = $cf->getOptions('country_currency'); if (isset($country_to_currency_map_arr[$c_obj->getCountry()])) { $base_currency = $country_to_currency_map_arr[$c_obj->getCountry()]; Debug::text('Found Base Currency For Country: ' . $c_obj->getCountry() . ' Currency: ' . $base_currency, __FILE__, __LINE__, __METHOD__, 9); } else { Debug::text('DID NOT Find Base Currency For Country: ' . $c_obj->getCountry() . ' Using default USD.', __FILE__, __LINE__, __METHOD__, 9); $base_currency = 'USD'; } $cf->setCompany($c_obj->getId()); $cf->setStatus(10); $cf->setName($base_currency); $cf->setISOCode($base_currency); $cf->setConversionRate('1.000000000'); $cf->setAutoUpdate(FALSE); $cf->setBase(TRUE); $cf->setDefault(TRUE); if ($cf->isValid()) { $base_currency_id = $cf->Save(); Debug::text('Base Currency ID: ' . $base_currency_id, __FILE__, __LINE__, __METHOD__, 10); //Set Employee Hire Defaults. $udlf = new UserDefaultListFactory(); $udlf->getByCompanyId($c_obj->getId()); if ($udlf->getRecordCount() > 0) { $ud_obj = $udlf->getCurrent(); $ud_obj->setCurrency($base_currency_id); $ud_obj->setLanguage('en'); if ($ud_obj->isValid()) { $ud_obj->Save(); } } unset($udlf, $ud_obj); if (is_numeric($base_currency_id)) { $ulf = new UserListFactory(); $ulf->getByCompanyId($c_obj->getId()); if ($ulf->getRecordCount() > 0) { foreach ($ulf as $u_obj) { $user_id = $u_obj->getID(); Debug::text('Setting Base Currency For User: '******' ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); $u_obj->setCurrency($base_currency_id); if ($u_obj->isValid()) { if ($u_obj->Save() == TRUE) { //Set User Default Language $uplf = new UserPreferenceListFactory(); $uplf->getByUserIDAndCompanyID($user_id, $c_obj->getId()); if ($uplf->getRecordCount() > 0) { $up_obj = $uplf->getCurrent(); $up_obj->setLanguage('en'); //Englist if ($up_obj->isValid()) { $up_obj->Save(); } } unset($uplf, $up_obj); Debug::text(' Setting Base Currency for Pay Stubs, User ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); //Change all pay stubs for this user to the base currency. //Do this in a single query for speed purposes. $ph = array('currency_id' => $base_currency_id, 'currency_rate' => '1.000000000', 'user_id' => $user_id); $query = 'update pay_stub set currency_id = ?, currency_rate = ? where user_id = ?'; Debug::text(' Pay Stub Currency Query: ' . $query, __FILE__, __LINE__, __METHOD__, 10); $u_obj->db->Execute($query, $ph); /* $pslf = new PayStubListFactory(); $pslf->getByUserIdAndCompanyId( $user_id, $c_obj->getId() ); if ( $pslf->getRecordCount() > 0 ) { foreach( $pslf as $ps_obj ) { //Debug::text(' Setting Base Currency for Pay Stub ID: '. $ps_obj->getId(), __FILE__, __LINE__, __METHOD__,10); $ps_obj->setCurrency( $base_currency_id ); if ( $ps_obj->isValid() ) { $ps_obj->setEnableLinkedAccruals( FALSE ); $ps_obj->setEnableCalcYTD( FALSE ); $ps_obj->setEnableProcessEntries( FALSE ); $ps_obj->Save(); } unset($ps_obj); } } unset($pslf); */ } else { Debug::text('Failed saving user ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); } } else { Debug::text('Failed saving user ID: ' . $user_id, __FILE__, __LINE__, __METHOD__, 10); } unset($u_obj, $user_id); } } unset($ulf); } } unset($cf); } } else { Debug::text('Company is not active! ' . $c_obj->getId(), __FILE__, __LINE__, __METHOD__, 10); } unset($c_obj, $base_currency, $base_currency_id, $crlf); } } //$clf->FailTransaction(); $clf->CommitTransaction(); } //Add currency updating to cron. $maint_base_path = Environment::getBasePath() . DIRECTORY_SEPARATOR . 'maint' . DIRECTORY_SEPARATOR; if (PHP_OS == 'WINNT') { $cron_job_base_command = 'php-win.exe ' . $maint_base_path; } else { $cron_job_base_command = 'php ' . $maint_base_path; } Debug::text('Cron Job Base Command: ' . $cron_job_base_command, __FILE__, __LINE__, __METHOD__, 9); $cjf = new CronJobFactory(); $cjf->setName('UpdateCurrencyRates'); $cjf->setMinute(45); $cjf->setHour(1); $cjf->setDayOfMonth('*'); $cjf->setMonth('*'); $cjf->setDayOfWeek('*'); $cjf->setCommand($cron_job_base_command . 'UpdateCurrencyRates.php'); $cjf->Save(); return TRUE; }
function getUserPreferenceObject() { if (is_object($this->user_preference_obj)) { return $this->user_preference_obj; } else { $uplf = new UserPreferenceListFactory(); $this->user_preference_obj = $uplf->getByUserId($this->getId())->getCurrent(); return $this->user_preference_obj; } }