Skip to content

Instantly share code, notes, and snippets.

@MattiasNilsson
Last active April 5, 2018 05:43
Show Gist options
  • Save MattiasNilsson/4dad8fd5c00dbbca897cd9e757f88476 to your computer and use it in GitHub Desktop.
Save MattiasNilsson/4dad8fd5c00dbbca897cd9e757f88476 to your computer and use it in GitHub Desktop.
public function lazyListAction() {
$options = array(
'cachePolicy' => $this->cachePolicy,
'cache' => $this->cache
);
$this->qbankApiCredentials = new \QBNK\QBank\API\Credentials(
$this->settings['qbank']['api_key'],
$args['user'],
$args['password']
);
$this->qbankApi = new \TYPO3\PxaJaymjayQbank\Service\QBankApi(
$this->settings['qbank']['api_url'],
$this->qbankApiCredentials,
$options
);
$args = $this->request->getArguments();
$search = new \QBNK\QBank\API\Model\Search(
array(
'folderIds' => array(2),
"folderDepth" => 9999,
'categoryIds' => array(4),
'offset' => $args['offset'],
"limit" => $args['resultsPerPage'],
"deploymentSiteIds" => array(7)
)
);
$propertyList = [];
$mediaDefault = [];
// add some properties
if(!empty($args['listpropertiesitem'])) {
foreach( array_map('trim', explode(',', $args['listpropertiesitem'])) as $propertyName) {
$mediaDefault[$propertyName] = [$propertyName, ""];
$propertyList[] = (new \QBNK\QBank\API\Model\PropertyRequest())->setSystemName($propertyName);
}
}
// set some filtering
foreach( json_decode($args['filtersData']) as $systemName => $values) {
if(!empty($values)) {
$propertyList[] = new \QBNK\QBank\API\Model\PropertyCriteria([
"systemName" => $systemName,
"value" => $values,
"operator" => \QBNK\QBank\API\Model\PropertyCriteria::OPERATOR_CONTAINS_ANY
]);
}
}
$search->setProperties($propertyList);
$medias = $this->qbankApi->search()->search($search);
// Send statistics
$this->qbankApi->events()->search( $this->user->qbank_session_id, $search, $medias->getTotalHits() );
$mediaInfo = array();
$deployedFileName = $this->qbankApi->deployment()->retrieveSite($args['deploymentSiteId'])->getViewserver().
$this->qbankApi->deployment()->retrieveSite($args['deploymentSiteId'])->getViewpath();
foreach($medias as $media) {
$files = array();
foreach ($media->getDeployedFiles() as $file) {
$name = $deployedFileName . $file->getRemoteFile();
$templateId = $file->getImageTemplateId();
$files[$templateId ? $templateId:'original'] = $name;
}
$mediaSet = $mediaDefault;
foreach($media->getPropertySets() as $set) {
foreach($set->getProperties() as $property){
$sysName = $property->getPropertyType()->getSystemName();
$mediaSet[$sysName]= array(
0 => $sysName,
1 => $property->getValue()
);
}
}
// no really used for now
//$category = $this->qbankApi->categories()->retrieveCategory($media->getCategoryId());
$mediaInfo[] = array(
"id"=>$media->getMediaId(),
"categoryId"=>$media->getCategoryId(),
// "categoryName"=>$category->getName(),
"imageName"=>$media->getName(),
"properties"=>$mediaSet,
"files"=>$files
);
}
$this->view->assign('totalHits', $medias->getTotalHits());
$this->view->assign('medias', $mediaInfo);
$this->view->assign('uid', $args['uid']);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment