Source for file createcourse.act.php

Documentation is available at createcourse.act.php

  1. <?php
  2.  
  3. /**
  4. * This action is the central page for viewing and modifying course section information.
  5. *
  6. * @package polyphony.coursemanagement
  7. *
  8. *
  9. * @since 7/28/06
  10. *
  11. * @copyright Copyright &copy; 2006, Middlebury College
  12. * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License (GPL)
  13. *
  14. * @version $Id: createcourse.act.php,v 1.16 2007/09/19 14:04:54 adamfranco Exp $
  15. */
  16.  
  17. require_once(POLYPHONY."/main/library/AbstractActions/MainWindowAction.class.php");
  18. require_once(HARMONI."GUIManager/Components/Blank.class.php");
  19.  
  20. class createcourseAction
  21. extends MainWindowAction
  22. {
  23. /**
  24. * Check Authorizations
  25. *
  26. * @return boolean
  27. * @access public
  28. * @since 4/26/05
  29. */
  30. function isAuthorizedToExecute () {
  31. // Check for authorization
  32. // Check that the user can create an asset here.
  33. $authZ = Services::getService("AuthZ");
  34. $idManager = Services::getService("Id");
  35. return $authZ->isUserAuthorized(
  36. $idManager->getId("edu.middlebury.authorization.add_children"),
  37. $idManager->getId("edu.middlebury.coursemanagement")
  38. );
  39. }
  40.  
  41. /**
  42. * Return the heading text for this action, or an empty string.
  43. *
  44. * @return string
  45. * @access public
  46. * @since 4/26/05
  47. */
  48. function getHeadingText () {
  49. return _("Add or remove a course offering.");
  50. }
  51.  
  52. /**
  53. * Build the content for this action
  54. *
  55. * @return void
  56. * @access public
  57. * @since 4/26/05
  58. */
  59. function buildContent () {
  60. $defaultTextDomain = textdomain("polyphony");
  61. $idManager = Services::getService("Id");
  62. $harmoni = Harmoni::instance();
  63.  
  64. $harmoni->request->startNamespace("polyphony-agents");
  65. $harmoni->request->passthrough("courseId");
  66. $cm = Services::getService("CourseManagement");
  67. // Process any changes and add or remove courses as necessary
  68. if (RequestContext::value("courseTitle") && RequestContext::value("courseNumber") &&
  69. RequestContext::value("courseDescription") && RequestContext::value("courseType") &&
  70. RequestContext::value("courseStatus") && RequestContext::value("courseTerm") &&
  71. RequestContext::value("courseCredits") && RequestContext::value("courseGradeType"))
  72. $this->addCourse(RequestContext::value("courseTitle"), RequestContext::value("courseNumber"),
  73. RequestContext::value("courseDescription"), RequestContext::value("courseType"),
  74. RequestContext::value("courseStatus"), RequestContext::value("courseTerm"),
  75. RequestContext::value("courseCredits"), RequestContext::value("courseGradeType"));
  76. if (RequestContext::value("courseIdToRemove"))
  77. $this->removeCourse(RequestContext::value("courseIdToRemove"));
  78. // Print out the add form and course list
  79. $actionRows =$this->getActionRows();
  80. $actionRows->add(new Heading(_("Add or remove courses."), 2), "100%", null, LEFT, CENTER);
  81. $actionRows->add($this->getAddForm(), "100%", null, LEFT, CENTER);
  82. $actionRows->add($this->getCourses(), "100%", null, LEFT, CENTER);
  83. $harmoni->request->endNamespace();
  84.  
  85. textdomain($defaultTextDomain);
  86. }
  87.  
  88. /***************************FUNCTIONS***************************************/
  89.  
  90.  
  91. /*******************************************************
  92. * The form to add information for adding courses
  93. *********************************************************/
  94.  
  95. /**
  96. * Creates the form to add information about the course offering.
  97. *
  98. * @return void
  99. * @access public
  100. * @since 8/29/05
  101. */
  102. function getAddForm() {
  103. $harmoni = Harmoni::instance();
  104. $cmm = Services::getService("CourseManagement");
  105. $idManager = Services::getService("Id");
  106. $am = Services::GetService("AgentManager");
  107. ob_start();
  108. print _("<h4>Please enter the following information to add a course.</h4>")."";
  109. // Search header
  110. $self = $harmoni->request->quickURL("coursemanagement", "createcourse",
  111. array("courseTitle", "courseNumber", "courseDescription", "courseType", "courseStatus", "courseTerm"));
  112. $last_title = $harmoni->request->get("courseTitle");
  113. $course_title = RequestContext::name("courseTitle");
  114. $last_number = $harmoni->request->get("courseNumber");
  115. $course_number = RequestContext::name("courseNumber");
  116. $last_description = $harmoni->request->get("courseDescription");
  117. $course_description = RequestContext::name("courseDescription");
  118. $last_term = $harmoni->request->get("courseTerm");
  119. $course_term = RequestContext::name("courseTerm");
  120. $last_type = $harmoni->request->get("courseType");
  121. $course_type = RequestContext::name("courseType");
  122. $last_status = $harmoni->request->get("courseStatus");
  123. $course_status = RequestContext::name("courseStatus");
  124. $last_term = $harmoni->request->get("courseTerm");
  125. $course_term = RequestContext::name("courseTerm");
  126. $last_credits = $harmoni->request->get("courseCredits");
  127. $course_credits = RequestContext::name("courseCredits");
  128. $last_grade_type = $harmoni->request->get("courseGradeType");
  129. $course_grade_type = RequestContext::name("courseGradeType");
  130. if (is_null($course_title))
  131. $course_title = "";
  132. print "<form action='$self' method='post'>
  133. <div>
  134. <p>Course Title: <br/><input type='text' name='$course_title' value='$last_title' /></p>
  135. <p>Course Number: <br/><input type='text' name='$course_number' value='$last_number' /></p>
  136. <p>Course Description: <br/><textarea name='$course_description' value='$last_description'></textarea></p>";
  137. // Print select function for terms
  138. print "<p>Course Term: <br/><select name='$course_term' value='$last_term'>";
  139. $terms =$cmm->getTerms();
  140. while ($terms->hasNextTerm()) {
  141. $term =$terms->nextTerm();
  142. $termId =$term->getId();
  143. $termIdString =$termId->getIdString();
  144. print "<option value='$termIdString'>".$term->getDisplayName()."</option>";
  145. }
  146. print "</select></p>";
  147. print "<p>Course Type: <br/><input type='text' name='$course_type' value='$last_type' /></p>
  148. <p>Course Status: <br/><input type='text' name='$course_status' value='$last_status' /></p>
  149. <p>Course Credits: <br/><input type='text' name='$course_credits' value='$last_credits' /></p>
  150. <p>Course Grade Type: <br/><input type='text' name='$course_grade_type' value='$last_grade_type' /></p>";
  151. print "\n\t<input type='submit' value='"._("Add")."' />";
  152. print "\n\t<a href='".$harmoni->request->quickURL()."'>";
  153. print "<input type='button' value='"._("Clear")."' /></a>";
  154. print "\n</div>\n</form>\n";
  155. $link = $harmoni->request->quickURL("coursemanagement", "course_search");
  156. print _("<h4><a href='$link'>Click here to search for courses.</a></h4>")."";
  157. $output = new Block(ob_get_clean(), STANDARD_BLOCK);
  158. return $output;
  159. }
  160. /**
  161. * Prints the list of existing course offerings with the functionality to remove.
  162. *
  163. * @return void
  164. * @access public
  165. * @since 8/29/05
  166. */
  167. function getCourses() {
  168. $harmoni = Harmoni::instance();
  169. $cmm = Services::getService("CourseManagement");
  170. $idManager = Services::getService("Id");
  171. $am = Services::GetService("AgentManager");
  172. ob_start();
  173. print "\n<h4>Existing course offerings. Please click on a course offering to edit its details (e.g. add a section).</h4>";
  174. $canonicalCourseIterator =$cmm->getCanonicalCourses();
  175. if (!$canonicalCourseIterator->hasNextCanonicalCourse()) {
  176. print "<p>No course offerings are present.</p>";
  177. } else {
  178. while ($canonicalCourseIterator->hasNextCanonicalCourse()) {
  179. $canonicalCourse =$canonicalCourseIterator->nextCanonicalCourse();
  180. $courseOfferingIterator =$canonicalCourse->getCourseOfferings();
  181. while ($courseOfferingIterator->hasNextCourseOffering()) {
  182. $courseOffering =$courseOfferingIterator->nextCourseOffering();
  183. $id =$courseOffering->getId();
  184. $idString = $id->getIdString();
  185. $canonicalCourseId = $canonicalCourse->getId();
  186. $canonicalCourseIdString = $canonicalCourseId->getIdString();
  187. $courseName = $courseOffering->getDisplayName();
  188. // Get term
  189. $courseTerm =$courseOffering->getTerm();
  190. $courseTermName = $courseTerm->getDisplayName();
  191. $self = $harmoni->request->quickURL("coursemanagement", "createcourse",
  192. array("courseIdToRemove"=>$idString));
  193. print "<form action='$self' method='post'>";
  194. print "\n<a href='".$harmoni->request->quickURL("coursemanagement", "edit_offering_details",
  195. array("courseId"=>$idString))."'>";
  196. print "\n".$courseName."</a>&nbsp;&nbsp;&nbsp;".$courseTermName."&nbsp;&nbsp;&nbsp;";
  197. print "\n\t<input type='submit' value='"._("Remove")."' />";
  198. print "\n</form>\n";
  199. }
  200. }
  201. }
  202. $output = new Block(ob_get_clean(), STANDARD_BLOCK);
  203. return $output;
  204. }
  205. /**
  206. * Process any changes in the form to add a course offering.
  207. *
  208. * @param string offering
  209. * @param string type
  210. * @param string status
  211. * &param string location
  212. * @return void
  213. * @access public
  214. * @since 8/29/05
  215. */
  216. function addCourse($courseTitle, $courseNumber, $courseDescription, $type, $status,
  217. $courseTerm, $credits, $courseGradeType) {
  218. $actionRows =$this->getActionRows();
  219. $pageRows = new Container(new YLayout(), OTHER, 1);
  220. $harmoni = Harmoni::instance();
  221. $cmm = Services::getService("CourseManagement");
  222. $idManager = Services::getService("Id");
  223. $everyoneId =$idManager->getId("edu.middlebury.agents.everyone");
  224. $usersId =$idManager->getId("edu.middlebury.agents.users");
  225. $canonicalCourseIterator =$cmm->getCanonicalCourses();
  226. $courseType = new Type("CourseManagement", "edu.middlebury", $type);
  227. $courseStatus = new Type("CourseManagement", "edu.middlebury", $status);
  228. /* Check for existing canonical course with the same title and number. */
  229. $coursePresent = 0;
  230. $canonicalCourseIterator =$cmm->getCanonicalCourses();
  231. while ($canonicalCourseIterator->hasNextCanonicalCourse()) {
  232. $canonicalCourse =$canonicalCourseIterator->nextCanonicalCourse();
  233. if ($canonicalCourse->getTitle() == $courseTitle && $canonicalCourse->getNumber() == $courseNumber) {
  234. $coursePresent = 1;
  235. break;
  236. }
  237. }
  238. /*If existing canonical course with the same title and number does not exist, create a new canonical course.*/
  239. if ($coursePresent == 0) {
  240. $canonicalCourse =$cmm->createCanonicalCourse($courseTitle, $courseNumber, $courseDescription,
  241. $courseType, $courseStatus, $credits);
  242. }
  243. $offeringType = new Type("CourseManagement", "edu.middlebury", $type);
  244. $offeringStatus = new Type("CourseManagement", "edu.middlebury", $status);
  245. $offeringGradeType = new Type("CourseManagement", "edu.middlebury", $courseGradeType);
  246. $termId =$idManager->getId($courseTerm);
  247. $courseOffering =$canonicalCourse->createCourseOffering($courseTitle, $courseNumber,
  248. $courseDescription, $termId, $offeringType,
  249. $offeringStatus, $offeringGradeType);
  250. }
  251. /**
  252. * Process any changes in the remove form to delete a course offering.
  253. *
  254. * @param string offering
  255. * @param string type
  256. * @param string status
  257. * &param string location
  258. * @return void
  259. * @access public
  260. * @since 8/29/05
  261. */
  262. function removeCourse($courseOfferingIdString) {
  263. $harmoni = Harmoni::instance();
  264. $harmoni->request->startNamespace("polyphony-agents");
  265. $harmoni->request->passthrough("agentId");
  266. $idManager = Services::getService("Id");
  267. $cmm = Services::getService("CourseManagement");
  268. $courseOfferingId =$idManager->getId($courseOfferingIdString);
  269. $courseOffering =$cmm->getCourseOffering($courseOfferingId);
  270. $canonicalCourse =$courseOffering->getCanonicalCourse();
  271. $canonicalCourseId =$canonicalCourse->getId();
  272. // Delete course offering
  273. $canonicalCourse->deleteCourseOffering($courseOfferingId);
  274. // If no course offerings left, remove the canonical course, too.
  275. $courseOfferingIterator =$canonicalCourse->getCourseOfferings();
  276. if (!$courseOfferingIterator->hasNextCourseOffering())
  277. $cmm->deleteCanonicalCourse($canonicalCourseId);
  278. }
  279. }

Documentation generated on Wed, 19 Sep 2007 10:22:24 -0400 by phpDocumentor 1.3.0RC3