// We sort tags alphabetically, then choose a font size according to count.
// First, find max value.
- $maxcount=0; foreach($tags as $key=>$value) $maxcount=max($maxcount,$value);
- ksort($tags);
+ $maxcount = 0;
+ foreach ($tags as $value) {
+ $maxcount = max($maxcount, $value);
+ }
+
+ // Sort tags alphabetically: case insensitive, support locale if avalaible.
+ uksort($tags, function($a, $b) {
+ // Collator is part of PHP intl.
+ if (class_exists('Collator')) {
+ $c = new Collator(setlocale(LC_ALL, 0));
+ return $c->compare($a, $b);
+ } else {
+ return strcasecmp($a, $b);
+ }
+ });
+
$tagList=array();
foreach($tags as $key=>$value)
- // Tag font size scaling: default 15 and 30 logarithm bases affect scaling, 22 and 6 are arbitrary font sizes for max and min sizes.
+ // Tag font size scaling: default 15 and 30 logarithm bases affect scaling, 22 and 6 are arbitrary font sizes for max and min sizes.
{
$tagList[$key] = array('count'=>$value,'size'=>log($value, 15) / log($maxcount, 30) * (22-6) + 6);
}
}
// Remove multiple spaces.
$tags = trim(preg_replace('/\s\s+/', ' ', $_POST['lf_tags']));
+ // Remove first '-' char in tags.
+ $tags = preg_replace('/(^| )\-/', '$1', $tags);
// Remove duplicates.
$tags = implode(' ', array_unique(explode(' ', $tags)));
$linkdate = $_POST['lf_linkdate'];
$link = array(
'title' => trim($_POST['lf_title']),
'url' => $url,
- 'description' => trim($_POST['lf_description']),
+ 'description' => $_POST['lf_description'],
'private' => (isset($_POST['lf_private']) ? 1 : 0),
'linkdate' => $linkdate,
'tags' => str_replace(',', ' ', $tags)
);
// TODO: do not handle exceptions/errors in JS.
- echo '<script>alert("'. $e->getMessage() .'");document.location=\'?do=pluginsadmin\';</script>';
+ echo '<script>alert("'. $e->getMessage() .'");document.location=\'?do='. Router::$PAGE_PLUGINSADMIN .'\';</script>';
exit;
}
header('Location: ?do='. Router::$PAGE_PLUGINSADMIN);