This object is used to retrieve a grid (list of records, recordset). The grids can be used to retrieve for example list of affiliates, list of transactions, list of campaigns, etc.
Constructor:
Gpf_Rpc_Gridrequest($className, $methodName, $session) - creates grid request object. You have to specify name of the class + method to execute, and valid session object.
Method name is usually “getRows”, class name depends on the grid you want to access.
Methods:
The following methods are available in all high level API grid classes.
addFilter($code, $operator, $value) – add filter to the data. You can use it to search in records, or get only the records that you want.
Parameters description:
$code variable is the name of column you want to filter, or text 'search' if you want to search in multiple columns.
$operator is comparison operator. It is one of the:
Text comparison:
=
IN
NOT IN
Gpf_Data_Filter::LIKE
Gpf_Data_Filter::NOT_LIKE
Gpf_Data_Filter::EQUALS
Gpf_Data_Filter::NOT_EQUALS
Date comparison:
Gpf_Data_Filter::DATE_EQUALS
Gpf_Data_Filter::DATE_GREATER
Gpf_Data_Filter::DATE_LOWER
Gpf_Data_Filter::DATE_EQUALS_GREATER
Gpf_Data_Filter::DATE_EQUALS_LOWER
Gpf_Data_Filter::DATERANGE_IS
Gpf_Data_Filter::TIME_EQUALS
Gpf_Data_Filter::TIME_GREATER
Gpf_Data_Filter::TIME_LOWER
Gpf_Data_Filter::TIME_EQUALS_GREATER
Gpf_Data_Filter::TIME_EQUALS_LOWER
Daterange comparison:
Gpf_Data_Filter::DATERANGE_IS
$value variable is the value of comparison. For text and date comparisons, it is normal value. If $operator is Gpf_Data_Filter::DATERANGE_IS, the value must be one of:
Gpf_Data_Filter::RANGE_TODAY
Gpf_Data_Filter::RANGE_YESTERDAY
Gpf_Data_Filter::RANGE_LAST_7_DAYS
Gpf_Data_Filter::RANGE_LAST_30_DAYS
Gpf_Data_Filter::RANGE_LAST_90_DAYS
Gpf_Data_Filter::RANGE_THIS_WEEK
Gpf_Data_Filter::RANGE_LAST_WEEK
Gpf_Data_Filter::RANGE_LAST_2WEEKS
Gpf_Data_Filter::RANGE_LAST_WORKING_WEEK
Gpf_Data_Filter::RANGE_THIS_MONTH
Gpf_Data_Filter::RANGE_LAST_MONTH
Gpf_Data_Filter::RANGE_THIS_YEAR
Gpf_Data_Filter::RANGE_LAST_YEAR
Please make sure you use the correct operator for the correct type of data. For example using '=' operator on the date field will not work.
Examples of setting grid request filter:
// example of text filter
$request->addFilter("lastname", "=", "smith");
// or
$request->addFilter("search", Gpf_Data_Filter::LIKE, "mit");
// or
$request->addFilter("firstname", "IN", "Mark,John,Martin");
// example of date filter
$request->addFilter("dateinserted", Gpf_Data_Filter::DATE_LOWER, "2008-11-01");
// example of daterange filter
$request->addFilter("dateinserted", Gpf_Data_Filter::DATERANGE_IS, Gpf_Data_Filter::RANGE_THIS_YEAR);
setLimit($offset, $limit) – sets limit of returned records to $limit, starting with 0. First parameter $offset is not supported since version 5.11.8.1, paging works automatically, depending on last row from previous loading. The maximum number of records that can be returned is 500.
setSorting($sortBy, $ascending) – sets sort by by column $sortBy, and in ascending or descending order
sendNow() - sends request. If there was some problem, it throws an exception
getGrid() - if request was successful, it returns grid object (Gpf_Data_Grid).
addParam() - gridRequest retrieve a grid with default columns (Default view in merchant panel). If you want retrieve other as default columns, you can define them in param 'columns'
// example of adding param 'columns'
$request->addParam('columns', new Gpf_Rpc_Array(array(array('id'), array('refid'), array('clicksRaw'), array('clicksUnique'))));
Example retrieving list of affiliates (first 30 records)
//----------------------------------------------
// get recordset with list of affiliates
$request = new Gpf_Rpc_GridRequest("Pap_Merchants_User_AffiliatesGrid", "getRows", $session);
// sets limit to 30 rows, offset to 0 (first row starts)
$request->setLimit(0, 30);
// sets columns, use it only if you want retrieve other as default columns
$request->addParam('columns', new Gpf_Rpc_Array(array(array('id'), array('refid'), array('userid'), array('username'), array('firstname'), array('lastname'), array('rstatus'), array('dateinserted'), array('salesCount'), array('clicksRaw'), array('clicksUnique'))));
// send request
try {
$request->sendNow();
} catch(Exception $e) {
die("API call error: ".$e->getMessage());
}
// request was successful, get the grid result
$grid = $request->getGrid();
// get recordset from the grid
$recordset = $grid->getRecordset();
// iterate through the records
foreach($recordset as $rec) {
echo 'Affiliate name: '.$rec->get('firstname').' '.$rec->get('lastname').'<br>';
}
Example retrieving list of all affiliates with paging
//----------------------------------------------
// get recordset with list of affiliates
$request = new Gpf_Rpc_GridRequest("Pap_Merchants_User_AffiliatesGrid", "getRows", $session);
// sets limit to 30 rows, offset to 0 (first row starts)
$request->setLimit(0, 30);
// sets columns, use it only if you want retrieve other as default columns
$request->addParam('columns', new Gpf_Rpc_Array(array(array('id'), array('refid'), array('userid'), array('username'), array('firstname'), array('lastname'), array('rstatus'), array('dateinserted'), array('salesCount'), array('clicksRaw'), array('clicksUnique'))));
// execute request in a loop to load all data
do {
// send request
try {
$request->sendNow();
} catch(Exception $e) {
die("API call error: ".$e->getMessage());
}
// request was successful, get the grid result and its recordset
$recordset = $request->getGrid()->getRecordset();
// iterate through the records
foreach($recordset as $rec) {
echo 'Affiliate name: '.$rec->get('firstname').' '.$rec->get('lastname').'<br>';
}
} while ($recordset->getSize() == $request->getLimit());