src/Model/DataObject/Product.php line 10

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Elements.at New Media Solutions GmbH
  4.  *
  5.  */
  6. namespace App\Model\DataObject;
  7. class Product extends \Pimcore\Model\DataObject\Product
  8. {
  9.     /**
  10.      * Overridden class because we need to set Objectsbricks dynamically via Importer
  11.      *
  12.      * @return \Pimcore\Model\DataObject\Objectbrick|null
  13.      */
  14.     public function getOrCreateProductSpecificationBrick(string $brickName)
  15.     {
  16.         $brickName str_replace(['-'' '], ''$brickName);
  17.         $brickGetter 'get' ucfirst($brickName);
  18.         $brickSetter 'set' ucfirst($brickName);
  19.         $brickClass '\\Pimcore\\Model\\DataObject\\Objectbrick\\Data\\' ucfirst($brickName);
  20.         $brickDefinition \Pimcore\Model\DataObject\Objectbrick\Definition::getByKey($brickName);
  21.         if ($brickDefinition) {
  22.             if ($specification $this->getSpecification()) {
  23.                 if (!$brick $specification->$brickGetter()) {
  24.                     $brick = new $brickClass($this);
  25.                     $specification->$brickSetter($brick);
  26.                 }
  27.                 return $brick;
  28.             }
  29.         }
  30.         return null;
  31.     }
  32.     public function getObjectBrickAttributes(): mixed
  33.     {
  34.         $attributes = [];
  35.         if ($specification $this->getSpecification()) {
  36.             if ($specification->getItems()[0] ?? false) {
  37.                 $items $specification->getItems()[0];
  38.                 if ($specification->getItems()[0]->getType() == 'PalfingerLoaderCrane') {
  39.                     $methods = ['maxLiftMoment''maxLiftCapacity''maxHydraulicOutreach''maxManualOutreach''slewingAngle''slewingTorqueOneGear''stabilizerSpread''fittingSpaceRequired''widthFolded''maxOperatingPressure''pumpCapacity''deadWeight''slewingTorqueTwoGears''maxOutreachFlyJib''recomPumpCaRSQ240''recomPumpCaRSQ240_2''RecomPumpCaPVG32Radio_2''RecomPumpCaPVG32_2'];
  40.                     foreach ($specification->getItems()[0]->getTable() as $row => $tableItems) {
  41.                         foreach ($tableItems as $key => $value) {
  42.                             if ($value != null || $value != '') {
  43.                                 if ($row == 0) {
  44.                                     $attributes['table']['head'][$key] = $value;
  45.                                 } else {
  46.                                     $attributes['table']['body'][$row][$key] = $value;
  47.                                 }
  48.                             }
  49.                         }
  50.                     }
  51.                     foreach ($specification->getItems()[0]->getAdditionalImages() as $image) {
  52.                         $attributes['images'][] = $image;
  53.                     }
  54.                 }
  55.                 elseif ($specification->getItems()[0]->getType() == 'PalfingerAccessplatform') {
  56.                     $methods = ['maxHeightofWork''maxbasketfloorheight''maxhorizontaloutreach''maxbasketcapacity''workmanbasket''neigungswinkelTeleskoparm''schwenkbereichDrehtisch''hoeheTransportstellung''breiteTransportstellung'];
  57.                     foreach ($specification->getItems()[0]->getAdditionalImages() as $image) {
  58.                         $attributes['images'][] = $image;
  59.                     }
  60.                 }
  61.                 elseif (str_starts_with($specification->getItems()[0]->getType(), 'Komatsu')) {
  62.                     $methods = [
  63.                         'enginePower''operatingWeight''spoonCapacity''diggingDepth''bucketCapacity',
  64.                         'bodyCapacity''ratedPayload''maxSpeed''speed''breakoutForce''tippingLoad',
  65.                         'crushingCapacity''blade''bladeCapacity''bladeSize''ownWeight''power''grossLoad',
  66.                         'maxOperatingPressure''torque''tractionForce''sizes''netWeight''engine''craneBucket',
  67.                         'hydraulicSystem''electricSystem''transmission''height''width''knivesOpen''rollerOpening',
  68.                         'strippedDiameter''feedSpeed''rollerDiameter''grossDosingForce''numberKnives''bottomDiameter',
  69.                         'rollerOpening''sawBlade''sawMotor''maxHydraulicFlow''cylinderVolume',
  70.                         'crane''availableHeads',
  71.                     ];
  72.                 }
  73.                 else {
  74.                     $methods = [
  75.                         'baseMachineWeight''feedHeight''feedingWidth''emissionMass''numberQuickChangeBlades',
  76.                         'drumDiameter''intake''control''propulsion''driveSpeed',
  77.                         'drivePower''grates''chassis''rotorShaftDiameter''factoryCraneDesign',
  78.                         'grossLoad''torque''emissionStandard''powerNm''fuel',
  79.                         'netWeight''craneBucket''hydraulicSystem''electricSystem',
  80.                         'transmission''ownWeight''strippedDiameter''feedSpeed',
  81.                         'width''knivesOpen''rollerOpening''rollerDiameter''grossDosingForce',
  82.                         'numberKnives''bottomDiameter''sawBlade''sawMotor''maxHydraulicFlow',
  83.                         'maxOperatingPressure''cylinderVolume''tractionForce''sizes',
  84.                         'engine''crane''availableHeads',
  85.                         'loadCapacity''liftHeight''maxLiftCapacity''maxExtension''maxWeight',
  86.                         'driveUnit''stockpileHeight''weight''transportHeight''transportWidth',
  87.                         'transportLength''power''tires''tractionDrive''additionalHydraulic',
  88.                         'deadWeight''maxLiftingHeight''speedWithoutLoad''speedWithLoad''tareWeight',
  89.                         'maxPayload''heaped''throughput''transportDimensions''workingDimensions',
  90.                         'crushingGapWidth''sizeOfTank''numberPaddlesBlades''sizeMotorGearbox''config',
  91.                         'screenSize''engineSize''length''height''drive',
  92.                         'hopperCapacity''driveMotorGearbox''feedConveyor''cycloneSize''pumpSize',
  93.                         'operatingWeight''maxLiftingCapacity''maxBoomReach''enginePower''winch',
  94.                         'winchForce''maxHookHeight''carryingCapacity''hydraulicExcavator''massRipperWithTopBracket',
  95.                         'massRipperWithoutTopBracket''hydraulicWorkingPressure''hydraulicReturnPressure''requiredOilAmount''maxCaseDrainPressure',
  96.                         'frequency''dimensions''accumulatorPressure''liftingForce''breakoutForce',
  97.                         'thrust''avgGroundPressure''turningRadius''articleNumber',
  98.                         'additionalText',
  99.                     ];
  100.                 }
  101.                 foreach ($methods as $method) {
  102.                     $getter 'get' ucfirst($method);
  103.                     if (method_exists($items$getter)) {
  104.                         if ($items->$getter()) {
  105.                             $attributes['attributes']['th'][] = $method;
  106.                             $attributes['attributes']['td'][] = $items->$getter();
  107.                         }
  108.                     }
  109.                 }
  110.             }
  111.         }
  112.         return $attributes;
  113.     }
  114.     public function getTeaserAttributes(): mixed
  115.     {
  116.         $attributes = [];
  117.         if ($specification $this->getSpecification()) {
  118.             if ($specification->getItems()[0] ?? false) {
  119.                 if ($specification->getItems()[0]->getType() == 'PalfingerLoaderCrane') {
  120.                     $items $specification->getItems()[0];
  121.                     $prefixTk 'palfinger.';
  122.                     $attributes[$prefixTk 'maxLiftCapacity'] = $items->getMaxLiftCapacity();
  123.                     $attributes[$prefixTk 'deadWeight'] = $items->getDeadWeight();
  124.                 }
  125.                 elseif (str_starts_with($specification->getItems()[0]->getType(), 'Komatsu')) {
  126.                     $type $specification->getItems()[0]->getType();
  127.                     $items $specification->getItems()[0];
  128.                     $prefixTk 'komatsu.';
  129.                     if ($type == 'KomatsuElektrischeMuldenkipper' || $type == 'KomatsuMuldenkipper') {
  130.                         $attributes[$prefixTk 'bodyCapacity'] = $items->getBodyCapacity();
  131.                         $attributes[$prefixTk 'ratedPayload'] = $items->getRatedPayload();
  132.                     } elseif ($type == 'KomatsuKnickgelenkteMuldenkipper') {
  133.                         $attributes[$prefixTk 'operatingWeight'] = $items->getOperatingWeight();
  134.                         $attributes[$prefixTk 'ratedPayload'] = $items->getRatedPayload();
  135.                     } elseif ($type == 'KomatsuKompaktlader' || $type == 'KomatsuKompaktradlader' || $type == 'KomatsuRadlader') {
  136.                         $attributes[$prefixTk 'operatingWeight'] = $items->getOperatingWeight();
  137.                         $attributes[$prefixTk 'bucketCapacity'] = $items->getBucketCapacity();
  138.                     } elseif ($type == 'KomatsuMobileBackenbrecher' || $type == 'KomatsuMotorGrader' || $type == 'KomatsuPlanierraupen') {
  139.                         $attributes[$prefixTk 'operatingWeight'] = $items->getOperatingWeight();
  140.                         $attributes[$prefixTk 'enginePower'] = $items->getEnginePower();
  141.                     } elseif ($type == 'KomatsuForestHarvesterHeads') {
  142.                         $attributes[$prefixTk 'ownWeight'] = $items->getOwnWeight();
  143.                         $attributes[$prefixTk 'maxOperatingPressure'] = $items->getMaxOperatingPressure();
  144.                     } elseif ($type == 'KomatsuForestHarvester') {
  145.                         $attributes[$prefixTk 'ownWeight'] = $items->getOwnWeight();
  146.                         $attributes[$prefixTk 'power'] = $items->getPower();
  147.                     }elseif ($type == 'KomatsuForestForwarder') {
  148.                         $attributes[$prefixTk 'grossLoad'] = $items->getGrossLoad();
  149.                         $attributes[$prefixTk 'power'] = $items->getPower();
  150.                     } else {
  151.                         $attributes[$prefixTk 'operatingWeight'] = $items->getOperatingWeight();
  152.                         $attributes[$prefixTk 'spoonCapacity'] = $items->getSpoonCapacity();
  153.                     }
  154.                 }
  155.                 else {
  156.                     $type $specification->getItems()[0]->getType();
  157.                     $items $specification->getItems()[0];
  158.                     $prefixTk 'manual.';
  159.                     if ($type == 'Frd') {
  160.                         $attributes[$prefixTk 'baseMachineWeight'] = $items->getBaseMachineWeight();
  161.                     } elseif ($type == 'Powerscreen') {
  162.                         $attributes[$prefixTk 'throughput'] = $items->getThroughput();
  163.                     }
  164.                 }
  165.             }
  166.         }
  167.         return $attributes;
  168.     }
  169. }