Conditions | 13 |
Paths | 384 |
Total Lines | 236 |
Code Lines | 168 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
249 | public function getCMSFields() |
||
250 | { |
||
251 | $fields = parent::getCMSFields(); |
||
252 | //remove all unneccessary fields and tabs |
||
253 | $fields->removeByName("AlsoShowHere"); |
||
254 | $fields->removeByName("Tax"); |
||
255 | $fields->removeByName("Links"); |
||
256 | $fields->removeByName("Details"); |
||
257 | $fields->removeByName("Images"); |
||
258 | $fields->removeFieldFromTab('Root', 'Title'); |
||
259 | $fields->removeFieldFromTab('Root', 'URLSegment'); |
||
260 | $fields->removeFieldFromTab('Root', 'MenuTitle'); |
||
261 | $fields->removeFieldFromTab('Root', 'ShortDescription'); |
||
262 | $fields->removeFieldFromTab('Root', 'Content'); |
||
263 | $fields->removeFieldFromTab('Root', 'Metadata'); |
||
264 | $fields->removeFieldFromTab('Root', 'AddToCartLink'); |
||
265 | |||
266 | |||
267 | $fields->addFieldsToTab( |
||
268 | 'Root.Main', |
||
269 | array( |
||
270 | $allowPurchaseField = CheckboxField::create("AllowPurchase", "<strong>Allow product to be purchased</strong>"), |
||
271 | $sellinOnBehalf = CheckboxField::create("SellingOnBehalf", "<strong>Selling on behalf</strong>"), |
||
272 | $featuredProductField = CheckboxField::create('FeaturedProduct', _t('Product.FEATURED', '<strong>Featured Product</strong>')), |
||
273 | TextField::create('Title', 'Product Title'), |
||
274 | ) |
||
275 | ); |
||
276 | $secondhandProductCategories = SecondHandProductGroup::get(); |
||
277 | if ($secondhandProductCategories->count()) { |
||
278 | $fields->addFieldToTab( |
||
279 | 'Root.Main', |
||
280 | $categoryField = DropdownField::create( |
||
281 | 'ParentID', |
||
282 | 'Product Category', |
||
283 | $secondhandProductCategories->map() |
||
284 | ) |
||
285 | ); |
||
286 | } |
||
287 | $fields->addFieldsToTab( |
||
288 | 'Root.Main', |
||
289 | array( |
||
290 | ReadonlyField::create('CanBeSold', "For Sale", DBField::create_field('Boolean', $this->canPurchase())->Nice()), |
||
291 | ReadonlyField::create('CreatedNice', "First Entered", $this->getCreatedNice()), |
||
292 | TextField::create('InternalItemID', "Product Code"), |
||
293 | $purchasePriceField = NumericField::create('PurchasePrice', 'Purchase Price'), |
||
294 | $salePriceField = NumericField::create('Price', 'Sale Price'), |
||
295 | $soldPriceField = NumericField::create('SoldPrice', 'Sold Price'), |
||
296 | $serialNumberField = TextField::create('SerialNumber', 'Serial Number'), |
||
297 | $productQualityField = DropdownField::create( |
||
298 | "ProductQuality", |
||
299 | "Product Condition/Quality", |
||
300 | $this->dbObject('ProductQuality')->enumValues() |
||
301 | ), |
||
302 | $boxOrCaseField = DropdownField::create( |
||
303 | "IncludesBoxOrCase", |
||
304 | "Includes Box/Case", |
||
305 | $this->dbObject('IncludesBoxOrCase')->enumValues() |
||
306 | ), |
||
307 | $originalManualField = CheckboxField::create("OriginalManual", "Includes Original Manual"), |
||
308 | $contentField = TextField::create("ShortDescription", "Description"), |
||
309 | $boughtDate = DateField::create('DateItemWasBought', 'Date this item was bought'), |
||
310 | $soldDate = DateField::create('DateItemWasSold', 'Date this item was sold'), |
||
311 | $mainImageField = UploadField::create("Image", "Main Product Image"), |
||
312 | $additionalImagesField = UploadField::create("AdditionalImages", "More Images"), |
||
313 | $metaFieldDesc = TextareaField::create("MetaDescription", 'Meta Description') |
||
314 | ) |
||
315 | ); |
||
316 | $soldDate->setDisabled(true); |
||
317 | |||
318 | //set right titles and descriptions |
||
319 | $featuredProductField->setDescription('If this box is ticked then this product will appear in the "Featured Products" box on the home page'); |
||
320 | $allowPurchaseField->setDescription("This box must be ticked to allow a customer to purchase it"); |
||
321 | $sellinOnBehalf->setDescription('This box must be ticked if this product is being sold on behalf'); |
||
322 | $purchasePriceField->setRightTitle("Price paid for the product"); |
||
323 | $salePriceField->setRightTitle("Selling price"); |
||
324 | $soldPriceField->setRightTitle("The price that the product actually sold for"); |
||
325 | $serialNumberField->setRightTitle("Enter the serial number of the product here"); |
||
326 | $originalManualField->setDescription("Tick this box if the product includes the original manual, otherwise leave it empty"); |
||
327 | $boxOrCaseField->setRightTitle("Does this product come with a box, case or both?"); |
||
328 | $contentField->setRightTitle("Optional text only description, the maximum length of this description is 255 characters."); |
||
329 | $contentField->setMaxLength(255); |
||
330 | $qualityFieldDescription = "A <strong>Condition Rating Page</strong> has yet to be setup"; |
||
331 | $obj = $this->EcomConfig()->SecondHandExplanationPage(); |
||
332 | if ($obj->exists()) { |
||
333 | $qualityFieldDescription = 'An explanation of the ratings scale can be found by clicking this <a href="' . $obj->Link() . '">link</a>'; |
||
334 | } |
||
335 | $productQualityField->setRightTitle($qualityFieldDescription); |
||
336 | $boughtDate->setRightTitle('Date Format (dd-mm-YYYY). Example: 3rd of May 1992 should be entered as 03-05-1992'); |
||
337 | $mainImageField->setRightTitle( |
||
338 | "<strong>Upload the main image for the product here.</strong><br> |
||
339 | Recommended size: 810px wide x 418px high - but you can choose any width up to 810px, height must |
||
340 | ALWAYS BE 418px. Should be provided to FTP data upload as productcode.jpg - e.g. 1003040.jpg. |
||
341 | Images should be compressed up to 50%." |
||
342 | ); |
||
343 | $additionalImagesField->setRightTitle( |
||
344 | "<strong>Upload additional images here, you can upload as many as you want.</strong><br> |
||
345 | Recommended size: 810px wide x 418px high - but you can choose any width up to 810px, height must |
||
346 | ALWAYS BE 418px. Should be provided to FTP data upload as productcode.jpg - e.g. 1003040.jpg. |
||
347 | Images should be compressed up to 50%." |
||
348 | ); |
||
349 | //replace InternalItemID field with a read only field |
||
350 | $fields->replaceField( |
||
351 | 'InternalItemID', |
||
352 | $fields->dataFieldByName('InternalItemID')->performReadonlyTransformation() |
||
353 | ); |
||
354 | |||
355 | $lastEditedItems = SecondHandProduct::get()->sort('Created', 'DESC')->limit(100); |
||
356 | |||
357 | $lastItems = array( |
||
358 | 0 => '--- not based on previous sale ---' |
||
359 | ); |
||
360 | |||
361 | foreach ($lastEditedItems as $lastEditedItem) { |
||
362 | $details = $lastEditedItem->getSellerSummary(); |
||
363 | if ($details) { |
||
364 | $lastItems[$lastEditedItem->ID] = $details; |
||
365 | } |
||
366 | } |
||
367 | |||
368 | $fields->addFieldsToTab( |
||
369 | 'Root.SellersDetails', |
||
370 | array( |
||
371 | HeaderField::create('SellersDetails', 'Enter the details of the person who the product was purchased from'), |
||
372 | DropdownField::create( |
||
373 | 'BasedOnID', |
||
374 | 'Autocomplete from saved items', |
||
375 | $lastItems |
||
376 | ), |
||
377 | TextField::create('SellersName', 'Name'), |
||
378 | TextField::create('SellersPhone', 'Phone'), |
||
379 | TextField::create('SellersEmail', 'Email Address'), |
||
380 | DropdownField::create( |
||
381 | 'SellersIDType', |
||
382 | 'ID Type', |
||
383 | $this->dbObject('SellersIDType')->enumValues() |
||
384 | ), |
||
385 | TextField::create('SellersIDNumber', 'ID Number'), |
||
386 | DateField::create('SellersDateOfBirth', 'Date of Birth'), |
||
387 | DateField::create('SellersIDExpiryDate', 'ID Expiry Date'), |
||
388 | CheckboxField::create('SellersIDPhotocopy', 'ID Photocopy') |
||
389 | ) |
||
390 | ); |
||
391 | |||
392 | if (class_exists('GoogleAddressField')) { |
||
393 | $mappingArray = $this->Config()->get('fields_to_google_geocode_conversion'); |
||
394 | if (is_array($mappingArray) && count($mappingArray)) { |
||
395 | $fields->addFieldToTab( |
||
396 | 'Root.SellersDetails', |
||
397 | $geocodingField = new GoogleAddressField( |
||
398 | 'SellersAddressGeocodingField', |
||
399 | _t('OrderAddress.FIND_ADDRESS', 'Find address'), |
||
400 | Session::get('SellersAddressGeocodingFieldValue') |
||
401 | ) |
||
402 | ); |
||
403 | $geocodingField->setFieldMap($mappingArray); |
||
404 | |||
405 | $country_code = Config::inst()->get('SecondHandProduct', 'country_code'); |
||
406 | if ($country_code) { |
||
407 | $geocodingField->setRestrictToCountryCode($country_code); |
||
408 | } |
||
409 | //$geocodingField->setAlwaysShowFields(true); |
||
410 | } |
||
411 | } |
||
412 | |||
413 | $fields->addFieldsToTab( |
||
414 | 'Root.SellersDetails', |
||
415 | array( |
||
416 | TextField::create('SellersAddress', 'Address'), |
||
417 | TextField::create('SellersAddress2', 'Suburb'), |
||
418 | TextField::create('SellersCity', 'City/Town'), |
||
419 | TextField::create('SellersPostalCode', 'Postal Code'), |
||
420 | TextField::create('SellersRegionCode', 'Region Code'), |
||
421 | TextField::create('SellersCountry', 'Country'), |
||
422 | ) |
||
423 | ); |
||
424 | //add all fields to the main tab |
||
425 | $fields->addFieldToTab( |
||
426 | 'Root.SellersDetails', |
||
427 | EcommerceCMSButtonField::create( |
||
428 | 'PrintView', |
||
429 | $this->getPrintLink(), |
||
430 | 'Print Details', |
||
431 | $newWindow = true |
||
432 | ) |
||
433 | ); |
||
434 | if ($this->BasedOnID) { |
||
435 | $list = Config::inst()->get('SecondHandProduct', 'seller_summary_detail_fields'); |
||
436 | $labels = $this->FieldLabels(); |
||
437 | foreach ($list as $listField) { |
||
438 | $fields->replaceField( |
||
439 | $listField, |
||
440 | ReadonlyField::create( |
||
441 | $listField, |
||
442 | $fields->dataFieldByName($listField)->Title() |
||
443 | ) |
||
444 | ); |
||
445 | } |
||
446 | $fields->removeByName('SellersAddressGeocodingField'); |
||
447 | } |
||
448 | $fields->addFieldToTab( |
||
449 | 'Root.Categorisation', |
||
450 | $categoriesTable = $this->getProductGroupsTableField() |
||
451 | ); |
||
452 | |||
453 | // If the product has been sold all fields should be disabled |
||
454 | // Only the shop administrator is allowed to undo this. |
||
455 | if ($this->HasBeenSold()) { |
||
456 | $fields->insertAfter( |
||
457 | 'AllowPurchase', |
||
458 | EcommerceCMSButtonField::create( |
||
459 | 'ArchiveButton', |
||
460 | '/admin/secondhandproducts/SecondHandProduct/archive/?productid=' . $this->ID, |
||
461 | _t('SecondHandProduct.ARCHIVE_BUTTON', 'Archive Product') |
||
462 | ) |
||
463 | ); |
||
464 | $fields = $fields->makeReadonly(); |
||
465 | $fields->replaceField($categoriesTable->Name, $categoriesTable); |
||
466 | $categoriesTable->setConfig(GridFieldConfig_RecordViewer::create()); |
||
467 | $fields->replaceField( |
||
468 | 'EnquiresList', |
||
469 | GridField::create( |
||
470 | 'EnquiresList', |
||
471 | 'Enquiries List', |
||
472 | $this->PageEnquiries(), |
||
473 | GridFieldConfig_RecordViewer::create() |
||
474 | ) |
||
475 | ); |
||
476 | } |
||
477 | |||
478 | if ($this->canEdit()) { |
||
479 | $fields->replaceField('AllowPurchase', CheckboxField::create('AllowPurchase', '<strong>Allow product to be purchased</strong>')); |
||
480 | $fields->replaceField('DateItemWasSold', DateField::create('DateItemWasSold', 'Date this item was sold')); |
||
481 | } |
||
482 | |||
483 | return $fields; |
||
484 | } |
||
485 | |||
722 |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.