00001 <?php
00002 if(!defined('__PRAGYAN_CMS'))
00003 {
00004 header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
00005 echo "<h1>403 Forbidden<h1><h4>You are not authorized to access the page.</h4>";
00006 echo '<hr/>'.$_SERVER['SERVER_SIGNATURE'];
00007 exit(1);
00008 }
00030 function generateRegistrationForm($moduleCompId,$userId,$action="", $disableCaptcha = false) {
00031 if($action != '')
00032 $userId = getUserIdFromEmail(escape($_GET['useremail']));
00033 else
00034 $action = './+view';
00035
00036 if(!isset($userId)) {
00037 displayerror('Could not load information for user with e-mail address ' . safe_html(escape($_GET['useremail'])));
00038 return '';
00039 }
00040
00042 global $cmsFolder;
00043 global $moduleFolder;
00044 global $urlRequestRoot;
00045 $jsPath2 = "$urlRequestRoot/$cmsFolder/$moduleFolder/form/validation.js";
00046 $jsPath = "$urlRequestRoot/$cmsFolder/templates/common/scripts/formValidator.js";
00047 $calpath = "$urlRequestRoot/$cmsFolder/$moduleFolder";
00048 $jsPathMooTools = "$urlRequestRoot/$cmsFolder/templates/common/scripts/mootools-1.11-allCompressed.js";
00049 $body = '<script language="javascript" type="text/javascript" src="'.$jsPath2.'"></script>';
00050
00051
00053 $jsValidationFunctions = array();
00054 $containsFileUploadFields = false;
00055 $formElements = getFormElementsHtmlAsArray($moduleCompId, $userId, $jsValidationFunctions, $containsFileUploadFields);
00056
00057 $jsValidationFunctions = join($jsValidationFunctions, ' && ');
00058
00059 $body .= '<link rel="stylesheet" type="text/css" media="all" href="'.$calpath.'/form/calendar/calendar.css" title="Aqua" />' .
00060 '<script type="text/javascript" src="'.$calpath.'/form/calendar/calendar.js"></script>';
00061 $body .= '<br /><br /><div class="registrationform"><form class="fValidator-form" action="'.$action.'" method="post"';
00062 if($containsFileUploadFields)
00063 $body .= ' enctype="multipart/form-data"';
00064 $body .= '>';
00065
00067 $formQuery = 'SELECT `form_heading`, `form_headertext`, `form_footertext`, `form_usecaptcha` FROM `form_desc` WHERE ' .
00068 "`page_modulecomponentid` = $moduleCompId";
00069 $formResult = mysql_query($formQuery);
00070 if(!$formResult) { displayerror('E52 : Invalid query: ' . mysql_error()); return false; }
00071 if($formRow = mysql_fetch_assoc($formResult)) {
00072 $body .= '<fieldset><legend>' . $formRow['form_heading'] . '</legend><br />' . $formRow['form_headertext'] . '<br />';
00073 }
00074 else {
00075 displayerror('Could not load form data.');
00076 return '';
00077 }
00078
00079 $body .= "\n<table cellspacing=\"8px\"><tr>";
00080 $body .= join($formElements, "</tr>\n<tr>") . '</tr>';
00081
00082 if(!$disableCaptcha && $formRow['form_usecaptcha'] == 1)
00083 $body .= getCaptchaHtml();
00084
00085 $body .= '<tr>'.
00086 '<td colspan="2">* - Required Fields </td>'.
00087 '</tr></table></fieldset>' .
00088 '<br /><input type="submit" name="submitreg_form_'.$moduleCompId.'" value="Submit" />' .
00089 '<br /><br />' . $formRow['form_footertext'] .
00090 '</form></div>';
00091
00092 $body .= <<<SCRIPT
00093 <script language="javascript" type="text/javascript">
00094 <!--
00095 function validate_form(thisform) {
00096 return ($jsValidationFunctions);
00097 }
00098 -->
00099 </script>
00100 SCRIPT;
00101
00102 return $body;
00103 }
00104
00105 function getCaptchaHtml() {
00106 global $uploadFolder, $sourceFolder, $moduleFolder, $cmsFolder, $urlRequestRoot;
00107 $captcha_query = "SELECT * FROM `". MYSQL_DATABASE_PREFIX."global` WHERE `attribute` = 'recaptcha'";
00108 $captcha_res = mysql_fetch_assoc(mysql_query($captcha_query));
00109 $recaptcha =0;
00110 if($captcha_res['value'])
00111 {
00112 if(!fsockopen("www.google.com",80))
00113 $recaptcha = 0;
00114 else {
00115 $recaptcha =1;
00116 $query = "SELECT `value` FROM `". MYSQL_DATABASE_PREFIX ."global` WHERE `attribute`='recaptcha_public'";
00117 $res = mysql_fetch_assoc(mysql_query($query));
00118 $public_key = $res['value'];
00119 $query = "SELECT `value` FROM `". MYSQL_DATABASE_PREFIX ."global` WHERE `attribute`='recaptcha_private'";
00120 $res = mysql_fetch_assoc(mysql_query($query));
00121 $private_key = $res['value'];
00122 if(($public_key==NULL)||($private_key==NULL))
00123 $recaptcha = 0;
00124 }
00125 }
00126 if($recaptcha)
00127 {
00128 require_once("$sourceFolder/$moduleFolder/form/captcha/recaptcha/recaptchalib.php");
00129 $body = "<tr><td colspan=2>".recaptcha_get_html($public_key)."</td></tr>";
00130 $body .="<input type='hidden' name='captcha' value='1'>";
00131 }
00132 else
00133 {
00134 require_once("$sourceFolder/$moduleFolder/form/captcha/class/captcha.class.php");
00135 $captcha = new captcha($sourceFolder, $moduleFolder, $uploadFolder, $urlRequestRoot,$cmsFolder,6);
00136 $_SESSION['CAPTCHAString'] = $captcha->getCaptchaString();
00137
00138 $body = '<tr><td>Enter the text as shown in the image :</td><td>' .
00139 '<img style="border:1px solid;padding:0px" src="' . $captcha->getCaptchaUrl() . '" alt="CAPTCHA" border="1"/><br/>' .
00140 '<input type="text" class="required" name="txtCaptcha" /><td></tr>';
00141 $body .="<input type='hidden' name='captcha' value='0'>";
00142 }
00143 return $body;
00144 }
00145
00146 function getFormElementsHtmlAsArray($moduleCompId, $userId, &$jsValidationFunctions, &$containsFileUploadFields) {
00150 $containsFileUploadFields = false;
00151 $formValues = array();
00152 if(verifyUserRegistered($moduleCompId,$userId)) {
00153 $dataQuery = 'SELECT `form_elementid`, `form_elementdata` FROM `form_elementdata` WHERE ' .
00154 "`page_modulecomponentid` = $moduleCompId AND `user_id` = $userId";
00155 $dataResult = mysql_query($dataQuery);
00156
00157 if(!$dataResult) { displayerror('E35 : Invalid query: ' . mysql_error()); return false; }
00158 while($dataRow = mysql_fetch_assoc($dataResult)) {
00159
00160 $formValues[$dataRow['form_elementid']] = $dataRow['form_elementdata'];
00161 }
00162 }
00163 else {
00164 $dataQuery = 'SELECT `form_elementid`, `form_elementdefaultvalue` FROM `form_elementdesc` WHERE ' .
00165 "`page_modulecomponentid` = $moduleCompId";
00166 $dataResult = mysql_query($dataQuery);
00167
00168 if(!$dataResult) { displayerror('E132 : Invalid query: ' . mysql_error()); return false; }
00169 while($dataRow = mysql_fetch_assoc($dataResult)) {
00170
00171 $formValues[$dataRow['form_elementid']] = $dataRow['form_elementdefaultvalue'];
00172 }
00173 }
00174
00175 $elementQuery = 'SELECT `form_elementid`, `form_elementtype` FROM `form_elementdesc` WHERE ' .
00176 "`page_modulecomponentid` = $moduleCompId ORDER BY `form_elementrank`";
00177 $elementResult = mysql_query($elementQuery);
00178 $formElements = array();
00179 $jsValidationFunctions = array();
00180
00181 while($elementRow = mysql_fetch_row($elementResult)) {
00182 $jsOutput = '';
00183 if($elementRow[1] == 'file') {
00184 $containsFileUploadFields = true;
00185 }
00186
00187 $formElements[] =
00188 getFormElementInputField
00189 (
00190 $moduleCompId, $elementRow[0],
00191 isset($formValues[$elementRow[0]]) ? $formValues[$elementRow[0]] : '', $jsOutput
00192 );
00193 if($jsOutput != '') {
00194 $jsValidationFunctions[] = $jsOutput;
00195 }
00196 }
00197
00198 return $formElements;
00199 }
00200
00201 function getFormElementInputField($moduleComponentId, $elementId, $value="", &$javascriptCheckFunctions) {
00202 $elementQuery = "SELECT * FROM `form_elementdesc` WHERE `page_modulecomponentid` = " .
00203 "$moduleComponentId AND `form_elementid` = $elementId";
00204 $elementResult = mysql_query($elementQuery);
00205
00206 if($elementResult && $elementRow = mysql_fetch_assoc($elementResult)) {
00207 $htmlOutput = '<td>' . $elementRow['form_elementdisplaytext'];
00208 $jsOutput = array();
00209
00210 $elementHelpName = $elementRow['form_elementname'];
00211 $elementType = $elementRow['form_elementtype'];
00212 $elementTooltip = htmlentities($elementRow['form_elementtooltiptext']);
00213 $elementSize = $elementRow['form_elementsize'];
00214 $elementTypeOptions = $elementRow['form_elementtypeoptions'];
00215 $elementMoreThan = $elementRow['form_elementmorethan'];
00216 $elementLessThan = $elementRow['form_elementlessthan'];
00217 $isRequired = $elementRow['form_elementisrequired'];
00218 $elementCheckInt = ($elementRow['form_elementcheckint'])==1?true:false;
00219
00220 $elementName = 'form_' . $moduleComponentId . '_element_' . $elementId;
00221
00222 if($elementRow['form_elementisrequired'] != 0 && ucfirst(strtolower($elementType)) != "Checkbox") {
00223 $jsOutput[] = "isFilled('$elementName', '$elementHelpName')";
00224 }
00225
00226 if($isRequired)
00227 $htmlOutput .= '*';
00228 $htmlOutput .='</td><td>';
00229 $functionName = "getFormElement".ucfirst(strtolower($elementType));
00230 if($functionName($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,$jsOutput,$htmlOutput)==false)
00231 displayerror("Unable to run function ".$functionName);
00232 }
00233
00234 $jsOutput = join($jsOutput, ' && ');
00235 $javascriptCheckFunctions = $jsOutput;
00236
00237 return $htmlOutput . "</td>\n";
00238 }
00239
00240
00242 function getFormElementTextarea($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput){
00243 $validCheck='';
00244 if($isRequired)
00245 $validCheck=" class=\"required\"";
00246
00247 if(is_numeric($elementSize) && $elementSize > 0) {
00248 $i = $elementSize/5;
00249 $cols = (($i>20)?($i<34?$i:30):20);
00250 $rows = (($cols==20)?5:($cols>27?7:6));
00251 $sizeText = 'rows="'.$rows.'" cols="'.$cols.'"';
00252 }
00253 else
00254 $sizeText = 'rows="5" cols="20"';
00255 $htmlOutput .= '<textarea style="width:100%" '.$sizeText.' name="'.$elementName.'" id="'.$elementName.'" title="'.$elementTooltip."\"".$validCheck.'>' . $value . '</textarea>';
00256 return true;
00257 }
00259 function getFormElementPassword($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput){
00260
00261 $htmlOutput .= '<input type="password" id="'.$elementName.'" title="'.$elementTooltip.'" />' . $value ;
00262 return true;
00263 }
00265 function getFormElementSelect($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00266 {
00267 if($isRequired)
00268 $validCheck=" class=\"required\"";
00269 else $validCheck="";
00270
00271 $options = split('\|', $elementTypeOptions);
00272 $optionsHtml = '';
00273
00274 for($i = 0; $i < count($options); $i++) {
00275 if($options[$i] == $value) {
00276 $optionsHtml .= '<option value="'.$i.'" selected="selected" >' . $options[$i] . "</option>\n";
00277 }
00278 else {
00279 $optionsHtml .= '<option value="'.$i.'" >' . $options[$i] . "</option>\n";
00280 }
00281 }
00282
00283 $htmlOutput .= '<select name="'.$elementName.'" id="'.$elementName.'" title="'.$elementTooltip."\"".$validCheck.'>' . $optionsHtml . '</select>';
00284 return true;
00285 }
00286
00288 function getFormElementRadio($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00289 {
00290 if($isRequired)
00291 $validCheck=" class=\"required\"";
00292 else $validCheck="";
00293 $options = split('\|', $elementTypeOptions);
00294 $optionsHtml = '';
00295
00296 for($i = 0; $i < count($options); $i++) {
00297 $optionsHtml .= '<label><input type="radio" id="'.$elementName.'" name="'.$elementName.'" value="'.
00298 $i.'"';
00299
00300 if($options[$i] == $value) {
00301 $optionsHtml .= ' checked="checked"';
00302 }
00303
00304 $optionsHtml .= $validCheck.'/>'.$options[$i].'</label> ';
00305 }
00306
00307 $htmlOutput .= $optionsHtml;
00308 return true;
00309 }
00310
00312 function getFormElementCheckbox($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00313 {
00314 $options = split('\|', $elementTypeOptions);
00315
00316 $validCheck = "";
00317 if($isRequired)
00318 $jsOutput[] = "isChecked('$elementName','$elementHelpName',".count($options).")";
00319
00320
00321 $optionsHtml = '';
00322 $values=explode("|",$value);
00323 for($i = 0; $i < count($options); $i++) {
00324 $optionsHtml .= '<label><input type="checkbox" id="'.$elementName.'_'.$i.'" name="'.$elementName.'_'.$i.'" value="'.
00325 htmlentities($options[$i]).'"';
00326
00327 if(array_search($options[$i],$values)!==FALSE) {
00328 $optionsHtml .= ' checked="checked"';
00329 }
00330
00331 $optionsHtml .= $validCheck.' />'.$options[$i].'</label> ';
00332 }
00333
00334 $htmlOutput .= $optionsHtml;
00335 return true;
00336 }
00337
00339 function getFormElementFile($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00340 {
00341 if($isRequired && $value == '')
00342 $validCheck=" class=\"required\"";
00343 else
00344 $validCheck="";
00345
00346 global $sourceFolder;
00347 require_once("$sourceFolder/upload.lib.php");
00348 $htmlOutput .= getFileUploadField($elementName,"form", 2*1024*1024, $validCheck);
00349
00350 global $uploadFolder;
00351 if($value != '') {
00352 $htmlOutput .= '<br />(Leave blank to keep current file : <a href="./' . $value . '">'.$value.'</a>)';
00353 }
00354
00355 return true;
00356 }
00357
00359 function getFormElementText($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00360 {
00361 if($isRequired)
00362 $validCheck=" class=\"required\"";
00363 else $validCheck="";
00364 if($elementCheckInt)
00365 {
00366 if($validCheck!="")
00367 $validCheck=" class=\"required numeric\"";
00368 else
00369 $validCheck=" class=\"numeric\"";
00370
00371 if(!is_null($elementMoreThan) && $elementMoreThan!="")
00372 $validCheck .= ' min="' . ($elementMoreThan + 1) . '"';
00373 if(!is_null($elementLessThan) && $elementLessThan!="")
00374 $validCheck .= ' max="' . ($elementLessThan - 1) . '"';
00375 }
00376 if(is_numeric($elementSize) && $elementSize > 0) {
00377 $maxlength = $elementSize;
00378 if($elementSize > 30)
00379 $elementSize = 30;
00380 $sizeText = 'maxlength="'.$maxlength.'" size="'.$elementSize.'"';
00381 }
00382 else
00383 $sizeText = "";
00384 $htmlOutput .= '<input type="text" '.$sizeText.' name="'.$elementName.'" id="'.$elementName.'" value="'.$value.'" ' .
00385 'title="'.$elementTooltip."\"".$validCheck.' />';
00386 return true;
00387 }
00388
00390 function getFormElementDate($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput)
00391 {
00392 return getFormElementDatetime($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,$jsOutput,$htmlOutput,"date");
00393 }
00394 function getFormElementDatetime($elementName,$value,$isRequired,$elementHelpName,$elementTooltip,$elementSize,$elementTypeOptions,$elementMoreThan,$elementLessThan,$elementCheckInt,&$jsOutput,&$htmlOutput,$type="datetime")
00395 {
00396 $datetimeFormat = ($type == 'date' ? "'%Y-%m-%d'" : "'%Y-%m-%d %H:%M'");
00397
00398 if($isRequired)
00399 $validCheck=' class="required"';
00400 else
00401 $validCheck="";
00402
00403 $validCheck .= ' dateformat="' . ($type == 'date' ? 'YY-MM-DD' : 'YY-MM-DD hh:mm') . '"';
00404
00405 if(!is_null($elementMoreThan) && $elementMoreThan != '') {
00406 $jsOutput[] = "checkLBDate('$elementName', '$elementMoreThan', $datetimeFormat, '$elementHelpName')";
00407 }
00408 if(!is_null($elementLessThan) && $elementLessThan != '') {
00409 $jsOutput[] = "checkUBDate('$elementName', '$elementLessThan', $datetimeFormat, '$elementHelpName')";
00410 }
00411
00412 $htmlOutput .= '<input type="text" '. $validCheck . ' name="'.$elementName.'" value="' . $value . '" id="'.$elementName.'" /><input name="cal'.$elementName.'" type="reset" value=" ... " onclick="return showCalendar(\'' . $elementName . '\', '.$datetimeFormat.', \'24\', true);" />';
00413 return true;
00414 }