• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

cms/modules/form/editform.php

Go to the documentation of this file.
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 }
00016 //TODO : fix form upload bug where it screws up when multiple uploads are made.
00017 //TODO: write FormElement::toHtmlForm() and FormElement::fromHtmlForm() to suit needs
00018 //TODO : If the form is associated with a group, the form HAS to give the user the option to unregister from it.
00019 
00020         function generateFormDescBody($moduleCompId, $action = 'editform') {
00021                 global $cmsFolder,$sourceFolder;
00022                 global $templateFolder;global $moduleFolder;
00023                 global $urlRequestRoot;
00024                 $imagePath = "$urlRequestRoot/$cmsFolder/$templateFolder";$calpath="$urlRequestRoot/$cmsFolder/$moduleFolder";
00025 
00026                 require_once("$sourceFolder/group.lib.php");
00027                 $associatedGroupId = getGroupAssociatedWithForm($moduleCompId);
00028 
00030                 if(isset($_POST['submittedform_desc'])) {
00031                         $updates = array();
00032 
00033                         if(isset($_POST['txtFormHeading'])) {
00034                                 $updates[] = "`form_heading` = '".escape($_POST['txtFormHeading'])."'";
00035                         }
00036                         if(isset($_POST['optLoginRequired'])) {
00037                                 if($associatedGroupId > 0) {
00038                                         $updates[] = '`form_loginrequired` = 1';
00039                                         if($_POST['optLoginRequired'] != 'yes') {
00040                                                 displayerror('Error. You cannot allow anonymous users to register to this form because it is associated with a group.');
00041                                         }
00042                                 }
00043                                 else {
00044                                         $updates[] = '`form_loginrequired` = ' . ($_POST['optLoginRequired'] == 'yes' ? 1 : 0);
00045                                 }
00046                         }
00047                         if(isset($_POST['txtHeaderText'])) {
00048                                 $updates[] = "`form_headertext` = '".escape($_POST['txtHeaderText'])."'";
00049                         }
00050                         if(isset($_POST['txtFormExpiry'])) {
00051                                 $updates[] = "`form_expirydatetime` = '".escape($_POST['txtFormExpiry'])."'";
00052                         }
00053                         if(isset($_POST['optSendConfirmation'])) {
00054                                 $updates[] = '`form_sendconfirmation` = ' . ($_POST['optSendConfirmation'] == 'yes' ? 1 : 0);
00055                         }
00056                         if(isset($_POST['optUseCaptcha'])) {
00057                                 $updates[] = '`form_usecaptcha` = ' . ($_POST['optUseCaptcha'] == 'yes' ? 1 : 0);
00058                         }
00059                         if(isset($_POST['optUserEdit'])) {
00060                                 $updates[] = '`form_allowuseredit` = ' . ($_POST['optUserEdit'] == 'yes' ? 1 : 0);
00061                         }
00062                         if(isset($_POST['optUserUnregister'])) {
00063                                 if($associatedGroupId > 0) {
00064                                         $updates[] = '`form_allowuserunregister` = 1';
00065                                         if($_POST['optUserUnregister'] != 'yes') {
00066                                                 displayerror('Error. You cannot prevent a user from unregistering from this form because it is associated with a group.');
00067                                         }
00068                                 }
00069                                 else {
00070                                         $updates[] = '`form_allowuserunregister` = ' . ($_POST['optUserUnregister'] == 'yes' ? 1 : 0);
00071                                 }
00072                         }
00073                         if(isset($_POST['optUserEmail'])) {
00074                                 $updates[] = '`form_showuseremail` = ' . ($_POST['optUserEmail'] == 'yes' ? 1 : 0);
00075                         }
00076                         if(isset($_POST['optUserFullname'])) {
00077                                 $updates[] = '`form_showuserfullname` = ' . ($_POST['optUserFullname'] == 'yes' ? 1 : 0);
00078                         }
00079                         if(isset($_POST['optUserProfiledata'])) {
00080                                 $updates[] = '`form_showuserprofiledata` = ' . ($_POST['optUserProfiledata'] == 'yes' ? 1 : 0);
00081                         }
00082                         if(isset($_POST['optRegDate'])) {
00083                                 $updates[] = '`form_showregistrationdate` = ' . ($_POST['optRegDate'] == 'yes' ? 1 : 0);
00084                         }
00085                         if(isset($_POST['optLastUpdate'])) {
00086                                 $updates[] = '`form_showlastupdatedate` = ' . ($_POST['optLastUpdate'] == 'yes' ? 1 : 0);
00087                         }
00088                         if(isset($_POST['txtFooterText'])) {
00089                                 $updates[] = "`form_footertext` = '".escape($_POST['txtFooterText'])."'";
00090                         }
00091                         if(count($updates) > 0) {
00092                                 $updateQuery = 'UPDATE `form_desc` SET ' . join($updates, ', ') .
00093                                                ' WHERE `page_modulecomponentid` = ' . $moduleCompId;
00094                                 if(mysql_query($updateQuery)) {
00095                                         displayinfo("All changes in the form have been successfully saved!");
00096 
00097                                 }
00098                                 else {
00099                                         displayerror('Some errors were encountered while trying to save changes.<br />' .
00100                                                 'The changes may not have been completely saved.');
00101 
00102                                 }
00103                         }
00104                 }
00105 
00107                 $formQuery = 'SELECT page_modulecomponentid, form_heading, form_loginrequired, form_headertext, form_footertext, ' .
00108                                 'form_expirydatetime, form_sendconfirmation, form_usecaptcha, form_allowuseredit, '. 
00109                                 'form_allowuserunregister,form_showuseremail, form_showuserfullname, form_showuserprofiledata, '. 
00110                                 'form_showregistrationdate, form_showlastupdatedate ' .
00111                                 'FROM `form_desc` WHERE `page_modulecomponentid` = ' . $moduleCompId;
00112                 $formResult = mysql_query($formQuery);
00113 
00114                 $userEdit = $formHeading = $headerText = $expiryDate = $requireLogin =
00115                 $sendConfirmation = $useCaptcha = $userProfiledata = $userEmail = $userUnregister = 
00116                 $userFullname = $regDate = $lastUpdate = $footerText = '';
00117 
00118                 if($formResult) {
00119                         if($formResultRow = mysql_fetch_assoc($formResult)) {
00120                                 $formHeading = $formResultRow['form_heading'];
00121                                 $requireLogin = $formResultRow['form_loginrequired'] ? 'checked="checked"' : '';
00122                                 $headerText = $formResultRow['form_headertext'];
00123                                 $expiryDate = $formResultRow['form_expirydatetime'];
00124                                 $sendConfirmation = $formResultRow['form_sendconfirmation'] ? 'checked="checked"' : '';
00125                                 $useCaptcha = $formResultRow['form_usecaptcha'] ? 'checked="checked"' : '';
00126                                 $userEdit = $formResultRow['form_allowuseredit'] ? 'checked="checked"' : '';
00127                                 $userUnregister = $formResultRow['form_allowuserunregister'] ? 'checked="checked"' : '';
00128                                 $userEmail = $formResultRow['form_showuseremail'] ? 'checked="checked"' : '';
00129                                 $userFullname = $formResultRow['form_showuserfullname'] ? 'checked="checked"' : '';
00130                                 $userProfiledata = $formResultRow['form_showuserprofiledata'] ? 'checked="checked"' : '';
00131                                 $regDate = $formResultRow['form_showregistrationdate'] ? 'checked="checked"' : '';
00132                                 $lastUpdate = $formResultRow['form_showlastupdatedate'] ? 'checked="checked"' : '';
00133                                 $footerText = $formResultRow['form_footertext'];
00134                         }
00135                 }
00136 
00137                 $requireLoginN = $requireLogin == '' ? 'checked="checked"' : '';
00138                 $sendConfirmationN = $sendConfirmation == '' ? 'checked="checked"' : '';
00139                 $useCaptchaN = $useCaptcha == '' ? 'checked="checked"' : '';
00140                 $userEditN = $userEdit == '' ? 'checked="checked"' : '';
00141                 $userUnregisterN = $userUnregister == '' ? 'checked="checked"' : '';
00142                 $userEmailN = $userEmail == '' ? 'checked="checked"' : '';
00143                 $userFullnameN = $userFullname == '' ? 'checked="checked"' : '';
00144                 $userProfiledataN = $userProfiledata == '' ? 'checked="checked"' : '';
00145                 $regDateN = $regDate == '' ? 'checked="checked"' : '';
00146                 $lastUpdateN = $lastUpdate == '' ? 'checked="checked"' : '';
00147 
00148                 $disableBecauseAssociated = '';
00149                 if($associatedGroupId > 0) {
00150                         $requireLogin = $userUnregister = 'checked="checked"';
00151                         $requireLoginN = $userUnregisterN = '';
00152                         $disableBecauseAssociated = 'disabled="disabled"';
00153                 }
00154 
00156                 $formDescBody =<<<BODY
00157 
00158                 <link rel="stylesheet" type="text/css" media="all" href="$calpath/form/calendar/calendar.css" title="Aqua" />
00159                 <script type="text/javascript" src="$calpath/form/calendar/calendar.js"></script>
00160 
00161                 <form id="formdetails" action="./+$action" method="post">
00162                         <table width="100%" cellpadding="1" cellspacing="1" border="1">
00163                                 <tr>
00164                                         <td width="20%">Form Heading:</td><td><input type="text" name="txtFormHeading" value="$formHeading" onblur=check(this); /></td>
00165                                         
00166                                         <script type=text/javascript>
00167                                                         function check(field) {
00168                                                                 val = field.value;
00169                                                                 if(field.value.length == 0) {
00170                                                                 
00171                                                                         alert("Enter a Form name");
00172                                                                         field.focus();
00173                                                                 
00174                                                                 }
00175                                                         }
00176                                                 </script>
00177                                 </tr>
00178                                 <tr>
00179                                         <td>Require Login?</td>
00180                                         <td>
00181                                                 <label><input type="radio" name="optLoginRequired" value="yes" $requireLogin $disableBecauseAssociated />Yes</label>
00182                                                 <label><input type="radio" name="optLoginRequired" value="no" $requireLoginN $disableBecauseAssociated />No</label>
00183                                         </td>
00184                                 </tr>
00185                                 <tr>
00186                                         <td>Form Header:</td>
00187                                         <td>
00188                                                 <textarea style="width:98%"  name="txtHeaderText" rows="10" cols="60">$headerText</textarea>
00189                                         </td>
00190                                 </tr>
00191 
00192                                 <tr>
00193                                         <td>Expiry Date (YYYY-MM-DD 24Hrs clock): (blank to disable)</td><td> <input type="text" name="txtFormExpiry" id="sel1" size="25" value="$expiryDate" /><input type="reset" value=" ... " onclick="return showCalendar('sel1', '%Y-%m-%d %H:%M', '24', true);" /></td>
00194                                 </tr>
00195 
00196                                 <tr>
00197                                         <td>Send Confirmation?</td>
00198                                         <td>
00199                                                 <label><input type="radio" name="optSendConfirmation" value="yes" $sendConfirmation />Yes</label>
00200                                                 <label><input type="radio" name="optSendConfirmation" value="no" $sendConfirmationN />No</label>
00201                                         </td>
00202                                 </tr>
00203                                 <tr>
00204                                         <td>Use CAPTCHA Validation?</td>
00205                                         <td>
00206                                                 <label><input type="radio" name="optUseCaptcha" value="yes" $useCaptcha />Yes</label>
00207                                                 <label><input type="radio" name="optUseCaptcha" value="no" $useCaptchaN />No</label>
00208                                         </td>
00209                                 </tr>
00210                                 <tr>
00211                                         <td>Allow user to edit his entries again once registered?</td>
00212                                         <td>
00213                                                 <label><input type="radio" name="optUserEdit" value="yes" $userEdit />Yes</label>
00214                                                 <label><input type="radio" name="optUserEdit" value="no" $userEditN />No</label>
00215                                         </td>
00216                                 </tr>
00217                                 <tr>
00218                                         <td>Give the user the option to unregister?</td>
00219                                         <td>
00220                                                 <label><input type="radio" name="optUserUnregister" value="yes" $userUnregister $disableBecauseAssociated />Yes</label>
00221                                                 <label><input type="radio" name="optUserUnregister" value="no" $userUnregisterN $disableBecauseAssociated />No</label>
00222                                         </td>
00223                                 </tr>
00224 
00225                                 <tr>
00226                                         <td>Form Footer:</td>
00227                                         <td>
00228                                                 <textarea style="width:98%" name="txtFooterText" rows="8" cols="60">$footerText</textarea>
00229                                         </td>
00230                                 </tr>
00231                                 <tr ><td colspan="2"><b>Settings for viewing registrants :</b> </td></tr>
00232                                  <tr>
00233                                         <td>Show user e-mail?</td>
00234                                         <td>
00235                                                 <label><input type="radio" name="optUserEmail" value="yes" $userEmail />Yes</label>
00236                                                 <label><input type="radio" name="optUserEmail" value="no" $userEmailN />No</label>
00237                                         </td>
00238                                 </tr>
00239                                 <tr>
00240                                         <td>Show user fullname?</td>
00241                                         <td>
00242                                                 <label><input type="radio" name="optUserFullname" value="yes" $userFullname />Yes</label>
00243                                                 <label><input type="radio" name="optUserFullname" value="no" $userFullnameN />No</label>
00244                                         </td>
00245                                 </tr>
00246                                 <tr>
00247                                         <td>Show user profile information?</td>
00248                                         <td>
00249                                                 <label><input type="radio" name="optUserProfiledata" value="yes" $userProfiledata />Yes</label>
00250                                                 <label><input type="radio" name="optUserProfiledata" value="no" $userProfiledataN />No</label>
00251                                         </td>
00252                                 </tr>
00253                                 <tr>
00254                                         <td>Show Registration Date?</td>
00255                                         <td>
00256                                                 <label><input type="radio" name="optRegDate" value="yes" $regDate />Yes</label>
00257                                                 <label><input type="radio" name="optRegDate" value="no" $regDateN />No</label>
00258                                         </td>
00259                                 </tr>
00260                                 <tr>
00261                                         <td>Show Last Update Date?</td>
00262                                         <td>
00263                                                 <label><input type="radio" name="optLastUpdate" value="yes" $lastUpdate />Yes</label>
00264                                                 <label><input type="radio" name="optLastUpdate" value="no" $lastUpdateN />No</label>
00265                                         </td>
00266                                 </tr>
00267                                 </table>
00268                         <input type="submit" name="submittedform_desc" value="Update Form" />
00269                 </form><br/>
00270 BODY;
00271                 return $formDescBody;
00272         }
00273 
00274 
00275 
00276         function generateFormElementDescBody($moduleCompId, $action = 'editform') {
00277                 global $sourceFolder,$cmsFolder;
00278                 global $templateFolder;global $moduleFolder;
00279                 global $urlRequestRoot;
00280                 $imagePath = "$urlRequestRoot/$cmsFolder/$templateFolder";$calpath="$urlRequestRoot/$cmsFolder/$moduleFolder";
00281 
00282                 $elementsQuery = "SELECT * FROM `form_elementdesc` WHERE `page_modulecomponentid` =  $moduleCompId ORDER BY `form_elementrank` ASC";
00283                 $elementsResult = mysql_query($elementsQuery) or die(mysql_error());
00284                 $elementData = '';
00285                 while($elementsRow = mysql_fetch_assoc($elementsResult)) {
00286                         $tmpElement = new FormElement();
00287                         $tmpElement->fromMysqlTableRow($elementsRow);
00288 
00289                         $elementData .= $tmpElement->toHtmlTableRow($imagePath, $action) . "\n";
00290                 }
00291                 $formElementDescBody =<<<BODY
00292                 <h2>Fields:</h2>
00293                 <form id="formentries" action="./+$action" method="POST">
00294                         <table cellpadding="1" cellspacing="1" border="1">
00295                                 <tr>
00296                                         <th>Actions</th>
00297                                         
00298                                         <th>Name</th>
00299                                         <th>Description</th>
00300                                         <th>Type</th>
00301                                         <th>Tooltip</th>
00302                                         <th>Other Information</th>
00303                                         <th title="Only in the case of radio, check or select element type">Extra options*</th>
00304                                 
00305                                 </tr>
00306                                         $elementData
00307                                 </tr>
00308                         </table>
00309 
00310                 <input type="submit" name="addformelement_descsubmit" value="Add Element">
00311 
00312                 </form>
00313 BODY;
00314                 return $formElementDescBody;
00315         }
00316 
00317 
00318         function moveFormElement($moduleCompId,$subaction,$elementId) {
00319                 if ($subaction=='moveDown') {
00320                         $compare = ">=";
00321                         $order = "ASC";
00322                 }
00323                 else if($subaction=='moveUp') {
00324                         $compare = "<=";
00325                         $order = "DESC";
00326                 }
00327 
00328 
00329 
00330                 $query = "SELECT * FROM `form_elementdesc` WHERE `form_elementrank` $compare(SELECT `form_elementrank` FROM `form_elementdesc` WHERE `page_modulecomponentid`=$moduleCompId AND `form_elementid`=$elementId) AND `page_modulecomponentid`=$moduleCompId AND `form_elementid`!='$elementId' ORDER BY `form_elementrank` $order LIMIT 0,1";
00331                 $result = mysql_query($query) or die(mysql_query());
00332                 if (mysql_num_rows($result) == 0) {
00333                         displayerror("You cannot move up/down the first/last element in form");
00334 
00335                 } else {
00336                         $tempTarg = mysql_fetch_assoc($result);
00337                         $query = "SELECT `form_elementrank` FROM `form_elementdesc` WHERE `page_modulecomponentid`=$moduleCompId AND `form_elementid`=$elementId";
00338                         $result = mysql_query($query) or die(mysql_query());
00339                         $tempSrc = mysql_fetch_assoc($result);
00340 
00341                         if ($tempTarg['form_elementrank'] == $tempSrc['form_elementrank']) {
00342                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = `form_elementid` WHERE `page_modulecomponentid`='$tempTarg[page_modulecomponentid]'";
00343                                 $result = mysql_query($query) or die(mysql_error());
00344                                 if (mysql_affected_rows() > 0)
00345                                         displayinfo("Error in form element rank corrected. Please reorder them");
00346                                 else
00347                                         displayerror("Failed to correct error in form element ranks!");
00348                         } else {
00349                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = '$tempSrc[form_elementrank]' WHERE `page_modulecomponentid`='$tempTarg[page_modulecomponentid]' AND `form_elementid`=$tempTarg[form_elementid]";
00350                                 $result = mysql_query($query) or die(mysql_error());
00351                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = '$tempTarg[form_elementrank]' WHERE `page_modulecomponentid`='$moduleCompId' AND `form_elementid`=$elementId";
00352                                 $result = mysql_query($query) or die(mysql_error());
00353                         }
00354                 }
00355 
00356         }
00357 
00358 
00362         function deleteFormElement($moduleCompId,$elementId) {
00363                 $query="DELETE FROM `form_elementdesc` WHERE `page_modulecomponentid` = $moduleCompId AND `form_elementid`=$elementId";
00364                 $resultDel=mysql_query($query);
00365                 if(mysql_affected_rows()>0)
00366                 $query1=1;
00367                 else $query1=0;
00368                 $queryDelData="DELETE FROM `form_elementdata` WHERE `page_modulecomponentid` = $moduleCompId AND `form_elementid`=$elementId";
00369                 $resultDelData=mysql_query($queryDelData);
00370                 if(!$resultDelData)     { displayerror('Invalid query: ' . mysql_error());      return false; }
00371                 $queryAffectedRows=mysql_affected_rows();
00372                 if($queryAffectedRows>0)
00373                 $query2=1;
00374                 else $query2=0;
00375                 if($query1&&$query2)
00376                 return true;
00377                 else return false;
00378         }
00379 
00380 
00382         function addDefaultFormElement($moduleCompId) {
00383                 $query="SELECT MAX(`form_elementid`) FROM `form_elementdesc` WHERE `page_modulecomponentid`=$moduleCompId";
00384                 $result=mysql_query($query);
00385                 $row = mysql_fetch_row($result);
00386 
00387                 $elementId = 0;
00388                 if(!is_null($row[0])) {
00389                         $elementId = $row[0] + 1;
00390                 }
00391 
00392                 $queryInsert="INSERT INTO `form_elementdesc` " .
00393                                 "(`page_modulecomponentid`, `form_elementid`, `form_elementname`, `form_elementdisplaytext`, " .
00394                                 "`form_elementtype`, `form_elementsize`, `form_elementtypeoptions`, `form_elementdefaultvalue`, " .
00395                                 "`form_elementmorethan`, `form_elementlessthan`, `form_elementcheckint`, `form_elementtooltiptext`," .
00396                                 "`form_elementisrequired` ,`form_elementrank`) VALUES " .
00397                                 "($moduleCompId, $elementId, 'register', 'Are you sure you want to register ?', 'radio', 100, 'Yes|No' , NULL , NULL , NULL , 0, '', 0, $elementId)";
00398                 $resultAdd=mysql_query($queryInsert);
00399 
00400 
00401 
00402 
00403 
00404                 if(mysql_affected_rows()>0)
00405                         return true;
00406                 else return false;
00407         }
00408 

Generated on Mon Mar 14 2011 05:35:30 for Pragyan CMS by  doxygen 1.7.1