예제 #1
0
 public static function getValueContainer($type)
 {
     if (!isset(self::$types)) {
         self::$types = json_decode(file_get_contents(dirname(__FILE__) . '/zoo_element_type_map.json'), true);
     }
     $value_container = self::DEFAULT_VALUE_CONTAINER;
     if (array_key_exists($type, self::$types)) {
         $value_container = self::$types[$type][self::VALUE_FIELD];
     }
     return $value_container;
 }
예제 #2
0
 public function getValue(Element $element, $all_array_data = false)
 {
     $can_repeat = $this->canRepeat($element);
     $data = $element->data();
     $result = null;
     if (!empty($data)) {
         if ($can_repeat) {
             $data = $data[0];
         }
         $value_container = RokSprocket_Provider_Zoo_FieldProcessorFactory::getValueContainer($element->getElementType());
         if (!$all_array_data && array_key_exists($value_container, $data) && is_string($data[$value_container])) {
             $result = $data[$value_container];
         } elseif ($all_array_data) {
             $result = $data;
         }
     }
     return $result;
 }
 /**
  * @return array the array of link types and label
  */
 public static function getTextTypes()
 {
     if (!isset(self::$text_types)) {
         require_once JPATH_ADMINISTRATOR . '/components/com_zoo/config.php';
         $applications = self::getZooApplications();
         $list = array();
         foreach ($applications as $application) {
             $types = $application->getTypes();
             foreach ($types as $type) {
                 $elements = $type->getElements();
                 foreach ($elements as $element) {
                     $sprocket_type = RokSprocket_Provider_Zoo_FieldProcessorFactory::getSprocketType($element->getElementType());
                     if ($sprocket_type == 'text') {
                         $key = 'text_field_' . $element->identifier;
                         $list[$key] = array();
                         $list[$key]['group'] = $application->id . '_' . $type->id;
                         $list[$key]['display'] = $element->config->name;
                     }
                 }
             }
         }
         $static = array('text_field_metadesc' => array('group' => null, 'display' => 'Meta Description Text'), 'text_field_name' => array('group' => null, 'display' => 'Item Name'));
         $list = array_merge($static, $list);
         self::sortTypes($list);
         self::$text_types = $list;
     }
     return self::$text_types;
 }
예제 #4
0
파일: Zoo.php 프로젝트: densem-2013/exikom
 /**
  * @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;
 }