Need

I needed to use the email address of the current user to fill out a form field. (long story as to why)

Explanation

There exist some Wiki Argument Variables that allow one to use some variables that are part of the tiki current instance. For example {{user}} will display the userid of the current user: . My first idea was to implement the same thing for to display the email id of the current user.

It is generally considered a bad idea to insert email addresses into wiki or web pages as spammers can scrape and use them. I believe this is why the idea is frowned upon. So thanks to Jonny's suggestion I came up with the following solution instead.

Method

  1. Add the following custom.php to your tiki language directory, mine is in lang/en/ or lang/en-uk/
    Copy to clipboard
    <?php // custom.php pmc 2011/05/11 global $user; if (!empty($user)) { global $userlib, $smarty; $email=$userlib->get_user_email($user); //create smarty variable assign it the value of the current user's email address $smarty->assign('curremail', $email); }
  2. To use the smarty variable
    1. using Smarty plugin
      Copy to clipboard
      {SMARTY(name=>eval, var=>"{$curremail}")}{SMARTY}
    2. used in a smarty template
      Copy to clipboard
      email id is {$curremail}

Example

This is how I used it via smarty plugin and div plugin and jquery plugin to pre-fill an html form field which is within html plugin. It is shown here in three parts that must be within the same page. Extraneous information has been removed &/or replaced with blah or ....

  • html <form>
    {CODE(colors=bash)}

{HTML()}
<form method="post" action="http://blahblah...">
Your E-mail address: <input type="text" name="email" size="30" , id=emailid>
...
</form>
{HTML()}
{CODE}

  • retrieve field value, assign it an id for use in jquery
    Copy to clipboard
    {DIV(class=hidden, id=emailactual)} {SMARTY(name=>eval, var=>"{$curremail}")}{SMARTY} {DIV}
  • insert the field value in the form
    Copy to clipboard
    {JQ()} if (!$jq("#emailid").val()) { $jq("#emailid").val($("#emailactual").text()); } {JQ}