How to detect for Mobile device Programmatically in Magento 2?

In Magento 2 you can detect mobile device by below code snippets.

Sometimes you need to display different data on mobile device specific or hide some data from the Mobile device at that time you have useful below code snippet.

    $userAgent = $this->getRequest()->getHeader('useragent');
    $server = $this->getRequest()->getServer();
    $isMobileDevice = \Zend_Http_UserAgent_Mobile::match($userAgent, $server);
    if($isMobileDevice) {
        //CODE FOR MOBILE DEVICE
    }

 

How to check module is enable or not programmatically in Magento 2?

In Magento, We can check any module is to enable or disable using a simple code snippet.

Call Magento\Framework\Module\Manager class to__construct() for check module status.

isEnabled() module used to display the result of the Module Enable or Disable with the boolean value true/false.

<?php
namespace Rbj\Training\Block;

class Modulemanager extends \Magento\Framework\View\Element\Template
{
    protected $_moduleManager;

    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Framework\Module\Manager $moduleManager,
        array $data = []
    )
    {
        $this->_moduleManager = $moduleManager;
        parent::__construct($context, $data);
    }
    /* return bool */
    public function isModuleEnable()
    {
        return $this->_moduleManager->isEnabled('Magento_Review');
    }
}

Call from template,

$isEnable = $block->isModuleEnable();

How to get Order Item Selected Options in Magento 2?

We can get Product selected options in Magento 2 by just simple code snippet, We can get selected options of Bundle, Configurable and Grouped product by below code snippet.

Customer purchased the configurable product with different variant and if you need to get selected variant of Product using Programmatically, Below code is useful to get Configurable and Bundle product selected options.

First, you need to get Item Object from a specific order.
Call below function in PHP file,

<?php
namespace Rbj\Sales\Block;

class Items extends \Magento\Framework\View\Element\Template
{
	/*
     * get Configurable/Bundle selected options from Item object
     */
    public function getSelectedOptions($item){
    	$result = [];
        $options = $item->getProductOptions();
        if ($options) {
            if (isset($options['options'])) {
                $result = array_merge($result, $options['options']);
            }
            if (isset($options['additional_options'])) {
                $result = array_merge($result, $options['additional_options']);
            }
            if (isset($options['attributes_info'])) {
                $result = array_merge($result, $options['attributes_info']);
            }
        }
        return $result;
    }

In template or PHP file, You have already Order or Quote object for getting all the items of Quote or Order. You can get Order Object by Get Order data by order id

<?php
$order = LOAD_ORDER_OBJECT; // load order or quote object
foreach ($order->getAllVisibleItems() as $_item) {
	if($_options = $this->getSelectedOptions($_item)) {
        $options .= '<dt class="options">';
            foreach ($_options as $_option) : 
                $options .= '<dd>'.$_option['label'].'</dd><dd>'.$_option['value'].'</dd>';
            endforeach; 
        $options .= '</dt>';
    }
}

The output will look like,

configurable product selected options
configurable product selected options