PageRenderTime 28ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/editsponsor.php

https://github.com/timconstan/vtcalendar
PHP | 265 lines | 241 code | 17 blank | 7 comment | 68 complexity | 0bc0471db365f77cbe0d06c21780d4ed MD5 | raw file
  1. <?php
  2. session_start();
  3. require_once('globalsettings.inc.php');
  4. require_once('functions.inc.php');
  5. $database = DBopen();
  6. if (!authorized($database)) { exit; }
  7. if (!$_SESSION["AUTH_ADMIN"]) { exit; } // additional security
  8. if (isset($_POST['cancel'])) { setVar($cancel,$_POST['cancel'],'cancel'); } else { unset($cancel); }
  9. if (isset($_POST['save'])) { setVar($save,$_POST['save'],'save'); } else { unset($save); }
  10. if (isset($_POST['check'])) { setVar($check,$_POST['check'],'check'); } else { unset($check); }
  11. if (isset($_POST['id'])) { setVar($id,$_POST['id'],'sponsorid'); }
  12. else {
  13. if (isset($_GET['id'])) { setVar($id,$_GET['id'],'sponsorid'); }
  14. else { unset($id); }
  15. }
  16. if (isset($_POST['sponsor'])) {
  17. if (isset($_POST['sponsor']['name'])) { setVar($sponsor['name'],$_POST['sponsor']['name'],'sponsor_name'); }
  18. else { unset($sponsor['name']); }
  19. if (isset($_POST['sponsor']['email'])) { setVar($sponsor['email'],$_POST['sponsor']['email'],'email'); }
  20. else { unset($sponsor['email']); }
  21. if (isset($_POST['sponsor']['url'])) { setVar($sponsor['url'],$_POST['sponsor']['url'],'sponsor_url'); }
  22. else { unset($sponsor['url']); }
  23. if (isset($_POST['sponsor']['admins'])) { setVar($sponsor['admins'],$_POST['sponsor']['admins'],'sponsor_admins'); }
  24. else { unset($sponsor['admins']); }
  25. }
  26. if (isset($cancel)) {
  27. redirect2URL("managesponsors.php");
  28. exit;
  29. }
  30. function checksponsor(&$sponsor) {
  31. return (!empty($sponsor['name']) &&
  32. !empty($sponsor['email']) &&
  33. checkURL($sponsor['url']));
  34. }
  35. function emailsponsoraccountchanged(&$sponsor) {
  36. $subject = lang('email_account_updated_subject');
  37. $body = lang('email_account_updated_body');
  38. $body.= " ".lang('sponsor_name')." ".stripslashes($sponsor['name'])."\n";
  39. $body.= " ".lang('email')." ".stripslashes($sponsor['email'])."\n";
  40. $body.= " ".lang('homepage')." ".stripslashes($sponsor['url'])."\n\n";
  41. if ( isset($_SERVER["HTTPS"]) ) { $body .= "https"; } else { $body .= "http"; }
  42. $body .= "://".$_SERVER['HTTP_HOST'].substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'], "/"))."/update.php?calendarid=".$_SESSION["CALENDARID"]."\n\n";
  43. $body.= lang('email_add_event_instructions');
  44. sendemail2sponsor($sponsor['name'],$sponsor['email'],$subject,$body);
  45. } // end: emailsponsoraccountchanged
  46. $sponsorexists = false;
  47. $addPIDError="";
  48. if (isset($save) && checksponsor($sponsor) ) {
  49. $result = DBQuery($database, "SELECT * FROM vtcal_sponsor WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND name='".sqlescape($sponsor['name'])."'" );
  50. if ( $result->numRows()>0 ) {
  51. if ($result->numRows()>1) {
  52. $sponsorexists = true;
  53. }
  54. else { // exactly one result
  55. if ( isset ($id) ) {
  56. $s = $result->fetchRow(DB_FETCHMODE_ASSOC,0);
  57. if ( $s['id'] != $id ) {
  58. $sponsorexists = true;
  59. }
  60. }
  61. else {
  62. $sponsorexists = true;
  63. }
  64. }
  65. }
  66. if (!$sponsorexists) {
  67. // check validity of sponsor-admins
  68. if ( !empty($sponsor['admins']) ) {
  69. // disassemble the admins string and check all PIDs against the DB
  70. $pidsInvalid = "";
  71. $pidsTokens = split ( "[ ,;\n\t]", $sponsor['admins'] );
  72. $pidsAddedCount = 0;
  73. for ($i=0; $i<count($pidsTokens); $i++) {
  74. $pidName = $pidsTokens[$i];
  75. $pidName = trim($pidName);
  76. if ( !empty($pidName) ) {
  77. if ( isvaliduser ( $database, $pidName ) ) {
  78. $pidsAdded[$pidsAddedCount] = $pidName;
  79. $pidsAddedCount++;
  80. }
  81. else {
  82. if ( !empty($pidsInvalid) ) { $pidsInvalid .= ","; }
  83. $pidsInvalid .= $pidName;
  84. }
  85. }
  86. } // end: while
  87. // save the changes
  88. // feedback message(s)
  89. if ( !empty($pidsInvalid) ) {
  90. if ( strpos($pidsInvalid, "," ) > 0 ) { // more than one user-ID
  91. $addPIDError = lang('user_ids_invalid')." &quot;".$pidsInvalid."&quot;";
  92. }
  93. else {
  94. $addPIDError = lang('user_id_invalid')." &quot;".$pidsInvalid."&quot;";
  95. }
  96. }
  97. } // end: else: if ( empty($sponsor[admins]) )
  98. if (empty($addPIDError)) {
  99. if ( isset ($id) ) { // edit, not new
  100. $result = DBQuery($database, "UPDATE vtcal_sponsor SET name='".sqlescape($sponsor['name'])."',email='".sqlescape($sponsor['email'])."',url='".sqlescape($sponsor['url'])."' WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND id = '".sqlescape($id)."'" );
  101. // substitute existing auth info with the new one
  102. $result = DBQuery($database, "DELETE FROM vtcal_auth WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND sponsorid='".sqlescape($id)."'" );
  103. for ($i=0; $i<count($pidsAdded); $i++) {
  104. $result = DBQuery($database, "INSERT INTO vtcal_auth (calendarid,userid,sponsorid) VALUES ('".sqlescape($_SESSION["CALENDARID"])."','".sqlescape($pidsAdded[$i])."','".sqlescape($id)."')" );
  105. }
  106. }
  107. else {
  108. $query = "INSERT INTO vtcal_sponsor (calendarid,name,email,url) VALUES ('".sqlescape($_SESSION["CALENDARID"])."','".sqlescape($sponsor['name'])."','".sqlescape($sponsor['email'])."','".sqlescape($sponsor['url'])."')";
  109. $result = DBQuery($database, $query );
  110. // determine the automatically generated sponsor-id
  111. $result = DBQuery($database, "SELECT id FROM vtcal_sponsor WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND name='".sqlescape($sponsor['name'])."' AND email='".sqlescape($sponsor['email'])."' AND url='".sqlescape($sponsor['url'])."'" );
  112. $s = $result->fetchRow(DB_FETCHMODE_ASSOC,0);
  113. $id = $s['id'];
  114. // substitute existing auth info with the new one
  115. $result = DBQuery($database, "DELETE FROM vtcal_auth WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND sponsorid='".sqlescape($id)."'" );
  116. for ($i=0; $i<count($pidsAdded); $i++) {
  117. $result = DBQuery($database, "INSERT INTO vtcal_auth (calendarid,userid,sponsorid) VALUES ('".sqlescape($_SESSION["CALENDARID"])."','".sqlescape($pidsAdded[$i])."','".sqlescape($id)."')" );
  118. }
  119. }
  120. emailsponsoraccountchanged($sponsor);
  121. redirect2URL("managesponsors.php");
  122. exit;
  123. } // end: if (empty($addPIDError))
  124. } // end: if (!$sponsorexists)
  125. }
  126. if ( isset($id) ) {
  127. pageheader(lang('edit_sponsor'),
  128. lang('edit_sponsor'),
  129. "Update","",$database);
  130. echo "<br />";
  131. box_begin("inputbox",lang('edit_sponsor'));
  132. if ( !isset($check) ) {
  133. $result = DBQuery($database, "SELECT * FROM vtcal_sponsor WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND id='".sqlescape($id)."'" );
  134. $sponsor = $result->fetchRow(DB_FETCHMODE_ASSOC,0);
  135. }
  136. }
  137. else {
  138. pageheader(lang('add_new_sponsor'),
  139. lang('add_new_sponsor'),
  140. "Update","",$database);
  141. echo "<br />";
  142. box_begin("inputbox",lang('add_new_sponsor'));
  143. }
  144. ?>
  145. <br />
  146. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  147. <TABLE border="0" cellpadding="2" cellspacing="0">
  148. <TR>
  149. <TD class="bodytext" valign="top">
  150. <strong><?php echo lang('sponsor_name'); ?></strong>
  151. <FONT color="#FF0000">*</FONT>
  152. </TD>
  153. <TD class="bodytext" valign="top">
  154. <?php
  155. if ( isset($check) ) {
  156. if (empty($sponsor['name'])) {
  157. feedback(lang('choose_sponsor_name'),1);
  158. }
  159. elseif ($sponsorexists) {
  160. feedback(lang('sponsor_already_exists'),1);
  161. }
  162. }
  163. ?>
  164. <INPUT type="text" size="50" name="sponsor[name]" maxlength=<?php echo constSponsor_nameMaxLength; ?> value="<?php
  165. if ( isset($check) ) { $sponsor['name']=stripslashes($sponsor['name']); }
  166. if ( isset($sponsor['name']) ) { echo HTMLSpecialChars($sponsor['name']); }
  167. ?>"> <em><?php echo lang('sponsor_name_example'); ?></em><br />
  168. </TD>
  169. </TR>
  170. <TR>
  171. <TD class="bodytext" valign="top">
  172. <strong><?php echo lang('email'); ?></strong>
  173. <FONT color="#FF0000">*</FONT>
  174. </TD>
  175. <TD class="bodytext" valign="top">
  176. <?php
  177. if (isset($check) && (empty($sponsor['email']))) {
  178. feedback(lang('choose_email'),1);
  179. }
  180. ?>
  181. <INPUT type="text" size="20" name="sponsor[email]" maxlength=<?php echo constEmailMaxLength; ?> value="<?php
  182. if ( isset($check) ) { $sponsor['email']=stripslashes($sponsor['email']); }
  183. if ( isset($sponsor['email'])) { echo HTMLSpecialChars($sponsor['email']); }
  184. ?>">
  185. <em><?php echo lang('email_example'); ?></em><br />
  186. </TD>
  187. </TR>
  188. <TR>
  189. <TD class="bodytext" valign="top">
  190. <strong><?php echo lang('homepage'); ?></strong>
  191. </TD>
  192. <TD class="bodytext" valign="top">
  193. <?php
  194. if ( isset($check) && !checkURL($sponsor['url']) ) {
  195. feedback(lang('url_invalid'),1);
  196. }
  197. ?>
  198. <INPUT type="text" size="50" name="sponsor[url]" maxlength=<?php echo constUrlMaxLength; ?> value="<?php
  199. if ( isset($check) ) { $sponsor['url']=stripslashes($sponsor['url']); }
  200. if ( isset($sponsor['url']) ) { echo HTMLSpecialChars($sponsor['url']); }
  201. ?>">
  202. <em><?php echo lang('url_example'); ?></em><br />
  203. </TD>
  204. </TR>
  205. <TR>
  206. <TD class="bodytext" valign="top">
  207. <strong><?php echo lang('administrative_members'); ?></strong>
  208. </TD>
  209. <TD class="bodytext" valign="top">
  210. <?php
  211. if (!empty($addPIDError)) {
  212. feedback($addPIDError,1);
  213. }
  214. ?>
  215. <textarea name="sponsor[admins]" cols="40" rows="3" wrap="virtual"><?php
  216. if ( isset($sponsor['admins']) ) {
  217. echo $sponsor['admins'];
  218. }
  219. elseif ( isset($id) ) {
  220. $query = "SELECT * FROM vtcal_auth WHERE calendarid='".sqlescape($_SESSION["CALENDARID"])."' AND sponsorid='".sqlescape($id)."' ORDER BY userid";
  221. $result = DBQuery($database, $query );
  222. $i = 0;
  223. while ($i < $result->numRows()) {
  224. $authorization = $result->fetchRow(DB_FETCHMODE_ASSOC,$i);
  225. if ($i>0) { echo ","; }
  226. echo $authorization['userid'];
  227. $i++;
  228. }
  229. }
  230. ?></textarea><br />
  231. <i><?php echo lang('administrative_members_example'); ?></i>
  232. </TD>
  233. </TR>
  234. </TABLE>
  235. <input type="hidden" name="check" value="1">
  236. <?php
  237. if ( isset ($id) ) { echo '<input type="hidden" name="id" value="',$id,'">'; }
  238. ?>
  239. <br />
  240. <br />
  241. <INPUT type="submit" name="save" value="<?php echo lang('ok_button_text'); ?>">
  242. <INPUT type="submit" name="cancel" value="<?php echo lang('cancel_button_text'); ?>">
  243. </form>
  244. <?php
  245. box_end();
  246. echo "<br />";
  247. require("footer.inc.php");
  248. ?>