我想编辑代码以显示下一个可用月份而不是实际月份的价格,我被告知我需要编辑这些代码,但我不知道如何...如果有人可以帮助我会apreciate it。
function get_property_price_for_display_in_lists($property_uid)
{
$MiniComponents =jomres_singleton_abstract::getInstance('mcHandler');
$mrConfig=getPropertySpecificSettings($property_uid);
set_showtime('property_uid',$property_uid);
$customTextObj =jomres_singleton_abstract::getInstance('custom_text');
$customTextObj->get_custom_text_for_property($property_uid);
$current_property_details =jomres_singleton_abstract::getInstance('basic_property_details');
$current_property_details->gather_data($property_uid);
$plugin_will_provide_lowest_price = false;
$MiniComponents->triggerEvent('07015',array('property_uid'=>$property_uid) ); // Optional
$mcOutput=$MiniComponents->getAllEventPointsData('07015');
if (count($mcOutput)>0)
{
foreach ($mcOutput as $key=>$val)
{
if ($val == true)
{
$plugin_will_provide_lowest_price = true;
$controlling_plugin = $key;
}
}
}
$multiplier = 1;
if (!isset($mrConfig['booking_form_daily_weekly_monthly'])) // This shouldn't be needed, as the setting is automatically pulled from jomres_config.php, but there's always one weird server...
$mrConfig['booking_form_daily_weekly_monthly'] = "D";
switch ($mrConfig['booking_form_daily_weekly_monthly'])
{
case "D":
$multiplier = 1;
break;
case "W":
if ($mrConfig['tariffChargesStoredWeeklyYesNo'] != "1")
$multiplier = 7;
break;
case "M":
$multiplier = 30;
break;
}
$price = 0.00;
$output_lowest = false;
if ($plugin_will_provide_lowest_price)
{
$output_lowest = true;
$plugin_price= $MiniComponents->specificEvent('07016',$controlling_plugin,array('property_uid'=>$property_uid));
if (!is_null($plugin_price))
{
$pre_text = $plugin_price['PRE_TEXT'];
$price = $plugin_price['PRICE'];
$post_text = $plugin_price['POST_TEXT'];
}
}
else
{
$pricesFromArray=array();
$searchDate = date("Y/m/d");
if (isset($_REQUEST['arrivalDate']) && $_REQUEST['arrivalDate'] != "" )
{
$searchDate = JSCalConvertInputDates(jomresGetParam( $_REQUEST, 'arrivalDate', "" ));
}
$query = "SELECT property_uid, roomrateperday FROM #__jomres_rates WHERE property_uid = ".(int)$property_uid." AND DATE_FORMAT('".$searchDate."', '%Y/%m/%d') BETWEEN DATE_FORMAT(`validfrom`, '%Y/%m/%d') AND DATE_FORMAT(`validto`, '%Y/%m/%d') AND roomrateperday > '0' ";
$tariffList = doSelectSql($query);
if (count($tariffList) > 0)
{
foreach ($tariffList as $t)
{
if ( !isset($pricesFromArray[$t->property_uid]) )
$pricesFromArray[$t->property_uid]=$t->roomrateperday;
elseif ( isset($pricesFromArray[$t->property_uid]) && $pricesFromArray[$t->property_uid] > $t->roomrateperday )
$pricesFromArray[$t->property_uid]=$t->roomrateperday;
}
}
if ($mrConfig['is_real_estate_listing']==0)
{
if (isset($pricesFromArray[$property_uid]))
{
if ($mrConfig['prices_inclusive']=="0")
$price=output_price ($current_property_details->get_gross_accommodation_price($pricesFromArray[$property_uid],$property_uid) * $multiplier,"",true,true);
else
$price=output_price ($pricesFromArray[$property_uid] * $multiplier,"",true,true);
if ($mrConfig['tariffChargesStoredWeeklyYesNo'] == "1" && $mrConfig['tariffmode'] == "1")
$post_text = " ".jr_gettext('_JOMRES_COM_MR_LISTTARIFF_ROOMRATEPERWEEK',_JOMRES_COM_MR_LISTTARIFF_ROOMRATEPERWEEK);
else
{
if ($mrConfig['wholeday_booking'] == "1")
{
if ($mrConfig['perPersonPerNight']=="0" )
$post_text =" ".jr_gettext('_JOMRES_FRONT_TARIFFS_PN_DAY_WHOLEDAY',_JOMRES_FRONT_TARIFFS_PN_DAY_WHOLEDAY);
else
$post_text =" ".jr_gettext('_JOMRES_FRONT_TARIFFS_PPPN_DAY_WHOLEDAY',_JOMRES_FRONT_TARIFFS_PPPN_DAY_WHOLEDAY);
}
else
{
switch ($mrConfig['booking_form_daily_weekly_monthly'])
{
case "D":
if ($mrConfig['wholeday_booking'] == "1")
$post_text =jr_gettext('_JOMRES_FRONT_TARIFFS_PN_DAY_WHOLEDAY',_JOMRES_FRONT_TARIFFS_PN_DAY_WHOLEDAY);
else
{
if ($mrConfig['perPersonPerNight']=="0" )
$post_text =" ".jr_gettext('_JOMRES_FRONT_TARIFFS_PN',_JOMRES_FRONT_TARIFFS_PN);
else
$post_text =" ".jr_gettext('_JOMRES_FRONT_TARIFFS_PPPN',_JOMRES_FRONT_TARIFFS_PPPN);
}
break;
case "W":
$post_text =jr_gettext('_JOMRES_BOOKINGFORM_PRICINGOUTPUT_WEEKLY',_JOMRES_BOOKINGFORM_PRICINGOUTPUT_WEEKLY);
break;
case "M":
$post_text =jr_gettext('_JOMRES_BOOKINGFORM_PRICINGOUTPUT_MONTHLY',_JOMRES_BOOKINGFORM_PRICINGOUTPUT_MONTHLY);
break;
}
}
}
$pre_text = jr_gettext('_JOMRES_TARIFFSFROM',_JOMRES_TARIFFSFROM,false,false);
}
else
{
$pre_text =jr_gettext('_JOMRES_COM_MR_EXTRA_PRICE',_JOMRES_COM_MR_EXTRA_PRICE);
$price = output_price($current_property_details->real_estate_property_price,"",true,false);
$post_text = '';
}
}
else
{
$pre_text = jr_gettext('_JOMRES_COM_MR_EXTRA_PRICE',_JOMRES_COM_MR_EXTRA_PRICE,"",true,false);
$price=output_price($current_property_details->real_estate_property_price);
$post_text = '';
}
}
return array ( "PRE_TEXT"=>$pre_text,"PRICE"=>$price,"POST_TEXT"=>$post_text);
}
答案 0 :(得分:0)
为什么这段代码很糟糕,为什么我不能使用它?它来自Jomres预订系统,,, 是的,开发者告诉我编辑这条线为什么? 是难以理解和混淆代码,还是有很多快捷方式?
答案 1 :(得分:0)
您需要修改的行是:
$searchDate = date("Y/m/d");
并在日期中添加一个月
$searchDate = date("Y/m/d") . " +1 month";
如果设置了arrivalDate,这将不起作用,但我想情况并非如此(一旦客户选择了日期,这将在预订时发生)。
要回答第二组问题,代码很糟糕,原因如下:
模糊调用
之类的内容$ MiniComponents-> triggerEvent( '07015' $ MiniComponents-> specificEvent('07016'
绝对不是一成不变的。对象和方法应该是有意义的并记录在案。如果你打开J07015 ... php文件的代码(我不知道全名,它应该在core-minicomponents文件夹中),你很可能找不到任何评论。 你宁愿处理像$ property-> booking-> getPrice()这样的东西?
它不是使用Joomla框架,而是使用自定义框架(您需要研究,但文档并不真正有用,而且对单个组件来说是一项巨大的任务)
应用程序架构完全混淆和混合。在Joomla中,我们认为MVC是理所当然的,在这里您可以看到一个不应该做的好例子:将应用程序逻辑与视图混合,您将看到输出字符串与数据库查询一起定义。
为什么不应该使用
你所做的每一个改变都可能会破坏某些东西由于没有分离且没有可用的单元测试,因此很难理解我们的行为的含义。即我在属性详情页面中更改了一个迷你组件,但发现我已经打破了属性列表页面...
编码将需要10倍于任何其他组件,因为这不是Joomla!它只是一个在Joomla内顺利运行的独立产品! (但你也可以独立安装!)
您可以采取哪些措施来减轻痛苦,降低风险
您为什么要使用它呢?
(我正在为其他读者写这个段落,否则我们似乎都对使用它感到十分疯狂)
确保在编写新代码之前将需求发送到支持,它们确实具有大量功能,但配置可能非常棘手。