Hi Jules/Everyone,<br><br>As a follow-up to my earlier question about changing a user&#39;s Zendto email address, I modified a copy of one of the existing apps to create changeemail.php and added a small section to SQLite.php to support it as below. I&#39;m not using MySQL so I didn&#39;t amend its PHP function library.<br>
<br>Comments or thoughts?<br><br>Cheers,<br><br>Nigel<br><br>:<br><br>/opt/zendto/bin/changeemail.php<br><br>#!/usr/bin/php<br>&lt;?PHP<br><br>if (count($argv)==3 &amp;&amp; getenv(&#39;ZENDTOPREFS&#39;)) {<br>  array_splice($argv, 1, 0, getenv(&#39;ZENDTOPREFS&#39;));<br>
}<br><br>if ( count($argv) != 4 ) {<br>  $prefs=getenv(&#39;ZENDTOPREFS&#39;);<br>  if ($prefs==&#39;&#39;) {<br>    printf(&quot;<br>  usage:<br><br>     %s &#39;&lt;username&gt;&#39; &#39;&lt;email_address&gt;&#39;<br><br>
   The ZendTo preferences.php file path should be canonical, not relative.<br>   (It must start with a \&quot;/\&quot;)<br>   Alternatively, do<br>     export ZENDTOPREFS=&lt;full file path of preferences.php&gt;<br>     %s &#39;&lt;username&gt;&#39; &#39;&lt;email_address&gt;&#39;<br>
<br>&quot;,$argv[0],$argv[0]);<br>  } else {<br>    printf(&quot;<br>  usage:<br><br>   %s &#39;&lt;username&gt;&#39; &#39;&lt;email_address&gt;&#39;<br><br>   The ZendTo preferences.php file path is pointed to by the environment<br>
   variable ZENDTOPREFS, which is currently set to<br>   %s<br><br>&quot;,$argv[0],$prefs);<br>  }<br>  return 0;<br>}<br><br>if ( ! preg_match(&#39;/^\/.+/&#39;,$argv[1]) ) {<br>  echo &quot;ERROR:  You must provide a canonical path to the preference file.\n&quot;;<br>
  return 1;<br>}<br><br>include $argv[1];<br>require_once(NSSDROPBOX_LIB_DIR.&quot;Smartyconf.php&quot;);<br>include_once(NSSDROPBOX_LIB_DIR.&quot;NSSDropoff.php&quot;);<br><br>if ( $theDropbox = new NSSDropbox($NSSDROPBOX_PREFS, FALSE, TRUE) ) {<br>
  $username = $argv[2];<br>  $emailaddr = $argv[3];<br><br>  $result = $theDropbox-&gt;database-&gt;DBUpdatePasswordLocalUser($username,<br>                                                             $emailaddr);<br><br>
  if ($result == &#39;&#39;) {<br>    $emprint = $emailaddr;<br>    if ($emailaddr == &#39;&#39;) {<br>      $emprint = &#39;WARNING: No email address!&#39;;<br>    }<br>    printf(&quot;Username  : $username\n&quot;);<br>
    printf(&quot;Email addr: $emprint\n&quot;);<br>    return 0;<br>  } else {<br>    printf(&quot;Failed: $result\n&quot;);<br>    return 1;<br>  }<br>}<br><br>?&gt;<br><br><br><br>Added to SQLite.php:<br><br>// Update an existing user&#39;s email address<br>
// Returns &#39;&#39; on success.<br><br>public function DBUpdateEmailAddressLocalUser ( $username, $emailaddr ) {<br>  if (!$this-&gt;DBReadLocalUser($username)) {<br>    return &quot;Aborting updating user $username as that user does not exist&quot;;<br>
  }<br><br>  $query = sprintf(&quot;UPDATE usertable<br>                    SET mail=&#39;%s&#39;<br>                    WHERE username=&#39;%s&#39;&quot;,<br>                    sqlite_escape_string($emailaddr),<br>                    sqlite_escape_string($username));<br>
  if (!$this-&gt;database-&gt;queryExec($query)) {<br>    return &quot;Failed to update email address for user $username&quot;;<br>  }<br>  return &#39;&#39;;<br>}<br><br><br>