Subversion Repositories oidplus

Rev

Rev 1086 | Rev 1131 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. /*
  4.  * OIDplus 2.0
  5.  * Copyright 2019 - 2023 Daniel Marschall, ViaThinkSoft
  6.  *
  7.  * Licensed under the Apache License, Version 2.0 (the "License");
  8.  * you may not use this file except in compliance with the License.
  9.  * You may obtain a copy of the License at
  10.  *
  11.  *     http://www.apache.org/licenses/LICENSE-2.0
  12.  *
  13.  * Unless required by applicable law or agreed to in writing, software
  14.  * distributed under the License is distributed on an "AS IS" BASIS,
  15.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16.  * See the License for the specific language governing permissions and
  17.  * limitations under the License.
  18.  */
  19.  
  20. namespace ViaThinkSoft\OIDplus;
  21.  
  22. // phpcs:disable PSR1.Files.SideEffects
  23. \defined('INSIDE_OIDPLUS') or die;
  24. // phpcs:enable PSR1.Files.SideEffects
  25.  
  26. class OIDplusObjectTypePluginOid extends OIDplusObjectTypePlugin {
  27.  
  28.         /**
  29.          * @return string
  30.          */
  31.         public static function getObjectTypeClassName(): string {
  32.                 return OIDplusOid::class;
  33.         }
  34.  
  35.         /**
  36.          * @param string $id
  37.          * @return bool
  38.          */
  39.         public function implementsFeature(string $id): bool {
  40.                 if (strtolower($id) == '1.3.6.1.4.1.37476.2.5.2.3.6') return true; // gridGeneratorLinks
  41.                 return false;
  42.         }
  43.  
  44.         /**
  45.          * Implements interface 1.3.6.1.4.1.37476.2.5.2.3.6
  46.          * @param OIDplusObject $objParent
  47.          * @return string
  48.          */
  49.         public function gridGeneratorLinks(OIDplusObject $objParent): string {
  50.                 if ($objParent->nodeId() === 'oid:2.25') {
  51.                         return '<br><a href="javascript:OIDplusObjectTypePluginOid.generateRandomUUID(false)">('._L('Generate a random UUID OID').')</a>';
  52.                 } else if ($objParent->isRoot()) {
  53.                         return '<br><a href="javascript:OIDplusObjectTypePluginOid.generateRandomUUID(true)">('._L('Generate a random UUID OID').')</a>'.
  54.                                '<br><a href="https://oidplus.viathinksoft.com/oidplus/?goto=oidplus%3Acom.viathinksoft.freeoid" target="_blank">('._L('Request a free OID from ViaThinkSoft').')</a>'.
  55.                                '<br><a href="https://pen.iana.org/pen/PenApplication.page" target="_blank">('._L('Request a free PEN/OID from IANA').')</a>';
  56.                 } else {
  57.                         // No generation for normal OIDs atm. TODO: MAYBE in the future a feature like "next free / sequencial OID"
  58.                         return '';
  59.                 }
  60.         }
  61.  
  62.         /**
  63.          * @param string $static_node_id
  64.          * @param bool $throw_exception
  65.          * @return string
  66.          * @throws OIDplusException
  67.          */
  68.         public static function prefilterQuery(string $static_node_id, bool $throw_exception): string {
  69.                 // Convert WEID to OID
  70.                 // A WEID is just a different notation of an OID.
  71.                 // To allow that people use OID-IP or the GoTo-box with a "weid:" identifier, rewrite it to "oid:", so that the plugin OIDplusObjectTypePluginOid can handle it.
  72.                 if (str_starts_with($static_node_id,'weid:') && class_exists('\Frdl\Weid\WeidOidConverter')) {
  73.                         $ary = explode('$', $static_node_id, 2);
  74.                         $weid = $ary[0];
  75.                         $oid = \Frdl\Weid\WeidOidConverter::weid2oid($weid);
  76.                         if ($oid === false) {
  77.                                 if ($throw_exception) throw new OIDplusException('This is not a valid WEID');
  78.                         } else {
  79.                                 $ary[0] = $oid;
  80.                                 $static_node_id = 'oid:'.implode('$', $ary);
  81.                         }
  82.                 }
  83.  
  84.                 return $static_node_id;
  85.         }
  86.  
  87. }
  88.