Hi Jules/Everyone,<br><br>As a follow-up to my earlier question about changing a user'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'm not using MySQL so I didn'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><?PHP<br><br>if (count($argv)==3 && getenv('ZENDTOPREFS')) {<br> array_splice($argv, 1, 0, getenv('ZENDTOPREFS'));<br>
}<br><br>if ( count($argv) != 4 ) {<br> $prefs=getenv('ZENDTOPREFS');<br> if ($prefs=='') {<br> printf("<br> usage:<br><br> %s '<username>' '<email_address>'<br><br>
The ZendTo preferences.php file path should be canonical, not relative.<br> (It must start with a \"/\")<br> Alternatively, do<br> export ZENDTOPREFS=<full file path of preferences.php><br> %s '<username>' '<email_address>'<br>
<br>",$argv[0],$argv[0]);<br> } else {<br> printf("<br> usage:<br><br> %s '<username>' '<email_address>'<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>",$argv[0],$prefs);<br> }<br> return 0;<br>}<br><br>if ( ! preg_match('/^\/.+/',$argv[1]) ) {<br> echo "ERROR: You must provide a canonical path to the preference file.\n";<br>
return 1;<br>}<br><br>include $argv[1];<br>require_once(NSSDROPBOX_LIB_DIR."Smartyconf.php");<br>include_once(NSSDROPBOX_LIB_DIR."NSSDropoff.php");<br><br>if ( $theDropbox = new NSSDropbox($NSSDROPBOX_PREFS, FALSE, TRUE) ) {<br>
$username = $argv[2];<br> $emailaddr = $argv[3];<br><br> $result = $theDropbox->database->DBUpdatePasswordLocalUser($username,<br> $emailaddr);<br><br>
if ($result == '') {<br> $emprint = $emailaddr;<br> if ($emailaddr == '') {<br> $emprint = 'WARNING: No email address!';<br> }<br> printf("Username : $username\n");<br>
printf("Email addr: $emprint\n");<br> return 0;<br> } else {<br> printf("Failed: $result\n");<br> return 1;<br> }<br>}<br><br>?><br><br><br><br>Added to SQLite.php:<br><br>// Update an existing user's email address<br>
// Returns '' on success.<br><br>public function DBUpdateEmailAddressLocalUser ( $username, $emailaddr ) {<br> if (!$this->DBReadLocalUser($username)) {<br> return "Aborting updating user $username as that user does not exist";<br>
}<br><br> $query = sprintf("UPDATE usertable<br> SET mail='%s'<br> WHERE username='%s'",<br> sqlite_escape_string($emailaddr),<br> sqlite_escape_string($username));<br>
if (!$this->database->queryExec($query)) {<br> return "Failed to update email address for user $username";<br> }<br> return '';<br>}<br><br><br>