. /** * This file contains the functions used by the plugin. * * @copyright 2018 'Valentin Popov' * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @package local_webhooks */ defined( "MOODLE_INTERNAL" ) || die(); define( "LW_TABLE_SERVICES", "local_webhooks_service" ); define( "LW_TABLE_EVENTS", "local_webhooks_events" ); /** * Class local_webhooks_api * * @copyright 2018 'Valentin Popov' * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @package local_webhooks */ class local_webhooks_api { /** * Create service data in the database. * * @param array $service Data to the service * @return int Service ID */ public static function create_service( $service = array() ) { global $DB; if ( !is_array( $service ) || empty( $service ) ) { print_error( "unknowparamtype", "error", null, "service" ); } $serviceId = $DB->insert_record( LW_TABLE_SERVICES, $service, true, false ); if ( $serviceId && is_array( $service[ "events" ] ) && !empty( $service[ "events" ] ) ) { self::insert_events( $service[ "events" ], $serviceId ); } return (int) $serviceId; } /** * Delete the service data from the database. * * @param int $serviceId Service ID * @return bool Execution result */ public static function delete_service( $serviceId = 0 ) { global $DB; if ( !is_numeric( $serviceId ) || empty( $serviceId ) ) { print_error( "unknowparamtype", "error", null, "serviceId" ); } $DB->delete_records( LW_TABLE_EVENTS, array( "serviceid" => $serviceId ) ); return $DB->delete_records( LW_TABLE_SERVICES, array( "id" => $serviceId ) ); } /** * Update the service data in the database. * * @param array $service Data to the service * @return bool Execution result */ public static function update_service( $service = array() ) { global $DB; if ( !is_array( $service ) || empty( $service ) || empty( $service[ "id" ] ) ) { print_error( "unknowparamtype", "error", null, "service" ); } $result = $DB->update_record( LW_TABLE_SERVICES, $service, false ); $DB->delete_records( LW_TABLE_EVENTS, array( "serviceid" => $service[ "id" ] ) ); if ( $result && is_array( $service[ "events" ] ) && !empty( $service[ "events" ] ) ) { self::insert_events( $service[ "events" ], $service[ "id" ] ); } return $result; } /** * Save the list of events to the database. * * @param array $events List of events * @param int $serviceId Service ID */ private static function insert_events( $events = array(), $serviceId = 0 ) { global $DB; $conditions = array(); foreach ( $events as $eventName ) { $conditions[] = array( "name" => $eventName, "serviceid" => $serviceId ); } $DB->insert_records( LW_TABLE_EVENTS, $conditions ); } }