Hi guys
I have this mode and would like to add the stars review to it, But getting a unexpected error. Here is my code:
<?php
/**
* @version $Id: 1.0.5
* @package Sigsiu Online Business Index 2
* @authorName Sigrid & Radek Suski, Sigsiu.NET
* @authorEmail Mark.Smith@iBayIslands.com
* @authorUrl http://AboutUtila.com
* @copyright Copyright (C) 2007 Sigsiu.NET (http://www.sigsiu.net). All rights reserved.
* @license see http://www.gnu.org/copyleft/gpl.html GNU/GPL.
* SOBI2 is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
* @Module mod_sobi2featured.php 14-Oct-2007 Mark Smith
*/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
#print 'Debug Line '.__LINE__.' $params structure <pre>'; print_r ($params); print "</pre><br />\n";
$sobi2ModFeaturedOutput=TRUE; # Set Module output Flag
$output=NULL; # Clear Module output buffer
while($sobi2ModFeaturedOutput) {
# Start evaluate Module Parameters
# Set <div class='sobi2Featured{$class}'>
$class=$params->get('divclass_sfx');
if ($class) $class=' '.$class;
# Set SQL query limit
$limit = $params->get('count');
if ($limit == 0) {$sobi2ModFeaturedOutput=FALSE; break;} #Display 0 Entries
if(!$limit) $limit = 1; #Default value = display 1 Entry
if ($limit > 20) $limit = 20; #Maximum value = display 20 Entries
# End set SQL query limit
# Start evaluate 'Featured Entry Field ID' simple error check
$selectFieldId=$params->get('FeaturedEntryFieldId');
if ($selectFieldId=='') {
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - No Featured Entry field ID specified **\n";
break;
}
if (!(strpos($selectFieldId,'_')===FALSE)) {
# Featured Entry Field has probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Featured Entry Field ID **<br />Check Module configuration Featured Entry field ID. This should be set to a the <b>ID</b> of the Featured Entry Field, (<b>not</b> the Field name)\n";
break;
}
# End evaluate 'Featured Entry Field ID' simple error check
# Start evalulate 'Featured Entry Key' simple error check
$featuredEntryKey=$params->get('FeaturedEntryKey');
if (!$featuredEntryKey) {
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - No Featured Entry Key specified **\n";
break;
}
# End evalulate 'Featured Entry Key' simple error check
# Start Evaluate 'Display Custom Field ID's'
$customFields=$params->get('customfields');
if ($customFields!==''){
# Display Custom Field ID's are specified
$customFields=trim(rtrim($params->get('customfields'),','));
# Simple check to see if Custom Field Names have been used instead of Custom Field ID Numbers
if (strpos($customFields,'_')===FALSE) $customFields=explode(',',$customFields);
else {
# Custom Fields have probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Display Custom Field ID's **<br />Check Module configuration 'Display Custom Field ID's'. This should be set to a list of the Custom Field <b>ID's</b>, (<b>not</b> Custom Field names)\n";
break;
}
}
#print 'Debug Line '.__LINE__.' $customFields structure <pre>'; print_r ($customFields); print "</pre><br />\n";
# End Evaluate 'Display Custom Field ID's'
# Start evaluate Custom Field sorting
$sortOrder=$params->get('sortOrder');
if (strpos($sortOrder,'CustomField')!==FALSE){
# Sort by Custom Field is selected
$SortCustomFieldId=$params->get('SortCustomFieldId');
if ($customFields==''){
# No 'Display Custom Field ID's' specified
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field **<br />Check Module configuration - Sort by Custom Field has been selected, but no 'Display Custom Field ID's' have been specified.\n";
break;
}
if ($SortCustomFieldId=='') {
# No 'Sort by Custom Field ID' specified
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field **<br />Check Module configuration - Sort by Custom Field has been selected, but no Sort by Custom Field ID is specified\n";
break;
}
if (strpos($SortCustomFieldId,"_")!==FALSE) {
# 'Sort by Custom Field ID' has probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field ID **<br />Check Module configuration - 'Sort by Custom Field ID'. This should be set to Custom Field <b>ID</b>, (<b>not</b> a Custom Field name)\n\n";
break;
}
if (!in_array($SortCustomFieldId,$customFields)) {
# 'Sort by Custom Field ID' is not in 'Display Custom Field ID's' list
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field ID **<br />Check Module configuration - 'Sort by Custom Field ID' is not in list of 'Display Custom Field ID's'\n";
break;
}
# Assume 'Sort by Custom Field ID' is valid
}
# End evaluate Custom Field sorting
# End evalulate Module Parameters
# Start getting required data from Database
# All required data will be stored in multi-dimensional array named $records
# Get the itemids for non-expired 'Featured Entries' where $selectFieldId is checked (data_txt = '1')
$currdate = date('y-m-d h:i:s');
$query="SELECT i.itemid FROM #__sobi2_fields_data fd inner join #__sobi2_item i on fd.itemid = i.itemid WHERE (i.publish_down > '".$currdate."' OR i.publish_down = '0000-00-00 00:00:00') AND fd.fieldid=$selectFieldId and fd.data_txt='$featuredEntryKey' ORDER BY RAND() LIMIT $limit";
$database->setQuery($query);
$itemids=$database->loadResultArray();
#print 'Debug Line '.__LINE__.' $itemids structure <pre>'; print_r ($itemids); print "</pre><br />\n";
# If No 'Featured Entries' found, stop module processing
if (!count($itemids)) {$sobi2ModFeaturedOutput=FALSE; break;}
# Reset SQL query limit to the actual number of 'Featured Entries' found
$limit=count($itemids);
# Get a Joomla Menu ID for SOBI component
$query="SELECT id FROM #__menu WHERE link LIKE '%index.php?option=com_sobi2%' AND type = 'components' AND published = '1' LIMIT 1";
$database->setQuery($query);
$menuId=$database->loadResult();
#print 'Debug Line '.__LINE__.' $menuId structure <pre>'; print_r ($menuId); print "</pre><br />\n";
# Build $records for href (URL link to each Featured Entry details display)
foreach ($itemids as $itemid){
$href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=$itemid&Itemid={$menuId}";
$href=sefRelToAbs($href);
$records[$itemid]['href']=$href;
}
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# Build SQL search sub-string for itemid's to be retrieved
$itemidMatch=NULL;
foreach ($itemids as $itemid){
$itemidMatch.=$itemid.',';
}
$itemidMatch=trim(rtrim($itemidMatch,','));
#print 'Debug Line '.__LINE__.' $itemidMatch structure <pre>'; print_r ($itemidMatch); print "</pre><br />\n";
# Start get Custom Fields data
#print 'Debug Line '.__LINE__.' $customFields structure <pre>'; print_r ($customFields); print "</pre><br />\n";
if ($customFields!=='') {
# Only if custom field Id's were specified in 'Display Custom Field ID's'
# Build SQL search sub-string for Custom Fields to be retrieved
$customFieldsMatch=NULL;
foreach ($customFields as $field) $customFieldsMatch.=$field.',';
$customFieldsMatch=trim(rtrim($customFieldsMatch,','));
# Build an SQL query limit for the maximum number of Custom Fields that can be found
$thisLimit=$limit*count($customFields);
# Get the Custom Fields Data for 'Featured Entries'
$query="SELECT itemid, fieldid, data_txt FROM #__sobi2_fields_data WHERE itemid IN ($itemidMatch) AND fieldid IN ($customFieldsMatch) ORDER BY itemid ASC, fieldid ASC LIMIT {$thisLimit}";
$database->setQuery($query);
$customFieldsData=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $customFieldsData structure <pre>'; print_r ($customFieldsData); print "</pre><br />\n";
if ($params->get('displayCustomFieldLabels')=='TRUE') {
# Get the Custom Fields Labels for 'Featured Entries'
# Get Configuration Language
$query="SELECT `configValue` FROM #__sobi2_config WHERE `configKey`='language'";
$database->setQuery($query);
$sobi2Language=$database->loadResult();
#print 'Debug Line '.__LINE__.' $sobi2Language structure <pre>'; print_r ($sobi2Language); print "</pre><br />\n";
# Get the Custom Field Labels for this language
$query="SELECT langValue,fieldid FROM #__sobi2_language WHERE fieldid IN ($customFieldsMatch) AND sobi2Lang='{$sobi2Language}'";
$database->setQuery($query);
$sobi2Labels=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $sobi2Labels structure <pre>'; print_r ($sobi2Labels); print "</pre><br />\n";
# Build Fields Labels arrary
foreach ($sobi2Labels as $Label)$customFieldsLabels[$Label->fieldid]=$Label->langValue;
# print 'Debug Line '.__LINE__.' $customFieldsLabels structure <pre>'; print_r ($customFieldsLabels); print "</pre><br />\n";
}
# Build $records for Custom Fields
foreach ($customFieldsData as $customFieldData){
$records[$customFieldData->itemid]['itemId']=$customFieldData->itemid;
$records[$customFieldData->itemid]['fieldId'.$customFieldData->fieldid]=$customFieldData->data_txt;
if ($params->get('displayCustomFieldLabels')=='TRUE')
$records[$customFieldData->itemid]['fieldLabel'.$customFieldData->fieldid]=$customFieldsLabels[$customFieldData->fieldid];
}
}
else $customFieldsData=FALSE;
#print 'Debug Line '.__LINE__.' $customFieldsData structure <pre>'; print_r ($customFieldsData); print "</pre><br />\n";
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End get Custom Fields data
# Get the standard Fields data for 'Featured Entries'
$query = "SELECT itemid,title,icon,image FROM #__sobi2_item WHERE itemid IN ($itemidMatch) AND published = 1 LIMIT {$limit}";
$database->setQuery($query);
$stdFieldsData=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $stdFieldsData structure <pre>'; print_r ($stdFieldsData); print "</pre><br />\n";
# Build $records for standard Fields data
foreach ($stdFieldsData as $stdFieldData){
$records[$stdFieldData->itemid]['title']=$stdFieldData->title;
$records[$stdFieldData->itemid]['icon']=$stdFieldData->icon;
$records[$stdFieldData->itemid]['image']=$stdFieldData->image;
}
# multi-dimensional array named $records now contains all required data
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End getting required data from Database
# Start Sort Module Output (using Sort Order parameters)
# (There is probably a better way to do this in PHP, but I don't know what it is)
switch ($params->get('sortOrder')){
case 'Random':
# We don't need to do anything, $records is already in random order
break;
case 'ItemidAsc':
function sobi2ModFeaturedSort($a,$b){return strcmp($b['itemId'],$a['itemId']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'ItemidDesc':
function sobi2ModFeaturedSort($a,$b){return strcmp($a['itemId'],$b['itemId']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'TitleAsc':
function sobi2ModFeaturedSort($a,$b){return strcmp($a['title'],$b['title']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'TitleDesc':
function sobi2ModFeaturedSort($a,$b){return strcmp($b['title'],$a['title']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'CustomFieldAsc':
$GLOBALS['$sobi2SortCustomFieldId']=$params->get('SortCustomFieldId');
function sobi2ModFeaturedSort($a,$b){
$key='fieldId'.$GLOBALS['$sobi2SortCustomFieldId'];
return strcmp($a[$key],$b[$key]);
}
usort($records,'sobi2ModFeaturedSort');
unset($GLOBALS['$sobi2SortCustomFieldId']);
break;
case 'CustomFieldDesc':
$GLOBALS['$sobi2SortCustomFieldId']=$params->get('SortCustomFieldId');
function sobi2ModFeaturedSort($a,$b){
$key='fieldId'.$GLOBALS['$sobi2SortCustomFieldId'];
return strcmp($b[$key],$a[$key]);
}
usort($records,'sobi2ModFeaturedSort');
unset($GLOBALS['$sobi2SortCustomFieldId']);
break;
default:
# Shouldn't really be able to go here, so do nothing
break;
}
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End Sort Module Output
# Start Build Module HTML output
$output="<!-- Start Module mod_sobi2featured -->\n";
$output.="<div class='sobi2Featured{$class}'>\n";
foreach ($records as $record) {
#print 'Debug Line '.__LINE__.' $record structure <pre>'; print_r ($record); print "</pre><br />\n";
$output.="\t<div class='entry'>\n";
if ($params->get('displayTitle')=='TRUE') {
if ($params->get('linkTitle')=='TRUE')
$output.="\t\t<div class='title'><a href='{$record['href']}'>{$record['title']}</a></div>\n";
else
$output.="\t\t<div class='title'>{$record['title']}</div>\n";
}
if ($params->get('displayIcon')=='TRUE') {
if ($record['icon']==''){ # No Icon image file value in sobi2 database
$output.="\t\t<div class='noicon'></div>\n";
}
else {
$url="images/com_sobi2/clients/{$record['icon']}";
$url=sefRelToAbs($url);
if ($params->get('linkIcon')=='TRUE')
$output.="\t\t<div class='icon'><a href='{$record['href']}'><img src='$url' alt='{$record['title']}' /></a></div>\n";
else
$output.="\t\t<div class='icon'><img src='$url' alt='{$record['title']}' /></div>\n";
}
}
if ($params->get('displayImage')=='TRUE') {
if ($record['image']==''){ # No Image image file value in sobi2 database
$output.="tt<div class='noimage'></div>n";
}
else {
$url="images/com_sobi2/clients/{$record['image']}";
$url=sefRelToAbs($url);
if ($params->get('linkImage')=='TRUE')
$output.="\t\t<div class='image'><a href='{$record['href']}'><img src='$url' alt='{$record['title']}' /></a></div>\n";
else
$output.="\t\t<div class='image'><img src='$url' alt='{$record['title']}' /></div>\n";
}
}
if ($customFieldsData) {
$output.="\t\t<div class='customfields'>\n";
#print 'Debug Line '.__LINE__.' $customFields <pre>'; print_r ($customFields); print "</pre><br />\n";
foreach ($customFields as $customField) {
#print 'Debug Line '.__LINE__.' $customField <pre>'; print_r ($customField); print "</pre><br />\n";
if ($params->get('displayCustomFieldLabels')=='TRUE')
$output.="\t\t\t<div class='C{$customField}'><span>{$record['fieldLabel'.$customField]}".$params->get('LabelSeparator')."</span>{$record['fieldId'.$customField]}</div>\n";
else
$output.="\t\t\t<div class='C{$customField}'>{$record['fieldId'.$customField]}</div>\n";
};
$output.="\t\t</div>\n";
}
if ($params->get('displayLink')=='TRUE') {
$output.="\t\t<div class='link'><a href='{$record['href']}'>".$params->get('displayLinkText')."</a></div>\n";
$output.="\t</div>\n";
};
};
$output.="</div>\n";
$output.="<!-- End Module mod_sobi2featured -->\n";
# End Build Module HTML output
# Properly recode HTML and Special Characters
$iso = explode( '=', _ISO );
if(strtoupper($iso[1]) != "UTF-8")
$output=stripslashes(stripslashes(html_entity_decode($output)));
else
$output=stripslashes(stripslashes($output));
$sobi2ModFeaturedOutput=FALSE;
# Output HTML
echo $output;
}
?>
That's the standard version of the module, then i went and added this:
<?php
/**
* @version $Id: 1.0.5
* @package Sigsiu Online Business Index 2
* @authorName Sigrid & Radek Suski, Sigsiu.NET
* @authorEmail Mark.Smith@iBayIslands.com
* @authorUrl http://AboutUtila.com
* @copyright Copyright (C) 2007 Sigsiu.NET (http://www.sigsiu.net). All rights reserved.
* @license see http://www.gnu.org/copyleft/gpl.html GNU/GPL.
* SOBI2 is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
* @Module mod_sobi2featured.php 14-Oct-2007 Mark Smith
*/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
global $mosConfig_live_site;
require_once($mosConfig_absolute_path.'/components/com_sobi2/config.class.php' );
#print 'Debug Line '.__LINE__.' $params structure <pre>'; print_r ($params); print "</pre><br />\n";
$sobi2ModFeaturedOutput=TRUE; # Set Module output Flag
$output=NULL; # Clear Module output buffer
while($sobi2ModFeaturedOutput) {
# Start evaluate Module Parameters
# Set <div class='sobi2Featured{$class}'>
$class=$params->get('divclass_sfx');
if ($class) $class=' '.$class;
# Set SQL query limit
$limit = $params->get('count');
if ($limit == 0) {$sobi2ModFeaturedOutput=FALSE; break;} #Display 0 Entries
if(!$limit) $limit = 1; #Default value = display 1 Entry
if ($limit > 20) $limit = 20; #Maximum value = display 20 Entries
# End set SQL query limit
# Start evaluate 'Featured Entry Field ID' simple error check
$selectFieldId=$params->get('FeaturedEntryFieldId');
if ($selectFieldId=='') {
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - No Featured Entry field ID specified **\n";
break;
}
if (!(strpos($selectFieldId,'_')===FALSE)) {
# Featured Entry Field has probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Featured Entry Field ID **<br />Check Module configuration Featured Entry field ID. This should be set to a the <b>ID</b> of the Featured Entry Field, (<b>not</b> the Field name)\n";
break;
}
# End evaluate 'Featured Entry Field ID' simple error check
# Start evalulate 'Featured Entry Key' simple error check
$featuredEntryKey=$params->get('FeaturedEntryKey');
if (!$featuredEntryKey) {
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - No Featured Entry Key specified **\n";
break;
}
# End evalulate 'Featured Entry Key' simple error check
# Start Evaluate 'Display Custom Field ID's'
$customFields=$params->get('customfields');
if ($customFields!==''){
# Display Custom Field ID's are specified
$customFields=trim(rtrim($params->get('customfields'),','));
# Simple check to see if Custom Field Names have been used instead of Custom Field ID Numbers
if (strpos($customFields,'_')===FALSE) $customFields=explode(',',$customFields);
else {
# Custom Fields have probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Display Custom Field ID's **<br />Check Module configuration 'Display Custom Field ID's'. This should be set to a list of the Custom Field <b>ID's</b>, (<b>not</b> Custom Field names)\n";
break;
}
}
#print 'Debug Line '.__LINE__.' $customFields structure <pre>'; print_r ($customFields); print "</pre><br />\n";
# End Evaluate 'Display Custom Field ID's'
# Start evaluate Custom Field sorting
$sortOrder=$params->get('sortOrder');
if (strpos($sortOrder,'CustomField')!==FALSE){
# Sort by Custom Field is selected
$SortCustomFieldId=$params->get('SortCustomFieldId');
if ($customFields==''){
# No 'Display Custom Field ID's' specified
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field **<br />Check Module configuration - Sort by Custom Field has been selected, but no 'Display Custom Field ID's' have been specified.\n";
break;
}
if ($SortCustomFieldId=='') {
# No 'Sort by Custom Field ID' specified
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field **<br />Check Module configuration - Sort by Custom Field has been selected, but no Sort by Custom Field ID is specified\n";
break;
}
if (strpos($SortCustomFieldId,"_")!==FALSE) {
# 'Sort by Custom Field ID' has probably been specified by name and not ID number
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field ID **<br />Check Module configuration - 'Sort by Custom Field ID'. This should be set to Custom Field <b>ID</b>, (<b>not</b> a Custom Field name)\n\n";
break;
}
if (!in_array($SortCustomFieldId,$customFields)) {
# 'Sort by Custom Field ID' is not in 'Display Custom Field ID's' list
$sobi2ModFeaturedOutput=FALSE;
echo "** Error - Sort by Custom Field ID **<br />Check Module configuration - 'Sort by Custom Field ID' is not in list of 'Display Custom Field ID's'\n";
break;
}
# Assume 'Sort by Custom Field ID' is valid
}
# End evaluate Custom Field sorting
# End evalulate Module Parameters
# Start getting required data from Database
# All required data will be stored in multi-dimensional array named $records
# Get the itemids for non-expired 'Featured Entries' where $selectFieldId is checked (data_txt = '1')
$currdate = date('y-m-d h:i:s');
$query="SELECT i.itemid FROM #__sobi2_fields_data fd inner join #__sobi2_item i on fd.itemid = i.itemid WHERE (i.publish_down > '".$currdate."' OR i.publish_down = '0000-00-00 00:00:00') AND fd.fieldid=$selectFieldId and fd.data_txt='$featuredEntryKey' ORDER BY RAND() LIMIT $limit";
$database->setQuery($query);
$itemids=$database->loadResultArray();
#print 'Debug Line '.__LINE__.' $itemids structure <pre>'; print_r ($itemids); print "</pre><br />\n";
# If No 'Featured Entries' found, stop module processing
if (!count($itemids)) {$sobi2ModFeaturedOutput=FALSE; break;}
# Reset SQL query limit to the actual number of 'Featured Entries' found
$limit=count($itemids);
# Get a Joomla Menu ID for SOBI component
$query="SELECT id FROM #__menu WHERE link LIKE '%index.php?option=com_sobi2%' AND type = 'components' AND published = '1' LIMIT 1";
$database->setQuery($query);
$menuId=$database->loadResult();
#print 'Debug Line '.__LINE__.' $menuId structure <pre>'; print_r ($menuId); print "</pre><br />\n";
# Build $records for href (URL link to each Featured Entry details display)
foreach ($itemids as $itemid){
$href="index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=$itemid&Itemid={$menuId}";
$href=sefRelToAbs($href);
$records[$itemid]['href']=$href;
}
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# Build SQL search sub-string for itemid's to be retrieved
$itemidMatch=NULL;
foreach ($itemids as $itemid){
$itemidMatch.=$itemid.',';
}
$itemidMatch=trim(rtrim($itemidMatch,','));
#print 'Debug Line '.__LINE__.' $itemidMatch structure <pre>'; print_r ($itemidMatch); print "</pre><br />\n";
# Start get Custom Fields data
#print 'Debug Line '.__LINE__.' $customFields structure <pre>'; print_r ($customFields); print "</pre><br />\n";
if ($customFields!=='') {
# Only if custom field Id's were specified in 'Display Custom Field ID's'
# Build SQL search sub-string for Custom Fields to be retrieved
$customFieldsMatch=NULL;
foreach ($customFields as $field) $customFieldsMatch.=$field.',';
$customFieldsMatch=trim(rtrim($customFieldsMatch,','));
# Build an SQL query limit for the maximum number of Custom Fields that can be found
$thisLimit=$limit*count($customFields);
# Get the Custom Fields Data for 'Featured Entries'
$query="SELECT itemid, fieldid, data_txt FROM #__sobi2_fields_data WHERE itemid IN ($itemidMatch) AND fieldid IN ($customFieldsMatch) ORDER BY itemid ASC, fieldid ASC LIMIT {$thisLimit}";
$database->setQuery($query);
$customFieldsData=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $customFieldsData structure <pre>'; print_r ($customFieldsData); print "</pre><br />\n";
if ($params->get('displayCustomFieldLabels')=='TRUE') {
# Get the Custom Fields Labels for 'Featured Entries'
# Get Configuration Language
$query="SELECT `configValue` FROM #__sobi2_config WHERE `configKey`='language'";
$database->setQuery($query);
$sobi2Language=$database->loadResult();
#print 'Debug Line '.__LINE__.' $sobi2Language structure <pre>'; print_r ($sobi2Language); print "</pre><br />\n";
# Get the Custom Field Labels for this language
$query="SELECT langValue,fieldid FROM #__sobi2_language WHERE fieldid IN ($customFieldsMatch) AND sobi2Lang='{$sobi2Language}'";
$database->setQuery($query);
$sobi2Labels=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $sobi2Labels structure <pre>'; print_r ($sobi2Labels); print "</pre><br />\n";
# Build Fields Labels arrary
foreach ($sobi2Labels as $Label)$customFieldsLabels[$Label->fieldid]=$Label->langValue;
# print 'Debug Line '.__LINE__.' $customFieldsLabels structure <pre>'; print_r ($customFieldsLabels); print "</pre><br />\n";
}
# Build $records for Custom Fields
foreach ($customFieldsData as $customFieldData){
$records[$customFieldData->itemid]['itemId']=$customFieldData->itemid;
$records[$customFieldData->itemid]['fieldId'.$customFieldData->fieldid]=$customFieldData->data_txt;
if ($params->get('displayCustomFieldLabels')=='TRUE')
$records[$customFieldData->itemid]['fieldLabel'.$customFieldData->fieldid]=$customFieldsLabels[$customFieldData->fieldid];
}
$class = $params->get('class_sfx');
$limit = $params->get('count');
if(!$limit || $limit < 2)
$limit = 5;
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_sobi2%' AND `type` = 'components' AND `published` = '1' LIMIT 1";
$database->setQuery( $query );
$S_Itemid = $database->loadResult();
$query = "SELECT COUNT(*) AS `Rows`, #__sobi2_plugin_reviews.itemid, #__sobi2_item.itemid, #__sobi2_item.title AS `title` FROM `#__sobi2_plugin_reviews`, `#__sobi2_item` WHERE #__sobi2_plugin_reviews.itemid=#__sobi2_item.itemid AND #__sobi2_plugin_reviews.title > '' GROUP BY #__sobi2_plugin_reviews.itemid ORDER BY `Rows` DESC LIMIT {$limit}";
$database->setQuery( $query );
$resutlts = $database->loadObjectList();
$query = "SELECT SUM(vote) / COUNT(*) as `medie`, #__sobi2_plugin_reviews.itemid, #__sobi2_item.itemid, #__sobi2_item.icon AS `icon`, #__sobi2_item.title AS `title` FROM `#__sobi2_plugin_reviews`, `#__sobi2_item` WHERE #__sobi2_plugin_reviews.itemid=$revid AND #__sobi2_plugin_reviews.vote > 0 GROUP BY #__sobi2_plugin_reviews.itemid ORDER BY `medie` DESC LIMIT {$limit}";
$database->setQuery( $query );
$resultsrating = $database->loadObjectList();
$query = "SELECT #__sobi2_item.icon AS `icon` FROM `#__sobi2_item` WHERE #__sobi2_item.itemid=$revid";
$database->setQuery( $query );
$resulticon = $database->loadObjectList();
$url = "index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id={$resutlt->itemid}&Itemid={$S_Itemid}";
$url = sefRelToAbs($url);
}
else $customFieldsData=FALSE;
#print 'Debug Line '.__LINE__.' $customFieldsData structure <pre>'; print_r ($customFieldsData); print "</pre><br />\n";
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End get Custom Fields data
# Get the standard Fields data for 'Featured Entries'
$query = "SELECT itemid,title,icon,image FROM #__sobi2_item WHERE itemid IN ($itemidMatch) AND published = 1 LIMIT {$limit}";
$database->setQuery($query);
$stdFieldsData=$database->loadObjectList();
#print 'Debug Line '.__LINE__.' $stdFieldsData structure <pre>'; print_r ($stdFieldsData); print "</pre><br />\n";
# Build $records for standard Fields data
foreach ($stdFieldsData as $stdFieldData){
$records[$stdFieldData->itemid]['title']=$stdFieldData->title;
$records[$stdFieldData->itemid]['icon']=$stdFieldData->icon;
$records[$stdFieldData->itemid]['image']=$stdFieldData->image;
}
# multi-dimensional array named $records now contains all required data
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End getting required data from Database
# Start Sort Module Output (using Sort Order parameters)
# (There is probably a better way to do this in PHP, but I don't know what it is)
switch ($params->get('sortOrder')){
case 'Random':
# We don't need to do anything, $records is already in random order
break;
case 'ItemidAsc':
function sobi2ModFeaturedSort($a,$b){return strcmp($b['itemId'],$a['itemId']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'ItemidDesc':
function sobi2ModFeaturedSort($a,$b){return strcmp($a['itemId'],$b['itemId']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'TitleAsc':
function sobi2ModFeaturedSort($a,$b){return strcmp($a['title'],$b['title']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'TitleDesc':
function sobi2ModFeaturedSort($a,$b){return strcmp($b['title'],$a['title']);}
usort($records,'sobi2ModFeaturedSort');
break;
case 'CustomFieldAsc':
$GLOBALS['$sobi2SortCustomFieldId']=$params->get('SortCustomFieldId');
function sobi2ModFeaturedSort($a,$b){
$key='fieldId'.$GLOBALS['$sobi2SortCustomFieldId'];
return strcmp($a[$key],$b[$key]);
}
usort($records,'sobi2ModFeaturedSort');
unset($GLOBALS['$sobi2SortCustomFieldId']);
break;
case 'CustomFieldDesc':
$GLOBALS['$sobi2SortCustomFieldId']=$params->get('SortCustomFieldId');
function sobi2ModFeaturedSort($a,$b){
$key='fieldId'.$GLOBALS['$sobi2SortCustomFieldId'];
return strcmp($b[$key],$a[$key]);
}
usort($records,'sobi2ModFeaturedSort');
unset($GLOBALS['$sobi2SortCustomFieldId']);
break;
default:
# Shouldn't really be able to go here, so do nothing
break;
}
#print 'Debug Line '.__LINE__.' $records structure <pre>'; print_r ($records); print "</pre><br />\n";
# End Sort Module Output
# Start Build Module HTML output
$output="<!-- Start Module mod_sobi2featured -->\n";
$output.="<div class='sobi2Featured{$class}'>\n";
$iso = explode( '=', _ISO );
if(strtoupper($iso[1]) != "UTF-8")
$string = stripslashes(stripslashes(html_entity_decode($resutlt->title)));
else
$string = stripslashes(stripslashes($resutlt->title));
$reviews = $resutlt->Rows;
{
$rating = $resultrating->medie;
if ($rating >= 4.7)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/05-0-star.png alt="5-Stars">';
elseif ($rating >= 4.3 and $rating < 4.7)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/04-5-star.png alt="4.5-Stars">';
elseif ($rating >= 3.7 and $rating < 4.3)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/04-0-star.png alt="4-Stars">';
elseif ($rating >= 3.3 and $rating < 3.7)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/03-5-star.png alt="3.5-Stars">';
elseif ($rating >= 2.7 and $rating < 3.3)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/03-0-star.png alt="3-Stars">';
elseif ($rating >= 2.3 and $rating < 2.7)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/02-5-star.png alt="2.5-Stars">';
elseif ($rating >= 1.7 and $rating < 2.3)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/02-0-star.png alt="2-Stars">';
elseif ($rating >= 1.3 and $rating < 1.7)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/01-5-star.png alt="1.5-Stars">';
elseif ($rating >= 0.3 and $rating < 1.3)
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/01-0-star.png alt="1-Star">';
elseif ($rating < 0.3 )
$rating = '<img class="ratingstars" src=components/com_sobi2/plugins/reviews/images/Star-Rating/01-0-star.png alt="0-Star">';
}
foreach ($records as $record) {
#print 'Debug Line '.__LINE__.' $record structure <pre>'; print_r ($record); print "</pre><br />\n";
$output.="\t<div class='entry'>\n";
if ($params->get('displayTitle')=='TRUE') {
if ($params->get('linkTitle')=='TRUE')
$output.="\t\t<div class='title'><a href='{$record['href']}'>{$record['title']}</a></div>\n";
else
$output.="\t\t<div class='title'>{$record['title']}</div>\n";
echo "<tr><th>Rating: $rating</th></tr>";
}
if ($params->get('displayIcon')=='TRUE') {
if ($record['icon']==''){ # No Icon image file value in sobi2 database
$output.="\t\t<div class='noicon'></div>\n";
}
else {
$url="images/com_sobi2/clients/{$record['icon']}";
$url=sefRelToAbs($url);
if ($params->get('linkIcon')=='TRUE')
$output.="\t\t<div class='icon'><a href='{$record['href']}'><img src='$url' alt='{$record['title']}' /></a></div>\n";
else
$output.="\t\t<div class='icon'><img src='$url' alt='{$record['title']}' /></div>\n";
}
}
if ($params->get('displayImage')=='TRUE') {
if ($record['image']==''){ # No Image image file value in sobi2 database
$output.="tt<div class='noimage'></div>n";
}
else {
$url="images/com_sobi2/clients/{$record['image']}";
$url=sefRelToAbs($url);
if ($params->get('linkImage')=='TRUE')
$output.="\t\t<div class='image'><a href='{$record['href']}'><img src='$url' alt='{$record['title']}' /></a></div>\n";
else
$output.="\t\t<div class='image'><img src='$url' alt='{$record['title']}' /></div>\n";
}
}
if ($customFieldsData) {
$output.="\t\t<div class='customfields'>\n";
#print 'Debug Line '.__LINE__.' $customFields <pre>'; print_r ($customFields); print "</pre><br />\n";
foreach ($customFields as $customField) {
#print 'Debug Line '.__LINE__.' $customField <pre>'; print_r ($customField); print "</pre><br />\n";
if ($params->get('displayCustomFieldLabels')=='TRUE')
$output.="\t\t\t<div class='C{$customField}'><span>{$record['fieldLabel'.$customField]}".$params->get('LabelSeparator')."</span>{$record['fieldId'.$customField]}</div>\n";
else
$output.="\t\t\t<div class='C{$customField}'>{$record['fieldId'.$customField]}</div>\n";
};
$output.="\t\t</div>\n";
}
if ($params->get('displayLink')=='TRUE') {
$output.="\t\t<div class='link'><a href='{$record['href']}'>".$params->get('displayLinkText')."</a></div>\n";
$output.="\t</div>\n";
};
};
$output.="</div>\n";
$output.="<!-- End Module mod_sobi2featured -->\n";
# End Build Module HTML output
# Properly recode HTML and Special Characters
$iso = explode( '=', _ISO );
if(strtoupper($iso[1]) != "UTF-8")
$output=stripslashes(stripslashes(html_entity_decode($output)));
else
$output=stripslashes(stripslashes($output));
$sobi2ModFeaturedOutput=FALSE;
# Output HTML
echo $output;
}
?>
Every thing is working other than the stars count. It shows 1 star the whole time. Please help
Thanks