/** * displayStepFive * * @param string $error Any previous errors with this step. * * @return void */ function displayStepFive($error = '0') { global $cfg_mysql_host, $cfg_mysql_user, $cfg_mysql_pass, $cfg_mysql_db; if (empty($_POST['sitename']) || empty($_POST['contact'])) { displayStepFour("<p class=\"error\">" . T_('You forgot a required field. Please fill out all required fields.') . "</p>"); return; } include_once 'inc/config_inc.php'; include_once 'inc/install_inc.php'; include_once 'inc/datetime.php'; mysql_connect($cfg_mysql_host, $cfg_mysql_user, $cfg_mysql_pass); mysql_select_db($cfg_mysql_db); $_POST['sitename'] = mysql_real_escape_string($_POST['sitename']); $_POST['contact'] = mysql_real_escape_string($_POST['contact']); // Setup Config installConfig($_POST['sitename'], $_POST['contact'], 'Family Connections 3.5.0'); // Setup Navigation $order = 0; $order2 = 0; $nextComOrder = 2; $nextShareOrder = 5; $params = array(); // Family News if (isset($_POST['sections-news'])) { $order = $nextComOrder; $nextComOrder++; } $params['familynews'] = array(3, $order, 0); // Prayers $order = 0; if (isset($_POST['sections-prayers'])) { $order = $nextComOrder; $nextComOrder++; } $params['prayers'] = array(3, $order, 0); // Recipes $order = 0; if (isset($_POST['sections-recipes'])) { $order = $nextShareOrder; $nextShareOrder++; } $params['recipes'] = array(4, $order, 0); // Family Tree $order = 0; if (isset($_POST['sections-tree'])) { $order = $nextShareOrder; $nextShareOrder++; } $params['tree'] = array(4, $order, 0); // Documents $order = 0; if (isset($_POST['sections-documents'])) { $order = $nextShareOrder; $nextShareOrder++; } $params['documents'] = array(4, $order, 0); // Where Is Everyone $order = 0; if (isset($_POST['sections-whereiseveryone'])) { $order = $nextShareOrder; $nextShareOrder++; } $params['whereiseveryone'] = array(4, $order, 0); installNavigation($params); echo ' <div id="column"> <h1>' . T_('Install') . ' Family Connections</h1> <h2>' . T_('Administrative Account') . '</h2> <p style="text-align:center">' . T_('Step 5 of 5') . '</p> <div class="progress"><div style="width:100%"></div></div> <form action="install.php" method="post"> <p>' . T_('Everyone will be required to have an account and be logged in at all times to use this website. This will help protect your site.') . '</p> <p>' . T_('You must have at least one administrative account. Please fill out the information below for the person who will be the administrator of this site.') . '</p> <div> <div class="field-label"><label for="username"><b>' . T_('Username') . '</b> <span class="req">*</span></label></div> <div class="field-widget"><input type="text" name="username" id="username"/></div> </div> <script type="text/javascript"> var funame = new LiveValidation(\'username\', { onlyOnSubmit: true }); funame.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but I can\'t install without this information.') . '"}); </script> <div> <div class="field-label"><label for="password"><b>' . T_('Password') . '</b> <span class="req">*</span></label></div> <div class="field-widget"><input type="password" name="password" id="password"/></div> </div> <script type="text/javascript"> var fpass = new LiveValidation(\'password\', { onlyOnSubmit: true }); fpass.add(Validate.Presence, {failureMessage: "' . T_('Passwords are hard to remember, but unfortunately necessary.') . '"}); </script> <div> <div class="field-label"><label for="fname"><b>' . T_('First Name') . '</b> <span class="req">*</span></label></div> <div class="field-widget"><input type="text" name="fname" id="fname"/></div> </div> <script type="text/javascript"> var ffname = new LiveValidation(\'fname\', { onlyOnSubmit: true }); ffname.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but I can\'t install without this information.') . '"}); </script> <div> <div class="field-label"><label for="lname"><b>' . T_('Last Name') . '</b> <span class="req">*</span></label></div> <div class="field-widget"><input type="text" name="lname" id="lname"/></div> </div> <script type="text/javascript"> var flname = new LiveValidation(\'lname\', { onlyOnSubmit: true }); flname.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but I can\'t install without this information.') . '"}); </script> <div> <div class="field-label"><label for="email"><b>' . T_('Email Address') . '</b> <span class="req">*</span></label></div> <div class="field-widget"><input type="text" name="email" id="email"/></div> </div> <script type="text/javascript"> var femail = new LiveValidation(\'email\', { onlyOnSubmit: true }); femail.add( Validate.Presence, { failureMessage: "' . T_('Sorry, but this information is required.') . '" } ); femail.add( Validate.Email, { failureMessage: "' . T_('That\'s not a valid email address is it?') . '" } ); femail.add( Validate.Length, { minimum: 10 } ); </script> <div> <div class="field-label"><label for="day"><b>' . T_('Birthday') . '</b><span class="req">*</span></label></div> <div class="field-widget"> <select id="day" name="day">'; $d = 1; while ($d <= 31) { echo "<option value=\"{$d}\">{$d}</option>"; $d++; } echo '</select><select id="month" name="month">'; $m = 1; while ($m <= 12) { echo "<option value=\"{$m}\">" . getMonthAbbr($m) . "</option>"; $m++; } echo '</select><select id="year" name="year">'; $y = 1900; while ($y - 5 <= gmdate('Y')) { echo "<option value=\"{$y}\">{$y}</option>"; $y++; } echo ' </select> </div> </div> <p style="text-align:right;"><input id="submit" name="submit5" type="submit" value="' . T_('Next') . ' >>"/></p> <div class="clear"></div> </form> </div><!-- /column -->'; }
/** * displayEditForm * * Displays the form to edit an existing calendar event. * * @param int $id * @return void */ function displayEditForm($id) { $id = (int) $id; $sql = "SELECT `id`, `date`, `time_start`, `time_end`, `date_added`, \n `title`, `desc`, `created_by`, `category`, `repeat`, `private`, `invite`\n FROM `fcms_calendar` \n WHERE `id` = ?\n LIMIT 1"; $row = $this->fcmsDatabase->getRow($sql, $id); if ($row === false) { $this->fcmsError->displayError(); return; } // Make sure then can edit this event if ($this->fcmsUser->access > 1 and $row['created_by'] != $this->fcmsUser->id) { echo ' <div class="error-alert">' . T_('You do not have permission to perform this task.') . '</div>'; return; } list($year, $month, $day) = explode('-', $row['date']); for ($i = 1; $i <= 31; $i++) { $days[$i] = $i; } for ($i = 1; $i <= 12; $i++) { $months[$i] = getMonthAbbr($i); } for ($i = 1900; $i <= date('Y') + 5; $i++) { $years[$i] = $i; } $times = $this->getTimesList(); $title = cleanOutput($row['title']); $desc = cleanOutput($row['desc']); $allDayChk = empty($row['time_start']) ? 'checked="checked"' : ''; // Setup category field $sql = "SELECT *\n FROM `fcms_category` \n WHERE `type` = 'calendar'"; $rows = $this->fcmsDatabase->getRows($sql); if ($rows === false) { $this->fcmsError->displayError(); return; } $choose = ''; foreach ($rows as $r) { if ($r['name'] == '') { $choose = '<option value="' . $r['id'] . '"></option>'; } else { $categories[$r['id']] = $r['name']; } } $repeatChk = $row['repeat'] == 'yearly' ? 'checked="checked"' : ''; $privateChk = $row['private'] == 1 ? 'checked="checked"' : ''; $inviteChk = $row['invite'] == 1 ? 'checked="checked"' : ''; // Display the form echo ' <form id="frm" method="post" action="calendar.php"> <fieldset> <legend><span>' . T_('Edit Event') . '</span></legend> <div class="field-row"> <div class="field-label"><label for="title"><b>' . T_('Event') . '</b></label></div> <div class="field-widget"> <input type="text" id="title" name="title" size="40" value="' . $title . '"/> <script type="text/javascript"> var ftitle = new LiveValidation(\'title\', { onlyOnSubmit: true}); ftitle.add(Validate.Presence, {failureMessage: ""}); </script> </div> </div> <div class="field-row"> <div class="field-label"><label for="desc"><b>' . T_('Description') . '</b></label></div> <div class="field-widget"> <input type="text" id="desc" name="desc" size="50" value="' . $desc . '"/> </div> </div> <div class="field-row"> <div class="field-label"><label for="sday"><b>' . T_('Date') . '</b></label></div> <div class="field-widget"> <select id="sday" name="sday"> ' . buildHtmlSelectOptions($days, $day) . ' </select> <select id="smonth" name="smonth"> ' . buildHtmlSelectOptions($months, $month) . ' </select> <select id="syear" name="syear"> ' . buildHtmlSelectOptions($years, $year) . ' </select> </div> </div> <div id="time" class="field-row"> <div class="field-label"><label for="sday"><b>' . T_('Time') . '</b></label></div> <div class="field-widget"> <select id="timestart" name="timestart"> <option></option> ' . buildHtmlSelectOptions($times, $row['time_start']) . ' </select> ' . T_('through') . ' <select id="timeend" name="timeend"> <option></option> ' . buildHtmlSelectOptions($times, $row['time_end']) . ' </select> <input id="all-day" named="all-day" type="checkbox" onclick="toggleDisable($(\'#timestart\'), $(\'#timeend\'))" ' . $allDayChk . '/> <label for="all-day">' . T_('All Day') . '</label> </div> </div> <div class="field-row"> <div class="field-label"><label for="category"><b>' . T_('Category') . '</b></label></div> <div class="field-widget"> <select id="category" name="category"> ' . $choose . ' ' . buildHtmlSelectOptions($categories, $row['category']) . ' </select> </div> </div> <div class="field-row"> <div class="field-label"><label for="repeat-yearly"><b>' . T_('Repeat (Yearly)') . '</b></label></div> <div class="field-widget"> <input type="checkbox" name="repeat-yearly" id="repeat-yearly" ' . $repeatChk . '/> </div> </div> <div class="field-row"> <div class="field-label"><label for="private"><b>' . T_('Private?') . '</b></label></div> <div class="field-widget"> <input type="checkbox" name="private" id="private" ' . $privateChk . '/> </div> </div> <div class="field-row"> <div class="field-label"><label for="invite"><b>' . T_('Invite Guests?') . '</b></label></div> <div class="field-widget"> <input type="checkbox" name="invite" id="invite" ' . $inviteChk . '/> </div> </div> <p> <input type="hidden" name="id" value="' . $id . '"/> <input class="sub1" type="submit" name="edit" value="' . T_('Edit') . '"/> <input class="sub2" type="submit" id="delcal" name="delete" value="' . T_('Delete') . '"/> ' . T_('or') . ' <a href="calendar.php?year=' . $year . '&month=' . $month . '&day=' . $day . '">' . T_('Cancel') . '</a> </p> </form> </fieldset>'; }
/** * displayEditBasicInfo * * @return void */ function displayEditBasicInfo() { $sql = "SELECT `fname`, `mname`, `lname`, `maiden`, `bio`, `sex`, \n `dob_year`, `dob_month`, `dob_day`\n FROM `fcms_users`\n WHERE `id` = '" . $this->fcmsUser->id . "'"; $row = $this->fcmsDatabase->getRow($sql, $this->fcmsUser->id); if ($row === false) { $this->fcmsError->displayError(); return; } // Gender $gender_options = buildHtmlSelectOptions(array('M' => T_('Male'), 'F' => T_('Female')), $row['sex']); // Birthday $day_list = array(); $i = 1; while ($i <= 31) { $day_list[$i] = $i; $i++; } $day_options = buildHtmlSelectOptions($day_list, $row['dob_day']); $month_list = array(); $i = 1; while ($i <= 12) { $month_list[$i] = getMonthAbbr($i); $i++; } $month_options = buildHtmlSelectOptions($month_list, $row['dob_month']); $year_list = array(); $i = 1900; $year_end = fixDate('Y', $this->fcmsUser->tzOffset); while ($i <= $year_end) { $year_list[$i] = $i; $i++; } $year_options = buildHtmlSelectOptions($year_list, $row['dob_year']); echo ' <div id="sections_menu"> <ul> <li><a href="profile.php">' . T_('View Stats') . '</a></li> <li><a href="?view=info">' . T_('Basic Information') . '</a></li> <li><a href="?view=picture">' . T_('Profile Picture') . '</a></li> <li><a href="?view=address">' . T_('Address / Contact') . '</a></li> </ul> </div> <div id="leftcolumn"> <ul class="menu"> <li><a href="#section-name">' . T_('Name') . '</a></li> <li><a href="#section-bio">' . T_('Bio') . '</a></li> <li><a href="#section-gender">' . T_('Gender') . '</a></li> <li><a href="#section-birthday">' . T_('Birthday') . '</a></li> </ul> </div> <div id="maincolumn"> <script type="text/javascript" src="ui/js/livevalidation.js"></script> <form id="frm" action="profile.php?view=info" method="post"> <fieldset id="section-name"> <legend><span>' . T_('Name') . '</span></legend> <div class="field-row"> <div class="field-label"><label for="fname"><b>' . T_('First') . '</b></label></div> <div class="field-widget"> <input type="text" name="fname" size="50" id="fname" value="' . cleanOutput($row['fname']) . '"/> </div> </div> <script type="text/javascript"> var ffname = new LiveValidation(\'fname\', { onlyOnSubmit: true }); ffname.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but this information is required.') . '"}); </script> <div class="field-row"> <div class="field-label"><label class="optional" for="mname"><b>' . T_('Middle') . '</b></label></div> <div class="field-widget"> <input type="text" name="mname" size="50" id="mname" value="' . cleanOutput($row['mname']) . '"/> </div> </div> <div class="field-row"> <div class="field-label"><label for="lname"><b>' . T_('Last') . '</b></label></div> <div class="field-widget"> <input type="text" name="lname" size="50" id="lname" value="' . cleanOutput($row['lname']) . '"/> </div> </div> <script type="text/javascript"> var flname = new LiveValidation(\'lname\', { onlyOnSubmit: true }); flname.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but this information is required.') . '"}); </script> <div class="field-row"> <div class="field-label"><label class="optional" for="maiden"><b>' . T_('Maiden') . '</b></label></b></div> <div class="field-widget"> <input type="text" name="maiden" size="50" id="maiden" value="' . cleanOutput($row['maiden']) . '"/> </div> </div> </fieldset> <fieldset id="section-bio"> <legend><span>' . T_('Bio') . '</span></legend> <div class="field-row"> <div class="field-label"><label class="optional" for="bio"><b>' . T_('Bio') . '</b></label></div> <div class="field-widget"> <textarea name="bio" id="bio" cols="40" rows="5">' . $row['bio'] . '</textarea> </div> </div> </fieldset> <fieldset id="section-gender"> <legend><span>' . T_('Gender') . '</span></legend> <div class="field-row"> <div class="field-label"><b><label for="sex">' . T_('Gender') . '</label></b></div> <div class="field-widget"> <select id="sex" name="sex"> ' . $gender_options . ' </select> </div> </div> <script type="text/javascript"> var fsex = new LiveValidation(\'sex\', { onlyOnSubmit: true }); fsex.add(Validate.Presence, {failureMessage: "' . T_('Sorry, but this information is required.') . '"}); </script> </fieldset> <fieldset id="section-birthday"> <legend><span>' . T_('Birthday') . '</span></legend> <div class="field-row"> <div class="field-label"><label for="sday"><b>' . T_('Birthday') . '</b></label></div> <div class="field-widget"> <select id="sday" name="sday"> <option value="">' . T_('Day') . '</option> ' . $day_options . ' </select> <select id="smonth" name="smonth"> <option value="">' . T_('Month') . '</option> ' . $month_options . ' </select> <select id="syear" name="syear"> <option value="">' . T_('Year') . '</option> ' . $year_options . ' </select> </div> </div> </fieldset> <p><input class="sub1" type="submit" name="submit" id="submit" value="' . T_('Submit') . '"/></p> </form> </div>'; }
/** * displayCreateUserForm * * Displays the form for creating a new user to be added to the family tree * * @param string $type * @param int $userId * * @return void */ function displayCreateUserForm($type, $userId) { $userId = (int) $userId; $displayname = getUserDisplayName($userId, 2); switch ($type) { case 'father': $sex = 'M'; $legend = sprintf(T_('Add New Father for %s'), $displayname); $options = $this->getAddFatherMotherAdditionalOptions($userId, $type); break; case 'mother': $sex = 'F'; $legend = sprintf(T_('Add New Mother for %s'), $displayname); $options = $this->getAddFatherMotherAdditionalOptions($userId, $type); break; case 'brother': $sex = 'M'; $legend = sprintf(T_('Add New Brother for %s'), $displayname); $options = $this->getAddBrotherSisterAdditionalOptions($userId); break; case 'sister': $sex = 'F'; $legend = sprintf(T_('Add New Sister for %s'), $displayname); $options = $this->getAddBrotherSisterAdditionalOptions($userId); break; case 'spouse': $sex = '?'; $legend = sprintf(T_('Add New Spouse for %s'), $displayname); $options = $this->getAddSpouseAdditionalOptions($userId); break; case 'child': $sex = '?'; $legend = sprintf(T_('Add New Child for %s'), $displayname); $options = $this->getAddChildAdditionalOptions($userId); break; default: echo ' <div class="error-alert">' . T_('Invalid Display Type') . '</div>'; return; } if ($options === false) { $this->fcmsError->displayError(); return; } $dayList = array(); $i = 1; while ($i <= 31) { $dayList[$i] = $i; $i++; } $monthList = array(); $i = 1; while ($i <= 12) { $monthList[$i] = getMonthAbbr($i); $i++; } $validator = new FormValidator(); echo ' <form action="familytree.php?create=submit" method="post"> <fieldset class="relationship-form"> <legend><span>' . $legend . '</span></legend> <div class="cols"> <div> <label for="fname"><b>' . T_('First Name') . '</b></label><br/> <input class="frm_text" type="text" name="fname" id="fname" size="25"/> </div> <div> <label for="mname"><b>' . T_('Middle Name') . '</b></label><br/> <input class="frm_text" type="text" name="mname" id="mname" size="25"/> </div> <div> <label for="lname"><b>' . T_('Last Name') . '</b></label><br/> <input class="frm_text" type="text" name="lname" id="lname" size="25"/> </div> </div>'; // don't show maiden name unless it's needed if ($sex == 'F' || $sex == '?') { echo ' <p class="maiden-name"> <label for="maiden"><b>' . T_('Maiden Name') . '</b></label><br/> <input class="frm_text" type="text" name="maiden" id="maiden" size="25"/> </p>'; } // We don't know the sex of the child or spouse, but we do for all other relationships if ($sex === '?') { echo ' <p> <label><b>' . T_('Sex') . '</b></label><br/> <select id="sex" name="sex"> ' . buildHtmlSelectOptions(array('M' => T_('Male'), 'F' => T_('Female')), '-1') . ' </select> </p>'; } else { echo '<div><input type="hidden" id="sex" name="sex" value="' . $sex . '"/></div>'; } echo ' <p id="living_deceased" style="display:none;"> <label for="living_option" class="radio_label"> <input type="radio" id="living_option" name="living_deceased_options" checked="checked" value="1"/> ' . T_('Living') . ' </label> <label for="deceased_option" class="radio_label"> <input type="radio" id="deceased_option" name="living_deceased_options" value="1"/> ' . T_('Deceased') . ' </label> </p> <div class="dob_dod"> <div class="half"> <label for="day"><b>' . T_('Birthday') . '</b></label><br/> <select id="bday" name="bday"> <option value="">' . T_('Day') . '</option> ' . buildHtmlSelectOptions($dayList, "") . ' </select> <select id="bmonth" name="bmonth"> <option value="">' . T_('Month') . '</option> ' . buildHtmlSelectOptions($monthList, "") . ' </select> <input class="frm_text" type="text" name="byear" id="byear" size="5" maxlength="4" placeholder="' . T_('Year') . '"/> </div> <div id="deceased" class="half"> <label for="day"><b>' . T_('Date Deceased') . '</b></label><br/> <select id="dday" name="dday"> <option value="">' . T_('Day') . '</option> ' . buildHtmlSelectOptions($dayList, "") . ' </select> <select id="dmonth" name="dmonth"> <option value="">' . T_('Month') . '</option> ' . buildHtmlSelectOptions($monthList, "") . ' </select> <input class="frm_text" type="text" name="dyear" id="dyear" size="5" maxlength="4" placeholder="' . T_('Year') . '"/> </div> </div> ' . $options . ' ' . $validator->getJsValidation($this->getProfile('create')) . ' <p> <input type="hidden" id="id" name="id" value="' . $userId . '"/> <input type="hidden" id="type" name="type" value="' . cleanOutput($type) . '"/> <input class="sub1" type="submit" id="submit" name="submit" value="' . T_('Add') . '"/> <a href="familytree.php?view=' . $this->currentTreeUserId . '">' . T_('Cancel') . '</a> </p> </fieldset> </form>'; }
/** * formatBirthday * * Because birthdays are not required, user can have parts of a birthday. * This will format those partial dates in a nice way. * * Shows the following partial dates: * Y-m-d - 2011-03-15 * F, Y - March, 2011 * M. j - Mar. 15 * Y - 2011 * * @param string $year * @param string $month * @param string $day * * @return string */ function formatBirthday($year, $month, $day) { if (!empty($year)) { if (!empty($month)) { if (!empty($day)) { return getMonthName((int) $month) . ', ' . $day . ' ' . $year; } else { return getMonthName((int) $month) . ', ' . $year; } } else { return $year; } } elseif (!empty($month)) { if (!empty($day)) { return getMonthAbbr((int) $month) . '. ' . $day; } } return ''; }