コード例 #1
0
ファイル: curriculum_test.php プロジェクト: jamesmcq/elis
 /**
  * Test that a user without program_view permissions does not get any data returned
  */
 public function test_nocurriculumpermission()
 {
     $this->load_csv_data();
     $this->setGuestUser();
     $curriculumfilter = array('contexts' => curriculumpage::get_contexts('local/elisprogram:program_view'));
     $curricula = clustercurriculum::get_curricula(1, 0, 5, 'cur.priority ASC, cur.name ASC', $curriculumfilter);
     $this->assertInternalType('array', $curricula);
     $this->assertEmpty($curricula);
 }
コード例 #2
0
ファイル: lib.php プロジェクト: jamesmcq/elis
/**
 * Dynamically loads child menu items for a cluster entity
 *
 * @param   int             $id                    The entity id
 * @param   int             $parent_cluster_id     The last cluster passed going down the elisadmin tree, or 0 if none
 * @param   int             $parent_curriculum_id  The last curriculum passed going down the elisadmin tree, or 0 if none
 * @param   int             $num_block_icons       Max number of entries to display
 * @param   string          $parent_path           Path of parent curriculum elements in the tree
 * @return  menuitem array                         The appropriate child items
 */
function block_elisadmin_load_menu_children_userset($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path = '')
{
    global $CFG;
    //page dependencies
    require_once elispm::file('coursepage.class.php');
    $result_items = array();
    /*****************************************
     * Cluster - Child Cluster Associations
     *****************************************/
    //note - no need to worry about permissions since there is no prevents/prohibits in ELIS
    $cluster_css_class = block_elisadmin_get_item_css_class('cluster_instance');
    $listing = cluster_get_listing('name', 'ASC', 0, $num_block_icons, '', '', array('parent' => $id));
    //$listing = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', array('parent' => $id));
    if (!empty($listing)) {
        foreach ($listing as $item) {
            $params = array('id' => $item->id, 'action' => 'view');
            $cluster_count = cluster_count_records('', '', array('parent' => $item->id));
            $curriculum_count = clustercurriculum::count_curricula($item->id);
            $isLeaf = empty($cluster_count) && empty($curriculum_count);
            $result_items[] = block_elisadmin_get_menu_item('userset', $item, 'root', $cluster_css_class, $item->id, $parent_curriculum_id, $params, $isLeaf, $parent_path);
        }
    }
    //summary item
    $num_records = cluster_count_records('', '', array('parent' => $id));
    if ($num_block_icons < $num_records) {
        $params = array('id' => $parent_cluster_id);
        $result_items[] = block_elisadmin_get_menu_summary_item('userset', $cluster_css_class, $num_records - $num_block_icons, $params, '', $parent_path);
    }
    /*****************************************
     * Cluster - Curriculum
     *****************************************/
    $curriculum_css_class = block_elisadmin_get_item_css_class('curriculum_instance');
    //permissions filter
    $curriculum_filter = array('contexts' => curriculumpage::get_contexts('local/elisprogram:program_view'));
    $curricula = clustercurriculum::get_curricula($id, 0, $num_block_icons, 'cur.priority ASC, cur.name ASC', $curriculum_filter);
    if (!empty($curricula)) {
        foreach ($curricula as $curriculum) {
            $curriculum->id = $curriculum->curriculumid;
            $params = array('id' => $curriculum->id, 'action' => 'view');
            //count associated courses
            $course_filter = array('contexts' => coursepage::get_contexts('local/elisprogram:course_view'));
            $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter);
            //count associated tracks
            $track_contexts = trackpage::get_contexts('local/elisprogram:track_view');
            $track_count = track_count_records('', '', $curriculum->id, $parent_cluster_id, $track_contexts);
            //count associated clusters
            $cluster_filter = array('contexts' => usersetpage::get_contexts('local/elisprogram:userset_view'));
            $cluster_count = clustercurriculum::count_clusters($curriculum->id, $parent_cluster_id, $cluster_filter);
            $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count);
            $result_items[] = block_elisadmin_get_menu_item('curriculum', $curriculum, 'root', $curriculum_css_class, $parent_cluster_id, $curriculum->id, $params, $isLeaf, $parent_path);
        }
    }
    //summary item
    $num_records = clustercurriculum::count_curricula($id, $curriculum_filter);
    if ($num_block_icons < $num_records) {
        $params = array('id' => $id);
        $result_items[] = block_elisadmin_get_menu_summary_item('clustercurriculum', $curriculum_css_class, $num_records - $num_block_icons, $params, '', $parent_path);
    }
    return $result_items;
}
コード例 #3
0
ファイル: lib.php プロジェクト: remotelearner/elis.cm
/**
 * Dynamically loads child menu items for a cluster entity
 *
 * @param   int             $id                    The entity id
 * @param   int             $parent_cluster_id     The last cluster passed going down the curr_admin tree, or 0 if none
 * @param   int             $parent_curriculum_id  The last curriculum passed going down the curr_admin tree, or 0 if none
 * @param   int             $num_block_icons       Max number of entries to display
 * @param   string          $parent_path           Path of parent curriculum elements in the tree
 * @return  menuitem array                         The appropriate child items
 */
function block_curr_admin_load_menu_children_cluster($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path = '')
{
    global $CFG, $USER;
    // page dependencies
    require_once $CFG->dirroot . '/curriculum/coursepage.class.php';
    //error_log("block_curr_admin_load_menu_children_cluster($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path)");
    $result_items = array();
    /*****************************************
     * Cluster - Child Cluster Associations
     *****************************************/
    // TBD: no permission check 'cause currently there is no prevents/prohibits in ELIS
    $cluster_css_class = block_curr_admin_get_item_css_class('cluster_instance');
    $parent_clst_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'), 'parent' => $id);
    $listing = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', $parent_clst_filter);
    $curriculum_filter = array('contexts' => curriculumpage::get_contexts('block/curr_admin:curriculum:view'));
    if (!empty($listing)) {
        foreach ($listing as $item) {
            $params = array('id' => $item->id, 'action' => 'view');
            $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'), 'parent' => $item->id);
            $cluster_count = cluster_count_records('', '', $cluster_filter);
            $curriculum_count = clustercurriculum::count_curricula($item->id, $curriculum_filter);
            $isLeaf = empty($cluster_count) && empty($curriculum_count);
            $result_items[] = block_curr_admin_get_menu_item('cluster', $item, 'root', $cluster_css_class, $item->id, $parent_curriculum_id, $params, $isLeaf, $parent_path);
            //error_log("block_curr_admin_load_menu_children_cluster(); parent of cluster child = {$result_items[count($result_items) - 1]->parent}");
        }
    }
    //summary item
    $num_records = cluster_count_records('', '', $parent_clst_filter);
    if ($num_block_icons < $num_records) {
        $params = array('id' => $parent_cluster_id);
        $result_items[] = block_curr_admin_get_menu_summary_item('cluster', $cluster_css_class, $num_records - $num_block_icons, $params, '', $parent_path);
    }
    /*****************************************
     * Cluster - Curriculum
     *****************************************/
    $curriculum_css_class = block_curr_admin_get_item_css_class('curriculum_instance');
    // permissions filter
    $curricula = clustercurriculum::get_curricula($id, 0, $num_block_icons, 'cur.priority ASC, cur.name ASC', $curriculum_filter);
    if (!empty($curricula)) {
        foreach ($curricula as $curriculum) {
            $curriculum->id = $curriculum->curriculumid;
            $params = array('id' => $curriculum->id, 'action' => 'view');
            // count associated courses
            $course_filter = array('contexts' => coursepage::get_contexts('block/curr_admin:course:view'));
            $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter);
            // count associated tracks
            $track_contexts = trackpage::get_contexts('block/curr_admin:track:view');
            $track_count = track_count_records('', '', $curriculum->id, $parent_cluster_id, $track_contexts);
            // count associated clusters
            $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'));
            $cluster_count = clustercurriculum::count_clusters($curriculum->id, $parent_cluster_id, $cluster_filter);
            $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count);
            $result_items[] = block_curr_admin_get_menu_item('curriculum', $curriculum, 'root', $curriculum_css_class, $parent_cluster_id, $curriculum->id, $params, $isLeaf, $parent_path);
        }
    }
    //summary item
    $num_records = clustercurriculum::count_curricula($id, $curriculum_filter);
    if ($num_block_icons < $num_records) {
        $params = array('id' => $id);
        $result_items[] = block_curr_admin_get_menu_summary_item('clustercurriculum', $curriculum_css_class, $num_records - $num_block_icons, $params, '', $parent_path);
    }
    //error_log("block_curr_admin_load_menu_children_cluster => " . count($result_items) . " child meuitems.");
    return $result_items;
}
コード例 #4
0
 function action_copycurredit()
 {
     global $CFG, $USER, $CURMAN;
     require_js($CFG->wwwroot . '/curriculum/js/clustercurriculumpage.js');
     $id = $this->required_param('id', PARAM_INT);
     // Create a list of curricula to be excluded
     $curriculumshown = array();
     $table = new stdClass();
     $table->head = array(get_string('clustcpyclustname', 'block_curr_admin'), get_string('clustcpycurname', 'block_curr_admin'), get_string('clustcpyadd', 'block_curr_admin'), get_string('clustcpytrkcpy', 'block_curr_admin'), get_string('clustcpycrscpy', 'block_curr_admin'), get_string('clustcpyclscpy', 'block_curr_admin'), get_string('clustcpymdlclscpy', 'block_curr_admin'));
     $table->class = 'cluster_copy_curriculum';
     // Get all clusters
     $sort = 'name';
     $dir = 'ASC';
     $clusters = cluster_get_listing($sort, $dir, 0);
     $clusterlist = array();
     $sql = 'SELECT * from ' . $CURMAN->db->prefix_table('crlm_cluster');
     // Exclude clusters the user does not have the capability to manage/see
     $context = get_contexts_by_capability_for_user('cluster', 'block/curr_admin:cluster:view', $USER->id);
     foreach ($clusters as $clusid => $clusdata) {
         $haspermission = $context->context_allowed($clusid, 'cluster');
         if (!$haspermission) {
             unset($clusters[$clusid]);
         }
     }
     echo '<form action="index.php" method="post">';
     $mdlcrsoptions = array('copyalways' => get_string('currcopy_mdlcrs_copyalways', 'block_curr_admin'), 'copyautocreated' => get_string('currcopy_mdlcrs_copyautocreated', 'block_curr_admin'), 'autocreatenew' => get_string('currcopy_mdlcrs_autocreatenew', 'block_curr_admin'), 'link' => get_string('currcopy_mdlcrs_link', 'block_curr_admin'));
     $contexts = curriculumpage::get_contexts('block/curr_admin:associate');
     foreach ($clusters as $clusid => $clusdata) {
         $assocurr = clustercurriculum::get_curricula($clusid);
         if (!empty($assocurr)) {
             $first = true;
             foreach ($assocurr as $assocurrrec) {
                 // Add to list of curricula to exclude
                 $curriculumshown[] = $assocurrrec->curriculumid;
                 // Skip over this clusters associated curricula
                 if ($clusid == $id) {
                     continue;
                 }
                 // Skip over curricula that user cannot associate
                 if (!$contexts->context_allowed($assocurrrec->curriculumid, 'curriculum')) {
                     continue;
                 }
                 if ($first) {
                     $curname = format_string($clusdata->name);
                     $first = false;
                 } else {
                     $curname = '';
                 }
                 $table->data[] = array($curname, format_string($assocurrrec->name), print_checkbox(self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), choose_from_menu($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $assocurrrec->curriculumid, '', '', '', 0, true));
                 $table->rowclass[] = 'clus_cpy_row';
             }
         }
     }
     // Add unassociated row to table
     $table->data[] = array(get_string('unassociated', 'block_curr_admin'), '', '', '', '', '', '');
     $table->rowclass[] = 'clus_cpy_row unassigned';
     // Get all curriculums, removing curricula that have already
     // been listed
     $curriculums = curriculum_get_listing($sort, $dir, 0, 0, '', '', $contexts);
     foreach ($curriculums as $curriculumid => $curriculumdata) {
         if (false === array_search($curriculumid, $curriculumshown)) {
             $table->data[] = array('', format_string($curriculumdata->name), print_checkbox(self::CPY_CURR_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_TRK_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CRS_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CLS_PREFIX . $curriculumid, 1, false, '', '', '', true), choose_from_menu($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $curriculumid, '', '', '', 0, true));
             $table->rowclass[] = 'clus_cpy_row';
         }
     }
     $currselectall = '<div class="currselectall">' . '<a id="clus_currcpy_select_all" onclick="cluster_copycurriculum_set_all_selected()">' . get_string('selectall') . '</a></div>';
     $trkselectall = '<div class="trkselectall">' . '<a id="clus_trkcpy_select_all" onclick="cluster_copytrack_set_all_selected()">' . get_string('selectall') . '</a></div>';
     $crsselectall = '<div class="crsselectall">' . '<a id="clus_crscpy_select_all" onclick="cluster_copycourse_set_all_selected()">' . get_string('selectall') . '</a></div>';
     $clsselectall = '<div class="clsselectall">' . '<a id="clus_crscpy_select_all" onclick="cluster_copyclass_set_all_selected()">' . get_string('selectall') . '</a></div>';
     $table->data[] = array('', '', $currselectall, $trkselectall, $crsselectall, $clsselectall);
     $table->rowclass[] = 'clus_cpy_row select_all_row';
     echo print_table($table, true);
     echo '<div class="clus_curr_cpy_save_exit">';
     echo '<input type="submit" name="save" value="' . get_string('saveexit', 'block_curr_admin') . '">';
     echo '<div class="hidden">';
     echo '<input type="hidden" name="id" value="' . $id . '">';
     echo '<input type="hidden" name="s" value="clstcur">';
     echo '<input type="hidden" name="action" value="copycurr">';
     echo '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '">';
     echo '</div>';
     echo '</div>';
     echo '</form>';
 }
コード例 #5
0
 /**
  * Display copy curriculum action.
  */
 public function display_copycurredit()
 {
     global $CFG, $USER, $PAGE, $DB, $OUTPUT;
     $PAGE->requires->js('/local/elisprogram/js/clustercurriculumpage.js');
     $id = $this->required_param('id', PARAM_INT);
     // Create a list of curricula to be excluded.
     $curriculumshown = array();
     $table = new html_table();
     $table->head = array(get_string('userset_cpyclustname', 'local_elisprogram'), get_string('userset_cpycurname', 'local_elisprogram'), get_string('userset_cpyadd', 'local_elisprogram'), get_string('userset_cpytrkcpy', 'local_elisprogram'), get_string('userset_cpycrscpy', 'local_elisprogram'), get_string('userset_cpyclscpy', 'local_elisprogram'), get_string('userset_cpymdlclscpy', 'local_elisprogram'));
     $table->class = 'cluster_copy_curriculum';
     // Get all clusters.
     $sort = 'name';
     $dir = 'ASC';
     $clusters = cluster_get_listing($sort, $dir, 0);
     $clusterlist = array();
     $sql = 'SELECT * from {' . userset::TABLE . '}';
     // Exclude clusters the user does not have the capability to manage/see.
     $context = get_contexts_by_capability_for_user('cluster', 'local/elisprogram:userset_view', $USER->id);
     echo '<form action="index.php" method="post">';
     $mdlcrsoptions = array('copyalways' => get_string('program_copy_mdlcrs_copyalways', 'local_elisprogram'), 'copyautocreated' => get_string('program_copy_mdlcrs_copyautocreated', 'local_elisprogram'), 'autocreatenew' => get_string('program_copy_mdlcrs_autocreatenew', 'local_elisprogram'), 'link' => get_string('program_copy_mdlcrs_link', 'local_elisprogram'));
     $contexts = curriculumpage::get_contexts('local/elisprogram:associate');
     foreach ($clusters as $clusid => $clusdata) {
         if (!$context->context_allowed($clusid, 'cluster')) {
             continue;
         }
         $assocurr = clustercurriculum::get_curricula($clusid);
         if (!empty($assocurr)) {
             $first = true;
             foreach ($assocurr as $assocurrrec) {
                 // Add to list of curricula to exclude.
                 $curriculumshown[] = $assocurrrec->curriculumid;
                 // Skip over this clusters associated curricula.
                 if ($clusid == $id) {
                     continue;
                 }
                 // Skip over curricula that user cannot associate.
                 if (!$contexts->context_allowed($assocurrrec->curriculumid, 'curriculum')) {
                     continue;
                 }
                 if ($first) {
                     $curname = format_string($clusdata->name);
                     $first = false;
                 } else {
                     $curname = '';
                 }
                 // Disable the last 3 options unless the first is checked.
                 $checkboxids = "'" . self::CPY_CURR_PREFIX . $assocurrrec->curriculumid . "',\n                                     '" . self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid . "',\n                                     '" . self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid . "',\n                                     '" . self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid . "'";
                 $togglecheckboxes = "cluster_copy_checkbox_changed(" . $checkboxids . ");";
                 $table->data[] = array($curname, format_string($assocurrrec->name), html_writer::checkbox(self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('id' => self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 'onclick' => $togglecheckboxes)), html_writer::checkbox(self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid)), html_writer::checkbox(self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid)), html_writer::checkbox(self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid)), html_writer::select($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $assocurrrec->curriculumid));
                 $table->rowclass[] = 'clus_cpy_row';
             }
         }
     }
     // Add unassociated row to table.
     $table->data[] = array(get_string('usersetprogram_unassociated', 'local_elisprogram'), '', '', '', '', '', '');
     $table->rowclass[] = 'clus_cpy_row unassigned';
     // Get all curriculums, removing curricula that have already been listed.
     $curriculums = curriculum_get_listing($sort, $dir, 0, 0, '', '', $contexts);
     foreach ($curriculums as $curriculumid => $curriculumdata) {
         if (false === array_search($curriculumid, $curriculumshown)) {
             $checkboxids = "'" . self::CPY_CURR_PREFIX . $curriculumid . "',\n                                 '" . self::CPY_CURR_TRK_PREFIX . $curriculumid . "',\n                                 '" . self::CPY_CURR_CRS_PREFIX . $curriculumid . "',\n                                 '" . self::CPY_CURR_CLS_PREFIX . $curriculumid . "'";
             $togglecheckboxes = "cluster_copy_checkbox_changed(" . $checkboxids . ");";
             $table->data[] = array('', format_string($curriculumdata->name), html_writer::checkbox(self::CPY_CURR_PREFIX . $curriculumid, 1, false, '', array('id' => self::CPY_CURR_PREFIX . $curriculumid, 'onclick' => $togglecheckboxes)), html_writer::checkbox(self::CPY_CURR_TRK_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_TRK_PREFIX . $curriculumid)), html_writer::checkbox(self::CPY_CURR_CRS_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CRS_PREFIX . $curriculumid)), html_writer::checkbox(self::CPY_CURR_CLS_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CLS_PREFIX . $curriculumid)), html_writer::select($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $curriculumid));
             $table->rowclass[] = 'clus_cpy_row';
         }
     }
     $currselectall = '<div class="currselectall">';
     $currselectall .= '<a id="clus_currcpy_select_all" onclick="cluster_copycurriculum_set_all_selected()">';
     $currselectall .= get_string('selectall') . '</a></div>';
     $trkselectall = '<div class="trkselectall"><a id="clus_trkcpy_select_all" onclick="cluster_copytrack_set_all_selected()">';
     $trkselectall .= get_string('selectall') . '</a></div>';
     $crsselectall = '<div class="crsselectall"><a id="clus_crscpy_select_all" onclick="cluster_copycourse_set_all_selected()">';
     $crsselectall .= get_string('selectall') . '</a></div>';
     $clsselectall = '<div class="clsselectall"><a id="clus_crscpy_select_all" onclick="cluster_copyclass_set_all_selected()">';
     $clsselectall .= get_string('selectall') . '</a></div>';
     $table->data[] = array('', '', $currselectall, $trkselectall, $crsselectall, $clsselectall);
     $table->rowclass[] = 'clus_cpy_row select_all_row';
     echo html_writer::table($table);
     echo '<div class="clus_curr_cpy_save_exit">';
     echo '<input type="submit" name="save" value="' . get_string('userset_saveexit', 'local_elisprogram') . '">';
     echo '<div class="hidden">';
     echo '<input type="hidden" name="id" value="' . $id . '">';
     echo '<input type="hidden" name="s" value="clstcur">';
     echo '<input type="hidden" name="action" value="copycurr">';
     echo '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '">';
     echo '</div>';
     echo '</div>';
     echo '</form>';
 }