public function getSubdfefByDeviceAndMime($devices = null, $mimes = null)
    {
        $subdefNames = $subdefs = [];

        $availableSubdefs = $this->get_subdefs();

        if (isset($availableSubdefs['document'])) {

            $mime_ok = !$mimes || in_array($availableSubdefs['document']->get_mime(), (array)$mimes, false);
            $devices_ok = !$devices || array_intersect($availableSubdefs['document']->getDevices(), (array)$devices);

            if ($mime_ok && $devices_ok) {
                $subdefs['document'] = $availableSubdefs['document'];
            }
        }

        $searchDevices = array_merge((array)$devices, (array)databox_subdef::DEVICE_ALL);

        $type = $this->isStory() ? 'image' : $this->getType();

        foreach ($this->getDatabox()->get_subdef_structure() as $group => $databoxSubdefs) {

            if ($type != $group) {
                continue;
            }

            foreach ($databoxSubdefs as $databoxSubdef) {

                if ($devices && !array_intersect($databoxSubdef->getDevices(), $searchDevices)) {
                    continue;
                }

                array_push($subdefNames, $databoxSubdef->get_name());
            }
        }

        foreach ($availableSubdefs as $subdef) {

            if (!in_array($subdef->get_name(), $subdefNames)) {
                continue;
            }

            if ($mimes && !in_array($subdef->get_mime(), (array)$mimes)) {
                continue;
            }

            $subdefs[$subdef->get_name()] = $subdef;
        }

        return $subdefs;
    }
public function getSubdfefByDeviceAndMime($devices = null, $mimes = null)
    {
        $subdefNames = $subdefs = [];

        $availableSubdefs = $this->get_subdefs();

        if (isset($availableSubdefs['document'])) {

            $mime_ok = !$mimes || in_array($availableSubdefs['document']->get_mime(), (array)$mimes, false);
            $devices_ok = !$devices || array_intersect($availableSubdefs['document']->getDevices(), (array)$devices);

            if ($mime_ok && $devices_ok) {
                $subdefs['document'] = $availableSubdefs['document'];
            }
        }

        $searchDevices = array_merge((array)$devices, (array)databox_subdef::DEVICE_ALL);

        $type = $this->isStory() ? 'image' : $this->getType();

        foreach ($this->getDatabox()->get_subdef_structure() as $group => $databoxSubdefs) {

            if ($type != $group) {
                continue;
            }

            foreach ($databoxSubdefs as $databoxSubdef) {

                if ($devices && !array_intersect($databoxSubdef->getDevices(), $searchDevices)) {
                    continue;
                }

                array_push($subdefNames, $databoxSubdef->get_name());
            }
        }

        foreach ($availableSubdefs as $subdef) {

            if (!in_array($subdef->get_name(), $subdefNames)) {
                continue;
            }

            if ($mimes && !in_array($subdef->get_mime(), (array)$mimes)) {
                continue;
            }

            $subdefs[$subdef->get_name()] = $subdef;
        }

        return $subdefs;
    }
public function getSubdfefByDeviceAndMime ( $ devices = null , $ mimes = null ) { $ subdefNames = $ subdefs = [ ] ; $ availableSubdefs = $ this -> get_subdefs ( ) ; if ( isset ( $ availableSubdefs [ 'document' ] ) ) { $ mime_ok = ! $ mimes || in_array ( $ availableSubdefs [ 'document' ] -> get_mime ( ) , ( array ) $ mimes , false ) ; $ devices_ok = ! $ devices || array_intersect ( $ availableSubdefs [ 'document' ] -> getDevices ( ) , ( array ) $ devices ) ; if ( $ mime_ok && $ devices_ok ) { $ subdefs [ 'document' ] = $ availableSubdefs [ 'document' ] ; } } $ searchDevices = array_merge ( ( array ) $ devices , ( array ) databox_subdef :: DEVICE_ALL ) ; $ type = $ this -> isStory ( ) ? 'image' : $ this -> getType ( ) ; foreach ( $ this -> getDatabox ( ) -> get_subdef_structure ( ) as $ group => $ databoxSubdefs ) { if ( $ type != $ group ) { continue ; } foreach ( $ databoxSubdefs as $ databoxSubdef ) { if ( $ devices && ! array_intersect ( $ databoxSubdef -> getDevices ( ) , $ searchDevices ) ) { continue ; } array_push ( $ subdefNames , $ databoxSubdef -> get_name ( ) ) ; } } foreach ( $ availableSubdefs as $ subdef ) { if ( ! in_array ( $ subdef -> get_name ( ) , $ subdefNames ) ) { continue ; } if ( $ mimes && ! in_array ( $ subdef -> get_mime ( ) , ( array ) $ mimes ) ) { continue ; } $ subdefs [ $ subdef -> get_name ( ) ] = $ subdef ; } return $ subdefs ; }
Returns an array of subdef matching

@param  string|string[] $devices the matching device (see databox_subdef::DEVICE_*)
@param  string|string[] $mimes   the matching mime types
@return media_subdef[]
Returns an array of subdef matching