summaryrefslogtreecommitdiff
path: root/plugins/data.sort.php
blob: 998b177f507baa3346602c380e06afa13cff827d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php

namespace Bitweaver\Liberty;

use Bitweaver\KernelTools;

/**
 * @version  $Revision$
 * @package  liberty
 * @subpackage plugins_data
 */

/**
 * definitions
 */
define( 'PLUGIN_GUID_DATASORT', 'datasort' );
global $gLibertySystem;
$pluginParams = [
	'tag'           => 'SORT',
	'auto_activate' => false,
	'requires_pair' => true,
	'load_function' => '\data_sort',
	'title'         => 'Sort',
	'help_page'     => 'DataPluginSort',
	'description'   => KernelTools::tra( "This plugin will sort the lines within a {sort} block." ),
	'help_function' => '\data_sort_help',
	'syntax'        => "{sort sort= }".KernelTools::tra( "Lines to be sorted" )."{sort}",
	'plugin_type'   => DATA_PLUGIN,
];
$gLibertySystem->registerPlugin( PLUGIN_GUID_DATASORT, $pluginParams );
$gLibertySystem->registerDataTag( $pluginParams['tag'], PLUGIN_GUID_DATASORT );

/**
 * Help Function
 */
function data_sort_help() {
	$help ='
		<table class="data help">
			<tr>
				<th>'.KernelTools::tra( 'Key' ).'</th>
				<th>'.KernelTools::tra( 'Value' ).'</th>
				<th>'.KernelTools::tra( 'Comments' ).'</th>
			</tr>
			<tr class="even">
				<td>'.'sort' .'</td>
				<td>'.KernelTools::tra( "key-words").'<br />'.KernelTools::tra("(optional)").'</td>
				<td>'.KernelTools::tra( 'Will sort the lines in the desired direction.  Choices are:' ).'<strong>asc</strong>, <strong>desc</strong>, <strong>reverse</strong>, <strong>shuffle</strong>'.KernelTools::tra( 'Default:' ).'<strong>asc</strong>'.'</td>
			</tr>
		</table>'.
		KernelTools::tra( "Example: " ).'{sort sort=shuffle}<br />Line 1<br />Line 2<br />Line 3<br />{sort}';
	return $help;
}

/**
 * Load Function
 */
function data_sort( $pData, $pParams, $pCommonObject, $pParseHash ) {
	$sort = ( !empty( $pParams['sort'] )) ? $pParams['sort'] : 'asc';
	$lines = explode( "\n", $pData );
	if( $sort == "asc" ) {
		sort( $lines );
	} elseif( $sort == "desc" ) {
		rsort( $lines );
	} elseif( $sort == "reverse" ) {
		$lines = array_reverse( $lines );
	} elseif( $sort == "shuffle" ) {
		srand(( float )microtime() * 1000000 );
		shuffle( $lines );
	}
	reset( $lines );
	if( is_array( $lines )) {
		$pData = implode( "\n", $lines );
	}

	$parseHash['content_id'] = $pParseHash['content_id'];
	$parseHash['user_id']    = $pParseHash['user_id'];
	$parseHash['no_cache']   = true;
	$parseHash['data']       = trim( $pData );
	return LibertyContent::parseDataHash( $parseHash, $pCommonObject );
}