<div class="lineinfo image_descr"> <?php if ($this->params->get('intro_use_image', 1) && $src) : ?> <figure class="image<?php echo $this->params->get('intro_position') ? ' right' : ' left'; ?>"> <?php if ($this->params->get('intro_link_image', 1)) : ?> <a href="<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($item->slug, $item->categoryslug, 0, $item)); ?>" class="hasTip" title="<?php echo JText::_( 'FLEXI_READ_MORE_ABOUT' ) . '::' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>"> <img src="<?php echo $thumb; ?>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" /> </a> <?php else : ?> <img src="<?php echo $thumb; ?>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" /> <?php endif; ?> </figure> <?php endif; ?> <p> <?php FlexicontentFields::getFieldDisplay($item, 'text', $values=null, $method='display'); if ($this->params->get('intro_strip_html', 1)) : echo flexicontent_html::striptagsandcut( $item->fields['text']->display, $this->params->get('intro_cut_text', 200) ); else : echo $item->fields['text']->display; endif; ?> </p> </div> <!-- BOF under-description-line1 block --> <?php if (isset($item->positions['under-description-line1'])) : ?> <div class="lineinfo line3"> <?php foreach ($item->positions['under-description-line1'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?>
static function createItemsListHTML(&$params, &$item_list, $isform = 0, &$parentfield, &$parentitem, &$_item_data = null) { $db = JFactory::getDBO(); global $globalcats, $globalnoroute, $fc_run_times; if (!is_array($globalnoroute)) { $globalnoroute = array(); } // Get fields of type relation static $disallowed_fieldnames = null; $disallowed_fields = array('relation', 'relation_reverse'); if ($disallowed_fieldnames === null) { $query = "SELECT name FROM #__flexicontent_fields WHERE field_type IN ('" . implode("','", $disallowed_fields) . "')"; $db->setQuery($query); $field_name_col = FLEXI_J16GE ? $db->loadColumn() : $db->loadResultArray(); $disallowed_fieldnames = !$field_name_col ? array() : array_flip($field_name_col); } // Prefix - Suffix - Separator parameters, replacing other field values if found $remove_space = $params->get('remove_space', 0); $pretext = $params->get($isform ? 'pretext_form' : 'pretext', ''); $posttext = $params->get($isform ? 'posttext_form' : 'posttext', ''); $separatorf = $params->get($isform ? 'separator' : 'separatorf'); $opentag = $params->get($isform ? 'opentag_form' : 'opentag', ''); $closetag = $params->get($isform ? 'closetag_form' : 'closetag', ''); if ($pretext) { $pretext = $remove_space ? $pretext : $pretext . ' '; } if ($posttext) { $posttext = $remove_space ? $posttext : ' ' . $posttext; } switch ($separatorf) { case 0: $separatorf = ' '; break; case 1: $separatorf = '<br />'; break; case 2: $separatorf = ' | '; break; case 3: $separatorf = ', '; break; case 4: $separatorf = $closetag . $opentag; break; case 5: $separatorf = ''; break; default: $separatorf = ' '; break; } // some parameter shortcuts $relitem_html = $params->get($isform ? 'relitem_html_form' : 'relitem_html', '__display_text__'); $displayway = $params->get($isform ? 'displayway_form' : 'displayway', 1); $addlink = $params->get($isform ? 'addlink_form' : 'addlink', 1); $addtooltip = $params->get($isform ? 'addtooltip_form' : 'addtooltip', 1); // Parse and identify custom fields $result = preg_match_all("/\\{\\{([a-zA-Z_0-9]+)(##)?([a-zA-Z_0-9]+)?\\}\\}/", $relitem_html, $field_matches); $custom_field_reps = $result ? $field_matches[0] : array(); $custom_field_names = $result ? $field_matches[1] : array(); $custom_field_methods = $result ? $field_matches[3] : array(); /*foreach ($custom_field_names as $i => $custom_field_name) $parsed_fields[] = $custom_field_names[$i] . ($custom_field_methods[$i] ? "->". $custom_field_methods[$i] : ""); echo "$relitem_html :: Fields for Related Items List: ". implode(", ", $parsed_fields ? $parsed_fields : array() ) ."<br/>\n";*/ // Parse and identify language strings and then make language replacements $result = preg_match_all("/\\%\\%([^%]+)\\%\\%/", $relitem_html, $translate_matches); $translate_strings = $result ? $translate_matches[1] : array('FLEXI_READ_MORE_ABOUT'); foreach ($translate_strings as $translate_string) { $relitem_html = str_replace('%%' . $translate_string . '%%', JText::_($translate_string), $relitem_html); } foreach ($item_list as $result) { // Check if related item is published and skip if not published if ($result->state != 1 && $result->state != -5) { continue; } $itemslug = $result->id . ":" . $result->alias; $catslug = ""; // Check if removed from category or inside a noRoute category or inside a non-published category // and use main category slug or other routable & published category slug $catid_arr = explode(",", $result->catidlist); $catalias_arr = explode(",", $result->cataliaslist); for ($i = 0; $i < count($catid_arr); $i++) { $itemcataliases[$catid_arr[$i]] = $catalias_arr[$i]; } $rel_itemid = $result->id; $rel_catid = !empty($result->rel_catid) ? $result->rel_catid : $result->catid; if (isset($itemcataliases[$rel_catid]) && !in_array($rel_catid, $globalnoroute) && $globalcats[$rel_catid]->published) { $catslug = $rel_catid . ":" . $itemcataliases[$rel_catid]; } else { if (!in_array($result->catid, $globalnoroute) && $globalcats[$result->catid]->published) { $catslug = $globalcats[$result->catid]->slug; } else { foreach ($catid_arr as $catid) { if (!in_array($catid, $globalnoroute) && $globalcats[$catid]->published) { $catslug = $globalcats[$catid]->slug; break; } } } } $result->slug = $itemslug; $result->categoryslug = $catslug; } // Perform field's display replacements if ($i_slave = $parentfield ? $parentitem->id . "_" . $parentfield->id : '') { $fc_run_times['render_subfields'][$i_slave] = 0; } foreach ($custom_field_names as $i => $custom_field_name) { if (isset($disallowed_fieldnames[$custom_field_name])) { continue; } if ($custom_field_methods[$i] == 'label') { continue; } if ($i_slave) { $start_microtime = microtime(true); } $display_var = $custom_field_methods[$i] ? $custom_field_methods[$i] : 'display'; FlexicontentFields::getFieldDisplay($item_list, $custom_field_name, $custom_field_values = null, $display_var); if ($i_slave) { $fc_run_times['render_subfields'][$i_slave] += round(1000000 * 10 * (microtime(true) - $start_microtime)) / 10; } } $tooltip_class = FLEXI_J30GE ? 'hasTooltip' : 'hasTip'; $display = array(); foreach ($item_list as $result) { $url_read_more = JText::_(isset($_item_data->url_read_more) ? $_item_data->url_read_more : 'FLEXI_READ_MORE_ABOUT', 1); $url_class = isset($_item_data->url_class) ? $_item_data->url_class : 'relateditem'; // Check if related item is published and skip if not published if ($result->state != 1 && $result->state != -5) { continue; } // a. Replace some custom made strings $item_url = JRoute::_(FlexicontentHelperRoute::getItemRoute($result->slug, $result->categoryslug, 0, $result)); $item_title_escaped = htmlspecialchars($result->title, ENT_COMPAT, 'UTF-8'); $tooltip_title = flexicontent_html::getToolTip($url_read_more, $item_title_escaped, $translate = 0, $escape = 0); $item_tooltip = ' class="' . $tooltip_class . ' ' . $url_class . '" title="' . $tooltip_title . '" '; $display_text = $displayway ? $result->title : $result->id; $display_text = !$addlink ? $display_text : '<a href="' . $item_url . '"' . ($addtooltip ? $item_tooltip : '') . ' >' . $display_text . '</a>'; $curr_relitem_html = $relitem_html; $curr_relitem_html = str_replace('__item_url__', $item_url, $curr_relitem_html); $curr_relitem_html = str_replace('__item_title_escaped__', $item_title_escaped, $curr_relitem_html); $curr_relitem_html = str_replace('__item_tooltip__', $item_tooltip, $curr_relitem_html); $curr_relitem_html = str_replace('__display_text__', $display_text, $curr_relitem_html); // b. Replace item properties, e.g. {item->id}, (item->title}, etc $null_field = null; FlexicontentFields::doQueryReplacements($curr_relitem_html, $null_field, $result); // c. Replace HTML display of various item fields $err_mssg = 'Cannot replace field: "%s" because it is of not allowed field type: "%s", which can cause loop or other problem'; foreach ($custom_field_names as $i => $custom_field_name) { $_field = @$result->fields[$custom_field_name]; $custom_field_display = ''; if ($is_disallowed_field = isset($disallowed_fieldnames[$custom_field_name])) { $custom_field_display .= sprintf($err_mssg, $custom_field_name, @$_field->field_type); } else { $display_var = $custom_field_methods[$i] ? $custom_field_methods[$i] : 'display'; $custom_field_display .= @$_field->{$display_var}; } $curr_relitem_html = str_replace($custom_field_reps[$i], $custom_field_display, $curr_relitem_html); } $display[] = trim($pretext . $curr_relitem_html . $posttext); } $display = $opentag . implode($separatorf, $display) . $closetag; return $display; }
/** * Creates the RSS for the View * * @since 1.0 */ function display($tpl = null) { $db = JFactory::getDBO(); $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $params = $this->get('Params'); $doc->link = JRoute::_(FlexicontentHelperRoute::getCategoryRoute(JRequest::getVar('cid', null, '', 'int'))); $category = $this->get('Category'); // Prepare query to match feed data JRequest::setVar('limit', $params->get('feed_limit')); // Force a specific limit, this will be moved to the model $params->set('orderby', $params->get('feed_orderby', 'rdate')); $params->set('orderbycustomfield', $params->get('feed_orderbycustomfield', 1)); $params->set('orderbycustomfieldid', $params->get('feed_orderbycustomfieldid', 0)); $params->set('orderbycustomfielddir', $params->get('feed_orderbycustomfielddir', 'ASC')); $params->set('orderbycustomfieldint', $params->get('feed_orderbycustomfieldint', 0)); $params->set('orderby_2nd', $params->get('feed_orderby', 'alpha')); $params->set('orderbycustomfield_2nd', $params->get('feed_orderbycustomfield_2nd', 1)); $params->set('orderbycustomfieldid_2nd', $params->get('feed_orderbycustomfieldid_2nd', 0)); $params->set('orderbycustomfielddir_2nd', $params->get('feed_orderbycustomfielddir_2nd', 'ASC')); $params->set('orderbycustomfieldint_2nd', $params->get('feed_orderbycustomfieldint_2nd', 0)); $model = $this->getModel(); $model->setState('limit', $params->get('feed_limit', $model->getState('limit'))); $rows = $this->get('Data'); $feed_summary = $params->get('feed_summary', 0); $feed_summary_cut = $params->get('feed_summary_cut', 200); $feed_use_image = $params->get('feed_use_image', 1); $feed_link_image = $params->get('feed_link_image', 1); $feed_image_source = $params->get('feed_image_source', ''); $feed_image_size = $params->get('feed_image_size', ''); $feed_image_method = $params->get('feed_image_method', 1); $feed_image_width = $params->get('feed_image_width', 100); $feed_image_height = $params->get('feed_image_height', 80); // Retrieve default image for the image field if ($feed_use_image && $feed_image_source) { $query = 'SELECT attribs, name FROM #__flexicontent_fields WHERE id = ' . (int) $feed_image_source; $db->setQuery($query); $image_dbdata = $db->loadObject(); //$image_dbdata->params = FLEXI_J16GE ? new JRegistry($image_dbdata->params) : new JParameter($image_dbdata->params); $img_size_map = array('l' => 'large', 'm' => 'medium', 's' => 'small', '' => ''); $img_field_size = $img_size_map[$feed_image_size]; $img_field_name = $image_dbdata->name; } // TODO render and add extra fields here ... maybe via special display function for feeds view $extra_fields = $params->get('feed_extra_fields', ''); $extra_fields = array_unique(preg_split("/\\s*,\\s*/u", $extra_fields)); if ($extra_fields) { foreach ($extra_fields as $fieldname) { // Render given field for ALL ITEMS FlexicontentFields::getFieldDisplay($rows, $fieldname, $values = null, $method = 'display'); } } foreach ($rows as $row) { // strip html from feed item title $title = $this->escape($row->title); $title = html_entity_decode($title); // url link to article // & used instead of & as this is converted by feed creator $link = JRoute::_(FlexicontentHelperRoute::getItemRoute($row->slug, $category->slug, 0, $row)); // strip html from feed item description text $description = $feed_summary ? $row->introtext . $row->fulltext : $row->introtext; $description = flexicontent_html::striptagsandcut($description, $feed_summary_cut); if ($feed_use_image) { // feed image is enabled $src = ''; $thumb = ''; if ($feed_image_source) { // case 1 use an image field FlexicontentFields::getFieldDisplay($row, $img_field_name, null, 'display', 'module'); $img_field = $row->fields[$img_field_name]; if (!$img_field_size) { $src = str_replace(JURI::root(), '', $img_field->thumbs_src['large'][0]); } else { $src = ''; $thumb = $img_field->thumbs_src[$img_field_size][0]; } } else { // case 2 extract from item $src = flexicontent_html::extractimagesrc($row); } $RESIZE_FLAG = !$feed_image_source || !$img_field_size; if ($src && $RESIZE_FLAG) { // Resize image when src path is set and RESIZE_FLAG: (a) using image extracted from item main text OR (b) not using image field's already created thumbnails $h = '&h=' . $feed_image_height; $w = '&w=' . $feed_image_width; $aoe = '&aoe=1'; $q = '&q=95'; $zc = $feed_image_method ? '&zc=' . $feed_image_method : ''; $ext = pathinfo($src, PATHINFO_EXTENSION); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb = JURI::base(true) . '/components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; } else { // Do not resize image when (a) image src path not set or (b) using image field's already created thumbnails } if ($thumb) { $description = "\n\t \t\t\t<div class='feed-description'>\n\t\t \t\t\t<a class='feed-readmore' target='_blank' href='" . $link . "'>\n\t\t \t\t\t\t<img src='" . $thumb . "' alt='" . $title . "' title='" . $title . "' align='left'/>\n\t\t \t\t\t</a>\n\t\t \t\t\t<p>" . $description . "</p>\n\t\t \t\t</div>"; } } if ($extra_fields) { foreach ($extra_fields as $fieldname) { if ($row->fields[$fieldname]->display) { $description .= '<br/><b>' . $row->fields[$fieldname]->label . ":</b> " . $row->fields[$fieldname]->display; } } } //$author = $row->created_by_alias ? $row->created_by_alias : $row->author; @($date = $row->created ? date('r', strtotime($row->created)) : ''); // load individual item creator class $item = new JFeedItem(); $item->title = $title; $item->link = $link; $item->description = $description; $item->date = $date; //$item->author = $author; $item->category = $this->escape($category->title); // loads item info into rss array $doc->addItem($item); } }
</span> <?php } ?> <?php if ($fcr_use_image && @$result->fc_item_id) { // FLEXIcontent specific result ?> <?php $src = $thumb = ''; if (!empty($img_field_name)) { FlexicontentFields::getFieldDisplay($fcitems[$i], $img_field_name, $values = null, $method = 'display'); $img_field =& $fcitems[$i]->fields[$img_field_name]; $src = str_replace(JURI::root(), '', @$img_field->thumbs_src[$img_field_size][0]); } else { $src = flexicontent_html::extractimagesrc($fcitems[$i]); } $RESIZE_FLAG = !$this->params->get('fcr_image') || !$this->params->get('fcr_image_size'); if ($src && $RESIZE_FLAG) { // Resize image when src path is set and RESIZE_FLAG: (a) using image extracted from item main text OR (b) not using image field's already created thumbnails $w = '&w=' . $this->params->get('fcr_width', 200); $h = '&h=' . $this->params->get('fcr_height', 200); $aoe = '&aoe=1'; $q = '&q=95'; $zc = $this->params->get('fcr_method') ? '&zc=' . $this->params->get('fcr_method') : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : '';
<?php } ?> <?php } ?> </tr> </thead> <tbody> <?php foreach ($items as $i => $item) { if ($use_image) { $src = ''; $thumb = ''; if ($image_source) { FlexicontentFields::getFieldDisplay($item, $img_field_name, null, 'display', 'module'); $img_field = $item->fields[$img_field_name]; if (!$img_field_size) { $src = str_replace(JURI::root(), '', $img_field->thumbs_src['large'][0]); } else { $thumb = $img_field->thumbs_src[$img_field_size][0]; } } else { $src = flexicontent_html::extractimagesrc($item); } $RESIZE_FLAG = !$image_source || !$img_field_size; if ($src && $RESIZE_FLAG) { // Resize image when src path is set and RESIZE_FLAG: (a) using image extracted from item main text OR (b) not using image field's already created thumbnails $h = '&h=' . $image_height; $w = '&w=' . $image_width; $aoe = '&aoe=1';
function getItemThumbs(&$params, &$items, $uprefix = 'item', $rprefix = 'nav') { if (!$params->get($uprefix . '_use_image', 1)) { return array(); } if (empty($items)) { return array(); } if ($params->get($uprefix . '_image')) { $img_size_map = array('l' => 'large', 'm' => 'medium', 's' => 'small', 'o' => 'original'); $img_field_size = $img_size_map[$params->get($uprefix . '_image_size', 'l')]; $img_field_name = $params->get($uprefix . '_image'); } if (!empty($img_field_name)) { //$_return = FlexicontentFields::renderFields( false, array_keys($items), array($img_field_name), FLEXI_ITEMVIEW, array('display_'.$img_field_size.'_src')); FlexicontentFields::getFieldDisplay($items, $img_field_name, $values = null, 'display_' . $img_field_size . '_src', FLEXI_ITEMVIEW); } $thumbs = array(); foreach ($items as $item_id => $item) { if (!empty($img_field_name)) { //$src = str_replace(JURI::root(), '', @ $_return[$item_id][$img_field_name] ); $img_field =& $item->fields[$img_field_name]; $src = str_replace(JURI::root(), '', @$img_field->{'display_' . $img_field_size . '_src'}); } else { $src = flexicontent_html::extractimagesrc($item); } $RESIZE_FLAG = !$params->get($uprefix . '_image') || !$params->get($uprefix . '_image_size'); if ($src && $RESIZE_FLAG) { // Resize image when src path is set and RESIZE_FLAG: (a) using image extracted from item main text OR (b) not using image field's already created thumbnails $w = '&w=' . $params->get($rprefix . '_width', 200); $h = '&h=' . $params->get($rprefix . '_height', 200); $aoe = '&aoe=1'; $q = '&q=95'; $zc = $params->get($rprefix . '_method') ? '&zc=' . $params->get($rprefix . '_method') : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb = JURI::base(true) . '/components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; } else { // Do not resize image when (a) image src path not set or (b) using image field's already created thumbnails $thumb = $src; } if ($thumb) { $thumbs[$item_id] = $thumb; } } return $thumbs; }
public static function getList(&$params) { global $modfc_jprof, $mod_fc_run_times; $forced_itemid = $params->get('forced_itemid'); $db = JFactory::getDBO(); $user = JFactory::getUser(); // Get IDs of user's access view levels if (!FLEXI_J16GE) { $aid = (int) $user->get('aid'); } else { $aid_arr = JAccess::getAuthorisedViewLevels($user->id); } // get the component parameters $flexiparams = JComponentHelper::getParams('com_flexicontent'); // get module ordering parameters $ordering = $params->get('ordering', array()); $count = (int) $params->get('count', 5); $featured = (int) $params->get('count_feat', 1); // Default ordering is 'added' if none ordering is set. Also make sure $ordering is an array (of ordering groups) if (empty($ordering)) { $ordering = array('added'); } if (!is_array($ordering)) { $ordering = explode(',', $ordering); } // get other module parameters $method_curlang = (int) $params->get('method_curlang', 0); // standard $display_title = $params->get('display_title'); $link_title = $params->get('link_title'); $cuttitle = $params->get('cuttitle'); $display_date = $params->get('display_date'); $display_text = $params->get('display_text'); $display_hits = $params->get('display_hits'); $display_voting = $params->get('display_voting'); $display_comments = $params->get('display_comments'); $mod_readmore = $params->get('mod_readmore'); $mod_cut_text = $params->get('mod_cut_text'); $mod_do_stripcat = $params->get('mod_do_stripcat', 1); $mod_use_image = $params->get('mod_use_image'); $mod_image = $params->get('mod_image'); $mod_link_image = $params->get('mod_link_image'); $mod_default_img_show = $params->get('mod_default_img_show', 1); $mod_default_img_path = $params->get('mod_default_img_path', 'components/com_flexicontent/assets/images/image.png'); $mod_width = (int) $params->get('mod_width', 80); $mod_height = (int) $params->get('mod_height', 80); $mod_method = (int) $params->get('mod_method', 1); // featured $display_title_feat = $params->get('display_title_feat'); $link_title_feat = $params->get('link_title_feat'); $cuttitle_feat = $params->get('cuttitle_feat'); $display_date_feat = $params->get('display_date_feat'); $display_text_feat = $params->get('display_text'); $display_hits_feat = $params->get('display_hits_feat'); $display_voting_feat = $params->get('display_voting_feat'); $display_comments_feat = $params->get('display_comments_feat'); $mod_readmore_feat = $params->get('mod_readmore_feat'); $mod_cut_text_feat = $params->get('mod_cut_text_feat'); $mod_do_stripcat_feat = $params->get('mod_do_stripcat_feat', 1); $mod_use_image_feat = $params->get('mod_use_image_feat'); $mod_link_image_feat = $params->get('mod_link_image_feat'); $mod_width_feat = (int) $params->get('mod_width_feat', 140); $mod_height_feat = (int) $params->get('mod_height_feat', 140); $mod_method_feat = (int) $params->get('mod_method_feat', 1); // Common for image of standard/feature image $mod_image_custom_display = $params->get('mod_image_custom_display'); $mod_image_custom_url = $params->get('mod_image_custom_url'); $mod_image_fallback_img = $params->get('mod_image_fallback_img'); // Retrieve default image for the image field and also create field parameters so that they can be used if ($mod_image) { $query = 'SELECT attribs, name FROM #__flexicontent_fields WHERE id = ' . (int) $mod_image; $db->setQuery($query); $mod_image_dbdata = $db->loadObject(); $mod_image_name = $mod_image_dbdata->name; //$img_fieldparams = new JRegistry($mod_image_dbdata->attribs); } if ($mod_default_img_show) { $src = $mod_default_img_path; // Default image featured $h = '&h=' . $mod_height; $w = '&w=' . $mod_width; $aoe = '&aoe=1'; $q = '&q=95'; $zc = $mod_method ? '&zc=' . $mod_method : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb_default = JURI::base() . 'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; // Default image standard $h = '&h=' . $mod_height_feat; $w = '&w=' . $mod_width_feat; $aoe = '&aoe=1'; $q = '&q=95'; $zc = $mod_method_feat ? '&zc=' . $mod_method_feat : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb_default_feat = JURI::base() . 'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; } // Retrieve custom displayed field data (including their parameters and access): hits/voting/etc if ($display_hits || $display_hits_feat || $display_voting || $display_voting_feat) { $query = 'SELECT * FROM #__flexicontent_fields'; $disp_field_where = array(); if ($display_hits || $display_hits_feat) { $disp_field_where[] = 'field_type="hits"'; } if ($display_voting || $display_voting_feat) { $disp_field_where[] = 'field_type="voting"'; } $query .= ' WHERE ' . implode($disp_field_where, ' OR '); $db->setQuery($query); $disp_fields_data = $db->loadObjectList('field_type'); if ($display_hits || $display_hits_feat) { $hitsfield = $disp_fields_data['hits']; $hitsfield->parameters = new JRegistry($hitsfield->attribs); $has_access_hits = in_array($hitsfield->access, $aid_arr); } if ($display_voting || $display_voting_feat) { $votingfield = $disp_fields_data['voting']; $votingfield->parameters = new JRegistry($votingfield->attribs); $has_access_voting = in_array($votingfield->access, $aid_arr); } } // get module fields parameters $use_fields = $params->get('use_fields', 1); $display_label = $params->get('display_label'); $fields = array_map('trim', explode(',', $params->get('fields'))); if ($fields[0] == '') { $fields = array(); } // get fields that when empty cause an item to be skipped $skip_items = (int) $params->get('skip_items', 0); $skiponempty_fields = array_map('trim', explode(',', $params->get('skiponempty_fields'))); if ($skiponempty_fields[0] == '') { $skiponempty_fields = array(); } if ($params->get('maxskipcount', 50) > 100) { $params->set('maxskipcount', 100); } $striptags_onempty_fields = $params->get('striptags_onempty_fields'); $onempty_fields_combination = $params->get('onempty_fields_combination'); // featured $use_fields_feat = $params->get('use_fields_feat', 1); $display_label_feat = $params->get('display_label_feat'); $fields_feat = array_map('trim', explode(',', $params->get('fields_feat'))); if ($fields_feat[0] == '') { $fields_feat = array(); } //$mod_fc_run_times['query_items']= $modfc_jprof->getmicrotime(); $cat_items_arr = array(); if (!is_array($ordering)) { $ordering = explode(',', $ordering); } foreach ($ordering as $ord) { $items_arr = modFlexicontentHelper::getItems($params, $ord); if (empty($items_arr)) { continue; } foreach ($items_arr as $catid => $items) { if (!isset($cat_items_arr[$catid])) { $cat_items_arr[$catid] = array(); } for ($i = 0; $i < count($items); $i++) { $items[$i]->featured = $i < $featured ? 1 : 0; $items[$i]->fetching = $ord; $cat_items_arr[$catid][] = $items[$i]; } } } //$mod_fc_run_times['query_items'] = $modfc_jprof->getmicrotime() - $mod_fc_run_times['query_items']; // Impementation of Empty Field Filter. // The cost of the following code is minimal. // The big time cost goes into rendering the fields ... // We need to create the display of the fields before examining if they are empty. // The hardcoded limit of max items skipped is 100. if ($skip_items && count($skiponempty_fields)) { $mod_fc_run_times['empty_fields_filter'] = $modfc_jprof->getmicrotime(); // 0. Add ONLY skipfields to the list of fields to be rendered $fields_list = implode(',', $skiponempty_fields); //$skip_params = new JRegistry(); //$skip_params->set('fields',$fields_list); foreach ($cat_items_arr as $catid => $cat_items) { // 1. The filtered rows $filtered_rows = array(); $order_count = array(); // 2. Get field values (we pass null parameters to only retrieve field values and not render (YET) the 'skip-onempty' fields FlexicontentFields::getFields($cat_items, 'module', $skip_params = null); // 3. Skip Items with empty fields (if this filter is enabled) foreach ($cat_items as $i => $item) { //echo "$i . {$item->title}<br/>"; // Check to initialize counter for this ordering if (!isset($order_count[$item->fetching])) { $order_count[$item->fetching] = 0; } // Check if enough encountered for this ordering if ($order_count[$item->fetching] >= $count) { continue; } // Initialize skip property ZERO for 'any' and ONE for 'all' $skip_curritem = $onempty_fields_combination == 'any' ? 0 : 1; // Now check for empty field display or empty field values, if so item must be skipped foreach ($skiponempty_fields as $skipfield_name) { if ($skip_items == 2) { // We will check field's display FlexicontentFields::getFieldDisplay($item, $skipfield_name, null, 'display', 'module'); $skipfield_data = @$item->fields[$skipfield_name]->display; } else { // We will check field's value $skipfield_iscore = $item->fields[$skipfield_name]->iscore; $skipfield_id = $item->fields[$skipfield_name]->id; $skipfield_data = $skipfield_iscore ? $item->{$skipfield_name} : @$item->fieldvalues[$skipfield_id]; } // Strip HTML Tags if ($striptags_onempty_fields) { $skipfield_data = strip_tags($skipfield_data); } // Decide if field is empty $skipfield_isempty = is_array($skipfield_data) ? !count($skipfield_data) : !strlen(trim($skipfield_data)); if ($skipfield_isempty) { if ($onempty_fields_combination == 'any') { $skip_curritem = 1; break; } } else { if ($onempty_fields_combination == 'all') { $skip_curritem = 0; break; } } } if ($skip_curritem) { //echo "Skip: $i . {$item->title}<br/>"; if (!isset($order_skipcount[$item->fetching])) { $order_skipcount[$item->fetching] = 0; } $order_skipcount[$item->fetching]++; continue; } // 4. Increment counter for item's ordering and Add item to list of displayed items $order_count[$item->fetching]++; $filtered_rows[] = $item; } $filtered_rows_arr[$catid] = $filtered_rows; } $mod_fc_run_times['empty_fields_filter'] = $modfc_jprof->getmicrotime() - $mod_fc_run_times['empty_fields_filter']; } else { $filtered_rows_arr =& $cat_items_arr; } $mod_fc_run_times['item_list_creation'] = $modfc_jprof->getmicrotime(); // *** OPTIMIZATION: we only render the fields after skipping unwanted items if ($use_fields && count($fields) || $use_fields_feat && count($fields_feat)) { $all_fields = array(); if ($use_fields && count($fields)) { $all_fields = array_merge($all_fields, $fields); } if ($use_fields_feat && count($fields_feat)) { $all_fields = array_merge($all_fields, $fields_feat); } $all_fields = array_unique($all_fields); $fields_list = implode(',', $all_fields); $params->set('fields', $fields_list); } // *** OPTIMIZATION: we should create some variables outside the loop ... TODO MORE if (($display_hits_feat || $display_hits) && $has_access_hits) { $hits_icon = FLEXI_J16GE ? JHTML::image('components/com_flexicontent/assets/images/' . 'user.png', JText::_('FLEXI_HITS_L')) : JHTML::_('image.site', 'user.png', 'components/com_flexicontent/assets/images/', NULL, NULL, JText::_('FLEXI_HITS_L')); } if ($display_comments_feat || $display_comments) { $comments_icon = FLEXI_J16GE ? JHTML::image('components/com_flexicontent/assets/images/' . 'comments.png', JText::_('FLEXI_COMMENTS_L')) : JHTML::_('image.site', 'comments.png', 'components/com_flexicontent/assets/images/', NULL, NULL, JText::_('FLEXI_COMMENTS_L')); } $option = JRequest::getVar('option'); $view = JRequest::getVar('view'); $isflexi_itemview = $option == 'com_flexicontent' && $view == FLEXI_ITEMVIEW; $active_item_id = JRequest::getInt('id', 0); $lists_arr = array(); foreach ($filtered_rows_arr as $catid => $filtered_rows) { if (empty($filtered_rows)) { $rows = array(); } else { if ($use_fields && count($fields) || $use_fields_feat && count($fields_feat)) { $rows = FlexicontentFields::getFields($filtered_rows, 'module', $params); } else { $rows =& $filtered_rows; } } // For Debuging /*foreach ($order_skipcount as $skipordering => $skipcount) { echo "SKIPS $skipordering ==> $skipcount<br>\n"; }*/ $lists = array(); foreach ($ordering as $ord) { $lists[$ord] = array(); } $ord = "__start__"; foreach ($rows as $row) { if ($ord != $row->fetching) { // Detect change of next ordering group $ord = $row->fetching; $i = 0; } if ($row->featured) { // image processing $thumb = ''; $thumb_rendered = ''; if ($mod_use_image_feat) { if ($mod_image_custom_display) { @(list($fieldname, $varname) = preg_split('/##/', $mod_image_custom_display)); $fieldname = trim($fieldname); $varname = trim($varname); $varname = $varname ? $varname : 'display'; $thumb_rendered = FlexicontentFields::getFieldDisplay($row, $fieldname, null, $varname, 'module'); $src = ''; } else { if ($mod_image_custom_url) { @(list($fieldname, $varname) = preg_split('/##/', $mod_image_custom_url)); $fieldname = trim($fieldname); $varname = trim($varname); $varname = $varname ? $varname : 'display'; $src = FlexicontentFields::getFieldDisplay($row, $fieldname, null, $varname, 'module'); } else { if ($mod_image) { FlexicontentFields::getFieldDisplay($row, $mod_image_name, null, 'display_large_src', 'module'); // just makes sure thumbs are created by requesting a '*_src' display $img_field =& $row->fields[$mod_image_name]; if ($mod_use_image_feat == 1) { $src = str_replace(JURI::root(), '', @$img_field->thumbs_src['large'][0]); } else { $src = ''; $thumb = @$img_field->thumbs_src[$mod_use_image_feat][0]; } if (!$src && $mod_image_fallback_img == 1 || $src && $mod_image_fallback_img == 2 && $img_field->using_default_value) { $src = flexicontent_html::extractimagesrc($row); } } else { $src = flexicontent_html::extractimagesrc($row); } } } if (!$thumb && !$src && $mod_default_img_show) { $thumb = $thumb_default_feat; } if ($src) { $h = '&h=' . $mod_height_feat; $w = '&w=' . $mod_width_feat; $aoe = '&aoe=1'; $q = '&q=95'; $zc = $mod_method_feat ? '&zc=' . $mod_method_feat : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb = JURI::base() . 'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; } } $lists[$ord]['featured'][$i] = new stdClass(); $lists[$ord]['featured'][$i]->_row = $row; $lists[$ord]['featured'][$i]->id = $row->id; $lists[$ord]['featured'][$i]->is_active_item = $isflexi_itemview && $row->id == $active_item_id; //date if ($display_date_feat == 1) { $dateformat = JText::_($params->get('date_format_feat', 'DATE_FORMAT_LC3')); if ($dateformat == JText::_('custom')) { $dateformat = $params->get('custom_date_format_feat', JText::_('DATE_FORMAT_LC3')); } $date_fields_feat = $params->get('date_fields_feat', array('created')); $date_fields_feat = !is_array($date_fields_feat) ? array($date_fields_feat) : $date_fields_feat; $lists[$ord]['featured'][$i]->date_created = ""; if (in_array('created', $date_fields_feat)) { // Created $lists[$ord]['featured'][$i]->date_created .= $params->get('date_label_feat', 1) ? '<span class="date_label_feat">' . JText::_('FLEXI_DATE_CREATED') . '</span> ' : ''; $lists[$ord]['featured'][$i]->date_created .= '<span class="date_value_feat">' . JHTML::_('date', $row->created, $dateformat) . '</span>'; } $lists[$ord]['featured'][$i]->date_modified = ""; if (in_array('modified', $date_fields_feat)) { // Modified $lists[$ord]['featured'][$i]->date_modified .= $params->get('date_label_feat', 1) ? '<span class="date_label_feat">' . JText::_('FLEXI_DATE_MODIFIED') . '</span> ' : ''; $modified_date = $row->modified != $db->getNullDate() ? JHTML::_('date', $row->modified, $dateformat) : JText::_('FLEXI_DATE_NEVER'); $lists[$ord]['featured'][$i]->date_modified .= '<span class="date_value_feat">' . $modified_date . '</span>'; } } $lists[$ord]['featured'][$i]->image_rendered = $thumb_rendered; $lists[$ord]['featured'][$i]->image = $thumb; $lists[$ord]['featured'][$i]->hits = $row->hits; $lists[$ord]['featured'][$i]->hits_rendered = ''; if ($display_hits_feat && $has_access_hits) { FlexicontentFields::loadFieldConfig($hitsfield, $row); $lists[$ord]['featured'][$i]->hits_rendered .= $params->get('hits_label_feat') ? '<span class="hits_label_feat">' . JText::_($hitsfield->label) . '</span> ' : ''; $lists[$ord]['featured'][$i]->hits_rendered .= $hits_icon; $lists[$ord]['featured'][$i]->hits_rendered .= ' (' . $row->hits . (!$params->get('hits_label_feat') ? ' ' . JTEXT::_('FLEXI_HITS_L') : '') . ')'; } $lists[$ord]['featured'][$i]->voting = ''; if ($display_voting_feat && $has_access_voting) { FlexicontentFields::loadFieldConfig($votingfield, $row); $lists[$ord]['featured'][$i]->voting .= $params->get('voting_label_feat') ? '<span class="voting_label_feat">' . JText::_($votingfield->label) . '</span> ' : ''; $lists[$ord]['featured'][$i]->voting .= '<div class="voting_value_feat">' . flexicontent_html::ItemVoteDisplay($votingfield, $row->id, $row->rating_sum, $row->rating_count, 'main', '', $params->get('vote_stars_feat', 1), $params->get('allow_vote_feat', 0), $params->get('vote_counter_feat', 1), !$params->get('voting_label_feat')) . '</div>'; } if ($display_comments_feat) { $lists[$ord]['featured'][$i]->comments = $row->comments_total; $lists[$ord]['featured'][$i]->comments_rendered = $params->get('comments_label_feat') ? '<span class="comments_label_feat">' . JText::_('FLEXI_COMMENTS') . '</span> ' : ''; $lists[$ord]['featured'][$i]->comments_rendered .= $comments_icon; $lists[$ord]['featured'][$i]->comments_rendered .= ' (' . $row->comments_total . (!$params->get('comments_label_feat') ? ' ' . JTEXT::_('FLEXI_COMMENTS_L') : '') . ')'; } $lists[$ord]['featured'][$i]->catid = $row->catid; $lists[$ord]['featured'][$i]->itemcats = explode(",", $row->itemcats); $lists[$ord]['featured'][$i]->link = JRoute::_(FlexicontentHelperRoute::getItemRoute($row->slug, $row->categoryslug, $forced_itemid, $row) . ($method_curlang == 1 ? "&lang=" . substr($row->language, 0, 2) : "")); $lists[$ord]['featured'][$i]->title = strlen($row->title) > $cuttitle_feat ? JString::substr($row->title, 0, $cuttitle_feat) . '...' : $row->title; $lists[$ord]['featured'][$i]->alias = $row->alias; $lists[$ord]['featured'][$i]->fulltitle = $row->title; $lists[$ord]['featured'][$i]->text = $mod_do_stripcat_feat ? flexicontent_html::striptagsandcut($row->introtext, $mod_cut_text_feat) : $row->introtext; $lists[$ord]['featured'][$i]->typename = $row->typename; $lists[$ord]['featured'][$i]->access = $row->access; $lists[$ord]['featured'][$i]->featured = 1; if ($use_fields_feat && @$row->fields && $fields_feat) { $lists[$ord]['featured'][$i]->fields = array(); foreach ($fields_feat as $field) { if (!isset($row->fields[$field])) { continue; } /*$lists[$ord]['featured'][$i]->fields[$field] = new stdClass(); $lists[$ord]['featured'][$i]->fields[$field]->display = @$row->fields[$field]->display ? $row->fields[$field]->display : ''; $lists[$ord]['featured'][$i]->fields[$field]->name = $row->fields[$field]->name; $lists[$ord]['featured'][$i]->fields[$field]->id = $row->fields[$field]->id;*/ // Expose field to the module template ... the template should NOT modify this ... if (!isset($row->fields[$field]->display)) { $row->fields[$field]->display = ''; } $lists[$ord]['featured'][$i]->fields[$field] = $row->fields[$field]; } } $i++; } else { // image processing $thumb = ''; $thumb_rendered = ''; if ($mod_use_image) { if ($mod_image_custom_display) { @(list($fieldname, $varname) = preg_split('/##/', $mod_image_custom_display)); $fieldname = trim($fieldname); $varname = trim($varname); $varname = $varname ? $varname : 'display'; $thumb_rendered = FlexicontentFields::getFieldDisplay($row, $fieldname, null, $varname, 'module'); $src = ''; // Clear src no rendering needed } else { if ($mod_image_custom_url) { @(list($fieldname, $varname) = preg_split('/##/', $mod_image_custom_url)); $fieldname = trim($fieldname); $varname = trim($varname); $varname = $varname ? $varname : 'display'; $src = FlexicontentFields::getFieldDisplay($row, $fieldname, null, $varname, 'module'); } else { if ($mod_image) { FlexicontentFields::getFieldDisplay($row, $mod_image_name, null, 'display_large_src', 'module'); // just makes sure thumbs are created by requesting a '*_src' display $img_field =& $row->fields[$mod_image_name]; if ($mod_use_image == 1) { $src = str_replace(JURI::root(), '', @$img_field->thumbs_src['large'][0]); } else { $src = ''; $thumb = @$img_field->thumbs_src[$mod_use_image][0]; } if (!$src && $mod_image_fallback_img == 1 || $src && $mod_image_fallback_img == 2 && $img_field->using_default_value) { $src = flexicontent_html::extractimagesrc($row); } } else { $src = flexicontent_html::extractimagesrc($row); } } } if (!$thumb && !$src && $mod_default_img_show) { $thumb = $thumb_default; } if ($src) { $h = '&h=' . $mod_height; $w = '&w=' . $mod_width; $aoe = '&aoe=1'; $q = '&q=95'; $zc = $mod_method ? '&zc=' . $mod_method : ''; $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION)); $f = in_array($ext, array('png', 'ico', 'gif')) ? '&f=' . $ext : ''; $conf = $w . $h . $aoe . $q . $zc . $f; $base_url = !preg_match("#^http|^https|^ftp|^/#i", $src) ? JURI::base(true) . '/' : ''; $thumb = JURI::base() . 'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . $base_url . $src . $conf; } } // START population of item's custom properties $lists[$ord]['standard'][$i] = new stdClass(); $lists[$ord]['standard'][$i]->_row = $row; $lists[$ord]['standard'][$i]->id = $row->id; $lists[$ord]['standard'][$i]->is_active_item = $isflexi_itemview && $row->id == $active_item_id; //date if ($display_date == 1) { $dateformat = JText::_($params->get('date_format', 'DATE_FORMAT_LC3')); if ($dateformat == JText::_('custom')) { $dateformat = $params->get('custom_date_format', JText::_('DATE_FORMAT_LC3')); } $date_fields = $params->get('date_fields', array('created')); $date_fields = !is_array($date_fields) ? array($date_fields) : $date_fields; $lists[$ord]['standard'][$i]->date_created = ""; if (in_array('created', $date_fields)) { // Created $lists[$ord]['standard'][$i]->date_created .= $params->get('date_label', 1) ? '<span class="date_label">' . JText::_('FLEXI_DATE_CREATED') . '</span> ' : ''; $lists[$ord]['standard'][$i]->date_created .= '<span class="date_value">' . JHTML::_('date', $row->created, $dateformat) . '</span>'; } $lists[$ord]['standard'][$i]->date_modified = ""; if (in_array('modified', $date_fields)) { // Modified $lists[$ord]['standard'][$i]->date_modified .= $params->get('date_label', 1) ? '<span class="date_label">' . JText::_('FLEXI_DATE_MODIFIED') . '</span> ' : ''; $modified_date = $row->modified != $db->getNullDate() ? JHTML::_('date', $row->modified, $dateformat) : JText::_('FLEXI_DATE_NEVER'); $lists[$ord]['standard'][$i]->date_modified .= '<span class="date_value_feat">' . $modified_date . '</span>'; } } $lists[$ord]['standard'][$i]->image_rendered = $thumb_rendered; $lists[$ord]['standard'][$i]->image = $thumb; $lists[$ord]['standard'][$i]->hits = $row->hits; $lists[$ord]['standard'][$i]->hits_rendered = ''; if ($display_hits && $has_access_hits) { FlexicontentFields::loadFieldConfig($hitsfield, $row); $lists[$ord]['standard'][$i]->hits_rendered .= $params->get('hits_label') ? '<span class="hits_label">' . JText::_($hitsfield->label) . '</span> ' : ''; $lists[$ord]['standard'][$i]->hits_rendered .= $hits_icon; $lists[$ord]['standard'][$i]->hits_rendered .= ' (' . $row->hits . (!$params->get('hits_label') ? ' ' . JTEXT::_('FLEXI_HITS_L') : '') . ')'; } $lists[$ord]['standard'][$i]->voting = ''; if ($display_voting && $has_access_voting) { FlexicontentFields::loadFieldConfig($votingfield, $row); $lists[$ord]['standard'][$i]->voting .= $params->get('voting_label') ? '<span class="voting_label">' . JText::_($votingfield->label) . '</span> ' : ''; $lists[$ord]['standard'][$i]->voting .= '<div class="voting_value">' . flexicontent_html::ItemVoteDisplay($votingfield, $row->id, $row->rating_sum, $row->rating_count, 'main', '', $params->get('vote_stars', 1), $params->get('allow_vote', 0), $params->get('vote_counter', 1), !$params->get('voting_label')) . '</div>'; } if ($display_comments) { $lists[$ord]['standard'][$i]->comments = $row->comments_total; $lists[$ord]['standard'][$i]->comments_rendered = $params->get('comments_label') ? '<span class="comments_label">' . JText::_('FLEXI_COMMENTS') . '</span> ' : ''; $lists[$ord]['standard'][$i]->comments_rendered .= $comments_icon; $lists[$ord]['standard'][$i]->comments_rendered .= ' (' . $row->comments_total . (!$params->get('comments_label') ? ' ' . JTEXT::_('FLEXI_COMMENTS_L') : '') . ')'; } $lists[$ord]['standard'][$i]->catid = $row->catid; $lists[$ord]['standard'][$i]->itemcats = explode(",", $row->itemcats); $lists[$ord]['standard'][$i]->link = JRoute::_(FlexicontentHelperRoute::getItemRoute($row->slug, $row->categoryslug, $forced_itemid, $row) . ($method_curlang == 1 ? "&lang=" . substr($row->language, 0, 2) : "")); $lists[$ord]['standard'][$i]->title = strlen($row->title) > $cuttitle ? JString::substr($row->title, 0, $cuttitle) . '...' : $row->title; $lists[$ord]['standard'][$i]->alias = $row->alias; $lists[$ord]['standard'][$i]->fulltitle = $row->title; $lists[$ord]['standard'][$i]->text = $mod_do_stripcat ? flexicontent_html::striptagsandcut($row->introtext, $mod_cut_text) : $row->introtext; $lists[$ord]['standard'][$i]->typename = $row->typename; $lists[$ord]['standard'][$i]->access = $row->access; $lists[$ord]['standard'][$i]->featured = 0; if ($use_fields && @$row->fields && $fields) { $lists[$ord]['standard'][$i]->fields = array(); foreach ($fields as $field) { if (!isset($row->fields[$field])) { continue; } /*$lists[$ord]['standard'][$i]->fields[$field] = new stdClass(); $lists[$ord]['standard'][$i]->fields[$field]->display = @$row->fields[$field]->display ? $row->fields[$field]->display : ''; $lists[$ord]['standard'][$i]->fields[$field]->name = $row->fields[$field]->name; $lists[$ord]['standard'][$i]->fields[$field]->id = $row->fields[$field]->id;*/ // Expose field to the module template ... the template should NOT modify this ... if (!isset($row->fields[$field]->display)) { $row->fields[$field]->display = ''; } $lists[$ord]['standard'][$i]->fields[$field] = $row->fields[$field]; // Expose field to the module template ... but template may modify it ... } } $i++; } } $lists_arr[$catid] = $lists; } $mod_fc_run_times['item_list_creation'] = $modfc_jprof->getmicrotime() - $mod_fc_run_times['item_list_creation']; return $lists_arr; }
continue; } $fc_item_classes .= ' fc' . implode(' fc', $css_markups); $ecss_markups = $item->ecss_markups[$grp]; $title_markups = $item->title_markups[$grp]; foreach ($css_markups as $mui => $css_markup) { $markup_tags .= '<span class="fc_markup mu' . $css_markups[$mui] . $ecss_markups[$mui] . '">' . $title_markups[$mui] . '</span>'; } } $markup_tags .= '</span>'; $custom_link = null; if ($intro_use_image) { if (!empty($img_field_name)) { // render method 'display_NNNN_src' to avoid CSS/JS being added to the page /* $src = */ FlexicontentFields::getFieldDisplay($item, $img_field_name, $values = null, $method = 'display_' . $img_field_size . '_src'); $img_field =& $item->fields[$img_field_name]; $src = str_replace(JURI::root(), '', @$img_field->thumbs_src[$img_field_size][0]); if ($intro_link_image_to && isset($img_field->value[0])) { $custom_link = ($v = unserialize($img_field->value[0])) !== false ? @$v['link'] : @$img_field->value[0]['link']; } } else { $src = flexicontent_html::extractimagesrc($item); } // Use default image form layout parameters if (!$src && isset($intro_type_default_imgs[$item->typealias])) { $src = $intro_type_default_imgs[$item->typealias]; } if (!$src && isset($intro_type_default_imgs['_OTHER_'])) { $src = $intro_type_default_imgs['_OTHER_']; }
function onDisplayFieldValue(&$field, $item, $values = null, $prop = 'display') { if (!in_array($field->field_type, self::$field_types)) { return; } $view = JRequest::getString('view', FLEXI_ITEMVIEW); //if ($view != FLEXI_ITEMVIEW) return; if (JRequest::getCmd('print')) { return; } global $mainframe, $addthis; //$scheme = JURI::getInstance()->getScheme(); // we replaced http(s):// with // $document = JFactory::getDocument(); $lang = $document->getLanguage(); $lang = $item->params->get('language', $lang); $lang = $lang ? $lang : 'en-GB'; $lang = substr($lang, 0, 2); $lang = in_array($lang, array('en', 'es', 'it', 'th')) ? $lang : 'en'; // parameters shortcuts $display_comments = $field->parameters->get('display_comments', 1) && $item->parameters->get('comments', 0); $display_resizer = $field->parameters->get('display_resizer', 1); $display_print = $field->parameters->get('display_print', 1); $display_email = $field->parameters->get('display_email', 1); $display_voice = $field->parameters->get('display_voice', 1); $display_pdf = 0; //$field->parameters->get('display_pdf', 1); $load_css = $field->parameters->get('load_css', 1); $display_social = $field->parameters->get('display_social', 1); $addthis_user = $field->parameters->get('addthis_user', ''); $addthis_pubid = $field->parameters->get('addthis_pubid', $addthis_user); $spacer_size = $field->parameters->get('spacer_size', 21); $module_position = $field->parameters->get('module_position', ''); $default_size = $field->parameters->get('default_size', 12); $default_line = $field->parameters->get('default_line', 16); $target = $field->parameters->get('target', 'flexicontent'); $voicetarget = $field->parameters->get('voicetarget', 'flexicontent'); $spacer = ' style="width:' . $spacer_size . 'px;"'; // define a global variable to be sure the script is loaded only once $addthis = isset($addthis) ? $addthis : 0; if ($load_css) { $document->addStyleSheet(JURI::root(true) . '/plugins/flexicontent_fields/toolbar/toolbar/toolbar.css'); } if ($display_social || $display_comments || $display_email || $display_print) { $item_url = FlexicontentHelperRoute::getItemRoute($item->slug, $item->categoryslug); $server = JURI::getInstance()->toString(array('scheme', 'host', 'port')); $item_link = $server . JRoute::_($item_url); // NOTE: this uses current SSL setting (e.g menu item), and not URL scheme: http/https //$item_link = JRoute::_($item_url, true, -1); } $display = '<div class="flexitoolbar">'; // begin of the toolbar container // comments button if ($display_comments) { $comment_link = $item_link . '#addcomments'; $display .= ' <div class="flexi-react toolbar-element"> <span class="comments-bubble">' . ($module_position ? '<!-- jot ' . $module_position . ' s -->' : '') . $this->_getCommentsCount($item->id) . ($module_position ? '<!-- jot ' . $module_position . ' e -->' : '') . '</span> <span class="comments-legend flexi-legend"><a href="' . $comment_link . '" title="' . JText::_('FLEXI_FIELD_TOOLBAR_COMMENT') . '">' . JText::_('FLEXI_FIELD_TOOLBAR_COMMENT') . '</a></span> </div> <div class="toolbar-spacer"' . $spacer . '></div> '; } // text resizer if ($display_resizer) { $document->addScriptDeclaration('var textsize = ' . $default_size . '; var lineheight = ' . $default_line . '; function fsize(size,line,unit,id){ var vfontsize = document.getElementById(id); if(vfontsize){ vfontsize.style.fontSize = size + unit; vfontsize.style.lineHeight = line + unit; } } function changetextsize(up){ if(up){ textsize = parseFloat(textsize)+2; lineheight = parseFloat(lineheight)+2; }else{ textsize = parseFloat(textsize)-2; lineheight = parseFloat(lineheight)-2; } }'); $display .= ' <div class="flexi-resizer toolbar-element"> <a class="decrease" href="javascript:fsize(textsize,lineheight,\'px\',\'' . $target . '\');" onclick="changetextsize(0);">' . JText::_("FLEXI_FIELD_TOOLBAR_DECREASE") . '</a> <a class="increase" href="javascript:fsize(textsize,lineheight,\'px\',\'' . $target . '\');" onclick="changetextsize(1);">' . JText::_("FLEXI_FIELD_TOOLBAR_INCREASE") . '</a> <span class="flexi-legend">' . JText::_("FLEXI_FIELD_TOOLBAR_SIZE") . '</span> </div> <div class="toolbar-spacer"' . $spacer . '></div> '; } // email button if ($display_email) { require_once JPATH_SITE . DS . 'components' . DS . 'com_mailto' . DS . 'helpers' . DS . 'mailto.php'; $url = 'index.php?option=com_mailto&tmpl=component&link=' . MailToHelper::addLink($item_link); $estatus = 'width=400,height=400,menubar=yes,resizable=yes'; $display .= ' <div class="flexi-email toolbar-element"> <span class="email-legend flexi-legend"><a rel="nofollow" href="' . JRoute::_($url) . '" onclick="window.open(this.href,\'win2\',\'' . $estatus . '\'); return false;" title="' . JText::_('FLEXI_FIELD_TOOLBAR_SEND') . '">' . JText::_('FLEXI_FIELD_TOOLBAR_SEND') . '</a></span> </div> <div class="toolbar-spacer"' . $spacer . '></div> '; } // print button if ($display_print) { $pop = JRequest::getInt('pop'); $pstatus = 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no'; $print_link = $pop ? '#' : $item_link . (strstr($item_link, '?') ? '&' : '?') . 'pop=1&print=1&tmpl=component'; $js_link = $pop ? 'onclick="window.print();return false;"' : 'onclick="window.open(this.href,\'win2\',\'' . $pstatus . '\'); return false;"'; $display .= ' <div class="flexi-print toolbar-element"> <span class="print-legend flexi-legend"><a rel="nofollow" href="' . $print_link . '" ' . $js_link . ' title="' . JText::_('FLEXI_FIELD_TOOLBAR_PRINT') . '">' . JText::_('FLEXI_FIELD_TOOLBAR_PRINT') . '</a></span> </div> <div class="toolbar-spacer"' . $spacer . '></div> '; } // pdf button if ($display_voice) { $display .= "\n\t\t\t<div class=\"flexi-voice toolbar-element\">"; if ($lang == 'th') { // Special case language case, maybe la=laos, and Bhutan languages in the future (NECTEC support these languages) $document->addScript(JURI::root(true) . '/plugins/flexicontent_fields/toolbar/toolbar/th.js'); $display .= "\n\t\t\t\t\t<span class=\"voice-legend flexi-legend\"><a href=\"javascript:void(0);\" onclick=\"openwindow('" . $voicetarget . "','" . $lang . "');\" class=\"mainlevel-toolbar-article-horizontal\" rel=\"nofollow\">" . JTEXT::_('FLEXI_FIELD_TOOLBAR_VOICE') . "</a></span>\n\t\t\t\t\t"; } else { $document->addScript('//vozme.com/get_text.js'); $display .= "\n\t\t\t\t\t<span class=\"voice-legend flexi-legend\"><a href=\"javascript:void(0);\" onclick=\"get_id('" . $voicetarget . "','" . $lang . "','fm');\" class=\"mainlevel-toolbar-article-horizontal\" rel=\"nofollow\">" . JTEXT::_('FLEXI_FIELD_TOOLBAR_VOICE') . "</a></span>\n\t\t\t\t\t"; } $display .= "\n\t\t\t</div>\n\t\t\t<div class=\"toolbar-spacer\"" . $spacer . "></div>\n\t\t\t\t"; } // pdf button if ($display_pdf) { $pdflink = 'index.php?view=items&cid=' . $item->categoryslug . '&id=' . $item->slug . '&format=pdf'; $display .= ' <div class="flexi-pdf toolbar-element"> <span class="pdf-legend flexi-legend"><a href="' . JRoute::_($pdflink) . '" title="' . JText::_('FLEXI_FIELD_TOOLBAR_PDF') . '">' . JText::_('FLEXI_FIELD_TOOLBAR_PDF') . '</a></span> </div> <div class="toolbar-spacer"' . $spacer . '></div> '; } // AddThis social SHARE buttons, also optionally add OPEN GRAPH TAGs if ($display_social) { // *************** // OPEN GRAPH TAGs // *************** // OPEN GRAPH: site name if ($field->parameters->get('add_og_site_name')) { $document->addCustomTag("<meta property=\"og:site_name\" content=\"" . JFactory::getApplication()->getCfg('sitename') . "\" />"); } // OPEN GRAPH: title if ($field->parameters->get('add_og_title')) { $title = flexicontent_html::striptagsandcut($item->title); $document->addCustomTag("<meta property=\"og:title\" content=\"{$title}\" />"); } // OPEN GRAPH: description if ($field->parameters->get('add_og_descr')) { if ($item->metadesc) { $document->addCustomTag('<meta property="og:description" content="' . $item->metadesc . '" />'); } else { $text = flexicontent_html::striptagsandcut($item->text); $document->addCustomTag("<meta property=\"og:description\" content=\"{$text}\" />"); } } // OPEN GRAPH: type $og_type = (int) $field->parameters->get('add_og_type'); if ($og_type) { if ($og_type > 2) { $og_type = 1; } $og_type_names = array(1 => 'article', 2 => 'website'); $document->addCustomTag("<meta property=\"og:type\" content=\"" . $og_type_names[$og_type] . "\">"); } // OPEN GRAPH: image (extracted from item's description text) if ($field->parameters->get('add_og_image')) { $og_image_field = $field->parameters->get('og_image_field'); $og_image_fallback = $field->parameters->get('og_image_fallback'); $og_image_thumbsize = $field->parameters->get('og_image_thumbsize'); if ($og_image_field) { $imageurl = FlexicontentFields::getFieldDisplay($item, $og_image_field, null, 'display_' . $og_image_thumbsize . '_src', 'module'); if ($imageurl) { $img_field = $item->fields[$og_image_field]; if (!$imageurl && $og_image_fallback == 1 || $imageurl && $og_image_fallback == 2 && $img_field->using_default_value) { $imageurl = $this->_extractimageurl($item); } } } else { $imageurl = $this->_extractimageurl($item); } // Add image if fould, making sure it is converted to ABSOLUTE URL if ($imageurl) { $is_absolute = (bool) parse_url($imageurl, PHP_URL_SCHEME); // preg_match("#^http|^https|^ftp#i", $imageurl); $imageurl = $is_absolute ? $imageurl : JURI::root() . $imageurl; $document->addCustomTag("<meta property=\"og:image\" content=\"{$imageurl}\" />"); } } // Add og-URL explicitely as this is required by facebook ? if ($item_link) { $document->addCustomTag("<meta property=\"og:url\" content=\"" . $item_link . "\" />"); } // **************************** // AddThis social SHARE buttons // **************************** $addthis_outside_toolbar = $field->parameters->get('addthis_outside_toolbar', 0); $addthis_custom_code = $field->parameters->get('addthis_custom_code', false); $addthis_custom_predefined = $field->parameters->get('addthis_custom_predefined', false); $addthis_code = ''; if ($addthis_custom_code) { $addthis_code = str_replace('_item_url_', $item_link, $addthis_custom_code); $addthis_code = str_replace('_item_title_', htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'), $addthis_code); } else { switch ($addthis_custom_predefined) { case 1: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_default_style addthis_counter_style" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_facebook_like" fb:like:layout="button_count"></a> <a class="addthis_button_tweet"></a> <a class="addthis_button_pinterest_pinit"></a> <a class="addthis_counter addthis_pill_style"></a> </div> <!-- AddThis Button END --> '; break; case 2: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_preferred_1"></a> <a class="addthis_button_preferred_2"></a> <a class="addthis_button_preferred_3"></a> <a class="addthis_button_preferred_4"></a> <a class="addthis_button_compact"></a> <a class="addthis_counter addthis_bubble_style"></a> </div> <!-- AddThis Button END --> '; break; default: case 3: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_default_style addthis_16x16_style" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_preferred_1"></a> <a class="addthis_button_preferred_2"></a> <a class="addthis_button_preferred_3"></a> <a class="addthis_button_preferred_4"></a> <a class="addthis_button_compact"></a> <a class="addthis_counter addthis_bubble_style"></a> </div> <!-- AddThis Button END --> '; break; case 4: $addthis_code .= ' <!-- AddThis Button BEGIN --> <a class="addthis_button" href="//www.addthis.com/bookmark.php?v=300&pubid=' . $addthis_pubid . '"><img src="//s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="' . JText::_('FLEXI_FIELD_TOOLBAR_SHARE') . '" style="border:0"/></a> <!-- AddThis Button END --> '; break; case 5: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_floating_style addthis_counter_style" style="left:50px;top:50px;" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_facebook_like" fb:like:layout="box_count"></a> <a class="addthis_button_tweet" tw:count="vertical"></a> <a class="addthis_button_google_plusone" g:plusone:size="tall"></a> <a class="addthis_counter"></a> </div> <!-- AddThis Button END --> '; break; case 6: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_floating_style addthis_32x32_style" style="left:50px;top:50px;" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_preferred_1"></a> <a class="addthis_button_preferred_2"></a> <a class="addthis_button_preferred_3"></a> <a class="addthis_button_preferred_4"></a> <a class="addthis_button_compact"></a> </div> <!-- AddThis Button END --> '; break; case 7: $addthis_code .= ' <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_floating_style addthis_16x16_style" style="left:50px;top:50px;" addthis:url="' . $item_link . '" addthis:title="' . htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') . '"> <a class="addthis_button_preferred_1"></a> <a class="addthis_button_preferred_2"></a> <a class="addthis_button_preferred_3"></a> <a class="addthis_button_preferred_4"></a> <a class="addthis_button_compact"></a> </div> <!-- AddThis Button END --> '; break; } } if ($addthis_outside_toolbar) { $display .= '<div class="flexi-socials-outside">' . $addthis_code . '</div>'; } else { $display .= '<div class="flexi-socials toolbar-element">' . $addthis_code . '</div>'; } if (!$addthis) { $document->addCustomTag(' <script type="text/javascript"> var addthis_config = { services_exclude: "print,email" } </script> <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js' . ($addthis_pubid ? '#pubid=' . $addthis_pubid : '') . '"></script> '); $addthis = 1; } } $display .= '</div>'; // end of the toolbar container $field->{$prop} = $display; }
function getData($number) { nextendimport('nextend.database.database'); $db = NextendDatabase::getInstance(); $data = array(); $query = 'SELECT '; $query .= 'con.id '; $query .= 'FROM #__content AS con '; $query .= 'LEFT JOIN #__flexicontent_cats_item_relations AS fcat ON fcat.itemid = con.id '; $query .= 'LEFT JOIN #__categories AS cat ON fcat.catid = cat.id '; $where = array(); $category = array_map('intval', explode('||', $this->_data->get('sourcecategory', ''))); if (!in_array('0', $category) && !in_array('1', $category)) { $where[] = 'fcat.catid IN (' . implode(',', $category) . ') '; } if ($this->_data->get('sourcepublished', 1)) { $where[] = 'con.state = 1 '; } if ($this->_data->get('sourcefeatured', 0)) { $where[] = 'con.featured = 1 '; } $language = $this->_data->get('sourcelanguage', '*'); if ($language) { $where[] = 'con.language = ' . $db->quote($language) . ' '; } if (count($where)) { $query .= ' WHERE ' . implode(' AND ', $where); } $query .= 'GROUP BY con.id '; $order = NextendParse::parse($this->_data->get('order1', 'con.title|*|asc')); if ($order[0]) { $query .= 'ORDER BY ' . $order[0] . ' ' . $order[1] . ' '; $order = NextendParse::parse($this->_data->get('order2', 'con.title|*|asc')); if ($order[0]) { $query .= ', ' . $order[0] . ' ' . $order[1] . ' '; } } $query .= 'LIMIT 0, ' . $number . ' '; $db->setQuery($query); $result = $db->loadAssocList(); $lng = JFactory::getLanguage(); $adminapp = JFactory::$application; $siteapp = JApplicationCms::getInstance('site'); $siteapp->loadLanguage($lng); require_once JPATH_ADMINISTRATOR . DS . 'components/com_flexicontent/defineconstants.php'; JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_flexicontent' . DS . 'tables'); require_once JPATH_SITE . DS . 'components' . DS . 'com_flexicontent' . DS . 'helpers' . DS . 'permission.php'; require_once JPATH_SITE . DS . "components/com_flexicontent/classes/flexicontent.fields.php"; require_once JPATH_SITE . DS . "components/com_flexicontent/classes/flexicontent.helper.php"; require_once JPATH_SITE . '/components/com_flexicontent/models/item.php'; $app = JFactory::getApplication(); $user = JFactory::getUser(); $aid = FLEXI_J16GE ? $user->getAuthorisedViewLevels() : (int) $user->get('aid'); $itemmodel = FLEXI_J16GE ? new FlexicontentModelItem() : new FlexicontentModelItems(); for ($i = 0; $i < count($result); $i++) { $data[$i] = array(); JFactory::$application = $siteapp; $item = $itemmodel->getItem($result[$i]['id'], $check_view_access = false); list($item) = FlexicontentFields::getFields($item, '', $item->parameters, $aid); JFactory::$application = $adminapp; $data[$i]['link'] = FlexicontentHelperRoute::getItemRoute($item->id, $item->catid); foreach ($item->fields as $k => $field) { $data[$i][$k] = FlexicontentFields::getFieldDisplay($item, $k, $values = null, $method = 'display'); } } JFactory::$application = $adminapp; return $data; }
</div> <!-- EOF afterdescription block --> <?php endif; ?> <?php if (($this->params->get('show_tags', 1)) || ($this->params->get('show_category', 1))) : ?> <!-- BOF item categories, tags --> <div class="itemadditionnal group"> <?php if ($this->params->get('show_category', 1)) : ?> <span class="categories"> <?php FlexicontentFields::getFieldDisplay($item, 'categories', $values=null, $method='display'); ?> <span class="flexi label"><?php echo $this->fields['categories']->label; ?></span> <span class="flexi value"><?php echo $this->fields['categories']->display; ?></span> </span> <?php endif; ?> <?php FlexicontentFields::getFieldDisplay($item, 'tags', $values=null, $method='display'); ?> <?php if ($this->params->get('show_tags', 1) && $this->fields['tags']->display) : ?> <span class="tags"> <span class="flexi label"><?php echo $this->fields['tags']->label; ?></span> <span class="flexi value"><?php echo $this->fields['tags']->display; ?></span> </span> <?php endif; ?> </div> <!-- EOF item categories, tags --> <?php endif; ?> <?php if ($this->params->get('comments') && !JRequest::getVar('print')) : ?> <!-- BOF comments --> <div class="comments group"> <?php if ($this->params->get('comments') == 1) :