tra('Relations'), 'description' => tra('Display the relation of an object to the rest of the site'), 'filter' => 'int', 'format' => 'html', 'prefs' => ['wikiplugin_relations'], 'introduced' => 8, 'iconname' => 'move', 'documentation' => 'PluginRelations', 'params' => [ 'qualifiers' => [ 'required' => true, 'name' => tra('Qualifiers'), 'description' => tra('Comma-separated list of relation qualifiers.'), 'separator' => ',', 'filter' => 'attribute_type', 'default' => [], 'since' => '8.0', ], 'object' => [ 'required' => false, 'name' => tra('Object'), 'description' => tr('Object identifier as %0type:itemId%1', '', ''), 'filter' => 'text', 'default' => null, 'since' => '8.0', 'profile_reference' => 'type_colon_object', ], 'singlelist' => [ 'required' => false, 'name' => tra('Single List'), 'description' => tra('Render all qualifiers into a single list without displaying the qualifier name.'), 'filter' => 'int', 'since' => '8.0', 'default' => 0, 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('No'), 'value' => 0], ['text' => tra('Yes'), 'value' => 1], ], ], 'emptymsg' => [ 'required' => false, 'name' => tra('Empty Message'), 'description' => tra('Message to give if result is empty and no relations are found.'), 'filter' => 'text', 'since' => '15.0', 'default' => "No relations found.", ], ], ]; } function wikiplugin_relations($data, $params) { $object = current_object(); if (isset($params['object']) && false !== strpos($params['object'], ':')) { list($object['type'], $object['object']) = explode(':', $params['object'], 2); } if (! isset($params['qualifiers'])) { return WikiParser_PluginOutput::argumentError(['qualifiers']); } $singlelist = false; if (isset($params['singlelist']) && $params['singlelist']) { $singlelist = true; } $emptymsg = "No relations found."; if (isset($params['emptymsg']) && $params['emptymsg']) { $emptymsg = $params['emptymsg']; } $data = []; $relationlib = TikiLib::lib('relation'); foreach ($params['qualifiers'] as $qualifier) { $name = $singlelist ? 'singlelist' : tra($qualifier); $found = $relationlib->get_relations_from($object['type'], $object['object'], $qualifier); foreach ($found as $relation) { $type = $relation['type']; $id = $relation['itemId']; $data[$name]["$type:$id"] = ['type' => $type, 'object' => $id]; } } $smarty = TikiLib::lib('smarty'); $smarty->assign('wp_relations', $data); $smarty->assign('wp_singlelist', $singlelist); $smarty->assign('wp_emptymsg', $emptymsg); return $smarty->fetch('wiki-plugins/wikiplugin_relations.tpl'); }