<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id: wikiplugin_catpath.php 66112 2018-04-19 18:28:31Z luciash $

function wikiplugin_catpath_info()
{
	return [
		'name' => tra('Category Path'),
		'documentation' => 'PluginCatPath',
		'description' => tra('Show the full category path for a wiki page'),
		'prefs' => [ 'feature_categories', 'wikiplugin_catpath' ],
		'iconname' => 'structure',
		'introduced' => 1,
		'params' => [
			'divider' => [
				'required' => false,
				'name' => tra('Separator'),
				'description' => tr(
					'String used to separate the categories in the path. Default character is %0.',
					'<code>></code>'
				),
				'since' => '1',
				'default' => '>',
			],
			'top' => [
				'required' => false,
				'name' => tra('Display Top Category'),
				'description' => tra('Show the top category as part of the path name (not shown by default)'),
				'since' => '1',
				'filter' => 'alpha',
				'default' => 'no',
				'options' => [
					['text' => '', 'value' => ''],
					['text' => tra('Yes'), 'value' => 'y'],
					['text' => tra('No'), 'value' => 'n']
				],
			],
		],
	];
}

function wikiplugin_catpath($data, $params)
{
	global $prefs;

	$smarty = TikiLib::lib('smarty');
	$tikilib = TikiLib::lib('tiki');
	$categlib = TikiLib::lib('categ');

	if ($prefs['feature_categories'] != 'y') {
		return "<span class='warn'>" . tra("Categories are disabled") . "</span>";
	}

	extract($params, EXTR_SKIP);

	// default divider is '>'
	if (! (isset($divider))) {
		$divider = '>';
	}

	// default setting for top is 'no'
	if (! (isset($top))) {
		$top = 'no';
	} elseif ($top != 'y' and $top != 'yes' and $top != 'n' and $top != 'no') {
		$top = 'no';
	}

	$objId = urldecode($_REQUEST['page']);

	$cats = $categlib->get_object_categories('wiki page', $objId);

	$catpath = '';

	foreach ($cats as $categId) {
		$catpath .= '<span class="categpath">';

		// Display TOP on each line if wanted
		if ($top == 'yes' or $top == 'y') {
			$catpath .= '<a class="categpath" href="tiki-browse_categories.php?parentId=0">TOP</a> ' . $divider . ' ';
		}

		$path = '';
		$info = $categlib->get_category($categId);
		$path
			= '<a class="categpath" href="tiki-browse_categories.php?parentId=' . $info["categId"] . '">' . htmlspecialchars($info["name"]) . '</a>';

		while ($info["parentId"] != 0) {
			$info = $categlib->get_category($info["parentId"]);

			$path = '<a class="categpath" href="tiki-browse_categories.php?parentId=' . $info["categId"] . '">' . htmlspecialchars($info["name"]) . '</a> ' . htmlspecialchars($divider) . ' ' . $path;
		}

		$catpath .= $path . '</span><br />';
	}

	return $catpath;
}
