* @license http://www.gnu.org/licenses/gpl.html GNU General Public License */ # Action for activating this recipe $HandleActions['data'] = 'Data'; # Function called by action = data function Data() { global $WorkDir, $pagename, $MessagesFmt; $nextpage = $pagename; $datapage = "Data-$pagename"; $datamembers = "Data-Member"; foreach ($_POST as $field => $value) { switch ($field) { case "NextPage" : $nextpage=FmtPageName($value, $pagename); break; case "DataPage" : if (substr($value, 0, 4) == "Data") { $datapage=FmtPageName($value, $pagename); } break; case "Check" : if ($value=="") { $MessagesFmt[] = "
$[No member name entered. Please try again:]
"; HandleBrowse($pagename); return; } if($value!=PageVar(MakePageName($pagename, $value), '$Name')) { $MessagesFmt[] = "
$[Invalid member name. Please try again:]
"; HandleBrowse($pagename); return; } if (PageExists("$datamembers.$value")) { $MessagesFmt[] = "
$[Member name already taken. Please try again:]
"; HandleBrowse($pagename); return; } $nextpage=FmtPageName("$nextpage?myname=$value", $pagename); break; case "Login" : if (($value == "auto") and (! PageExists("$datamembers.$_POST[Member]"))) { AuthUserId($pagename, $_POST['Member']); break; } if ($dr = fopen("$WorkDir/$datamembers.$_POST[Member]", "rb")){ $pc = fread($dr, filesize("$WorkDir/$datamembers.$_POST[Member]")); fclose($dr); $dc = explode("(:comment data:) %0a%0a", $pc); $db = explode(" %0a%0a", $dc[1]); $dv = explode ("=", $db[1]); $pass1 = substr(urlencode(stripslashes($dv[1])),3,-3); $pass2 = $_POST['Password']; if ($pass1 == $pass2) { AuthUserId($pagename, $_POST['Member']); break; } $MessagesFmt[] = "
$[Incorrect member name or password:]
"; HandleBrowse($pagename); return; } break; case "SaveData" : $data = ''; $d = explode(",", $value); foreach ($d as $f => $v) { $data .= "$v=\"$_POST[$v]\" %0a%0a"; } $data = "version=pmwiki-2.1.11 ordered=1 urlencoded=1 text=(:comment data:) %0a%0a" . $data . "(:comment data:) %0a%0a "; if ($ds = fopen("$WorkDir/$datapage", "wb")){ fwrite($ds,"$data"); fclose($ds); PageIndexUpdate("$datapage"); } break; case "EmailData" : $data = ''; if ($_POST[EmailTo] == "") { $MessagesFmt[] = "
$[To email address required. Mail not sent.]
"; HandleBrowse($pagename); return; } if ($_POST[EmailFrom] == "") { $MessagesFmt[] = "
$[From email address required. Mail not sent.]
"; HandleBrowse($pagename); return; } if ($_POST[Subject] == "") { $MessagesFmt[] = "
$[Subject required. Mail not sent:]
"; HandleBrowse($pagename); return; } $d = explode(",", $value); foreach ($d as $f => $v) { $data .= "$_POST[$v] "; } if ($data == "") { $MessagesFmt[] = "
$[The message has no content. Mail not sent:]
"; HandleBrowse($pagename); return; } mail($_POST[EmailTo], $_POST[Subject], $data, "From: $_POST[EmailFrom]"); break; } } Redirect(FmtPageName($nextpage, $pagename)); } # Directive to retrieve data from another page Markup('fastdata', '<{$var}', '/\(:data(.*?):\)/ei', "ReadData('$1')"); # Function called by directive to retrieve form data function ReadData($l) { global $WorkDir, $FmtPV, $pagename; $datapage = substr($l, 1); if (substr($datapage, -1, 1) == "*") { $name = explode(".", $pagename); $datapage = substr($datapage,0,strlen($datapage)-1) . $name[1]; } if (substr($datapage, 0, 4) != "Data") { return "invalid data parameter"; } clearstatcache(); if ($dr = fopen("$WorkDir/$datapage", "rb")){ $pc = fread($dr, filesize("$WorkDir/$datapage")); fclose($dr); $dc = explode("(:comment data:) %0a%0a", $pc); $db = explode(" %0a%0a", $dc[1]); $i = 0; while ($i < count($db)-1) { $dv = explode ("=", $db[$i]); $FmtPV["$$dv[0]"] = stripslashes("$dv[1]"); $i = $i + 1; } return; } return "data not found"; } # Markups for pull down menu's Markup('select', 'inline', '/\(:select (.*?):\\)/', '');