ResourceType.class.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * Define a resource Type.
  4. * @author Idleman
  5. * @category Plugin
  6. * @license copyright
  7. */
  8. class ResourceType{
  9. public static function types($slug=null,$onlyActive = false){
  10. global $conf;
  11. $typefiles = array();
  12. Plugin::callHook('hackpoint_resource_type',array(&$typefiles));
  13. $types = array();
  14. foreach($typefiles as $uid=>$file){
  15. $class = str_replace('.class.php','',basename($file));
  16. require_once($file);
  17. if(!method_exists ( $class , 'toHtml' )) continue;
  18. if(!method_exists ( $class , 'toJson' )) continue;
  19. if(!method_exists ( $class , 'toFile' )) continue;
  20. if(!method_exists ( $class , 'fromJson' )) continue;
  21. if(!method_exists ( $class , 'fromFile' )) continue;
  22. $infos = $class::manifest();
  23. if($onlyActive && empty($conf->get('hackpoint_resource_'.$infos['uid'])) ) continue;
  24. $infos['class'] = $class;
  25. $infos['path'] = $file;
  26. $types[$infos['uid']] = $infos;
  27. }
  28. uasort($types,function($a,$b){
  29. if ($a['label'] > $b['label']) return 1;
  30. if ($a['label'] < $b['label']) return -1;
  31. if ($a['label'] == $b['label']) return 0;
  32. });
  33. // $type = new ResourceType();
  34. // $type->color = '#20c997';
  35. // $type->icon = 'fas fa-code';
  36. if(!isset($slug)) return $types;
  37. return isset($types[$slug]) ? $types[$slug] : false;
  38. }
  39. }
  40. ?>