ShiftController

WordPress Shift Scheduling Plugin

WordPress API

Since version 4.8.4.

ShiftController provides a number of WordPress filters to query and update its shifts database.

Get Shifts

shiftcontroller4/api/shifts/get (array $params) : array | WP_Error

Parameters

calendar_id (Calendar Id)
employee_id (Employee Id)
from (From Date, YYYYMMDD / From Date Time, YYYYMMDDHHMM)
to (To Date, YYYYMMDD / To Date Time, YYYYMMDDHHMM)
status_id (publish, draft)

Optional Arguments since version 4.9.22.

You have custom fields, you can also pass in their names and values to filter the results.

Examples

$res = apply_filters( 'shiftcontroller4/api/shifts/get', array() );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$shifts = $res;
$params = array();
$params['calendar_id'] = 11;
$params['from'] = 20210224;
$res = apply_filters( 'shiftcontroller4/api/shifts/get', $params );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$shifts = $res;
$params = array();
$params['calendar_id'] = 11;
$params['from'] = '202102240900';
$params['to'] = '202102241430';
$params['status_id'] = 'draft';
$res = apply_filters( 'shiftcontroller4/api/shifts/get', $params );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$shifts = $res;

Since version 4.9.22.

$params = array();
$params['calendar_id'] = 11;
$params['misc123'] = 'CustomFieldValue';
$res = apply_filters( 'shiftcontroller4/api/shifts/get', $params );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$shifts = $res;

Get Shift

shiftcontroller4/api/shifts/getbyid ( $id ) : array | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/shifts/getbyid', 123 );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$shift = $res;

Delete Shift

shiftcontroller4/api/shifts/deletebyid ( $id ) : null | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/shifts/deletebyid', 123 );
if( is_wp_error($res) ) exit( $res->get_error_message() );

Create Shift

shiftcontroller4/api/shifts/create ( array $values ) : int | WP_Error

Parameters

calendar_id (Calendar Id)
employee_id (Employee Id)
start (Start Date Time, YYYYMMDDHHMM)
end (End Date Time, YYYYMMDDHHMM)
status_id (publish, draft)
conflict (Set to 1 to allow creation of shifts with conflicts) optional

If you have custom fields in this calendar, then you can add them too as miscXXX where XXX is the field id (see Administration > Calendars > Custom Fields):

misc11
misc12

Returns the new shift id on success.

Examples

$values = array();
$values['calendar_id'] = 11;
$values['employee_id'] = 22;
$values['start'] = '202102240800';
$values['end'] = '202102241430';
$values['status_id'] = 'publish';
// if you have custom fields
$values['misc11'] = 'orange';
$values['misc12'] = 321;
$res = apply_filters( 'shiftcontroller4/api/shifts/create', $values );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$newId = $res;

Update Shift

shiftcontroller4/api/shifts/updatebyid ( int $id, array $values ) : null | WP_Error

Parameters

calendar_id (Calendar Id) optional
employee_id (Employee Id) optional
start (Start Date Time, YYYYMMDDHHMM) optional
end (End Date Time, YYYYMMDDHHMM) optional
status_id (publish, draft) optional
conflict (Set to 1 to allow creation of shifts with conflicts) optional

If you have custom fields in this calendar, then you can add them too as miscXXX where XXX is the field id (see Administration > Calendars > Custom Fields):

misc11
misc12

Examples

$values = array();
$values['start'] = '202102240900';
$values['end'] = '202102241530';
$res = apply_filters( 'shiftcontroller4/api/shifts/updatebyid', 123, $values );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$values = array();
$values['employee_id'] = 23;
// if you have custom fields
$values['misc11'] = 'green';
$res = apply_filters( 'shiftcontroller4/api/shifts/updatebyid', 123, $values );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$values = array();
$values['status_id'] = 'publish';
$res = apply_filters( 'shiftcontroller4/api/shifts/updatebyid', 123, $values );
if( is_wp_error($res) ) exit( $res->get_error_message() );

Get All Calendars

shiftcontroller4/api/calendars/get () : array | WP_Error

Get All Employees

shiftcontroller4/api/employees/get () : array | WP_Error

Get Employee

shiftcontroller4/api/employees/getbyid ( $id ) : array | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/employees/getbyid', 123 );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$employee = $res;

Get Employee By User Id

shiftcontroller4/api/employees/getbyuserid ( $id ) : array | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/employees/getbyuserid', 321 );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$employee = $res;

Get Employees By Calendar Id

shiftcontroller4/api/employees/getbycalendarid ( $calendarId ) : array | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/employees/getbycalendarid', 654 );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$employees = $res;

Get Calendars By Employee Id

shiftcontroller4/api/calendars/getbyemployeeid ( $employeeId ) : array | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/calendars/getbyemployeeid', 123 );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$calendars = $res;

Create Employee

shiftcontroller4/api/shifts/employees ( array $values ) : int | WP_Error

Parameters

title (Employee's full name)
description optional
user_id (Linked Wordpress user id)

Either title or user_id required. If user_id is given, it will link the new employee to this WordPress user. If user_id is given without the title, it will create a new employee with this WordPress user's full name as employee's title and link this employee to this user.

Returns the new employee id on success.

Examples

$values = array();
$values['title'] = 'James';
$res = apply_filters( 'shiftcontroller4/api/employees/create', $values );
if( is_wp_error($res) ) exit( $res->get_error_message() );
$newEmployeeId = $res;

Add Employee To Calendar

shiftcontroller4/api/employees/addtocalendar ( $employeeId, $calendarId ) : boolean | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/employees/addtocalendar', 123, 654 );
if( is_wp_error($res) ) exit( $res->get_error_message() );

Remove Employee From Calendar

shiftcontroller4/api/employees/removefromcalendar ( $employeeId, $calendarId ) : boolean | WP_Error

Examples

$res = apply_filters( 'shiftcontroller4/api/employees/removefromcalendar', 123, 654 );
if( is_wp_error($res) ) exit( $res->get_error_message() );

Listen To ShiftController Events

Shift Draft Created

Shift Published

Shift Unpublished

Shift Employee Changed

Shift Calendar Changed

Shift Rescheduled

shiftcontroller4/sh4/shifts/command::draft::after ( int $id, array $args )
shiftcontroller4/sh4/shifts/command::publish::after ( int $id, array $args )
shiftcontroller4/sh4/shifts/command::unpublish::after ( int $id, array $args )
shiftcontroller4/sh4/shifts/command::changeemployee::after ( int $id, array $args )
shiftcontroller4/sh4/shifts/command::changecalendar::after ( int $id, array $args )
shiftcontroller4/sh4/shifts/command::reschedule::after ( int $id, array $args )

Parameters

add_action( 'shiftcontroller4/sh4/shifts/command::publish::after', function( $id, $args ){
	$shift = $args[0];

	$startAt = $shift->getStart();
	$endAt = $shift->getEnd();

	$calendar = $shift->getCalendar();
	$calendarId = $calendar->getId();

	$employee = $shift->getEmployee();
	$employeeId = $employee->getId();

	$f = ShiftController4::$instance->root();
	$appQuery = $f->make( 'SH4_App_Query' );
	$user = $appQuery->findUserByEmployee( $employee );
	if( $user ){
		$wpUserId = $user->getId();
		// get what you need for the wordpress user
	}
	else {
		// no user linked to ShiftController employee
	}
}, 10, 3 );