1<?php 2 3/** 4 * Action component of diagrams plugin 5 * 6 */ 7class action_plugin_diagrams_mediafile extends DokuWiki_Action_Plugin 8{ 9 10 /** 11 * Registers a callback function for a given event 12 * 13 * @param \Doku_Event_Handler $controller 14 */ 15 public function register(Doku_Event_Handler $controller) 16 { 17 $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handleEditCheck'); 18 } 19 20 /** 21 * Check all supplied diagrams and return only editable diagrams 22 * 23 * @param Doku_Event $event 24 */ 25 public function handleEditCheck(Doku_Event $event) 26 { 27 if ($event->data !== 'plugin_diagrams_mediafile_editcheck') return; 28 $event->preventDefault(); 29 $event->stopPropagation(); 30 31 global $INPUT; 32 $diagrams = (array) json_decode($INPUT->str('diagrams')); 33 34 /** @var helper_plugin_diagrams $helper */ 35 $helper = plugin_load('helper', 'diagrams'); 36 37 $editable = []; 38 foreach ($diagrams as $image) { 39 $image = cleanID($image); 40 $file = mediaFN($image); 41 42 if ( 43 file_exists($file) && 44 auth_quickaclcheck($image) >= AUTH_UPLOAD && 45 $helper->isDiagramFile($file) 46 ) { 47 $editable[] = $image; 48 } 49 } 50 51 echo json_encode($editable); 52 } 53 54} 55