We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 13354
    • 7 Posts
    Hi Guys,

    You'll have to excuse me but i'm a bit of a noob when it comes to programming. I have managed to create my own snippet that connects to a webservice to bring out some results and display them through a chunk in a loop.

    Now although (to my surprise) this seems to do the job and function correctly, it does seem to be quite slow sometimes.

    Is there anything anyone can see thats obviously wrong with this code or any improvements that can be made to resolve any speed issues with loading the page.

    <?php
    $tenure = !empty($tenure) ? $tenure : '0';
    $rentalTermsID = !empty($rentalTermsID) ? $rentalTermsID : 0;
    $FeaturedCount = !empty($FeaturedCount) ? $FeaturedCount : 0;
    $commercial = !empty($commercial) ? $commercial : 0;
    $types = !empty($types) ? $types : 0;
    
    if (isset($_COOKIE["listing_view"])) {
        if ($_COOKIE["listing_view"] == 'list') {
            $tpl = 'propertyTplList';
        }
        elseif($_COOKIE["listing_view"] == 'grid-large') {
            $tpl = 'propertyTplGridLarge';
        }
        elseif($_COOKIE["listing_view"] == 'grid') {
            $tpl = 'propertyTplGrid';
        }
    }
    else {
      $tpl = 'propertyTplList';
    }
    
    try {
        $wsdl_url = '[[link to webservice goes here ]]';
        $client = new SoapClient($wsdl_url, 
            array(  'trace'      => true,
                    'exceptions' => true,
                 )
            );
        $params = array(
            'strSitePrefix' => "",
            'intSiteID' => "-1",
            'intPropertyID' => "0",
            'intPropertyDevelopmentID' => "0",
            'bytBedrooms' => isset( $_GET['bytBedrooms'] ) ? $_GET['bytBedrooms'] : 0,
            'decMinPrice' => isset( $_GET['decMinPrice'] ) ? $_GET['decMinPrice'] : 0,
            'decMaxPrice' => isset( $_GET['decMaxPrice'] ) ? $_GET['decMaxPrice'] : 0,
            'bytTenure' => $tenure,
            'intCommercial' => $commercial,
            'bytPropertyAge' => "0",
            'intRentalTerms' => $rentalTermsID,
            'bytFeaturedCount' => $FeaturedCount,
            'strAreas' => isset( $_GET['strAreas'] ) ? $_GET['strAreas'] : 0,
            'strTypes' => $types,
            'bytSortOrder' => isset( $_GET['bytSortOrder'] ) ? $_GET['bytSortOrder'] : 1,
            'bytUseCDataTags' => "0",
        );
        
        $result = $client->GetDataV8($params);
        //var_dump($result);
        $xml = simplexml_load_string($result->GetDataV8Result->any);
        //var_dump($xml);
        
        $total = 0;
    
        
        if($xml){
            
            foreach ($xml->PropertiesDataSet->Properties as $key=>$item) {
            
                $modx->setPlaceholder('ID', $item->ID);
                $modx->setPlaceholder('ShortDescription', $item->ShortDescription);
                $modx->setPlaceholder('Description', $item->Description);
                $modx->setPlaceholder('FullDescription', $item->FullDescription);
                $modx->setPlaceholder('BulletPoints', $item->BulletPoints);
                $modx->setPlaceholder('PropertyName', $item->PropertyName);
                $modx->setPlaceholder('Street', $item->Street);
                $modx->setPlaceholder('Locality', $item->Locality);
                $modx->setPlaceholder('Town', $item->Town);
                $modx->setPlaceholder('Region', $item->Region);
                $modx->setPlaceholder('Country', $item->Country);
                $modx->setPlaceholder('PostCode', $item->PostCode);
                $modx->setPlaceholder('PostCodeLng', $item->PostCodeLng);
                $modx->setPlaceholder('PostCodeLat', $item->PostCodeLat);
                $modx->setPlaceholder('Status', $item->Status);
                $modx->setPlaceholder('Type', $item->Type);
                $modx->setPlaceholder('Tenure', $item->Tenure);
                $modx->setPlaceholder('Pictures', $item->Pictures);
                $modx->setPlaceholder('Picture1', $item->Picture1);
                $modx->setPlaceholder('Picture2', $item->Picture2);
                $modx->setPlaceholder('Picture3', $item->Picture3);
                $modx->setPlaceholder('Picture4', $item->Picture4);
                $modx->setPlaceholder('Picture5', $item->Picture5);
                $modx->setPlaceholder('Picture6', $item->Picture6);
                $modx->setPlaceholder('Picture7', $item->Picture7);
                $modx->setPlaceholder('Picture8', $item->Picture8);
                $modx->setPlaceholder('Picture9', $item->Picture9);
                $modx->setPlaceholder('Picture10', $item->Picture10);
                $modx->setPlaceholder('Picture11', $item->Picture11);
                $modx->setPlaceholder('Picture12', $item->Picture12);
                $modx->setPlaceholder('Picture13', $item->Picture13);
                $modx->setPlaceholder('Picture14', $item->Picture14);
                $modx->setPlaceholder('Picture15', $item->Picture15);
                $modx->setPlaceholder('Picture16', $item->Picture16);
                $modx->setPlaceholder('Floorplan', $item->Floorplan);
                $modx->setPlaceholder('VirtualTourURL', $item->VirtualTourURL);
                $modx->setPlaceholder('CurrencyID', $item->CurrencyID);
                $modx->setPlaceholder('PricePrefix', $item->PricePrefix);
                $modx->setPlaceholder('Price', $item->Price);
                $modx->setPlaceholder('PriceFrequency', $item->PriceFrequency);
                $modx->setPlaceholder('DisplayPrice', $item->DisplayPrice);
                $modx->setPlaceholder('Bedrooms', $item->Bedrooms);
                $modx->setPlaceholder('Receptions', $item->Receptions);
                $modx->setPlaceholder('Bathrooms', $item->Bathrooms);
                $modx->setPlaceholder('Built', $item->Built);
                $modx->setPlaceholder('Garage', $item->Garage);
                $modx->setPlaceholder('ParkingOffStreet', $item->ParkingOffStreet);
                $modx->setPlaceholder('CentralHeating', $item->CentralHeating);
                $modx->setPlaceholder('DoubleGlazing', $item->DoubleGlazing);
                $modx->setPlaceholder('Gardens', $item->Gardens);
                $modx->setPlaceholder('StatusID', $item->StatusID);
                $modx->setPlaceholder('TypeID', $item->TypeID);
                $modx->setPlaceholder('LocationID', $item->LocationID);
                $modx->setPlaceholder('TenureID', $item->TenureID);
                $modx->setPlaceholder('NewHome', $item->NewHome);
                $modx->setPlaceholder('Exclusive', $item->Exclusive);
                $modx->setPlaceholder('Age', $item->Age);
                $modx->setPlaceholder('Commercial', $item->Commercial);
                $modx->setPlaceholder('AreaID', $item->AreaID);
                $modx->setPlaceholder('DevelopmentID', $item->DevelopmentID);
                $modx->setPlaceholder('WebFeatured', $item->WebFeatured);
                $modx->setPlaceholder('RentalAvailableDate', $item->RentalAvailableDate);
                $modx->setPlaceholder('RentalTerms', $item->RentalTerms);
                $modx->setPlaceholder('RentalTermsID', $item->RentalTermsID);
                $modx->setPlaceholder('RentalBenefit', $item->RentalBenefit);
                $modx->setPlaceholder('RentalPets', $item->RentalPets);
                $modx->setPlaceholder('RentalIncludesBills', $item->RentalIncludesBills);
                $modx->setPlaceholder('RentalStudents', $item->RentalStudents);
                $modx->setPlaceholder('RentalFurnished', $item->RentalFurnished);
                $modx->setPlaceholder('HIPURL', $item->HIPURL);
                $modx->setPlaceholder('HIPEERCurrent', $item->HIPEERCurrent);
                $modx->setPlaceholder('HIPEERPotential', $item->HIPEERPotential);
                $modx->setPlaceholder('HIPEIRCurrent', $item->HIPEIRCurrent);
                $modx->setPlaceholder('HIPEIRPotential', $item->HIPEIRPotential);
                $modx->setPlaceholder('HIPEERChart', $item->HIPEERChart);
                $modx->setPlaceholder('HIPEIRChart', $item->HIPEIRChart);
                $modx->setPlaceholder('Retirement', $item->Retirement);
                $modx->setPlaceholder('Riverside', $item->Riverside);
                $modx->setPlaceholder('VendorNotes', $item->VendorNotes);
                $modx->setPlaceholder('SEODescription', $item->SEODescription);
                $modx->setPlaceholder('SEODescription', $item->SEODescription);
                $modx->setPlaceholder('DetailsFileName', $item->DetailsFileName);
                $modx->setPlaceholder('DisplayAddress', $item->DisplayAddress);
                
                $displayAddress = explode(',',$item->DisplayAddress);
                $modx->setPlaceholders($displayAddress,'DisplayAddress.');
                
                $modx->setPlaceholder('Category', $item->Category);
                $modx->setPlaceholder('Revision', $item->Revision);
                $modx->setPlaceholder('RevisionDate', $item->RevisionDate);
                $modx->setPlaceholder('Qualification', $item->Qualification);
                $modx->setPlaceholder('LandArea', $item->LandArea);
                $modx->setPlaceholder('FloorArea', $item->FloorArea);
                $modx->setPlaceholder('UserName', $item->UserName);
                $modx->setPlaceholder('StreetviewYaw', $item->StreetviewYaw);
                $modx->setPlaceholder('StreetviewPitch', $item->StreetviewPitch);
                $modx->setPlaceholder('StreetViewSuppress', $item->StreetViewSuppress);
                $modx->setPlaceholder('QRCode', $item->QRCode);
                $modx->setPlaceholder('EPCReference', $item->EPCReference);
                
                
                if($rentalTermsID == '1') {    
                    if($item->RentalTermsID == '1'){ 
                        $properties .= $modx->getChunk($tpl);
                    }
                }else {
                   if($item->RentalTermsID != '1'){ 
                        $properties .= $modx->getChunk($tpl);
                    } 
                }
                
            }
            
            return $properties;
            
            
        }else{
            echo '<p>No Results Found</p>'; 
        }
        
    } catch (SoapFault $fault) {
        trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
    }
      • 3749
      • 24,544 Posts
      It might help to put the placeholders in an array and call setPlaceholders() or toPlaceholders. Better than that, you can send the placeholder array as a second argument to getChunk();

      Also, if $item is an xPDO object, you could call $object->toArray(),or better:

      $properties = $modx->getChunk($tpl, $item->toArray());


        Did I help you? Buy me a beer
        Get my Book: MODX:The Official Guide
        MODX info for everyone: http://bobsguides.com/modx.html
        My MODX Extras
        Bob's Guides is now hosted at A2 MODX Hosting