<?php StdLib::Functions(); Flashes::render(); $prefix = $_REQUEST["prefix"]; $num = $_REQUEST["num"]; $title = Yii::app()->db->createCommand()->select("title")->from("course_syllabi")->where("prefix = :prefix AND num = :num", array(":prefix" => $prefix, ":num" => $num))->queryScalar(); $department = Yii::app()->db->createCommand()->select("label")->from("departments")->where("id = :prefix", array(":prefix" => $prefix))->queryScalar(); $classes = Yii::app()->db->createCommand()->select("id")->from("course_syllabi")->where("prefix = :prefix AND num = :num", array(":prefix" => $prefix, ":num" => $num))->order("year DESC, (term = 'Fall') DESC, (term = 'Summer') DESC, (term = 'Spring') DESC")->queryAll(); $COREUSER = !Yii::app()->user->isGuest ? new UserObj(Yii::app()->user->name) : new UserObj(); ?> <ul class="breadcrumb"> <li><a href="<?php echo Yii::app()->homeUrl; ?> ">Home</a></li> <li><a href="<?php echo Yii::app()->homeUrl; ?> ?prefix=<?php echo $prefix; ?> "><?php echo $department; ?> </a></li> <li class="active"><?php echo $prefix . " " . $num . " - " . $title; ?> </li>
public function actionEdit() { $this->noGuest(); if (!isset($_REQUEST["id"])) { Yii::app()->user->setFlash('warning', 'Cannot edit: Invalid course syllabus ID.'); $this->redirect('index'); exit; } $CS = new CourseSyllabusObj($_REQUEST["id"]); if (!$CS->loaded) { Yii::app()->user->setFlash('warning', 'Could not load Course Syllabus. Something went really wrong.'); $this->redirect('index'); exit; } $syllabus = LOCAL_ARCHIVE . $CS->id; $CS->find_syllabus_links(); $syllabus_links = $CS->syllabus_links; # See if a topic/link was submitted if (isset($_POST["uniqueformid"], $_POST["datetime"])) { StdLib::Functions(); try { if (is_valid_form_id($_POST["uniqueformid"], $_POST["datetime"])) { unset($CS->id); # Grab the syllabus file and start up the File System $file = $_FILES["syllabus"]; # If the user added a file, let's continue with upload if ($file["size"] != 0) { $fileparts = pathinfo($file["name"]); $fs = new FileSystem(); if (!$fs->check_valid_extension($fileparts["extension"])) { throw new Exception("Extension was invalid: " . $fileparts["extension"]); } $fs->process_file_upload($file); $fs->upload_to(LOCAL_ARCHIVE . "temp/"); if (!$fs->is_uploaded()) { throw new Exception("Could not upload file. " . $fs->get_error()); } $file_locations = $fs->get_files_uploaded_location(); $file_location = @$file_locations[0]; } $sections = explode(",", $_POST["section"]); # Check the User permissions. # For now we are allowing any managers to have access to upload syllabi to the Archive $user = new UserObj(Yii::app()->user->name); if (!$user->atleast_permission("manager")) { throw new Exception("You cannot add syllabi at this time. Your permissions restrict your access."); } # See if we saved a syllabus (maybe multiple sections and one section already exists) $saved_at_least_one = FALSE; # Loop through each section and save each as a separate class foreach ($sections as $section) { $section = trim($section); if (!preg_match("/[0-9]{3}/", $section)) { continue; } $CS = new CourseSyllabusObj($_REQUEST["id"]); $CS->section = $section; $CS->id = $CS->generate_id(); $CS->load(); $CS->title = $_POST["title"]; $CS->special_topics_title = $_POST["special_topics_title"]; $CS->recitation = $_POST["recitation"]; $CS->restricted = $_POST["restricted"]; $CS->section = $section; # Add Instructors to Course Syllabus $instructors = explode("\n", $_POST["instructors"]); foreach ($instructors as $fullname) { $instructor = new InstructorObj(); $instructor->name = $fullname; $instructor->load(); if (!$instructor->loaded) { if (!$instructor->save()) { Yii::app()->user->setFlash("warning", "Could not save instructor <i>" . $instructor->name . "</i> for some reason. " . $instructor->get_error()); continue; } } $CS->instructors[] = $instructor->instrid; } $CS->id = $CS->generate_id(); $CS->find_syllabus_links(); if (!$CS->has_syllabus_file()) { foreach ($syllabus_links as $ext => $link) { if (!is_null($link)) { copy($syllabus . "." . $ext, LOCAL_ARCHIVE . $CS->id . "." . $ext); } } } # Save! if (!$CS->save()) { throw new Exception("Could not save Course Syllabus: " . $CS->get_error()); } # If the user added a file, let's continue with upload if ($file["size"] != 0) { # Move file to permanent home in the archive $fileName = $CS->id . "." . $fileparts["extension"]; copy($file_location, ROOT . "/archive/" . $fileName); # If the user selected OCR, then copy the file to the OCR directory if ($_POST["ocr"] == "yes" && $fileparts["extension"] == "pdf") { // Define OCR api location based on whether we're on the production or the development server $ocr_api = ($_SERVER["SERVER_NAME"] == "assettdev.colorado.edu" or $_SERVER["SERVER_NAME"] == "assetttest.colorado.edu") ? "http://assettdev.colorado.edu" : "http://compass.colorado.edu"; $url = $ocr_api . OCR_API . 'uploadfile'; $data = array('file_dir' => ROOT . "/archive/", 'file_name' => $fileName); $options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data))); $context = stream_context_create($options); $result = json_decode(file_get_contents($url, false, $context)); if (isset($result->id)) { pclose(popen("start php " . ROOT . "/protected/models/system/OCRCheck.php " . ROOT . "/archive/ " . $result->id . " " . $_SERVER["SERVER_NAME"], 'w')); } } else { if ($fileparts["extension"] == "docx") { $content = read_zipped_xml(ROOT . "/archive/" . $fileName, "word/document.xml"); Yii::app()->db->createCommand()->update("course_syllabi", array("content" => $content), "id=:id", array(":id" => $CS->id)); } } } # Made it to here? We must have saved at least one course syllabus! $saved_at_least_one = TRUE; } } else { throw new Exception("Malformed form ID."); } # Let's set a message that we saved at least one file if ($saved_at_least_one) { Yii::app()->user->setFlash("success", "Successfully saved course syllabus to the archive!"); if ($_POST["savetype"] == "exit") { $this->redirect("index"); exit; } else { $this->redirect(Yii::app()->createUrl('course') . "?prefix=" . $CS->prefix . "&num=" . $CS->num); exit; } } else { Yii::app()->user->setFlash("info", "Did not save any course syllabi."); } # Remove the temporary file if (isset($file_location) and is_file($file_location)) { unlink($file_location); } } catch (Exception $e) { Yii::app()->user->setFlash("warning", $e->getMessage()); } } $this->render('editsyllabus', array("CS" => $CS)); }