I had a code that works for addsmanager component but they make some changes and now dont work anymore. Old code is this
function getAdsmanagerRouteContent($id)
{
$db =JFactory::getDBO();
$sql = "SELECT category,ad_manufacturers,ad_modelauto,ad_jetmodels,ad_model FROM #__adsmanager_ads WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = $db->loadObject();
$url = TText::_($result->ad_manufacturers);
if ($result->ad_modelauto != "") {
$url .= "-".TText::_($result->ad_modelauto );
}
if ($result->ad_jetmodels != "") {
$url .= "-".TText::_($result->ad_jetmodels );
}
if ($result->ad_model != "") {
$url .= "-".TText::_($result->ad_model );
}
$url = TTools::stringURLSafe($url );
$url = JString::substr($url ,0,30);
return $url ;
}
They have this code now
function getAdsmanagerRouteContent($id)
{
$db =JFactory::getDBO();
$sql = "SELECT ad_headline FROM #__adsmanager_ads WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = $db->loadResult();
$result= TTools::stringURLSafe($result);
$result = JString::substr($result,0,30);
return $result;
}
wich i have it modified like this
function getAdsmanagerRouteModel($id)
{
$db =JFactory::getDBO();
$sql = "SELECT ad_model,ad_motomodel FROM #__adsmanager_ads WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = $db->loadResult();
if ($result->ad_model != "") {
$result .= "-".TText::_($result->ad_model );
}
if ($result->ad_motomodel != "") {
$result .= "-".TText::_($result->ad_motomodel );
}
$result= TTools::stringURLSafe($result);
$result = JString::substr($result,0,30);
return $result;
}
The ad_model is loaded but if instead ad_model is ad_motomodel this isn t loaded. Is a way to make this code work? I am not such good at php .
Your code was originally written to work with two different variables ($result and $url) but uses one instead.
$result = $db->loadResult();
if ($result->ad_model != "") {
$result .= "-".TText::_($result->ad_model );
}
Once the thrid line gets executed, you now don't have the object $result
anymore. It is gone. You now have a string $result
containing whatever the "stringification" of your previous object yields (an empty string in this case) plus a dash and the contents of ad_model
. After that, you cannot access $result->ad_motomodel
anymore.
What you really want is something like this:
$db =JFactory::getDBO();
$sql = "SELECT ad_model,ad_motomodel FROM #__adsmanager_ads WHERE id = ".(int)$id;
$db->setQuery($sql);
$result = $db->loadResult();
$url="";
if ($result->ad_model != "") {
$url .= "-".TText::_($result->ad_model );
}
if ($result->ad_motomodel != "") {
$url .= "-".TText::_($result->ad_motomodel );
}
$url = TTools::stringURLSafe($url);
$url = JString::substr($url,0,30);
return $url;