Source for file suck_it_up.act.php

Documentation is available at suck_it_up.act.php

  1. <?php
  2.  
  3. /**
  4. * @package polyphony.coursemanagement
  5. *
  6. * @copyright Copyright &copy; 2006, Middlebury College
  7. * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License (GPL)
  8. *
  9. * @version $Id: suck_it_up.act.php,v 1.5 2007/09/19 14:04:54 adamfranco Exp $
  10. */
  11.  
  12. require_once(POLYPHONY."/main/library/AbstractActions/MainWindowAction.class.php");
  13. require_once(HARMONI."GUIManager/Components/Blank.class.php");
  14.  
  15.  
  16. class suck_it_upAction
  17. extends MainWindowAction
  18. {
  19. /**
  20. * Check Authorizations
  21. *
  22. * @return boolean
  23. * @access public
  24. * @since 4/26/05
  25. */
  26. function isAuthorizedToExecute () {
  27. // Check for authorization
  28. $authZManager = Services::getService("AuthZ");
  29. $idManager = Services::getService("IdManager");
  30. if ($authZManager->isUserAuthorized(
  31. $idManager->getId("edu.middlebury.authorization.view"),
  32. $idManager->getId("edu.middlebury.coursemanagement")))
  33. {
  34. return TRUE;
  35. } else {
  36. return FALSE;
  37. }
  38. }
  39. /**
  40. * Return the heading text for this action, or an empty string.
  41. *
  42. * @return string
  43. * @access public
  44. * @since 4/26/05
  45. */
  46. function getHeadingText () {
  47. return dgettext("polyphony", "Refresh Canonical Courses by Term");
  48. }
  49. /**
  50. * Build the content for this action
  51. *
  52. * @return void
  53. * @access public
  54. * @since 4/26/05
  55. */
  56. function buildContent () {
  57. $defaultTextDomain = textdomain("polyphony");
  58. $actionRows =$this->getActionRows();
  59. $pageRows = new Container(new YLayout(), OTHER, 1);
  60. $harmoni = Harmoni::instance();
  61. $harmoni->request->startNamespace("polyphony-agents");
  62.  
  63. $agentManager = Services::getService("Agent");
  64. $idManager = Services::getService("Id");
  65. $cm = Services::getService("CourseManagement");
  66. /*********************************************************
  67. * the select menu
  68. *********************************************************/
  69. // Users header
  70. //$actionRows->add(new Heading(_("Select Term"), 2), "100%", null, LEFT, CENTER);
  71. ob_start();
  72. $self = $harmoni->request->quickURL();
  73. $lastTerm = $harmoni->request->get("term_name");
  74. $term_name = RequestContext::name("term_name");
  75. //$search_type_name = RequestContext::name("search_type");
  76. print _("<p align='center'>Select a Term").": </p>";
  77. print <<<END
  78. <form action='$self' method='post'>
  79. <div>
  80. <p align='center'><select name='$term_name'>
  81. END;
  82. $searchTypes =$agentManager->getAgentSearchTypes();
  83. $classId =$idManager->getId("OU=Classes,OU=Groups,DC=middlebury,DC=edu ");
  84. $classes =$agentManager->getGroup($classId);
  85. $terms =$classes->getGroups(false);
  86. while($terms->hasNext()){
  87. $termGroup =$terms->next();
  88. $termName = $termGroup->getDisplayName();
  89. $term = $this->_getTerm($termName);
  90. $id =$term->getId();
  91. $idString = $id->getIdString();
  92. print "\n\t\t<option value='".$idString."'";
  93. if ($harmoni->request->get('term_name') == $idString){
  94. print " selected='selected'";
  95. }
  96. print ">".$term->getDisplayName()."</option>";
  97. }
  98. print "\n\t</select>";
  99. print "\n\t<input type='submit' value='"._("Suck!")."' />";
  100. //print "\n\t<a href='".$harmoni->request->quickURL()."'>";
  101. print "\n</p>\n</div></form>";
  102. print "\n <p align='center'>Sucking may take a few minutes</p>";
  103. $actionRows->add(new Block(ob_get_contents(), STANDARD_BLOCK), "100%", null, LEFT, CENTER);
  104. ob_end_clean();
  105. /*********************************************************
  106. * the agent search results
  107. *********************************************************/
  108. ob_start();
  109. if ($termIdString = $harmoni->request->get('term_name') ) {
  110.  
  111. $classId =$idManager->getId("OU=Classes,OU=Groups,DC=middlebury,DC=edu ");
  112. $classes =$agentManager->getGroup($classId);
  113. $terms =$classes->getGroups(false);
  114. while($terms->hasNext()){
  115. $termGroup =$terms->next();
  116. $termName = $termGroup->getDisplayName();
  117. $term = $this->_getTerm($termName);
  118. $id=$term->getId();
  119. if($termIdString==$id->getIdString()){
  120. break;
  121. }
  122. }
  123. $pageRows->add(new Heading(_("Courses Sucked from ".$term->getDisplayName().""), 2), "100%", null, LEFT, CENTER);
  124.  
  125. ob_start();
  126. $last = "";
  127. $sections =$termGroup->getGroups(false);
  128. while($sections->hasNext()){
  129. $section =$sections->next();
  130. $sectionName = $section->getDisplayName();
  131. if(substr($sectionName,0,4)=="phed"){
  132. continue;
  133. }
  134. if(substr($sectionName,0,strlen($sectionName)-5)!=$last){
  135. $last=substr($sectionName,0,strlen($sectionName)-5);
  136. $canonicalCourseId = $this->_getCanonicalCourse($sectionName);
  137. }
  138. }
  139. print "Success!";
  140. // Create a layout for this group using the GroupPrinter
  141. $groupLayout = new Block(ob_get_contents(), STANDARD_BLOCK);
  142. ob_end_clean();
  143. $pageRows->add($groupLayout, "100%", null, LEFT, CENTER);
  144. //}
  145. // In order to preserve proper nesting on the HTML output, the checkboxes
  146. // are all in the pagerows layout instead of actionrows.
  147. $actionRows->add($pageRows, null, null,CENTER, CENTER);
  148. }
  149. textdomain($defaultTextDomain);
  150. }
  151. /**
  152. *Gets a term from the LDAP name, creating it if necesary
  153. **/
  154.  
  155. function _getTerm($termName ){
  156. $cm = Services::getService("CourseManagement");
  157. $season = substr($termName,0,strlen($termName)-2);
  158. $year = '20'.substr($termName,strlen($termName)-2,2);
  159. $name = $season." ".$year;
  160. $termType = new Type("Coursemanagement","edu.middlebury",$season);
  161. $index = $cm->_typeToIndex('term',$termType);
  162. $dbHandler = Services::getService("DBHandler");
  163. $query= new SelectQuery;
  164. $query->addTable('cm_term');
  165. $query->addWhere("name='".addslashes($name)."'");
  166. $query->addWhere("fk_cm_term_type='".addslashes($index)."'");
  167. $query->addColumn('id');
  168. $res=$dbHandler->query($query);
  169.  
  170.  
  171.  
  172. if($res->getNumberOfRows()==0){
  173. $term =$cm->createTerm($termType,$arr=array());
  174. $term->updateDisplayName($name);
  175. return $term;
  176. //$termId =$term->getId();
  177.  
  178. //return $termId->getIdString();
  179. }else{
  180. $row = $res->getCurrentRow();
  181. $idManager = Services::getService("Id");
  182. $id =$idManager->getId($row['id']);
  183. $term =$cm->getTerm($id);
  184. return $term;
  185.  
  186. }
  187. }
  188. function _getCanonicalCourse($courseString ){
  189. $cm = Services::getService("CourseManagement");
  190. //$num = substr($courseString,4,4);
  191. $number = substr($courseString,0,strlen($courseString)-5);
  192. $dbHandler = Services::getService("DBHandler");
  193. $query= new SelectQuery;
  194. $query->addTable('cm_can');
  195. $query->addWhere("number='".addslashes($number)."'");
  196. $query->addColumn('id');
  197. $res=$dbHandler->query($query);
  198.  
  199.  
  200.  
  201. if($res->getNumberOfRows()==0){
  202. //$termType = new Type("Coursemanagement","edu.middlebury",$season);
  203. //$index = $cm->_typeToIndex('term',$termType);
  204. $dept = substr($courseString,0,strlen($courseString)-9);
  205. $type = new Type("Coursemanagement","edu.middlebury",$dept);
  206. $stattype = new Type("Coursemanagement","edu.middlebury","default");
  207. $can =$cm->createCanonicalCourse($number,$number,"",$type,$stattype,1);
  208. print "<font size=4><b>".$number."</b> </font>\n";
  209. return $can;
  210. //$canId =$can->getId();
  211.  
  212. //return $canId->getIdString();
  213. }else{
  214. $row = $res->getCurrentRow();
  215. //$the_index = $row['id'];
  216. $idManager = Services::getService("Id");
  217. $id =$idManager->getId($row['id']);
  218. $can =$cm->getCanonicalCourse($id);
  219. print "<font size=4>".$number." </font>\n";
  220. return $can;
  221. //return $the_index;
  222.  
  223. }
  224. }
  225. }

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