Wonder is anyone can help me convert this EE2 addon to EE3
<?php
$plugin_info = array(
'pi_name' => 'String',
'pi_version' => '1.2.0',
'pi_author' => 'Brett Altworth',
'pi_description' => 'Allows string variables to be manipulated and printed in ways that are inconvenient with template tags alone.',
'pi_usage' => String::usage()
);
class String {
var $return_data = "";
function String() {
global $SESS, $TMPL;
if(!isset($SESS->cache['string'])) {
$SESS->cache['string'] = array();
}
if($TMPL->fetch_param('name') && isset($SESS->cache['string'][$TMPL->fetch_param('name')])) {
$this->return_data = $SESS->cache['string'][$TMPL->fetch_param('name')];
}
}
function set() {
global $SESS;
if(($data = $this->_get_params()) === false) {
return;
}
$SESS->cache['string'][$data['name']] = $data['text'];
}
function clear() {
global $SESS, $TMPL;
if($TMPL->fetch_param('name') && isset($SESS->cache['string'][$TMPL->fetch_param('name')])) {
unset($SESS->cache['string'][$TMPL->fetch_param('name')]);
}
}
function append() {
global $SESS;
if(($data = $this->_get_params()) === false) {
return;
}
if(!isset($SESS->cache['string'][$data['name']])) {
$SESS->cache['string'][$data['name']] = $data['text'];
} else {
$str = "{$data['glue']}{$data['text']}";
if($data['sep'] != "") {
$str = "{$data['glue']}{$data['sep']}" . $str;
}
$SESS->cache['string'][$data['name']] = $SESS->cache['string'][$data['name']] . $str;
}
}
function prepend() {
global $SESS;
if(($data = $this->_get_params()) === false) {
return;
}
if(!isset($SESS->cache['string'][$data['name']])) {
$SESS->cache['string'][$data['name']] = $data['text'];
} else {
$str = "{$data['text']}{$data['glue']}";
if($data['sep'] != "") {
$str .= "{$data['sep']}{$data['glue']}";
}
$SESS->cache['string'][$data['name']] = $str . $SESS->cache['string'][$data['name']];
}
}
function output() {
global $SESS, $TMPL, $FNS;
$name = $TMPL->fetch_param('name');
$value = "";
if($name !== false && isset($SESS->cache['string'][$name])) {
$value = trim($SESS->cache['string'][$name]);
}
if(trim($TMPL->tagdata) == "") {
return $value;
} else {
$vars = $SESS->cache['string'];
$vars['string'] = $value;
$tagdata = $FNS->prep_conditionals($TMPL->tagdata, $vars);
foreach($vars as $k=>$v) {
$tagdata = $TMPL->swap_var_single($k, $v, $tagdata);
}
return $tagdata;
}
}
function _get_params() {
global $TMPL;
$ret = array();
$ret['text'] = false;
$ret['name'] = $TMPL->fetch_param('name') ? $TMPL->fetch_param('name') : false;
$ret['sep'] = $TMPL->fetch_param('separator') ? $TMPL->fetch_param('separator') : "";
$ret['glue'] = $TMPL->fetch_param('glue') ? $TMPL->fetch_param('glue') : "SPACE";
if($TMPL->tagdata) {
$ret['text'] = trim($TMPL->tagdata);
} else if($TMPL->fetch_param('text')) {
$ret['text'] = trim($TMPL->fetch_param('text'));
} else if($TMPL->fetch_param('default')) {
$ret['text'] = trim($TMPL->fetch_param('default'));
}
if(!$ret['name'] || !$ret['text']) {
return false;
}
switch($ret['sep']) {
case "SPACE" : $ret['sep'] = " "; break;
case "TAB" : $ret['sep'] = "\t"; break;
case "NEWLINE" : $ret['sep'] = "\n"; break;
case "NONE" : $ret['sep'] = ""; break;
}
switch($ret['glue']) {
case "SPACE" : $ret['glue'] = " "; break;
case "TAB" : $ret['glue'] = "\t"; break;
case "NEWLINE" : $ret['glue'] = "\n"; break;
case "NONE" : $ret['glue'] = ""; break;
}
return $ret;
}
function usage() {
ob_start();
?>See http://www.south.com/add-ons/string-plugin/ for documentation.<?php
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
}
?>