function link() { require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $url = get_post_meta($_POST['course_post'], "courseURL", true); $token = get_post_meta($_POST['course_post'], "courseToken", true); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => $url, "token" => $token, "webService" => "CURL")); $post = get_post($_POST['page_id']); $publish = "true"; if ($post->post_status != "publish") { $publish = "false"; } $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID($_POST['course']); $data = $pages->createPage($_POST['title'], array("wiki_page[body]" => stripslashes($_POST['content']), "wiki_page[title]" => $_POST['title'], "wiki_page[published]" => $publish, "wiki_page[editing_roles]" => "teachers")); update_post_meta($post->ID, "CanvasLinked", true); update_post_meta($post->ID, "CanvasCourse", $_POST['course']); update_post_meta($post->ID, "postCanvasID", $data->content->page_id); update_post_meta($post->ID, "postURL", $data->content->url); update_post_meta($post->ID, "postHTMLURL", $data->content->html_url); $modules = new InstructureCanvasAPI\Courses\Modules\Modules(); $modules->setAPI($API); $modules->setCourseID($_POST['course']); $data = $modules->addModuleItem($_POST['module'], array("module_item[title]" => $_POST['title'], "module_item[type]" => "Page", "module_item[page_url]" => $data->content->url, "module_item[position]" => $_POST['place'], "module_item[content_id]" => $data->content->page_id, "module_item[indent]" => $_POST['indent'])); $this->new_form($_POST['page_id'], $data->content->html_url); die; }
function check_pages() { if (wp_verify_nonce($_POST['nonce'], "molie_admin_check")) { require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($_POST['course'], "courseURL", true), "token" => get_post_meta($_POST['course'], "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID(get_post_meta($_POST['course'], "courseID", true)); $data = $pages->getPages(); $diff = false; $pages_diff = array(); foreach ($data->content as $item) { global $wpdb; $data = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key ='postHTMLURL' and meta_value = '" . $item->html_url . "'"); if (count($data) == 0) { $diff = true; array_push($pages_diff, $item); } } if ($diff) { echo json_encode(array($diff, $pages_diff)); } else { echo json_encode(array($diff, $pages_diff)); } } else { echo "Nonce failed"; } wp_die(); }
function download() { $course_id = get_post_meta($_POST['page_id'], "CanvasCourse", true); global $wpdb; $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'"); $course_post = get_post($course_post[0]->post_id); require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true)); $data = $pages->getPage(get_post_meta($_POST['page_id'], "postURL", true)); $new_content = $data->content->body; //print_r($new_content); //print_r($_POST); $update = $wpdb->update($wpdb->prefix . "posts", array("post_content" => $new_content), array("ID" => $_POST['page_id'])); if ($update === false) { print_r($wpdb); echo json_encode(array("error")); } else { echo json_encode(array($new_content)); } die; }
private function get_post_content($post, $pageURL) { require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($post->ID, "courseURL", true), "token" => get_post_meta($post->ID, "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID(get_post_meta($post->ID, "courseID", true)); $data = $pages->getPage($pageURL); return $data; }
function remove($post_id) { $post = get_post($post_id); $course_id = get_post_meta($post_id, "CanvasCourse", true); global $wpdb; $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'"); $course_post = get_post($course_post[0]->post_id); require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID($course_id); $data = $pages->deletePage(get_post_meta($post_id, "postURL", true)); delete_post_meta($post_id, "CanvasCourse"); delete_post_meta($post_id, "postCanvasID"); delete_post_meta($post_id, "postURL"); delete_post_meta($post_id, "postHTMLURL"); }
function link_post($post_id) { if (count($_POST) != 0 && isset($_POST['_wp_http_referer'])) { $linked = get_post_meta($post_id, "CanvasLinked", true); if ($linked == 1) { $this->post = $post_id; $post = get_post($this->post); $this->content = $post->post_content; $this->change_src(); $this->change_links(); $strip = explode("body>", $this->content); $this->content = substr($strip[1], 0, strlen($strip[1]) - 2); $styles = $this->stylesheets($post); require_once dirname(__FILE__) . "/../lib/emogrifier.php"; foreach ($styles as $style) { if (strpos($style, network_site_url()) !== FALSE) { $dir = wp_upload_dir(); $style = str_replace(network_site_url() . "/wp-content/", str_replace("uploads", "", $dir['basedir']), $style); $style = explode("?", $style); $style = $style[0]; } $css = preg_replace("/\\/[\\*]*[^\\*]*\\*\\//", "", file_get_contents($styles[1])); $emogrifier = new emogrifier($this->content, $css); $this->content = $emogrifier->emogrify(); } $canvas_id = get_post_meta($post_id, "postCanvasID", true); $course_id = get_post_meta($post_id, "CanvasCourse", true); global $wpdb; $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'"); $course_post = get_post($course_post[0]->post_id); require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true)); $post = get_post($post_id); $publish = 1; if ($post->post_status != "publish") { $publish = 0; } $data = $pages->updatePage($post->post_title, array("wiki_page[body]" => stripslashes(str_replace(" ", " ", $this->content)), "wiki_page[title]" => $post->post_title, "wiki_page[published]" => $publish)); } } }
function choose() { if (isset($_POST['molie-link-nonce'])) { if (wp_verify_nonce($_POST['molie-link-nonce'], "molie-link")) { $course_details = explode("|", $_POST['molie_course']); $posts = get_posts(array("post_type" => 'linkedcanvascourse')); $post_insert = true; foreach ($posts as $post) { if ($post->post_title == $course_details[1]) { $post_insert = false; $course = $post->ID; } } if ($post_insert) { $course = wp_insert_post(array("post_type" => 'linkedcanvascourse', "post_status" => 'publish', "post_title" => $course_details[1], "post_author" => get_current_user_id())); update_post_meta($course, "courseID", $course_details[0], true); update_post_meta($course, "courseToken", $_POST['token'], true); update_post_meta($course, "courseURL", $_POST['url'], true); } $urls = get_user_meta(get_current_user_id(), "courseLinkURLsTokens", true); if (!is_array($urls)) { $urls = array(); } if (!isset($urls[$_POST['url']])) { $urls[$_POST['url']] = array($_POST['token']); } else { $insert = true; foreach ($urls[$_POST['url']] as $token) { if ($token == $_POST['token']) { $insert = false; } } if ($insert) { $urls[$_POST['url']][] = $_POST['token']; } } update_user_meta(get_current_user_id(), "courseLinkURLsTokens", $urls); require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => $_POST['url'], "token" => $_POST['token'], "webService" => "CURL")); $modules = new InstructureCanvasAPI\Courses\Modules\Modules(); $modules->setAPI($API); $modules->setCourseID($course_details[0]); $data = $modules->getModules($course_details[0]); if ($data) { if (count($data->content) != 0) { $module_pages = array(); echo "<div id='molie_choose'>"; echo "<h2>" . __("Modules and Pages in this course") . "</h2>"; echo "<p>" . __("Select the pages you'd like to import") . "</p>"; echo "<div id='importProgress'><p><strong>" . __("Import Progress") . " <span id='importTotal'></span></strong></p><div id='importProgressBar'></div></div>"; echo '<form id="molie_choose_form" action="javascript:function connect(){return false;};">'; echo "<input type='submit' id='molie_choose_submit' value='" . __("Import pages") . "' />"; echo "<input type='submit' id='molie_choose_skip' value='" . __("Skip step") . "' />"; echo "<p><span><a href='javascript:molie_select_all()'>" . __("Select All") . "</a></span> <span><a href='javascript:molie_unselect_all()'>" . __("Unselect All") . "</a></span></p>"; echo "<p>" . __("Course syllabus") . "</p>"; echo "<ul>"; $link_info = ""; $link_checked = ""; if ($this->linked($course, "course_" . $course . "_course-syllabus")) { $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>"; $link_checked = " override='true' "; } else { $link_checked = "checked"; } echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='course-syllabus'/>" . __("Course Syllabus") . " " . $link_info . "</li>"; echo "</ul>"; echo "<p>" . __("Course home page") . "</p>"; echo "<ul>"; $link_info = ""; $link_checked = ""; if ($this->linked($course, "course_" . $course . "_course-home-page")) { $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>"; $link_checked = " override='true' "; } else { $link_checked = "checked"; } echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='course-home-page'/>" . __("Course Home Page") . " " . $link_info . "</li>"; echo "</ul>"; foreach ($data->content as $module) { echo "<p>" . __("Module") . " : " . $module->name . "</p>"; echo "<ul>"; $moduleItems = $modules->getModuleItems($module->id); foreach ($moduleItems->content as $item) { $link_info = ""; $link_checked = ""; if ($this->linked($course, "course_" . $course . "_" . $item->page_url)) { $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>"; $link_checked = " override='true' "; } else { $link_checked = "checked"; } array_push($module_pages, $item->page_url); echo "<li><input " . $link_checked . " course='" . $course . "' module_name='" . addslashes($module->name) . "' module='" . $module->id . "' type='checkbox' id='" . $item->id . "'/>" . $item->title . " " . $link_info . "</li>"; } echo "</ul>"; } $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID($course_details[0]); $data = $pages->getPages(); echo "<p>" . __("Pages outside modules") . "</p>"; echo "<ul>"; foreach ($data->content as $item) { if ($item->front_page != 1) { if (!in_array($item->url, $module_pages)) { $link_info = ""; $link_checked = ""; if ($this->linked($course, "course_" . $course . "_" . $item->url)) { $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>"; $link_checked = " override='true' "; } else { $link_checked = "checked"; } echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='" . $item->url . "'/>" . $item->title . " " . $link_info . "</li>"; } } } echo "</ul>"; echo "<input type='submit' id='molie_choose_submit' value='" . __("Import pages") . "' />"; echo "</form>"; echo "</div>"; echo "<div id='molie_files' style='display:none'>"; echo "<p>" . __("Page Linking complete") . "</p>"; ?> <form method="post" action='<?php echo admin_url("admin.php?page=molie_files"); ?> '><?php $nonce = wp_create_nonce("molie-files"); echo '<input type="hidden" name="molie-files-nonce" value="' . $nonce . '"/>'; echo "<input type='hidden' name='course_ID' value='" . $course . "' />"; echo "<p><input type='submit' value='" . __("Now, lets connect files") . "' /></p>"; echo "</div>"; } } $loader->unregister(); } else { print_r($_POST); echo "nonce failed"; } } else { $args = array("post_type" => "linkedcanvascourse", "post_status" => "publish"); $courses = get_posts($args); if (count($courses) != 0) { echo "<h2>" . __("Choose a course") . "</h2>"; $args = array("post_type" => "linkedcanvascourse", "post_status" => "publish"); $courses = get_posts($args); if (count($courses) != 0) { $nonce = wp_create_nonce("molie-link"); foreach ($courses as $course) { ?> <form method="post" action='<?php echo admin_url("admin.php?page=molie_choose"); ?> '> <p><?php echo $course->post_title; ?> </p> <input type="hidden" name="molie-link-nonce" value="<?php echo $nonce; ?> "/> <input type="hidden" name="molie_course" value="<?php echo get_post_meta($course->ID, "courseID", true) . "|" . $course->post_title; ?> " /> <input type="hidden" name="url" value="<?php echo get_post_meta($course->ID, "courseURL", true); ?> " /> <input type="hidden" name="token" value="<?php echo get_post_meta($course->ID, "courseToken", true); ?> " /> <input name="course" type="hidden" value="<?php echo get_post_meta($course->ID, "courseID", true); ?> " /> <input type="submit" value="<?php echo __("Choose course pages"); ?> " /> </form> <?php } } } } }
function pre() { global $post; if ($post->post_type == "post" && isset($_GET['action'])) { $linked = get_post_meta($post->ID, "CanvasLinked", true); if ($linked == 1) { $canvas_id = get_post_meta($post->ID, "postCanvasID", true); $course_id = get_post_meta($post->ID, "CanvasCourse", true); global $wpdb; $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'"); $course_post = get_post($course_post[0]->post_id); require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php"; $loader = new Psr4AutoloaderClass(); $loader->register(); $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src"); $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL")); $pages = new InstructureCanvasAPI\Courses\Pages\Pages(); $pages->setAPI($API); $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true)); $data = $pages->getPage(get_post_meta($post->ID, "postURL", true)); $this->canvas = $data->content->body; $this->wp = $post->post_content; $this->prepare(); $this->wp = explode("body>", $this->wp); $this->wp = substr($this->wp[1], 0, strlen($this->wp[1]) - 2); $this->canvas = explode("body>", $this->canvas); $this->canvas = substr($this->canvas[1], 0, strlen($this->canvas[1]) - 2); if ($this->compare()) { ?> <div id='canvassyncmessage' class="notice notice-success" style="border:1px solid #000"> <p><?php echo __("This post is up to date on Canvas and WP"); ?> : <span class="molieoptions">(<?php echo __("Click for Options"); ?> )</span></p> <div id="molielinkoptions"> <p><a href="<?php echo get_post_meta($post->ID, "postHTMLURL", true); ?> "><?php echo __("See this page on Canvas"); ?> </p> <p><a href="javascript:molie_update_post(<?php echo $post->ID; ?> ,'<?php echo get_post_meta($post->ID, "postURL", true); ?> ','upload');">Update Canvas with this page</a></p> <p><a href="javascript:molie_update_post(<?php echo $post->ID; ?> ,'<?php echo get_post_meta($post->ID, "postURL", true); ?> ','download');">Update this page with Canvas content</a></p> </div> </div> <?php } else { ?> <div id='canvassyncmessage' class="notice notice-info" style="border:1px solid #000"> <p><?php echo __("This post does not appear to be the same as the one it is linked to on Canvas"); ?> : <span class="molieoptions">(<?php echo __("Click for Options"); ?> )</span></p> <div id="molielinkoptions"> <p><a href="<?php echo get_post_meta($post->ID, "postHTMLURL", true); ?> "><?php echo __("See this page on Canvas"); ?> </p> <p><a href="javascript:molie_update_post(<?php echo $post->ID; ?> ,'<?php echo get_post_meta($post->ID, "postURL", true); ?> ','upload');">Update Canvas with this page</a></p> <p><a href="javascript:molie_update_post(<?php echo $post->ID; ?> ,'<?php echo get_post_meta($post->ID, "postURL", true); ?> ','download');">Update this page with Canvas content</a></p> </div> </div> </div> <?php } } } }