1015 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			1015 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*********************************************************************************
 | 
						|
 *
 | 
						|
 * TimeTrex is a Workforce Management program developed by
 | 
						|
 * TimeTrex Software Inc. Copyright (C) 2003 - 2021 TimeTrex Software Inc.
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify it under
 | 
						|
 * the terms of the GNU Affero General Public License version 3 as published by
 | 
						|
 * the Free Software Foundation with the addition of the following permission
 | 
						|
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 | 
						|
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY TIMETREX, TIMETREX DISCLAIMS THE
 | 
						|
 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
						|
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | 
						|
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 | 
						|
 * details.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Affero General Public License along
 | 
						|
 * with this program; if not, see http://www.gnu.org/licenses or write to the Free
 | 
						|
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
 * 02110-1301 USA.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * You can contact TimeTrex headquarters at Unit 22 - 2475 Dobbin Rd. Suite
 | 
						|
 * #292 West Kelowna, BC V4T 2E9, Canada or at email address info@timetrex.com.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * The interactive user interfaces in modified source and object code versions
 | 
						|
 * of this program must display Appropriate Legal Notices, as required under
 | 
						|
 * Section 5 of the GNU Affero General Public License version 3.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * In accordance with Section 7(b) of the GNU Affero General Public License
 | 
						|
 * version 3, these Appropriate Legal Notices must retain the display of the
 | 
						|
 * "Powered by TimeTrex" logo. If the display of the logo is not reasonably
 | 
						|
 * feasible for technical reasons, the Appropriate Legal Notices must display
 | 
						|
 * the words "Powered by TimeTrex".
 | 
						|
 *
 | 
						|
 ********************************************************************************/
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * @package API\Core
 | 
						|
 */
 | 
						|
class APIDashboard extends APIFactory {
 | 
						|
	protected $main_class = false;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * APIDashboard constructor.
 | 
						|
	 */
 | 
						|
	public function __construct() {
 | 
						|
		parent::__construct(); //Make sure parent constructor is always called.
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get all possible dashlets
 | 
						|
	 * @param bool $name
 | 
						|
	 * @param null $parent
 | 
						|
	 * @return bool|array
 | 
						|
	 */
 | 
						|
	function getOptions( $name = false, $parent = null ) {
 | 
						|
		$product_edition = $this->getCurrentCompanyObject()->getProductEdition();
 | 
						|
 | 
						|
		$retarr = [];
 | 
						|
		switch ( $name ) {
 | 
						|
			case 'dashlets':
 | 
						|
				$retarr = [];
 | 
						|
 | 
						|
				//News
 | 
						|
				$retarr['news'] = TTi18n::getText( 'News' );
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'punch', 'enabled' ) && $this->getPermissionObject()->Check( 'punch', 'view_own' ) ) {
 | 
						|
					$retarr['exception_summary'] = TTi18n::getText( 'Exceptions' );         //Current/Last week, Own
 | 
						|
					$retarr['timesheet_summary'] = TTi18n::getText( 'TimeSheet Summary' );  //Current/Last week, Own
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_timesheet_summary' ) ) {
 | 
						|
						$retarr['timesheet_verification_summary'] = TTi18n::getText( 'TimeSheet Verifications' ); //Own
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'punch', 'enabled' ) && ( $this->getPermissionObject()->Check( 'punch', 'view_child' ) || $this->getPermissionObject()->Check( 'punch', 'view' ) ) ) {
 | 
						|
					$retarr['exception_summary_child'] = TTi18n::getText( 'Exceptions (Subordinates)' );  //Current/Last week, Subordinates/All
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_timesheet_summary' ) ) {
 | 
						|
						$retarr['timesheet_verification_summary_child'] = TTi18n::getText( 'TimeSheet Verifications (Subordinates)' ); //Subordinates/All
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'request', 'enabled' ) && $this->getPermissionObject()->Check( 'request', 'view_own' ) ) {
 | 
						|
					$retarr['request_summary'] = TTi18n::getText( 'Requests' );  //Current/Last week, Own
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'request', 'enabled' ) && ( $this->getPermissionObject()->Check( 'request', 'authorize' ) ) ) {
 | 
						|
					$retarr['request_authorize_summary'] = TTi18n::getText( 'Request Authorizations' );  //Subordinates
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'message', 'enabled' ) && $this->getPermissionObject()->Check( 'message', 'view_own' ) ) {
 | 
						|
					$retarr['message_summary'] = TTi18n::getText( 'Messages (UnRead)' );  //Own
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'accrual', 'enabled' ) && $this->getPermissionObject()->Check( 'accrual', 'view_own' ) ) {
 | 
						|
					$retarr['accrual_balance_summary'] = TTi18n::getText( 'Accrual Balances' );  //Own
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $product_edition >= 25 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'expense', 'enabled' ) && $this->getPermissionObject()->Check( 'expense', 'view_own' ) ) {
 | 
						|
						$retarr['expense_summary'] = TTi18n::getText( 'Expenses' );  //Current/Last week, Own
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'expense', 'enabled' ) && ( $this->getPermissionObject()->Check( 'expense', 'authorize' ) ) ) {
 | 
						|
						$retarr['expense_authorize_summary'] = TTi18n::getText( 'Expense Authorizations' );  //Subordinates
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_active_shift' ) ) { //Don't check punch/user permissions, as the ActiveShift report itself does not do that.
 | 
						|
					$retarr['user_active_shift_summary'] = TTi18n::getText( 'Whos In/Out' );  //Subordinates/All
 | 
						|
				}
 | 
						|
 | 
						|
				if ( $this->getPermissionObject()->Check( 'schedule', 'enabled' ) ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'schedule', 'view_own' ) ) {
 | 
						|
						$retarr['schedule_summary'] = TTi18n::getText( 'Schedule Summary' );  //Own
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'schedule', 'view_child' ) || $this->getPermissionObject()->Check( 'schedule', 'view' ) ) {
 | 
						|
						$retarr['schedule_summary_child'] = TTi18n::getText( 'Schedule Summary (Subordinates)' );  //Own
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				asort( $retarr ); //Put Custom List/Custom Report at the bottom always.
 | 
						|
				if ( $product_edition > 10 ) {
 | 
						|
					$retarr['custom_list'] = TTi18n::getText( 'Custom List' );      //Saved Search & Layout
 | 
						|
					$retarr['custom_report'] = TTi18n::getText( 'Custom Report' );  //Report, Report Template/Saved Report
 | 
						|
				}
 | 
						|
 | 
						|
				$retarr = Misc::addSortPrefix( $retarr );
 | 
						|
 | 
						|
				break;
 | 
						|
			case 'custom_list':
 | 
						|
				$retarr = [];
 | 
						|
 | 
						|
				//Attendance
 | 
						|
				if ( $this->getPermissionObject()->Check( 'punch', 'enabled' ) && ( $this->getPermissionObject()->Check( 'punch', 'view_own' ) || $this->getPermissionObject()->Check( 'punch', 'view_child' ) || $this->getPermissionObject()->Check( 'punch', 'view' ) ) ) {
 | 
						|
					$retarr['Exception'] = TTi18n::getText( 'Exceptions' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'accrual', 'enabled' ) && ( $this->getPermissionObject()->Check( 'accrual', 'view_own' ) || $this->getPermissionObject()->Check( 'accrual', 'view_child' ) || $this->getPermissionObject()->Check( 'accrual', 'view' ) ) ) {
 | 
						|
					$retarr['AccrualBalance'] = TTi18n::getText( 'Accrual Balances' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'accrual', 'enabled' ) && ( $this->getPermissionObject()->Check( 'accrual', 'view_own' ) || $this->getPermissionObject()->Check( 'accrual', 'view_child' ) || $this->getPermissionObject()->Check( 'accrual', 'view' ) ) ) {
 | 
						|
					$retarr['Accrual'] = TTi18n::getText( 'Accruals' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'schedule', 'enabled' ) && ( $this->getPermissionObject()->Check( 'schedule', 'view_own' ) || $this->getPermissionObject()->Check( 'schedule', 'view_child' ) || $this->getPermissionObject()->Check( 'schedule', 'view' ) ) ) {
 | 
						|
					$retarr['Schedule'] = TTi18n::getText( 'Scheduled Shifts' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'recurring_schedule', 'enabled' ) && ( $this->getPermissionObject()->Check( 'recurring_schedule', 'view_own' ) || $this->getPermissionObject()->Check( 'recurring_schedule', 'view_child' ) || $this->getPermissionObject()->Check( 'recurring_schedule', 'view' ) ) ) {
 | 
						|
					$retarr['RecurringScheduleControl'] = TTi18n::getText( 'Recurring Schedules' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'recurring_schedule_template', 'enabled' ) && ( $this->getPermissionObject()->Check( 'recurring_schedule_template', 'view_own' ) || $this->getPermissionObject()->Check( 'recurring_schedule_template', 'view_child' ) || $this->getPermissionObject()->Check( 'recurring_schedule_template', 'view' ) ) ) {
 | 
						|
					$retarr['RecurringScheduleTemplateControl'] = TTi18n::getText( 'Recurring Templates' );
 | 
						|
				}
 | 
						|
				if ( $product_edition >= 20 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'job', 'enabled' ) && ( $this->getPermissionObject()->Check( 'job', 'view_own' ) || $this->getPermissionObject()->Check( 'job', 'view_child' ) || $this->getPermissionObject()->Check( 'job', 'view' ) ) ) {
 | 
						|
						$retarr['Job'] = TTi18n::getText( 'Jobs' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'job_item', 'enabled' ) && ( $this->getPermissionObject()->Check( 'job_item', 'view_own' ) || $this->getPermissionObject()->Check( 'job_item', 'view_child' ) || $this->getPermissionObject()->Check( 'job_item', 'view' ) ) ) {
 | 
						|
						$retarr['JobItem'] = TTi18n::getText( 'Tasks' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//Employee
 | 
						|
				if ( $this->getPermissionObject()->Check( 'user', 'enabled' ) && ( $this->getPermissionObject()->Check( 'user', 'view_own' ) || $this->getPermissionObject()->Check( 'user', 'view_child' ) || $this->getPermissionObject()->Check( 'user', 'view' ) ) ) {
 | 
						|
					$retarr['User'] = TTi18n::getText( 'Employees' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'user_contact', 'enabled' ) && ( $this->getPermissionObject()->Check( 'user_contact', 'view_own' ) || $this->getPermissionObject()->Check( 'user_contact', 'view_child' ) || $this->getPermissionObject()->Check( 'user_contact', 'view' ) ) ) {
 | 
						|
					$retarr['UserContact'] = TTi18n::getText( 'Employee Contacts' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'wage', 'enabled' ) && ( $this->getPermissionObject()->Check( 'wage', 'view_own' ) || $this->getPermissionObject()->Check( 'wage', 'view_child' ) || $this->getPermissionObject()->Check( 'wage', 'view' ) ) ) {
 | 
						|
					$retarr['UserWage'] = TTi18n::getText( 'Wages' );
 | 
						|
				}
 | 
						|
 | 
						|
				//Company
 | 
						|
 | 
						|
 | 
						|
				//Payroll
 | 
						|
				if ( $this->getPermissionObject()->Check( 'pay_stub', 'enabled' ) && ( $this->getPermissionObject()->Check( 'pay_stub', 'view_own' ) || $this->getPermissionObject()->Check( 'pay_stub', 'view_child' ) || $this->getPermissionObject()->Check( 'pay_stub', 'view' ) ) ) {
 | 
						|
					$retarr['PayStub'] = TTi18n::getText( 'Pay Stubs' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'pay_period', 'enabled' ) && ( $this->getPermissionObject()->Check( 'pay_period', 'view_own' ) || $this->getPermissionObject()->Check( 'pay_period', 'view_child' ) || $this->getPermissionObject()->Check( 'pay_period', 'view' ) ) ) {
 | 
						|
					$retarr['PayPeriod'] = TTi18n::getText( 'Pay Periods' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'pay_stub_amendment', 'enabled' ) && ( $this->getPermissionObject()->Check( 'pay_stub_amendment', 'view_own' ) || $this->getPermissionObject()->Check( 'pay_stub_amendment', 'view_child' ) || $this->getPermissionObject()->Check( 'pay_stub_amendment', 'view' ) ) ) {
 | 
						|
					$retarr['PayStubAmendment'] = TTi18n::getText( 'Pay Stub Amendments' );
 | 
						|
				}
 | 
						|
				if ( $product_edition >= 25 && $this->getPermissionObject()->Check( 'user_expense', 'enabled' ) && ( $this->getPermissionObject()->Check( 'user_expense', 'view_own' ) || $this->getPermissionObject()->Check( 'user_expense', 'view_child' ) || $this->getPermissionObject()->Check( 'user_expense', 'view' ) ) ) {
 | 
						|
					$retarr['UserExpense'] = TTi18n::getText( 'Expenses' );
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//Invoice
 | 
						|
				if ( $product_edition >= 20 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'client', 'enabled' ) && ( $this->getPermissionObject()->Check( 'client', 'view_own' ) || $this->getPermissionObject()->Check( 'client', 'view_child' ) || $this->getPermissionObject()->Check( 'client', 'view' ) ) ) {
 | 
						|
						$retarr['Client'] = TTi18n::getText( 'Clients' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'client_contact', 'enabled' ) && ( $this->getPermissionObject()->Check( 'client_contact', 'view_own' ) || $this->getPermissionObject()->Check( 'client_contact', 'view_child' ) || $this->getPermissionObject()->Check( 'client_contact', 'view' ) ) ) {
 | 
						|
						$retarr['ClientContact'] = TTi18n::getText( 'Client Contacts' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'invoice', 'enabled' ) && ( $this->getPermissionObject()->Check( 'invoice', 'view_own' ) || $this->getPermissionObject()->Check( 'invoice', 'view_child' ) || $this->getPermissionObject()->Check( 'invoice', 'view' ) ) ) {
 | 
						|
						$retarr['Invoice'] = TTi18n::getText( 'Invoices' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'invoice', 'enabled' ) && ( $this->getPermissionObject()->Check( 'invoice', 'view_own' ) || $this->getPermissionObject()->Check( 'invoice', 'view_child' ) || $this->getPermissionObject()->Check( 'invoice', 'view' ) ) ) {
 | 
						|
						$retarr['Transaction'] = TTi18n::getText( 'Invoice Transactions' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//HR
 | 
						|
				if ( $this->getPermissionObject()->Check( 'user_review', 'enabled' ) && ( $this->getPermissionObject()->Check( 'user_review', 'view_own' ) || $this->getPermissionObject()->Check( 'user_review', 'view_child' ) || $this->getPermissionObject()->Check( 'user_review', 'view' ) ) ) {
 | 
						|
					$retarr['UserReviewControl'] = TTi18n::getText( 'Reviews' );
 | 
						|
				}
 | 
						|
				if ( $product_edition >= 25 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'job_vacancy', 'enabled' ) && ( $this->getPermissionObject()->Check( 'job_vacancy', 'view_own' ) || $this->getPermissionObject()->Check( 'job_vacancy', 'view_child' ) || $this->getPermissionObject()->Check( 'job_vacancy', 'view' ) ) ) {
 | 
						|
						$retarr['JobVacancy'] = TTi18n::getText( 'Job Vacancies' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'job_applicant', 'enabled' ) && ( $this->getPermissionObject()->Check( 'job_applicant', 'view_own' ) || $this->getPermissionObject()->Check( 'job_applicant', 'view_child' ) || $this->getPermissionObject()->Check( 'job_applicant', 'view' ) ) ) {
 | 
						|
						$retarr['JobApplicant'] = TTi18n::getText( 'Job Applicants' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'job_application', 'enabled' ) && ( $this->getPermissionObject()->Check( 'job_application', 'view_own' ) || $this->getPermissionObject()->Check( 'job_application', 'view_child' ) || $this->getPermissionObject()->Check( 'job_application', 'view' ) ) ) {
 | 
						|
						$retarr['JobApplication'] = TTi18n::getText( 'Job Applications' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//My Account
 | 
						|
				if ( $this->getPermissionObject()->Check( 'request', 'enabled' ) && ( $this->getPermissionObject()->Check( 'request', 'view_own' ) || $this->getPermissionObject()->Check( 'request', 'view_child' ) || $this->getPermissionObject()->Check( 'request', 'view' ) ) ) {
 | 
						|
					$retarr['Request'] = TTi18n::getText( 'Requests' );
 | 
						|
				}
 | 
						|
				//  Expenses is already added above.
 | 
						|
 | 
						|
 | 
						|
				//My Account -> Authorization related views.
 | 
						|
				if ( $this->getPermissionObject()->Check( 'request', 'enabled' ) && $this->getPermissionObject()->Check( 'request', 'authorize' ) && ( $this->getPermissionObject()->Check( 'request', 'view_child' ) || $this->getPermissionObject()->Check( 'request', 'view' ) ) ) {
 | 
						|
					$retarr['Request-Authorization'] = TTi18n::getText( 'Request Authorization' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'punch', 'enabled' ) && $this->getPermissionObject()->Check( 'punch', 'verify_time_sheet' ) && ( $this->getPermissionObject()->Check( 'punch', 'view_child' ) || $this->getPermissionObject()->Check( 'punch', 'view' ) ) ) {
 | 
						|
					$retarr['PayPeriodTimeSheetVerify'] = TTi18n::getText( 'TimeSheet Verification' );
 | 
						|
				}
 | 
						|
				if ( $product_edition >= 25 && $this->getPermissionObject()->Check( 'user_expense', 'enabled' ) && $this->getPermissionObject()->Check( 'user_expense', 'authorize' ) && ( $this->getPermissionObject()->Check( 'user_expense', 'view_child' ) || $this->getPermissionObject()->Check( 'user_expense', 'view' ) ) ) {
 | 
						|
					$retarr['UserExpense-Authorization'] = TTi18n::getText( 'Expense Verification' );
 | 
						|
				}
 | 
						|
 | 
						|
				asort( $retarr );
 | 
						|
				$retarr = Misc::addSortPrefix( $retarr );
 | 
						|
 | 
						|
				break;
 | 
						|
			case 'custom_report':
 | 
						|
				$retarr = [];
 | 
						|
 | 
						|
				//Employee Reports
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_user_information' ) ) {
 | 
						|
					$retarr['UserSummaryReport'] = TTi18n::getText( 'Employee Information' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_active_shift' ) ) {
 | 
						|
					$retarr['ActiveShiftReport'] = TTi18n::getText( 'Whos In Summary' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_system_log' ) ) {
 | 
						|
					$retarr['AuditTrailReport'] = TTi18n::getText( 'Audit Trail' );
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//TimeSheet Reports
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_schedule_summary' ) ) {
 | 
						|
					$retarr['ScheduleSummaryReport'] = TTi18n::getText( 'Schedule Summary' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_timesheet_summary' ) ) {
 | 
						|
					$retarr['TimesheetSummaryReport'] = TTi18n::getText( 'TimeSheet Summary' );
 | 
						|
					$retarr['TimesheetDetailReport'] = TTi18n::getText( 'TimeSheet Detail' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_punch_summary' ) ) {
 | 
						|
					$retarr['PunchSummaryReport'] = TTi18n::getText( 'Punch Summary' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_accrual_balance_summary' ) ) {
 | 
						|
					$retarr['AccrualBalanceSummaryReport'] = TTi18n::getText( 'Accrual Balance Summary' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_exception_summary' ) ) {
 | 
						|
					$retarr['ExceptionReport'] = TTi18n::getText( 'Exception Summary' );
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//Payroll Reports
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_pay_stub_summary' ) ) {
 | 
						|
					$retarr['PayStubSummaryReport'] = TTi18n::getText( 'Pay Stub Summary' );
 | 
						|
				}
 | 
						|
				if ( $product_edition >= 25 && $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_expense' ) ) {
 | 
						|
					$retarr['UserExpenseReport'] = TTi18n::getText( 'Expense Summary' );
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//Job Tracking Reports
 | 
						|
				if ( $product_edition >= 20 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'job_report', 'view_job_summary' ) ) {
 | 
						|
						$retarr['JobSummaryReport'] = TTi18n::getText( 'Job Summary' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'job_report', 'view_job_analysis' ) ) {
 | 
						|
						$retarr['JobDetailReport'] = TTi18n::getText( 'Job Analysis' );
 | 
						|
					}
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'job_report', 'view_job_summary' ) ) {
 | 
						|
						$retarr['JobInformationReport'] = TTi18n::getText( 'Job Information' );
 | 
						|
						$retarr['JobItemInformationReport'] = TTi18n::getText( 'Task Information' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//Invoice Reports
 | 
						|
				if ( $product_edition >= 20 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'report', 'view_transaction_summary' ) ) {
 | 
						|
						$retarr['InvoiceTransactionSummaryReport'] = TTi18n::getText( 'Transaction Summary' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//HR Reports
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'hr_report', 'user_qualification' ) ) {
 | 
						|
					$retarr['UserQualificationReport'] = TTi18n::getText( 'Qualification Summary' );
 | 
						|
				}
 | 
						|
				if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'hr_report', 'user_review' ) ) {
 | 
						|
					$retarr['KPIReport'] = TTi18n::getText( 'Review Summary' );
 | 
						|
				}
 | 
						|
 | 
						|
 | 
						|
				//HR-Recruitment Reports
 | 
						|
				if ( $product_edition >= 25 ) {
 | 
						|
					if ( $this->getPermissionObject()->Check( 'report', 'enabled' ) && $this->getPermissionObject()->Check( 'recruitment_report', 'user_recruitment' ) ) {
 | 
						|
						$retarr['UserRecruitmentSummaryReport'] = TTi18n::getText( 'Recruitment Summary' );
 | 
						|
						$retarr['UserRecruitmentDetailReport'] = TTi18n::getText( 'Recruitment Detail' );
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				asort( $retarr );
 | 
						|
				$retarr = Misc::addSortPrefix( $retarr );
 | 
						|
 | 
						|
				break;
 | 
						|
			case 'auto_refresh':
 | 
						|
				$retarr = [
 | 
						|
						0     => TTi18n::getText( 'Disabled' ),
 | 
						|
						300   => TTi18n::getText( '5 mins' ),
 | 
						|
						600   => TTi18n::getText( '10 mins' ),
 | 
						|
						900   => TTi18n::getText( '15 mins' ),
 | 
						|
						1800  => TTi18n::getText( '30 mins' ),
 | 
						|
						3600  => TTi18n::getText( '1 hour' ),
 | 
						|
						7200  => TTi18n::getText( '2 hours' ),
 | 
						|
						10800 => TTi18n::getText( '3 hours' ),
 | 
						|
						21600 => TTi18n::getText( '6 hours' ),
 | 
						|
				];
 | 
						|
 | 
						|
				if ( PRODUCTION == false ) { //Shorter time for testing.
 | 
						|
					$retarr[30] = TTi18n::getText( '30 seconds' );
 | 
						|
				}
 | 
						|
 | 
						|
				break;
 | 
						|
		}
 | 
						|
 | 
						|
		return $retarr;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Create filter base on user generic data
 | 
						|
	 * @param string $view_name        the view name
 | 
						|
	 * @param array $user_generic_data user generic data
 | 
						|
	 * @param $rows_per_page
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	function buildFilterParameters( $view_name, $user_generic_data, $rows_per_page ) {
 | 
						|
		$parameters = [];
 | 
						|
		$parameters['filter_columns'] = [];
 | 
						|
		// Always return id column in case we may need it.
 | 
						|
		$parameters['filter_columns']['id'] = true;
 | 
						|
		// If $user_generic_data set filter_data, convert it to api filter_data format.
 | 
						|
		if ( isset( $user_generic_data['filter_data'] ) ) {
 | 
						|
			$parameters['filter_data'] = [];
 | 
						|
			foreach ( $user_generic_data['filter_data'] as $key => $value ) {
 | 
						|
				if ( is_array( $value['value'] ) ) {
 | 
						|
					$values = [];
 | 
						|
					foreach ( $value['value'] as $i => $item ) {
 | 
						|
						if ( isset( $item['value'] ) ) { // saved options
 | 
						|
							$values[] = $item['value'];
 | 
						|
						} else {
 | 
						|
							if ( isset( $item['id'] ) ) {  // saved awesomebox
 | 
						|
								$values[] = $item['id'];
 | 
						|
							} else {
 | 
						|
								$values[] = $item;
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
					$parameters['filter_data'][$key] = $values;
 | 
						|
				} else {
 | 
						|
					$parameters['filter_data'][$key] = $value['value'];
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		// Add default filter for some views.
 | 
						|
		if ( $view_name == 'Request-Authorization' ) {
 | 
						|
			if ( !isset( $parameters['filter_data'] ) ) {
 | 
						|
				$parameters['filter_data'] = [];
 | 
						|
			}
 | 
						|
			if ( !isset( $parameters['filter_data']['type_id'] ) ) {
 | 
						|
				$parameters['filter_data']['type_id'] = [ -1 ];
 | 
						|
			}
 | 
						|
			if ( !isset( $parameters['filter_data']['hierarchy_level'] ) ) {
 | 
						|
				$parameters['filter_data']['hierarchy_level'] = 1;
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			if ( $view_name == 'PayPeriodTimeSheetVerify' ) {
 | 
						|
				if ( !isset( $parameters['filter_data'] ) ) {
 | 
						|
					$parameters['filter_data'] = [];
 | 
						|
				}
 | 
						|
				if ( !isset( $parameters['filter_data']['hierarchy_level'] ) ) {
 | 
						|
					$parameters['filter_data']['hierarchy_level'] = 1;
 | 
						|
				}
 | 
						|
			} else {
 | 
						|
				if ( $view_name == 'UserExpense-Authorization' ) {
 | 
						|
					if ( !isset( $parameters['filter_data'] ) ) {
 | 
						|
						$parameters['filter_data'] = [];
 | 
						|
					}
 | 
						|
					$parameters['filter_data']['parent_id'] = [ TTUUID::getZeroID() ];
 | 
						|
					if ( !isset( $parameters['filter_data']['hierarchy_level'] ) ) {
 | 
						|
						$parameters['filter_data']['hierarchy_level'] = 1;
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		// filter_sort in user generic data is same format as api need.
 | 
						|
		if ( isset( $user_generic_data['filter_sort'] ) ) {
 | 
						|
			$parameters['filter_sort'] = $user_generic_data['filter_sort'];
 | 
						|
		}
 | 
						|
		if ( isset( $user_generic_data['display_columns'] ) ) {
 | 
						|
			for ( $i = 0; $i < count( $user_generic_data['display_columns'] ); $i++ ) {
 | 
						|
				$parameters['filter_columns'][$user_generic_data['display_columns'][$i]] = true;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		$parameters['filter_items_per_page'] = $rows_per_page;
 | 
						|
 | 
						|
		return $parameters;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param $display_columns
 | 
						|
	 * @param $rows_per_page
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	function buildDefaultDashletParameters( $display_columns, $rows_per_page ) {
 | 
						|
		$parameters = [];
 | 
						|
		$parameters['filter_columns'] = [];
 | 
						|
		$parameters['filter_columns']['id'] = true;
 | 
						|
		if ( is_array( $display_columns ) ) {
 | 
						|
			for ( $i = 0; $i < count( $display_columns ); $i++ ) {
 | 
						|
				$parameters['filter_columns'][$display_columns[$i]] = true;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		$parameters['filter_items_per_page'] = $rows_per_page;
 | 
						|
 | 
						|
		return $parameters;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get data for specific datalet
 | 
						|
	 * @param string $name name of dashlet
 | 
						|
	 * @param bool $data
 | 
						|
	 * @return array
 | 
						|
	 * @internal param array $params parameters for returning dashlet data
 | 
						|
	 */
 | 
						|
	function getDashletData( $name, $data = false ) {
 | 
						|
		$name = strtolower( $name );
 | 
						|
		$display_columns = null;
 | 
						|
		Debug::Text( 'Name: ' . $name, __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
		switch ( $name ) {
 | 
						|
			case 'news':
 | 
						|
				$retarr = [];
 | 
						|
 | 
						|
				$current_epoch = time();
 | 
						|
 | 
						|
				//$product_edition = $this->getCurrentCompanyObject()->getProductEdition();
 | 
						|
 | 
						|
				//$permission = new Permission();
 | 
						|
				//$permission_level = $permission->getLevel( $this->getCurrentUserObject()->getId(), $this->getCurrentCompanyObject()->getId() );
 | 
						|
 | 
						|
				//Notify user of new features.
 | 
						|
				//if ( Misc::MajorVersionCompare( APPLICATION_VERSION, '9.0.0', '=' ) && TTDate::getBeginDayEpoch( $this->getCurrentUserObject()->getLastLoginDate() ) <= APPLICATION_VERSION_DATE ) {
 | 
						|
				//	$retarr[] = '*<b>' . TTi18n::getText( 'Tip' ) . '</b>: ' . TTi18n::getText( 'You can set the default screen that appears after login under MyAccount -> Preferences in the menu along the top of the screen.' );
 | 
						|
				//}
 | 
						|
				//
 | 
						|
				//if ( $product_edition > 10 && $permission_level >= 40 && Misc::MajorVersionCompare( APPLICATION_VERSION, '9.0.0', '=' ) && TTDate::getBeginDayEpoch( $this->getCurrentUserObject()->getLastLoginDate() ) <= APPLICATION_VERSION_DATE ) {
 | 
						|
				//	$retarr[] = '*<b>' . TTi18n::getText( 'Tip' ) . '</b>: ' . TTi18n::getText( 'You can add your own custom reports to the dashboard by clicking the Add Dashlet icon at the top left.' );
 | 
						|
				//}
 | 
						|
 | 
						|
				//
 | 
						|
				//Regular Employee Related news:
 | 
						|
				//
 | 
						|
				if ( ( $this->getPermissionObject()->Check( 'punch', 'enabled' ) && ( $this->getPermissionObject()->Check( 'punch', 'view_own' ) || $this->getPermissionObject()->Check( 'punch', 'punch_in_out' ) ) ) ) { //Exceptions are only viewable if they permissions to punch in/out.
 | 
						|
					//  Check for critical severity exceptions
 | 
						|
					$elf = TTNew( 'ExceptionListFactory' ); /** @var ExceptionListFactory $elf */
 | 
						|
					$elf->getFlaggedExceptionsByUserIdAndPayPeriodStatus( $this->getCurrentUserObject()->getId(), 10 );
 | 
						|
					if ( $elf->getRecordCount() > 0 ) {
 | 
						|
						foreach ( $elf as $e_obj ) {
 | 
						|
							if ( $e_obj->getColumn( 'severity_id' ) == 30 ) {
 | 
						|
								$retarr[] = TTi18n::getText( 'Critical severity exceptions exist, you may want to take a look at those.' );
 | 
						|
							}
 | 
						|
							break;
 | 
						|
						}
 | 
						|
					}
 | 
						|
					unset( $elf, $e_obj );
 | 
						|
				}
 | 
						|
 | 
						|
				//  Check for recent unread messages
 | 
						|
				$api = TTNew( 'APIMessageControl' ); /** @var APIMessageControl $api */
 | 
						|
				$api_result = $this->stripReturnHandler( $api->getMessageControl( [ 'filter_data' => [ 'status_id' => 10, 'folder_id' => 10 ] ] ) );
 | 
						|
				if ( is_array( $api_result ) && count( $api_result ) > 0 ) {
 | 
						|
					foreach ( $api_result as $message_data ) {
 | 
						|
						$retarr[] = TTi18n::getText( 'UnRead message sent from %1 on %2.', [ $message_data['from_first_name'] . ' ' . $message_data['from_last_name'], TTDate::getDate( 'DATE', TTDate::parseDateTime( $message_data['created_date'] ) ) ] );
 | 
						|
						break;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $api_result, $message_data );
 | 
						|
 | 
						|
				//  Check for timesheet verifications
 | 
						|
				$ppslf = TTNew( 'PayPeriodScheduleListFactory' ); /** @var PayPeriodScheduleListFactory $ppslf */
 | 
						|
				$ppslf->getByUserId( $this->getCurrentUserObject()->getId() );
 | 
						|
				if ( $ppslf->getRecordCount() > 0 ) {
 | 
						|
					foreach ( $ppslf as $pps_obj ) {
 | 
						|
						if ( in_array( $pps_obj->getTimeSheetVerifyType(), [ 20, 40 ] ) ) { //Check if TimeSheet Verification is enabled or not.
 | 
						|
							$pplf = TTNew( 'PayPeriodListFactory' ); /** @var PayPeriodListFactory $pplf */
 | 
						|
							$pplf->getThisPayPeriodByCompanyIdAndPayPeriodScheduleIdAndDate( $pps_obj->getCompany(), [ $pps_obj->getId() ], $current_epoch );
 | 
						|
							if ( $pplf->getRecordCount() > 0 ) {
 | 
						|
								foreach ( $pplf as $pp_obj ) {
 | 
						|
									Debug::Text( 'Pay Period ID: ' . $pp_obj->getId() . ' PP Schedule ID: ' . $pps_obj->getId(), __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
									$pptsvlf = TTnew( 'PayPeriodTimeSheetVerifyListFactory' ); /** @var PayPeriodTimeSheetVerifyListFactory $pptsvlf */
 | 
						|
									$pptsvlf->getByPayPeriodIdAndUserId( $pp_obj->getId(), $this->getCurrentUserObject()->getId() );
 | 
						|
									if ( $pptsvlf->getRecordCount() > 0 ) {
 | 
						|
										$pptsv_obj = $pptsvlf->getCurrent();
 | 
						|
										$pptsv_obj->setCurrentUser( $this->getCurrentUserObject()->getId() );
 | 
						|
									} else {
 | 
						|
										$pptsv_obj = $pptsvlf;
 | 
						|
										$pptsv_obj->setCurrentUser( $this->getCurrentUserObject()->getId() );
 | 
						|
										$pptsv_obj->setUser( $this->getCurrentUserObject()->getId() );
 | 
						|
										$pptsv_obj->setPayPeriod( $pp_obj->getId() );
 | 
						|
									}
 | 
						|
 | 
						|
									$verification_window_dates = $pptsv_obj->getVerificationWindowDates();
 | 
						|
									Debug::Arr( [ $pptsv_obj->getPayPeriodObject()->data, $verification_window_dates ], ' Verification Dates: ', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
									//Only display messages if the timesheet isn't already verified.
 | 
						|
									if ( $pptsv_obj->displayVerifyButton( $this->getCurrentUserObject()->getId(), $this->getCurrentUserObject()->getId() ) == true ) {
 | 
						|
										$retarr[] = TTi18n::getText( 'Timesheet verification required by %2', [ TTDate::getDate( 'DATE', $verification_window_dates['start'] ), TTDate::getDate( 'DATE', $verification_window_dates['end'] ) ] );
 | 
						|
									} else {
 | 
						|
										Debug::Text( 'TimeSheet Verification is not required or already done...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
									}
 | 
						|
								}
 | 
						|
								unset( $pptsvlf, $pptsv_obj, $verification_window_dates );
 | 
						|
							} else {
 | 
						|
								Debug::Text( 'No Pay Periods found for PP Schedule ID: ' . $pps_obj->getId(), __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
							}
 | 
						|
						} else {
 | 
						|
							Debug::Text( 'TimeSheet Verification is not enabled...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $ppslf, $pps_obj, $pplf, $pp_obj );
 | 
						|
 | 
						|
				//  Check for requests that changed status.
 | 
						|
				$rlf = TTNew( 'RequestListFactory' ); /** @var RequestListFactory $rlf */
 | 
						|
				$rlf->getAPISearchByCompanyIdAndArrayCriteria( $this->getCurrentUserObject()->getCompany(), [ 'user_id' => $this->getCurrentUserObject()->getId(), 'status_id' => [ 50, 55 ], 'updated_date_start' => ( TTDate::getBeginDayEpoch( $current_epoch ) - ( 86400 * 2 ) ), 'updated_date_end' => TTDate::getEndDayEpoch( $current_epoch ) ] );
 | 
						|
				if ( $rlf->getRecordCount() > 0 ) {
 | 
						|
					foreach ( $rlf as $r_obj ) {
 | 
						|
						if ( $r_obj->getStatus() == 50 ) {
 | 
						|
							$retarr[] = TTi18n::getText( 'A request has recently been authorized.' );
 | 
						|
						} else if ( $r_obj->getStatus() == 55 ) {
 | 
						|
							$retarr[] = TTi18n::getText( 'A request has recently been declined.' );
 | 
						|
						}
 | 
						|
						break;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $rlf, $r_obj );
 | 
						|
 | 
						|
				//  Check for upcoming scheduled absences
 | 
						|
				$api = TTNew( 'APISchedule' ); /** @var APISchedule $api */
 | 
						|
				$api_result = $this->stripReturnHandler( $api->getCombinedSchedule( [ 'filter_data' => [ 'status_id' => 20, 'include_user_id' => [ $this->getCurrentUserObject()->getId() ] ] ], TTDate::getDate( 'DATE', $current_epoch ), 'week', false ) );
 | 
						|
				if ( isset( $api_result['schedule_data'] ) ) {
 | 
						|
					foreach ( $api_result['schedule_data'] as $date => $schedule_data ) {
 | 
						|
						$retarr[] = TTi18n::getText( 'Upcoming %1 absence scheduled for %2.', [ $schedule_data[0]['absence_policy'], TTDate::getDate( 'DATE', strtotime( $date ) ) ] );
 | 
						|
						break;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $api_result, $schedule_data, $date );
 | 
						|
 | 
						|
				//  Check for recent pay stubs.
 | 
						|
				$api = TTNew( 'APIPayStub' ); /** @var APIPayStub $api */
 | 
						|
				$api_result = $this->stripReturnHandler( $api->getPayStub( [ 'filter_data' => [ 'status_id' => 40, 'include_user_id' => [ $this->getCurrentUserObject()->getId() ], 'start_date' => TTDate::getBeginDayEpoch( $current_epoch - ( 86400 * 2 ) ), 'end_date' => TTDate::getEndDayEpoch( $current_epoch + ( 86400 * 5 ) ) ] ], false ) );
 | 
						|
				if ( is_array( $api_result ) && count( $api_result ) > 0 ) {
 | 
						|
					foreach ( $api_result as $pay_stub_data ) {
 | 
						|
						$retarr[] = TTi18n::getText( 'Pay stub scheduled to be paid on %1 is now available.', [ $pay_stub_data['transaction_date'] ] );
 | 
						|
						break;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $api_result, $pay_stub_data );
 | 
						|
 | 
						|
				//  Check for Pay Periods nearing end date or transaction date
 | 
						|
				$pplf = TTNew( 'PayPeriodListFactory' ); /** @var PayPeriodListFactory $pplf */
 | 
						|
				$pplf->getByUserIdAndTransactionDate( $this->getCurrentUserObject()->getId(), $current_epoch );
 | 
						|
				if ( $pplf->getRecordCount() > 0 ) {
 | 
						|
					foreach ( $pplf as $pp_obj ) {
 | 
						|
						$pay_period_end_diff = ( $pp_obj->getEndDate() - $current_epoch );
 | 
						|
						$pay_period_transaction_diff = ( $pp_obj->getTransactionDate() - $current_epoch );
 | 
						|
						if ( $pay_period_end_diff > 0 && $pay_period_end_diff < ( 86400 * 2 ) ) {
 | 
						|
							$retarr[] = TTi18n::getText( 'Current pay period ends on %1, will be paid by %2', [ TTDate::getDate( 'DATE', $pp_obj->getEndDate() ), TTDate::getDate( 'DATE', $pp_obj->getTransactionDate() ) ] );
 | 
						|
						} else if ( $pay_period_end_diff < 0 && $pay_period_end_diff > ( 86400 * -2 ) ) {
 | 
						|
							$retarr[] = TTi18n::getText( 'Previous pay period ended on %1, will be paid by %2', [ TTDate::getDate( 'DATE', $pp_obj->getEndDate() ), TTDate::getDate( 'DATE', $pp_obj->getTransactionDate() ) ] );
 | 
						|
						} else if ( $pay_period_transaction_diff > 0 && $pay_period_transaction_diff < ( 86400 * 2 ) ) {
 | 
						|
							$retarr[] = TTi18n::getText( 'Previous pay period will be paid by %2', [ TTDate::getDate( 'DATE', $pp_obj->getEndDate() ), TTDate::getDate( 'DATE', $pp_obj->getTransactionDate() ) ] );
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $pplf, $pp_obj );
 | 
						|
 | 
						|
				$content = '<style type=\'text/css\'>
 | 
						|
							.newsItemContainer{
 | 
						|
								display:table;
 | 
						|
								width:100%;
 | 
						|
								border-spacing:0 5px;
 | 
						|
								font-family: Arial, Helvetica, sans-serif;
 | 
						|
								font-size: 15px;
 | 
						|
							}
 | 
						|
 | 
						|
							.item{
 | 
						|
								display:table-row;
 | 
						|
								height:2em;
 | 
						|
								line-height: 2em;
 | 
						|
								text-align: left;
 | 
						|
							}
 | 
						|
 | 
						|
							.item > div {
 | 
						|
							  background-color: #B0C8E0;
 | 
						|
							  padding-left: 0.25em;
 | 
						|
							}
 | 
						|
 | 
						|
							.item > div {
 | 
						|
							  border-radius: 4px 4px 4px 4px;
 | 
						|
							}
 | 
						|
 | 
						|
							.newsItem g{
 | 
						|
								display:table-cell;
 | 
						|
							}
 | 
						|
 | 
						|
							.newsItem{
 | 
						|
								width:100%;
 | 
						|
								//font-weight: bold;
 | 
						|
							}
 | 
						|
							</style>';
 | 
						|
 | 
						|
				if ( count( $retarr ) > 0 ) {
 | 
						|
					$content .= '<div class="newsItemContainer">';
 | 
						|
					foreach ( $retarr as $item ) {
 | 
						|
						$content .= '<div class="item"><div class="newsItem">' . $item . '</div></div>';
 | 
						|
					}
 | 
						|
					$content .= '</div><div align="center">•</center>';
 | 
						|
				} else {
 | 
						|
					$content .= '<div class="newsItemContainer">';
 | 
						|
					$content .= '<div class="item"><div class="newsItem">' . TTi18n::getText( 'Slow news day, nothing to see here yet' ) . '...</div></div>';
 | 
						|
					$content .= '</div><div align="center">•</center>';
 | 
						|
				}
 | 
						|
 | 
						|
				return $this->returnHandler( $content );
 | 
						|
				break;
 | 
						|
			case 'schedule_summary':
 | 
						|
			case 'schedule_summary_child':
 | 
						|
				$api = TTNew( 'APISchedule' ); /** @var APISchedule $api */
 | 
						|
 | 
						|
				$maximum_row_limit = ( isset( $data['rows_per_page'] ) && $data['rows_per_page'] > 0 ) ? $data['rows_per_page'] : $this->getCurrentUserPreferenceObject()->getItemsPerPage();
 | 
						|
				$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
				if ( $name == 'schedule_summary' ) {
 | 
						|
					$display_columns = [ 'id', 'date_stamp', 'status', 'status_id', 'start_time', 'end_time', 'total_time' ];
 | 
						|
					$parameters['filter_data'] = [ 'include_user_ids' => [ $this->getCurrentUserObject()->getId() ] ];
 | 
						|
				} else {
 | 
						|
					$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
					$parameters['filter_data'] = [ 'exclude_user_ids' => [ $this->getCurrentUserObject()->getId(), '0' ] ];
 | 
						|
				}
 | 
						|
 | 
						|
				$retarr['api_retval'] = [];
 | 
						|
 | 
						|
				$api_result = $api->getCombinedSchedule( $parameters, TTDate::getDate( 'DATE', time() ), 'week', false );
 | 
						|
				if ( isset( $api_result['api_retval']['schedule_data'] ) ) {
 | 
						|
					$i = 0;
 | 
						|
					foreach ( $api_result['api_retval']['schedule_data'] as $val ) {
 | 
						|
						foreach ( $val as $val1 ) {
 | 
						|
							if ( $val1['status_id'] == 10 ) {
 | 
						|
								$val1['status'] = TTi18n::getText( 'Working' );
 | 
						|
							} else if ( $val1['status_id'] == 20 ) {
 | 
						|
								$val1['status'] = ( $val1['absence_policy'] != '' ) ? $val1['absence_policy'] : TTi18n::getText( 'N/A' );
 | 
						|
							}
 | 
						|
							$retarr['api_retval'][] = $val1;
 | 
						|
						}
 | 
						|
 | 
						|
						if ( $i >= $maximum_row_limit ) {
 | 
						|
							array_splice( $retarr['api_retval'], $i );
 | 
						|
							break;
 | 
						|
						}
 | 
						|
						$i++;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				unset( $api_result, $i, $maximum_row_limit );
 | 
						|
				break;
 | 
						|
			case 'user_active_shift_summary':
 | 
						|
				$api = TTNew( 'APIActiveShiftReport' ); /** @var APIActiveShiftReport $api */
 | 
						|
				$template_data = $api->getTemplate( 'by_status_by_type_by_employee' );
 | 
						|
				$template_data = Misc::trimSortPrefix( $template_data['api_retval'] );
 | 
						|
				$template_data['other']['maximum_row_limit'] = ( isset( $data['rows_per_page'] ) && $data['rows_per_page'] > 0 ) ? $data['rows_per_page'] : $this->getCurrentUserPreferenceObject()->getItemsPerPage();
 | 
						|
				$display_columns = $template_data['columns'];
 | 
						|
				$template_data = Misc::addSortPrefix( $template_data );
 | 
						|
				$retarr = $api->getActiveShiftReport( $template_data, 'raw' );
 | 
						|
				if ( is_array( $retarr['api_retval'] ) ) {
 | 
						|
					array_pop( $retarr['api_retval'] );
 | 
						|
				}
 | 
						|
				break;
 | 
						|
			case 'timesheet_verification_summary':
 | 
						|
			case 'timesheet_verification_summary_child':
 | 
						|
				$api = TTNew( 'APITimesheetSummaryReport' ); /** @var APITimesheetSummaryReport $api */
 | 
						|
				$template_data = $api->getTemplate( 'by_pay_period_by_employee+verified_time_sheet' );
 | 
						|
				$template_data = Misc::trimSortPrefix( $template_data['api_retval'] );
 | 
						|
				$template_data['other']['maximum_row_limit'] = ( isset( $data['rows_per_page'] ) && $data['rows_per_page'] > 0 ) ? $data['rows_per_page'] : $this->getCurrentUserPreferenceObject()->getItemsPerPage();
 | 
						|
				$display_columns = $template_data['columns'];
 | 
						|
				if ( $name == 'timesheet_verification_summary_child' ) {
 | 
						|
					$template_data['exclude_user_id'] = [ $this->getCurrentUserObject()->getId() ];
 | 
						|
				}
 | 
						|
				$template_data['sort'][] = [ 'verified_time_sheet' => 'asc' ];
 | 
						|
				$template_data['sort'][] = [ 'last_name' => 'asc' ];
 | 
						|
				$template_data = Misc::addSortPrefix( $template_data );
 | 
						|
				$retarr = $api->getTimesheetSummaryReport( $template_data, 'raw' );
 | 
						|
				if ( is_array( $retarr['api_retval'] ) ) {
 | 
						|
					array_pop( $retarr['api_retval'] );
 | 
						|
				}
 | 
						|
				break;
 | 
						|
			case 'message_summary':
 | 
						|
				$api = TTNew( 'APIMessageControl' ); /** @var APIMessageControl $api */
 | 
						|
				$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
				$display_columns[] = 'status_id';
 | 
						|
				$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
				$parameters['filter_data'] = [ 'status_id' => 10, 'folder_id' => 10 ];
 | 
						|
				$retarr = $api->getMessageControl( $parameters );
 | 
						|
				break;
 | 
						|
			case 'exception_summary':
 | 
						|
			case 'exception_summary_child':
 | 
						|
				$ppslf = TTnew( 'PayPeriodScheduleListFactory' ); /** @var PayPeriodScheduleListFactory $ppslf */
 | 
						|
				if ( $name == 'exception_summary_child' ) {
 | 
						|
					$ppslf->getByCompanyId( $this->getCurrentCompanyObject()->getId() ); //Must be all PP schedules when showing subordinate exceptions.
 | 
						|
				} else {
 | 
						|
					$ppslf->getByCompanyIdAndUserId( $this->getCurrentCompanyObject()->getId(), $this->getCurrentUserObject()->getId() ); //Just current users PP schedule.
 | 
						|
				}
 | 
						|
				$pay_period_schedule_id = $ppslf->getIDSByListFactory( $ppslf );
 | 
						|
 | 
						|
				//Get pay period schedule that this user belongs to
 | 
						|
				if ( is_array( $pay_period_schedule_id ) && count( $pay_period_schedule_id ) > 0 ) {
 | 
						|
					$pay_period_ids = [];
 | 
						|
 | 
						|
					//Get last and this pay period IDs.
 | 
						|
					$pplf = TTnew( 'PayPeriodListFactory' ); /** @var PayPeriodListFactory $pplf */
 | 
						|
					$pplf->getThisPayPeriodByCompanyIdAndPayPeriodScheduleIdAndDate( $this->getCurrentCompanyObject()->getId(), $pay_period_schedule_id, time() );
 | 
						|
					if ( $pplf->getRecordCount() > 0 ) {
 | 
						|
						foreach ( $pplf as $pp_obj ) {
 | 
						|
							$pay_period_ids[] = $pp_obj->getId();
 | 
						|
						}
 | 
						|
					}
 | 
						|
					$pplf->getLastPayPeriodByCompanyIdAndPayPeriodScheduleIdAndDate( $this->getCurrentCompanyObject()->getId(), $pay_period_schedule_id, time() );
 | 
						|
					if ( $pplf->getRecordCount() > 0 ) {
 | 
						|
						foreach ( $pplf as $pp_obj ) {
 | 
						|
							//Only show last pay period if its not closed.
 | 
						|
							if ( $pp_obj->getStatus() != 20 ) {
 | 
						|
								$pay_period_ids[] = $pp_obj->getId();
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
 | 
						|
					if ( count( $pay_period_ids ) > 0 ) {
 | 
						|
						$api = TTNew( 'APIException' ); /** @var APIException $api */
 | 
						|
 | 
						|
						if ( $name == 'exception_summary' ) { //Only show the users own exceptions
 | 
						|
							//No need to show first/last name as its only displaying their own exceptions anyways.
 | 
						|
							$display_columns = [
 | 
						|
									'date_stamp',
 | 
						|
									'severity',
 | 
						|
									'exception_policy_type',
 | 
						|
									'exception_policy_type_id',
 | 
						|
							];
 | 
						|
						} else {
 | 
						|
							//Showing other users exceptions, make sure first/last name is displayed.
 | 
						|
							$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
						}
 | 
						|
						$display_columns[] = 'exception_color';
 | 
						|
						$display_columns[] = 'exception_background_color';
 | 
						|
						$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
						$parameters['filter_data'] = [ 'pay_period_id' => $pay_period_ids ];
 | 
						|
 | 
						|
						if ( $name == 'exception_summary' ) { //Only show the users own exceptions
 | 
						|
							$parameters['filter_data']['user_id'] = $this->getCurrentUserObject()->getId();
 | 
						|
						} else { //Show all *but* the users own exceptions.
 | 
						|
							$parameters['filter_data']['exclude_user_id'] = $this->getCurrentUserObject()->getId();
 | 
						|
						}
 | 
						|
						$parameters['filter_data']['type_id'] = [ 50 ]; //Exclude pre-mature exceptions.
 | 
						|
						$retarr = $api->getException( $parameters );
 | 
						|
					}
 | 
						|
				}
 | 
						|
				break;
 | 
						|
			case 'request_summary':
 | 
						|
				$api = TTNew( 'APIRequest' ); /** @var APIRequest $api */
 | 
						|
				$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
				$display_columns[] = 'status_id';
 | 
						|
				$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
				$parameters['filter_data'] = [ 'status_id' => 30 ];
 | 
						|
				$retarr = $api->getRequest( $parameters );
 | 
						|
				break;
 | 
						|
			case 'request_authorize_summary':
 | 
						|
				$api = TTNew( 'APIRequest' ); /** @var APIRequest $api */
 | 
						|
				$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
				$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
				$parameters['filter_data'] = [];
 | 
						|
				$parameters['filter_data']['type_id'] = [ -1 ];
 | 
						|
				$parameters['filter_data']['status_id'] = 30; //Pending Auth
 | 
						|
				$parameters['filter_data']['hierarchy_level'] = 1;
 | 
						|
				$retarr = $api->getRequest( $parameters );
 | 
						|
				break;
 | 
						|
			case 'accrual_balance_summary':
 | 
						|
				$api = TTNew( 'APIAccrualBalance' ); /** @var APIAccrualBalance $api */
 | 
						|
				$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
				//$display_columns[] = 'status_id';
 | 
						|
				$parameters = $this->buildDefaultDashletParameters( $display_columns, $data['rows_per_page'] );
 | 
						|
				$parameters['filter_data'] = [ 'status_id' => 10 ]; //Only active employees.
 | 
						|
				$retarr = $api->getAccrualBalance( $parameters );
 | 
						|
				break;
 | 
						|
			case 'custom_list':
 | 
						|
				/*
 | 
						|
				 * Params=array('class' => <string>, 'user_generic_data_id' => array() )
 | 
						|
				 */
 | 
						|
 | 
						|
				if ( isset( $data['class'] ) && $data['class'] != '' ) {
 | 
						|
					Debug::Text( '  Class: ' . $data['class'], __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
					//Get saved search and layout.
 | 
						|
					if ( isset( $data['user_generic_data_id'] ) ) {
 | 
						|
						Debug::Text( '  Getting UserGenericData for ID: ' . $data['user_generic_data_id'], __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
						if ( $data['class'] == 'Request-Authorization' ) {
 | 
						|
							$api = TTNew( 'APIRequest' ); /** @var APIRequest $api */
 | 
						|
							$function_name = 'getRequest';
 | 
						|
						} else {
 | 
						|
							if ( $data['class'] == 'UserExpense-Authorization' ) {
 | 
						|
								$api = TTNew( 'APIUserExpense' ); /** @var APIUserExpense $api */
 | 
						|
								$function_name = 'getUserExpense';
 | 
						|
							} else {
 | 
						|
								$api = TTNew( 'API' . $data['class'] );
 | 
						|
								$function_name = 'get' . $data['class'];
 | 
						|
							}
 | 
						|
						}
 | 
						|
 | 
						|
						$augd = TTNew( 'APIUserGenericData' ); /** @var APIUserGenericData $augd */
 | 
						|
						$retval = $this->stripReturnHandler( $augd->getUserGenericData( [ 'filter_data' => [ 'id' => TTUUID::castUUID( $data['user_generic_data_id'] ) ] ] ) );
 | 
						|
						if ( is_array( $retval ) && count( $retval ) == 1 ) {
 | 
						|
							if ( isset( $retval[0]['data'] ) ) {
 | 
						|
								$user_generic_data = $retval[0]['data'];
 | 
						|
								$display_columns = $user_generic_data['display_columns'];
 | 
						|
							}
 | 
						|
						} else {
 | 
						|
							//No user_generic_data specified, just use default display columns instead.
 | 
						|
							$display_columns = $api->getOptions( 'default_display_columns' );
 | 
						|
							$user_generic_data = [ 'display_columns' => $display_columns ];
 | 
						|
						}
 | 
						|
						unset( $retval );
 | 
						|
 | 
						|
						if ( isset( $user_generic_data ) ) {
 | 
						|
							Debug::Arr( $user_generic_data, '  UserGenericData for Class: ' . $data['class'] . ' ID: ' . $data['user_generic_data_id'], __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
							if ( strpos( '-', $data['class'] ) === false ) {
 | 
						|
								Debug::Text( '  Getting Dashlet Data for Class: ' . $data['class'], __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
								$retarr = $api->$function_name( $this->buildFilterParameters( $data['class'], $user_generic_data, $data['rows_per_page'] ) );
 | 
						|
							}
 | 
						|
							//else {
 | 
						|
							//Special class, need to handle it manually.
 | 
						|
							//}
 | 
						|
						} else {
 | 
						|
							Debug::Text( 'ERROR: No UserGenericData available...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
						}
 | 
						|
					} else {
 | 
						|
						Debug::Text( 'ERROR: No UserGenericData ID specified...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
					}
 | 
						|
				} else {
 | 
						|
					Debug::Text( 'ERROR: No Class specified...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
				}
 | 
						|
 | 
						|
				break;
 | 
						|
			case 'custom_report':
 | 
						|
				break;
 | 
						|
		}
 | 
						|
 | 
						|
		if ( isset( $retarr ) ) {
 | 
						|
			$data = $retarr['api_retval'];
 | 
						|
			$retarr['api_retval'] = [ 'data' => $data, 'display_columns' => $display_columns ];
 | 
						|
 | 
						|
			return $retarr;
 | 
						|
		}
 | 
						|
 | 
						|
		return $this->returnHandler( false );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	function getDefaultDashlets() {
 | 
						|
		$parameters = [];
 | 
						|
 | 
						|
		$permission = new Permission();
 | 
						|
		$permission_level = $permission->getLevel( $this->getCurrentUserObject()->getId(), $this->getCurrentCompanyObject()->getId() );
 | 
						|
		Debug::Text( 'Permission Level: ' . $permission_level, __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
		//Get available dashlets (as that performs permission checks), and only add ones that are available.
 | 
						|
		$dashlet_options = Misc::trimSortPrefix( $this->getOptions( 'dashlets' ) );
 | 
						|
 | 
						|
		//Check if TimeSheet Verifications are even enabled, not need to display dashlets if they aren't.
 | 
						|
		$enabled_timesheet_verification = false;
 | 
						|
		$ppslf = TTNew( 'PayPeriodScheduleListFactory' ); /** @var PayPeriodScheduleListFactory $ppslf */
 | 
						|
		$ppslf->getByCompanyId( $this->getCurrentCompanyObject()->getId() );
 | 
						|
		if ( $ppslf->getRecordCount() > 0 ) {
 | 
						|
			foreach ( $ppslf as $pps_obj ) {
 | 
						|
				if ( in_array( $pps_obj->getTimeSheetVerifyType(), [ 20, 40 ] ) ) { //Check if TimeSheet Verification is enabled or not.
 | 
						|
					$enabled_timesheet_verification = true;
 | 
						|
					break;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		//Note: Dashlet information including its name/title is saved to UserGenericData, which means if the user changes languages then the dashlet titles won't get changed unless they edit/save them, or restore defaults.
 | 
						|
		//      This is required behavior since the user can rename the dashlets to whatever they want.
 | 
						|
 | 
						|
		//Common to all levels.
 | 
						|
		( ( isset( $dashlet_options['news'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'news', TTi18n::getText( 'News' ) ) : null );
 | 
						|
		( ( isset( $dashlet_options['exception_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'exception_summary', TTi18n::getText( 'Exception Summary' ) ) : null );
 | 
						|
		( ( isset( $dashlet_options['message_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'message_summary', TTi18n::getText( 'Messages (UnRead)' ) ) : null );
 | 
						|
 | 
						|
		if ( $permission_level >= 40 ) {
 | 
						|
			( ( isset( $dashlet_options['request_authorize_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'request_authorize_summary', TTi18n::getText( 'Request Authorizations' ) ) : null );
 | 
						|
			( ( isset( $dashlet_options['exception_summary_child'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'exception_summary_child', TTi18n::getText( 'Exceptions (Subordinates)' ) ) : null );
 | 
						|
			( ( isset( $dashlet_options['schedule_summary_child'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'schedule_summary_child', TTi18n::getText( 'Schedule Summary (Subordinates)' ) ) : null );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $permission_level <= 40 ) {
 | 
						|
			( ( isset( $dashlet_options['timesheet_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'timesheet_summary', TTi18n::getText( 'TimeSheet Summary' ) ) : null );
 | 
						|
		}
 | 
						|
		( ( isset( $dashlet_options['schedule_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'schedule_summary', TTi18n::getText( 'Schedule Summary' ) ) : null );
 | 
						|
		if ( $permission_level <= 40 ) {
 | 
						|
			( ( isset( $dashlet_options['accrual_balance_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'accrual_balance_summary', TTi18n::getText( 'Accrual Balances' ) ) : null );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $enabled_timesheet_verification == true ) {
 | 
						|
			if ( $permission_level == 40 ) {
 | 
						|
				( ( isset( $dashlet_options['timesheet_verification_summary_child'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'timesheet_verification_summary_child', TTi18n::getText( 'TimeSheet Verifications (Subordinates)' ) ) : null );
 | 
						|
			} else if ( $permission_level >= 50 ) {
 | 
						|
				( ( isset( $dashlet_options['timesheet_verification_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'timesheet_verification_summary', TTi18n::getText( 'TimeSheet Verifications' ) ) : null );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $permission_level >= 40 ) {
 | 
						|
			( ( isset( $dashlet_options['user_active_shift_summary'] ) ) ? $parameters[] = $this->createDefaultDashletData( 'user_active_shift_summary', TTi18n::getText( 'Whos In/Out' ) ) : null );
 | 
						|
		}
 | 
						|
 | 
						|
		$augd = TTNew( 'APIUserGenericData' ); /** @var APIUserGenericData $augd */
 | 
						|
		$retval = $augd->setUserGenericData( $parameters );
 | 
						|
		if ( $retval['api_retval'] == true ) {
 | 
						|
			$parameters = [
 | 
						|
					'name'       => 'order_data',
 | 
						|
					'script'     => 'global_dashboard_order',
 | 
						|
					'is_default' => true,
 | 
						|
					'data'       => $retval['api_details']['details'],
 | 
						|
			];
 | 
						|
			$augd->setUserGenericData( $parameters );
 | 
						|
 | 
						|
			return $augd->getUserGenericData( [ 'filter_data' => [ 'script' => 'global_dashboard', 'deleted' => false ] ] );
 | 
						|
		} else {
 | 
						|
			return $this->returnHandler( false );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param $type
 | 
						|
	 * @param $name
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	function createDefaultDashletData( $type, $name ) {
 | 
						|
		$result = [
 | 
						|
				'script'     => 'global_dashboard',
 | 
						|
				'is_default' => false,
 | 
						|
				'name'       => $name,
 | 
						|
				'data'       => [
 | 
						|
						'dashlet_type'  => $type,
 | 
						|
						'auto_refresh'  => 0,
 | 
						|
						'rows_per_page' => 0,
 | 
						|
				],
 | 
						|
		];
 | 
						|
 | 
						|
		return $result;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @return bool
 | 
						|
	 */
 | 
						|
	function removeAllDashlets() {
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
?>
 |