0

コードを編集して、実際の月ではなく、次の利用可能な月の価格を表示したいと思います。このコードを編集する必要があると言われましたが、方法がわかりません...誰かが助けてくれるなら、私はそれを高く評価します.

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);
}
4

2 に答える 2

0

なぜこのコードはひどいものであり、なぜ使用すべきではないのですか? それは Jomres 予約システムからのものです,,, はい、開発者はなぜこの行を編集するように私に言ったのですか? コードがわかりにくく、混乱していませんか、それともショートカットがたくさんありますか?

于 2012-11-20T10:02:45.967 に答える
0

変更する必要がある行は次のとおりです。

$searchDate = date("Y/m/d");

日付に月を追加します

$searchDate = date("Y/m/d") . " +1 month";

arrivalDate が設定されている場合、これは機能しませんが、そうではないと思います (顧客が日付を選択すると、予約中に発生します)。

2 番目の一連の質問に答えるために、コードはいくつかの理由でひどいものです。

  • 入れ子になった if は判読不能にします。入れ子になった if には 4 つのレベルがあり、それらには 2 つの switch ステートメントも含まれています...デバッグとメンテナンスは悪夢です
  • 次のようなものへのあいまいな呼び出し

    $MiniComponents->triggerEvent('07015' $MiniComponents->specificEvent('07016'

間違いなく自明ではありません。オブジェクトとメソッドは意味があり、文書化されている必要があります。J07015...php ファイル (完全な名前はわかりませんが、core-minicomponents フォルダーにあるはずです) のコードを開くと、ほとんどの場合、コメントは見つかりません。$property->booking->getPrice() のようなものを扱いませんか?

  • Joomlaフレームワークではなく、カスタムフレームワークを使用しています(これについては勉強する必要がありますが、ドキュメントはあまり役に立たず、単一のコンポーネントにとっては大規模な作業です)

  • アプリケーション アーキテクチャは完全に混乱し、混在しています。Joomla では MVC を当然のことと考えています。ここでは、すべきでないことの良い例を示しています。アプリケーション ロジックとビューを混在させると、出力文字列がデータベース クエリと共に定義されていることがわかります。

  • 公式の命名規則はありません。いくつかの変数は、ミニコンポーネントごとに名前が変わるため、混乱を招きます。

使ってはいけない理由

変更を加えるたびに、何かが壊れる可能性があります。分離も利用可能な単体テストもないため、私たちの行動の意味を理解するのは困難です。つまり、プロパティの詳細ページでミニコンポーネントを変更しただけで、プロパティの一覧ページが壊れていたことがわかりました...

これは Joomla ではないため、コーディングには他のコンポーネントの 10 倍の費用がかかります。Joomla 内でスムーズに動作するスタンドアロン製品です。(ただし、スタンドアロンでインストールすることもできます!)

痛みやリスクを軽減するためにできること

  • コードのバージョン管理を使用し、細心の注意を払って行った各変更を文書化します。
  • すべての変更後にすべての機能をテストしてください。これにより、数日後に節約できます。
  • 独自のカスタム プラグインを作成してみてください (そしてそれらをコア プラグインに入れます)。これは、プロジェクトの他の部分との干渉をあまり危険にさらすことなく、デフォルトを上書きする効果的な方法です。

じゃあなんで使ってるの?

(私は他の読者のためにこの段落を書いています。

  1. 機能性、完全性 (フロントエンドから請求まで)、構成 (ニーズに合わせてどれだけ微調整できるか)、使いやすさの点で最高です。Jomres は、他のどの joomla ベースのソリューションにも負けません。私は 2012 年 6 月に 2 週間かけて、価格が $2,000 未満の利用可能なすべてのホテル ソリューションをテストしました。
  2. この製品は安定しており、維持されています。これには多くの労力が費やされています。6 か月間の変更ログを読むのに 1 時間かかりました。
  3. サポートは迅速ですが、質問が難しすぎると、「コードを変更する必要があります」という回答が得られますが、これは「jomres はそれを行わないので、それはあなたの問題です」という意味です。
  4. それは長い間存在しており、多くのサードパーティの拡張機能が利用可能です
  5. 腕も脚もかかりません。

新しいコードを書く前に、必ず要件をサポートに送信してください。実際には非常に多くの機能がありますが、構成は非常に難しい場合があります。

于 2013-02-03T02:28:27.050 に答える