0) { $assignNewID = true; } else { $assignNewID = false; } $q = "SELECT * FROM `" . OCC_TABLE_WITHDRAWN . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"; $r = ocsql_query($q) or err('Unable to retrieve submission information'); if (ocsql_num_rows($r) == 1) { // paper $l = ocsql_fetch_assoc($r); if ($assignNewID) { $l['papersql'] = preg_replace("/`paperid`='" . $paperid . "',/", "", $l['papersql']); } ocsql_query($l['papersql']) or err('Unable to restore paper'); if ($assignNewID) { $newID = ocsql_insert_id() or err('Unable to get new submission ID'); } else { $newid = null; } if (!empty($l['authorsql'])) { if ($assignNewID) { $l['authorsql'] = preg_replace("/\('" . $paperid . "',/", "('" . $newID . "',", $l['authorsql']); } ocsql_query($l['authorsql']) or err('Unable to restore ' . oc_strtolower(OCC_WORD_AUTHOR) . ' information'); } if (!empty($l['topicsql'])) { if ($assignNewID) { $l['topicsql'] = preg_replace("/\(" . $paperid . ",/", "('" . $newID . "',", $l['topicsql']); } ocsql_query($l['topicsql']) or err('Unable to restore topic information'); } ocsql_query("DELETE FROM `" . OCC_TABLE_WITHDRAWN . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'") or err('Unable to update withdrawn submission status'); // restore if (oc_hookSet('restore_paper')) { foreach ($GLOBALS['OC_hooksAR']['restore_paper'] as $inc) { include $inc; } } // log oc_logit('submission', 'Submission ID ' . $paperid . ' restored' . ($assignNewID ? (' and assigned new ID ' . $newID) : '')); if ($assignNewID) { return($newID); } else { return($paperid); } } else { return(null); } } // Withdraws submission function withdrawPaper($paperid, $by) { $q = "SELECT * FROM `" . OCC_TABLE_PAPER . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"; $r = ocsql_query($q) or err('Unable to retrieve submission information'); if (ocsql_num_rows($r) == 1) { // paper $l = ocsql_fetch_assoc($r); $papervalues = ''; foreach ($l as $fld => $val) { $papervalues .= "`$fld`="; if (($val === NULL) || ($fld == 'format')) { $papervalues .= "NULL,"; } else { $papervalues .= "'" . safeSQLstr($val) . "',"; } } if (!empty($papervalues)) { $paperq = "INSERT INTO `" . OCC_TABLE_PAPER . "` SET " . rtrim($papervalues, ','); } else { $paperq = ''; } $title = $l['title']; $contactid = $l['contactid']; $contact_author = ''; $contact_email = ''; // authors $q = "SELECT * FROM `" . OCC_TABLE_AUTHOR . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"; $r = ocsql_query($q) or err('Unable to retrieve ' . oc_strtolower(OCC_WORD_AUTHOR) . ' information'); $authorvalues = ""; $fields = ''; while ($l = ocsql_fetch_assoc($r)) { if (empty($fields)) { $fields = "`" . implode('`,`', array_keys($l)) . "`"; } $authorvalues .= "("; foreach ($l as $val) { if ($val === NULL) { $authorvalues .= "NULL,"; } else { $authorvalues .= "'" . safeSQLstr($val) . "',"; } } $authorvalues = rtrim($authorvalues, ',') . "),"; // contact author? if ($l['position'] == $contactid) { $contact_author = $l['name_first'] . ' ' . $l['name_last']; $contact_email = $l['email']; } } if (!empty($authorvalues)) { $authorq = "INSERT INTO `" . OCC_TABLE_AUTHOR . "` ($fields) VALUES " . rtrim($authorvalues, ','); } else { $authorq = ''; } //topics $q = "SELECT * FROM `" . OCC_TABLE_PAPERTOPIC . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"; $r = ocsql_query($q) or err('Unable to retrieve topics'); $topicValues = ''; while ($l = ocsql_fetch_assoc($r)) { $topicValues .= '(' . $l['paperid'] . ', ' . $l['topicid'] . '),'; } if (!empty($topicValues)) { $topicq = "INSERT INTO `" . OCC_TABLE_PAPERTOPIC . "` (`paperid`, `topicid`) VALUES " . rtrim($topicValues, ','); } else { $topicq = ''; } // get committee notification template - before hook to allow custom mod list($mailsubject, $mailbody) = oc_getTemplate('committee-withdrawnsub'); // hook if (oc_hookSet('withdraw_paper-preprocess')) { foreach ($GLOBALS['OC_hooksAR']['withdraw_paper-preprocess'] as $inc) { include $inc; } } $q = "INSERT INTO `" . OCC_TABLE_WITHDRAWN . "` SET `paperid`='" . safeSQLstr($paperid) . "', `title`='" . safeSQLstr($title) . "', `contact_author`='" . safeSQLstr($contact_author) . "', `contact_email`='" . safeSQLstr($contact_email) . "', `papersql`='" . safeSQLstr($paperq) . "', `authorsql`='" . safeSQLstr($authorq) . "', `topicsql`='" . safeSQLstr($topicq) . "', `withdraw_date`='" . date('Y-m-d H:i:s') . "', `withdrawn_by`='" . safeSQLstr($by) . "'"; ocsql_query($q) or err('Unable to save info'); if (oc_hookSet('withdraw_paper')) { foreach ($GLOBALS['OC_hooksAR']['withdraw_paper'] as $inc) { include $inc; } } // log oc_logit('submission', 'Submission ID ' . $paperid . ' withdrawn by ' . $by . '. Title: ' . $title); // notify committee members if (!empty($mailsubject) && !empty($mailbody)) { // ocIgnore included so poEdit picks up (DB) template translation //T: [:sid:] is the numeric submission ID $ocIgnoreSubject = oc_('Submission [:sid:] Withdrawn'); //T: [:OC_confName:] is the event name; [:sid:] is the numeric submission ID $ocIgnoreBody = oc_('The submission below has been withdrawn and is no longer assigned to you. [:sid:]. [:title:]'); // notify assigned reviewers with review incomplete $reviewersNotifiedAR = array(); $q = "SELECT `" . OCC_TABLE_PAPERREVIEWER . "`.`paperid` AS `sid`, `" . OCC_TABLE_REVIEWER . "`.`reviewerid` AS `memberid`, CONCAT_WS(' ', `" . OCC_TABLE_REVIEWER . "`.`name_first`, `" . OCC_TABLE_REVIEWER . "`.`name_last`) AS `name`, `" . OCC_TABLE_REVIEWER . "`.`username`, `" . OCC_TABLE_REVIEWER . "`.`email` FROM `" . OCC_TABLE_REVIEWER . "`, `" . OCC_TABLE_PAPERREVIEWER . "` WHERE `" . OCC_TABLE_PAPERREVIEWER . "`.`paperid`='" . safeSQLstr($paperid) . "' AND `" . OCC_TABLE_PAPERREVIEWER . "`.`completed`!='T' AND `" . OCC_TABLE_PAPERREVIEWER . "`.`reviewerid`=`" . OCC_TABLE_REVIEWER . "`.`reviewerid`"; if ($r = ocsql_query($q)) { while ($l = ocsql_fetch_assoc($r)) { $l['title'] = $title; $tmpsubject = oc_replaceVariables($mailsubject, $l); $tmpbody = oc_replaceVariables($mailbody, $l); sendEmail($l['email'], $tmpsubject, $tmpbody); $reviewersNotifiedAR[] = $l['email']; } } // notify advocate if not yet notified as a reviewer $q = "SELECT `" . OCC_TABLE_PAPERADVOCATE . "`.`paperid` AS `sid`, `" . OCC_TABLE_REVIEWER . "`.`reviewerid` AS `memberid`, CONCAT_WS(' ', `" . OCC_TABLE_REVIEWER . "`.`name_first`, `" . OCC_TABLE_REVIEWER . "`.`name_last`) AS `name`, `" . OCC_TABLE_REVIEWER . "`.`username`, `" . OCC_TABLE_REVIEWER . "`.`email` FROM `" . OCC_TABLE_REVIEWER . "`, `" . OCC_TABLE_PAPERADVOCATE . "` WHERE `" . OCC_TABLE_PAPERADVOCATE . "`.`paperid`='" . safeSQLstr($paperid) . "' AND `" . OCC_TABLE_PAPERADVOCATE . "`.`advocateid`=`" . OCC_TABLE_REVIEWER . "`.`reviewerid`"; if (($r = ocsql_query($q)) && ($l = ocsql_fetch_assoc($r)) && !in_array($l['email'], $reviewersNotifiedAR)) { $l['title'] = $title; $tmpsubject = oc_replaceVariables($mailsubject, $l); $tmpbody = oc_replaceVariables($mailbody, $l); sendEmail($l['email'], $tmpsubject, $tmpbody); } } } else { return(false); } return(true); } // Deletes submission function deletePaper($paperid, $log=true) { $q = "SELECT * FROM `" . OCC_TABLE_PAPER . "` WHERE paperid='" . safeSQLstr($paperid) . "'"; $r = ocsql_query($q) or err("Unable to retrieve submission format"); $l = ocsql_fetch_assoc($r); issueSQL("DELETE FROM `" . OCC_TABLE_PAPERADVOCATE . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"); issueSQL("DELETE FROM `" . OCC_TABLE_PAPERREVIEWER . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"); issueSQL("DELETE FROM `" . OCC_TABLE_PAPERSESSION . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"); issueSQL("DELETE FROM `" . OCC_TABLE_PAPERTOPIC . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"); issueSQL("DELETE FROM `" . OCC_TABLE_AUTHOR . "` WHERE `paperid`='" . safeSQLstr($paperid) . "'"); issueSQL("DELETE FROM `" . OCC_TABLE_PAPER . "` WHERE `paperid`='" .safeSQLstr($paperid) . "'"); if ($l['format'] && oc_isFile(($pfile = $GLOBALS['OC_configAR']['OC_paperDir'] . $paperid . '.' . $l['format']))) { if (!oc_deleteFile($pfile)) { print "       Unable to delete the file for submission " . safeHTMLstr($paperid) . "

\n"; } } if (oc_hookSet('delete_paper')) { foreach ($GLOBALS['OC_hooksAR']['delete_paper'] as $inc) { include $inc; } } // log if ($log) { oc_logit('submission', 'Submission ID ' . $paperid . ' deleted. Title: ' . $l['title']); } }