• 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, form_allowuserunregister, ' .
00109                                 'form_showuseremail, form_showuserfullname, form_showuserprofiledata, form_showregistrationdate, form_showlastupdatedate ' .
00110                                 'FROM `form_desc` WHERE `page_modulecomponentid` = ' . $moduleCompId;
00111                 $formResult = mysql_query($formQuery);
00112 
00113                 $userEdit = $formHeading = $headerText = $expiryDate = $requireLogin =
00114                 $sendConfirmation = $useCaptcha = $userProfiledata = $userEmail = $userUnregister = 
00115                 $userFullname = $regDate = $lastUpdate = $footerText = '';
00116 
00117                 if($formResult) {
00118                         if($formResultRow = mysql_fetch_assoc($formResult)) {
00119                                 $formHeading = $formResultRow['form_heading'];
00120                                 $requireLogin = $formResultRow['form_loginrequired'] ? 'checked="checked"' : '';
00121                                 $headerText = $formResultRow['form_headertext'];
00122                                 $expiryDate = $formResultRow['form_expirydatetime'];
00123                                 $sendConfirmation = $formResultRow['form_sendconfirmation'] ? 'checked="checked"' : '';
00124                                 $useCaptcha = $formResultRow['form_usecaptcha'] ? 'checked="checked"' : '';
00125                                 $userEdit = $formResultRow['form_allowuseredit'] ? 'checked="checked"' : '';
00126                                 $userUnregister = $formResultRow['form_allowuserunregister'] ? 'checked="checked"' : '';
00127                                 $userEmail = $formResultRow['form_showuseremail'] ? 'checked="checked"' : '';
00128                                 $userFullname = $formResultRow['form_showuserfullname'] ? 'checked="checked"' : '';
00129                                 $userProfiledata = $formResultRow['form_showuserprofiledata'] ? 'checked="checked"' : '';
00130                                 $regDate = $formResultRow['form_showregistrationdate'] ? 'checked="checked"' : '';
00131                                 $lastUpdate = $formResultRow['form_showlastupdatedate'] ? 'checked="checked"' : '';
00132                                 $footerText = $formResultRow['form_footertext'];
00133                         }
00134                 }
00135 
00136                 $requireLoginN = $requireLogin == '' ? 'checked="checked"' : '';
00137                 $sendConfirmationN = $sendConfirmation == '' ? 'checked="checked"' : '';
00138                 $useCaptchaN = $useCaptcha == '' ? 'checked="checked"' : '';
00139                 $userEditN = $userEdit == '' ? 'checked="checked"' : '';
00140                 $userUnregisterN = $userUnregister == '' ? 'checked="checked"' : '';
00141                 $userEmailN = $userEmail == '' ? 'checked="checked"' : '';
00142                 $userFullnameN = $userFullname == '' ? 'checked="checked"' : '';
00143                 $userProfiledataN = $userProfiledata == '' ? 'checked="checked"' : '';
00144                 $regDateN = $regDate == '' ? 'checked="checked"' : '';
00145                 $lastUpdateN = $lastUpdate == '' ? 'checked="checked"' : '';
00146 
00147                 $disableBecauseAssociated = '';
00148                 if($associatedGroupId > 0) {
00149                         $requireLogin = $userUnregister = 'checked="checked"';
00150                         $requireLoginN = $userUnregisterN = '';
00151                         $disableBecauseAssociated = 'disabled="disabled"';
00152                 }
00153 
00155                 $formDescBody =<<<BODY
00156 
00157                 <link rel="stylesheet" type="text/css" media="all" href="$calpath/form/calendar/calendar.css" title="Aqua" />
00158                 <script type="text/javascript" src="$calpath/form/calendar/calendar.js"></script>
00159 
00160                 <form id="formdetails" action="./+$action" method="post">
00161                         <table width="100%" cellpadding="1" cellspacing="1" border="1">
00162                                 <tr>
00163                                         <td width="20%">Form Heading:</td><td><input type="text" name="txtFormHeading" value="$formHeading" /></td>
00164                                 </tr>
00165                                 <tr>
00166                                         <td>Require Login?</td>
00167                                         <td>
00168                                                 <label><input type="radio" name="optLoginRequired" value="yes" $requireLogin $disableBecauseAssociated />Yes</label>
00169                                                 <label><input type="radio" name="optLoginRequired" value="no" $requireLoginN $disableBecauseAssociated />No</label>
00170                                         </td>
00171                                 </tr>
00172                                 <tr>
00173                                         <td>Form Header:</td>
00174                                         <td>
00175                                                 <textarea style="width:98%"  name="txtHeaderText" rows="10" cols="60">$headerText</textarea>
00176                                         </td>
00177                                 </tr>
00178 
00179                                 <tr>
00180                                         <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>
00181                                 </tr>
00182 
00183                                 <tr>
00184                                         <td>Send Confirmation?</td>
00185                                         <td>
00186                                                 <label><input type="radio" name="optSendConfirmation" value="yes" $sendConfirmation />Yes</label>
00187                                                 <label><input type="radio" name="optSendConfirmation" value="no" $sendConfirmationN />No</label>
00188                                         </td>
00189                                 </tr>
00190                                 <tr>
00191                                         <td>Use CAPTCHA Validation?</td>
00192                                         <td>
00193                                                 <label><input type="radio" name="optUseCaptcha" value="yes" $useCaptcha />Yes</label>
00194                                                 <label><input type="radio" name="optUseCaptcha" value="no" $useCaptchaN />No</label>
00195                                         </td>
00196                                 </tr>
00197                                 <tr>
00198                                         <td>Allow user to edit his entries again once registered?</td>
00199                                         <td>
00200                                                 <label><input type="radio" name="optUserEdit" value="yes" $userEdit />Yes</label>
00201                                                 <label><input type="radio" name="optUserEdit" value="no" $userEditN />No</label>
00202                                         </td>
00203                                 </tr>
00204                                 <tr>
00205                                         <td>Give the user the option to unregister?</td>
00206                                         <td>
00207                                                 <label><input type="radio" name="optUserUnregister" value="yes" $userUnregister $disableBecauseAssociated />Yes</label>
00208                                                 <label><input type="radio" name="optUserUnregister" value="no" $userUnregisterN $disableBecauseAssociated />No</label>
00209                                         </td>
00210                                 </tr>
00211 
00212                                 <tr>
00213                                         <td>Form Footer:</td>
00214                                         <td>
00215                                                 <textarea style="width:98%" name="txtFooterText" rows="8" cols="60">$footerText</textarea>
00216                                         </td>
00217                                 </tr>
00218                                 <tr ><td colspan="2"><b>Settings for viewing registrants :</b> </td></tr>
00219                                  <tr>
00220                                         <td>Show user e-mail?</td>
00221                                         <td>
00222                                                 <label><input type="radio" name="optUserEmail" value="yes" $userEmail />Yes</label>
00223                                                 <label><input type="radio" name="optUserEmail" value="no" $userEmailN />No</label>
00224                                         </td>
00225                                 </tr>
00226                                 <tr>
00227                                         <td>Show user fullname?</td>
00228                                         <td>
00229                                                 <label><input type="radio" name="optUserFullname" value="yes" $userFullname />Yes</label>
00230                                                 <label><input type="radio" name="optUserFullname" value="no" $userFullnameN />No</label>
00231                                         </td>
00232                                 </tr>
00233                                 <tr>
00234                                         <td>Show user profile information?</td>
00235                                         <td>
00236                                                 <label><input type="radio" name="optUserProfiledata" value="yes" $userProfiledata />Yes</label>
00237                                                 <label><input type="radio" name="optUserProfiledata" value="no" $userProfiledataN />No</label>
00238                                         </td>
00239                                 </tr>
00240                                 <tr>
00241                                         <td>Show Registration Date?</td>
00242                                         <td>
00243                                                 <label><input type="radio" name="optRegDate" value="yes" $regDate />Yes</label>
00244                                                 <label><input type="radio" name="optRegDate" value="no" $regDateN />No</label>
00245                                         </td>
00246                                 </tr>
00247                                 <tr>
00248                                         <td>Show Last Update Date?</td>
00249                                         <td>
00250                                                 <label><input type="radio" name="optLastUpdate" value="yes" $lastUpdate />Yes</label>
00251                                                 <label><input type="radio" name="optLastUpdate" value="no" $lastUpdateN />No</label>
00252                                         </td>
00253                                 </tr>
00254                                 </table>
00255                         <input type="submit" name="submittedform_desc" value="Update Form" />
00256                 </form><br/>
00257 BODY;
00258                 return $formDescBody;
00259         }
00260 
00261 
00262 
00263         function generateFormElementDescBody($moduleCompId, $action = 'editform') {
00264                 global $sourceFolder,$cmsFolder;
00265                 global $templateFolder;global $moduleFolder;
00266                 global $urlRequestRoot;
00267                 $imagePath = "$urlRequestRoot/$cmsFolder/$templateFolder";$calpath="$urlRequestRoot/$cmsFolder/$moduleFolder";
00268 
00269                 $elementsQuery = "SELECT * FROM `form_elementdesc` WHERE `page_modulecomponentid` =  $moduleCompId ORDER BY `form_elementrank` ASC";
00270                 $elementsResult = mysql_query($elementsQuery) or die(mysql_error());
00271                 $elementData = '';
00272                 while($elementsRow = mysql_fetch_assoc($elementsResult)) {
00273                         $tmpElement = new FormElement();
00274                         $tmpElement->fromMysqlTableRow($elementsRow);
00275 
00276                         $elementData .= $tmpElement->toHtmlTableRow($imagePath, $action) . "\n";
00277                 }
00278                 $formElementDescBody =<<<BODY
00279                 <h2>Fields:</h2>
00280                 <form id="formentries" action="./+$action" method="POST">
00281                         <table cellpadding="1" cellspacing="1" border="1">
00282                                 <tr>
00283                                         <th>Actions</th>
00284                                         
00285                                         <th>Name</th>
00286                                         <th>Description</th>
00287                                         <th>Type</th>
00288                                         <th>Tooltip</th>
00289                                         <th>Other Information</th>
00290                                         <th title="Only in the case of radio, check or select element type">Extra options*</th>
00291                                 
00292                                 </tr>
00293                                         $elementData
00294                                 </tr>
00295                         </table>
00296 
00297                 <input type="submit" name="addformelement_descsubmit" value="Add Element">
00298 
00299                 </form>
00300 BODY;
00301                 return $formElementDescBody;
00302         }
00303 
00304 
00305         function moveFormElement($moduleCompId,$subaction,$elementId) {
00306                 if ($subaction=='moveDown') {
00307                         $compare = ">=";
00308                         $order = "ASC";
00309                 }
00310                 else if($subaction=='moveUp') {
00311                         $compare = "<=";
00312                         $order = "DESC";
00313                 }
00314 
00315 
00316 
00317                 $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";
00318                 $result = mysql_query($query) or die(mysql_query());
00319                 if (mysql_num_rows($result) == 0) {
00320                         displayerror("You cannot move up/down the first/last element in form");
00321 
00322                 } else {
00323                         $tempTarg = mysql_fetch_assoc($result);
00324                         $query = "SELECT `form_elementrank` FROM `form_elementdesc` WHERE `page_modulecomponentid`=$moduleCompId AND `form_elementid`=$elementId";
00325                         $result = mysql_query($query) or die(mysql_query());
00326                         $tempSrc = mysql_fetch_assoc($result);
00327 
00328                         if ($tempTarg['form_elementrank'] == $tempSrc['form_elementrank']) {
00329                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = `form_elementid` WHERE `page_modulecomponentid`='$tempTarg[page_modulecomponentid]'";
00330                                 $result = mysql_query($query) or die(mysql_error());
00331                                 if (mysql_affected_rows() > 0)
00332                                         displayinfo("Error in form element rank corrected. Please reorder them");
00333                                 else
00334                                         displayerror("Failed to correct error in form element ranks!");
00335                         } else {
00336                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = '$tempSrc[form_elementrank]' WHERE `page_modulecomponentid`='$tempTarg[page_modulecomponentid]' AND `form_elementid`=$tempTarg[form_elementid]";
00337                                 $result = mysql_query($query) or die(mysql_error());
00338                                 $query = "UPDATE `form_elementdesc` SET `form_elementrank` = '$tempTarg[form_elementrank]' WHERE `page_modulecomponentid`='$moduleCompId' AND `form_elementid`=$elementId";
00339                                 $result = mysql_query($query) or die(mysql_error());
00340                         }
00341                 }
00342 
00343         }
00344 
00345 
00349         function deleteFormElement($moduleCompId,$elementId) {
00350                 $query="DELETE FROM `form_elementdesc` WHERE `page_modulecomponentid` = $moduleCompId AND `form_elementid`=$elementId";
00351                 $resultDel=mysql_query($query);
00352                 if(mysql_affected_rows()>0)
00353                 $query1=1;
00354                 else $query1=0;
00355                 $queryDelData="DELETE FROM `form_elementdata` WHERE `page_modulecomponentid` = $moduleCompId AND `form_elementid`=$elementId";
00356                 $resultDelData=mysql_query($queryDelData);
00357                 if(!$resultDelData)     { displayerror('Invalid query: ' . mysql_error());      return false; }
00358                 $queryAffectedRows=mysql_affected_rows();
00359                 if($queryAffectedRows>0)
00360                 $query2=1;
00361                 else $query2=0;
00362                 if($query1&&$query2)
00363                 return true;
00364                 else return false;
00365         }
00366 
00367 
00369         function addDefaultFormElement($moduleCompId) {
00370                 $query="SELECT MAX(`form_elementid`) FROM `form_elementdesc` WHERE `page_modulecomponentid`=$moduleCompId";
00371                 $result=mysql_query($query);
00372                 $row = mysql_fetch_row($result);
00373 
00374                 $elementId = 0;
00375                 if(!is_null($row[0])) {
00376                         $elementId = $row[0] + 1;
00377                 }
00378 
00379                 $queryInsert="INSERT INTO `form_elementdesc` " .
00380                                 "(`page_modulecomponentid`, `form_elementid`, `form_elementname`, `form_elementdisplaytext`, " .
00381                                 "`form_elementtype`, `form_elementsize`, `form_elementtypeoptions`, `form_elementdefaultvalue`, " .
00382                                 "`form_elementmorethan`, `form_elementlessthan`, `form_elementcheckint`, `form_elementtooltiptext`," .
00383                                 "`form_elementisrequired` ,`form_elementrank`) VALUES " .
00384                                 "($moduleCompId, $elementId, 'username', 'Enter your name:', 'text', 100, NULL , NULL , NULL , NULL , 0, 'Enter your full name here', 0, $elementId)";
00385                 $resultAdd=mysql_query($queryInsert);
00386 
00387                 if(mysql_affected_rows()>0)
00388                         return true;
00389                 else return false;
00390         }
00391 

Generated on Sun Jan 2 2011 04:55:32 for Pragyan CMS by  doxygen 1.7.1