/** * Send the status to authors, with anonymous reviews */ function notifyAction() { $db = $this->zmax_context->db; $paperTbl = new Paper(); $paperStatusTbl = new PaperStatus(); // Load the reviews template $this->view->setFile("review", "review4author.xml"); $this->view->setBlock("review", "review_mark", "review_marks"); $this->view->setBlock("review", "review_answer", "review_answers"); // Set the subject $subject = $this->texts->mail->subj_notification; if (isset($_REQUEST['id_paper'])) { // Mail for one paper $idPaper = $_REQUEST['id_paper']; $this->view->setFile("content", "showmessage.xml"); $this->view->setBlock("content", "WARNING_TEMPLATE", " "); $paper = $paperTbl->find($idPaper)->current(); if (!empty($paper->status)) { $paper->putInView($this->view); $this->view->reviews = $paper->showReviews($this->view); $statusRow = $paperStatusTbl->find($paper->status)->current(); $mail = new Mail(Mail::SOME_USER, $subject, $this->view->getScriptPaths()); $mail->setTo($paper->emailContact); $mail->setFormat(Mail::FORMAT_HTML); $mail->loadTemplate($this->lang, $statusRow->mailTemplate); // We know the paper, so we can instantiate the mail entities $this->view->setVar("mailTemplate", $mail->getTemplate()); $this->view->assign("mailTemplate", "mailTemplate"); $mail->setTemplate($this->view->mailTemplate); // Put in the view $mail->putInView($this->view); } else { $this->content = "Cannot send notification without a status<br/>"; } echo $this->view->render("layout"); return; } else { // Batch mail. Check that all papers have a status, // and that there are no missing reviews $this->view->setFile("content", "notify.xml"); $this->view->setBlock("content", "TEMPLATE", "TEMPLATES"); $res = $db->query("SELECT count(*) AS count FROM Paper p, PaperStatus s " . " WHERE p.status = s.id AND final_status != 'Y'"); $p = $res->fetch(Zend_Db::FETCH_OBJ); if ($p->count > 0) { $this->view->content = "Cannot send notification mails: some papers do not have a status"; echo $this->view->render("layout"); exit; } $qReview = "SELECT count(*) AS count FROM Review WHERE overall IS NULL"; $res = $db->query($qReview); $p = $res->fetch(Zend_Db::FETCH_OBJ); if ($p->count > 0) { $this->view->content = "Cannot send notification mails: missing reviews"; echo $this->view->render("layout"); exit; } // OK. Now give the list of the templates that will be used $i = 0; $paperStatusList = $paperStatusTbl->fetchAll("final_status = 'Y'"); $mail = new Mail(Mail::SOME_USER, "", $this->view->getScriptPaths()); foreach ($paperStatusList as $paperStatus) { $this->view->css_class = Config::CssCLass($i++); $paperStatus->putInView($this->view); $mail->loadTemplate($this->lang, $paperStatus->mailTemplate); $this->view->setVar("template_content-{$paperStatus->id}", $mail->getTemplate()); $this->view->assign("template_content", "template_content-{$paperStatus->id}"); $this->view->append("TEMPLATES", "TEMPLATE"); } // Send the notification mails. $messages = ""; if (isset($_REQUEST['confirmed']) or isset($_REQUEST['export'])) { PaperRow::$loadAbstracts = false; $papers = $paperTbl->fetchAll(); $mail = new Mail(Mail::SOME_USER, $subject, $this->view->getScriptPaths()); $mail->setFormat(Mail::FORMAT_HTML); $mail->setCopyToChair(true); foreach ($papers as $paper) { $statusRow = $paperStatusTbl->find($paper->status)->current(); $mail->setTo($paper->emailContact); $mail->loadTemplate($this->lang, $statusRow->mailTemplate); $paper->putInView($mail->getEngine()); $mail->getEngine()->reviews = $paper->showReviews($this->view); if (isset($_REQUEST['confirmed'])) { $mail->send(); } else { $messages .= $mail->getMessage() . "\n\n"; } } } } if (isset($_REQUEST['export'])) { header("Content-disposition: attachment; filename=notificationMails.txt"); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: text\n"); header("Content-Length: " . strlen($messages)); header("Pragma: no-cache"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); header("Expires: 0"); echo $messages; } else { echo $this->view->render("layout"); } }
/** * The default action. It just displays the home page */ function indexAction() { if (!$this->config->isPhaseOpen(Config::REVIEWING_PHASE)) { $this->view->content = $this->texts->reviewer->review_phase_is_closed; echo $this->view->render("layout"); return; } $nbPapersInGroup = 15; // Get the current group $currentGroup = $this->getRequest()->getParam("group", "0"); if ($currentGroup == "0") { if (isset($_SESSION['myreview_current_group'])) { $currentGroup = $_SESSION['myreview_current_group']; } else { $currentGroup = 1; } } // Put in the session $_SESSION['myreview_current_group'] = $currentGroup; $minPaper = ($currentGroup - 1) * $nbPapersInGroup + 1; $maxPaper = $minPaper + $nbPapersInGroup; $loginSuccessful = $this->getRequest()->getParam("login_successful"); if (!empty($loginSuccessful)) { $this->view->initial_message = $this->zmax_context->texts->welcome_connected_reviewer; } else { $this->view->initial_message = ""; } $this->view->setFile("content", "index.xml"); $texts = $this->zmax_context->texts; $requiredFileTbl = new RequiredFile(); /* Select all the papers and list them. First extract the 'bloc' describing a line from the template */ $this->view->setBlock("content", "GROUP", "GROUPS"); $this->view->setBlock("content", "PAPER", "PAPERS"); $this->view->setBlock("content", "FORUM_LINK"); $this->view->setBlock("PAPER", "ALL_REVIEWS", "REVIEWS"); $this->view->setBlock("PAPER", "MY_REVIEW", "REVIEW"); $this->view->setBlock("PAPER", "DOWNLOAD", "DOWNLOADS"); $this->view->setBlock("DOWNLOAD", "DOWNLOAD_LINK", "THE_LINK"); $this->view->setBlock("PAPER", "review", "show_review"); $this->view->setBlock("review", "review_mark", "review_marks"); $this->view->setBlock("review", "review_answer", "review_answers"); $this->view->setBlock("PAPER", "SECTION", "SECTIONS"); $this->view->setBlock("PAPER", "ANSWER", "ANSWERS"); if ($this->config->discussion_mode != Config::GLOBAL_DISCUSSION) { $this->view->set_var("FORUM_LINK", ""); } // First, create the groups $iPaper = 0; $iGroup = 0; $begin = 1; $qPapers = "SELECT idPaper FROM Review WHERE id_user = '******'"; $rPapers = $this->zmax_context->db->fetchAll($qPapers); $nbPapers = count($rPapers); // echo "Nb = $nbPapers<br/>"; // while ($p = $rPapers->fetch (Zend_Db::FETCH_OBJ)) { foreach ($rPapers as $paper) { $iPaper++; if ($iPaper % $nbPapersInGroup == 0 or $iPaper == $nbPapers) { $iGroup++; $end = $iPaper; $this->view->group_desc = "({$begin}-{$end})"; $this->view->id_group = $iGroup; if ($iGroup == $currentGroup) { $this->view->current_group = " bgcolor='lightgrey' "; } else { $this->view->current_group = ""; } $this->view->append("GROUPS", "GROUP"); $begin = $end + 1; } } // Loop on the papers assigned to the reviewer $reviews = $this->user->findReview(); $nbPapers = $i = 0; foreach ($reviews as $review) { $nbPapers++; // Take account of groups if ($nbPapers < $minPaper or $nbPapers >= $maxPaper) { continue; } $this->view->set_var("css_class", Config::CssCLass($i)); $paper = $review->findParentPaper(); // Instantiate entities in the view $paper->putInView($this->view); // Loop on the files associated to the paper, and propose a download link $requiredFiles = $requiredFileTbl->fetchAll(); $countRequired = 0; $this->view->DOWNLOADS = ""; foreach ($requiredFiles as $requiredFile) { $requiredFile->putInView($this->view); $countRequired++; if (!$paper->fileExists($requiredFile)) { $this->view->THE_LINK = $texts->reviewer->not_yet_uploaded; } else { $this->view->assign("THE_LINK", "DOWNLOAD_LINK"); } $this->view->assign("DOWNLOAD_BIS", "DOWNLOAD"); $this->view->append("DOWNLOADS", "DOWNLOAD_BIS"); } if ($countRequired == 0) { $this->view->DOWNLOADS = $texts->reviewer->no_file_to_download; } if (!$review->overall) { $this->view->submit_review = "<font color='red'>" . $texts->reviewer->submit_review . "</font>"; } else { $this->view->submit_review = "<font color='green'>" . $texts->reviewer->update_review . "</font>"; } // If the local discussion mode is enabled AND the reviewer has posted her // review: give the ability to look at other reviews if ($this->config->discussion_mode != Config::NO_DISCUSSION and $review->overall) { $this->view->review_header = $texts->reviewer->all_reviews; $this->view->set_var("REVIEW", ""); $this->view->assign("REVIEWS", "ALL_REVIEWS"); } else { // Show only my review, no forum, no other reviews $this->view->show_review = $review->showReview($this->view); $this->view->assign("REVIEW", "MY_REVIEW"); $this->view->review_header = $texts->reviewer->your_review; $this->view->REVIEWS = ""; } $this->view->append("PAPERS", "PAPER"); } if ($nbPapers == 0) { $this->view->set_var("PAPERS", "No papers"); } echo $this->view->render("layout"); }
function attendeesAction() { $userTbl = new User(); // Put the session in the view $this->session->putInView($this->view); // Check whther an export is required if (isset($_REQUEST['export_action'])) { $exportRequired = true; $exportType = $_REQUEST['export_action']; } else { $exportRequired = false; } // load the template if (!$exportRequired) { $this->view->set_file("content", "attendees.xml"); } else { if ($exportType == Config::EXPORT_EXCEL) { $this->view->setFile("content", "attendees_xls.xml"); $mimeType = "text/xls"; $exportName = "attendees.xls"; } else { // Default: HTML $this->view->setFile("content", "attendees_html.xml"); $mimeType = "text/plain"; $exportName = "attendees.html"; } } /* Select all the users and list them. First extract the 'block' describing a line from the template */ $this->view->set_block("content", "ATTENDEE", "ATTENDEES"); $this->view->set_block("content", "GROUPS_LINKS", "LINKS"); if (isset($_REQUEST['remove'])) { $idUser = $this->getRequest()->getParam('id_user'); // instantiate a PaperRow object. Ok, not elegant, but easier $user = $userTbl->find($idUser)->current(); $user->delete(); } if (isset($_REQUEST['confirm_payment'])) { $idUser = $this->getRequest()->getParam('id_user'); // instantiate a PaperRow object. Ok, not elegant, but easier $user = $userTbl->find($idUser)->current(); $user->payment_received = 'Y'; $user->save(); } $nbAttendees = 0; // Initialize the current interval if (!isset($_REQUEST['iMin'])) { $iMinCur = 1; $iMaxCur = self::SIZE_ATTENDEES_GROUP; } else { $iMinCur = $_REQUEST['iMin']; $iMaxCur = $_REQUEST['iMax']; } // Export? No group. if ($exportRequired) { $iMinCur = 0; $iMaxCur = 999999999; } // Get all the attendees, ordered by last name $userTbl = new User(); $users = $userTbl->fetchAll(" roles LIKE '%P%'", "last_name"); $this->view->mailType = Mail::SOME_USER; $i = 0; foreach ($users as $user) { $i++; if ($i >= $iMinCur and $i <= $iMaxCur) { // Choose the CSS class $this->view->css_class = Config::CssCLass($i); $user->putInView($this->view); $this->view->choices = ""; // Get the answer to open questions $rAnswers = $this->zmax_context->db->query("SELECT * FROM RegAnswer a, RegQuestion q, " . " RegChoice c WHERE a.id_question = q.id and a.id_user='******' " . " AND a.id_answer=c.id_choice AND c.id_question=q.id"); while ($answer = $rAnswers->fetch(Zend_Db::FETCH_OBJ)) { $this->view->choices .= "{$answer->question_code}: {$answer->choice}; "; } $this->view->append("ATTENDEES", "ATTENDEE"); } } // Export if required if ($exportRequired) { $this->view->assign("export", "content"); $this->exportFile($exportName, $mimeType, $this->view->export); return; } // Create the groups $nbAttendees = $i; $nb_groups = $nbAttendees / self::SIZE_ATTENDEES_GROUP + 1; for ($i = 1; $i <= $nb_groups; $i++) { $iMin = ($i - 1) * self::SIZE_ATTENDEES_GROUP + 1; if ($iMin >= $iMinCur and $iMin <= $iMaxCur) { $link = "<font color=red>{$i}</font>"; } else { $link = $i; } $this->view->set_var("LINK", $link); $this->view->set_var("IMIN_VALUE", $iMin); $this->view->set_var("IMAX_VALUE", $iMin + self::SIZE_ATTENDEES_GROUP - 1); $this->view->append("LINKS", "GROUPS_LINKS"); } $this->view->nb_attendees = $nbAttendees; echo $this->view->render("layout"); }
/** * List of papers with their reviews */ private function papersReviews($view, $templateName, $html = true, $anonymized = false) { $db = Zend_Db_Table::getDefaultAdapter(); $paperTbl = new Paper(); $paperStatusTbl = new PaperStatus(); $criteriaTbl = new Criteria(); $reviewTbl = new Review(); $reviewMarkTbl = new ReviewMark(); $registry = Zend_registry::getInstance(); $config = $registry->get("Config"); $config->putInView($view); // Set the mail types $view->someUser = Mail::SOME_USER; // Extract the block for each paper $view->setBlock($templateName, "PAPER_DETAIL", "PAPERS"); $view->setBlock($templateName, "REVIEW_CRITERIA", "REVIEW_CRITERIAS"); $view->setBlock("PAPER_DETAIL", "PAPER_INFO", "PAPER_DATA"); $view->setBlock("PAPER_DETAIL", "REVIEW_MARK", "REVIEW_MARKS"); $view->setBlock("PAPER_DETAIL", "REVIEWER", "REVIEWER_INFO"); // Header of the table, taken from table Criteria $criterias = $criteriaTbl->fetchAll(); $listCriterias = array(); foreach ($criterias as $criteria) { $criteria->putInView($view); $listCriterias[] = $criteria; $view->append("REVIEW_CRITERIAS", "REVIEW_CRITERIA"); } // Sort the papers on the average 'overall' field $query = "SELECT p.*, round(AVG(overall),4) AS overall " . "FROM Paper p LEFT JOIN Review r ON p.id=r.idPaper " . " WHERE inCurrentSelection='Y' GROUP BY p.id"; $result = $db->query($query); $arrPaper = $rankPaper = array(); while ($paper = $result->fetch(Zend_Db::FETCH_OBJ)) { $arrPaper[$paper->id] = $paper; $rankPaper[$paper->id] = $paper->overall; } // Get the status list $statusList = $db->fetchPairs("SELECT * FROM PaperStatus WHERE final_status='Y'"); // Sort in descending order arsort($rankPaper); reset($rankPaper); // List the papers in order $iPaper = 0; foreach ($rankPaper as $idPaper => $overall) { $paper = $arrPaper[$idPaper]; // Choose the CSS class $view->css_class = Config::CssCLass($iPaper++); $view->paper_id = $paper->id; $view->paper_title = $paper->title; if (!$anonymized) { $view->paper_authors = PaperRow::getPaperAuthors($db, $paper); } else { $view->paper_authors = "[anonymized]"; } $view->paper_email_contact = $paper->emailContact; $view->paper_rank = $iPaper; $view->paper_overall = $overall; $view->form_status = Zmax_View_Phplib::checkboxField("radio", "status[{$paper->id}]", $statusList, $paper->status, array("length" => 2)); // Now, loop on reviews $qRev = "SELECT * FROM Review r, User u " . " WHERE idPaper='{$paper->id}' AND u.id=r.id_user"; $resRev = $db->query($qRev); $countReviews = 0; $mail_reviewers = $comma = ""; while ($review = $resRev->fetch(Zend_Db::FETCH_OBJ)) { $countReviews++; $mail_reviewers .= $comma . $review->email; $comma = ", "; } $view->paper_nb_reviewers = Max(1, $countReviews); //echo "Mail reviewers = $mail_reviewers<br/>"; $view->paper_email_reviewers = $mail_reviewers; $view->append("PAPER_DATA", "PAPER_INFO"); $resRev = $db->query($qRev); $iReview = 0; while ($review = $resRev->fetch(Zend_Db::FETCH_OBJ)) { $iReview++; $view->reviewer_id = $review->id; if ($anonymized == false) { $view->reviewer_fname = $review->first_name; $view->reviewer_lname = $review->last_name; $view->external_reviewer_fname = $review->fname_ext_reviewer; $view->external_reviewer_lname = $review->lname_ext_reviewer; $view->review_comments = $review->comments; } else { $view->reviewer_fname = $iReview; $view->reviewer_lname = ""; $view->external_reviewer_fname = ""; $view->external_reviewer_lname = ""; $view->review_comments = ""; } $view->reviewer_email = $review->email; $view->review_overall = $review->overall; $view->review_summary = $review->summary; $view->review_details = $review->details; if ($review->reviewerExpertise >= 1 and $review->reviewerExpertise <= 3) { $view->reviewer_expertise = Config::$Expertise[$review->reviewerExpertise]; } // Avoid to introduce Latex commands in Latex files .... if (!$html) { $view->review_summary = str_replace("\\", "", $view->review_summary); $view->review_details = str_replace("\\", "", $view->review_details); $view->review_comments = str_replace("\\", "", $view->review_comments); } $view->assign("REVIEWER_INFO", "REVIEWER"); reset($listCriterias); $view->set_var("REVIEW_MARKS", ""); foreach ($listCriterias as $criteria) { $reviewMark = $reviewMarkTbl->find($review->idPaper, $review->id_user, $criteria->id)->current(); if (!is_object($reviewMark)) { $reviewMark = $reviewMarkTbl->createRow(); // for default values } $reviewMark->putInView($view); $view->criteria_label = $criteria->label; $view->append("REVIEW_MARKS", "REVIEW_MARK"); } $view->append("PAPERS", "PAPER_DETAIL"); // The paper data is shown only once for all the reviews $view->set_var("PAPER_DATA", " "); } // Show the paper even without reviewer if ($countReviews == 0) { $review = $reviewTbl->createRow(); $review->putInView($view); $view->set_var("REVIEW_MARKS", ""); foreach ($listCriterias as $id => $label) { $reviewMark = $reviewMarkTbl->createRow(); $reviewMark->putInView($view); $view->append("REVIEW_MARKS", "REVIEW_MARK"); } $view->set_var("REVIEWER_INFO", ""); $view->append("PAPERS", "PAPER_DETAIL"); $view->set_var("PAPER_DATA", ""); } // Summary for the paper if ($html) { $statPaper = Paper::getStats($paper->id, $listCriterias); $markFieldName = "ReviewMark" . "->mark"; $overallFieldName = "review_overall"; $view->set_var("NB_REVIEWERS", 1); if ($html) { $view->set_var("PAPER_DATA", "<td> </td><th>Summary</th>"); } $view->set_var("REVIEWER_INFO", " "); $view->set_var($overallFieldName, $paper->overall); reset($listCriterias); $view->set_var("REVIEW_MARKS", ""); foreach ($listCriterias as $c) { $view->setVar($markFieldName, $statPaper[$c->id]); $view->append("REVIEW_MARKS", "REVIEW_MARK"); } $view->append("PAPERS", "PAPER_DETAIL"); $view->set_var("PAPER_DATA", ""); } } }
/** * Attendee console: shows tha account and the list of submitted papers */ function consoleAction() { $this->view->setFile("content", "index.xml"); $this->view->setBlock("content", "PAPER", "PAPERS"); $this->view->setBlock("PAPER", "UPLOAD", "UPLOADS"); $this->view->setBlock("PAPER", "UPLOAD_BUTTON"); $this->view->setBlock("UPLOAD", "DOWNLOAD", "DOWNLOAD_LINK"); $requiredFileTbl = new RequiredFile(); // Put user info in the view $this->user->putInView($this->view); // Loop on the papers of the current user $authors = $this->user->findAuthor(); $i = 0; foreach ($authors as $author) { $this->view->css_class = Config::CssCLass($i++); // Get the paper $paper = $author->findParentPaper(); $author->putInView($this->view); $paper->putInView($this->view); $this->view->UPLOADS = ""; // Loop on the required file, and propose an upload link if required $requiredFiles = $requiredFileTbl->fetchAll(); $countRequired = 0; $submissionComplete = true; $message = ""; foreach ($requiredFiles as $requiredFile) { // Check the file is required in the current phase if ($this->config->isPhaseOpen($requiredFile->id_phase)) { $requiredFile->putInView($this->view); $countRequired++; if ($requiredFile->mandatory == 'Y') { $this->view->file_mandatory = '*'; } else { $this->view->file_mandatory = ''; } if (!$paper->fileExists($requiredFile)) { $this->view->DOWNLOAD_LINK = " "; if ($requiredFile->mandatory == 'Y') { // The submission is not complete! $submissionComplete = false; $this->view->font_color = "red"; } else { $this->view->font_color = "green"; } } else { $this->view->assign("DOWNLOAD_LINK", "DOWNLOAD"); $this->view->font_color = "green"; } $this->view->append("UPLOADS", "UPLOAD"); } } // Submission no complete? Show it if ($submissionComplete) { $this->view->icon_name = "ok-icon.png"; } else { $this->view->icon_name = "warning-icon.png"; } $this->view->message = $message; // Allright. Nothing to upload? Tell it. if ($countRequired == 0) { $this->view->UPLOADS = "No file to upload at this moment<br/>"; $this->view->UPLOAD_BUTTON = " "; } // Two instantiations to resolve dynamic labels $this->view->assign("PAPER2", "PAPER"); $this->view->append("PAPERS", "PAPER2"); } if ($i == 0) { // Don't show the submision block; $this->view->PAPERS = $this->texts->author->no_submission_so_far; } echo $this->view->render("layout"); }
/** * * Manage the list of program committee members * */ function usersAction() { $texts =& $this->zmax_context->texts; // Create the infos for the filter list if (isset($_POST['filter_roles'])) { $filterRoles = array_flip($_POST['filter_roles']); } else { // Show only reviewers $filterRoles = array_flip(array("R")); } if (isset($_POST['mail_filter'])) { $this->view->mail_filter = $_POST['mail_filter']; $mailCriteria = " email LIKE '%{$this->view->mail_filter}%' "; } else { $this->view->mail_filter = ""; $mailCriteria = " 1 "; } if (isset($_POST['name_filter'])) { $this->view->name_filter = $_POST['name_filter']; $nameCriteria = " last_name LIKE '%{$this->view->name_filter}%' "; } else { $this->view->name_filter = ""; $nameCriteria = " 1 "; } $this->view->filter_roles_list = Zmax_View_Phplib::checkboxField("checkbox", "filter_roles[]", Config::$Roles, $filterRoles, array()); $filterRolesList = ""; $connector = ""; foreach (array_flip($filterRoles) as $role) { $filterRolesList .= " {$connector} roles LIKE '%{$role}%' "; $connector = " OR "; } $user = new User(); $request = $this->getRequest(); $email = $request->getParam('email'); // Check whether an export is required if (isset($_REQUEST['export_action'])) { $exportRequired = true; $exportType = $_REQUEST['export_action']; } else { $exportRequired = false; } // load the template if (!$exportRequired) { $this->view->setFile("content", "users.xml"); $this->view->setBlock("content", "post_message", " "); } else { if ($exportType == Config::EXPORT_EXCEL) { $this->view->setFile("content", "members_xls.xml"); $mimeType = "text/xls"; $exportName = "members.xls"; } else { // Default: HTML $this->view->setFile("content", "members_html.xml"); $mimeType = "text/plain"; $exportName = "members.html"; } } // After submission, insert if (isset($_REQUEST['id_user'])) { $idUser = $request->getParam("id_user"); if (!isset($_POST['form_mode'])) { // The user exists. It must be modified or removed $instr = $request->getParam("instr"); $userRow = $user->find($idUser)->current(); if ($instr == "modify") { // Just show the form with default values $this->view->pcmember_message = "Modify user infos"; $this->view->form_action = $texts->form->update; $this->view->form_mode = "update"; $userRow->putInView($this->view); } else { if ($instr == "remove") { $this->view->pcmember_message = "User {$email} has been removed"; $this->view->form_action = $texts->form->insert; $this->view->form_mode = "insert"; $userRow->delete(); // Create a new user for insertion $userRow = $user->createRow(); $userRow->roles = User::REVIEWER_ROLE; $userRow->putInView($this->view); } } } else { // Data comes from the form $form_mode = $request->getParam("form_mode"); if ($form_mode == "insert") { $userRow = $user->createRow(); } else { $userRow = $user->find($idUser)->current(); } $this->view->form_action = $texts->form->update; $userRow->email = $_POST['email']; $userRow->first_name = $_POST['first_name']; $userRow->last_name = $_POST['last_name']; if (isset($_POST['topics'])) { $userRow->setTopicsFromArray($_POST['topics']); } if (isset($_POST['roles'])) { $userRow->setRolesFromArray($_POST['roles']); } $messages = $userRow->checkValues($this->zmax_context->texts, array("affiliation", "address", "city", "zip_code")); // Any error ? if (count($messages) > 0) { $this->view->setFile("error", "error.xml"); $this->view->setBlock("error", "ERROR", "ERRORS"); foreach ($messages as $message) { $this->view->message = $message; $this->view->append("ERRORS", "ERROR"); } $this->view->assign("pcmember_message", "ERRORS"); $this->view->form_mode = $form_mode; } else { /* Everything is OK. Save and display the form with the user */ $userRow->save(); $this->view->assign("pcmember_message", "post_message"); } // Always put the current data in the view $userRow->putInView($this->view); } } else { /* Display the form with an empty user*/ $this->view->pcmember_message = ""; $this->view->form_action = $texts->form->insert; $this->view->form_mode = "insert"; $userRow = $user->createRow(); $userRow->roles = User::REVIEWER_ROLE; $userRow->putInView($this->view); } // We are ready to instantiate the form $this->view->form_reviewer = $userRow->form($this->view, "form_reviewer.xml"); $this->view->someUser = Mail::SOME_USER; /* Select all the members and list them. First extract the 'block' describing a line from the template */ $this->view->setBlock("content", "MEMBER", "MEMBERS"); $pcmembers = $user->fetchAll("{$mailCriteria} AND {$nameCriteria} AND ({$filterRolesList})", 'last_name'); $i = 0; foreach ($pcmembers as $member) { $member->putInView($this->view); // Choose the CSS class $this->view->css_class = Config::CssCLass($i++); $this->view->append("MEMBERS", "MEMBER"); } if ($exportRequired) { $this->view->assign("export", "content"); $this->exportFile($exportName, $mimeType, $this->view->export); return; } // Show the view echo $this->view->render("layout"); }
public function showReview($view, $html = false, $revName = "review") { $db = Zend_Db_Table::getDefaultAdapter(); // Initialize the review content $view->review_marks = ""; $view->review_answers = ""; // Put the data in the view $this->putInView($view, $html); // Default selection of the reviewer expertise $selectedName = "selected" . $this->reviewerExpertise; $view->setVar($selectedName, "selected"); // Get the reviewer $reviewer = $this->findParentUser(); $reviewer->putInView($view, $html); // Get the paper $paper = $this->findParentPaper(); $paper->putInView($view, $html); // Show the marks $j = 0; foreach ($this->_marks as $mark) { // Choose the CSS class $view->css_class = Config::CssCLass($j++); $mark->putInView($view); $criteria = $mark->findParentCriteria(); $criteria->putInView($view, $html); // Create the list of marks (for forms) $view->list_marks = Zmax_View_Phplib::selectField("marks[{$criteria->id}]", Config::$Scale, $mark->mark); $view->append($revName . "_marks", $revName . "_mark"); } // Put the answers to questions foreach ($this->_answers as $answer) { // Choose the CSS class $view->css_class = Config::CssCLass($j++); // Instantiate the answer $answer->putInView($view, $html); // Get and instantiate the question $question = $answer->findParentReviewQuestion(); $question->putInView($view); // get and instantiate the choice $choiceList = $db->fetchPairs("SELECT * FROM RQChoice WHERE id_question={$answer->id_question}"); $choice = $answer->findParentRQChoice(); if (is_object($choice)) { $choice->putInView($view); } $view->list_choices = Zmax_View_Phplib::checkboxField("radio", "answers[{$answer->id_question}]", $choiceList, $answer->id_answer, array()); $view->append($revName . "_answers", $revName . "_answer"); } // Instantiate twice to resolve translations $view->assign("result1", $revName); $view->assign("result2", "result1"); return $view->result2; }