_parse_attrs($params); $functionsPermitted = ['empty', '!empty', 'is_null', '!is_null', 'isset', '!isset', 'is_void']; // Functions permitted in "if" parameter. if (!isset($params['var'])) { $smarty->_syntax_error("set: missing 'var' parameter", E_USER_WARNING); return; } if (!empty($array)) { $params['value'] = $array; } if (!isset($params['value'])) { // Clean setting return "{$params['var']} = null;"; } elseif (isset($params['if'])) { // Setting with "if" parameter $params['if'] = substr($params['if'], 1, -1); if (in_array($params['if'], $functionsPermitted)) { if ($params['if'] == 'is_void') { // "is_void" command return "if (empty({$params['var']}) and ({$params['var']} !== 0) and ({$params['var']} !== '0')) {$params['var']} = {$params['value']};"; } // others commands return "if ({$params['if']}({$params['var']})) {$params['var']} = {$params['value']};"; } // "if" parameter not correct $smarty->_syntax_error("set: 'if' parameter not valid", E_USER_WARNING); return; } // normal setting return "{$params['var']} = {$params['value']};"; }