/** * @param RokSprocket_Item $item * @param bool $default_field * @param bool $defaults_custom_field * @param bool $per_item_field * * @return bool|null|RokSprocket_Item_Image */ protected function setupImage(RokSprocket_Item &$item, $default_field = false, $defaults_custom_field = false, $per_item_field = false) { $image = false; $defimage = false; if (!$default_field) { $defimage = false; } else { switch ($this->parameters->get($default_field, 'primary')) { case 'none': $defimage = false; break; case 'primary': $defimage = $item->getPrimaryImage(); break; case 'custom': if ($defaults_custom_field) { $defimage = $this->parameters->get($defaults_custom_field, false) ? RokSprocket_Item_Image::createFromJSON($this->parameters->get($defaults_custom_field, false)) : false; break; } default: $defimage = $item->getImage($this->parameters->get($default_field)); } } if (!$per_item_field) { $image = $defimage; } else { switch (trim($item->getParam($per_item_field, '-default-'))) { case '-none-': $image = false; break; case '-primary-': // backward compatibility for introduced issue // backward compatibility for introduced issue case '-article-': $image = $item->getPrimaryImage(); break; case '-default-': $image = $defimage; break; default: $image = $item->getParam($per_item_field); if (!empty($image)) { $image = RokSprocket_Item_Image::createFromJSON($item->getParam($per_item_field, '')); } else { $image = $defimage; } } } return $image; }
/** * @param $raw_item * @param int $dborder * * @return \RokSprocket_Item */ protected function convertRawToItem($raw_item, $dborder = 0) { $app_type = $this->params->get('zoo_application_type'); //$textfield = $this->params->get('zoo_articletext_field', ''); $item = new RokSprocket_Item(); $item->setProvider($this->provider_name); $item->setId($raw_item->id); $item->setAlias($raw_item->alias); $item->setAuthor($raw_item->author_name); $item->setTitle($raw_item->title); $item->setDate($raw_item->created); $item->setPublished($raw_item->published == 1 ? true : false); $item->setCategory($raw_item->category_title); $item->setHits($raw_item->hits); $item->setRating($raw_item->rating); $item->setMetaKey(''); $item->setMetaDesc(''); $item->setMetaData(''); require_once JPATH_ADMINISTRATOR . '/components/com_zoo/config.php'; $app = App::getInstance('zoo'); $applications = $app->application->getApplications(); $application = $applications[$raw_item->application_id]; $text_ids = array(); $image_ids = array(); $link_ids = array(); $types = $application->getTypes(); foreach ($types as $type) { $elements = $type->getElements(); foreach ($elements as $element) { if ($element->config->type == 'image') { $image_ids[] = $element->identifier; } if ($element->config->type == 'link') { $link_ids[] = $element->identifier; } if ($element->config->type == 'textarea' || $element->config->type == 'text') { $text_ids[] = $element->identifier; } } } $els = json_decode($raw_item->elements); $texts = array(); $images = array(); $links = array(); foreach ($els as $ident => $el) { if (in_array($ident, $image_ids)) { $image = new RokSprocket_Item_Image(); $image->setSource($el->file); $image->setIdentifier('image_field_' . $ident); $image->setCaption(isset($el->title) ? $el->title : ''); $image->setAlttext(isset($el->title) ? $el->title : ''); $images[$image->getIdentifier()] = $image; if (isset($images['image_field_' . $ident]) && !$item->getPrimaryImage()) { $item->setPrimaryImage($image); } } if (in_array($ident, $link_ids)) { $link = new RokSprocket_Item_Link(); $link->setUrl(isset($el->url) ? $el->url : (isset($el->value) ? $el->value : '')); $link->setText(''); $link->setIdentifier('link_field_' . $ident); $links[$link->getIdentifier()] = $link; if (isset($links['link_field_' . $ident]) && !$item->getPrimaryLink()) { $item->setPrimaryLink($link); } } if (in_array($ident, $text_ids) && is_object($el)) { foreach ($el as $val) { $texts['text_field_' . $ident] = $val->value; } } else { if (in_array($ident, $text_ids) && !is_object($el)) { $texts['text_field_' . $ident] = $el->value; } } } $item->setLinks($images); $item->setLinks($links); $params = RokCommon_JSON::decode($raw_item->params); $desc = "metadata.description"; $texts['text_field_metadesc'] = $params->{$desc}; $item->setTextFields($texts); $item->setText(array_shift(array_values($texts))); $primary_link = new RokSprocket_Item_Link(); $primary_link->setUrl(JRoute::_('index.php?option=com_zoo&task=item&item_id=' . $raw_item->id, true)); $primary_link->getIdentifier('article_link'); $item->setPrimaryLink($primary_link); $item->setCommentCount($raw_item->comment_count); $tags = explode(',', $raw_item->tags) ? explode(',', $raw_item->tags) : array(); $item->setTags($tags); $item->setDbOrder($dborder); return $item; }
/** * @param $raw_item * @param int $dborder * * @return \RokSprocket_Item */ protected function convertRawToItem($raw_item, $dborder = 0) { /** @var Item $raw_item*/ $app_type = $this->params->get('zoo_application_type'); //$textfield = $this->params->get('zoo_articletext_field', ''); $item = new RokSprocket_Item(); $item->setProvider($this->provider_name); $item->setId($raw_item->id); $item->setAlias($raw_item->created_by_alias ? $raw_item->created_by_alias : JFactory::getUser($raw_item->created_by)->name); $item->setAuthor(JFactory::getUser($raw_item->created_by)->name); $item->setTitle($raw_item->name); $item->setDate($raw_item->created); $item->setPublished($raw_item->state == 1 ? true : false); $category = $raw_item->getPrimaryCategory(); if ($category) { $item->setCategory($category->name); } $item->setHits($raw_item->hits); //$this->query->select('ROUND(AVG(v.value), 0) AS rating'); //$this->query->join('LEFT', '#__zoo_rating AS v ON a.id = v.item_id'); $item->setMetaKey(''); $item->setMetaDesc(''); $item->setMetaData(''); $texts = array(); $images = array(); $links = array(); /** @var Element[] $elements */ $elements = $raw_item->getElements(); $rating = 0; foreach ($elements as $element) { /** @var RokSprocket_Provider_Zoo_FieldProcessorInterface $processor */ $processor = RokSprocket_Provider_Zoo_FieldProcessorFactory::getFieldProcessor($element->getElementType()); $sprocket_type = RokSprocket_Provider_Zoo_FieldProcessorFactory::getSprocketType($element->getElementType()); switch ($sprocket_type) { case 'image': if ($processor instanceof RokSprocket_Provider_Zoo_ImageFieldProcessorInterface) { /** @var RokSprocket_Provider_Zoo_ImageFieldProcessorInterface $processor */ $image = $processor->getAsSprocketImage($element); $images[$image->getIdentifier()] = $image; if (isset($images['image_field_' . $element->identifier]) && !$item->getPrimaryImage()) { $item->setPrimaryImage($image); } } break; case 'link': if ($processor instanceof RokSprocket_Provider_Zoo_LinkFieldProcessorInterface) { /** @var RokSprocket_Provider_Zoo_LinkFieldProcessorInterface $processor */ $link = $processor->getAsSprocketLink($element); $links[$link->getIdentifier()] = $link; if (isset($links['link_field_' . $element->identifier]) && !$item->getPrimaryLink()) { $item->setPrimaryLink($link); } } break; case 'text': /** @var RokSprocket_Provider_Zoo_FieldProcessorInterface $processor */ $texts['text_field_' . $element->identifier] = $processor->getValue($element); break; default: break; } if ($element->getElementType() == 'rating') { $rating = $element->getRating(); } } $item->setRating($rating); $item->setImages($images); $item->setLinks($links); $params = RokCommon_JSON::decode($raw_item->params); $desc = "metadata.description"; $texts['text_field_metadesc'] = $params->{$desc}; $texts['text_field_name'] = $raw_item->name; $texts = $this->processPlugins($texts); $item->setTextFields($texts); $text = array_values($texts); $text = array_shift($text); $item->setText($text); $primary_link = new RokSprocket_Item_Link(); $primary_link->setUrl(JRoute::_('index.php?option=com_zoo&task=item&item_id=' . $raw_item->id, true)); $primary_link->getIdentifier('article_link'); $item->setPrimaryLink($primary_link); $item->setCommentCount(count($raw_item->getComments())); //$tags = (explode(',', $raw_item->tags)) ? explode(',', $raw_item->tags) : array(); $tags = $raw_item->getTags(); $item->setTags($tags); $item->setDbOrder($dborder); return $item; }