luketowers/php-donorperfect-api

PHP wrapper for the DonorPerfect API

v1.0.0 2024-04-05 02:25 UTC

This package is auto-updated.

Last update: 2024-12-05 04:04:56 UTC


README

A simple PHP wrapper around the DonorPerfect API. Currently targets DonorPerfect Online Version 2020.12. See https://api.warrenbti.com/ for the online API documentation.

Installation

Install via Composer by running composer require luketowers/php-donorperfect-api in your project directory.

Usage

In order to use this wrapper library you will need to provide credentials to access DonorPerfect's API.

You will either need a user login and password for the account you are trying to access or an API key issued by emailing DonorPerfect support.

Examples

Initialize API:

use LukeTowers\DonorPerfectPHP\DonorPerfect;

// Initialize the client with an API key and app name (max 20 characters)
$api = new DonorPerfect('my_api_key_here', 'NameOfMyApp');

// Initialize the client with a user login and password and app name (max 20 characters)
$api = new DonorPerfect(['login' => 'MyUsername', 'pass' => 'MyPassword'], 'NameOfMyApp');

Call one of the predefined DP actions

// Call one of the predefined DP actions
$result = $api->dp_donorsearch(['donor_id' => 1]);

// Call a predefined DP action not yet implemented in this library
$result = $api->call('dp_actionname', DonorPerfect::prepareParams(['donor_id' => 1], $arrayOfParamConfigsExpected));

Run a custom MS SQL statement through the API

$pageStart = 1;
$pageEnd = 500;

// Run a custom MS SQL statement through the API
$result = $api->callSql("
    SELECT
        *
    FROM (
        SELECT
            ROW_NUMBER() OVER(ORDER BY dp.donor_id ASC) AS row_number,
            dp.donor_id,
            dp.first_name,
            dp.middle_name,
            dp.last_name,
            dp.email,
            dp.address,
            dp.address2,
            dp.city,
            dp.state,
            dp.zip,
            dp.country,
            dp.gift_total
        FROM dp
        LEFT JOIN dpudf ON dpudf.donor_id = dp.donor_id
        WHERE
            (dp.nomail_reason != 'IA'
            AND dp.nomail_reason != 'DE')
            OR dp.nomail_reason IS NULL
    ) AS tmp
    WHERE tmp.row_number BETWEEN {$pageStart} AND {$pageEnd}
");