function rec_transfer_output_preference in Recommender API 6.3
Same name and namespace in other branches
- 7.4 rec_transfer/rec_transfer.module \rec_transfer_output_preference()
- 7.5 rec_transfer/rec_transfer.module \rec_transfer_output_preference()
1 call to rec_transfer_output_preference()
- rec_transfer_upload in rec_transfer/
rec_transfer.module
File
- rec_transfer/
rec_transfer.module, line 193 - This is the module file for Recommender Data Transfer
Code
function rec_transfer_output_preference($command_id, $recommender_id) {
$apikey = variable_get('rec_transfer_apikey', NULL);
// drupal_create_filename() is not necessary because we want to overwrite the file if exists.
$filename = variable_get('file_temporary_path', file_directory_temp()) . "/{$apikey}-{$command_id}";
$fp = gzopen($filename, 'wb9');
$rec_params = unserialize(db_result(db_query('SELECT params FROM {recommender_app} WHERE id=%d', $recommender_id)));
// FIXME: what if $rec_params['table'] == <FILE>?
if ($rec_params['table'] == '<BUILTIN>') {
$sql = 'SELECT source_eid, target_eid, score, updated FROM {recommender_preference} WHERE app_id=' . $recommender_id;
$rec_params['fields'] = array(
'source_eid',
'target_eid',
'score',
'updated',
);
}
else {
if (isset($rec_params['sql']) && strtoupper(substr($rec_params['sql'], 0, strlen('SELECT '))) === 'SELECT ') {
$sql = $rec_params['sql'];
}
else {
$fields = $rec_params['fields'];
foreach ($fields as $pos => $field) {
$fields[$pos] = is_null($field) ? 'NULL' : $field;
}
$sql = 'SELECT ' . implode(',', $fields) . ' FROM ' . $rec_params['table'];
}
}
$users_dict = array();
$items_dict = array();
$rows = db_query($sql);
while ($row = db_fetch_array($rows)) {
$line = array(
$row[$rec_params['fields'][0]],
$row[$rec_params['fields'][1]],
is_null($rec_params['fields'][2]) ? NULL : $row[$rec_params['fields'][2]],
is_null($rec_params['fields'][3]) ? NULL : $row[$rec_params['fields'][3]],
);
$users_dict[$line[0]] = 1;
$items_dict[$line[1]] = 1;
// TODO: test failuire; also make sure CSV is well formed (eg. double quotes, etc)
gzwrite($fp, implode(',', $line) . "\n");
}
gzclose($fp);
//print $filename;
return $filename;
}